Moin,
ich habe heute mal wieder ein Update gemacht und seitdem stürzt Fhem immer ab und startet sich neu. Ich habe ein Doif als Übertäter ausfindig gemacht, was bis dato einwandfrei seit 2 Jahren lief:
([+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")
})
Hier berechne ich die Anzahl der Tage bis Tag x - ok, mit Blick darauf muss das doif auch nicht alle 60 sekunden laufen. Anyway - jedenfalls stürzt fhem immer ab mit der Meldung
Can't use string ("doif_Stromkosten1_uiTable_c_3_1_"...) as an ARRAY ref while "strict refs" in use at ./FHEM/98_DOIF.pm line 2218.
Also muss es irgendwas mit dem Perl Code zu tun haben. Vielleicht kann jemand mal helfen?
Es hat etwas mit uiTable-Attribut zu tun. Hast du DOIFs mit dem Attribut im Einsatz?
Zitat von: Damian am 18 September 2019, 13:09:12
Es hat etwas mit uiTable-Attribut zu tun. Hast du DOIFs mit dem Attribut im Einsatz?
Ja, genau das doif nutzt ui Table
"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))
Muss ich mir genau anschauen, wenn ich heute Abend zuhause bin.
Zitat von: Damian am 18 September 2019, 13:13:51
Muss ich mir genau anschauen, wenn ich heute Abend zuhause bin.
Super, danke Dir 8) 8)
Zitat von: Kai-Alfonso am 18 September 2019, 13:18:01
Super, danke Dir 8) 8)
Poste bitte list von diesem DOIF
Zitat von: Damian am 18 September 2019, 13:44:59
Poste bitte list von diesem DOIF
gerne
Internals:
DEF ([+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")
})
FUUID 5c482d46-f33f-ce3b-0adf-9f18b704ce92cc28
MODEL FHEM
NAME doif_Stromkosten1
NOTIFYDEV global
NR 162
NTFY_ORDER 50-doif_Stromkosten1
STATE initialized
TYPE DOIF
VERSION 20163 2019-09-15 16:48:42
.attraggr:
.attrminint:
READINGS:
2018-12-08 08:33:46 Abschlag 75
2019-03-08 12:21:18 Arbeitspreis 25.40
2019-03-08 12:21:53 Grundpreis 96
2018-12-04 12:34:25 Start_Abrechnungsperiode 01.12
2019-09-18 10:42:24 Tage 291
2019-09-18 13:50:24 cmd 0
2019-09-18 13:50:24 mode enabled
2019-09-18 13:50:24 state initialized
2019-09-18 13:50:24 timer_01_c01 18.09.2019 13:51:24
Regex:
accu:
uiTable:
doif_Stromkosten1:
doif_Stromkosten1_uiTable_c_0_1_0_0:
Arbeitspreis ^doif_Stromkosten1$:^Arbeitspreis:
doif_Stromkosten1_uiTable_c_1_1_0_0:
Grundpreis ^doif_Stromkosten1$:^Grundpreis:
doif_Stromkosten1_uiTable_c_2_1_0_0:
Start_Abrechnungsperiode ^doif_Stromkosten1$:^Start_Abrechnungsperiode:
doif_Stromkosten1_uiTable_c_3_1_0_0:
Abschlag ^doif_Stromkosten1$:^Abschlag:
doif_Stromkosten1_uiTable_c_4_1_0_0:
Tage ^doif_Stromkosten1$:^Tage:
doif_Stromkosten1_uiTable_c_5_1_0_0:
Tage ^doif_Stromkosten1$:^Tage:
doif_Stromkosten1_uiTable_c_8_1_0_0:
Arbeitspreis ^doif_Stromkosten1$:^Arbeitspreis:
Grundpreis ^doif_Stromkosten1$:^Grundpreis:
Tage ^doif_Stromkosten1$:^Tage:
doif_Stromkosten1_uiTable_c_9_1_0_0:
Abschlag ^doif_Stromkosten1$:^Abschlag:
Arbeitspreis ^doif_Stromkosten1$:^Arbeitspreis:
Grundpreis ^doif_Stromkosten1$:^Grundpreis:
Tage ^doif_Stromkosten1$:^Tage:
myElectricityCalculator:
doif_Stromkosten1_uiTable_c_5_1_0_0:
Stromzaehler_total_consumption_EnergyMeter ^myElectricityCalculator$:^Stromzaehler_total_consumption_EnergyMeter:
doif_Stromkosten1_uiTable_c_6_1_0_0:
Stromzaehler_total_consumption_EnergyMeter ^myElectricityCalculator$:^Stromzaehler_total_consumption_EnergyMeter:
doif_Stromkosten1_uiTable_c_7_1_0_0:
Stromzaehler_total_consumption_EnergyCostMeter ^myElectricityCalculator$:^Stromzaehler_total_consumption_EnergyCostMeter:
doif_Stromkosten1_uiTable_c_8_1_0_0:
Stromzaehler_total_consumption_EnergyMeter ^myElectricityCalculator$:^Stromzaehler_total_consumption_EnergyMeter:
doif_Stromkosten1_uiTable_c_9_1_0_0:
Stromzaehler_total_consumption_EnergyMeter ^myElectricityCalculator$:^Stromzaehler_total_consumption_EnergyMeter:
attr:
cmdState:
0:
1
condition:
0 ::DOIF_time_once($hash,0,$wday)
days:
do:
0:
0 {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") }
1:
helper:
globalinit 1
last_timer 1
sleeptimer -1
intervalfunc:
localtime:
0 1568807484
realtime:
0 13:51:24
time:
0 +60
timeCond:
0 0
timer:
0 0
timers:
0 0
triggertime:
1568807484:
localtime 1568807484
hash:
uiState:
uiTable:
dev doif_Stromkosten1
package
reading Abschlag
table:
0:
0:
0:
0 "Arbeitspreis (Cent/kWh)"
1:
0:
0 ::DOIF_Widget($hash,$reg,'doif_Stromkosten1_uiTable_c_0_1_0_0',(::ReadingValDoIf($hash,'doif_Stromkosten1','Arbeitspreis')),"")
1:
0:
0:
0 "Grundpreis (Euro/Jahr)"
1:
0:
0 ::DOIF_Widget($hash,$reg,'doif_Stromkosten1_uiTable_c_1_1_0_0',(::ReadingValDoIf($hash,'doif_Stromkosten1','Grundpreis')),"")
2:
0:
0:
0 "Start Abrechnungsperiode"
1:
0:
0 ::DOIF_Widget($hash,$reg,'doif_Stromkosten1_uiTable_c_2_1_0_0',(::ReadingValDoIf($hash,'doif_Stromkosten1','Start_Abrechnungsperiode')),"")
3:
0:
0:
0 "Abschlag (Euro/Monat)"
1:
0:
0 ::DOIF_Widget($hash,$reg,'doif_Stromkosten1_uiTable_c_3_1_0_0',(::ReadingValDoIf($hash,'doif_Stromkosten1','Abschlag')),"")
4:
0:
0:
0 "Tage Abrechnugsperiode"
1:
0:
0 ::DOIF_Widget($hash,$reg,'doif_Stromkosten1_uiTable_c_4_1_0_0',::ReadingValDoIf($hash,'doif_Stromkosten1','Tage'),"")
5:
0:
0:
0 "Stromverbrauch Hochrechnung"
1:
0:
0 ::DOIF_Widget($hash,$reg,'doif_Stromkosten1_uiTable_c_5_1_0_0', sprintf("%.f kWh", (::ReadingValDoIf($hash,'myElectricityCalculator','Stromzaehler_total_consumption_EnergyMeter'))/::ReadingValDoIf($hash,'doif_Stromkosten1','Tage')*365),"")
6:
0:
0:
0 "Stromverbrauch bis jetzt"
1:
0:
0 ::DOIF_Widget($hash,$reg,'doif_Stromkosten1_uiTable_c_6_1_0_0',sprintf("%.2f kWh" , ::ReadingValDoIf($hash,'myElectricityCalculator','Stromzaehler_total_consumption_EnergyMeter')),"")
7:
0:
0:
0 "Stromkosten bis jetzt"
1:
0:
0 ::DOIF_Widget($hash,$reg,'doif_Stromkosten1_uiTable_c_7_1_0_0',sprintf("%.2f Euro" , ::ReadingValDoIf($hash,'myElectricityCalculator','Stromzaehler_total_consumption_EnergyCostMeter')),"")
8:
0:
0:
0 "Stromkosten Hochrechnung"
1:
0:
0 ::DOIF_Widget($hash,$reg,'doif_Stromkosten1_uiTable_c_8_1_0_0', sprintf("%.2f Euro", ((::ReadingValDoIf($hash,'myElectricityCalculator','Stromzaehler_total_consumption_EnergyMeter'))/::ReadingValDoIf($hash,'doif_Stromkosten1','Tage')*365)*(::ReadingValDoIf($hash,'doif_Stromkosten1','Arbeitspreis')/100)+::ReadingValDoIf($hash,'doif_Stromkosten1','Grundpreis')),"")
9:
0:
0:
0 "Nachzahlung/Gutschrift"
1:
0:
0 ::DOIF_Widget($hash,$reg,'doif_Stromkosten1_uiTable_c_9_1_0_0', sprintf("%.2f Euro", (::ReadingValDoIf($hash,'myElectricityCalculator','Stromzaehler_total_consumption_EnergyMeter')/::ReadingValDoIf($hash,'doif_Stromkosten1','Tage')*365)*(::ReadingValDoIf($hash,'doif_Stromkosten1','Arbeitspreis')/100)+::ReadingValDoIf($hash,'doif_Stromkosten1','Grundpreis')-(::ReadingValDoIf($hash,'doif_Stromkosten1','Abschlag')*12)),"")
tc:
td:
0:
1:
2:
3:
4:
5:
6:
7:
8:
9:
tr:
Attributes:
alias Stromkosten
cmdState 1
do always
room Strom
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))
Teste bitte mal die angehängte Version
Edit: Version gelöscht
Diese Erfahrung hatte ich auch gemacht am Sonntag und bin dann wieder auf die vorige DOIF-Version im Repository zurückgegangen:
2019.09.16 22:29:17 1: PERL WARNING: Argument "" isn't numeric in numeric eq (==) at (eval 479) line 2.
Can't use string ("DI_Warmwasser_uiTable_c_0_0_0_2") as an ARRAY ref while "strict refs" in use at ./FHEM/98_DOIF.pm line 2218.
Hatte es noch nicht gepostet, da ich in meinem uiTables großräumig Änderungen gemacht hatte und daher erst einmal bei mir "sauber" machen wollte, ehe ich auf dieses Thema hinweise.
Christian
Daher bitte testen, bevor ich die neue Version einchecke.
Zitat von: Damian am 18 September 2019, 20:26:28
Daher bitte testen, bevor ich die neue Version einchecke.
Vielen Dank für die neue Version - ich komme erst morgen früh zum testen, melde mich dann aber sofort
Ich habe die korrigierte Version bereits eingecheckt, obwohl ich den Fehler bei mir nicht nachstellen konnte.
Hier muss ich leider enttäuschen, 2 Versuche mit übereinstimmenden Ergebnis:
1. laufendes FHEM, das DOIF aus dem Post reloaded und sofort:
2019.09.18 22:42:21 1: PERL WARNING: Subroutine FW_makeImage redefined at ./FHEM/98_DOIF.pm line 3686.
Can't use string ("DI_Solarthermie_uiTable_c_0_1_0_"...) as an ARRAY ref while "strict refs" in use at ./FHEM/98_DOIF.pm line 2216.
2. FHEM neustarten, im Hochfahren:
2019.09.18 22:44:26 1: PERL WARNING: Found = in conditional, should be == at (eval 474) line 2.
Can't use string ("DI_Warmwasser_uiTable_c_0_0_0_2") as an ARRAY ref while "strict refs" in use at ./FHEM/98_DOIF.pm line 2216.
In beiden Fällen wird FHEM abgeschossen:
fhem.service - FHEM Home Automation
Loaded: loaded (/etc/systemd/system/fhem.service; enabled; vendor preset: ena
Active: failed (Result: exit-code) since Wed 2019-09-18 22:44:27 CEST; 4min 5
Process: 25443 ExecStart=/usr/bin/perl fhem.pl configDB (code=exited, status=0
Main PID: 25444 (code=exited, status=255)
Sep 18 22:43:01 PI3 systemd[1]: Starting FHEM Home Automation...
Sep 18 22:43:02 PI3 systemd[1]: Started FHEM Home Automation.
Sep 18 22:44:27 PI3 systemd[1]: fhem.service: Main process exited, code=exited,
Sep 18 22:44:27 PI3 systemd[1]: fhem.service: Unit entered failed state.
Sep 18 22:44:27 PI3 systemd[1]: fhem.service: Failed with result 'exit-code'.
lines 1-11/11 (END)
Herzliche Grüße
Christian
Welche letzte Version läuft bei dir stabil? Poste bitte list von DI_Solarthermie bzw. DI_Warmwasser.
Bei mir stürzt auch die neue Version ab - aber lustigerweise nicht direkt, sondern erst nach x minuten
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.
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
Es stürtzt erst ab, wenn ein Event zu einem in der uiTable definierten Trigger kommt.
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
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.
Ich bräuchte noch mal den Absturz mit stacktrace (Attribut stacktrace in global auf 1 setzen)
So, jetzt aber. Blöder Tippfehler hat mich jetzt zwei Tage Suche gekostet.
Im Anhang korrigierte Version.
Edit: Version eingecheckt
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
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 ;)
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