FHEM Forum

FHEM => Automatisierung => Thema gestartet von: Gabel88 am 11 Mai 2016, 21:49:52

Titel: Notify mit zwei Bedingungen
Beitrag von: Gabel88 am 11 Mai 2016, 21:49:52
Moin Moin alle zusammen,
meine Hausautomation wird langsam.
Nun muss auch auch Perl mit benutzten aber bekomme es einfach nicht richtig hin.

Ich will wenn mein TV an ist und nun die Sonne untergegangen ist mein Hintergrundlicht angeht.

Das Notify wird auch ausgeführt, (Zeitstempel im State ändert sich )
Nun wird leider nicht der eigentliche Fhem Befiel ausgeführt.

Hab es schon mit diversen Schreibweisen ( die ich hier im Forum und Google gefunden haben)

Nun hoffe ich das mir einer von euch helfen kann.
:) :)
Zitat
(LichtWetter|WZ.Net_Switch_TV) {
my $r1 = STATE("LichtWetter");;
my $r2 = STATE("WZ.Net_Switch_TV");;
if ($r1 eq "11" && $r2 eq "on") {
  fhem("set WZ.1 scene TV_on_sunset")
}
}
Titel: Antw:Notify mit zwei Bedingungen
Beitrag von: Muschelpuster am 11 Mai 2016, 22:23:48
Würde ich mit DOIF machen - geht IMHO einfacher.

kurze Grüße
Niels
Titel: Antw:Notify mit zwei Bedingungen
Beitrag von: rudolfkoenig am 12 Mai 2016, 08:45:36
Falls man bei notify unsicher ist:
- im Event-Monitor die genauen Texte der Events beobachten
- notify mit "Log 1, XXXX" Ausgaben versehen (die Logausgaben kann man neuerdings im Event-Monitor direkt sehen)
- notify mit "trigger device event" ausloesen.

Weiterhin nicht jedem intuitiv (aber in commandref beschrieben): Das notify Regexp prueft auf Device und Device:Event, und dabei wird das Regexp mit ^und $ ergaenzt, d.h. das Regexp muss das ganze Device oder Device:Event-Tupel matchen.
Titel: Antw:Notify mit zwei Bedingungen
Beitrag von: Ellert am 12 Mai 2016, 13:12:27
ZitatSTATE("LichtWetter")
Ist das neu? Ich benutze Value("LichtWetter").
Titel: Antw:Notify mit zwei Bedingungen
Beitrag von: Wernieman am 12 Mai 2016, 13:34:11
Ich persönlich würde es nicht mit DOIF machen (ist das eigentlich eventbasiert oder pollt?) sondern mit einem struct.

z.B. bei mir:
Ein struct über den PC und den Serverseitigen mpd
wenn mpd an oder PC läuft -> Lautsprecher an.

Mal als Beispiel. Ist (für mich persönlich) intuitiver als DOIF


Das Struct
   DEF        room Rechner myMPD
   NAME       Ton
   TYPE       structure
Attributes:
   async_delay 0.5
   clientstate_behavior relative
   clientstate_priority on|On|An|play off|Off|stop

Das Passende Notify:
Internals:
   DEF        Ton sleep 1; set Lautsprecher $EVENT
   NAME       Ton_Notify
   TYPE       notify
Titel: Antw:Notify mit zwei Bedingungen
Beitrag von: Muschelpuster am 12 Mai 2016, 14:38:43
Zitat von: Wernieman am 12 Mai 2016, 13:34:11Mal als Beispiel. Ist (für mich persönlich) intuitiver als DOIF
Wohl wahr - das Thema hatten wir doch gerade  ;)
Think simple - FHEM hat keine Lizenzgebühren in Abhängigkeit der verwendeten Elemente. Also warum das Ganze nicht in mehrere Objekte zerlegen - es ist einfach und auch noch besser im Debugging.

vergessliche Grüße
Niels
Titel: Antw:Notify mit zwei Bedingungen
Beitrag von: Gabel88 am 13 Mai 2016, 22:45:12
Super danke,m für die schnellen Antworten.
Ich hatte leider erst heute Zeit es aus zu Probieren.

Danke @ Eilert
ZitatIst das neu? Ich benutze
Code: [Auswählen]
Value("LichtWetter")
.

Genau das hat geholfen.

Nur für mich zum Verständnis,
DOIF und structure.
Ich habe das bis her so verstanden, das ich etwas mit zwei Bedingungen schalte.
Also ob die eine oder die andere zutrifft.

Ich will ja das geschaltet wird wenn beides gleichzeitig wahr ist.

Oder stehe ich grade komplett auf dem Schlauch
Titel: Antw:Notify mit zwei Bedingungen
Beitrag von: Puschel74 am 13 Mai 2016, 22:50:21
ZitatIch will ja das geschaltet wird wenn beides gleichzeitig wahr ist.
Jetzt wird es interessant.

Sollen beide Bedingungen gleichzeitig wahr sein
oder sollen beide Bedingungen wahr sein
oder soll eine oder die andere wahr sein?

Gleichzeitig geht mWn so einfach nicht.
Beide wahr geht und
die eine oder die andere wahr geht.

Nun musst du dich entscheiden.

Edith:
Wobei sich das ja mit
ZitatAlso ob die eine oder die andere zutrifft.
beisst oder auch widerspricht.

Sollen nun beide wahr sein oder
die eine oder die andere.
Fragen über Fragen  ???
Titel: Antw:Notify mit zwei Bedingungen
Beitrag von: Gabel88 am 13 Mai 2016, 23:55:22
 Danke Puschel74,
ich habe es inzwischen am laufen.

Aber noch mal zur Erklärung.

Es ist eine einfache If mit zwei Bedingungen. Also müssen beide Bedingungen wahr sein.

Mein TV ist an und LichtWetter ist größer 8. (Habe nun da es läuft auch noch etwas dran gebastelt).

Ich Programmiere schon seit Jahren, aber bis nur Maschinenbasiert "C++/Assembler/..")

Nun noch mal für alle das funktioniere Notify

Zitat(LichtWetter|WZ.Net_Switch_TV) {
my $r1 = Value("LichtWetter");;
my $r2 = Value("WZ.Net_Switch_TV");;
if ($r2 eq "On" && $r1 > "8") {
  fhem("set WZ.1 scene TV_on_sunset")
}
}

Danke an Alle ;D ;D ;D