Hauptmenü

DOIF will nicht

Begonnen von FHEM-User22, 11 November 2022, 07:55:18

Vorheriges Thema - Nächstes Thema

FHEM-User22

Hallo Damian,
ja, mache ich.

Aber mein Hauptproblem sind nicht die Tage (ich weis nicht, wer es hier reingebracht hat, glaube Gisbert), sondern das das eine DOIF (Früh) tadellos funktioniert und das DOIF Abends prinzipiell immer nicht den Hut_Fest einschaltet.

Dankeschön
FHEM auf Raspberry Pi und Proxmox und... und.... und....

Damian

Zitat von: FHEM-User22 am 12 November 2022, 16:41:37
Hallo Damian,
ja, mache ich.

Aber mein Hauptproblem sind nicht die Tage (ich weis nicht, wer es hier reingebracht hat, glaube Gisbert), sondern das das eine DOIF (Früh) tadellos funktioniert und das DOIF Abends prinzipiell immer nicht den Hut_Fest einschaltet.

Dankeschön

Dass das nicht sinnvoll ist (mit Sam und Son), habe ich ja schon gesagt:

([Tageslicht] eq "dunkel" and ([12:00-21:30|12345] or [12:00-21:30|Sam] or [12:00-21:30|Son])) (set Hut_Fest on) DOELSE (set Hut_Fest off)

und es ist von der Bedeutung das Gleiche, wie

([Tageslicht] eq "dunkel" and [12:00-21:30]) (set Hut_Fest on) DOELSE (set Hut_Fest off)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

FHEM-User22

Moin,

Zitat von: Damian am 12 November 2022, 19:43:59
([Tageslicht] eq "dunkel" and ([12:00-21:30|12345] or [12:00-21:30|Sam] or [12:00-21:30|Son])) (set Hut_Fest on) DOELSE (set Hut_Fest off)

und es ist von der Bedeutung das Gleiche, wie

([Tageslicht] eq "dunkel" and [12:00-21:30]) (set Hut_Fest on) DOELSE (set Hut_Fest off)

ja, ich weiss. Aber um den WAF zu erhalten, wird Samstags und Sonntags jeweils eine andere Zeit benötigt. Das es jetzt gleich ist, war nur zu Probezwecken.

Auf jeden Fall kann ich Abends an keinem Wochentag nutzen. Ich werde wohl ein at nutzen, das aller 5 Min. ein Checkall mit Abend macht.

Dankeschön
FHEM auf Raspberry Pi und Proxmox und... und.... und....

FHEM-User22

#18
Moin,
jetzt nochmal,
Mache ich bei den Wochentagen was falsch?

([Tageslicht] eq "dunkel" and ([12:00-21:30|12345] or [12:00-21:30|6] or [11:00-22:30|0])) (set Hut_Fest on) DOELSE (set Hut_Fest off)


nach einem checkall sehen die Timer so aus:
timer_01_c01   14.11.2022 12:00:00|12345
timer_02_c01   14.11.2022 21:30:00|12345
timer_03_c01   14.11.2022 12:00:00|6
timer_04_c01   14.11.2022 21:30:00|6
timer_05_c01   14.11.2022 11:00:00
timer_06_c01   14.11.2022 22:30:00


Sollte nicht bei Timer 05 und 06 auch ein |0 für Sonntag dahinterstehen? Bei allen anderen Zahlen passt es.

Beste Grüße
FHEM auf Raspberry Pi und Proxmox und... und.... und....

Damian

ja, das sieht so aus, dass wenn 0 alleine steht, diese geschluckt wird.

Ich werde es korrigieren. Solange kannst du So nehmen, so wie es in der Commandref steht.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

FHEM-User22

Ja, mache ich so.

Jetzt habe ich mir die Events angeschaut, die DOIFs funktionieren.

2022-11-14 15:33:04 DOIF Festabend off
2022-11-14 15:33:11 DOIF Festabend on
2022-11-14 15:33:14 DOIF Festabend off
2022-11-14 15:33:17 DOIF Festabend on


Allerdings der Hut_Fest bekommt sofort nach an den aus-Befehl. Bei Früh ist das nicht so.

2022-11-14 15:46:04 structure Hut_Fest an
2022-11-14 15:46:04 structure Hut_Fest aus
2022-11-14 15:46:04 structure Hut_Fest undefined
2022-11-14 15:46:04 structure Hut_Fest Zeitstempel: 15:46:04
2022-11-14 15:46:04 structure Hut_Fest digit: 0
2022-11-14 15:46:04 structure Hut_Fest undefined
2022-11-14 15:46:04 structure Hut_Fest Zeitstempel: 15:46:04
2022-11-14 15:46:04 structure Hut_Fest digit: 0
2022-11-14 15:46:04 structure Hut_Fest undefined
2022-11-14 15:46:04 structure Hut_Fest Zeitstempel: 15:46:04
2022-11-14 15:46:04 structure Hut_Fest digit: 0
2022-11-14 15:46:04 structure Hut_Fest undefined
2022-11-14 15:46:04 structure Hut_Fest Zeitstempel: 15:46:04
2022-11-14 15:46:04 structure Hut_Fest digit: 0
2022-11-14 15:46:04 structure Hut_Fest undefined
2022-11-14 15:46:04 structure Hut_Fest Zeitstempel: 15:46:04
2022-11-14 15:46:04 structure Hut_Fest digit: 0
2022-11-14 15:46:04 structure Hut_Fest undefined
2022-11-14 15:46:04 structure Hut_Fest Zeitstempel: 15:46:04
2022-11-14 15:46:04 structure Hut_Fest digit: 0
2022-11-14 15:46:05 structure Hut_Fest undefined
2022-11-14 15:46:05 structure Hut_Fest Zeitstempel: 15:46:05
2022-11-14 15:46:05 structure Hut_Fest digit: 0
2022-11-14 15:46:05 structure Hut_Fest undefined
2022-11-14 15:46:05 structure Hut_Fest Zeitstempel: 15:46:05
2022-11-14 15:46:05 structure Hut_Fest digit: 0
2022-11-14 15:46:05 structure Hut_Fest undefined
2022-11-14 15:46:05 structure Hut_Fest Zeitstempel: 15:46:05
2022-11-14 15:46:05 structure Hut_Fest digit: 0
2022-11-14 15:46:05 structure Hut_Fest aus
2022-11-14 15:46:05 structure Hut_Fest Zeitstempel: 15:46:05
2022-11-14 15:46:05 structure Hut_Fest digit: 0
2022-11-14 15:46:06 structure Hut_Fest aus
2022-11-14 15:46:06 structure Hut_Fest Zeitstempel: 15:46:05
2022-11-14 15:46:06 structure Hut_Fest digit: 0


Kann ich nachschauen, wo er eventuell den Befehl herbekommt? Hier das List:

define Hut_Fest structure Hut04_02_Sw_02 Hut04_01_Sw_02 Hut04_Terrasse_Fest MQTT2_Fenster MQTT2_Fremd_kleiner_Stern
attr Hut_Fest DbLogInclude (digit|state)
attr Hut_Fest eventMap /on-for-timer 7200:2h/ /off:aus/ /on:an/
attr Hut_Fest room Bedienung
attr Hut_Fest setStateIndirectly 1
attr Hut_Fest userReadings Zeitstempel {(split(' ',ReadingsTimestamp($name,"state",0)))[1]},\
digit {ReadingsVal($name,"state","") eq "on" ? 1 : 0;;}
attr Hut_Fest webCmd on:on-for-timer 300:off
#   ATTR       Hut04_02_Sw_02
#   CHANGEDCNT 54856
#   DEF        Hut04_02_Sw_02 Hut04_01_Sw_02 Hut04_Terrasse_Fest MQTT2_Fenster MQTT2_Fremd_kleiner_Stern
#   FUUID      62150db1-f33f-bd9c-3fe2-db42f02f7b5f5108
#   NAME       Hut_Fest
#   NOTIFYDEV  MQTT2_Fremd_kleiner_Stern,global,Hut04_Terrasse_Fest,Hut04_01_Sw_02,MQTT2_Fenster
#   NR         58
#   NTFY_ORDER 50-Hut_Fest
#   STATE      aus
#   TYPE       structure
#   eventCount 99644
#   Helper:
#     DBLOG:
#       digit:
#         LogDBCloud:
#           TIME       1668437800.92249
#           VALUE      0
#         LogDBHome:
#           TIME       1668437800.92717
#           VALUE      0
#       state:
#         LogDBCloud:
#           TIME       1668437800.92249
#           VALUE      off
#         LogDBHome:
#           TIME       1668437800.92717
#           VALUE      off
#   READINGS:
#     2022-11-14 15:56:40   LastDevice      MQTT2_Fenster
#     2022-11-14 15:56:40   LastDevice_Abs  MQTT2_Fenster
#     2022-11-14 15:56:40   Zeitstempel     15:56:40
#     2022-11-14 15:56:40   digit           0
#     2022-11-14 15:56:40   state           off
#     2022-10-06 08:04:11   status          0
#
setstate Hut_Fest aus
setstate Hut_Fest 2022-11-14 15:56:40 LastDevice MQTT2_Fenster
setstate Hut_Fest 2022-11-14 15:56:40 LastDevice_Abs MQTT2_Fenster
setstate Hut_Fest 2022-11-14 15:56:40 Zeitstempel 15:56:40
setstate Hut_Fest 2022-11-14 15:56:40 digit 0
setstate Hut_Fest 2022-11-14 15:56:40 state off
setstate Hut_Fest 2022-10-06 08:04:11 status 0



Besten Dank
FHEM auf Raspberry Pi und Proxmox und... und.... und....

Damian

Korrigierte DOIF-Version eingecheckt.

Wer das Device ausmacht, kann ich dir nicht sagen. Da musst du selbst schauen, ob noch andere Definition das Device ausschalten können.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

KyleK

Wird Tageslicht eventuell ,,hell" wenn das Hut_Fest angeht?
Damit würde cmd2 ausgeführt.
FHEM on Futro S940
CUL868
7x MAX! Thermostat, 8x MAX! Fensterkontakte
Conbee II + deConz, TradFri Lampen, Osram Smart+ Steckdosen

FHEM-User22

Guten Morgen,

Hallo KyleK,

wie meist du das? Das Licht auf einen Sensor fällt? Nein, sonst wäre es früh ja auch so, und das klappt früh bestens.

Hier ein List vom Tageslicht:

define Tageslicht dummy
attr Tageslicht DbLogInclude 1
attr Tageslicht devStateIcon hell:weather_sun@yellow dunkel:weather_moon_phases_8@grey
attr Tageslicht group Astro,Wetter
attr Tageslicht userReadings Hell:[SetHell:state]
attr Tageslicht webCmd dunkel:hell
#   FUUID      623d7b54-f33f-bd9c-9d8f-8a1326ac2331f77c
#   NAME       Tageslicht
#   NR         308
#   STATE      dunkel
#   TYPE       dummy
#   eventCount 83
#   READINGS:
#     2022-11-14 17:11:03   state           dunkel
#
setstate Tageslicht dunkel
setstate Tageslicht 2022-11-14 17:11:03 state dunkel


Den Dummy schalte ich durch sunrise / sunset. Ich hätte gerne die Möglichkeit, die Dämmerung zentral für alle Devices nur einmal einstellen zu müssen.

Beste Grüße
FHEM auf Raspberry Pi und Proxmox und... und.... und....

Damian

Zitat von: FHEM-User22 am 15 November 2022, 07:17:18

Den Dummy schalte ich durch sunrise / sunset. Ich hätte gerne die Möglichkeit, die Dämmerung zentral für alle Devices nur einmal einstellen zu müssen.

Das habe ich bei mir über ein DOIF-Device geregelt. Das ist "on" bei Dunkelheit und sonst "off". Bei mir geht das über einen Helligkeitssensor, du kannst das über sunrise/sunsset definieren.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

FHEM-User22

Zitat von: Damian am 15 November 2022, 09:39:58
Das habe ich bei mir über ein DOIF-Device geregelt.

Dürfte ich nach den Code-Schipsel fragen?  ::)

Dankeschön
FHEM auf Raspberry Pi und Proxmox und... und.... und....

FrauMeier

Festfruehn und festabend schalten sich gegenseitig aus.
Du hast in beiden "Hut_Fest off" als doelse angegeben. Wenn also Festfrueh nicht zustimmt, aber festabend zustimmt bekommst du einen ein und einen aus befehl nacheinander. Die reihenfolge bestimmt dann ob die Lampe ambleibt oder nicht, und deshalb funktioniert nur einer der beiden DOIFS richtig.

Es ist immer ein Problem ein Device mit mehreren DOIFs zu schalten, am beten alles in ein DOIF Packen und mit DOELSEIF verbinden. Das ist sicherer.

FHEM-User22

Klingt irgendwie Sinnvoll. Danke für den Anstoß.

Kann mir jemand beim zusammenbasteln helgen?

Dankeschön.

Beste Grüße
FHEM auf Raspberry Pi und Proxmox und... und.... und....

Damian

Zitat von: FHEM-User22 am 15 November 2022, 10:53:06
Dürfte ich nach den Code-Schipsel fragen?  ::)

Dankeschön

Bei mir sieht das ungefähr so aus:

define dunkel DOIF ([sensor:helligkeit] > 0)
Attr cmdState off|on


oder mit sunrise/sunset


define dunkel DOIF ([{sunrise()}-{sunset()}])
Attr cmdState off|on


Dann kann ich wo anders nach [dunkel:state] abfragen
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

FrauMeier

Zitat von: FHEM-User22 am 15 November 2022, 15:53:31
Klingt irgendwie Sinnvoll. Danke für den Anstoß.

Kann mir jemand beim zusammenbasteln helgen?

Dankeschön.

Beste Grüße
Einfach DOELSEIF hinter das erste Doif schreiben und die zweite DOIF Definition dahinterkopieren und "(set Hut_Fest on)  ELSE (set Hut_Fest off)" dahinter schreiben. Dann das andere DOIF löschen.

Von der Logik her wird das erste DOIF geprüft, und NUR wenn es nicht zutrifft wird das zweite überprüft (oder noch weitere). Wenn also eins von beiden wahr ist wird Hut_Fest eingeschaltet, sonst ausgeschaltet.