Na dann, gute Ernte
Beiträge von ostfriese
-
-
Das lässt sich mit einem Skript lösen. Da ich aber keinen 0-10V Dimmer habe, kann ich nur indirekt weiter helfen.
Vlt. findet sich ja ein interessierter Skript Befähigter, der sich des Themas annimmt.
-
-
-
-
-
Hier das Grundgerüst:
Code
Alles anzeigenfunction log(to_log) { console.log(to_log); } function send_response(response, body) { response.code = 200; response.body = body; response.send(); log(body); } function watch(request,response) { what = request.query; print(what); if(what === 'alarm') { //do something; //Alles, was bei Alarm passieren soll what_done = 'Alarm start' } if(what === 'alarm_aus') { //do something else; //Alles, was bei Alarm_aus passieren soll what_done = 'Alarm stop' } body = what_done; send_response(response, body); } HTTPServer.registerEndpoint('http',watch); script_id = Shelly.getCurrentScriptId(); log('Your possible urls are:'); log('http://' + own_ip + '/script/' + script_id + '/my_endpoint?alarm'); log('http://' + own_ip + '/script/' + script_id + '/my_endpoint?alarm_aus');
Schalter auf detached und alles über http regeln.
-
-
-
Klar geht das. Mit Linux kannst du das direkt aus der Api übernehmen.
Bei WINDOOF must du dir was basteln. Meine zarten Hände fassen keine Windows Rechner an.
Außerdem lohnt es nicht, für einen Copy/Paste Vorgang, der 2 Minuten Zeit (inklusive Kaffee holen) in Anspruch nimmt und evtl. alle paar Jahre mal fällig ist,
eine Automatisierung zu erstellen.
Du hast von mir mit dem Skript 'ne maß gefertigte Shelly-Schrankwand bekommen, nu muss aber gut sein
Klappt es den mit der Steuerung.
-
Sollte dann ja passen. Ausprobieren!
-
zu 1):
Unter Scripts, neben dem Skriptnamen, den Schiebeschalter aktivieren:
Bildschirmfoto vom 2024-03-01 10-33-26.png
zu 2)
Was meinst du damit?
-
Mittelalter ist übertrieben. Oldscool mag ich. Bin ich ja auch!
Du hast doch bestimmt in deiner Ausbildung auch so schöne Schützsteuerungen gebaut
-
Ja, das war auch meine Überlegung. Sonst hatte ich mir die Mühe gar nicht gemacht.
Ich finde die Umsetzung mit 3 Eingängen nicht so dumm. Und mit den Sekunden dazu, selbst nur mit 1 bis 12, komme ich auf theoretisch
2³ * 12 = 96
Das ist doch nicht dumm gemacht
-
Wenn die Entwickler der Steuerung ein Kontaktprellen auf den Eingängen mit berücksichtigt haben, könnte das funktionieren.
-
Krauskopp Martin, ich kann auch nur sagen, dass das Skript funktioniert. Ob der Kamin das auch so verarbeitet, muss @Guenni00 ausprobieren.
Auf jeden Fall ist das die kürzeste Zeitverzögerung zwischen dem Schalten der einzelnen Relais, die man überhaupt erreichen kann.
Nichts ist schneller, als das Skript. Geht es damit nicht, geht es gar nicht.
-
Habe das Skript unter #26 angepasst und die variablen Sekunden eingebaut.
Bringe bitte den Pro3 auf den neuesten FW Stand. Aktiviere unter:
Settings, Debug Enable Websocket debug
Du musst an den Skript nichts machen. Einfach Copy/Paste, speichern, starten.
In der Console siehst du dann die URLs. Z.B.:
Code21:31:41 Your possible urls are: 21:31:41 http://172.16.0.106/script/5/kamin?zuend <-- for relays 1,0,1 21:31:41 http://172.16.0.106/script/5/kamin?aus <-- for relays 1,1,1 21:31:41 http://172.16.0.106/script/5/kamin?breit <-- for relays 1,1,0 21:31:41 http://172.16.0.106/script/5/kamin?schmal <-- for relays 0,1,1 21:31:41 http://172.16.0.106/script/5/kamin?flammeplus-7 <-- for relays 1,0,0 replace 7 with 1 to 12 21:31:41 http://172.16.0.106/script/5/kamin?flammeminus-7 <-- for relays 0,0,1 replace 7 with 1 to 12
(Die IP und die Zahl hinter script/ sind bei dir anders).
Mit diesen URLs kannst du dann den Kamin steuern (kannst du im Browser testen).
zuend, aus, breit, schmal sind selbsterklärend.
Bei flammeplus und flammeminus kannst du die Zahl durch Werte zwischen 1 und 12 ersetzen.
-
-
Ok, das mit den verschiedenen Zeiten baue ich morgen noch ein. Dann erkläre ich das auch.
-
Erklärung später. Bin zum Essen eingeladen.
Code
Alles anzeigenlet Config = { zuend : [1,0,1], aus : [1,1,1], breit : [1,1,0], schmal : [0,1,1], flammeplus : [1,0,0], flammeminus : [0,0,1], endpoint : 'kamin' }; function reset(data) { for(let i = 0; i < Config[data[0]].length; i++) { Shelly.call('Switch.Set', {'id':i, 'on':false}); } aw = (Config.endpoint + ' set to ' + data[0] + '. Relays state --> ' + String(Config[query])).toUpperCase(); print(aw); lock = false; } function watch (request, response) { try { if(lock) return; lock = true; duration = 1000; query = request.query; if(request.query.indexOf('-') > -1){ query = request.query.split('-')[0]; duration = request.query.split('-')[1] * 1000; } print('BEFEHL ' + query + ' DAUER ' + duration + ' SEKUNDEN'); for(let i = 0; i < Config[query].length; i++) { true_false = false; if(Config[query][i] === 1) true_false = true; Shelly.call('Switch.Set', {'id':i, 'on':true_false}); } aw = (Config.endpoint + ' set to ' + request.query + '. Relays state --> ' + String(Config[query])).toUpperCase(); aw += ' DAUER ' + duration/1000 + ' Sekunden'; send_response(response, aw); Timer.set(duration,false,reset,[query,response]); } catch(e) {lock = false; print(e.message)}; } function send_response(response, body) { response.code = 200; response.body = body; response.send(); } function main() { try { ip = Shelly.getComponentConfig('wifi').sta.ip; id = Shelly.getCurrentScriptId(); HTTPServer.registerEndpoint(Config.endpoint, watch); print('Your possible urls are:'); for (var key in Config) { if(key != 'endpoint') { if(key.indexOf('flamme') > -1) { print('http://' + ip + '/script/' + id + '/' + Config.endpoint + '?' + key + '-7' + ' <-- for relays ' + String(Config[key]) + ' replace 7 with 1 to 12'); } else { print('http://' + ip + '/script/' + id + '/' + Config.endpoint + '?' + key + ' <-- for relays ' + String(Config[key])); } } } }catch(e){lock = false; print(e.message)}; } let lock = false; Timer.set(2000,false,main);