NEWS
[gelöst] Anwesenheit über Kategorie (alt Funktion)
-
Hallo zusammen,
ich habe eigene Datenpunkte erstellt, die abbilden, ob Geräte an der Fritzbox als aktiv gemeldet sind, oder nicht. Die Geräte an denen ich ablesen möchte, ob jemand auch tatsächlich in der Wohnung ist habe ich in die Kategorie "Anwesenheit" gesteckt.
Nun ist der Plan, dass die Blockly-Abfrage über die Kategorie läuft, ob irgendein Gerät aktiv ist, oder alle offline sind. Sprich, ist irgendein Gerät online, ist auch jemand zuhause. Falls nicht, nur noch der Kater.
Mit der Kategorie habe ich es auch gelöst, um Infos zu erhalten, wo eine Batterie getauscht werden müsste. Das läuft super!
Die Namen in der Kategorie und im Skript habe ich exakt gleich. Keine Tippfehler.
Trotzdem schaltet mir das Skript den Datenpunkt nicht. Selbst wenn ich manuell einen Datenpunkt ändere müsste die "Anwesenheit" wenigstens auf wahr springen. Seit dem Erstellen ist es aber stur auf falsch. Es ändert sich nicht und ich komme nicht dahinter, wo ich meinen Fehler habe.Hier der Code fürs Skript:
<xml xmlns="https://developers.google.com/blockly/xml"> <block type="on_ext" id="Z}2t_*n%4$_%[gM;APn$" x="62" y="13"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">any</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="e`@I0yg8?YL`Ggv{G;lE"> <field name="oid">ID auswählen</field> </shadow> <block type="selector" id="tZiru3P4!cL1[.;jM6?,"> <field name="TEXT">state[id=*](functions=anwesenheit)</field> </block> </value> <statement name="STATEMENT"> <block type="controls_if" id="uIpY_0h,Nwu)metV1KI|"> <mutation else="1"></mutation> <value name="IF0"> <block type="logic_compare" id="^}@bNNRP,2Z;xM%[=Osu" inline="false"> <field name="OP">EQ</field> <value name="A"> <block type="on_source" id="GhnJ/]0IPRN8Vmv1u%m-"> <field name="ATTR">state.val</field> </block> </value> <value name="B"> <block type="logic_boolean" id=".O78$-;wUXLqq#H;B.F?"> <field name="BOOL">TRUE</field> </block> </value> </block> </value> <statement name="DO0"> <block type="update" id="xecA9n4SCYbwD[$=sks6"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Anwesenheit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="MAm6^8ADJ:]/@(_@gG!y"> <field name="BOOL">TRUE</field> </block> </value> </block> </statement> <statement name="ELSE"> <block type="update" id="*d@zoz|)QNmrAKDigD=%"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">0_userdata.0.Anwesenheit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="k?7BgBhU|ph?S.]V/k%o"> <field name="BOOL">FALSE</field> </block> </value> </block> </statement> </block> </statement> </block> </xml>
Vielleicht ist irgendwem klar, wo mein ?Fehler? liegt
Grüßle!
-
@r-frase sagte in Anwesenheit über Kategorie (alt Funktion):
Vielleicht ist irgendwem klar, wo mein ?Fehler? liegt
nicht ohne das Blockly zu sehen
https://forum.iobroker.net/topic/51555/hinweise-für-gute-forenbeiträge/1 -
@r-frase sagte: Die Namen in der Kategorie und im Skript habe ich exakt gleich.
Die ID ist "enum.functions.anwesenheit"?
-
@r-frase sagte: wo mein ?Fehler? liegt
Man darf nicht nur den Datenpunkt auswerten, der gerade triggert, sondern man muss alle Datenpunkte prüfen (Schleife).
-
Hallo zusammen und vielen lieben Dank für eure Antworten!
Ich bitte um Entschuldigung, dass ich kein Bild vom Blockly hinterlegt hatte @Homoran.
Und dein Blockly-Skript funktioniert perfekt @paul53!Zwei Dinge... bei meiner Abfrage für den Batteriestatus funktioniert es ohne Schleife. Warum? Da werden doch auch alles Batterien abgefragt? Oder bilde ich mir das nur ein?
Weil, von drei Fernbedienungen ausgelöst, habe ich bereits Nachrichten per Whatsapp erhalten, dass die Batterie geprüft werden soll.Hier mein Blockly dazu:
Man sieht auch die "Subscriptions".
Oder stimmt das schon, dass keine Schleife benötigt wird, da ich ALLE schlechten Batteriestände haben will und bei der Anwesenheit das Prüfen dann aufgehört werden kann, wenn das erste Gerät eine Anwesenheit darstellt?Bzgl. der Subscriptions im aktuellen Blockly, wo es bisher nicht funktioniert hat, hatte ich noch die betreffende Funktion als Unterordner von Alarm geändert. Der Plan war das mit einer Alarmanlage nachzurüsten... also mache ich es ordentlich.
Und jetzt hatte ich spontan die Erleuchtung warum keine Subscriptions gezählt wurden: es muss heißen "alarm.anwesenheit". Jetzt habe ich spontan 8 Subscriptions und es wird geschaltet. Ich war davon ausgegangen, dass "anwesenheit" ausreicht. Wieder was gelernt
Ich muss mich in diese Schleifenlogik noch hineinfuchsen, deshalb nochmal vielen Dank für die Starthilfe!
Wäre also noch immer diese blöde Frage, ob meine Batterien richtig überwacht werden
-
@r-frase Das sind doch 2 unterschiedliche Logiken:
-
Bei den Batterien willst Du dann eine Meldung, wenn bei einem Device der Level geändert wurde und dann genau für dieses Device die Meldung
-
Bei der Anwesenheit musst Du immer, wenn sich die Anwesenheit für ein Objekt geändert noch einmal die ganze Liste abklappern und prüfen, ob irgend ein Device (nicht zwingend das, welches das Blockly getriggert hat) noch Anwesenheit zeigt. Deshalb geht es hier nicht ohne die Schleife, im 1.Fall aber schon
-
-
@ahnungsbefreit das stimmt!
Vielen Dank nochmal. Ich ändere auf "gelöst"