(GELÖST) Telegram Nachricht bei Heizung Ausfall? Mit DoIf?

Begonnen von misux, 13 Februar 2018, 20:53:44

Vorheriges Thema - Nächstes Thema

misux

Zitatdo always

Ohne do always gilt:Die Befehle eines Bedingungszweiges werden ohne vorherigen Statuswechsel nur einmal ausgeführt.

Das Attribut setzt diese Regel ausser Kraft. Befehle werden wiederholt im bestehenden Status ausgeführt.

Das interne DOELSE entfällt bei DOIF mit einem Zweig.

Wait-Timer werden bei wiederholtem Wahrwerden der Bedingung nicht abgebrochen.

Würde es beuetuen das die ganze Zeit Nachrichten bekomme solange der Wert nicht wieder auf 0 springt?

CoolTux

Zitat von: Otto123 am 14 Februar 2018, 10:19:01
Ich denke mal von der Funktion ist es egal. Er hat einen Eventtrigger. Bei Event 255 wird gesendet. Bei jedem anderen Event wird nicht gesendet und bestenfalls das DOIF zurückgesetzt (da bin ich nicht sicher)

Ich würde do always machen, ich finde die sinnlose Else unlogisch. Aber das ist Ansichtssache.

Gruß Otto

Ist halt die Frage ob er nicht auch informiert werden will wenn die 255 (Fehler) wieder weg ist. Weiß aber nicht ob alle anderen Werte das DOELSE auslösen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Otto123

Nein, das würde bedeuten das jedesmal wenn der Wert 255 ist eine Meldung kommt.

Du hast gar nichts mit 0 eingebaut!!! Du wartest auf einen Event 255 weiter nichts!

Ich bin nicht sicher, es spielt in Deinem Fall eventuell gar keine Rolle!
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Otto123

@CoolTux Ist sein Konstrukt jetzt nicht wie ein notify auf SENSOR_1_Heizung:255 ?

Das löst doch bei 0 auch nicht aus  ;)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

CoolTux

Zitat von: Otto123 am 14 Februar 2018, 10:33:21
@CoolTux Ist sein Konstrukt jetzt nicht wie ein notify auf SENSOR_1_Heizung:255 ?

Das löst doch bei 0 auch nicht aus  ;)

Genau das war ja mein bedenken. Habe aber so lange nichts mehr mit DOIF gemacht das ich mir unsicher war.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

misux


So, ich habe es jetzt etwas angepasst und die Werte etwas umbenannt der Übersichtlichkeit...

([SENSOR_1_Heizung:"OPEN"]) (set Telegram _msg HEIZUNG AUSGEFALLEN!!!) DOELSE (set Telegram _msg HEIZUNG WIEDER OK!!!)

In diesem Fall bekomme ich immer eine Nachricht bei OPEN "HEIZUNG AUSGEFALLEN" und wenn nicht open "HEIZUNG WIEDER OK!!! Und das ist auch gut so.

Wenn  ich DOELSE lösche dann bekomme ich keine "HEIZUNG WIEDER OK" Nachricht!

Was würde denn jetzt, wenn ich ein "do always", vor allem wohin setze, ändern?

Otto123

Zitat von: misux am 14 Februar 2018, 10:55:41
Was würde denn jetzt, wenn ich ein "do always", vor allem wohin setze, ändern?
Nichts - wenn es so funktioniert ist alles gut.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

misux

 ;D Sehr gut! somit bin ich wieder etwas mehr glücklich das etwas funktioniert.. Bin aber noch verflucht weit weg von "ich habe das System FHEM verstanden"  ::)

Otto123

Ich lege jetzt nochmal für mich und Cooltux nach, weil ich es auch verstehen wollte  :D
([SENSOR_1_Heizung:"OPEN"]) triggert das DOIF bei JEDEM Event von SENSOR_1_Heizung und wertet anschließend nur OPEN aus. Die Bedingung wird also wahr bei OPEN und unwahr (DOELSE) bei allem anderem. Also nicht wie bei einem notify auf SENSOR_1_Heizung:OPEN

(["SENSOR_1_Heizung:OPEN"])triggert das DOIF nur auf OPEN von SENSOR_1_Heizung. Die Bedingung wird wahr bei OPEN und niemals unwahr(Die DOELSE spielt überhaupt keine Rolle).
Ohne do always triggert das nur einmal!
Dies ( aber nur mit attr di_Heizung do always) entspräche damit einem notify und trigger SENSOR_1_Heizung:OPEN (was aber viel einfacher wäre)

Kann man selbst mal mit zwei Dummys und dem DOIF durchspielen:
define di_Heizung DOIF ([Dummy1:"on"]) (set Dummy2 $EVENT) DOELSE (set Dummy2 $EVENT)

@misux Wie schon gesagt alles gut für Dich. Ich wollte es nur versuchen zu erklären. Ich will Dich nicht verwirren.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Damian

Es ist so weit alles richtig, bis auf die Tatsache, dass bei Ereignisangaben im DOIF, im Gegensatz zum Notify, kein ^ für Beginn und $ für Ende drangehängt wird:

"SENSOR_1_Heizung:OPEN"  entspricht beim notify .*SENSOR_1_Heizung.*:.*OPEN.*

dagegen SENSOR_1_Heizung:OPEN beim notify entspricht beim DOIF "^SENSOR_1_Heizung$:^OPEN$"
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Per

Zitat von: Otto123 am 14 Februar 2018, 11:45:40
([SENSOR_1_Heizung:"OPEN"]) triggert das DOIF bei JEDEM Event von SENSOR_1_Heizung und wertet anschließend nur OPEN aus.

(["SENSOR_1_Heizung:OPEN"])triggert das DOIF nur auf OPEN von SENSOR_1_Heizung. Die Bedingung wird wahr bei OPEN und niemals unwahr(Die DOELSE spielt überhaupt keine Rolle).
Nee, oben triggerst du genau einen Aktor, unten alle, die "SENSOR_1_Heizung" im Namen haben.

Otto123

Per, es ist schnell irreführend zu zitieren und die Zitate zu kürzen und zu zerpflücken. Mein "Gewicht" lag woanders, ausgehend davon: es gibt nur einen SENSOR_1_Heizung.

Deinen Einwand habe ich durch den Beitrag Damian schon verstanden.

Meine Erkenntnis zum Bedingungsteil des DOIF stimmt, wenn es nur einen SENSOR_1_Heizung gibt der auch nur zwei Zustände annimmt.
Das war ja die Aussage vom TE.

Gruß und Danke
Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Damian

#27
Hier mal eine Übersicht der möglichen Zustände:

Zustandsabfragen:

([dummy] eq "on") (set lamp on) hat zwei Zustände: cmd_1, cmd_2 (hier ist DOELSE virtuell immer dabei, sonst könnte man nur einmal schalten)

([dummy] eq "on") (set lamp on) mit do always hat nur einen Zustand: cmd_1

([dummy] eq "on") (set lamp on)  DOELSE mit do always  hat zwei Zustände: cmd_1,cmd_2

Ereignisabfragen mit einem konkreten Device (Verhalten wie oben):

([dummy:"on"]) (set lamp on) hat zwei Zustände: cmd_1, cmd_2

([dummy:"on"]) (set lamp on) mit do always hat nur einen Zustand: cmd_1

([dummy:"on"]) (set lamp on) DOELSE mit do always hat zwei Zustande: cmd_1, cmd2

Allgemeine Ereignisabfragen

(["dummy:on"])(set lamp on) hat nur einen Zustand: cmd_1 (ohne do always nicht sinnvoll, da nur eine Schaltung möglich)

(["dummy:on"])(set lamp on) mit do always hat nur einen Zustand: cmd_1

(["dummy:on"])(set lamp on) DOELSE hat nur einen Zustand: cmd_1 (cmd_2 lässt sich nicht provozieren, da es bei jedem Ereignis von irgendwelchen Devices zuschlagen würde)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF