NEWS
Idee gesucht: Abwesenheitskontrolle mit Blocky
-
Danke einmal.
Der Teil mit dem Handy ist soweit kein Problem, was mir generell Probleme macht ist das Konzept von JavaSkript das immer durchläuft und nicht wartet. Mit dem Konzept hatte ich schon vor 30 Jahren in der Schule mit SPS Probleme.
In "normalen" Programmiersprachen würde ich etwas so schreiben:
Wenn Tür von Offen auf Geschlossen wechselt setzte Flag warte 10 Minuten Wenn Flag noch gesetzt ist setze Abwesenheit
Wenn Ping positiv lösche Flag
Mein Problem ist das "warte 10 Minuten" `
Hi falls es dir etwas nützt ich habe es so gelöst.Grüße
var tuerkontakt = "hm-rpc.1.LEQ1086061.1.STATE"/*Türschloss Eingang.STATE*/; /*Hier die ID des Türkontakts eintragen*/ var anwesenheit = "javascript.0.Alarmanlage.in.auto"/*Alarmanlage.in.anwesenheit*/; /*Hier die ID der Anwesenheitsvariable eintragen*/ var min = 15; /*Hier die Zeitspanne der aktiven Abwesenheitserkennung nach Türschließung*/ var inrange = false; /*Falls kein Türkontakt vorhanden auf true setzen*/ on(tuerkontakt, function(obj) { if (obj.newState.val === false) { inrange = true; setTimeout(function() { inrange = false; }, min * 60 * 1000); } }); on("javascript.0.Anwesenheitssteuerung.Userlist.JemandDa"/*Anwesenheit alle User*/, function(obj) { if (obj.newState.val === false) { if (inrange === true) { setState(anwesenheit,false); } else { log("Anwesenheit Userliste 0 nach Zeit abgelaufen setze Anwesenheit auf 0", "warn"); } } if (obj.newState.val === true) { setState(anwesenheit,true); } });
-
Mache das auch ueber den tr64 Adapter… Löse das mit nem Javascript und nem timer der loslauft.. Wenn niemand da läuft Zeit... Wenn irgend ein handy wieder erreichbar wird der timer zurueckgesetzt... Wenn länger als 15 min der timer nicht zurueck gesetzt wird dann wird der state niemand zu hause erst gesetzt. Das verhindert fehlschaltungen zuverlässig. Wird irgend ein Handy erkannt wird der state wieder zurueck gesetzt.
Das funktioniert fehlerfrei mit meinem p20pro dem iPhone 6 und Samsung s5mini... Keine Fehler bei der abwesenheitserkennung..
Alarm deaktivieren tue ich damit aber nicht... Dauert mir zu lange bis die Handys wieder im netz sind... Und so lange verzoegere ich den alarm nicht...
Mache das deaktivieren ueber handsender oder vis.. Anzeige ob Anlage scharf mach ich mit ner LED an der Sirene und rgbw am Briefkasten... Die Bewohner wissen also immer beim heim kommen wie der Status ist.
Gesendet von meinem CLT-L09 mit Tapatalk
-
> Mache das auch ueber den tr64 Adapter… Löse das mit nem Javascript und nem timer der loslauft.. Wenn niemand da läuft Zeit... Wenn irgend ein handy wieder erreichbar wird der timer zurueckgesetzt... Wenn länger als 15 min der timer nicht zurueck gesetzt wird dann wird der state niemand zu hause erst gesetzt. Das verhindert fehlschaltungen zuverlässig. Wird irgend ein Handy erkannt wird der state wieder zurueck gesetzt.
@smartboart:genau dieses Szenario versuche ich gerade abzubilden. Könntest du bitte eventuell dieses Script zur Verfügung stellen?
Danke!
-
Hi,
ich habe dem TR064 Adapter verwendet und frage unsere 4 Handys als Geräte abgefragt und dann weiter mit Blockly (bisher Proof-of-Concept);
Anwesenheit.png
Der Plan ist alle 15 Minuten alle 4 Handys mit Oder-Verknüpfung abzufragen. Wenn alle 4 Geräte nicht da sind kann ich davon ausgehen, es ist niemand zu hause. Später soll dann Anstatt dem Pushover eine Sprachnachricht erfolgen (als Warnung im Haus) und dann wird die Alarmanlage (über CCU2) aktivieren.
Ich sende mal den Code wenn ich damit fertig bin… `
wieso alle 15 min? Prüfe doch einfach wenn einer "active" wird bzw. "inaktiv"…..Dann brauch es den Zeitintervall nicht und es spart Ressourcen
-
Also meine Abwesenheitskontrolle mit dem TR64 Adapter funzt nicht sehr gut. Habe jetzt mehrere Wochen getestet und habe aus Testzwecken einfach nen kleines Blockly script erstellt was halt sagt ob mein Handy "aktiv" oder "inaktiv" ist bzw mit dem Router verbunden ist.
Tja pustekuchen, trotz das ich zuhause sitze kommt plötzlich eine Pushnachricht in Telegram ich bin Abwesend und je nach Aktualisierungsintervall kommt dann halt z.b. nach 120 Sekunden (Weil das der Aktualisierungsintervall ist, der im TR64 Adapter eingstellt ist) die Meldung ich bin doch wieder aktiv.
Und das Szenario spielt sich dann leider den ganzen Tag mal mehr und mal weniger ab. Habe jetzt mal den Intervall ein wenig höher gestellt auf 200 Sekunden.. ich weiß noch nicht ob ich damit spielen muss, und werde es nochmal ein paar Tage mit rumspielen der Werte testen.
-
Ich habs auch ne Weile mit dem anpingen der Smartphones probiert .. damit war ne ordentliche Anwesenheitserkennung bei uns nicht möglich. Seit einem guten Monat haben wir jetzt G-Tags mit dem Radar Adapter im Einsatz, was bisher ohne Probleme funktioniert. Das Ganze läuft aktuell noch auf einem RPi 3 b+ mit dem internen BT. Empfang ist so gut wie im ganzen Haus gegeben .. außer an zwei/drei abgelegenen Ecken, wo auch keine Schlüssel/Jacken abgelegt werden. Ich kann daher diese Lösung klar empfehlen, zumal die G-Tags weder übermäßig teuer noch störend am Schlüsselbund sind.
-
Ich kann daher diese Lösung klar empfehlen, zumal die G-Tags weder übermäßig teuer noch störend am Schlüsselbund sind. `
Moin, welche G-Tags sind das denn wenn man mal fragen darf -
Ich kann daher diese Lösung klar empfehlen, zumal die G-Tags weder übermäßig teuer noch störend am Schlüsselbund sind.
Moin, welche G-Tags sind das denn wenn man mal fragen darf :)
Moin,
also ich nutze diese hier:
https://www.amazon.de/Gigaset-G-tag-Sch … B00SJEBI1Y
Die Bewertungen bei A****on sind zwar schlecht, aber für die Anwesenheitserkennung funktionieren die bei mir wirklich erstklassig.
-
Ich kann daher diese Lösung klar empfehlen, zumal die G-Tags weder übermäßig teuer noch störend am Schlüsselbund sind.
Moin, welche G-Tags sind das denn wenn man mal fragen darf :)
Moin,
also ich nutze diese hier:
https://www.amazon.de/Gigaset-G-tag-Sch … B00SJEBI1Y
Die Bewertungen bei A****on sind zwar schlecht, aber für die Anwesenheitserkennung funktionieren die bei mir wirklich erstklassig. `
Mit dem Bluetooth Adapter? Oder wie hast Du das in ioBroker integriert?
Edit: mit Radar Adapter…..(wer lesen kann ist im Vorteil ;))
-
Ich kann daher diese Lösung klar empfehlen, zumal die G-Tags weder übermäßig teuer noch störend am Schlüsselbund sind.
Moin, welche G-Tags sind das denn wenn man mal fragen darf :)
Moin,
also ich nutze diese hier:
https://www.amazon.de/Gigaset-G-tag-Sch … B00SJEBI1Y
Die Bewertungen bei A***on sind zwar schlecht, aber für die Anwesenheitserkennung funktionieren die bei mir wirklich erstklassig. `
Danke für die Info. Naja die Bewertungen bei A und auch diversen anderen Shops sollte man eh nicht sonderlich beachten, wirdviel Müll geschrieben.
-
@mikiline Genau .. mit dem Radar Adapter. Einfach die MAC Adresse der G-Tags auslesen und beim Radar Adapter entsprechend eintragen. Ich hatte testweise bei mir aufm Tablet die App von den G-Tags (Keeper) installiert. Wenn die App aktiv ist, verlieren die G-Tags irgendwie die Verbindung zum Raspi/ioBroker .. keine Ahnung wieso.
Hier ne Anleitung, wie man die MAC der G-Tags auslesen kann: https://hausautomatisierung-koch.de/tag/g-tag/
@Nashra: Stimmt .. zumal ich in diesem Fall die G-Tags ja auch nicht für ihren ursprünglich gedachten Zweck benutze .. von daher sind die Bewertungen nicht relevant.
-
radar erkennt die G-Tags auch als unbekannt und dann schreibt man sie halt um … und die aktuelle version scheint sich auch verbessert zu haben ... bis jetzt habe ich mit der neuen version keine probleme mit der erkennung ( ok, das update ist glaube ich drei tage alt ...) und das ist für mich genau der weg den ich wollte... die erkennungszeit anwesend ist ok und bei abwesend ist es mir egal ob das licht 1 minute früher oder später ausgeht...
der aufstellungsort für den orange pi ( der nur radar machen wird ) wird zentral im flur sein also ist alles "gut" - irgendwo da liegen die schlüssel immer .
und da WLAN bei den handys (egentlich )immer an ist kommt das zweite anwesenheits-flag ggf von der fritzbox .....doch da überlege ich noch ob ich das brauche
nachtrag: klar das ein PI eigentlich zu schwach für iobroker ist ....
-
> Mache das auch ueber den tr64 Adapter… Löse das mit nem Javascript und nem timer der loslauft.. Wenn niemand da läuft Zeit... Wenn irgend ein handy wieder erreichbar wird der timer zurueckgesetzt... Wenn länger als 15 min der timer nicht zurueck gesetzt wird dann wird der state niemand zu hause erst gesetzt. Das verhindert fehlschaltungen zuverlässig. Wird irgend ein Handy erkannt wird der state wieder zurueck gesetzt.
@smartboart:genau dieses Szenario versuche ich gerade abzubilden. Könntest du bitte eventuell dieses Script zur Verfügung stellen?
Danke! `
Sorry den Beitrag nicht weiter verfolgt…Aber besser spät als nie...
ich löse das so....funktioniert prima! ganz simpel.
createState('javascript.0.Anwesenheitssteuerung.BewohnerAnwesend', {def: 'true', type: 'boolean', name: 'Bewohner Anwesend - jemand Da'}); const id1 = 'tr-064.0.devices.PC-192-168-xx-xx.active';//Mustermann const id2 = 'tr-064.0.devices.PC-192-168-xx-xx.active';//Musterfrau const id3 = 'tr-064.0.devices.PC-192-168-xx-xx.active';//Mustergast const id4 = 'javascript.0.Anwesenheitssteuerung.BewohnerAnwesend'; function Anwesend() { var Mustermann = getState(id1).val; var Musterfrau = getState(id2).val; var Mustergast = getState(id3).val; var BWA = getState(id4).val; if(Mustermann===false&&Musterfrau===false&&Mustergast===false&&BWA===true) { setStateDelayed('javascript.0.Anwesenheitssteuerung.BewohnerAnwesend', false, 180*1000);//3 min Zeit bis niemand zu Hause sicher erkannt log('Es ist niemand zu Hause'); } else { if(Musterfrau===true||Mustermann===true||Mustergast===true) { clearStateDelayed('javascript.0.Anwesenheitssteuerung.BewohnerAnwesend');//wenn innerhalb 3 min wieder aktiv wird timer zurück gesetzt setState('javascript.0.Anwesenheitssteuerung.BewohnerAnwesend', true); log('Es ist jemand zu Hause'); } } } on({id:"tr-064.0.devices.PC-192-168-xx-xx.active", change: 'ne'},function(obj){ //on(id1, function(dp) { Anwesend(); }); on({id:"tr-064.0.devices.PC-192-168-xx-xx.active", change: 'ne'},function(obj){ //on(id2, function(dp) { Anwesend(); }); on({id:"tr-064.0.devices.PC-192-168-xx-xx.active", change: 'ne'},function(obj){ //on(id3, function(dp) { Anwesend(); });
Weitere scripte die den state weiter verarbeiten trigger ich mit change ne
-
> Mache das auch ueber den tr64 Adapter… Löse das mit nem Javascript und nem timer der loslauft.. Wenn niemand da läuft Zeit... Wenn irgend ein handy wieder erreichbar wird der timer zurueckgesetzt... Wenn länger als 15 min der timer nicht zurueck gesetzt wird dann wird der state niemand zu hause erst gesetzt. Das verhindert fehlschaltungen zuverlässig. Wird irgend ein Handy erkannt wird der state wieder zurueck gesetzt.
@smartboart:genau dieses Szenario versuche ich gerade abzubilden. Könntest du bitte eventuell dieses Script zur Verfügung stellen?
Danke! `
Sorry den Beitrag nicht weiter verfolgt…Aber besser spät als nie...
ich löse das so....funktioniert prima! ganz simpel.
createState('javascript.0.Anwesenheitssteuerung.BewohnerAnwesend', {def: 'true', type: 'boolean', name: 'Bewohner Anwesend - jemand Da'}); const id1 = 'tr-064.0.devices.PC-192-168-xx-xx.active';//Mustermann const id2 = 'tr-064.0.devices.PC-192-168-xx-xx.active';//Musterfrau const id3 = 'tr-064.0.devices.PC-192-168-xx-xx.active';//Mustergast const id4 = 'javascript.0.Anwesenheitssteuerung.BewohnerAnwesend'; function Anwesend() { var Mustermann = getState(id1).val; var Musterfrau = getState(id2).val; var Mustergast = getState(id3).val; var BWA = getState(id4).val; if(Mustermann===false&&Musterfrau===false&&Mustergast===false&&BWA===true) { setStateDelayed('javascript.0.Anwesenheitssteuerung.BewohnerAnwesend', false, 180*1000);//3 min Zeit bis niemand zu Hause sicher erkannt log('Es ist niemand zu Hause'); } else { if(Musterfrau===true||Mustermann===true||Mustergast===true) { clearStateDelayed('javascript.0.Anwesenheitssteuerung.BewohnerAnwesend');//wenn innerhalb 3 min wieder aktiv wird timer zurück gesetzt setState('javascript.0.Anwesenheitssteuerung.BewohnerAnwesend', true); log('Es ist jemand zu Hause'); } } } on({id:"tr-064.0.devices.PC-192-168-xx-xx.active", change: 'ne'},function(obj){ //on(id1, function(dp) { Anwesend(); }); on({id:"tr-064.0.devices.PC-192-168-xx-xx.active", change: 'ne'},function(obj){ //on(id2, function(dp) { Anwesend(); }); on({id:"tr-064.0.devices.PC-192-168-xx-xx.active", change: 'ne'},function(obj){ //on(id3, function(dp) { Anwesend(); });
Weitere scripte die den state weiter verarbeiten trigger ich mit change ne `
Danke!