Boiler nur 1 mal am Tag Schalten bei Anwesenheit

Begonnen von kinghill, 21 April 2018, 09:31:06

Vorheriges Thema - Nächstes Thema

Wuppi68

Zitat von: CoolTux am 22 April 2018, 19:31:17
Du hast schon mein Beispiel gesehen ?
Das sind gerade mal vier fünf Wörter. Noch einfacher geht es ja wohl kaum.

Ja klar ... ist in dem Kontext (für mich) auch super einfach und verständlich :-)

Aber nach einer gewissen Zeit bekomme ich bei solchem Code immer Alzheimer und habe normalerweise keinen Plan mehr was so ein Ding macht ;-)
Jetzt auf nem I3 und primär Homematic - kein Support für cfg Editierer

Support heißt nicht wenn die Frau zu Ihrem Mann sagt: Geh mal bitte zum Frauenarzt, ich habe Bauchschmerzen

kinghill

Hi Leute,

Die Anleitung von CoolTux funktioniert bestens.
Habe einfach bis 00:00 gewartet. Das notify wurde gestern wohl beim Testen schon geschalten.
Und da es nur 1 mal täglich schalten soll, hat es das eben nicht mehr getan :-)

Nochmal Vielen Dank für eure Hilfe!!!!!

kinghill

Zitat von: Otto123 am 22 April 2018, 18:33:26
Naja man muss verstehen wann und warum genau einmal geschaltet wird. Ich frage den Event "on" ab. Der logische Zustand des DOIF darf sich  nur einmal ändern.
Wie sieht dein DOIF Versuch aus? Wenn ich es wüsste könnte ich helfen, ohne Info habe ich keine Chance.

Gruß Otto

Das event wäre der home Status. Und da sich dieser jeh nach Anwesenheit mehrfach am Tag ändert, würde der status sich auch dementsprechend oft verändern.
Wie würdest du ein mehrfaches Schalten am Tag unterdrücken?

CoolTux seine Lösung funktioniert jetzt. Dennoch wäre ein 2ter Lösungsansatz auch schön :-)

Otto123

Du redest um den heißen Brei und hast es nicht probiert. Egal es funktioniert für Dich ;D und mein DOIF Beispiel funktioniert bei mir auch.

Auch wenn da offensichtlich nichts enthalten was Dir anzeigt, dass es nur einmal am Tag schaltet. Es ist eben von Hause aus so bei DOIF.
Es geht nicht darum ob sich der Status des Lichtschalters im Bad mehrfach am Tag ändert, es geht um den Bedingungsstatus des DOIF.
Ein DOIF führt einen Bedingungszweig nur einmal aus solange sich sein Zustand nicht ändert. Aber ich habe das schon erklärt.

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

kinghill

#19
Zitat von: Otto123 am 23 April 2018, 09:16:57
Du redest um den heißen Brei und hast es nicht probiert. Egal es funktioniert für Dich ;D und mein DOIF Beispiel funktioniert bei mir auch.

Auch wenn da offensichtlich nichts enthalten was Dir anzeigt, dass es nur einmal am Tag schaltet. Es ist eben von Hause aus so bei DOIF.
Es geht nicht darum ob sich der Status des Lichtschalters im Bad mehrfach am Tag ändert, es geht um den Bedingungsstatus des DOIF.
Ein DOIF führt einen Bedingungszweig nur einmal aus solange sich sein Zustand nicht ändert. Aber ich habe das schon erklärt.

Gruß Otto

Ich hatte es so  Probiert:

#defmod Boiler_an_test DOIF ([07:00-22:00] and [Boiler_Einschalten:"on"]) (set Bad_Boiler on-for-timer 60)

Wobei Boiler_Einschalten der Dummy zum Test ist. Schalte ich diesen auf off, und wieder auf on wird auch wieder Bad_Boiler für 60 sek geschalten. Das wäre ja wie Homestatus: Home/Away oder nicht?
Mir geht's rein ums Verständnis. Bin noch nicht so lange in der Fhem Welt unterwegs. Kann dir gern auch noch mehr infos zu meinen configs zukommen lassen.

Was mir an der Lösung sehr gefällt, ist das zusätzlich auch noch ein Zeitraum (Zeit) mit eingebunden ist. Und das ja sehr vielseitig einsetzbar ist.

Danke nochmal. Mfg Frank

Otto123

Hallo Frank,

Du hast absolut Recht. Ich habe das gerade mal überprüft und bin erstaunt. Irgendwas hat sich geändert ...  :o
In meinem Fall war durch einen zweiten Fakt das ganze so, dass ich das "Fehlverhalten" nicht bemerkt habe.

Ich melde mich, falls ich herausfinde warum...

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

#21
Zitat von: Otto123 am 23 April 2018, 10:07:36
Hallo Frank,

Du hast absolut Recht. Ich habe das gerade mal überprüft und bin erstaunt. Irgendwas hat sich geändert ...  :o
In meinem Fall war durch einen zweiten Fakt das ganze so, dass ich das "Fehlverhalten" nicht bemerkt habe.

Ich melde mich, falls ich herausfinde warum...

Gruß Otto

Die Lösung ist mal wieder einfacher, als man denkt, wenn man weiß, wie es funktioniert :)

Bei Eventangaben [Device:"event"] wird eine Bedingung ausgewertet, wenn irgend ein Event von Device kommt, das kann zum Zustandswechsel (hier cmd_2) führen, wenn etwas anderes als "event" kommt.

Mit der Angabe ["^Device$:event"] wird die Bedingung dagegen nur geprüft, wenn beides passt, sonst nicht, hierbei kann also kein Zustandswechsel stattfinden, wenn ein anders Event vom Device kommt.

defmod Boiler_an_test DOIF ([07:00-22:00] and ["^Boiler_Einschalten$:on"]) (set Bad_Boiler on-for-timer 60)

Hiermit wird der Zustand erst um 22:00 Uhr auf cmd_2 gehen, damit ist das Modul für cmd_1 für den nächsten Tag freigeschaltet :)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Otto123

Ja Damian da hast Du Recht, und irgendwo zwischen hier und heute bin ich da mal stecken geblieben  ;)

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

kinghill

#23
Zitat von: Damian am 23 April 2018, 10:43:40
Die Lösung ist mal wieder einfacher, als man denkt, wenn man weiß, wie es funktioniert :)

Bei Eventangaben [Device:"event"] wird eine Bedingung ausgewertet, wenn irgend ein Event von Device kommt, das kann zum Zustandswechsel (hier cmd_2) führen, wenn etwas anderes als "event" kommt.

Mit der Angabe ["^Device$:event"] wird die Bedingung dagegen nur geprüft, wenn beides passt, sonst nicht, hierbei kann also kein Zustandswechsel stattfinden, wenn ein anders Event vom Device kommt.

defmod Boiler_an_test DOIF ([07:00-22:00] and ["^Boiler_Einschalten$:on"]) (set Bad_Boiler on-for-timer 60)

Hiermit wird der Zustand erst um 22:00 Uhr auf cmd_2 gehen, damit ist das Modul für cmd_1 für den nächsten Tag freigeschaltet :)

Japp das ganze Funktioniert.

So nun habe ich noch eine Kleinigkeit dazu entdeckt. Und zwar hätte ich er gerne bei Anwesenheit über mehrere Tage. Sprich der Home Status bleibt über 2 Tage auf Home. Das der Boiler dann um 7 Uhr Morgens angeht. Das geht Sicherlich über einen extra Befehl, aber vielleicht geht das auch alles über ein Kommando?

Inzwischen schaut das ganze so aus:

Bad_Boiler_on DOIF ([07:00-20:00] and ["^HomeStatus$:1"]) (set Bad_Boiler on-for-timer 3600)


Thx

Damian

Zitat von: kinghill am 24 April 2018, 08:15:16
Japp das ganze Funktioniert.

So nun habe ich noch eine Kleinigkeit dazu entdeckt. Und zwar hätte ich er gerne bei Anwesenheit über mehrere Tage. Sprich der Home Status bleibt über 2 Tage auf Home. Das der Boiler dann um 7 Uhr Morgens angeht. Das geht Sicherlich über einen extra Befehl, aber vielleicht geht das auch alles über ein Kommando?

Inzwischen schaut das ganze so aus:

Bad_Boiler_on DOIF ([07:00-20:00] and ["^HomeStatus$:1"]) (set Bad_Boiler on-for-timer 3600)


Thx

Das ist wiederum eine Zustandsabfrage und keine Ereignisabfrage (diese wäre um 07:00 Uhr nicht wahr), dann eher:

Bad_Boiler_on DOIF ([07:00-20:00] and [HomeStatus] == 1) (set Bad_Boiler on-for-timer 3600)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF