NEWS
[gelöst]Wechselschaltung
-
@dominik-f sagte in Wechselschaltung:
Ich verstehe nicht genau was du meinst.
Wenn du ganz einfach "Falls objektID xyz wurde geändert" als Trigger nimmst und dann "umschalten OG_Diele_Deckenlampe" sagst, dann wird die Lampe bei jedem Betätigen des Schalters xyz umgeschaltet, also an wenn sie aus war und umgekehrt.
und jetzt machst du noch ein blockly mit derselben Anweisung für den 2. Schalter. Dann hast du logisch eine "Wechselschaltung" abgebildet. -
Das funktioniert soweit, nur kann ich nicht erkennen, in welcher Stellung sich der jeweilige Taster befindet und dadurch muss ich dann oft 2 mal die Taster betätigen, dass ich den Taster mit der richtigen Stellung treffe
-
Ich konnte die Schalter jetzt auf Toggle umstellen, so das die bei jedem Tastendruck den Status ändern. Somit funktioniert es, aber noch nicht perfekt. Aus irgendeinem Grund nimmt er manchmal die änderungen nicht an.
-
@dominik-f sagte in Wechselschaltung:
Aus irgendeinem Grund
Dann wäre es psannend rauszufinden was der Grund ist.
Löst das Skript denn immer richtig aus?
Ich würd da mal ein paar "debug output" Zeilen reinpacken und dann im log nachschauen ob die immer kommen, wenn du einen Schalter drückst. -
@dominik-f @amg_666 meinte, dass du den Blockly Baustein "umschalten" benutzen sollst bei beiden Schaltern/Tastern. Dann ist es wurscht, welchen Schalter bzw. Taster du drückst.
-
@dominik-f
fertig ist Deine Wechselschaltung. Für jeden weiteren Schalter ein Block mehr und nein, es kommt sonst nix dazu.
-
Ich danke dir, leider funktioniert das nicht
Wenn ich den einen Schalter auf True schalte, dann geht die Lampe an, der andere Schalter bleibt jedoch auf false. Ich muss den zweiten schalter also erst auf True stellen, um danach die Lampe wieder ausschalten zu können.
-
@dominik-f sagte: Ich habe 2 Schalter (hmip-bsm)
Sind das zwei normale Schalter, d.h. der Datenpunkt-Wert (false/true) hängt von der Stellung der Schaltwippe ab?
Dann sollte es so funktionieren:Erklärung: Wenn bei einem Schalter die Wippenstellung geändert wird, wird getriggert und das Licht umgeschaltet (toggle).
-
Da ich immer verwirrter werde und das Gefühl habe weniger zu verstehen, beschreibe ich nochmal genauer die Taster.
So sieht der Schalter aus:
Die Taster sind von Weksteinstellung so eingestellt, dass der obere Taster immer auf true schaltet, der untere immer auf false.
Sie können jedoch auch so eingestellt werden, dass jeder Tastendruck den State ändert. -
@dominik-f sagte: Sie können jedoch auch so eingestellt werden, dass jeder Tastendruck den State ändert.
Das muss dann eingestellt werden.
Alternativ wertet man alle 4 Tasten aus:
-
Das mit dem Auswerten der Tasten funktioniert nicht, wenn ich die Tasten betätige, dann ändert sich der Wert der Tasten nicht.
Das erste Bild von dir hat teilweise funktioniert. Es klappt irgendwie, aber manchmal geht die Lampe erst nach mehreren Sekunden an, mal geht es gar nicht, mal funktioniert es
-
@dominik-f sagte: wenn ich die Tasten betätige, dann ändert sich der Wert der Tasten nicht.
Deshalb muss auf "ist wahr" (s. Bild) oder "wurde aktualisiert" getriggert werden , da "PRESS_SHORT" immer true ist und nur den Zeitstempel aktualisiert.
-
Eventuell liegt dort das Problem:
Edit:
Der Zeitstempel aktualisiert sich auch nicht. Laut Stempel wurde gestern irgendwann das letzte mal aktualisiert
-
@dominik-f sagte: Eventuell liegt dort das Problem:
Die CCU sendet die Tasten nicht an ioBroker. Gibt es ein Dummy-Programm auf der CCU?
Sonst versuche mal das Aktivieren der Tasten für jeden der 4 Kanäle mit folgendem Skript:// Dieses Skript einmal für jeden Taster-Kanal ausführen const inst = 'hm-rpc.0'; // Instanz anpassen const channel = '001A5D899A7DDA:1'; // Kanal-Adresse anpassen sendTo(inst, 'reportValueUsage', {ID: channel, paramType: 'PRESS_SHORT', params: 1}, res => { log(JSON.stringify(res)); });
-
Ich weiß gar nicht was ein Dummy-Programm ist, daher schätze ich nein.
Ich melde mich wenn ich das Skript ausgeführt habe
-
einfach den "umschalten" block nehmen und den trigger auf "wurde aktualisiert"
dann ist es wurscht, welche Stellung oder welchen State irgendein Schalter hat
-
Ich bekomme folgende Fehlermeldung bei dem Skript:
hm-rpc.2 2022-02-21 14:25:05.889 error Cannot call reportValueUsage: XML-RPC fault: Invalid device
So hab ich die Daten eingetragen:
// Dieses Skript einmal für jeden Taster-Kanal ausführen const inst = 'hm-rpc.2'; // Instanz anpassen const channel = '001A5D899A7DDA.1'; // Kanal-Adresse anpassen sendTo(inst, 'reportValueUsage', {ID: channel, paramType: 'PRESS_SHORT', params: 1}, res => { log(JSON.stringify(res)); });
-
Ich habe schon so viel getestet, dass ich leider den Wald vor lauter Bäumen nicht mehr sehe
Wenn ich deinen Post richtig verstehe, habe ich das weiter oben schon getestet?
-
@dominik-f sagte: Fehlermeldung bei dem Skript:
Die Instanz "hm-rpc.2" stimmt?
Vielleicht funktioniert das Skript nur mit HM classic und nicht mit HmIP?
Dann wird eine Dummy-Programm in der CCU benötigt: Auf alle 4 Tasten-Kanäle reagieren, aber nichts ausführen. -
Ja, die HMIP Instanz ist die 2.
Eventuell wäre es dann einfacher, dass ich die Taster auf Toggel stelle und das was du als erstes geschrieben hast ausprobiere