[gelöst] DOIFs funktionieren nicht nach Neuinstallation

Begonnen von olwaldi, 23 November 2023, 18:28:43

Vorheriges Thema - Nächstes Thema

olwaldi

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

betateilchen

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?
  • ...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rabehd

5. set <DOIF> checkall
6. set <DOIF> cmd_x
7...
Auch funktionierende Lösungen kann man hinterfragen.

betateilchen

8. kein DOIF verwenden, sondern ein notify
9. ...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rabehd

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  ;)
Auch funktionierende Lösungen kann man hinterfragen.

olwaldi

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.

frank

ZitatAber welche Datei hätte ich noch mitkopieren müssen, um die DOIFs zu erhalten?
eventuell fhem.save?
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

olwaldi

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

rabehd

Ein set DachsFault initialize gab es nicht in der Befehlsliste?
Auch funktionierende Lösungen kann man hinterfragen.