NEWS
Anwesenheitserkennung mit IFTTT
-
code markieren und auf den knopp drücken
-
on({id: 'cloud.0.services.ifttt', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("cloud.0.services.ifttt").val == 'Handy1 enter home zone') { sendTo("email", "send", { text: 'Handy1 ist zu Hause angekommen!', to: 'email@online.de', subject: 'ioBroker EventMessenger' }); setState("javascript.0.Anwesenheit_Handy1"/*Anwesenheit_Handy1*/, true); if (getState("javascript.0.Anwesenheit_Handy2").val == false) { setState("javascript.0.Anwesenheit"/*Anwesenheit*/, true); setState("scene.0.Kommen"/*0.Kommen*/, true); } } if (getState("cloud.0.services.ifttt").val == 'Handy1 exit home zone') { sendTo("email", "send", { text: 'Handy1 hat das Haus verlassen!', to: 'email@online.de', subject: 'ioBroker EventMessenger' }); setState("javascript.0.Anwesenheit_Handy1"/*Anwesenheit_Handy1*/, false); if (getState("javascript.0.Anwesenheit_Handy2").val == false) { setState("javascript.0.Anwesenheit"/*Anwesenheit*/, false); setState("scene.0.Gehen"/*0.Gehen*/, true); } } }); on({id: 'cloud.1.services.ifttt', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("cloud.1.services.ifttt").val == 'Handy2 enter home zone') { sendTo("email", "send", { text: 'Handy2 ist zu Hause angekommen!', to: 'email@online.de', subject: 'ioBroker EventMessenger' }); setState("javascript.0.Anwesenheit_Handy2"/*Anwesenheit_Handy2*/, true); if (getState("javascript.0.Anwesenheit_Handy1").val == false) { setState("javascript.0.Anwesenheit"/*Anwesenheit*/, true); setState("scene.0.Kommen"/*0.Kommen*/, true); } } if (getState("cloud.1.services.ifttt").val == 'Handy2 exit home zone') { sendTo("email", "send", { text: 'Handy2 hat das Haus verlassen!', to: 'email@online.de', subject: 'ioBroker EventMessenger' }); setState("javascript.0.Anwesenheit_Handy2"/*Anwesenheit_Handy2*/, false); if (getState("javascript.0.Anwesenheit_Handy1").val == false) { setState("javascript.0.Anwesenheit"/*Anwesenheit*/, false); setState("scene.0.Gehen"/*0.Gehen*/, true); }
-
Danke für die Anleitung. Kannst Du mir bitte deine IFTTT App Einstellungen posten?
Hallo Freunde des Licht,
nach einer Odyssee habe ich jetzt endlich eine akzeptable Lösung für die Anwesenheitserkennung gefunden. Ich habe mehrere Adapter (z.B. tr-064, PING, EgiGeoZone, OwnTracks) getestet. Keiner brachte das gewünschte Ergebnis.
Anforderung: Für die Steuerung des Datenpunktes Anwesenheit stehen 2 Android-Handys zur Verfügung. In Abhängigkeit des Anwesenheitsstatus sollen u.a. die Szenen „Gehen“ und „Kommen“ gestartet werden.
Lösung: Für das Betreten oder Verlassen der Home Zone wird der Dienst IFTTT verwendet. Nach der kostlosen Anmeldung kann es auch gleich losgehen. Schritt 1: Definition der individuelle Home Zone oder eine beliebige andere Zone (Service Location). Im 2. Schritt wird festgelegt, was beim Betreten oder Verlassen der Zone passieren soll. In meinen Fall schicke ich über einen Web Request (Service Webhooks) eine bestimmte Zeichenkette: z.B. „Handy 1 hat Home Zone betreten“ an meinen ioBroker Cloud Adapter. Wenn die Verbindung steht – findet ihr die Zeichenkette unter: Objekte/cloud 1/services/ifttt. In Abhängigkeit des Inhalts der Zeichenkette setze ich den Anwesenheitsstatus von Handy 1 und/oder Handy 2. Verlässt das letzte Handy die Home Zone wird die Szene „Gehen“ gestartet. Betritt das erste Handy die Home Zone wird die Szene „Kommen“ gestartet. Die Verbindung zum IFTTT Dienst wird im Cloud Adapter hergestellt. In der Adapterkonfiguration unter dem Reiter „Service und IFTTT“ muss der IFTTT Key eingetragen werden. Im Gegenzug muss bei der Definition des Web-Request der IFTTT Link des jeweiligen Cloud Adapters angegeben werden. Beachtet bitte, dass pro Handy/Person eine separate Cloud Instanz sowie IFTTT Anmeldung erforderlich ist. Ich habe die Lösung sein einer Woche im Einsatz. Bisher gab es keine Fehler. Alle Zustände wurden bisher korrekt erkannt.
Fazit: Am Ende der langen Reise habe ich endlich eine einfache sowie stabile Lösung für die Anwesenheitserkennung gefunden. Der kostenfreie Dienstanbieter IFTTT - in Kombination mit der gelungenen Cloud Adapter Integration - öffnet ein Tor zu schier unendlichen Anwendungsbeispielen (IFTTT Rezepte).
Für die diejenigen, die es bis hierher geschafft haben - anbei das komplette Java Script (siehe unten). `
-
Nach der Installation und Anmeldung sind in der IFTTT App keine besonderen Einstellungen erforderlich (Standard). Oder geht es dir um die Konfiguration der beiden Applets, die für die Lösung notwendig sind?
-
Webhooks, sprich URL = die von iobroker, Method = post?, Content Type & Body.
Nach der Installation und Anmeldung sind in der IFTTT App keine besonderen Einstellungen erforderlich (Standard). Oder geht es dir um die Konfiguration der beiden Applets, die für die Lösung notwendig sind? `
-
Habs gelöst mit Hilfe von Beitrag: viewtopic.php?f=35&t=6782&p=136662&hilit=ifttt#p136662
8-)
Webhooks, sprich URL = die von iobroker, Method = post?, Content Type & Body.
Nach der Installation und Anmeldung sind in der IFTTT App keine besonderen Einstellungen erforderlich (Standard). Oder geht es dir um die Konfiguration der beiden Applets, die für die Lösung notwendig sind?
-
on({id: 'cloud.0.services.ifttt', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("cloud.0.services.ifttt").val == 'Handy1 enter home zone') { sendTo("email", "send", { text: 'Handy1 ist zu Hause angekommen!', to: 'email@online.de', subject: 'ioBroker EventMessenger' }); setState("javascript.0.Anwesenheit_Handy1"/*Anwesenheit_Handy1*/, true); if (getState("javascript.0.Anwesenheit_Handy2").val == false) { setState("javascript.0.Anwesenheit"/*Anwesenheit*/, true); setState("scene.0.Kommen"/*0.Kommen*/, true); } } if (getState("cloud.0.services.ifttt").val == 'Handy1 exit home zone') { sendTo("email", "send", { text: 'Handy1 hat das Haus verlassen!', to: 'email@online.de', subject: 'ioBroker EventMessenger' }); setState("javascript.0.Anwesenheit_Handy1"/*Anwesenheit_Handy1*/, false); if (getState("javascript.0.Anwesenheit_Handy2").val == false) { setState("javascript.0.Anwesenheit"/*Anwesenheit*/, false); setState("scene.0.Gehen"/*0.Gehen*/, true); } } }); on({id: 'cloud.1.services.ifttt', change: "ne"}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; if (getState("cloud.1.services.ifttt").val == 'Handy2 enter home zone') { sendTo("email", "send", { text: 'Handy2 ist zu Hause angekommen!', to: 'email@online.de', subject: 'ioBroker EventMessenger' }); setState("javascript.0.Anwesenheit_Handy2"/*Anwesenheit_Handy2*/, true); if (getState("javascript.0.Anwesenheit_Handy1").val == false) { setState("javascript.0.Anwesenheit"/*Anwesenheit*/, true); setState("scene.0.Kommen"/*0.Kommen*/, true); } } if (getState("cloud.1.services.ifttt").val == 'Handy2 exit home zone') { sendTo("email", "send", { text: 'Handy2 hat das Haus verlassen!', to: 'email@online.de', subject: 'ioBroker EventMessenger' }); setState("javascript.0.Anwesenheit_Handy2"/*Anwesenheit_Handy2*/, false); if (getState("javascript.0.Anwesenheit_Handy1").val == false) { setState("javascript.0.Anwesenheit"/*Anwesenheit*/, false); setState("scene.0.Gehen"/*0.Gehen*/, true); } ```` `
Hallo, ich probiere das gerade aus, aber ich bekomme Fehler angezeigt ? Was ist hier falsch ?
-
PS:
Habe es selbst gefunden, die letzten zwei Zeilen fehlen…
und bei .val == false wird val === false vorgeschlagen, dann ist das gelbe Dreieck weg...
-
Hallo
Habe folgendes Problem der Script läuft an sich aber es wird scense gehen oder kommen nicht ausgelöst .
javascript.0 2018-10-31 12:17:13.687 warn at Object. <anonymous>(script.js.Java.anwesenheit2Orginal:39:9) javascript.0 2018-10-31 12:17:13.685 warn getState "javascript.0.Anwesenheit_Handy1" not found (3) javascript.0 2018-10-31 12:17:13.685 warn at Object. <anonymous>(script.js.Java.anwesenheit2Orginal:38:5) javascript.0 2018-10-31 12:17:13.684 warn State "javascript.0.Anwesenheit_Handy2" not found javascript.0 2018-10-31 12:16:40.015 warn at Object. <anonymous>(script.js.Java.anwesenheit2Orginal:11:9) javascript.0 2018-10-31 12:16:40.013 warn getState "javascript.0.Anwesenheit_Handy2" not found (3) javascript.0 2018-10-31 12:16:40.013 warn at Object. <anonymous>(script.js.Java.anwesenheit2Orginal:10:5) javascript.0 2018-10-31 12:16:40.011 warn State "javascript.0.Anwesenheit_Handy1" not found</anonymous></anonymous></anonymous></anonymous>
das steht unter log
muss ich noch javascript für anwesenheit Handy1 und anwesendheit handy2 javascript erstellen?
was muss ich den noch ergänzen damit es geht?
-
Alle Zustände wurden bisher korrekt erkannt.
-
ich bin ja neuling in der sache aber , es müsste doch irgendwo abgefragt werden ob habdy1 oder handy2 auf true oder false steht .
muss ich die beiden handys auch in iobroker intrigieren wenn ja wie
ich bedanke mich
mfg
-
PS:
Habe es selbst gefunden, die letzten zwei Zeilen fehlen…
und bei .val == false wird val === false vorgeschlagen, dann ist das gelbe Dreieck weg... `
Hast du es damit zum Laufen gebracht? Ich bin auch gerade am Basteln, aber es funktioniert noch nicht und ich versuche herauszufinden woran es liegt. Wenn ich es so anpasse wie du geschrieben hast, tauchen zumindest keine Fehlermeldungen mehr auf, aber es werden nur die Mails verschickt, sonst passiert nix. Wo sollten denn die Einträge "javascript.0.Anwesenheit_Handy1"/*Anwesenheit_Handy1" auftauchen?
Das Script wurde im Original mit Java Blockly geschrieben. Ich habe es zur Anonymisierung in Java Code umgewandelt. Hilft dir ein Blockly-Screen-Shot weiter? `
Wäre es möglich, den Blockly-Code so zu exportieren, dass man ihn wieder als Blockly importieren kann? Oder zumindest den Screenshot von Blockly zu posten? Das würde mir viel helfen
Die ifttt-Integration hab ich schon hinbekommen (und auch endlich Webhooks verstanden) :D, nur das Script tut nicht das was ich mir vorstelle was es tun sollte. Muss ich zwingend den Szenen-Adapter einrichten? Muss man die Szenen vorher von Hand eintragen?
-
PS:
Habe es selbst gefunden, die letzten zwei Zeilen fehlen…
und bei .val == false wird val === false vorgeschlagen, dann ist das gelbe Dreieck weg... `
Hast du es damit zum Laufen gebracht? Ich bin auch gerade am Basteln, aber es funktioniert noch nicht und ich versuche herauszufinden woran es liegt. Wenn ich es so anpasse wie du geschrieben hast, tauchen zumindest keine Fehlermeldungen mehr auf, aber es werden nur die Mails verschickt, sonst passiert nix. Wo sollten denn die Einträge "javascript.0.Anwesenheit_Handy1"/*Anwesenheit_Handy1" auftauchen?
Das Script wurde im Original mit Java Blockly geschrieben. Ich habe es zur Anonymisierung in Java Code umgewandelt. Hilft dir ein Blockly-Screen-Shot weiter? `
Wäre es möglich, den Blockly-Code so zu exportieren, dass man ihn wieder als Blockly importieren kann? Oder zumindest den Screenshot von Blockly zu posten? Das würde mir viel helfen
Die ifttt-Integration hab ich schon hinbekommen (und auch endlich Webhooks verstanden) :D, nur das Script tut nicht das was ich mir vorstelle was es tun sollte. Muss ich zwingend den Szenen-Adapter einrichten? Muss man die Szenen vorher von Hand eintragen? ` ich nutze aktuell ifttt nicht mehr. Ich mache meine Anwesenheitserkennung mit dem Adapter google sharedlocations.
aber die Datenpunkte und das Blockly für die Anwesenheitserkennung sind so ähnlich…(kann ich später hochladen, habe gerade keinen Rechner an-ich bin am Handy)
-
Ich habe gerade gesehen das ich das Script mit der IFTTT Geschichte nicht mehr habe.
Aber vielleicht hilft Dir folgendes. Ich habe mir mehrere Datenpunkte erstellt, in meinem Fall nur für 2 Personen, also für meine Frau und für mich. (Diese Datenpunkte nur in ein leeres neues Javascript kopieren, Deine Namen anpassen und einmal ausführen, dann sind die Datenpunkte erstellt.)
Bei noch mehr Personen kannst Du das ja beliebig erweitern. Den Datenpunkt mit "suchen" brauchst Du nicht unbedingt. Ich nutze den nur um mr die Adresse bzw. den Standort des Handys ansagen zu lassen. Über Alexa2 Adapter kann ich dann fragen: Alexa, wo ist Kerstin. Als Antwort bekomme ich dann die aktuelle Adresse angesagt, also die wo das Handy gerade ist.
//Home //Datenpunkte An-Abwesenheitserkennung Heiko Home Zone createState("Eigene_Datenpunkte.Anwesenheit.Heiko.Home.Heiko_Home", { name: 'Heiko Home Anwesenheit', role: 'switch', type: 'boolean', read: true, write: true, def: true, }); //Datenpunkte An-Abwesenheitserkennung Kerstin Home Zone createState("Eigene_Datenpunkte.Anwesenheit.Kerstin.Home.Kerstin_Home", { name: 'Kerstin Home Anwesenheit', role: 'switch', type: 'boolean', read: true, write: true, def: true, }); //Alle An-Abwesend Home Zone //Datenpunkte An-Abwesenheitserkennung Alle Home Zone createState("Eigene_Datenpunkte.Anwesenheit.Alle.Home.Alle_Home", { name: 'Alle Home Anwesenheit', role: 'switch', type: 'boolean', read: true, write: true, def: true, }); //Arbeit //Datenpunkte An-Abwesenheitserkennung Heiko Arbeit createState("Eigene_Datenpunkte.Anwesenheit.Heiko.Arbeit.Heiko_Arbeit", { name: 'Heiko Arbeit Anwesenheit', role: 'switch', type: 'boolean', read: true, write: true, def: true, }); //Datenpunkte An-Abwesenheitserkennung Kerstin Arbeit createState("Eigene_Datenpunkte.Anwesenheit.Kerstin.Arbeit.Kerstin_Arbeit", { name: 'Kerstin Arbeit Anwesenheit', role: 'switch', type: 'boolean', read: true, write: true, def: true, }); //Heiko suchen //Datenpunkt Heiko suchen createState("Eigene_Datenpunkte.Anwesenheit.Heiko.Heiko_suchen.Heiko_suchen", { name: 'Heiko suchen', role: 'button', type: 'object', read: true, write: true, def: true, "smartName": { "de": "Alexa Heiko suchen", "smartType": "SWITCH" }}); //Kerstin suchen //Datenpunkt Kerstin suchen createState("Eigene_Datenpunkte.Anwesenheit.Kerstin.Kerstin_suchen.Kerstin_suchen", { name: 'Kerstin suchen', role: 'button', type: 'object', read: true, write: true, def: true, "smartName": { "de": "Alexa Kerstin suchen", "smartType": "SWITCH" }});
Dann habe ich noch ein Blockly was die Datenpunkte Triggert (in Deinem Fall müssen die Datenpunkte dann durch den IFTTT String durch ein weiteres Blockly gesetzt werden. Ich weiß ja nicht wie Dein Text in IFTTT aussieht.
Hier mal ein Ausschnitt vom Blockly: (passt nicht drauf)
Hier der Blockly Export
<xml xmlns="http://www.w3.org/1999/xhtml"><block type="on_ext" id="oh~?)]A4IJb:,;hg5a(#" x="-1387" y="-1838"><mutation items="2"></mutation> <field name="CONDITION">ne</field> <value name="OID0"><shadow type="field_oid" id="6z{H0KHxPKSuk^pQjez-"><field name="oid">google-sharedlocations.0.fence.Heiko-Home</field></shadow></value> <value name="OID1"><shadow type="field_oid" id="tbbY:x53/#`RIN%oA@.%"><field name="oid">google-sharedlocations.0.fence.Heiko-Arbeit</field></shadow></value> <statement name="STATEMENT"><block type="comment" id="}@1N!Wb-:d|s(VE-c!Xr"><field name="COMMENT">Heiko Home</field> <next><block type="controls_if" id="?qeLWSmPy.kkU#8ij-:R"><mutation elseif="2"></mutation> <value name="IF0"><block type="logic_compare" id="K~kE5!9!/xH[]SKW|fQ#"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="y`q8{oDu7IR8~y;c|a*~"><field name="ATTR">val</field> <field name="OID">google-sharedlocations.0.fence.Heiko-Home</field></block></value> <value name="B"><block type="logic_boolean" id="nA29(Or/4d*8U}+7,51n"><field name="BOOL">TRUE</field></block></value></block></value> <statement name="DO0"><block type="control" id="G*OoWc;EyoQ!W[HNm/yZ"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Eigene_Datenpunkte.Anwesenheit.Heiko.Home.Heiko_Home</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="=hT007@21CLG8/^6WGB5"><field name="BOOL">TRUE</field></block></value> <next><block type="telegram" id=";S{P{fhSoj6n^O21?0.1"><field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"><shadow type="text" id="VV7lhzB(x@Q*CCr`{j-?"><field name="TEXT">Heiko ist in der Home Zone</field></shadow></value> <next><block type="control" id="YRUL!oRmkV8|pU;{qfd*"><mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id=",yyuRx8{7}e{~DO|VW.p"><field name="TEXT">Heiko ist in der Home Zone</field></block></value> <next><block type="comment" id="s%pl~E(U*!/n@OEZ[EcM"><field name="COMMENT">Heiko Arbeit</field> <next><block type="control" id="#)TkDIk8S0(,Ik#iLgwX"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Eigene_Datenpunkte.Anwesenheit.Heiko.Arbeit.Heiko_Arbeit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="budlIcXJAPr`Vre0:6]P"><field name="BOOL">FALSE</field></block></value></block></next></block></next></block></next></block></next></block></statement> <value name="IF1"><block type="logic_compare" id="qC6f4tKxeBsN~kdrAx`P"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="4QXaoCI_GMgCe8+;6);b"><field name="ATTR">val</field> <field name="OID">google-sharedlocations.0.fence.Heiko-Arbeit</field></block></value> <value name="B"><block type="logic_boolean" id="xd}X?;cw/wwVA-Y#FQLI"><field name="BOOL">TRUE</field></block></value></block></value> <statement name="DO1"><block type="control" id="QI4A!sXQpYXTd59YP#b1"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Eigene_Datenpunkte.Anwesenheit.Heiko.Arbeit.Heiko_Arbeit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="Kaut_^@-VRXV,MU6/%:c"><field name="BOOL">TRUE</field></block></value> <next><block type="telegram" id="M4WzX1OP2yv/Q1MJ26R|"><field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"><shadow type="text" id="ZrpS=ak|f!ia134l=3^Y"><field name="TEXT">Heiko ist auf der Arbeit !</field></shadow></value> <next><block type="control" id="XbCtpfh?K./#nX0UiVRO"><mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="3ZWkXo=m+!-*0Y4RU91S"><field name="TEXT">Heiko ist im Büro angekommen</field></block></value> <next><block type="control" id="Dw2?{jgV(}UmaLqYp1O,"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Eigene_Datenpunkte.Anwesenheit.Heiko.Home.Heiko_Home</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="*S-~N[VGN+?vv2v(H%(,"><field name="BOOL">FALSE</field></block></value> <next><block type="comment" id="c[Z+Dx@Q#V,6{(qds3*P"><field name="COMMENT">Heiko unterwegs</field></block></next></block></next></block></next></block></next></block></statement> <value name="IF2"><block type="logic_operation" id="G7:|UFaj+r[86nZO*u|)" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="X2`;*n`1+BH9;q!2e{@7"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="Z7gi%ZcjW5I9a^~QRxC|"><field name="ATTR">val</field> <field name="OID">google-sharedlocations.0.fence.Heiko-Home</field></block></value> <value name="B"><block type="logic_boolean" id="2f+V_p5F[Xfi{m_6Wm6."><field name="BOOL">FALSE</field></block></value></block></value> <value name="B"><block type="logic_compare" id=",/Wtd4c@Bf`hOt_%i]PA"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="tR2+(N=wK(h0(JbhLg^]"><field name="ATTR">val</field> <field name="OID">google-sharedlocations.0.fence.Heiko-Arbeit</field></block></value> <value name="B"><block type="logic_boolean" id="heIL)9#eZ5EIgQ1_gbG/"><field name="BOOL">FALSE</field></block></value></block></value></block></value> <statement name="DO2"><block type="control" id="syJf2m-dm(h^k%1bbu{;"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Eigene_Datenpunkte.Anwesenheit.Heiko.Home.Heiko_Home</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="NSwH0hp:{KY2{xGic~28"><field name="BOOL">FALSE</field></block></value> <next><block type="control" id="3[7Qf]R]-()J@0CWIuoB"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Eigene_Datenpunkte.Anwesenheit.Heiko.Arbeit.Heiko_Arbeit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="((Gyx?V~2h!Zl~FVTF5D"><field name="BOOL">FALSE</field></block></value> <next><block type="telegram" id="(WUNvwP{hhZKicqI*D3Q"><field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"><shadow type="text" id="w@{Rndq,fD^GK/pf,Qdm"><field name="TEXT">Heiko ist unterwegs !</field></shadow></value> <next><block type="control" id="a5HsKX(kY4t67M8fJIU5"><mutation delay_input="false"></mutation> <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="text" id="3*~:M8M`#[Z,|}%KR|?E"><field name="TEXT">Heiko ist unterwegs</field></block></value></block></next></block></next></block></next></block></statement></block></next></block></statement> <next><block type="on_ext" id="}E1x3hZzxCKz*T@[N1u{"><mutation items="2"></mutation> <field name="CONDITION">ne</field> <value name="OID0"><shadow type="field_oid" id="cVK0oA14zqVou15bfgDA"><field name="oid">javascript.0.Eigene_Datenpunkte.Anwesenheit.Heiko.Home.Heiko_Home</field></shadow></value> <value name="OID1"><shadow type="field_oid" id="PS1w555N*E2?Zpa:W*gf"><field name="oid">javascript.0.Eigene_Datenpunkte.Anwesenheit.Kerstin.Home.Kerstin_Home</field></shadow></value> <statement name="STATEMENT"><block type="comment" id="#fV2x)oT^NRAs@Etz6h!"><field name="COMMENT">alle Anwesend ?</field> <next><block type="controls_if" id="%soY=yG3]xG067ehLdfR"><mutation elseif="1"></mutation> <value name="IF0"><block type="logic_operation" id="rEQe4N?j?lObj52mR3EA" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="=YOw=UovKslz:zVtIB1["><field name="OP">EQ</field> <value name="A"><block type="get_value" id="8zEBx#SIKb/xv26[AbR}"><field name="ATTR">val</field> <field name="OID">javascript.0.Eigene_Datenpunkte.Anwesenheit.Heiko.Home.Heiko_Home</field></block></value> <value name="B"><block type="logic_boolean" id=",)5}UWurskL3a`vZVyvR"><field name="BOOL">TRUE</field></block></value></block></value> <value name="B"><block type="logic_compare" id="9E:WdAc5u^tv5R-upW8e"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="7AGFiB}o95zM+c-^r}f,"><field name="ATTR">val</field> <field name="OID">javascript.0.Eigene_Datenpunkte.Anwesenheit.Kerstin.Home.Kerstin_Home</field></block></value> <value name="B"><block type="logic_boolean" id="0{}J!9:6QVM%lfbzQkM+"><field name="BOOL">TRUE</field></block></value></block></value></block></value> <statement name="DO0"><block type="control" id="yR_}1?C^K?NVWKU4tXB~"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Eigene_Datenpunkte.Anwesenheit.Alle.Home.Alle_Home</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="d^3FhXX5d`2b.?O^QUAu"><field name="BOOL">TRUE</field></block></value></block></statement> <value name="IF1"><block type="logic_operation" id="tqEtY3ZV;TK)AV;]RIe%" inline="false"><field name="OP">OR</field> <value name="A"><block type="logic_compare" id="QMPjcQb_}ar1/e-j,mwH"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="Nli9P~Jtituc)z@lPw4k"><field name="ATTR">val</field> <field name="OID">javascript.0.Eigene_Datenpunkte.Anwesenheit.Heiko.Home.Heiko_Home</field></block></value> <value name="B"><block type="logic_boolean" id="Bwor61Zm~#MY-2P?s|m{"><field name="BOOL">FALSE</field></block></value></block></value> <value name="B"><block type="logic_compare" id="T9M=3HIHebtTOx0w*#N}"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="*,3cz.;pKIF|xHf?JQ`)"><field name="ATTR">val</field> <field name="OID">javascript.0.Eigene_Datenpunkte.Anwesenheit.Kerstin.Home.Kerstin_Home</field></block></value> <value name="B"><block type="logic_boolean" id="23?IsG!7^yK4cW.Pkd;`"><field name="BOOL">FALSE</field></block></value></block></value></block></value> <statement name="DO1"><block type="control" id="@ZDD]ukyGmwT#]S0G0%6"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Eigene_Datenpunkte.Anwesenheit.Alle.Home.Alle_Home</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="/NXX#h;?hozbBPVpQ`g+"><field name="BOOL">FALSE</field></block></value></block></statement></block></next></block></statement> <next><block type="on_ext" id="{#+XI9ftKc%Q]}EIG4`A"><mutation items="2"></mutation> <field name="CONDITION">ne</field> <value name="OID0"><shadow type="field_oid" id="(Ox}HW6bC^]1*o`ZtkM1"><field name="oid">javascript.0.Eigene_Datenpunkte.Anwesenheit.Heiko.Home.Heiko_Home</field></shadow></value> <value name="OID1"><shadow type="field_oid" id="qKaPJ[~6NT*lJa:STQt!"><field name="oid">javascript.0.Eigene_Datenpunkte.Anwesenheit.Kerstin.Home.Kerstin_Home</field></shadow></value> <statement name="STATEMENT"><block type="comment" id="XpLZ*S}~8Q%E6`9jD@%*"><field name="COMMENT">CCU Anwesenheit</field> <next><block type="controls_if" id="6OGyd#-%b/e?,O?j8u2J"><mutation elseif="1"></mutation> <value name="IF0"><block type="logic_operation" id="H/iiEsK8eu+e/k(CPo/v" inline="false"><field name="OP">OR</field> <value name="A"><block type="logic_compare" id="](c{.sP6[pY;9LXx?Qxg"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="bj#57(j`G*B_rld5LYDG"><field name="ATTR">val</field> <field name="OID">javascript.0.Eigene_Datenpunkte.Anwesenheit.Heiko.Home.Heiko_Home</field></block></value> <value name="B"><block type="logic_boolean" id="Ts)#4|Bu@RER]pJ;_^^x"><field name="BOOL">TRUE</field></block></value></block></value> <value name="B"><block type="logic_compare" id="FfJTx/9/6!r!=MP2=;rW"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="L)e*UZpw6kb|qJn7`h9}"><field name="ATTR">val</field> <field name="OID">javascript.0.Eigene_Datenpunkte.Anwesenheit.Kerstin.Home.Kerstin_Home</field></block></value> <value name="B"><block type="logic_boolean" id="Lt}Jb(^k0T/f5vVASqR;"><field name="BOOL">TRUE</field></block></value></block></value></block></value> <statement name="DO0"><block type="control" id="7*?E[:|iVka:pdYL%le+"><mutation delay_input="false"></mutation> <field name="OID">hm-rega.0.950</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id=")jGeNSvEEcK(ojd:-:GZ"><field name="BOOL">TRUE</field></block></value></block></statement> <value name="IF1"><block type="logic_operation" id=".{%sR%fax{[ES4{qg%3}" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="01ZU)_mF;YlEp3s.q9N`"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="43!ECsMAZ(=+8V[GtP6("><field name="ATTR">val</field> <field name="OID">javascript.0.Eigene_Datenpunkte.Anwesenheit.Heiko.Home.Heiko_Home</field></block></value> <value name="B"><block type="logic_boolean" id="sY,s*t+wdCq6KpJ8;w=,"><field name="BOOL">FALSE</field></block></value></block></value> <value name="B"><block type="logic_compare" id="#T6Nw?IkU+VrSuPo7cIP"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="lT@F/|%sg;07DEE7N,cT"><field name="ATTR">val</field> <field name="OID">javascript.0.Eigene_Datenpunkte.Anwesenheit.Kerstin.Home.Kerstin_Home</field></block></value> <value name="B"><block type="logic_boolean" id="+,6OlNud`AfX,J]F:zg@"><field name="BOOL">FALSE</field></block></value></block></value></block></value> <statement name="DO1"><block type="control" id="q;Ird_*wYMVTSP}kR)l["><mutation delay_input="false"></mutation> <field name="OID">hm-rega.0.950</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="kMPCO;a6(M7iy+AS9S4n"><field name="BOOL">FALSE</field></block></value></block></statement></block></next></block></statement></block></next></block></next></block> <block type="on_ext" id="oeZZ5{~YvtZ`/kbBny~)" x="-487" y="-1863"><mutation items="2"></mutation> <field name="CONDITION">ne</field> <value name="OID0"><shadow type="field_oid" id="5B/mZcU{b6B}{D6)X.A|"><field name="oid">google-sharedlocations.0.fence.Kerstin-Home</field></shadow></value> <value name="OID1"><shadow type="field_oid" id="M`6smVyOQMJ#!J/PS8`9"><field name="oid">google-sharedlocations.0.fence.Kerstin-Arbeit</field></shadow></value> <statement name="STATEMENT"><block type="comment" id="n^E{JcX./7Sk%E{0whx5"><field name="COMMENT">Kerstin Home</field> <next><block type="controls_if" id="[?zKd0nfM_P`Z[~55wPq"><mutation elseif="2"></mutation> <value name="IF0"><block type="logic_compare" id="Zz~12vt%~FDMu}6:lnKp"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="Ws99f]%W[-(B[Jd7RBRD"><field name="ATTR">val</field> <field name="OID">google-sharedlocations.0.fence.Kerstin-Home</field></block></value> <value name="B"><block type="logic_boolean" id="(yB:dS}{f1S:)[m_,741"><field name="BOOL">TRUE</field></block></value></block></value> <statement name="DO0"><block type="control" id="WqGXwq_`A@^}.gHc-hT="><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Eigene_Datenpunkte.Anwesenheit.Kerstin.Home.Kerstin_Home</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="g;9BoCanQbP2kXWJD`,+"><field name="BOOL">TRUE</field></block></value> <next><block type="telegram" id="f/^uM7H~y83,%PRJ9pG("><field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"><shadow type="text" id="]EjgK45ccVv#{lydGd?%"><field name="TEXT">Kerstin ist in der Home Zone</field></shadow></value> <next><block type="comment" id="+@-vku5%J:d%a+Y8KJL1"><field name="COMMENT">Alexa Wohnzimmer</field> <next><block type="control" id="((64/AxwPf(7N243E_F0"><mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id=";nURe_UKOKGJU;FHJPJL"><field name="TEXT">Kerstin ist in der Home Zone</field></block></value> <next><block type="comment" id="%^suMW!@@XR?=-z0nRVH"><field name="COMMENT">Alexa Küche</field> <next><block type="control" id="3Geb0CXCqm,A/w~Sw+q|"><mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">5</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="S1A.v#!#i].#`i1g4Cf*"><field name="TEXT">Kerstin ist in der Home Zone</field></block></value> <next><block type="comment" id="dn?3IC|-u^hS;g`R/2AF"><field name="COMMENT">Alexa Badezimmer</field> <next><block type="control" id="ls8{AzPk?:WQZDnN`UC-"><mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">9</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="Qlj8vG*ZzHb:mZf7LgM)"><field name="TEXT">Kerstin ist in der Home Zone</field></block></value> <next><block type="comment" id="N/XLoJRW3CV1),aMrCTe"><field name="COMMENT">Alexa Flur</field> <next><block type="control" id="kS,[IkE1IhnRf);B3!!o"><mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">14</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="WArVMyn[%|MjwM)0X7:t"><field name="TEXT">Kerstin ist in der Home Zone</field></block></value> <next><block type="comment" id="xU-)a98HOJ/Mw%%,}neZ"><field name="COMMENT">Alexa Keller Flur</field> <next><block type="control" id="Rf8w_ZQNwNOonk19)RE{"><mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">19</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="@jVWfpV(?c]f`;?=/sY_"><field name="TEXT">Kerstin ist in der Home Zone</field></block></value> <next><block type="comment" id="k(PkckwplIQqlr%V8w0M"><field name="COMMENT">Alexa Werkstatt</field> <next><block type="control" id="C3Y|y),@c}dZM~d_QV+W"><mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">24</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="]zc8n!#/6PK,XU^bW:.k"><field name="TEXT">Kerstin ist in der Home Zone</field></block></value> <next><block type="comment" id="uwJt1r6z`eq=FDwql[?Y"><field name="COMMENT">Kerstin Arbeit</field> <next><block type="control" id="P0_CTdske1`LAhS7]SzX"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Eigene_Datenpunkte.Anwesenheit.Kerstin.Arbeit.Kerstin_Arbeit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="#-CrWTZ68neMrGvttC]4"><field name="BOOL">FALSE</field></block></value></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement> <value name="IF1"><block type="logic_compare" id="d%JztERtLIc1)wH(E+@m"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="B_,+mw}0:zsx/)0}tKe|"><field name="ATTR">val</field> <field name="OID">google-sharedlocations.0.fence.Kerstin-Arbeit</field></block></value> <value name="B"><block type="logic_boolean" id="9jR+d4MmbG?ji9F_UyX@"><field name="BOOL">TRUE</field></block></value></block></value> <statement name="DO1"><block type="control" id="d?2R;AhXyP[5akUj`]^z"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Eigene_Datenpunkte.Anwesenheit.Kerstin.Arbeit.Kerstin_Arbeit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="?Rs?@M.c28/,)xHb-n;o"><field name="BOOL">TRUE</field></block></value> <next><block type="telegram" id="2*SxO]9kD%q)EokV=,+E"><field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"><shadow type="text" id="f5thUl_:fLmYI};As[j:"><field name="TEXT">Kerstin ist auf der Arbeit !</field></shadow></value> <next><block type="comment" id="-b1f;c%q6H4fZw#IK:q*"><field name="COMMENT">Alexa Wohnzimmer</field> <next><block type="control" id="}]}9@?3-GvR%q9|wGWS`"><mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="A0clOtw5VKFcVesv^!Ri"><field name="TEXT">Kerstin ist im Hospizhaus angekommen</field></block></value> <next><block type="comment" id="?sNIAhFxTc9AD@(?WBPk"><field name="COMMENT">Alexa Küche</field> <next><block type="control" id="?laydH={-IWR1R|YgP0E"><mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">5</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="pjF`6.ACM%Ug=,`gWhge"><field name="TEXT">Kerstin ist im Hospizhaus angekommen</field></block></value> <next><block type="comment" id="dgyqHAJmK~mZotTJX[uI"><field name="COMMENT">Alexa Badezimmer</field> <next><block type="control" id="WGO}U[QqBdjdy]},h(.j"><mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">9</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="SHld[@^@R64a2Ia3^s7S"><field name="TEXT">Kerstin ist im Hospizhaus angekommen</field></block></value> <next><block type="comment" id="Q/;.*]`G`W[eMa@H!D*V"><field name="COMMENT">Alexa Flur</field> <next><block type="control" id="NInZP;%#?^MCnm}y4;}O"><mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">14</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="[MjUIQ)EFLXzGjg=tVbT"><field name="TEXT">Kerstin ist im Hospizhaus angekommen</field></block></value> <next><block type="comment" id="bTA##0|U:Auu)elNaa4k"><field name="COMMENT">Alexa Keller Flur</field> <next><block type="control" id="YPgoCt(v:yQc^x%Hx~y."><mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">19</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="hhC1fIHh}WY_d1,0/UFP"><field name="TEXT">Kerstin ist im Hospizhaus angekommen</field></block></value> <next><block type="comment" id="s?i^Cs+!ICwkF3}:Xe#Q"><field name="COMMENT">Alexa Werkstatt</field> <next><block type="control" id=".G`rL6lPB![mv|reTkRc"><mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">24</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="ZF9kdoopk2I)VL;qe^HZ"><field name="TEXT">Kerstin ist im Hospizhaus angekommen</field></block></value> <next><block type="control" id="g6rc;3bWT|0PQbb?u^=!"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Eigene_Datenpunkte.Anwesenheit.Kerstin.Home.Kerstin_Home</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="qJp]w4}8B9y;9R2lNeny"><field name="BOOL">FALSE</field></block></value> <next><block type="comment" id="z?4}_idqbxEQdW;}Pwh3"><field name="COMMENT">Kerstin unterwegs</field></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement> <value name="IF2"><block type="logic_operation" id="A)@Zl;%!#uVxbAoh_NFa" inline="false"><field name="OP">AND</field> <value name="A"><block type="logic_compare" id="b-HcB~bSo0TO8k}Mmqd1"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="!?4-(Ca#-KSIgGJk,^,2"><field name="ATTR">val</field> <field name="OID">google-sharedlocations.0.fence.Kerstin-Home</field></block></value> <value name="B"><block type="logic_boolean" id="Dz*=r{,nneZZL4l|qo{E"><field name="BOOL">FALSE</field></block></value></block></value> <value name="B"><block type="logic_compare" id=":A9h*tQAu7V)q5b{=lwO"><field name="OP">EQ</field> <value name="A"><block type="get_value" id="jty?ADDq;%]FihZr|RNa"><field name="ATTR">val</field> <field name="OID">google-sharedlocations.0.fence.Kerstin-Arbeit</field></block></value> <value name="B"><block type="logic_boolean" id="KcJr:n2Vtutp%3RCoj{q"><field name="BOOL">FALSE</field></block></value></block></value></block></value> <statement name="DO2"><block type="control" id="%l?B5:MZ?t00_Tn/o1P)"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Eigene_Datenpunkte.Anwesenheit.Kerstin.Home.Kerstin_Home</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="-kA4e]Jv2[k?(toYp/*J"><field name="BOOL">FALSE</field></block></value> <next><block type="control" id="Xhe7-?z57AkHpWo;:eF~"><mutation delay_input="false"></mutation> <field name="OID">javascript.0.Eigene_Datenpunkte.Anwesenheit.Kerstin.Arbeit.Kerstin_Arbeit</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"><block type="logic_boolean" id="JXs5XBydU/!Kd8%{Tp/F"><field name="BOOL">FALSE</field></block></value> <next><block type="telegram" id="Xibfd(++0;.8nZ-,OUkT"><field name="SILENT">FALSE</field> <field name="PARSEMODE">default</field> <value name="MESSAGE"><shadow type="text" id="`C3S5p0.YpsmfeT~MKgA"><field name="TEXT">Kerstin ist unterwegs !</field></shadow></value> <next><block type="comment" id="FP{|jaoT|#[p[#}A9gzL"><field name="COMMENT">Alexa Wohnzimmer</field> <next><block type="control" id="9ha9)d~dk#Om-ExdsyA("><mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">1</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="HnvK,-`Nv}ao[m}N_l=L"><field name="TEXT">Kerstin ist unterwegs</field></block></value> <next><block type="comment" id=";@e7)e#5X^wP*`y%y`b|"><field name="COMMENT">Alexa Küche</field> <next><block type="control" id="yR5^N3b[-FP`5*L^[=_K"><mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">5</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="/I%!,YTX=V|(n*MnDVd;"><field name="TEXT">Kerstin ist unterwegs</field></block></value> <next><block type="comment" id="-BGFt:nt+1t_8mV[T*xW"><field name="COMMENT">Alexa Badezimmer</field> <next><block type="control" id="%rJ_CZReXYBbrX2;J;3."><mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">9</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="uC`6?3m1xhMfM2QT:D|)"><field name="TEXT">Kerstin ist unterwegs</field></block></value> <next><block type="comment" id="w#D*sGLaprO1q5i4{z,u"><field name="COMMENT">Alexa Flur</field> <next><block type="control" id="`PFzn.:cr#!K6APbhtW1"><mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">14</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="7qo:{A[b*Y2KNe#u`PX2"><field name="TEXT">Kerstin ist unterwegs</field></block></value> <next><block type="comment" id="vC508CSW@T6:xvuT~:08"><field name="COMMENT">Alexa Keller Flur</field> <next><block type="control" id="M00DCOie+*Shv5t)q(K{"><mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">19</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="F.=6x.UCFBRGtD]G^*4{"><field name="TEXT">Kerstin ist unterwegs</field></block></value> <next><block type="comment" id="jsdoph,j!Rgzfmk)F,R~"><field name="COMMENT">Alexa Werkstatt</field> <next><block type="control" id="4.!BK/fxsoa/loA?!c;9"><mutation delay_input="true"></mutation> <field name="OID">alexa2.0.Echo-Devices.xxx.Commands.speak</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">24</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"><block type="text" id="_cJ,JW~36+wJj?:H|MNf"><field name="TEXT">Kerstin ist unterwegs</field></block></value></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block></next></block></statement></block></xml>
Ob Du das Blockly importieren kannst weiß ich nicht, geht wahrscheinlich nur wenn auch der Adapter google shared location installiert ist.
-
Super, vielen Dank! Das werde ich mir mal ansehen - ich bin jetzt auch nicht zwingend auf ifttt festgenagelt, ich brauche nur was, was nicht nur über WLAN funktioniert. TR64 hat bei mir zu viele Fehlalarme produziert. Den google sharedlocations Adapter kannte ich noch gar nicht.
-
Aber vielleicht hilft Dir folgendes. Ich habe mir mehrere Datenpunkte erstellt, in meinem Fall nur für 2 Personen, also für meine Frau und für mich. (Diese Datenpunkte nur in ein leeres neues Javascript kopieren, Deine Namen anpassen und einmal ausführen, dann sind die Datenpunkte erstellt.) `
So, kurzer Zwischenstand: Du hast mir sehr geholfen, Danke
den Blockly-Code konnte ich (auch mit installiertem google shared location Adapter) zwar nicht importieren, aber die beiden Code-Schnipsel und der Screenshot haben mir geholfen, das ganze zu verstehen, sodass ich mir aus den Einzelteilen jetzt was funktionierendes gebaut habe. Bin aber jetzt mal bei ifttt geblieben, da in dem Thread über google shared location gerade von einigen Problemen berichtet wird.
Vielleicht für alle anderen, die den Thread hier lesen und ähnliche Probleme haben (korrigiert mich, falls ich was falsch verstanden habe): eines meiner Probleme war, dass das ursprüngliche Script von Pandia Datenpunkte nutzt, die standardmäßig nicht existieren (javascript.0.Anwesenheit_Handy1, javascript.0.Anwesenheit_Handy2, javascript.0.Anwesenheit). Wenn man die z.B. mit Hilfe eines Scripts wie dem ersten von dslraser anlegt und außerdem die Einstellungen wie in https://forum.iobroker.net/viewtopic.php?p=138835#p138835 ändert, funktioniert es. Diese Infos fehlten mir im ursprünglichen Post und waren mir als Anfänger nicht klar. Damit konnte ich mir jetzt auch noch ein paar weitere Blocklys basteln und bin einen guten Schritt weiter gekommen
Ich vermute, dass das von exitus beschriebene Problem auch damit zu tun hat, dass die entsprechenden Datenpunkte nicht existieren.
-
ja, ist genau so wie Du schreibst. Im ersten Script wird wohl von existierenden/angelegten Datenpunkten ausgegangen.
PS: wegen dem Import des Blockly. Hast Du den Telegram Adapter und Alexa2 Adapter installiert ?
Import geht immer nur wenn auch die Adapter die im Blockly verwendet werden vorhanden sind, sonst endet es oft mit einem schwarzen Punkt in der Anzeige nach dem Import.
Aber schön das Du weiter gekommen bist.
-
Ah, OK. Telegram habe ich nicht, Alexa2 habe ich seit eben, aber zum Zeitpunkt des Imports noch nicht
Aber da ich jetzt erstmal bei ifttt geblieben bin, konnte ich ja jetzt, nachdem ich mit deinem ersten Script die Datenpunkte angelegt hatte, auch das ursprüngliche Script von Pandia verwenden. Ich habe mir jetzt auch mal am Beispiel deines zweiten Blockly-Scripts eine Sprachausgabe über Alexa angelegt und glaube ich habe das System von Blockly ein bisschen besser verstanden (bin leider ziemlicher Programmier-Anfänger).
-
In der Adapterkonfiguration unter dem Reiter „Service und IFTTT“ muss der IFTTT Key eingetragen werden. Im Gegenzug muss bei der Definition des Web-Request der IFTTT Link des jeweiligen Cloud Adapters angegeben werden. Beachtet bitte, dass pro Handy/Person eine separate Cloud Instanz sowie IFTTT Anmeldung erforderlich ist. `
Sicher das pro Handy ein extra IFTTT Account sowie Cloud-Account und Adapter benötigt wird?
Ich meine den IFTTT-Key benötigt man nur um Daten ZU IFTTT zu senden, weil der IFTTT-Key ja nur in der URL für den Webhook VON ioBroker ZU< IFTTT steht.
Um Daten VON IFTTT zu bekommen hat man den APP-KEY vom Cloud Adapter, weil der APP-KEY vom Cloud Adapter steht ja nur in der URL in der man die Daten VON IFTTT ZU schickt.
Hatte meinen IFTTT-Key mal probehalber raus genommen und konnte trotzdem Daten von IFTTT empfangen. Umgekehrt geht es ja nicht weil ohne Cloud-Adapter KEY ja der Cloud Adapter nicht online geht.
Daten VON ioBroker ZU IFTTT:
https://maker.ifttt.com/trigger/{event}/with/key/
Daten VON IFTTT ZU ioBroker:
https://iobroker.net/ifttt/<cloud-adapterkey></cloud-adapterkey>
Wenn man also nur Daten ZU ioBroker senden will, kommt man mit einem Cloud Adapter aus. Auf mehren Handys einen IFTTT Account zu nutzen geht nicht. Es sind dann ja auf allen Handys die gleichen Applets drauf. Wenn dann also Person 1 das Haus verlässt, wird
Location: Person 1, abwesend
gesendet. Wenn dann später Person 2 das Haus verlässt, wird nochmal
Location: Person 1, abwesend
gesendet weil wie gesagt die Applets ja auf beiden Handys sind. Aber pro Handy einen IFTTT Account macht ja durchaus Sinn da man vielleicht verschiedene Orte (Arbeitsplatz, Bekannte usw.) hat und die andere Person die Applets nicht ändern kann.
Man muss die Daten dann nur genau zuordnen. Evtl nach diesem Schema:
<dienst>: <person>, <status> Location: Frau, anwesend</status></person></dienst>
Wenn man aber Daten ZU IFTTT zu zwei verschiedenen Accounts senden will, kommt man um einen zweiten Cloud Adapter und Account nicht drum rum.
-
Ich benutze diesen Ansatz auch schon seit längerem.
Leider ist die Kette Handy->ifttt-> Biobroker cloud -> iobroker lang und die Latenz variiert bei mir sehr stark.
Schnelle Reaktion z.B. Öffnen der Garage, Einschalten eines Begrüßungslicht funktionieren gar nicht.
Entweder muss ich den Radius meiner HomeZone super groß machen oder das Licht/Garage ist aus/zu.
Außerdem ist es erforderlich, dass das Internet in der Nähe es Hauses funktioniert, und das ist bei mir in meiner Ferienwohnung auf dem Land mit O2 als Provider leider nicht der Fall.
Ein weitere Nachteil ist, dass es immer wieder vorkommt, dass ifttt nicht mehr im Hintergrund läuft. Das passiert vorallen Dingen auf dem iPhone meiner Frau. Auch bei einem Neustart wird der ifttt App nicht geladen. Da meine Frau ein Technologieverweigerer ist, kann ich sie nicht dazu bewegen, hier manuell nachzuhelfen. Damit funktioniert die Anwesenheitsteuerung leider unzuverlässig.
Alles im allen ein Ansatz, der sich nur für zeitunkritische Anforderungen eignet und dazu auch noch etwas unzuverlässig ist.
In anderen Foren hatte ich gelesen, dass Leute den Ifttt Ansatz mit parallelen Ansätzen kombinieren, z.B. Ping auf Wifi oder Bluetooth.
Alle Ansätze erhöhen wohl etwas die Zuverlässigkeit, aber nicht das Latenzproblem. Sie haben allerdings den Nachteil, dass die Code Komplexität steigt.
Außerdem brauch es Heuristiken, die bei widersprüchlichen Messungen, den vermutlich richtigen Status ermitteln.
Alles ziemlich aufwändig für relativ geringen Nutzen.
Was mich auch interessieren würde, wären Eure Use Cases für (personenspezifische) Anwesenheit. Ich habe folgende Use Cases
1. Spielerei: Begrüßung beim Hereinkommen und Durchsage von Events in der Abwesenheit (z.B. Anrufe, bestimmte Errinnerungen Geburtstag und anderes )
2. Abschalten der Heizung von Räumen, die personenspezifisch genutzt werden.
3. Anschalten von Weihnachtsbeleuchtung nur bei Anwesenheit.
4. in meiner Ferienwohnung:
-
Mitführen einer Belegungsstatistik. Wer hat, wann, wie lange die Ferienwohnung genutzt.
-
Herunterregeln der Heizung, der Außenanlagenstromversorung und meiner Wifi Lautsprecher im Haus, wenn Abwesenheit länger als 24 h.
-
Abschalten des Wlan meiner Fritzbox
.
Ansonsten ist mir nicht viel eingefallen, was ich mit einer (personenspezifischen) Anwesenheit steuern könnte.
-