NEWS
[GELÖST] Lichter Überwachen und Info bei Ausfall
-
Servus liebe Community,
ich bräuchte wieder mal Hilfe bei einem kleinen Blockly Script.Und zwar nutze Ich in meiner Wohnung Philips HUE Lampen und möchte nun per Blockly checken wenn sich der "Reachable" Status irgend einer Lampe ändert.
Wenn sich bei irgend einer Lampe der Reachable State in False ändert soll er 15 Sekunden warten um abzuwarten ob Sich noch weitere Lampen in False ändern.Danach soll er alle Lampen durchgehen, alle die nicht mehr Erreichbar sind, in eine Liste Packen und diese mir per Whatsapp zuschicken.
So weis ich dann das es bei einer mehrere Lampen zu Problemen kommt und nach diesen Schauen muss.Objektbaum:
Sind natürlich noch viel mehr Lampen eingebunden.Und das ist mein aktueller Test:
Aktuelles Problem:
Bei der foreach Schleife soll er am besten nur einen array aus den IDs machen wo
hue-extended.0.lights.*.state.reachable false ist (um so anschließend weniger abfragen durchführen zu müssen).
Danach soll er den jeweiligen Lampen Namen abfragen:
hue-extended.0.lights.004-flur_spot_1.name und diesen dann in eine Liste schreiben welche mit per WhatsApp / Pushover zugeschickt wird.Das hier ist der Block der mir Probleme macht:
Wenn ich beim Selektor "device[id=hue-extended.0.lights]" verwende um so erst mal alle Lampen abzufragen habe ich anschließend das Problem die unter Objekte .name und .state.reachable abzufragen.Ich hoffe jemand kann mir etwas weiter helfen wie ich das ganze evtl. Lösen kann.
Mfg
-
@Spegeli
Verwende diesen Selektor für die Schleife:Um den Gerätenamen zu erhalten, benötigt man eine Javascript-Funktion mit Ergebnis.
-
@paul53 sagte in [HILFE GESUCHT] Lichter Überwachen und Info bei Ausfall:
@Spegeli
Verwende diesen Selektor für die Schleife:Um den Gerätenamen zu erhalten, benötigt man eine Javascript-Funktion mit Ergebnis.
Thx das Hilft schon mal weiter.
Ein letztes Problem hab ich noch bei dem JavaScript Code:id = id.substring(0, id.lastIndexOf('.')); if(existsObject(id) && getObject(id).type == 'channel') return getObject(id).common.name; id = id.substring(0, id.lastIndexOf('.')); if(existsObject(id) && getObject(id).type == 'channel') return getObject(id).common.name;
Wenn ich das JS so benutze springt er zu:
hue-extended.0.lights.004-flur_spot_1.state
Und nimt davon den Name.Ich bräuchte allerdings den Name von : hue-extended.0.lights.004-flur_spot_1
oder den Wert von: hue-extended.0.lights.004-flur_spot_1.name -
@Spegeli sagte
springt er zu: hue-extended.0.lights.004-flur_spot_1.state
Lösche die Zeile 2 im Script.
-
@paul53 sagte in [HILFE GESUCHT] Lichter Überwachen und Info bei Ausfall:
@Spegeli sagte
springt er zu: hue-extended.0.lights.004-flur_spot_1.state
Lösche die Zeile 2 im Script.
Er nimmt trotzdem weiterhin den Name vom State Channel.
-
@Spegeli sagte:
weiterhin den Name vom State Channel.
Das glaube ich nicht. So geändert ?
id = id.substring(0, id.lastIndexOf('.')); id = id.substring(0, id.lastIndexOf('.')); if(existsObject(id) && getObject(id).type == 'channel') return getObject(id).common.name;
-
@paul53 sagte in [HILFE GESUCHT] Lichter Überwachen und Info bei Ausfall:
@Spegeli sagte:
weiterhin den Name vom State Channel.
Das glaube ich nicht. So geändert ?
id = id.substring(0, id.lastIndexOf('.')); id = id.substring(0, id.lastIndexOf('.')); if(existsObject(id) && getObject(id).type == 'channel') return getObject(id).common.name;
Mein Fail hatte die beiden untersten Reihen gelöscht ^^ jetzt gehts.
Hier mal die Fertige Lösung falls jemand auch mal sowas braucht:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable id="EX]LYsG8PM_-@gtsLI3z">x</variable> <variable id="a_L0Hey%qu{Z|Pq|*6(m">disableTrigger</variable> <variable type="timeout" id="timeout">timeout</variable> <variable id="FO2pipHT}g7wO)`0c_N]">list</variable> <variable id="[Gbxk;.a[5i*y(D^f1qv">id</variable> </variables> <block type="on_ext" id="*,7?x)AnJ%#(Q4@ZQRrm" x="-2287" y="-637"> <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="ZkksXP[i]R_DJ}gNR(04"> <field name="oid">hue-extended.0.lights.004-hue_ambiance_spot_1.state.reachable</field> </shadow> <block type="selector" id="odgvIVTBF{`?9#a6y_E%"> <field name="TEXT">[state.id=hue-extended.0.lights.*.state.reachable]</field> </block> </value> <statement name="STATEMENT"> <block type="controls_if" id="2yUjv71uC`~T1c~lk$,q"> <value name="IF0"> <block type="logic_negate" id="n?q;1Tyg`|B}Y#UNe,.8"> <value name="BOOL"> <block type="variables_get" id="nx-C$-8qv7#/|x97b.}v"> <field name="VAR" id="a_L0Hey%qu{Z|Pq|*6(m">disableTrigger</field> </block> </value> </block> </value> <statement name="DO0"> <block type="variables_set" id="a?KyY`?1q;;`Zqni9]VQ"> <field name="VAR" id="a_L0Hey%qu{Z|Pq|*6(m">disableTrigger</field> <value name="VALUE"> <block type="logic_boolean" id="[)5WeD;7}1cA9^$nLk3@"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="timeouts_settimeout" id="sm5uLDQ*iP}{m6MQ+!hM"> <field name="NAME">timeout</field> <field name="DELAY">30</field> <field name="UNIT">sec</field> <statement name="STATEMENT"> <block type="variables_set" id="=~M$eg/mq)6fysd;+1h3"> <field name="VAR" id="FO2pipHT}g7wO)`0c_N]">list</field> <value name="VALUE"> <block type="text" id="XEXUpvb9i%[L0VNSUZ+P"> <field name="TEXT"></field> </block> </value> <next> <block type="controls_forEach" id="QmD8=Y]w/:P2#FL7xy}3"> <field name="VAR" id="[Gbxk;.a[5i*y(D^f1qv">id</field> <value name="LIST"> <block type="selector" id="tU7,q~v)!JL?b*cFWeSt"> <field name="TEXT">hue-extended.0.lights.*.state.reachable</field> </block> </value> <statement name="DO"> <block type="controls_if" id="J5+R{~PD1[%6NM{!s7~{"> <value name="IF0"> <block type="logic_negate" id="%XT]H@nD[(Sx`d;dVk}w"> <value name="BOOL"> <block type="get_value_var" id="d0=U:1JB`ancP)Y0_Nn$"> <field name="ATTR">val</field> <value name="OID"> <shadow type="text" id="m:Dv;`Jh9=4;E`f$0a:("> <field name="TEXT"></field> </shadow> <block type="variables_get" id="U1:-%iJ;+38UgV`OTm7R"> <field name="VAR" id="[Gbxk;.a[5i*y(D^f1qv">id</field> </block> </value> </block> </value> </block> </value> <statement name="DO0"> <block type="debug" id=";=kpv7G:R40*/M~.8G(5"> <field name="Severity">error</field> <value name="TEXT"> <shadow type="text" id="Zp3zzJ$WB[^86dTbfNeC"> <field name="TEXT">Ein Objekt mit FALSE gefunden</field> </shadow> </value> <next> <block type="text_append" id="P{`mX$LV8Z+/.2cB,htY"> <field name="VAR" id="FO2pipHT}g7wO)`0c_N]">list</field> <value name="TEXT"> <shadow type="text" id="Qv`!(-J;y@H}Y|y.b`dM"> <field name="TEXT"></field> </shadow> <block type="text_join" id="U;:=cU5jfzKvzc-GGsng"> <mutation items="2"></mutation> <value name="ADD0"> <block type="procedures_callcustomreturn" id="yk3au;E5vTU~YH#URT?`"> <mutation name="deviceName"> <arg name="x"></arg> </mutation> <value name="ARG0"> <block type="variables_get" id="vMAS51O[Cxng0gz0d.Q+"> <field name="VAR" id="[Gbxk;.a[5i*y(D^f1qv">id</field> </block> </value> </block> </value> <value name="ADD1"> <block type="text_newline" id="u8cH`W-q2$7EJFEOBlrv"> <field name="Type">\n</field> </block> </value> </block> </value> </block> </next> </block> </statement> </block> </statement> <next> <block type="controls_if" id="7+27pFM.tHyvUXT=MJIr"> <value name="IF0"> <block type="logic_compare" id="|va{t${+vLfjx{UE+N@t"> <field name="OP">EQ</field> <value name="A"> <block type="lists_isEmpty" id="]2AuOSn6hN)vxo$:q0Gz"> <value name="VALUE"> <block type="variables_get" id="U)vPzD5tE?0S5:dk$fdT"> <field name="VAR" id="FO2pipHT}g7wO)`0c_N]">list</field> </block> </value> </block> </value> <value name="B"> <block type="logic_boolean" id="ScaQ{J%*2|Ex:/jrz%8K"> <field name="BOOL">FALSE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="whatsapp-cmb" id="od#*JdVo*`GMTn9rQZmx"> <field name="INSTANCE"></field> <field name="LOG"></field> <value name="MESSAGE"> <shadow type="text" id="zpZNP~2/-+A%!O~/h,,g"> <field name="TEXT">text</field> </shadow> <block type="text_join" id="MA-uFEVdUEBD=m2-tD@J"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id="pi:fnC7TP41BB:jMx)tJ"> <field name="TEXT">Es gehen folgende Lampen nicht: </field> </block> </value> <value name="ADD1"> <block type="text_newline" id="JhUPg;fo_6Tya)]}s^bd"> <field name="Type">\n</field> </block> </value> <value name="ADD2"> <block type="variables_get" id="E=JmHVgN]0Wk;?qZowG."> <field name="VAR" id="FO2pipHT}g7wO)`0c_N]">list</field> </block> </value> </block> </value> <next> <block type="pushover" id="xrW90L`d;Kmw`%E{w#g3"> <field name="INSTANCE"></field> <field name="SOUND"></field> <field name="PRIORITY">1</field> <field name="LOG"></field> <value name="MESSAGE"> <shadow type="text" id="QUVgLrdB1G=;M,r%AMX`"> <field name="TEXT">text</field> </shadow> <block type="text_join" id=".8le?}EJmCj|*kc2)I`T"> <mutation items="3"></mutation> <value name="ADD0"> <block type="text" id=");f!YHZuD1|bWv@r)0AP"> <field name="TEXT">Es gehen folgende Lampen nicht: </field> </block> </value> <value name="ADD1"> <block type="text_newline" id="[,6c_+C`HP#A|Hlln8ql"> <field name="Type">\n</field> </block> </value> <value name="ADD2"> <block type="variables_get" id="6K6kr$l)PQ`KRP6+PIXG"> <field name="VAR" id="FO2pipHT}g7wO)`0c_N]">list</field> </block> </value> </block> </value> <next> <block type="variables_set" id="3Dd@?o}(bZT15WZ*nQ$v"> <field name="VAR" id="a_L0Hey%qu{Z|Pq|*6(m">disableTrigger</field> <value name="VALUE"> <block type="logic_boolean" id="@@{in4Ky`go,Sw^5UAJg"> <field name="BOOL">FALSE</field> </block> </value> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </statement> </block> <block type="procedures_defcustomreturn" id="N[:/N@x2QXRmdKeh;k2w" x="-1462" y="-313"> <mutation statements="false"> <arg name="x" varid="EX]LYsG8PM_-@gtsLI3z"></arg> </mutation> <field name="NAME">deviceName</field> <field name="SCRIPT">aWQgPSBpZC5zdWJzdHJpbmcoMCwgaWQubGFzdEluZGV4T2YoJy4nKSk7DQppZCA9IGlkLnN1YnN0cmluZygwLCBpZC5sYXN0SW5kZXhPZignLicpKTsNCmlmKGV4aXN0c09iamVjdChpZCkgJiYgZ2V0T2JqZWN0KGlkKS50eXBlID09ICdjaGFubmVsJykgcmV0dXJuIGdldE9iamVjdChpZCkuY29tbW9uLm5hbWU7</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> </xml>
Sobald eine Philips Lampe die Verbindung verliert (Defekt, kompletter Stromverlust etc.) wartet das Script weitere 30 Sekunden ob noch weitere Lampen ausfallen.
Anschließend holt er die Namen alle Lampen die nicht mehr Erreichbar sind und schickt eine Nachricht per WhatsApp / pushover. -