Hallo zusammen,
kann ich unter Verwendung des "addEventHandler" erkennen,
wenn ein anderer Shelly (in diesem Fall der i3) eine URLaction "http://192.168.178.111/relay/0?turn=on" an meinen Shelly Plus 1 sendet ?
Danke.
Patrick
Hallo zusammen,
kann ich unter Verwendung des "addEventHandler" erkennen,
wenn ein anderer Shelly (in diesem Fall der i3) eine URLaction "http://192.168.178.111/relay/0?turn=on" an meinen Shelly Plus 1 sendet ?
Danke.
Patrick
Ist das korrekt ?
Shelly.addStatusHandler(
function (status) {
//check if the event source is a switch
//and if the id of the input is 0
if (status.name === "switch" && status.id === 0) {
if (status.delta.source === "http") {
print("Switch Http", status.component);
}
print("Switch ", status.id);
}
}
);
Alles anzeigen
Problem ist nun.
Wenn Switch:0 ist ON und ich sende per URL action ein ON,
dann gibt es kein delta bzw. kein event.
Somit kann ich nicht erkennen, wenn der URL action ON gesendet wird.
Hinweis: Der Switch über Taster auf ON gesetzt startet einen Timer für's Ausschalten, und der URL action soll diesen Timer u.a. löschen
Hinweis: Der Switch über Taster auf ON gesetzt startet einen Timer für's Ausschalten, und der URL action soll diesen Timer u.a. löschen
Ich bin nicht ganz sicher, ob ich das richtig verstehe..
- der lokal am Shelly angeschlossene Taster startet einen Timer und schaltet das Relais für Zeit X an, dann wieder aus?
- der Aufruf von extern (I3 über HTTP) soll diesen Timer löschen? also relais soll dauerhaft anbleiben?
Was soll passieren, wenn der Shelly über die App / Sprache etc geschalten wird?
mit einem HTTP-Server Handler kannst du auf jeden Fall unterscheiden, woher der Aufruf kommt aber ich würde gern die genaue Problemstellung kennen
Hallo Seven of Nine
ich dachte mal wieder ich halt meine Frage einfach und allgemein, weitgefehlt
Ich verwende ein Shelly P1PM,
einen Bewegungsmelder der am Input des P1PM angeschlossen ist und
einen Shelly i3 für eine Schaltererkennung und Steuerung des Outputs des P1PM über URL action.
Wenn nun der Output durch den Input für die Zeit X aktiviert wird,
ich per URL action des i3 den Output dauerhaft aktivieren möchte, wird diese Statusänderung mittels http-Erkennung nicht erkannt und der Timer nicht gelöscht,
da keine Änderung vorliegt, somit deaktiviert der Timer nach der Zeit X den Output wieder.
Was mir fehlt, ist die Erkennung der URL action damit ich den Timer löschen kann.
Unten mein Teststand mit Testausgaben.
Ich kann erkennen, wenn sich etwas per http ändert z.B. Switch ON/OFF
Debug-Ausgabe:
status
fkt_stopOffTimer
addStatusHandler_http Output: true
addStatusHandler:source http
Wen aber der Output bereits ON ist passiert hier nichts, was klar ist.
Was ich mir als Workaround nun überlegt habe, zusätzlich dem URL action einen hohen Timer-Wert mitzusenden,
das löst den StatusHandler auch aus, zwar nicht wie zuvor
Debug-Ausgabe:
status
addStatusHandler:source undefined
Grundsätzlich finde ich Undefined keine gute Programmierung.
Kann ich den Timer-Wert als Änderung erkennen und diesen Löschen ?
Oder den URL action im Script über ??? erkennen, anstatt über statusHandler.
Vermutlich über den von Dir angegebenen HTTP Server,
aber dazu muss ich erst mal nach Beispielen suchen um zu erkennen was ggf. möglich sein könnte.
Allgemein fehlen mir mögliche Werte in der shelly-api-docs, was ich schade finde.
Ich lerne an den Beispielen und weniger an den abstrakten Erklärungen der shelly-api-docs
Patrick
Shelly.addStatusHandler(
function (status) {
//check if the event source is a switch
//and if the id of the input is 0
print("status");
if (status.name === "switch" && status.id === 0) {
if (status.delta.source === "http") {
fkt_stopOffTimer();
print("addStatusHandler_http Output: ", status.delta.output);
}
print("addStatusHandler:source ", status.delta.source);
}
}
);
Alles anzeigen