Hallo,
ich habe eine DOIF gebaut welches meine Zeitsteuerung übernehmen soll. Ich habe ein Device mit verschiedenen Regex Schalten und Sperren und möchte diese mit
set LIC_AU_HO_Dachueberstand_SCH Sperren enable
set LIC_AU_HO_Dachueberstand_SCH Schalten on
schalten uns sperren. Wenn ich diese so bei Fhem eingebe wird alles geschaltet. Das DOIF schaltet es leider nicht. Waran kann das liegen? Ich hab schon versucht mit Klammern zu arbeiten, umzustellen, etc. Aber irgendwie finde ich die Lösung noch nicht.
Internals:
CFGFN
DEF ([{sunrise(-7000,"04:59:50","09:00")}]) (set LIC_AU_HO_Dachueberstand_SCH Schalten on, set STK_EG_WZ_KL_Fensterlaibung_SCH Schalten on) DOELSEIF([{sunrise(-6990,"05:00","09:00")}]) (set LIC_AU_HO_Dachueberstand_SCH Sperren enable) DOELSEIF
([{sunrise(+1200,"08:00","09:30")}]) (set LIC_AU_HO_Dachueberstand_SCH Sperren disable) DOELSEIF
([{sunrise(+1190,"08:00:10","09:30:10")}]) (set LIC_AU_HO_Dachueberstand_SCH Schalten off, STK_EG_WZ_KL_Fensterlaibung_SCH Schalten off) DOELSEIF
([{sunset(-2800,"15:00","21:30:20")}]) (set LIC_AU_HO_Dachueberstand_SCH Sperren enable) DOELSEIF
([{sunset(-2790,"15:00","21:30:30")}]) (set LIC_AU_HO_Dachueberstand_SCH Schalten on, STK_EG_WZ_KL_Fensterlaibung_SCH Schalten on) DOELSEIF
([21:30]) (set LIC_AU_HO_Dachueberstand_SCH Sperren disable) DOELSEIF
([21:30:20]) (set LIC_AU_HO_Dachueberstand_SCH Schalten off, STK_EG_WZ_KL_Fensterlaibung_SCH Schalten off) DOELSE
FUUID 638e1689-f33f-335d-d9a9-e85f446dfc7211e7
MODEL FHEM
NAME AUD_AU_HO_Dachueberstaende
NOTIFYDEV global
NR 318
NTFY_ORDER 50-AUD_AU_HO_Dachueberstaende
STATE initialized
TYPE DOIF
VERSION 26703 2022-11-14 16:43:41
eventCount 69
READINGS:
2022-12-05 18:03:47 cmd 0
2022-12-05 18:03:47 mode enabled
2022-12-05 18:03:47 state initialized
2022-12-05 18:03:47 timer_01_c01 06.12.2022 05:22:48
2022-12-05 18:03:47 timer_02_c02 06.12.2022 05:22:58
2022-12-05 18:03:47 timer_03_c03 06.12.2022 08:00:00
2022-12-05 18:03:47 timer_04_c04 06.12.2022 08:00:10
2022-12-05 18:03:47 timer_05_c05 06.12.2022 15:48:25
2022-12-05 18:03:47 timer_06_c06 06.12.2022 15:48:35
2022-12-05 18:03:47 timer_07_c07 05.12.2022 21:30:00
2022-12-05 18:03:47 timer_08_c08 05.12.2022 21:30:20
Regex:
accu:
collect:
attr:
cmdState:
wait:
waitdel:
condition:
0 ::DOIF_time_once($hash,0,$wday)
1 ::DOIF_time_once($hash,1,$wday)
2 ::DOIF_time_once($hash,2,$wday)
3 ::DOIF_time_once($hash,3,$wday)
4 ::DOIF_time_once($hash,4,$wday)
5 ::DOIF_time_once($hash,5,$wday)
6 ::DOIF_time_once($hash,6,$wday)
7 ::DOIF_time_once($hash,7,$wday)
days:
do:
0:
0 set LIC_AU_HO_Dachueberstand_SCH Schalten on, set STK_EG_WZ_KL_Fensterlaibung_SCH Schalten on
1:
0 set LIC_AU_HO_Dachueberstand_SCH Sperren enable
2:
0 set LIC_AU_HO_Dachueberstand_SCH Sperren disable
3:
0 set LIC_AU_HO_Dachueberstand_SCH Schalten off, STK_EG_WZ_KL_Fensterlaibung_SCH Schalten off
4:
0 set LIC_AU_HO_Dachueberstand_SCH Sperren enable
5:
0 set LIC_AU_HO_Dachueberstand_SCH Schalten on, STK_EG_WZ_KL_Fensterlaibung_SCH Schalten on
6:
0 set LIC_AU_HO_Dachueberstand_SCH Sperren disable
7:
0 set LIC_AU_HO_Dachueberstand_SCH Schalten off, STK_EG_WZ_KL_Fensterlaibung_SCH Schalten off
8:
0
helper:
NOTIFYDEV global
globalinit 1
last_timer 8
sleeptimer -1
intervalfunc:
localtime:
0 1670300568
1 1670300578
2 1670310000
3 1670310010
4 1670338105
5 1670338115
6 1670272200
7 1670272220
realtime:
0 05:22:48
1 05:22:58
2 08:00:00
3 08:00:10
4 15:48:25
5 15:48:35
6 21:30:00
7 21:30:20
time:
0 {sunrise(-7000,"04:59:50","09:00")}
1 {sunrise(-6990,"05:00","09:00")}
2 {sunrise(+1200,"08:00","09:30")}
3 {sunrise(+1190,"08:00:10","09:30:10")}
4 {sunset(-2800,"15:00","21:30:20")}
5 {sunset(-2790,"15:00","21:30:30")}
6 21:30:00
7 21:30:20
timeCond:
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
timer:
0 0
1 0
2 0
3 0
4 0
5 0
6 0
7 0
timers:
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
triggertime:
1670272200:
localtime 1670272200
hash:
1670272220:
localtime 1670272220
hash:
1670300568:
localtime 1670300568
hash:
1670300578:
localtime 1670300578
hash:
1670310000:
localtime 1670310000
hash:
1670310010:
localtime 1670310010
hash:
1670338105:
localtime 1670338105
hash:
1670338115:
localtime 1670338115
hash:
uiState:
uiTable:
Attributes:
Anbei noch das Device:
Internals:
DEF 1/0/217:dpt1.001:Schalten 1/1/217:dpt1.011:Status:listenonly 1/2/217:dpt1.003:Sperren 1/3/217:dpt7.007:Betriebsstunden:listenonly 1/4/217:dpt1.003:ResetBTK 1/5/217:dpt9.021:Stromwert:listenonly 1/6/217:dpt1.003:ResetSZ 2/0/217:dpt1.005:Fehlestrom:listenonly 1/7/217:dpt13.010:Wattstunde:listenonly 2/1/217:dpt1.011:Lastunterschreitung:listenonly 2/2/217:dpt1.011:Lastueberschreitung:listenonly
DEVNAME LIC_AU_HO_Dachueberstand_SCH
FIRSTGADNAME Schalten
FUUID 638c445d-f33f-335d-2b92-9c0d15f3935c7947
GETSTRING Sperren:noArg ResetSZ:noArg Schalten:noArg ResetBTK:noArg
IODev KNX
KNX_MSGCNT 23
KNX_TIME 2022-12-05 18:03:00
LASTInputDev KNX
MSGCNT 23
NAME LIC_AU_HO_Dachueberstand_SCH
NR 226
SETSTRING Sperren:disable,enable ResetSZ:disable,enable on:noArg off:noArg Schalten:on,off,toggle ResetBTK:disable,enable
STATE disable
SVN 26686 2022-11-12 21:41:59
TYPE KNX
eventCount 28
model dpt1
GADDETAILS:
Betriebsstunden:
CODE 013d9
GROUP 1/3/217
MODEL dpt7.007
NO 4
OPTION listenonly
RDNAMEGET Betriebsstunden-get
RDNAMEPUT Betriebsstunden-put
RDNAMESET Betriebsstunden-set
SETLIST
Fehlestrom:
CODE 020d9
GROUP 2/0/217
MODEL dpt1.005
NO 8
OPTION listenonly
RDNAMEGET Fehlestrom-get
RDNAMEPUT Fehlestrom-put
RDNAMESET Fehlestrom-set
SETLIST :no_alarm,alarm
Lastueberschreitung:
CODE 022d9
GROUP 2/2/217
MODEL dpt1.011
NO 11
OPTION listenonly
RDNAMEGET Lastueberschreitung-get
RDNAMEPUT Lastueberschreitung-put
RDNAMESET Lastueberschreitung-set
SETLIST :inactive,active
Lastunterschreitung:
CODE 021d9
GROUP 2/1/217
MODEL dpt1.011
NO 10
OPTION listenonly
RDNAMEGET Lastunterschreitung-get
RDNAMEPUT Lastunterschreitung-put
RDNAMESET Lastunterschreitung-set
SETLIST :inactive,active
ResetBTK:
CODE 014d9
GROUP 1/4/217
MODEL dpt1.003
NO 5
OPTION
RDNAMEGET ResetBTK-get
RDNAMEPUT ResetBTK-put
RDNAMESET ResetBTK-set
SETLIST :disable,enable
ResetSZ:
CODE 016d9
GROUP 1/6/217
MODEL dpt1.003
NO 7
OPTION
RDNAMEGET ResetSZ-get
RDNAMEPUT ResetSZ-put
RDNAMESET ResetSZ-set
SETLIST :disable,enable
Schalten:
CODE 010d9
GROUP 1/0/217
MODEL dpt1.001
NO 1
OPTION
RDNAMEGET Schalten-get
RDNAMEPUT Schalten-put
RDNAMESET Schalten-set
SETLIST :on,off,toggle
Sperren:
CODE 012d9
GROUP 1/2/217
MODEL dpt1.003
NO 3
OPTION
RDNAMEGET Sperren-get
RDNAMEPUT Sperren-put
RDNAMESET Sperren-set
SETLIST :disable,enable
Status:
CODE 011d9
GROUP 1/1/217
MODEL dpt1.011
NO 2
OPTION listenonly
RDNAMEGET Status-get
RDNAMEPUT Status-put
RDNAMESET Status-set
SETLIST :inactive,active
Stromwert:
CODE 015d9
GROUP 1/5/217
MODEL dpt9.021
NO 6
OPTION listenonly
RDNAMEGET Stromwert-get
RDNAMEPUT Stromwert-put
RDNAMESET Stromwert-set
SETLIST
Wattstunde:
CODE 017d9
GROUP 1/7/217
MODEL dpt13.010
NO 9
OPTION listenonly
RDNAMEGET Wattstunde-get
RDNAMEPUT Wattstunde-put
RDNAMESET Wattstunde-set
SETLIST
GADTABLE:
010d9 Schalten
011d9 Status
012d9 Sperren
013d9 Betriebsstunden
014d9 ResetBTK
015d9 Stromwert
016d9 ResetSZ
017d9 Wattstunde
020d9 Fehlestrom
021d9 Lastunterschreitung
022d9 Lastueberschreitung
READINGS:
2022-12-05 16:43:19 Betriebsstunden-get 1920 h
2022-12-05 18:03:00 GestrigeKosten 0.00 €
2022-12-05 16:43:19 IODev KNX
2022-12-05 18:03:00 Jahreskosten 0.00 €
2022-12-05 18:03:00 LetzterMonat 0.00 €
2022-12-05 18:03:00 Monatskosten 0.00 €
2022-12-05 18:03:00 Rechenwert 0
2022-12-05 16:43:19 ResetBTK-get disable
2022-12-05 16:43:19 ResetBTK-set disable
2022-12-05 17:54:02 Schalten-get on
2022-12-05 17:54:02 Schalten-set on
2022-12-05 18:03:00 Sperren-get disable
2022-12-05 18:03:00 Sperren-set disable
2022-12-05 17:47:07 Status-get active
2022-12-05 18:03:00 Stromwert 0
2022-12-05 18:03:00 Tageskosten 0.00 €
2022-12-05 17:54:02 cycle 9
2022-12-05 16:43:19 lastChange 1670254591.4688
2022-12-05 17:47:02 operatingTime 1670254602
2022-12-05 16:43:19 statRechenwert Hour: 0 Day: 0 Month: 0 Year: 0 (since: 2022-12-04_12:00:25 )
2022-12-05 16:43:19 statRechenwertDay 0
2022-12-05 16:43:19 statRechenwertHour 0
2022-12-05 16:43:19 statRechenwertMonth 0
2022-12-05 16:43:19 statRechenwertYear 0
2022-12-05 18:03:00 state disable
2022-12-05 17:54:02 timestamp 1670259242
Attributes:
event-on-change-reading .*
eventMap 0
group Licht
room Hof
suppressReading last-sender
userReadings Stromwert {(ReadingsNum($name,"Stromwert-get",0))}, Rechenwert {((ReadingsNum($name,"Wattstunde-get",0)/1000))} , Tageskosten {(((sprintf("%.2f",ReadingsNum($name, "statRechenwertDay",0) * ReadingsNum("DUM_AL_AL_Strom_WER", "state",0)) ." €")))} , GestrigeKosten {(((sprintf("%.2f",ReadingsNum($name, "statRechenwertDayLast",0) * ReadingsNum("DUM_AL_AL_Strom_WER", "state",0)) ." €")))} , Monatskosten {(((sprintf("%.2f",ReadingsNum($name, "statRechenwertMonth",0) * ReadingsNum("DUM_AL_AL_Strom_WER", "state",0)) ." €")))} , LetzterMonat {(((sprintf("%.2f",ReadingsNum($name, "statRechenwertMonthLast",0) * ReadingsNum("DUM_AL_AL_Strom_WER", "state",0)) ." €")))} , Jahreskosten {(((sprintf("%.2f",ReadingsNum($name, "statRechenwertYear",0) * ReadingsNum("DUM_AL_AL_Strom_WER", "state",0)) ." €")))},timestamp,operatingTime,lastChange,cycle
Lösung an: - ACHTUNG- Es gibt man es mit Fhem ein läufts.
{fhem("set STK_EG_WZ_KL_Fensterlaibung_SCH Schalten on, set LIC_AU_HO_Dachueberstand_SCH Schalten on")}
Eine Frage noch,
warum schaltet FHEM denn nur eine Lampe? Bei mir schaltet immer nur die erste, die Zweite wird nicht gschaltet. Mache ich etwas falsch? Hab schon durchprobiert, aber so sieht die Lösung meist in den Foren aus. Vielleicht interpretiere ich das auch falsch.
{fhem("set STK_EG_EZ_Tuer_rechts_rechts_SCH Schalten on ;; set STK_EG_WZ_KL_Fensterlaibung_SCH Schalten on ;; set STK_AU_GA_Vorgarten_Dreieck_Beet_SCH Schalten on ;; set STK_AU_GA_Vorgarten_links_Fenster_SCH Schlaten on ;; set STK_AU_GA_Vorgarten_rechts_Fenster_SCH Schlaten on ;; set LIC_AU_HO_Dachueberstand_SCH Schalten on")}
Diese Variante ist für DOIF
(set STK_EG_WZ_KL_Fensterlaibung_SCH Schalten on, set LIC_AU_HO_Dachueberstand_SCH Schalten on)
Diese für FHEM
set STK_EG_WZ_KL_Fensterlaibung_SCH Schalten on; set LIC_AU_HO_Dachueberstand_SCH Schalten on
Diese für Perl
{fhem("set STK_EG_WZ_KL_Fensterlaibung_SCH Schalten on;; set LIC_AU_HO_Dachueberstand_SCH Schalten on")}
Die Lösung die Du jetzt ist falsch (Komma statt Semikolon)
Warum das oben nicht gehen soll kann ich nicht sagen.
Hallo Otto,
danke. Ich hab es jetzt auch mal umgebaut. Aber auch da nur eine Lampe an.
(set STK_EG_EZ_Tuer_rechts_rechts_SCH Schalten on , set STK_EG_WZ_KL_Fensterlaibung_SCH Schalten on , set STK_AU_GA_Vorgarten_Dreieck_Beet_SCH Schalten on , set STK_AU_GA_Vorgarten_links_Fenster_SCH Schalten on , set STK_AU_GA_Vorgarten_rechts_Fenster_SCH Schalten on , set LIC_AU_HO_Dachueberstand_SCH Schalten on)
Ich habe eventuell eine Vermutung. Habe gestern die KNXD Schnittstelle ja auch neu aufgesetzt. Mit dem H soll es ja bezüglich der Antwortzeiten Probleme geben. Ob das damit etwas zu tun hat?
Ich würde ja zu
Internals:
DEF H 192.168.254.27:3671 1.1.3
DeviceName 192.168.254.27:3671
FD 9
FUUID 638b6526-f33f-335d-b1fe-212d365535dee589
NAME KNX
NR 13
PARTIAL
PhyAddr 01102
STATE connected
SVN 26687 2022-11-12 21:43:22
TYPE KNXIO
eventCount 19
model H
msg_count 19604
msg_time 2022-12-05 19:56:53
nextOpenDelay 10
KNXIOhelper:
CCID 17
FIFOMSG C01126w01503241a
FIFOTIMER 0
LASTSENTMSG ����
SEQUENCECNTR 167
SEQUENCECNTR_W 8
FIFO:
READINGS:
2022-12-05 19:49:02 state connected
Attributes:
room Softwaredevice
Timing Problem Mode H
Wie bereits erwähnt, dieser Mode stellt hohe Ansprüche an das Antwortzeitverhalten von FHEM. Jede empfangene und gesendete Message muss in weniger als 1 Sekunde bestätigt werden. Falls FHEM länger mit anderen Modulen beschäftigt ist, gibt das Probleme. Typische Module, die Probleme machen können, sind (u.A.): SVG,, Onewire, HTTPMOD,, usw...
ABer ich kann dort keine Fehlermeldungen sehen.
Es ist doch verhext....
Ich denke eher: Du schickst die Befehle zu schnell hintereinander?
Mach mal ein sleep 0.5 dazwischen. Da muss man bei DOIF dann irgendwie wieder ein Semikolon nehmen >:(
Oder nimm DOIF wait. Probiere das erstmal in der FHEM Kommandozeile:
set bla; sleep 0.5; set blub
Otto, ich mags ja nicht sagen. Aben nun funktioniert es. Unglaublich! Danke für den Tipp, wäre ich so ohne weiteres nicht drauf gekommen. Tausend Dank!