NEWS
[gelöst] Schalter-Status setzen ohne Auslösen
-
Hallo,
ich habe einen CuXD-Schalter auf der CCU eingerichtet und lasse diesen bei kurzem Druck per WOL einen Rechner einschalten. Der Status des Schalters ist dann "true" und wird auch so angezeigt.
Fahre ich den Rechner herunter, ändert sich der Status nicht automatisch - das ist unschön.Ich habe also mit dem PING-Adapter eine Überwachung der IP eingerichtet - das funktioniert auch.
Nun habe ich mein zugegebenermaßen erstes JavaSkript mit Blocky angefangen zu bauen
Ich möchte auf eine Status-Änderung des PING-Adapters reagieren und habe hierzu das entsprechende Objekt gewählt. Wenn dies auf "true" steht, möchte ich den Schalter automatisch auf "true" stellen (der Rechner startet auch separat vom CCU-Start mal), wenn er Status des PING-Adapters auf "false" steht, soll der Schalter ebenfalls auf "false" gestellt werden.Das funktioniert soweit auch, nur wird bei jeder Status-Änderung am Schalter das WOL ausgelöst und der Rechner startet wieder - das ist jetzt nicht so der Plan Ich würde den STATE also gerne anpassen, ohne dass der Schalter jedes mal auslöst.
Hier mal das aus Blocky "übersetzte" Skript:
on({id: 'ping.0.ioBroker-RasPi.192_168_168_10', change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; on({id: "ping.0.ioBroker-RasPi.192_168_168_10"/*Video-Rechner*/, val: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setStateDelayed('hm-rpc.3.CUX2801002.1.STATE', true, false, parseInt(0, 10), false); }); on({id: 'ping.0.ioBroker-RasPi.192_168_168_10', val: false}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; setStateDelayed('hm-rpc.3.CUX2801002.1.STATE', false, false, parseInt(0, 10), false); }); });
Habt Ihr eine Idee hierzu und könnt es mir "auf Blocky-Basis" erklären, im Java skripten bin ich noch nicht soweit…
Danke!
Gruß, Jan
-
Das geht so nicht. Das cuxd device agiert als Taster. Der kann nur Tastendrücke machen und hat damit gar keinen Status ein/aus sondern wird pro tastendruck immer nur auf true gesetzt.
Bzw setzen auf false wird wohl auch als Tastendruck gewertet. Mit cuxd geht das damit nicht. Kannst ggf einen JavaScript Datenpunkt anlegen der das dann machen kann oder wenn du es in der ccu haben willst eine systemvariable.
-
Hmm, ich dachte genau da ist der Unterschied bei den CuXD-Tastern und CuXD-Schaltern - bei den Schaltern kann man den Status verändert und der wird in der CCU auch korrekt angezeigt, bei den Tastern geht das nicht. Bist Du Dir da sicher?
Wichtig ist mir letztendlich, dass ich das Ganze mit dem YAHKA-Adapter per Siri schalten kann. Dafür benötige ich zwangsläufig einen Schalter in der CCU.
-
Hallo jans_ios
Du verschachtelst mehrere Trigger ineinander. Das geht so nicht.
Ein Trigger "ummantelt" immer die auszuführenden Bausteine.
Zustände innerhalb eines Triggers kannst Du mit dem "Falls…" Baustein aus der Logik-Gruppe abfragen und endsprechend reagieren.
Falls wert von xyz .......
mache ......
Sonst
mache ......
usw.
Suche mal hier im Forum nach [Blockly] oder [Vorlage] Blocky
Grüße
-
Mal abgesehen von der CuxD-Taster-Geschichte wird es auch, meiner Meinung nach, nicht funktionieren einen trigger-block hinter einen trigger-block zu verschachteln.
So würde es gehen, wenn man "test" gegen "Video-Rechner" und "Licht_Kueche" gegen CuxD tauscht:
-
Hallo nochmal,
erstmal natürlich danke für die Hinweise. Ich habe das Skript jetzt mal so umgebaut:
Wenn das mit dem Setzen des STATE des Schalters so immer zum Auslösen des hinterlegten Befehls führt - wie könnte ich das z.B. über eine Systemvariable umgehen?Testen kann ich es jetzt gerade leider nicht mehr - es handelt sich um den Wohnzimmer-Video-Rechner, vor dem jetzt meine Frau sitzt Wenn der Rechner jetzt zum Test einfach bootet, …....... Bin zwar selbst 170km entfernt im Hotel, aber nach Hause brauche ich dann morgen nicht
Gruß, Jan
-
Cuxd: … aus der Doku: Schalter/Fensterkontakt: Beim Schaltzustand false (Aus) wird CMD_SHORT und beim Schaltzustand true (Ein) CMD_LONG gesendet.
Also wenn du die 16kanal universalfernbedienung als Schalter konfiguriert hast dürfte dein Screenshot Nichtstun weil das wohl bei cmd-Short war, oder?! Dann hast du es als Taster
-
Klasse, das könnte passen! Ich habe über das Webinterface Den Short-Button des Schalters gedrückt, daher lief es so. Ich probiere das morgen mal aus, danke!
-
Dank at es aber als Taster eingerichtet weilend beim Schalter nur an/aus gibt. Nur ein Taster hat Short/Long …
-
Schau mal ganz oben im ersten Post den ersten Screenshot, ich habe es echt als Schalter eingerichtet.
Oder wie muss das aussehen? Ich habe es eingestellt beim Erstellen des CuXD-Geräts, dort sieht es im Status auch so aus, als wäre es ein Switch und passt auch zu Deinem Hinweis, dass ich es "drehen" muss:
-
Super, das funktioniert, danke Euch allen!
-
Danke für die Rückmeldung. Machen leider nicht viele.
Setzt Du bitte noch ein [gelöst] in den Betreff Deines ersten posts.
Grüße
-
Erledigt