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")
}
}
Würde ich mit DOIF machen - geht IMHO einfacher.
kurze Grüße
Niels
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.
ZitatSTATE("LichtWetter")
Ist das neu? Ich benutze
Value("LichtWetter")
.
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
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
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
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 ???
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