NEWS
CCU Variable beschreiben
-
Hallo an alle,
ich habe ein einfaches Problem denke ich.
Ich möchte Werte aus dem Yamahaadapter in eine CCU Variable schreiben, zB die Lautstärke, Sendername ect.
Ich kriege es nicht hin, mache ich das mit Blocky?
Wie muss ich es machen, sehe den Wald vor lauter Bäume nicht denke ich.
Gruß Thorsten
-
Hallo,
das geht mit dem Javascript Adapter. Hier die Lösung für Javascript, nicht Blockly:
var idYamaha1 = "yamaha.0.Wert1"; // ggf. Instanz yamaha und Datenpunkt anpassen var idCCUWert1 = "hm-rega.0.98765"; // Datenpunkt anpassen (98765) on(idYamaha1, idCCUWert1); // Synchronisierung
Damit wird ein Wert1 aus dem Yamaha-Adapter bei Änderung immer in den Rega-Adapter synchronisiert (nur in diese eine Richtung). Der Rega-Adapter ist u.a. für die Systemvariablen der CCU zuständig.
Du musst natürlich die Datenpunkte und ggf. Instanzen anpasssen.
Gruß
Pix
-
Echt? wirklich so ganz ohne getState und setState?
Dann hab ich es ja immer viel zu kompliziert gemacht.
Wieder was gelernt…
var idCCUWert1 = getState("hm-rega.0.98765").val;
so hol ich mir die immer
-
Super, vielen dank.
Noch eine Frage, wie oft kann ich synchronisieren ohne das die CCU schlapp macht oder ist es egal?
Habe mal auf alle 10 Sekunden eingestellt, auf jede Sekunde wäre natürlich besser :roll:
-
Echt? wirklich so ganz ohne getState und setState?
Dann hab ich es ja immer viel zu kompliziert gemacht.
Wieder was gelernt…
var idCCUWert1 = getState("hm-rega.0.98765").val;
so hol ich mir die immer `
Da bringst du was durcheinander:var idCCUWert1 = "hm-rega.0.98765"; ````beschreibt nur die Variable idCCUWert1 mit dem String "hm-rega.0.98765". Das ist eigentlich nicht nötig und nur zur leichteren Lesbarkeit der folgenden Subscription / Überwachung mit on(). Deshalb steht auch das "id" mit im Variablennamen, damit man (als Mensch) das Unterscheiden kann (ich alte es so: var idWert enthält nur String zum Objekt, var wert kann mit getState(idWert).val oder getState(idWert).ts oder so befüllt worden sein). Es ginge auch so:
on("yamaha.0.Wert1", "hm-rega.0.98765");
Und das ist auch nur eine Kurzschreibweise. Ausgeschrieben wäre das dann so:
on({id: "yamaha.0.Wert1", change: 'ne'}, function (objekt) {
setState("hm-rega.0.98765", objekt.newState.val);
});Heisst nix anderes, als: Wenn der Wert von yamaha.0.Wert1 sich ändert, wird dieser Wert in in hm-rega.0.98765 geschrieben. Sofort. Gruß Pix PS: "newState" Notiz aus der [https://github.com/ioBroker/ioBroker.javascript#on–-subscribe-on-changes-or-updates-of-some-state](https://github.com/ioBroker/ioBroker.javascript#on–-subscribe-on-changes-or-updates-of-some-state): __early was newState instead of state. It is still working.__ Weiterhin: ` > To simply connect two states with each other, write: > > on('stateId1', 'stateId2'); > > All changes of stateId1 will be written to stateId2. > > Please note, that by default "change" is equal to "any", except when only id as string is set (like on("id", function (){});). In last case change will be set to "ne". `
-
> Da bringst du was durcheinander:
@pix - du hast natürlich völlig recht…man sollte richtig lesen. Aber es war ja noch sooo früh -
Hallo,
Ich ich versuche die CCU Variable Rasenmaeher mit IO-Broker und anders herum synchron halten.
Heisst, wenn ich über IO-Broker den Rasenmäher starte, soll die Variable in der CCU aus TRUE gehen bzw. das gleiche bei aus.
Zudem möchte ich aber auch aus der CCU die Variable schalten und damit den Rasenmäher über IO-Broker starten / Stoppen
Wenn ich das mache läuft allerdings mein LOG voll und der Rasenmäher fährt kurz los und stoppt sofort wieder.
Wahrscheinlich ist mein JavaSkript oder meine Herangehensweise falsch.
Ich glaube ich schalte durch das eine ein und durch das andere wieder aus. Kann das sein? :oops:
Weiss aber nicht, wie das Skript anders aussehen soll.
Wollte es eigentlich gerne mit Blockly machen, aber auch da weiss ich nicht, wie ich das machen soll.
Mein Skript sieht so aus:
` > var IO_Rasenmaeher = 'landroid-s.0.mower.state'; // Rasenmäherstatus IOBrokervar HM_Rasenmaeher = 'hm-rega.0.1668'; // Objekt von systemvariable Rasenmaeher
on(IO_Rasenmaeher, HM_Rasenmaeher); // Synchronisierung IoBroker zu Homematic
on(HM_Rasenmaeher, IO_Rasenmaeher); // Synchronisierung Homematic zu IoBroker `
Das Log sieht so aus:
` > landroid-s.0 2018-08-22 19:25:48.002 warn Can not stop mover because he did not mow or theres an errorlandroid-s.0 2018-08-22 19:25:48.002 info stateChange landroid-s.0.mower.state {"val":false,"ack":false,"ts":1534958748001,"q":0,"from":"system.adapter.javascript.0","lc":1534958747998}
landroid-s.0 2018-08-22 19:25:47.998 warn Can not start mover because he is not at home or there is an Error please take a look at the mover
landroid-s.0 2018-08-22 19:25:47.998 info stateChange landroid-s.0.mower.state {"val":true,"ack":false,"ts":1534958747997,"q":0,"from":"system.adapter.javascript.0","lc":1534958747994}
landroid-s.0 2018-08-22 19:25:47.993 warn Can not stop mover because he did not mow or theres an error
landroid-s.0 2018-08-22 19:25:47.993 info stateChange landroid-s.0.mower.state {"val":false,"ack":false,"ts":1534958747992,"q":0,"from":"system.adapter.javascript.0","lc":1534958747988}
landroid-s.0 2018-08-22 19:25:47.988 warn Can not start mover because he is not at home or there is an Error please take a look at the mover
landroid-s.0 2018-08-22 19:25:47.988 info stateChange landroid-s.0.mower.state {"val":true,"ack":false,"ts":1534958747987,"q":0,"from":"system.adapter.javascript.0","lc":1534958747984}
landroid-s.0 2018-08-22 19:25:47.984 warn Can not stop mover because he did not mow or theres an error `
Würde mir jemand kurz helfen?
-
also wenn ich es richtig verstehe sollte es ja so ähnlich wie bei der Anwesenheit funktionieren. Die Variable hast Du ja anscheinend in der CCU angelegt, oder ?
Bei der Anwesenheit funktioniert das in beide Richtungen mit einem kleinen Blockly.
![](</s><URL url=)<link_text text="https://uploads.tapatalk-cdn.com/201808 ... 734b55.jpg">https://uploads.tapatalk-cdn.com/20180822/7d49e426230f46adc10a9a67ea734b55.jpg</link_text>" />