NEWS
[Aufruf] deConz Adapter Testen 1.1.2
-
@Jey Cee:Ich hab schon angefangen die ID Benennung zu ändern. Jetzt wird noch der Name verwendet, in Zukunft der Typ (light, Sensor, group) und die ID aus deConz. Damit ist das Problem behoben.
Dauert nur noch etwas bis ich das Veröffentliche weil damit einher gehen noch andere Änderungen.
Gesendet von meinem m8 mit Tapatalk `
@Jey Cee: Konntest du dir den Xiaomi Taster anschauen der dir per Post von iobrokermark zugeschickt wurde?
Ist dies dann im Update integriert?
-
Das liegt meiner Meinung nach hier dran:
https://github.com/Jey-Cee/ioBroker.dec … in.js#L806
Die Sensoren in Phoscon haben bei mir keine Zahl im Namen, daher werden sie im Adapter auch nie umbenannt bei Dopplungen, ergo überschreibt der zweite Sensor mit selben Namen sofort den ersten, Änderungen kommen dann nur vom Sensor mit der höchsten Id an. Ich bin mir nicht sicher, was Jey-Cee mit dem Test beabsichtigt, daher auf eigenes Risiko: lösche aus dieser Zeile und Zeile 1097 "match === true &&" raus. Danach sollten zumindest alle Sensoren aufgelistet werden.
Ich glaube die sicherste Methode zu Benennung wäre es die Ids (Zahlen) aus Deconz 1:1 als Id in ioBroker zu übernehmen, das ist auch sicher gegen Umbenennung der Geräte. Der Name steht ja zusätzlich noch im Name-Feld. Um Dopplung der Ids zwischen Lampen und Sensoren zu verhindern sind ja noch die Channels da. `
Aktuell habe ich es mit der beschriebenen Methode 3 Sensoren am laufen. Werde daher nichts raus löschen.
Vielleicht war es missverständlich. Ich hatte die Sensoren niemals via Phoscon hinzugefügt nur dort umbenannt. Das Hinzufügen via Phoscon trägt, wie du schon sagtest, überhaupt keine Früchte.
Finde es Klasse das du weiterhin daran arbeitest und auf die Probleme eingehst! Danke für deinen Einsatz!
-
Das mit dem Tastet ist Theoretisch schon gelöst und ist eine der Änderungen. Da wird das ganze Handling für Statusmeldungen überarbeitet. Dann sollte das erledigt sein.
Bis dahin ist die Lösung für den Taster den Zeitstempel zu überprüfen und wenn exakt 50 Minuten (+- ein paar Sekunde) vergangen sind, ist es nur eine Aktualisierung.
Gesendet von meinem m8 mit Tapatalk
-
@Jey Cee:Das mit dem Tastet ist Theoretisch schon gelöst und ist eine der Änderungen. Da wird das ganze Handling für Statusmeldungen überarbeitet. Dann sollte das erledigt sein.
Bis dahin ist die Lösung für den Taster den Zeitstempel zu überprüfen und wenn exakt 50 Minuten (+- ein paar Sekunde) vergangen sind, ist es nur eine Aktualisierung.
Gesendet von meinem m8 mit Tapatalk `
OK, danke für deine Info und deinen Einsatz.
-
@Jey Cee:Das mit dem Tastet ist Theoretisch schon gelöst und ist eine der Änderungen. Da wird das ganze Handling für Statusmeldungen überarbeitet. Dann sollte das erledigt sein.
Bis dahin ist die Lösung für den Taster den Zeitstempel zu überprüfen und wenn exakt 50 Minuten (+- ein paar Sekunde) vergangen sind, ist es nur eine Aktualisierung.
Gesendet von meinem m8 mit Tapatalk `
OK, danke für deine Info und deinen Einsatz. `
Ich habe das mit dem Taster in der Zwischenzeit mit einem Skript gelöst - funktioniert nun so wie es soll.
Sollte jmd. Interesse haben kann ich es hier auch posten.
Toll wäre wenn wir den Xiaomi-Cube noch zum Laufen bringen könnten. Leider habe ich keinen den ich zur Verfügung stellen könnte.
Hat den sonst schon wer in seinem Besitz?
-
Der Cube läuft bei mir, bis eben auf die angesprochene Dopplung der Namen, wodurch nur einer der beiden Sensoren durch kommt.
-
Ich habe Interesse an dem Skript.
Meine Frau dreht schon hohl, weil den ganzen Tag das Licht
An und aus geht
Vielen Dank im voraus.
-
@Pman alter oder neuer Cube?
Der neue Cube scheint Probleme zu machen.
Gesendet von meinem m8 mit Tapatalk
-
Der neue denke ich (Aqara). In Phoscon werden nach Anlernen 2 Sensoren erstellt, jeweils mit Buttonevent und Temperatur. Ein Buttonevent wird bei "auf der Stelle drehen" des Cubes gesetzt (grob der Winkel, um den gedreht wurde), der andere bildet die Seite ab, auf der der Cube liegt.
Wenn irgendwas nicht gehen soll müsste ich mal genauer wissen was, damit ich testen kann.
Ich sehe erst jetzt, dass bei Updates über websocket ein Polling folgt, hat das einen bestimmten Grund?
-
Für das Polling gibt es 2 Gründe.
Ursprünglich hat der Adapter nur mit polling gearbeitet.
Und es war zum Zeitpunkt der Umstellung einfacher für mich nur die Sensor ID an die Polling Funktion zu über geben.
Das war nie als Dauerlösung gedacht, aber ich hab irgendwann einfach vergessen das ich das noch ändern wollte.
Das wird auch mit dem nächsten update geändert.
Gesendet von meinem m8 mit Tapatalk
-
Ich habe Interesse an dem Skript.
Meine Frau dreht schon hohl, weil den ganzen Tag das Licht
An und aus geht
Vielen Dank im voraus. `
Gerne.
Ich habe dazu zuerst zwei Variablen definiert. In der einen gebe ich die Zeit an in der der Taster normalerweise diese Alive-Messages sendet (50min). In der zweiten Variable definiere ich den Toleranzbereich (sollte die Nachricht erst etwas später im IoBroker ankommen).
Anschließend habe ich für den Taster eine Variable definiert in der ich den Zeitstempel der letzten Nachricht des Tasters speichere.
Wenn dann ein neues Event getriggert wurde, prüfe ich zuerst ob es genau nach 50min +- ein paar Sekunden gesendet wurde oder davor. Somit kann genau unterschieden werden ob der Button gedrückt oder eine Alive-Msg gesendet wurde.
var v_Diff_LastMessage_sec, v_Diff_nach_Intervall; on({id: 'deconz.0.Smart_Switch_02.buttonevent', change: "any"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; v_Diff_LastMessage_sec = 0; v_Diff_LastMessage_sec = (getState("deconz.0.Smart_Switch_02.buttonevent").ts - getState("admin.0.Xiaomi_Aqara_Taster.Smart_Switch_02_Timestamp_AliveMsg").val) / 1000; v_Diff_nach_Intervall = v_Diff_LastMessage_sec - getState("admin.0.Xiaomi_Aqara_Taster.AliveMsg_Intervall_sec").val; if (getState("admin.0.Xiaomi_Aqara_Taster.Smart_Switch_02_Timestamp_AliveMsg").val == '') { } else { if (v_Diff_nach_Intervall > getState("admin.0.Xiaomi_Aqara_Taster.AliveMsg_Toleranz_Sec").val || v_Diff_nach_Intervall < 0) { if (getState("deconz.0.Smart_Switch_02.buttonevent").val == 1002) { getState("deconz.0.On_Off_Kaffeemaschine.on", function (err, state) { setState("deconz.0.On_Off_Kaffeemaschine.on"/*On/Off Kaffeemaschine on*/, state ? !state.val : true); }); } else if (getState("deconz.0.Smart_Switch_02.buttonevent").val == 1004) { } else if (getState("deconz.0.Smart_Switch_02.buttonevent").val >= 1006) { } } else { } } setState("admin.0.Xiaomi_Aqara_Taster.Smart_Switch_02_Timestamp_AliveMsg"/*Smart_Switch_02_Timestamp_AliveMsg*/, getState("deconz.0.Smart_Switch_02.buttonevent").ts, true); });
-
Danke, ich versuch das mal anhand des Bildes nachzubauen.
Magst Du das Skript noch mal richtig als Code anhängen und nicht als Zitat?
Ich versuche zu verstehen was da gemacht wird und bis Jee Cee die neue Version von seinem genialen
Adapter raus bringt, könnte das die Übergangslösung sein.
-
Und jetzt noch als Blockly-Export, das wäre erste Sahne
Ich weiß noch nicht wie ich an die Datenpunkte
AliveMsg_Intervall_sec, AliveMsg_Toleranz_Sec und Smart_Switch_02_Timestamp_AliveMsg komme?
Kannst Du mir da einen Denkanstoß geben?
-
Und jetzt noch als Blockly-Export, das wäre erste Sahne
Ich weiß noch nicht wie ich an die Datenpunkte
AliveMsg_Intervall_sec, AliveMsg_Toleranz_Sec und Smart_Switch_02_Timestamp_AliveMsg komme?
Kannst Du mir da einen Denkanstoß geben? `
Hier noch der Export dazu, das ist am einfachsten
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="on_ext" id="|1YtKD%HFcl=N[1b4n+z" x="13" y="13"><mutation items="1"></mutation> <field name="CONDITION">any</field> <value name="OID0"><shadow type="field_oid" id="i2o=NsLcn2-9^e}g^wr)"><field name="oid">deconz.0.Smart_Switch_02.buttonevent</field></shadow></value> <statement name="STATEMENT"><block type="variables_set" id="}q4cwMSxi%F~NN2Ab2Sk"><field name="VAR">v.Diff_LastMessage_sec</field> <value name="VALUE"><block type="math_number" id="RP9~Ybz=}T7#c2lI4jV@"><field name="NUM">0</field></block></value> <next><block type="variables_set" id="j/i[P[QOZdB?0a{#rJoz"><field name="VAR">v.Diff_LastMessage_sec</field> <value name="VALUE"><block type="math_arithmetic" id="^UdA%~tCch|/dAgHx[VN"><field name="OP">DIVIDE</field> <value name="A"><shadow type="math_number" id="fo0Lk+SVh;y7}w?L5my5"><field name="NUM">1</field></shadow> <block type="math_arithmetic" id="+_cF:Fa8{p|)n2vjP=|."><field name="OP">MINUS</field> <value name="A"><shadow type="math_number" id="Di6k3.#BjftD)AUk{2g["><field name="NUM">1</field></shadow> <block type="get_value" id="pO(-k9Yw9U=e2haNsx+3"><field name="ATTR">ts</field> <field name="OID">deconz.0.Smart_Switch_02.buttonevent</field></block></value> <value name="B"><shadow type="math_number" id="1-Xqq0.RHGuYFofkE,JQ"><field name="NUM">1</field></shadow> <block type="get_value" id="#B.^ELOggZ-;0FP@@hSG"><field name="ATTR">val</field> <field name="OID">admin.0.Xiaomi_Aqara_Taster.Smart_Switch_02_Timestamp_AliveMsg</field></block></value></block></value> <value name="B"><shadow type="math_number" id="-)U{b@u_t0l@YOML_iaw"><field name="NUM">1000</field></shadow></value></block></value> <next><block type="variables_set" id=",OG{f;]Y17-sk,fQ8-!`"><field name="VAR">v.Diff_nach_Intervall</field> <value name="VALUE"><block type="math_arithmetic" id="7b4s_HKN*@@VIRw,C9_X"><field name="OP">MINUS</field> <value name="A"><shadow type="math_number" id=",I3SwNv7_frg2,b1^GNk"><field name="NUM">1</field></shadow> <block type="variables_get" id="-6t9ckZBeByN2uCD|wB!"><field name="VAR">v.Diff_LastMessage_sec</field></block></value> <value name="B"><shadow type="math_number" id="0v/XP=^)l=Vxv[Sr@yp,"><field name="NUM">1</field></shadow> <block type="get_value" id="%UmTTa)a9@:|PBD^.?:C"><field name="ATTR">val</field> <field name="OID">admin.0.Xiaomi_Aqara_Taster.AliveMsg_Intervall_sec</field></block></value></block></value> <next><block type="controls_if" id=";srimx=CWxxkEV}D7Jrt"><mutation else="1"></mutation> <value name="IF0"><block type="logic_compare" id="jrc1XW~7,7t]33ubC;2%"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="|Bu~IsyZvANKr]o9t#TR"><field name="ATTR">val</field> <field name="OID">admin.0.Xiaomi_Aqara_Taster.Smart_Switch_02_Timestamp_AliveMsg</field></block></value> <value name="B"></value></block></value> <statement name="ELSE"><block type="controls_if" id="*kNv;yDxP:5YmvdA``Gd"><mutation else="1"></mutation> <value name="IF0"><block type="logic_operation" id="C|VJQ@p;qF]V,8x/_@i+"><field name="OP">OR</field> <value name="A"><block type="logic_compare" id="ZqU97#,@7Q}y!0*5bV*2"><field name="OP">GT</field> <value name="A"><block type="variables_get" id="sOpnJ;HF@_R@0?ZrbA|%"><field name="VAR">v.Diff_nach_Intervall</field></block></value> <value name="B"><block type="get_value" id="{c7Qbp2c{,DuCJj.Tc.q"><field name="ATTR">val</field> <field name="OID">admin.0.Xiaomi_Aqara_Taster.AliveMsg_Toleranz_Sec</field></block></value></block></value> <value name="B"><block type="logic_compare" id="tvZ8.o!mP#l,I-u@n^=E"><field name="OP">LT</field> <value name="A"><block type="variables_get" id="C6KP`c7jRj9y[[F:GDcF"><field name="VAR">v.Diff_nach_Intervall</field></block></value> <value name="B"><block type="math_number" id="TIiy.nC+hd.HynL-HR`T"><field name="NUM">0</field></block></value></block></value></block></value> <statement name="DO0"><block type="controls_if" id="iok2wV[4Lxotoe:BC2c)"><mutation elseif="2"></mutation> <value name="IF0"><block type="logic_compare" id="WR)3%#OuQ)1yiX%+,-Dt"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="_jgd_H=+Sz-U0D!dKBBY"><field name="ATTR">val</field> <field name="OID">deconz.0.Smart_Switch_02.buttonevent</field></block></value> <value name="B"><block type="math_number" id="G+]u4!)ORB.hImy8p1(a"><field name="NUM">1002</field></block></value></block></value> <statement name="DO0"><block type="toggle" id="o)6qu}S(lx5A-ZS`p0=+"><mutation delay_input="false"></mutation> <field name="OID">deconz.0.On_Off_Kaffeemaschine.on</field> <field name="WITH_DELAY">FALSE</field></block></statement> <value name="IF1"><block type="logic_compare" id="t5!K4,;ld?n1UJLkUCEm"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="P/lXg3#)w%@4^{M2?wT{"><field name="ATTR">val</field> <field name="OID">deconz.0.Smart_Switch_02.buttonevent</field></block></value> <value name="B"><block type="math_number" id="/gpIR5y_`rc.ASbx~dZ|"><field name="NUM">1004</field></block></value></block></value> <value name="IF2"><block type="logic_compare" id="Hj,B95w%[%[:)hm8~41*"><field name="OP">GTE</field> <value name="A"><block type="get_value" id="|lV6A9+pZs6n_B*KpHc#"><field name="ATTR">val</field> <field name="OID">deconz.0.Smart_Switch_02.buttonevent</field></block></value> <value name="B"><block type="math_number" id="=ek!nC2fpjr}5O;0#{*2"><field name="NUM">1006</field></block></value></block></value></block></statement></block></statement> <next><block type="update" id="1q7f_39o(PGDjMw,K{jZ"><mutation delay_input="false"></mutation> <field name="OID">admin.0.Xiaomi_Aqara_Taster.Smart_Switch_02_Timestamp_AliveMsg</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="get_value" id="eh,Zc@K_b_^ge%xcoOvM"><field name="ATTR">ts</field> <field name="OID">deconz.0.Smart_Switch_02.buttonevent</field></block></value></block></next></block></next></block></next></block></next></block></statement></block></xml>
Die drei Variablen musst du selbst als Datenpunkte bei den Objekten anlegen. Ich habe es beim vorhandenen Ordner "admin" gemacht - Plus-Symbol in der Leiste darüber auswählen - ich hoffe nur dass mir diese Variablen nicht mal bei einem Update gelöscht werden. Aber besseren Ort habe ich vorerst mal nicht dafür gefunden.
-
wow, vielen Dank, das Anlegen der Objekte hat zwar etwas gedauert, aber jetzt hab ich es hinbekommen.
Der Test läuft gerade noch mit meinem Single-Button Xiaomi Taster. Jetzt passe ich noch meinen Dual-Taster
an. Vielen, vielen Dank nochmal …
..edit:
jetzt nach einem Tag kann ich bestätigen, das das Skript perfekt funktioniert, beide Taster
schalten nur noch dann wann sie sollen.
-
wow, vielen Dank, das Anlegen der Objekte hat zwar etwas gedauert, aber jetzt hab ich es hinbekommen.
Der Test läuft gerade noch mit meinem Single-Button Xiaomi Taster. Jetzt passe ich noch meinen Dual-Taster
an. Vielen, vielen Dank nochmal …
..edit:
jetzt nach einem Tag kann ich bestätigen, das das Skript perfekt funktioniert, beide Taster
schalten nur noch dann wann sie sollen. `
Freut mich zu hören dass es klappt. Jetzt würde mich allerdings interessieren welchen Dual-Taster du verwendest. Ist dieser auch von Xiaomi?
Kenne nur den Sonoff Touch.
-
Hallo
Da ich Probleme mit der Installation von Deconz hatte habe ich das img für den RPi3 installiert.
Habe dann ioBroker installiert und das Backup von der alten Installation aufgespielt.
Da ich aber z.Z. mich bei Phoscon nicht anmelden kann und auch das Passwort dort nicht zurücksetzen kann,
kann ich den API-Key nicht erzeugen.
Kann man mit der Deconz GUI auch den API-Key erzeugen, wenn ja wie.
Wie kann ich in Phoscon ein neuen Login anlegen ?
Gruß NetFritz
-
@NetFritz irgendwas passt da nicht. Standard Passwort und Benutzer ist "delight".
Du wirst keinen neuen Login anlegen können wenn du dich nicht anmelden kannst.
Ich wüsste nicht wie man in deConz einen API Key erzeugen kann, das geht meines wissens nach nur über die WebAPP oder Phoscon.
Jedenfalls scheint mir dein Problem eins zu sein wobei dir eher Dresden Elektronik helfen kann, da es deConz spezifisch ist.
-
Hallo
Danke für die Antwort.
Standard Passwort "delight" und Benutzer ist "pi".
Habe mir schon gedacht das Dresden Elektronik der richtige Ansprechpartner ist.
Konnte mich heute auf einmal ohne Passwort in Phoscon einloggen.
Werde mal bei Dresden Elektronik anrufen.
Gruß NetFritz
-
Ich hab gerade die Version 0.2.2 auf Github hochgeladen.
Folgendes wurde geändert:
- Benennung der IDs in ioBroker
- Berücksichtigung der Zeitstempel für die Aktualisierung von states
<size size="150">Achtung!!!</size>
Durch die geänderte Benennung der IDs muss der Adapter zu erst gelöscht werden. Und im Anschluss alle Skripte angepasst werden.
Getestet mit deConz Version 2.5.31.