NEWS
Namen von Gerät aus Aufzählung ( TS011F reaktivieren)
-
Hallo,
Ich habe ein paar Tuya Zigbee TS011F Steckdosen, die die hässliche Angewohnheit haben ab und zu mal auszugehen. (Wen es interessiert: https://github.com/Koenkk/zigbee2mqtt/issues/11648)
Jedenfalls hab ich 3 von den Dingern die immer an sein müssen in eine Aufzählung/Funktion gepackt, ein kleines Blockly Script gebaut, und wenn eine ausgeht, dann wird die einfach wieder angeschalten und alles ist fein.
Jetzt hätte ich aber gern eine Nachricht, welche ausgegangen ist. Nur, wie komm ich an den Namen den ich im Zigbee Adapter vergeben hab? Also z.B. "Steckdose Waschhaus Pumpe"?
Viele Grüsse, und vielen Dank,
SteveEdit: Titel geändert, falls jemand auch den Ärger mit den Dosen hat und danach sucht
-
var name = getObject("object-id.").common.name;
-
@bahnuhr sagte in Namen von Gerät aus Aufzählung:
var name = getObject("object-id.").common.name;
dann bekommst du den Namen des Device? wenn das Objekt der State ist?
-
@homoran sagte in Namen von Gerät aus Aufzählung:
dann bekommst du den Namen des Device? wenn das Objekt der State ist?
Was willst du damit sagen?
Ist das ne Frage, ne Feststellung oder was auch immer. -
@bahnuhr Ich steh grad bisschen auf dem Schlauch. Was geb ich der Funktion als Parameter mit? So wie ich es jetzt mache, habe ich zwar die Steckdosen als ganzes Gerät in der Aufzählung, aber um rauszukriegen welche aus ist, hab ich nen Trigger auf den DP "state" der Steckdosen. Wenn sich da einer ändert, startet ne Schleife die den DP "state" aller Steckdosen durchgeht, und wenns einen mit False findet, den auf True schaltet. Heist ich bekomm ja nur die DPs "State" geschickt. Wie krieg ich da die Zuordnung zum übergeordneten Gerät hin?
-
@bahnuhr sagte in Namen von Gerät aus Aufzählung:
Ist das ne Frage,
sieht man das nicht am Fragezeichen?
-
@homoran Jetzt kloppt euch mal nich, sondern gebt mir lieber nen Tritt in die richtige Richtung
-
@smo sagte: die immer an sein müssen in eine Aufzählung/Funktion gepackt, ein kleines Blockly Script gebaut, und wenn eine ausgeht, dann wird die einfach wieder angeschalten und alles ist fein. Jetzt hätte ich aber gern eine Nachricht, welche ausgegangen ist.
-
@paul53 Woohoo, danke, das isses.
Auf Kanalname wär ich nicht gekommen. Ich hab mir auch echt einen nach ner brauchbaren Doku abgesucht. Die bei ioBroker himself ist ja praktisch nicht vorhanden, und sonst findet man entweder Yt Videos oder Webseiten mit Anwendungsbeispielen. Das hilft zwar manchmal, aber ist sehr mühsam im Gegensatz zu einer generellen Doku. Auf jeden Fall, Danke nochmal.
So siehts jetzt aus, vielleicht hilfts ja jemandem:
<block xmlns="https://developers.google.com/blockly/xml" type="on_ext" id="Q1#G;~:}p(UJ/gq8r{8Q" x="-312" y="-888"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id=".kyv{;C$dtA5GIXAB#]b"> <field name="oid">default</field> </shadow> <block type="selector" id="4H@3m/k2vpR+7%C|7r_V"> <field name="TEXT">state[id=*state](functions=watchdog_steckdosen)</field> </block> </value> <statement name="STATEMENT"> <block type="controls_forEach" id="kGqg)X?8}Nd$$-3_xvVe"> <field name="VAR" id="+Lmt#fAQ$C=8^Qurn01e">Steckdose</field> <value name="LIST"> <block type="selector" id="9u+)PLNYH-x!fC+fU`4|"> <field name="TEXT">state[id=*state](functions=watchdog_steckdosen)</field> </block> </value> <statement name="DO"> <block type="controls_if" id="B8[50Kr!#PUNs=`E5BI6"> <value name="IF0"> <block type="logic_compare" id="3lrVz1{:$4H[g!q/}28w"> <field name="OP">EQ</field> <value name="A"> <block type="get_value_var" id="5D),BYBO+o(wI9aW?:fE"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="5upO?UDyF=Qp/hl5+D=9"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="15k|GNddwd8469DNE`xL"> <field name="VAR" id="+Lmt#fAQ$C=8^Qurn01e">Steckdose</field> </block> </value> </block> </value> <value name="B"> <block type="logic_boolean" id="pR+qQTlJ^L-.W.Are|HL"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="control_ex" id="T]h^q86qI@xg[;/yxE?~"> <field name="TYPE">false</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="OID"> <shadow type="field_oid" id="aNyb+*QuvA8yd6Y092tM"> <field name="oid">Object ID</field> </shadow> <block type="variables_get" id="KhR*Y;.%jw(CKHDATXjY"> <field name="VAR" id="+Lmt#fAQ$C=8^Qurn01e">Steckdose</field> </block> </value> <value name="VALUE"> <shadow type="logic_boolean" id="hij0JX[PO^9J0e@!`io1"> <field name="BOOL">TRUE</field> </shadow> </value> <value name="DELAY_MS"> <shadow type="math_number" id="ENY)PA!MR0b]/^$L(DfO"> <field name="NUM">0</field> </shadow> </value> <next> <block type="timeouts_wait" id="1V,m5_6Osa=CN-|)k2,s"> <field name="DELAY">1000</field> <field name="UNIT">ms</field> <next> <block type="pushover" id="242$[O5b%++=+C,fEv3S"> <field name="INSTANCE"></field> <field name="SOUND"></field> <field name="PRIORITY">0</field> <field name="LOG"></field> <value name="MESSAGE"> <shadow type="text" id="MrVk(6~L03rvB5ny[b!-"> <field name="TEXT">text</field> </shadow> <block type="logic_ternary" id="2X+`UMP%;#Y[rw6;m*l-"> <value name="IF"> <block type="logic_compare" id="Fj9+-ib{{zw?=ZH%UPh0"> <field name="OP">EQ</field> <value name="A"> <block type="get_value_var" id="g=ti3ch_^/v+rT,(v+;N"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text"> <field name="TEXT"></field> </shadow> <block type="variables_get" id="^Y~^gk3jM3{ew}KEtE?:"> <field name="VAR" id="+Lmt#fAQ$C=8^Qurn01e">Steckdose</field> </block> </value> </block> </value> <value name="B"> <block type="logic_boolean" id="aZdtbZJfrJY*/cvW1q=8"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <value name="THEN"> <block type="text_join" id=",pVU0xKAAf(l_,OdaxQN"> <mutation items="2"></mutation> <value name="ADD0"> <block type="on_source" id="*woZx@EF%~i3B1;r:F.I"> <field name="ATTR">channelName</field> </block> </value> <value name="ADD1"> <block type="text" id="7+K1kJ,krPp)v|$Uk-H:"> <field name="TEXT"> ist abgeschalten</field> </block> </value> </block> </value> <value name="ELSE"> <block type="text_join" id="N[e[H~;eF?0|dL+Yhjtg"> <mutation items="2"></mutation> <value name="ADD0"> <block type="on_source" id="OD,na415Y{XS=nc~v+g-"> <field name="ATTR">channelName</field> </block> </value> <value name="ADD1"> <block type="text" id="gVE-)nbt8}dn*]8YS],8"> <field name="TEXT"> wurde reaktiviert.</field> </block> </value> </block> </value> </block> </value> <value name="TITLE"> <block type="text" id="el0)Gsa1CU{FFE-*N_?5"> <field name="TEXT">Watchdog Steckdosen Keller</field> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </statement> </block> </statement> </block>
-
@smo sagte in Namen von Gerät aus Aufzählung:
@homoran Jetzt kloppt euch mal nich, sondern gebt mir lieber nen Tritt in die richtige Richtung
das war der (indirekte) Tritt. Ich kann srlber kein js und hatte gehofft, dass @bahnuhr dann den Hinweis auf den Namen des Kanals (nicht Device, sorry
) aufgenommen hätte.
was die Doku sngeht hat iobroker eigentlich gute Ansätze und die js-doku ist sogar sehr ausführlich.
Leider müsste ich auch hier @paul53 um den Hinweis zum Pfad für die JS Doku bitten -
@homoran Na, nun ists ja gelöst
-
@homoran sagte: Hinweis zum Pfad für die JS Doku bitten
-
@smo sagte: So siehts jetzt aus
"Kanalname" bezieht sich auf den Trigger-Datenpunkt und wird in der Schleife nicht verändert. In der Schleife muss eine Javascript-Funktion parentName(id) verwendet werden.
Es muss doch nur die Steckdose eingeschaltet werden, die gerade ausgeschaltet hat - wie in meinem Vorschlag oben.
-
-
@smo sagte: Es schaltet nur die abgeschaltete Dose, die anderen beiden nicht
Dafür ist die Schleife nicht erforderlich.
-
@paul53 Bitte nich lachen. aber ich verstehs immer noch nicht. Dass man die Prüfung einkürzen kann, da hätte ich ein Auge drauf haben müssen, aber wofür man noch die Funktion braucht, das versteh ich nicht. Der gibt den richtigen Namen aus.
-
@smo sagte: wofür man noch die Funktion braucht, das versteh ich nicht.
Die Funktion benötigt man nur für die Schleife, in der alle Datenpunkte des Selektors abgefragt werden. Zu jedem Datenpunkt in der Schleife gehört ein anderes Gerät, dessen Namen man mit der Funktion ermitteln kann. "Kanalname" liefert nur den Gerätenamen des Trigger-Datenpunktes - nicht den der anderen Datenpunkte in der Schleife.
Wie gesagt: Die Schleife ist unnötig und somit auch die Funktion.