Guten Morgen zusammen,
seit dem letzten Update stürzt FHEM immer mal wieder komplett ab. Nach einem Neustart geht's dann wieder eine Weile...
Habe im FHEM.LOG (am Ende ;) )gerade einen Hinweis auf Problem in der 10_CUL_HM gefunden. Kann es das sein? Ich bin leider des Perls nicht so mächtig... ;D
Vielen Dank...
2020.06.29 06:51:00 3: CUL_HM set kg_hk_Gartenstrom_vorn_Sw_02 off
Unmatched ) in regex; marked by <-- HERE in m/^off
) <-- HERE :/ at ./FHEM/10_CUL_HM.pm line 4261.
Hi,
kannst Du das bitte besser ins Homematicboard verschieben.
Was gibt Dirversion 10_CUL_HM
aus?
Gruß Otto
...und packe ggf. noch ein list von "kg_hk_Gartenstrom_vorn_Sw_02" dazu. Da die aktuelle Version immerhin schon 6 Tage am Start ist/war, würde ich davon ausgehen, dass es auch irgendwas mit der konkreten Konfiguration dieses Gerätes zu tun hat.
Und Code, list + log-Auszüge bitte in code-Tags...
Guten Morgen,
@Otto123
"Homematic" macht mehr Sinn, dass sehe ich ein... ;)
Da "böse" Konstrukt ist anscheinend ein Standard "AT", wie er seit Jahren unverändert läuft. Ich habe mir das Ding noch einmal angesehen, finde aber ersteinmal nichts. Der Absturz erfolgt bei dem letzten "SET", deshalb denke ich es ist dieser Ausdruck und nicht das Gerät, oder?
*{sunrise(600,"06:16","09:30")} { if ( !($we) && !(Value("NRW_Ferientag")) ) { fhem("set kg_hk_Gartenstrom_Sw_01 off; set kg_hk_Gartenstrom_Sw_02 off; set kg_hk_Gartenstrom_Sw_03 off; set kg_hk_Gartenstrom_Sw_04 off; set kg_hk_Gartenstrom_vorn_Sw_01 off; set kg_hk_Gartenstrom_vorn_Sw_02 off"); } }
Internals:
DEF 3A5BA302
FUUID 5c8d34dd-f33f-71ca-f2d7-c78c689ce8b24b07
NAME kg_hk_Gartenstrom_vorn_Sw_02
NOTIFYDEV global
NR 686
NTFY_ORDER 50-kg_hk_Gartenstrom_vorn_Sw_02
STATE off
TYPE CUL_HM
chanNo 02
device kg_hk_Gartenstrom_vorn
peerList HM_1C0E80_Btn_07,HM_1C0E80_Btn_08,
READINGS:
2020-06-25 06:51:09 CommandAccepted yes
2020-05-10 20:22:51 R-HM_1C0E80_Btn_07-lgActionType jmpToTarget
2020-05-10 20:22:51 R-HM_1C0E80_Btn_07-shActionType jmpToTarget
2020-05-10 20:22:53 R-HM_1C0E80_Btn_08-lgActionType jmpToTarget
2020-05-10 20:22:53 R-HM_1C0E80_Btn_08-shActionType jmpToTarget
2018-08-23 19:22:01 R-powerUpAction off
2018-08-23 19:22:01 R-sign off
2020-05-10 20:22:32 RegL_01. 00:00 08:00 30:06 56:00 57:24
2020-05-10 20:22:51 RegL_03.HM_1C0E80_Btn_07 00:00 02:00 03:00 04:32 05:64 06:00 07:FF 08:00 09:FF 0A:01 0B:64 0C:66 82:00 83:00 84:32 85:64 86:00 87:FF 88:00 89:FF 8A:21 8B:64 8C:66
2020-05-10 20:22:53 RegL_03.HM_1C0E80_Btn_08 00:00 02:00 03:00 04:32 05:64 06:00 07:FF 08:00 09:FF 0A:01 0B:13 0C:33 82:00 83:00 84:32 85:64 86:00 87:FF 88:00 89:FF 8A:21 8B:13 8C:33
2020-06-25 06:51:09 deviceMsg off (to VCCU)
2020-06-25 06:51:09 level 0
2020-06-25 06:51:09 pct 0
2020-06-30 08:26:42 peerList HM_1C0E80_Btn_07,HM_1C0E80_Btn_08,
2020-06-25 06:51:09 recentStateType ack
2020-06-25 06:51:09 state off
2020-06-25 06:51:09 timedOn off
2020-06-25 06:51:09 trigLast fhem:02
2020-06-13 02:18:28 trig_HM_1C0E80_Btn_07 Short_2
2020-05-10 19:27:33 trig_HM_1C0E80_Btn_08 Short_1
helper:
peerFriend peerSens,peerVirt
peerOpt 3:switch
regLst 1,3p
cmds:
TmplKey HM_1C0E80_Btn_07,HM_1C0E80_Btn_08,:no:1593498402.13076
TmplTs 1593498402.13076
cmdKey :1:0:0::0003:02HM_1C0E80_Btn_07,HM_1C0E80_Btn_08,
TmplCmds:
tplSet_HM_1C0E80_Btn_08:[SwCondAbove_long|SwCondAbove_short|SwCondBelow_long|SwCondBelow_short|SwOff_long|SwOff_short|SwOnCond_long|SwOnCond_short|SwOn_long|SwOn_short|SwToggle_long|SwToggle_short|autoOff_long|autoOff_short|motionOnSw_long|motionOnSw_short]
tplSet_HM_1C0E80_Btn_07:[SwCondAbove_long|SwCondAbove_short|SwCondBelow_long|SwCondBelow_short|SwOff_long|SwOff_short|SwOnCond_long|SwOnCond_short|SwOn_long|SwOn_short|SwToggle_long|SwToggle_short|autoOff_long|autoOff_short|motionOnSw_long|motionOnSw_short]
cmdList:
clear:[readings|trigger|register|oldRegs|rssi|msgEvents|msgErrors|attack|all]
eventL:-peer- -cond-
eventS:-peer- -cond-
getConfig:
getRegRaw:[List0|List1|List2|List3|List4|List5|List6] ... [-PeerChannel-]
inhibit:[on|off]
off:
on-for-timer:-ontime-
on-till:-time-
on:
peerBulk:-peer1,peer2,...- [set|unset]
peerIODev:[IO] -btn- [set|unset]... not for future use
peerSmart:[remove_HM_1C0E80_Btn_07|remove_HM_1C0E80_Btn_08|CUL_HM_HM_PBI_4_FM_25FE69_Btn_02|CUL_HM_HM_PBI_4_FM_25FE69_Btn_03|CUL_HM_HM_PBI_4_FM_25FE69_Btn_04|CUL_HM_HM_PBI_4_FM_25FEEC_Btn_02|CUL_HM_HM_PBI_4_FM_25FEEC_Btn_03|CUL_HM_HM_PBI_4_FM_25FEEC_Btn_04|HM_1C0E80_Btn_01|HM_1C0E80_Btn_02|HM_1C0E80_Btn_03|HM_1C0E80_Btn_04|HM_1C0E80_Btn_05|HM_1C0E80_Btn_06|HM_1C0E80_Btn_09|HM_1C0E80_Btn_10|HM_1C0E80_Btn_11|HM_1C0E80_Btn_12|HM_1C0E80_Btn_13|HM_1C0E80_Btn_14|HM_1C0E80_Btn_15|HM_1C0E80_Btn_16|HM_1C0E80_Btn_17|HM_1C0E80_Btn_18|HM_1C0E80_Btn_19|HM_1C0E80_Btn_20|HM_2B023D|HM_32678D|VCCU|aussen_bewegungsmelder_einfahrt|aussen_bewegungsmelder_einfahrt2|aussen_bewegungsmelder_haustuer|aussen_bewegungsmelder_vorn|aussen_garage_tor.re|eg_flur_bewegungsmelder|eg_flur_haustuerklingel|eg_flur_virt_Temp_Sensor1|eg_kueche_siebtraeger_SenF|eg_kueche_siebtraeger_SenI|eg_kueche_siebtraeger_SenPwr|eg_kueche_siebtraeger_SenU|eg_wz_indirekteLampe_SenF|eg_wz_indirekteLampe_SenI|eg_wz_indirekteLampe_SenPwr|eg_wz_indirekteLampe_SenU|garten_bewegungsmelder_einfahrt_unten|kg_flur_bewegungsmelder|og_flur_bewegungsmelder|og_flur_licht2_Btn_01|og_flur_licht2_Btn_02|og_flur_licht_taster2|og_mia_licht_tasterbett_Btn_01|og_mia_licht_tasterbett_Btn_02|og_mia_licht_tasterbett_Motion|og_mia_virt_Temp_Sensor1|og_nele_licht_tasterbett_Btn_01|og_nele_licht_tasterbett_Btn_02|og_nele_licht_tasterbett_Motion|og_nele_virt_Temp_Sensor1|og_schlafzimmer_virt_Temp_Sensor1|ug_buero_motion1|ug_buero_virt_Temp_Sensor1|ug_flur_licht_taster2]
press:[long|short] -peer- [-repCount(long only)-] [-repDelay-] ...
regBulk:-list-.-peer- -addr1:data1- -addr2:data2- ...
regSet:[prep|exec] -regName- -value- ... [-peerChannel-]
sign:[on|off]
statusRequest:
toggle:
tplDel:tmplt
expert:
def 1
det 0
raw 1
tpl 0
role:
chn 1
tmpl:
Attributes:
alias Licht Böschung vorn
group Licht Garten
icon light_light_dim_100
model HM-LC-SW4-DR
peerIDs 00000000,1C0E8007,1C0E8008,
room Heizungskeller
webCmd on:off
Zitat von: Otto123 am 29 Juni 2020, 10:41:48
Hi,
kannst Du das bitte besser ins Homematicboard verschieben.
Was gibt Dirversion 10_CUL_HM
aus?
Gruß Otto
Hier noch die Version:
File Rev Last Change
10_CUL_HM.pm 22227 2020-06-22 07:59:57Z martinp876
f18.js 21848 2020-05-03 12:18:00Z rudolfkoenig
fhemweb.js 22260 2020-06-25 08:15:36Z rudolfkoenig
Würde auch auf das at tippen. Bin bein escapen auch gerne am Raten, aber das letzte ";" sollte mMn. entweder nicht da stehen, oder wenn dann doppelt:
*{sunrise(600,"06:16","09:30")} { if ( !($we) && !(Value("NRW_Ferientag")) ) { fhem("set kg_hk_Gartenstrom_Sw_01 off; set kg_hk_Gartenstrom_Sw_02 off; set kg_hk_Gartenstrom_Sw_03 off; set kg_hk_Gartenstrom_Sw_04 off; set kg_hk_Gartenstrom_vorn_Sw_01 off; set kg_hk_Gartenstrom_vorn_Sw_02 off");; } }
Würde aber den ganzen Ausdruck anders fassen:
*{sunrise(600,"06:16","09:30")} { if ( !($we) && !(Value("NRW_Ferientag")) ) { fhem("set kg_hk_Gartenstrom_Sw_0[1-4],kg_hk_Gartenstrom_vorn_Sw_0[12] off") } }
Und falls "NRW_Ferientag" in global/holiday2we steht kannst du auch auf diese 2. Abfrage verzichten, das macht die Abfrage nach $we dann sowieso schon mit...
Hallo Beta-User,
vielen Dank für Deinen Hinweis. Zusammengefasst ist die Zeile natürlich viel übersichtlicher, da hast Du völlig recht.
Ich vermute der Fehler wurde durch das schliessende ";" ausgelöst, welches nicht vorhanden war. Also so:
*{sunrise(600,"06:16","09:30")} { if ( !($we) && !(Value("NRW_Ferientag")) ) { fhem("set kg_hk_Gartenstrom_Sw_0[1-4],kg_hk_Gartenstrom_vorn_Sw_0[12] off"); } }
Ich bin noch nicht ganz sicher, gehe aber davon aus... :) Warum das nun zeitlich gerade mit dem Update zusammenfiel kann ich mir nicht erklären, denn bewusst habe ich das nicht entfernt.
Vielen Dank für die Unterstützung!
ich würde eher sagen, das kann weg :)
*{sunrise(600,"06:16","09:30")} { if ( !($we) && !(Value("NRW_Ferientag")) ) { fhem("set kg_hk_Gartenstrom_Sw_0[1-4],kg_hk_Gartenstrom_vorn_Sw_0[12] off") } }
Jetzt verunsichere mich doch nicht wieder... ;) Ich werde morgen früh berichten... ;D
Kann man so einen "AT" eigentlich auch manuell testen/auslösen? Am selben Tag eingestellt tut er es ja oft nicht und mit dem Ausführen in der CMD Zeile von FHEM hatte ich auch noch kein Glück. Einen NOTIFY kann man ja wenigstens triggern...
Na klar
set tralala execNow
und man darf zum testen auch mal die Zeit verstellen (2min in die Zukunft) - man kann sich die Zeit ja merken und zurück stellen ;)
Nee, der ExecNow geht nur ohne if Abfrage, zumindest bei mir...
Und die Zeit habe ich natürlich auch mehrfach verstellt, aber da gab es doch einmal ein Problem, dass so ein neuer AT erst am Folgetag aktiv wurde, oder?
Oder ich krieg die Dinger einfach nicht mehr gestartet, weil ein Fehler drin ist. Habe aber mit und ohne ";" probiert. Seltsam ist nur, dass die eigentlich schon uralt sind. Die Selbstzweifel wachsen... ;) ;D
also execNow gibt es bei mir immer.
und wenn ich jetzt 18:41 ein at erstelle mit 18:43 - dann wird das in 2 min ausgeführt. Du darfst es natürlich nicht mit dem sunrise ausdruck machen
Ganz andere Weg: Den Ausdruck einfach in die FHEM Kommandozeile werfen - wird sofort ausgeführt. Wenn die Bedingung erfüllt ist :)
{ if ( !($we) && !(Value("NRW_Ferientag")) ) { fhem("set kg_hk_Gartenstrom_Sw_0[1-4],kg_hk_Gartenstrom_vorn_Sw_0[12] off") } }
Ja, sorry wenn ich Euch beschäftigt habe, das ist natürlich völlig richtig. Asche auf mein Haupt...
Es ist nicht nur der sunrise sondern wir haben auch bereits Ferien (zumindest meine Kids ;) ) und damit führt er das Ding natürlich nicht aus. Da habe ich mich völlig verhaspelt. Ich habe immer versucht, das Ding zur Fehlersuche zum laufen zu bringen dabei liegt da das Problem nicht.
Ich weiss nicht wie der Parser vom Perl arbeitet, er führt natürlich den Befehlsteil der if Bedingung nicht aus, aber würde er trotzdem einen Syntaxfehler bemängeln oder diesen Ast dann aus Perfromancegründen völlig ignorieren?
Auch heute morgen ist der FHEM pünktlich abgestürzt in diesem Ausdruck. Gestern hatte ich noch ein erneutes Update der 10_CUL_HM.pm gemacht. Ich hoffe nun, dass das hinzugefügte ";" morgen "funktioniert".
2020.07.01 06:51:00 3: CUL_HM set kg_hk_Gartenstrom_Sw_02 off
2020.07.01 06:51:00 3: CUL_HM set kg_hk_Gartenstrom_Sw_03 off
2020.07.01 06:51:00 3: CUL_HM set kg_hk_Gartenstrom_Sw_04 off
2020.07.01 06:51:00 3: CUL_HM set kg_hk_Gartenstrom_vorn_Sw_01 off
2020.07.01 06:51:00 3: CUL_HM set kg_hk_Gartenstrom_vorn_Sw_02 off
Unmatched ) in regex; marked by <-- HERE in m/^off
) <-- HERE :/ at ./FHEM/10_CUL_HM.pm line 4273.
2020.07.01 09:06:55 1: Including fhem.cfg
06:51 Uhr Absturz und 09:06 Neustart des Prozesses...
ZitatIch hoffe nun, dass das hinzugefügte ";" morgen "funktioniert".
Ich weiß nicht warum Du so hartnäckig darauf beharrst, aber das Semikolon ist dort nicht nötig.
Was macht er denn wenn Du nur dies in die Befehlszeile wirfst?
{ fhem("set kg_hk_Gartenstrom_Sw_0[1-4],kg_hk_Gartenstrom_vorn_Sw_0[12] off") }
bzw.:
set kg_hk_Gartenstrom_Sw_0[1-4],kg_hk_Gartenstrom_vorn_Sw_0[12] off
Gruß Otto
Guten Morgen,
also das ";" hat den Absturz heute morgen nicht verhindert... ;) ;D
Was dies angeht will ich auch nicht stur beharren, aber das war das einzige was ich hatte als Unterschied zu anderen Ausdrücken die funktionierten. Ich habe auch den Wiki Eintrag gefunden, bei dem ich anscheinen vor vielen Jahren "geklaut " hatte. Daher stammt das Ding wohl... :)
https://wiki.fhem.de/wiki/Wochenende,_Feiertage_und_Schulferien (ganz unten)
Also ich bekenne ab heute ganz offiziell das ";" ist überflüssig, da hattest Du völlig recht! :D
Nichtsdestotrotz habe ich den Übeltäter wohl gefunden. Es war ein undokumentierter "Testeintrag", der die gleichen Schalter bediente (daher Namensgleichheit) und etwa zur gleichen Zeit startete. Darin habe ich anscheinend einen ungünstigen CR benutzt der den Absturz auslöste.
Ich habe heute noch einmal die ganzen Logdateien durchsucht, da der Eintrag auch schon sehr alt ist. Bis zum 25. Juni wurde er nur angemeckert, hatte aber sonst keine Auswirkungen. Am Abend des gleichen Tages habe ich die 10_CUL_HM.pm upgedatet. Diese verschluckt sich wohl an dem Eintrag und bringt den ganzen FHEM Prozess zum Absturz. Von dem eigentlichen Ausdruck gibt es aber nicht einmal mehr eine Teilfehlermeldung. Deshalb war ich bei den letzten (erfolgreichen) Befehlen an der völlig falschen Stelle.
Insofern habe ich mal wieder gelernt, die Logs regelmässig einmal anzusehen. Ich hoffe das war es jetzt und es geht wieder so zuverlässig weiter wie gewohnt. Dir Otto und dem Beta-User vielen herzlichen Dank für die Geduld und die guten Anregungen. Ich habe wieder eine Menge gelernt.