Hauptmenü

Fhem stürzt ab nach Update

Begonnen von Kai-Alfonso, 18 September 2019, 12:59:34

Vorheriges Thema - Nächstes Thema

Damian

Zitat von: Kai-Alfonso am 19 September 2019, 09:42:20
Bei mir stürzt auch die neue Version ab - aber lustigerweise nicht direkt, sondern erst nach x minuten

ja, das hat gestern schon der Christian festgestellt. Ich muss den Fall bei mir erst mal reproduzieren um die Ursache zu erkennen. Schick mir bitte die Raw-Defintion von der Definition, vielleicht kann ich sie bei mir ans Laufen bekommen um den Absturz zu provozieren.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Kai-Alfonso

Zitat von: Damian am 19 September 2019, 09:53:30
ja, das hat gestern schon der Christian festgestellt. Ich muss den Fall bei mir erst mal reproduzieren um die Ursache zu erkennen. Schick mir bitte die Raw-Defintion von der Definition, vielleicht kann ich sie bei mir ans Laufen bekommen um den Absturz zu provozieren.

Ja, ich habs gelesen, wollte es aber auch noch mal gegenchecken, ob es bei mir auch abstürzt. Ich verstehe nur nicht, das er nicht sofort abstürzt (bei minütlicher Ausführung) sondern "beliebig"

defmod doif_Stromkosten1 DOIF ([+60])\
({use Date::Calc qw(Delta_Days);;;;\
my $start_datum = ReadingsVal("doif_Stromkosten1","Start_Abrechnungsperiode","");;;;\
my $tag = substr($start_datum, 0, 2);;;;\
my $monat = substr($start_datum, 3, 2);;;;\
\
my ($day,$month,$year) = (localtime)[3,4,5];;;;\
\
my $year1 = sprintf '%04d',$year+1900;;;;\
my $month1 = sprintf '%02d',$month+1;;;;\
my $jahr = 0;;\
\
if ($month1 == 12 ) {\
$jahr  = $year1;;\
}\
else {\
$jahr  = $year1 - 1;;\
}\
\
my $day1 = sprintf '%02d',$day;;;;\
my $anzahl_tage = Delta_Days($jahr,$monat,$tag,$year1,$month1,$day1);;;;\
fhem ("setreading doif_Stromkosten1 Tage $anzahl_tage")\
})
attr doif_Stromkosten1 alias Stromkosten
attr doif_Stromkosten1 cmdState 1
attr doif_Stromkosten1 do always
attr doif_Stromkosten1 room Strom
attr doif_Stromkosten1 uiTable "Arbeitspreis (Cent/kWh)"|([$SELF:Arbeitspreis])\
"Grundpreis (Euro/Jahr)"|([$SELF:Grundpreis])\
"Start Abrechnungsperiode"|([$SELF:Start_Abrechnungsperiode])\
"Abschlag (Euro/Monat)"|([$SELF:Abschlag])\
"Tage Abrechnugsperiode"|[$SELF:Tage]\
"Stromverbrauch Hochrechnung"| sprintf("%.f kWh", ([myElectricityCalculator:Stromzaehler_total_consumption_EnergyMeter])/[$SELF:Tage]*365)\
"Stromverbrauch bis jetzt"|sprintf("%.2f kWh" , [myElectricityCalculator:Stromzaehler_total_consumption_EnergyMeter])\
"Stromkosten bis jetzt"|sprintf("%.2f Euro" , [myElectricityCalculator:Stromzaehler_total_consumption_EnergyCostMeter])\
"Stromkosten Hochrechnung"| sprintf("%.2f Euro", (([myElectricityCalculator:Stromzaehler_total_consumption_EnergyMeter])/[$SELF:Tage]*365)*([$SELF:Arbeitspreis]/100)+[$SELF:Grundpreis])\
"Nachzahlung/Gutschrift"| sprintf("%.2f Euro", ([myElectricityCalculator:Stromzaehler_total_consumption_EnergyMeter]/[$SELF:Tage]*365)*([$SELF:Arbeitspreis]/100)+[$SELF:Grundpreis]-([$SELF:Abschlag]*12))

setstate doif_Stromkosten1 initialized
setstate doif_Stromkosten1 2018-12-08 08:33:46 Abschlag 75
setstate doif_Stromkosten1 2019-03-08 12:21:18 Arbeitspreis 25.40
setstate doif_Stromkosten1 2019-03-08 12:21:53 Grundpreis 96
setstate doif_Stromkosten1 2018-12-04 12:34:25 Start_Abrechnungsperiode 01.12
setstate doif_Stromkosten1 2019-09-18 10:42:24 Tage 291
setstate doif_Stromkosten1 2019-09-19 09:59:31 cmd 0
setstate doif_Stromkosten1 2019-09-19 09:59:31 mode enabled
setstate doif_Stromkosten1 2019-09-19 09:59:31 state initialized
setstate doif_Stromkosten1 2019-09-19 09:59:31 timer_01_c01 19.09.2019 10:00:31

Raspi2|nanoCul433|nanoCul868|CCU2
Energie-USBZähler|homebrew HM Devices
DBLog|DBRep|Homematic|Baumarktsteckdosen
Hue|Webcams mit DS-Station (Synology)|Bewegungsmelder|Rollladen|Schalter (IT|HM)

Damian

Es stürtzt erst ab, wenn ein Event zu einem in der uiTable definierten Trigger kommt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

cwagner

Zitat von: Damian am 18 September 2019, 23:33:04
Welche letzte Version läuft bei dir stabil? Poste bitte list von DI_Solarthermie bzw. DI_Warmwasser.

Version: # $Id: 98_DOIF.pm 20157 2019-09-13 21:08:50Z Damian $

Da ich auswärts bin, kann ich die beiden Listings erst heute Nacht liefern. Bis dahin hätte ich nur die Defines und die Attribute:


define DI_Warmwasser DOIF ((([[Aufstehen]-09:00] and [Proplanta_Vorhersage:Global.Radiation] < 0.8) or [18:00-21:00]) \
       and [T_Warmwasser:temperature:d]<54 and [abwesend:cmd_nr]==2) \
   (set Vorlauf 58) (set DI_RL_Anhebung cmd_2) (set DI_RL_Anhebung disable) (set DI_WW_Pumpe enable)   \
DOELSE (set DI_Heizanforder cmd_1) (set DI_RL_Anhebung enable) (set SW_02_WW_Pumpe off) (set DI_WW_Pumpe disable)
attr DI_Warmwasser uiTable {\
$SHOWNODEVICELINE = "Aktuell";;\
$TPL{onoff}="iconSwitch,on,10px-kreis-rot,off,10px-kreis-gruen";;\
}\
"DI_Warmwasser".":".[$SELF:state] | "T_Warmwasser".":".[T_Warmwasser:temperature:d1]."°C"|\
"DI_WW_Pumpe".":".WID ([DI_WW_Pumpe],"iconLabel,disabled,10px-kreis-rot,cmd_2,10px-kreis-gruen,cmd_1,10px-kreis-gelb") | "SW_02_WW_Pumpe".":".WID ([SW_02_WW_Pumpe],$TPL{onoff})

uiTable also noch "alte" Notation

Und auch bei DI_Solarthermie habe ich noch nicht in den Perlmodus umgeschaltet und auch noch nicht das XOR-Rechnen für die beiden verzögerten Set-Befehle eingeführt:

define DI_Solarthermie DOIF ## DOIF-Modus wegen Problem zweier Switch-Aufträge in der gleichen logischen Sekunde (einer wird vergessen)\
([T_Kollektor:temperature:d]>([?T_Solarspeicher_1:temperature:d]+15) and [?T_Warmwasser:temperature:d]<60) \
(set Switch_Heizkeller output Kollektor_Pumpe ON) (set Switch_Heizkeller output 3Wege-Ventil OFF)   ## Vorrang Warmwasser aufheizen\
DOELSEIF ([T_Kollektor:temperature:d]>([?T_Solarspeicher_2:temperature:d]+15) and [?T_Solarspeicher_2:temperature:d]<101) \
(set Switch_Heizkeller output Kollektor_Pumpe ON) (set Switch_Heizkeller output 3Wege-Ventil ON)     ## Rücklaufanhebung aufheizen\
DOELSE (set Switch_Heizkeller output Kollektor_Pumpe OFF) (set Switch_Heizkeller output 3Wege-Ventil OFF)     ## wir warten auf mehr Sonne
attr DI_Solarthermie uiTable {\
$SHOWNODEVICELINE = "Aktuell";;\
$ATTRIBUTESFIRST =  1;;\
$TC{1,5,7}= "style='font-weight:bold;;font-size:11pt;;'";;\
$TC{5,7}="align='right'";;\
}\
"DI_Solarthermie".":","T_Kollektor".":"|\
[$SELF:state],[T_Kollektor:temperature:d1]."°"|\
WID([Switch_Heizkeller:Kollektor_Pumpe],"iconLabel,on,sani_solar_temp\@green")|\
WID([Switch_Heizkeller:3Wege-Ventil],"iconLabel,OFF,sani_water_tap\@green,ON,sani_heating\@green")|\
.[T_VL_Kollektor:temperature:d1]."°VL",[T_RL_Kollektor:temperature:d1]."°RL" |\
"SP 1 unten:","SP 2 unten:"|\
[T_Solarspeicher_1:temperature:d1]."°",[T_Solarspeicher_2:temperature:d1]."°"|\
"oben:","oben:"|\
[T_Warmwasser:temperature:d1]."°",[T_RL_Anhebung:temperature:d1]."°"
attr DI_Solarthermie do allways
attr DI_Solarthermie wait 180,25:180,25:180,25



Grüße

Christian
PI 2B+/3B+ Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

Damian

OK. Die Änderungen zu Version: # $Id: 98_DOIF.pm 20157 2019-09-13 21:08:50Z Damian $ sind überschaubar, aber wichtig. Ich muss als nächstes den Absturz, wie schon geschrieben, nachstellen können, damit ich das eigentliche Problem erkennen kann.

Es hat auf jeden Fall etwas mit den Triggerangaben in uiTable zu tun und weniger mit der Definition des DOIFs selbst.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

Ich bräuchte noch mal den Absturz mit stacktrace (Attribut stacktrace in global auf 1 setzen)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

#21
So, jetzt aber. Blöder Tippfehler hat mich jetzt zwei Tage Suche gekostet.

Im Anhang korrigierte Version.

Edit: Version eingecheckt



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

cwagner

Gratulation! Bei mir läuft es jetzt rund! Danke für Deine Arbeit und schade für die Zeit, die Du investieren musstest.

Herzliche Grüße

Christian
PI 2B+/3B+ Raspbian 12, Perl 5.36.0, FHEM 6.3: 295 Module in ConfigDB: Steuerung Heizkessel, FBH, Solarthermie, kontr. Lüftung mit WRG. Smarthome u.a. HMCUL, 1-Wire (FT232RL ; DS2480B), EnOcean (TCM EPS3), MQTT2. DOIF, PID20, Threshold, OWX; Micropelt IRTV, Volkszähler, SolarForecast; MariaDB

Damian

Neue Version eingecheckt. Es war mir schon klar, dass die letzten Versionen etwas anfälliger sein würden, weil ich grundlegende Triggermechnismen intern geändert habe. Aber langsam kommen wir auf die gewohnte Stabilität des Moduls ;)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Kai-Alfonso

Zitat von: Damian am 19 September 2019, 23:16:56
Neue Version eingecheckt. Es war mir schon klar, dass die letzten Versionen etwas anfälliger sein würden, weil ich grundlegende Triggermechnismen intern geändert habe. Aber langsam kommen wir auf die gewohnte Stabilität des Moduls ;)

Super, vielen Dank - bei mir läuft es seit 9 Uhr einwandfrei durch
Raspi2|nanoCul433|nanoCul868|CCU2
Energie-USBZähler|homebrew HM Devices
DBLog|DBRep|Homematic|Baumarktsteckdosen
Hue|Webcams mit DS-Station (Synology)|Bewegungsmelder|Rollladen|Schalter (IT|HM)