Habe heute einen neuen Raspi4 auf Basis eines alten Raspi3 aufgesetzt. Alles funktioniert mit Ausnahme einiger DOIFs. Die verbleiben im STATE 3Fragezeichen.
Gemeinsam ist diesen DOIFs, daß ich dort auf Werte von dummy Devices zugreife. Die waren beim ersten Neustart von fhem vermutlich nicht gesetzt.
Auch nach Setzen der dummy(s) auf die intendierten Werte und shutdown restart bleibts beim STATE 3Fragezeichen.
Habe auch mal versucht, durch set DachsFault block_01 explizit das DOIF auszulösen - kein Effekt.
Hier mal ein Beispiel:
define DachsFault DOIF {\
if ([Dachs:Stoerung:d] > 0) {\
if (Value("DachsReportsFault") eq "no") {\
fhem("set DachsReportsFault yes");;\
qx(/opt/fhem/RaspiMail.sh "Dachs meldet Stoerung" ich\@gmx.de);;\
}\
} else {\
fhem("set DachsReportsFault no");;\
}\
}\
# DEF {
# if ([Dachs:Stoerung:d] > 0) {
# if (Value("DachsReportsFault") eq "no") {
# fhem("set DachsReportsFault yes");
# qx(/opt/fhem/RaspiMail.sh "Dachs meldet Stoerung" ich\@gmx.de);
# }
# } else {
# fhem("set DachsReportsFault no");
# }
#}
#
# FUUID 63347215-f33f-fc3a-cd1d-6b30e74d4606cc5c
# MODEL Perl
# NAME DachsFault
# NOTIFYDEV Dachs,global
# NR 81
# NTFY_ORDER 50-DachsFault
# STATE ???
# TYPE DOIF
# VERSION 27740 2023-07-10 09:31:11
# eventCount 2
# READINGS:
# 2023-11-23 13:58:54 Device Dachs
# 2023-11-23 17:24:52 block_01 executed
# 2023-11-23 13:58:54 e_Dachs_Stoerung 0
# 2023-11-23 18:04:06 mode enabled
# Regex:
# accu:
# bar:
# barAvg:
# collect:
# cond:
# Dachs:
# 0:
# Stoerung ^Dachs$:^Stoerung:
# condition:
# 0
# if (::ReadingValDoIf($hash,'Dachs','Stoerung','','d') > 0) {
# if (Value("DachsReportsFault") eq "no") {
# fhem("set DachsReportsFault yes");
# qx(/opt/fhem/RaspiMail.sh "Dachs meldet Stoerung" ich\@gmx.de);
# }
# } else {
# fhem("set DachsReportsFault no");
# }
#
# helper:
# NOTIFYDEV Dachs,global
# globalinit 1
# last_timer 0
# sleeptimer -1
# perlblock:
# 0 block_01
# readings:
# all Dachs:Stoerung
# uiState:
# uiTable:
#
setstate DachsFault 2023-11-23 13:58:54 Device Dachs
setstate DachsFault 2023-11-23 17:24:52 block_01 executed
setstate DachsFault 2023-11-23 13:58:54 e_Dachs_Stoerung 0
setstate DachsFault 2023-11-23 18:04:06 mode enabled
Was könnte ich noch versuchen?
Grüßle, Michael
Zitat von: olwaldi am 23 November 2023, 18:28:43Was könnte ich noch versuchen?
- Mal ins Log von FHEM schauen?
- Mal ins syslog Deines Raspberry schauen?
- Die Frage im richtigen Unterforum stellen bzw. dorthin verschieben?
- ...
5. set <DOIF> checkall
6. set <DOIF> cmd_x
7...
8. kein DOIF verwenden, sondern ein notify
9. ...
Zitat von: betateilchen am 24 November 2023, 12:14:578. kein DOIF verwenden, sondern ein notify
9. ...
In dem Fall stimme ich Dir mal zu ;)
Danke für die Anregungen, hatte ich Alles schon versucht.
Die DOIF's, die nicht mehr so recht wollen, haben kein checkall in ihrer Dropdown-Box. Die, die wieder laufen, haben checkall und konnten damit reaktiviert werden.
Ich will erstmal bei DOIF bleiben, da die ja auf dem Raspi3 problemlos gelaufen sind.
Aber welche Datei hätte ich noch mitkopieren müssen, um die DOIFs zu erhalten? Schließlich konnte ich den Raspi3 problemlos neu starten ohne DOIF-Probleme, d. h. irgendwo muß es drinstehen. Gesichert habe ich fhem.cfg und uniqID - natürlich ausgetauscht bei deaktiviertem fhem.
ZitatAber welche Datei hätte ich noch mitkopieren müssen, um die DOIFs zu erhalten?
eventuell fhem.save?
Das war die Lösung. Genauer: Ich habe im alten fhem.save vom Raspi3 die fraglichen Kommandos entdeckt, um STATE zu initialisieren - um im Beispiel zu bleiben
setstate DachsFault initialized
Und ich habe den gesamten Ordner /opt/fhem/log für die nächste Neuinstallation in mein Skript aufgenommen.
Vielen Dank, Michael
Ein set DachsFault initialize
gab es nicht in der Befehlsliste?