FHEM Absturz nach DOIF Änderung und checkall

Begonnen von Morgennebel, 20 September 2019, 17:08:19

Vorheriges Thema - Nächstes Thema

Damian

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

hackepeter


Zitat von: Damian am 25 September 2019, 00:01:24
Neue Version eingecheckt.

Bei mir scheint wieder alles zu laufen! Gute Arbeit! Wo soll ich den Kasten Rhönbier hinschicken? 🍻

Damian

Zitat von: hackepeter am 26 September 2019, 12:10:15
Bei mir scheint wieder alles zu laufen! Gute Arbeit! Wo soll ich den Kasten Rhönbier hinschicken? 🍻

Für eine stabile Version, stehe ich mit meinem Namen - das reicht schon :)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

abc2006

#48
Moin Damian,
ich hätte da leider noch einen. Weiss nicht, ob das an dem Update liegt - aber da ich gestern (vorgestern) die aktuelle version per update geholt habe, vermute ich, dass es in die Richtung geht:

Hier ist ein list des DF auf meinem raspi "hzfhem":

Internals:
   DEF        (["^PID_HZFHEM$"])
({
Log3(undef, 4, "DF_F2F_PID Event: $EVENT");
my ($reading,$value) = split(/ /,"$EVENT");
chop $reading;
if($reading eq "actuation"){
fhem("setreading $SELF _event $EVENT");
fhem("setreading $SELF _events $EVENTS");
fhem("setreading $SELF _device $DEVICE");
fhem("setreading $SELF _value $value");
fhem("setreading $SELF _reading $reading");
Log3(undef, 0, "DF_F2F_PID Reading: $reading");
my $order;
if($value >=0 && $value <=270){
$order = "set Mischer_HZG position $value";
Log3(undef, 0, "DF_F2F_PID Order fhem(): $order");
fhem($order);
}elsif($value == 0){
##&& ReadingsNum("Mischer_HZG","state",1) == 0 && ReadingsNum("Mischer_HZG","state",1) ne "reset"){
## das reicht eigentlich, wegen event-on-change-reading sollte hier keine Wiederholung auftreten
$order = "set Relais2_FUBO_kalt on-for-timer 20";
Log3(undef, 0, "DF_F2F_PID Order autoreset: $order");
fhem($order);
}elsif($value != int($value)){
Log3(undef, 0, "DF_F2F_PID Fehler. Value: $value");
}
}
})
   FUUID      5c844841-f33f-0aaa-2408-991d2c0374888f87
   MODEL      FHEM
   NAME       DF_F2F_PID
   NR         42
   NTFY_ORDER 50-DF_F2F_PID
   STATE      cmd_1
   TYPE       DOIF
   VERSION    20241 2019-09-24 22:00:09
   READINGS:
     2019-09-27 00:14:08   Device          PID_HZFHEM
     2019-09-27 00:14:08   _device         PID_HZFHEM
     2019-09-27 00:14:08   _event          actuation: 13
     2019-09-27 00:14:08   _events         actuation: 13
     2019-09-27 00:14:08   _reading        actuation
     2019-09-27 00:14:08   _value          13
     2019-09-27 00:14:08   cmd             1
     2019-09-27 00:14:08   cmd_event       PID_HZFHEM
     2019-09-27 00:14:08   cmd_nr          1
     2019-09-27 00:14:45   error           { Log3(undef, 4, "DF_F2F_PID Event: actuation: 6"); my ($reading,$value) = split(/ /,"actuation: 6"); chop $reading; if($reading eq "actuation"){ fhem("setreading DF_F2F_PID _event actuation: 6"); fhem("setreading DF_F2F_PID _events actuation: 6"); fhem("setreading DF_F2F_PID _device PID_HZFHEM"); fhem("setreading DF_F2F_PID _value $value"); fhem("setreading DF_F2F_PID _reading $reading"); Log3(undef, 0, "DF_F2F_PID Reading: $reading"); my $order; if($value >=0 && $value <=270){ $order = "set Mischer_HZG position $value"; Log3(undef, 0, "DF_F2F_PID Order fhem(): $order"); fhem($order); }elsif($value == 0){ $order = "set Relais2_FUBO_kalt on-for-timer 20"; Log3(undef, 0, "DF_F2F_PID Order autoreset: $order"); fhem($order); }elsif($value != int($value)){ Log3(undef, 0, "DF_F2F_PID Fehler. Value: $value"); } } }: Device is locked, try again later. Your command is discarded.
     2019-09-27 00:12:28   mode            enabled
     2019-09-27 00:14:08   state           cmd_1
   Regex:
     accu:
     cond:
       :
         0:
           "^PID_HZFHEM$" ^PID_HZFHEM$
   attr:
     cmdState:
     wait:
     waitdel:
   condition:
     0          ::EventDoIf('^PID_HZFHEM$',$hash,'',0)
   do:
     0:
       0          { Log3(undef, 4, "DF_F2F_PID Event: $EVENT"); my ($reading,$value) = split(/ /,"$EVENT"); chop $reading; if($reading eq "actuation"){ fhem("setreading DF_F2F_PID _event $EVENT"); fhem("setreading DF_F2F_PID _events $EVENTS"); fhem("setreading DF_F2F_PID _device $DEVICE"); fhem("setreading DF_F2F_PID _value $value"); fhem("setreading DF_F2F_PID _reading $reading"); Log3(undef, 0, "DF_F2F_PID Reading: $reading"); my $order; if($value >=0 && $value <=270){ $order = "set Mischer_HZG position $value"; Log3(undef, 0, "DF_F2F_PID Order fhem(): $order"); fhem($order); }elsif($value == 0){ $order = "set Relais2_FUBO_kalt on-for-timer 20"; Log3(undef, 0, "DF_F2F_PID Order autoreset: $order"); fhem($order); }elsif($value != int($value)){ Log3(undef, 0, "DF_F2F_PID Fehler. Value: $value"); } } }
     1:
   helper:
     DEVFILTER  ^global$|^PID_HZFHEM$
     NOTIFYDEV  global|PID_HZFHEM
     event      delta: 0.940000000000001
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   PID_HZFHEM
     timerevent delta: 0.940000000000001
     triggerDev PID_HZFHEM
     DOIF_eventa:
       cmd_nr: 1
       cmd: 1
       cmd_event: PID_HZFHEM
       cmd_1
     DOIF_eventas:
       cmd_nr: 1
       cmd: 1
       cmd_event: PID_HZFHEM
       state: cmd_1
     timerevents:
       delta: 0.940000000000001
     timereventsState:
       delta: 0.940000000000001
     triggerEvents:
       delta: 0.940000000000001
     triggerEventsState:
       delta: 0.940000000000001
   internals:
   readings:
   trigger:
   uiState:
   uiTable:
Attributes:
   do         always
   room       FHEM2FHEM,STELLMOTOR,_doif


Das schreibt mir das Log voll mit :

Zitat27 00:09:30.572 DOIF DF_F2F_PID error: { Log3(undef, 4, "DF_F2F_PID Event: actuation: 6"); my ($reading,$value) = split(/ /,"actuation: 6"); chop $reading;  if($reading eq "actuation"){  fhem("setreading DF_F2F_PID _event actuation: 6");  fhem("setreading DF_F2F_PID _events actuation: 6");  fhem("setreading DF_F2F_PID _device PID_HZFHEM");  fhem("setreading DF_F2F_PID _value $value");  fhem("setreading DF_F2F_PID _reading $reading");  Log3(undef, 0, "DF_F2F_PID Reading: $reading");  my $order;  if($value >=0 && $value <=270){  $order = "set Mischer_HZG position $value";  Log3(undef, 0, "DF_F2F_PID Order fhem(): $order");  fhem($order);  }elsif($value == 0){      $order = "set Relais2_FUBO_kalt on-for-timer 20";  Log3(undef, 0, "DF_F2F_PID Order autoreset: $order");  fhem($order);  }elsif($value != int($value)){  Log3(undef, 0, "DF_F2F_PID Fehler. Value: $value");  }  } }: Device is locked, try again later. Your command is discarded.
2019-09-27 00:09:30.582 DOIF DF_F2F_PID error: { Log3(undef, 4, "DF_F2F_PID Event: actuation: 11"); my ($reading,$value) = split(/ /,"actuation: 11"); chop $reading;  if($reading eq "actuation"){  fhem("setreading DF_F2F_PID _event actuation: 11");  fhem("setreading DF_F2F_PID _events actuation: 11");  fhem("setreading DF_F2F_PID _device PID_HZFHEM");  fhem("setreading DF_F2F_PID _value $value");  fhem("setreading DF_F2F_PID _reading $reading");  Log3(undef, 0, "DF_F2F_PID Reading: $reading");  my $order;  if($value >=0 && $value <=270){  $order = "set Mischer_HZG position $value";  Log3(undef, 0, "DF_F2F_PID Order fhem(): $order");  fhem($order);  }elsif($value == 0){      $order = "set Relais2_FUBO_kalt on-for-timer 20";  Log3(undef, 0, "DF_F2F_PID Order autoreset: $order");  fhem($order);  }elsif($value != int($value)){  Log3(undef, 0, "DF_F2F_PID Fehler. Value: $value");  }  } }: Device is locked, try again later. Your command is discarded.
2019-09-27 00:09:30.595 DOIF DF_F2F_PID error: { Log3(undef, 4, "DF_F2F_PID Event: actuation: 6"); my ($reading,$value) = split(/ /,"actuation: 6"); chop $reading;  if($reading eq "actuation"){  fhem("setreading DF_F2F_PID _event actuation: 6");  fhem("setreading DF_F2F_PID _events actuation: 6");  fhem("setreading DF_F2F_PID _device PID_HZFHEM");  fhem("setreading DF_F2F_PID _value $value");  fhem("setreading DF_F2F_PID _reading $reading");  Log3(undef, 0, "DF_F2F_PID Reading: $reading");  my $order;  if($value >=0 && $value <=270){  $order = "set Mischer_HZG position $value";  Log3(undef, 0, "DF_F2F_PID Order fhem(): $order");  fhem($order);  }elsif($value == 0){      $order = "set Relais2_FUBO_kalt on-for-timer 20";  Log3(undef, 0, "DF_F2F_PID Order autoreset: $order");  fhem($order);  }elsif($value != int($value)){  Log3(undef, 0, "DF_F2F_PID Fehler. Value: $value");  }  } }: Device is locked, try again later. Your command is discarded.
2019-09-27 00:09:30.


Für mich sieht es so aus, als würde das DOIF zu oft triggern.
Eigentlich soll es auf Events vom PID_HZFHEM reagieren, der auf dem Newfhem-System läuft. Weil dann zu viele Kommandos kommen, blockt STELLMOTOR das dann ab.

Könntest du da bitte mal drüberschauen und deine Meinung äussern?
Ich versuch das dann solange mal umzubauen, damit meine Heizung wieder läuft :)

lg,
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

abc2006

#49
Mit downgrade auf version 60d38d5b29c4f51e6a4f3048fdcfbf37e5dc2eb2 ist zumindest das Log erstmal wieder schmaler. Jetzt versuch ich meine Heizung wieder zur mitarbeit zu überreden ;) -  mit der alten Version läufts sofort wieder wie vorher.
Ich warte dann jetzt mal auf dich und teste gerne neue Versionen.

Danke für deine Hilfe,
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

Damian

Naja, das Modul soll lt. Definition auf alle Events von PID_HZFHEM reagieren, das tut es offensichtlich auch. Du könntest  $device mitloggen, wenn da etwas ungleich PID_HZFHEM kommt, dann wäre was faul.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Per

Zitat von: abc2006 am 27 September 2019, 00:19:41Hier ist ein list des DF auf meinem raspi "hzfhem":
Das sieht aber prädestiniert für den Perl-Mode aus ;)

Ellert


abc2006

Zitat von: Per am 27 September 2019, 13:06:05
Das sieht aber prädestiniert für den Perl-Mode aus ;)

Ja, jetzt wo du es sagst :) Ich glaube aber, das Doif selbst ist noch aus Zeiten vor dem Perl-Modus... und solange es funktioniert, hatte ich nie das Bedürfnis, das zu ändern :) der Raspi langweilt sich eh :P

Zitat von: Ellert am 27 September 2019, 15:22:36
Möglicherweise handelt es sich um diesen Sachverhalt https://wiki.fhem.de/wiki/DOIF/Tools_und_Fehlersuche#Besonderheit_des_Error-Reading

Danke für den Tipp,
tatsächlich habe ich gestern herausgefunden, dass es sich um eine Art FHEM2FHEM-Schleife handelte. Da die beiden Regexe unterschiedlich waren, ist mir nicht aufgefallen, dass beide auf das gleiche Event triggern. Ein Rätsel ist mir aber noch, warum es dann erst nach dem DOIF-Update Fehler produziert hat...

Danke euch, mittlerweile läuft alles (was ich im Blick habe) wieder stabil :)
Stephan
FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX

hackepeter

Zitat von: Damian am 24 September 2019, 15:04:18
Die angehängte Version sollte jetzt auch mit FHEM2FHEM klarkommen.

Edit: neue Version eingecheckt

Hallo Damian, ich habe heute seit einiger Zeit  (ca. 1-2mon) wieder ein Update gemacht und wieder das gleiche Problem wie damals, das doif nicht mehr auf FHEM2FHEM Triggert. Hast du eine Idee?

Damian

Zitat von: hackepeter am 27 Februar 2022, 12:56:29
Hallo Damian, ich habe heute seit einiger Zeit  (ca. 1-2mon) wieder ein Update gemacht und wieder das gleiche Problem wie damals, das doif nicht mehr auf FHEM2FHEM Triggert. Hast du eine Idee?

Schau mal hier: https://forum.fhem.de/index.php/topic,103401.msg1209234.html#msg1209234

Ich hoffe, du kannst die fehlenden Devices bei dir anlegen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

hackepeter

Danke, nach anlegen der Dummys funktioniert es.