FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Michi240281 am 05 August 2015, 13:07:53

Titel: HarmonyHUB in watchdog einbauen
Beitrag von: Michi240281 am 05 August 2015, 13:07:53
Hallo zusammen,

aktuell nutze ich folgende Funktion, um beim Heimkommen abends verschiedene Dinge zu erledigen:

Haustuer:offen 00:15:00 DM500HD.*:an IF (($hms gt "21:00" or $hms lt "04:00")  and [DM500HD:power] eq "off" and [Anlage_Status:state] eq "unscharf") (set Anlage_Scharf ein, set Flurlicht pct 40 180, set Alle_Steckdosen_EG aus, setstate Alarmanlage_auto_intern_nachts_an_nach_Abwesenheit defined) ELSE (setstate Alarmanlage_auto_intern_nachts_an_nach_Abwesenheit defined)

Meine Frage nun:

Wie müsste ich das regexp nach der Zeitangabe umändern, damit auf den HarmonyHUB geschaut wird? Der HarmonyHUB hat 3 activities:

Dreambox
FireTV
PS3

und dann natürlich noch "PowerOff". Kann ich das regexp irgendwie so schreiben, dass es "ne PowerOff" als Trigger nimmt?

Besten Dank für Eure Tipps!
Titel: Antw:HarmonyHUB in watchdog einbauen
Beitrag von: Paul am 05 August 2015, 23:26:00
Warum willst Du auf den HUB schauen? Willst ihn starten?
Titel: Antw:HarmonyHUB in watchdog einbauen
Beitrag von: Michi240281 am 06 August 2015, 11:51:01
Weil es ja sein kann, dass ich z.B. am FireTV schaue! Dann soll die Anweisung ja nicht durchgeführt werden.

Bezwecken will ich mit dem watchdog ja folgendes:

Bislang:

Wenn man abends heim kommt (Tür offen) und man nicht innerhalb von 15 Minuten die Dreambox startet, wird quasi erkannt, dass man direkt ins Bett gehen wird. Dann folgt die Aktivierung der Alarmanlage etc.!

Da das ganze ja nur funktioniert hat, wenn die Dreambox eingeschaltet wurde (oder auch nicht) und ich seit ner Weile den HarmonyHUB habe, kann ich damit ja auch auf die Geräte FireTV und PS3 schauen.
Titel: Antw:HarmonyHUB in watchdog einbauen
Beitrag von: Paul am 06 August 2015, 13:58:15
Zitat von: Michi240281 am 05 August 2015, 13:07:53

Kann ich das regexp irgendwie so schreiben, dass es "ne PowerOff" als Trigger nimmt?


genau so würde cích es dann machen.
Titel: Antw:HarmonyHUB in watchdog einbauen
Beitrag von: Michi240281 am 07 August 2015, 15:08:42
Ok, und wie (syntaxmäßig)?
Titel: Antw:HarmonyHUB in watchdog einbauen
Beitrag von: volschin am 07 August 2015, 17:12:01
Trigger heißt immer eine Zustandsänderung. Wenn also dein Hub schon auf PowerOff steht, tut sich da nichts. Du könntest also einfach .* nehmen und wenn Du noch irgendwas schaltest, zieht es.
Titel: Antw:HarmonyHUB in watchdog einbauen
Beitrag von: Wuppi68 am 07 August 2015, 17:32:05
habe mal meinen DEF Part aus dem DOIF angehängt, so kann man die Activities abfragen


([harmony.hub.1:currentActivity] eq "TV" or [harmony.hub.1:currentActivity] eq "NETZWERKPLAYER" or [harmony.hub.1:currentActivity] eq "BLUE RAY" or [harmony.hub.1:currentActivity] eq "DVD" or [harmony.hub.1:currentActivity] eq "ONLINE RADIO") (set lw12.tv on, set lw12.tv rgb 544E03) DOELSE ( set lw12.tv off)
Titel: Antw:HarmonyHUB in watchdog einbauen
Beitrag von: Michi240281 am 09 August 2015, 13:08:04
Danke für Eure Rückmeldungen! Das mit den DOIF Abfragen kenne ich, nutze ich in zahlreichen DOIFs, aber ich wollte ja an sich das ganze in dem watchdog einbauen! Aber ich glaube das ist nicht so einfach und dann werde ich das ganze einfach mit DOIF umsetzen und dann Timer setzen!
Titel: Antw:HarmonyHUB in watchdog einbauen
Beitrag von: Damian am 09 August 2015, 13:16:31
Zitat von: Michi240281 am 09 August 2015, 13:08:04
Danke für Eure Rückmeldungen! Das mit den DOIF Abfragen kenne ich, nutze ich in zahlreichen DOIFs, aber ich wollte ja an sich das ganze in dem watchdog einbauen! Aber ich glaube das ist nicht so einfach und dann werde ich das ganze einfach mit DOIF umsetzen und dann Timer setzen!

Ein Wait in einem DOIF-Modul ersetzt einen Watchdog. Die Verzögerung wird automatisch gelöscht, wenn eine andere Bedingung zuschlägt.

Gruß

Damian
Titel: Antw:HarmonyHUB in watchdog einbauen
Beitrag von: Michi240281 am 10 August 2015, 17:11:22
Mein DI sieht so aus:

Internals:
   DEF        ([Haustuer:state] eq "open" and [?HarmonyHUB:activity] eq "PowerOff" and [?21:00-04:00] and [Anlage_Status:state] eq "unscharf") (set Anlage_Scharf ein, set Flurlicht pct 40 180, set Alle_Steckdosen_EG aus)
   NAME       Alarmanlage_auto_nachts_an_nach_Abwesenheit
   NR         958
   NTFY_ORDER 50-Alarmanlage_auto_nachts_an_nach_Abwesenheit
   STATE      cmd_2
   TYPE       DOIF
   Readings:
     2015-08-03 00:33:55   cmd_event       Anlage_Status
     2015-08-03 00:33:55   cmd_nr          2
     2015-08-10 07:30:11   e_Anlage_Status_state unscharf
     2015-08-10 10:44:59   e_Haustuer_state closed
     2015-08-03 00:33:55   state           cmd_2
     2015-08-09 21:00:00   timer_1_c1      10.08.2015 21:00:00
     2015-08-10 04:00:00   timer_2_c1      11.08.2015 04:00:00
     2015-08-09 01:37:59   wait_timer      no timer
   Condition:
     0          ReadingValDoIf('Haustuer','state','') eq "open" and ReadingValDoIf('HarmonyHUB','activity','') eq "PowerOff" and DOIF_time($hash->{realtime}{0},$hash->{realtime}{1},$wday,$hms,"") and ReadingValDoIf('Anlage_Status','state','') eq "unscharf"
   Days:
   Devices:
     0           Haustuer Anlage_Status
     all         Haustuer Anlage_Status
   Do:
     0          set Anlage_Scharf ein, set Flurlicht pct 40 180, set Alle_Steckdosen_EG aus
   Helper:
     last_timer 2
     sleepdevice Anlage_Status
     sleeptimer -1
   Internals:
   Itimer:
   Readings:
     0           Haustuer:state Anlage_Status:state
     all         Haustuer:state Anlage_Status:state
   Realtime:
     0          21:00:00
     1          04:00:00
   State:
   Time:
     0          21:00:00
     1          04:00:00
   Timecond:
     0          0
     1          0
   Timer:
     0          0
     1          0
   Timerfunc:
   Timers:
   Trigger:
Attributes:
   group      Alarmanlage
   room       Haus
   wait       900


Problem ist nur, dass wenn die Haustür open wird, ist die Anlage noch nicht unscharf und wenn die Anlage unscharf ist, ist die Tür bereits wieder closed. Daher löst das DI nie aus! Werd mal schauen ob es geht, wenn ich nur die Haustür triggern lasse!

EDIT: Ne, das tuts nicht, weil die Haustür ja nicht 900s lang geöffnet ist, sondern nur kurz geöffnet wird. Gibts nen Attribut, oder sonstiges Helferlein, durch das ich es hinbiegen kann, dass die Haustür nur triggert und danach nicht mehr abgeprüft wird? Ansonsten müsste ich die Haustür wohl nur ein neues DEF anlegen lassen und dort dann den wait-timer setzen?!?
Titel: Antw:HarmonyHUB in watchdog einbauen
Beitrag von: Damian am 10 August 2015, 22:59:03
Zitat von: Michi240281 am 10 August 2015, 17:11:22
Mein DI sieht so aus:

Internals:
   DEF        ([Haustuer:state] eq "open" and [?HarmonyHUB:activity] eq "PowerOff" and [?21:00-04:00] and [Anlage_Status:state] eq "unscharf") (set Anlage_Scharf ein, set Flurlicht pct 40 180, set Alle_Steckdosen_EG aus)



Dann eher:

DOIF ([Haustuer:state] eq "open" and [?21:00-04:00])
  (set Anlage_Scharf ein, set Flurlicht pct 40 180, set Alle_Steckdosen_EG aus)
DOELSEIF ([HarmonyHUB:activity] eq "PowerOff" and [?21:00-04:00])

wait 900


Gruß

Damian
Titel: Antw:HarmonyHUB in watchdog einbauen
Beitrag von: Michi240281 am 10 August 2015, 23:08:50
Ne das ist ja ne ganz andere Logik! Habs jetzt denke ich hinbekommen, mit 1 zusätzlichen DI und einem Dummy!
Titel: Antw:HarmonyHUB in watchdog einbauen
Beitrag von: Damian am 11 August 2015, 07:09:32
Zitat von: Michi240281 am 10 August 2015, 23:08:50
Ne das ist ja ne ganz andere Logik! Habs jetzt denke ich hinbekommen, mit 1 zusätzlichen DI und einem Dummy!

Mein Code-Vorschlag entspricht aber genau deiner Anforderung hier:

ZitatWenn man abends heim kommt (Tür offen) und man nicht innerhalb von 15 Minuten die Dreambox startet, wird quasi erkannt, dass man direkt ins Bett gehen wird. Dann folgt die Aktivierung der Alarmanlage etc.!

Gruß

Damian
Titel: Antw:HarmonyHUB in watchdog einbauen
Beitrag von: Michi240281 am 11 August 2015, 09:49:24
Zitat von: Damian am 11 August 2015, 07:09:32
Mein Code-Vorschlag entspricht aber genau deiner Anforderung hier:

Gruß

Damian

Biste sicher?
Ich verstehe deinen Code-Vorschlag so:

Wenn Haustür abends geöffnet wird (Bedingung 1) oder wenn HarmonyHUB abends aus ist (Bedingung 2) wird das Kommando ausgeführt. Das ist ja was anderes als ich will!

Ich will wenn man abends heim kommt anhand des HarmonyHUB erkennen, ob noch unten ferngesehen oder gespielt wird. Wenn das nicht innerhalb 15 Minuten passiert, beabsichtigt man wohl, ins Bett zu gehn.

Ich habe es jetzt mit folgendem umgesetzt und sollte funktionieren:

define Tuerstatus_heimkommen dummy
attr Tuerstatus_heimkommen group Alarmanlage
attr Tuerstatus_heimkommen room Haus

define Tuerstatus_heimkommen_DI DOIF ([Haustuer:state] eq "open" and [?21:00-04:00]) (set Tuerstatus_heimkommen offen) DOELSE (set Tuerstatus_heimkommen geschlossen)
attr Tuerstatus_heimkommen_DI group Alarmanlage
attr Tuerstatus_heimkommen_DI room Haus
attr Tuerstatus_heimkommen_DI wait 0:1800

define Nachtschaltung_nach_heimkommen DOIF ([Tuerstatus_heimkommen:state] eq "offen" and [HarmonyHUB:activity] eq "PowerOff") (set Anlage_Scharf ein, set Flurlicht 40 180, set Alle_Steckdosen_EG:FILTER=STATE!=aus aus, set Spark_One an)
attr Nachtschaltung_nach_heimkommen group Alarmanlage
attr Nachtschaltung_nach_heimkommen room Haus
attr Nachtschaltung_nach_heimkommen wait 900
Titel: Antw:HarmonyHUB in watchdog einbauen
Beitrag von: Damian am 11 August 2015, 10:13:36
Zitat von: Michi240281 am 11 August 2015, 09:49:24
Biste sicher?
Ich verstehe deinen Code-Vorschlag so:

Wenn Haustür abends geöffnet wird (Bedingung 1) oder wenn HarmonyHUB abends aus ist (Bedingung 2) wird das Kommando ausgeführt. Das ist ja was anderes als ich will!

Dann hast du den Code falsch verstanden. Es bedeutet: wenn die Tür aufgeht werden 15 Minuten später die Kommandos ausgeführt. Wenn innerhalb der 15 Minuten allerdings [HarmonyHUB:activity] eq "PowerOff" zutrifft, geht das Modul in den zweiten Zustand, der erste (der sich noch im Wartezustand befand) wird unterbrochen und es passiert gar nichts.

Gruß

Damian
Titel: Antw:HarmonyHUB in watchdog einbauen
Beitrag von: Michi240281 am 11 August 2015, 11:19:23
So habe ich es schon verstanden, aber das ist ja nicht die Logik die ich will!

Denn dann würde ja 15 Minuten, nachdem die Haustür aufgeht die Kommandos ausgeführt, OBWOHL unten ferngesehen wird ([HarmonyHUB:activity] ne "PowerOff") und das will ich ja nicht!
Titel: Antw:HarmonyHUB in watchdog einbauen
Beitrag von: Damian am 11 August 2015, 11:45:23
Zitat von: Michi240281 am 11 August 2015, 11:19:23
So habe ich es schon verstanden, aber das ist ja nicht die Logik die ich will!

Denn dann würde ja 15 Minuten, nachdem die Haustür aufgeht die Kommandos ausgeführt, OBWOHL unten ferngesehen wird ([HarmonyHUB:activity] ne "PowerOff") und das will ich ja nicht!

OK. Dann hätte man es im ersten Fall hinzufügen können, aber wenn deine Lösung zufriedenstellend funktioniert, dann ist ja alles ok.

Gruß

Damian
Titel: Antw:HarmonyHUB in watchdog einbauen
Beitrag von: Michi240281 am 11 August 2015, 13:41:29
Das funktioniert ja im übrigen eh nicht, weil die Haustür ja nur kurz "open" ist und dann wieder "closed"! Daher greift die erste Bedingung nicht!

Jepp, meine Lösung ist jetzt prima!

Danke dir trotzdem vielmals!!
Titel: Antw:HarmonyHUB in watchdog einbauen
Beitrag von: Damian am 11 August 2015, 15:16:52
Zitat von: Michi240281 am 11 August 2015, 13:41:29
Das funktioniert ja im übrigen eh nicht, weil die Haustür ja nur kurz "open" ist und dann wieder "closed"! Daher greift die erste Bedingung nicht!

In meiner Version würde es schon funktionieren, ob "closed" oder nicht ist egal. Durch die Angabe des DOELSEIF-Falls würde der Zustand nicht wechseln, wie in deiner ursprünglichen Version nur mit einem DOIF-Fall, dort wird nämlich in den imaginären DOELSE-Fall gewechselt, wenn DOIF-nicht zutrifft. Sobald ein DOELSEIF-Fall vorkommt, passiert das nicht.

Gruß

Damian