Autor Thema: Anwesenheitserkennung und Zeitraum Funksteckdose schalten  (Gelesen 1539 mal)

Offline 0bones

  • New Member
  • *
  • Beiträge: 15
Hallo zusammen,
ich möchte gerne dass eine Funksteckdose aktiviert wird, wenn 1_Handy oder 2_Handy im Status present sind (Präsenzerkennung durch die Fritzbox funktioniert wie im Wiki beschrieben https://wiki.fhem.de/wiki/FRITZBOX). Außerdem soll die Funksteckdose nur in der Zeit zwischen 05:30 und 22:30 durch die Präsenzerkennung aktiviert werden können, nach 22:30 soll keine Aktivierung erfolgen, auch wenn die Geräte da sind.
Ich habe folgenden Befehl versucht, dieser funktioniert aber nicht. Auch wenn ich nur eine Bedingung festlege wird die Dose nicht geschaltet. Wo liegt der Fehler? Wie kann ich den Status z. B. alle 30 Sekunden überprüfen lassen?
define test DOIF ([1_Handy] eq "present" or [2_Handy] eq "present" and [05:30-22:30]) (set Wohnzimmer on) DOELSE (set Wonzimmer off)

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 19678
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Anwesenheitserkennung und Zeitraum Funksteckdose schalten
« Antwort #1 am: 20 April 2018, 23:24:01 »
Hi,
define test DOIF (([1_Handy] eq "present" or [2_Handy] eq "present") and [05:30-22:30]) (set Wohnzimmer on) DOELSE (set Wonzimmer off)
or musst Du separat klammern! http://perldoc.perl.org/perlop.html#Operator-Precedence-and-Associativity

Was meinst Du damit: Auch wenn ich nur eine Bedingung festlege ...  ?

Gruß Otto
« Letzte Änderung: 20 April 2018, 23:29:41 von Otto123 »
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266
Informativ Informativ x 1 Liste anzeigen

Offline 0bones

  • New Member
  • *
  • Beiträge: 15
Antw:Anwesenheitserkennung und Zeitraum Funksteckdose schalten
« Antwort #2 am: 21 April 2018, 06:28:20 »
Danke für die Hilfe. Mit nur einer Bedingung meinte ich, dass ich z. B. den Zeitraum und 2_Handy entfernt hatte um nur 1_Handy als alleinige Bedingung zu haben.
Mittlerweile funktioniert es! Bezüglich der Wiederholungen (soll immer auf Änderungen reagieren) habe ich das Attribut do allways eingefügt.
attr test do always
« Letzte Änderung: 21 April 2018, 08:18:50 von 0bones »

Offline 0bones

  • New Member
  • *
  • Beiträge: 15
Antw:Anwesenheitserkennung und Zeitraum Funksteckdose schalten
« Antwort #3 am: 21 April 2018, 09:26:26 »
Ich habe den Code noch ergänzt, sodass ich Pushover eingebunden habe. Jetzt bekomme ich jedoch ca. alle 10 Sek. eine Benachrichtigung. Ich möchte aber nur bei einer Statusänderung informiert werden, wie lässt sich das bewerkstelligen?
define test DOIF (([1_Handy] eq "present" or [2_Handy] eq "present") and [05:30-22:30]) (set Wohnzimmer on, set pushmsg msg an) DOELSE (set Wohnzimmer off, set pushmsg msg aus)
attr test do always
« Letzte Änderung: 21 April 2018, 09:29:23 von 0bones »

Online Damian

  • Developer
  • Hero Member
  • ****
  • Beiträge: 8803
Antw:Anwesenheitserkennung und Zeitraum Funksteckdose schalten
« Antwort #4 am: 21 April 2018, 10:39:31 »
Ich habe den Code noch ergänzt, sodass ich Pushover eingebunden habe. Jetzt bekomme ich jedoch ca. alle 10 Sek. eine Benachrichtigung. Ich möchte aber nur bei einer Statusänderung informiert werden, wie lässt sich das bewerkstelligen?
define test DOIF (([1_Handy] eq "present" or [2_Handy] eq "present") and [05:30-22:30]) (set Wohnzimmer on, set pushmsg msg an) DOELSE (set Wohnzimmer off, set pushmsg msg aus)
attr test do always

Du willst doch nicht set Wohnzimmer on schalten, wenn es bereits schon auf on war, nur weil z. B. das 2. Handy auf present geht.

Hier ist do always kontraproduktiv.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Offline 0bones

  • New Member
  • *
  • Beiträge: 15
Antw:Anwesenheitserkennung und Zeitraum Funksteckdose schalten
« Antwort #5 am: 21 April 2018, 10:46:11 »
Du willst doch nicht set Wohnzimmer on schalten, wenn es bereits schon auf on war, nur weil z. B. das 2. Handy auf present geht.

Hier ist do always kontraproduktiv.
Da hast Du recht. Welchen Parameter sollte ich dann nehmen, wenn die Steckdose geschaltet werden soll, sobald entweder ein Handy anwesend ist (on) oder beide abwesend sind (off) jedoch nur im definierten Zeitfenster?

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 19678
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Anwesenheitserkennung und Zeitraum Funksteckdose schalten
« Antwort #6 am: 21 April 2018, 10:47:44 »
Moin,

ich denke der Code funktioniert so komplett ohne do always. Probiert?

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266
Informativ Informativ x 1 Liste anzeigen

Offline 0bones

  • New Member
  • *
  • Beiträge: 15
Antw:Anwesenheitserkennung und Zeitraum Funksteckdose schalten
« Antwort #7 am: 21 April 2018, 11:34:58 »
Hab ich probiert. Die Benachrichtigung geht so jetzt auch. Prinzipiell funktioniert es. Aber nicht zu 100%, d.h. beide Handys sind present, ich habe die Dose (über FHEM) 1x manuell ausgeschaltet. Dann geht sie nicht mehr automatisch an, obwohl die Bedingungen dafür erfüllt sind. Stelle ich sie dann manuell an, erhalte ich auch keine Benachrichtigung. Ich werde es beobachten.

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 19678
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Anwesenheitserkennung und Zeitraum Funksteckdose schalten
« Antwort #8 am: 21 April 2018, 12:08:12 »
Du musst jetzt aber schon genau überlegen, was Du willst!
Ich bin davon ausgegangen, Du willst etwas auslösen, wenn etwas passiert - also einer kommt oder geht.

Das Du Zwangsbeleuchtung machen willst wenn einer da ist, egal ob derjenige der schon da war das Licht wieder ausgemacht hat, hast Du nicht gesagt  ;D

Dann kannst Du natürlich Dauerfeuer auf die Lampe geben (kannst Du noch mit event-on-change-reading eindämmen) und musst do always nehmen.
Schau Dir am Besten im Eventmonitor an was passiert, das hilft verstehen.

https://wiki.fhem.de/wiki/Event_monitor

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266

Offline 0bones

  • New Member
  • *
  • Beiträge: 15
Antw:Anwesenheitserkennung und Zeitraum Funksteckdose schalten
« Antwort #9 am: 22 April 2018, 07:38:58 »
Du musst jetzt aber schon genau überlegen, was Du willst!
Ich bin davon ausgegangen, Du willst etwas auslösen, wenn etwas passiert - also einer kommt oder geht.

Das Du Zwangsbeleuchtung machen willst wenn einer da ist, egal ob derjenige der schon da war das Licht wieder ausgemacht hat, hast Du nicht gesagt  ;D

Dann kannst Du natürlich Dauerfeuer auf die Lampe geben (kannst Du noch mit event-on-change-reading eindämmen) und musst do always nehmen.
Schau Dir am Besten im Eventmonitor an was passiert, das hilft verstehen.

https://wiki.fhem.de/wiki/Event_monitor

Gruß Otto
Alles klar. Ich wusste nur nicht, dass die reine Anwesenheit die Zwangsbeleutung ausschließt bzw. verkompliziert. Ich dachte deshalb, einen Fehler in der Programmierung zu haben. Danke an alle Beteiligten!