diff --git a/fhem/FHEM/23_LUXTRONIK2.pm b/fhem/FHEM/23_LUXTRONIK2.pm
index 5878c9c9b..6001ab57a 100644
--- a/fhem/FHEM/23_LUXTRONIK2.pm
+++ b/fhem/FHEM/23_LUXTRONIK2.pm
@@ -630,9 +630,9 @@ LUXTRONIK2_UpdateDone($)
LUXTRONIK2_Log $hash, 4, $string;
#Define Status Messages
- my %wpOpStat1 = ( 0 => "Waermepumpe laeuft",
- 1 => "Waermepumpe steht",
- 2 => "Waermepumpe kommt",
+ my %wpOpStat1 = ( 0 => "Wärmepumpe läuft",
+ 1 => "Wärmepumpe steht",
+ 2 => "Wärmepumpe kommt",
4 => "Fehler",
5 => "Abtauen",
6 => "Warte auf LIN-Verbindung",
@@ -641,7 +641,7 @@ LUXTRONIK2_UpdateDone($)
my %wpOpStat2 = ( 0 => "Heizbetrieb",
1 => "Keine Anforderung",
- 2 => "Netz Einschaltverzoegerung",
+ 2 => "Netz Einschaltverzögerung",
3 => "Schaltspielzeit",
4 => "EVU Sperrzeit",
5 => "Brauchwasser",
@@ -649,11 +649,11 @@ LUXTRONIK2_UpdateDone($)
7 => "Abtauen",
8 => "Pumpenvorlauf",
9 => "Thermische Desinfektion",
- 10 => "Kuehlbetrieb",
+ 10 => "Kühlbetrieb",
12 => "Schwimmbad/Photovoltaik",
13 => "Heizen_Ext_En",
14 => "Brauchw_Ext_En",
- 16 => "Durchflussueberwachung",
+ 16 => "Durchflussüberwachung",
17 => "Elektrische Zusatzheizung" );
my %wpMode = ( 0 => "Automatik",
@@ -726,7 +726,7 @@ LUXTRONIK2_UpdateDone($)
}
else {
readingsSingleUpdate($hash,"state","Error: Reading skipped after $counterRetry tries",1);
- LUXTRONIK2_Log $hash, 2, "Device reading skipped after $counterRetry tries with parameter change on target";
+ LUXTRONIK2_Log $hash, 2, "Device readout skipped after $counterRetry tries with parameter change on target";
}
}
# Update readings
@@ -766,17 +766,17 @@ LUXTRONIK2_UpdateDone($)
my $heatPumpPower = 0;
my $heatRodPower = AttrVal($name, "heatRodElectricalPowerWatt", 0);
- #WM[kW] = delta_Temp [K] * Durchfluss [l/h] / ( 3.600 [kJ/kWh] / ( 4,179 [kJ/(kg*K)] (H2O Wärmekapazität bei 30 & 40°C) * 0,994 [kg/l] (H2O Dichte bei 35°C) )
+ #WM[kW] = delta_Temp [K] * Durchfluss [l/h] / ( 3.600 [kJ/kWh] / ( 4,179 [kJ/(kg*K)] (H2O Wärmekapazität bei 30 & 40°C) * 0,994 [kg/l] (H2O Dichte bei 35°C) )
my $thermalPower = 0;
- # 0=Heizen, 5=Brauchwasser, 7=Abtauen, 16=Durchflussüberwachung
+ # 0=Heizen, 5=Brauchwasser, 7=Abtauen, 16=Durchflussüberwachung
if ($opStateHeatPump3 =~ /^(0|5|16)$/) {
- if ($flowRate !~ /no|inconsistent/) { $thermalPower = abs($flowTemperature - $returnTemperature) * $flowRate / 866.65; } #Nur bei Wärmezählern
+ if ($flowRate !~ /no|inconsistent/) { $thermalPower = abs($flowTemperature - $returnTemperature) * $flowRate / 866.65; } #Nur bei Wärmezählern
$heatPumpPower = AttrVal($name, "heatPumpElectricalPowerWatt", -1);
$heatPumpPower *= (1 + ($flowTemperature-35) * AttrVal($name, "heatPumpElectricalPowerFactor", 0));
}
- if ($flowRate !~ /no|inconsistent/) { readingsBulkUpdate( $hash, "thermalPower", sprintf "%.1f", $thermalPower); } #Nur bei Wärmezählern
+ if ($flowRate !~ /no|inconsistent/) { readingsBulkUpdate( $hash, "thermalPower", sprintf "%.1f", $thermalPower); } #Nur bei Wärmezählern
if ($heatPumpPower >-1 ) { readingsBulkUpdate( $hash, "heatPumpElectricalPowerEstimated", sprintf "%.0f", $heatPumpPower); }
- if ($heatPumpPower > 0 && $flowRate !~ /no|inconsistent/) { #Nur bei Wärmezählern
+ if ($heatPumpPower > 0 && $flowRate !~ /no|inconsistent/) { #Nur bei Wärmezählern
$cop = $thermalPower * 1000 / $heatPumpPower;
readingsBulkUpdate( $hash, "COP", sprintf "%.2f", $cop);
}
@@ -869,28 +869,30 @@ LUXTRONIK2_UpdateDone($)
# Heating operating state
# Consider also heating limit
if ($a[10] == 0 && $a[11] == 1
- && $averageAmbientTemperature >= $thresholdHeatingLimit
- && ($returnTemperatureTarget eq $returnTemperatureTargetMin || $returnTemperatureTarget == 20 && $ambientTemperature<10)
- ) {
- if ($ambientTemperature>=10 ) {
- $value = "Heizgrenze (Soll ".$returnTemperatureTargetMin." C)";
- }
- else {
- $value = "Frostschutz (Soll 20 C)";
- }
- } else {
+ && $averageAmbientTemperature >= $thresholdHeatingLimit
+ && ($returnTemperatureTarget eq $returnTemperatureTargetMin || $returnTemperatureTarget == 20 && $ambientTemperature<10)
+ ) {
+ if ($ambientTemperature>=10 ) {
+ $value = "Heizgrenze (Soll ".$returnTemperatureTargetMin."°C)";
+ }
+ else {
+ $value = "Frostschutz (Soll 20°C)";
+ }
+ }
+ else {
$value = $heatingState{$a[46]};
$value = "unbekannt (".$a[46].")" unless $value;
# Consider heating reduction limit
if ($a[46] == 0) {
if ($thresholdTemperatureSetBack <= $ambientTemperature) {
- $value .= " ".LUXTRONIK2_CalcTemp($a[47])." C"; #° ° ° °
- } else {
- $value = "Normal da < ".$thresholdTemperatureSetBack." C";
+ $value .= " ".LUXTRONIK2_CalcTemp($a[47])."°C"; #° ° ° °
+ }
+ else {
+ $value = "Normal da < ".$thresholdTemperatureSetBack."°C";
}
}
- }
- readingsBulkUpdate($hash,"opStateHeating",$value);
+ }
+ readingsBulkUpdate($hash,"opStateHeating",$value);
# Ventilation operating mode
if ( $a[79] !~ /no/ ) {
@@ -913,7 +915,7 @@ LUXTRONIK2_UpdateDone($)
$hash->{fhem}{defrost}{hsIn} = $heatSourceIN;
$hash->{fhem}{defrost}{hsOut} = $heatSourceOUT;
}
- # Defrost-Readings erstellen
+ # Defrost-Readings creation
elsif ( $hash->{fhem}{defrost}{mode} ne "none" ) {
my $value = "Mode: " . $hash->{fhem}{defrost}{mode} . " Time: ";
$value .= strftime ( "%M:%S", localtime( time() - $hash->{fhem}{defrost}{startTime} ) );
@@ -931,7 +933,7 @@ LUXTRONIK2_UpdateDone($)
$hash->{fhem}{defrost}{mode} = "none";
- # 16 => "Durchflussueberwachung"
+ # 16 => "Durchflussüberwachung"
if ($opStateHeatPump3 == 16) {
readingsBulkUpdate( $hash, "heatSourceDefrostLastTimeout", "Amb: ".$hash->{fhem}{defrost}{amb}." hsIN: ".$hash->{fhem}{defrost}{hsIn}." hsOUT: ".$hash->{fhem}{defrost}{hsOut});
}
@@ -1040,10 +1042,10 @@ LUXTRONIK2_UpdateDone($)
my $firmware = $a[20];
readingsBulkUpdate($hash,"firmware",$firmware);
my $firmwareCheck = LUXTRONIK2_checkFirmware($firmware);
- # if unknown firmware, ask at each startup to inform comunity
+ # if unknown firmware, ask at each startup to inform community
if ($hash->{fhem}{alertFirmware} != 1 && $firmwareCheck eq "fwNotTested") {
$hash->{fhem}{alertFirmware} = 1;
- LUXTRONIK2_Log $hash, 2, "Alert: Host uses untested Firmware '$a[20]'. Please inform FHEM comunity about compatibility.";
+ LUXTRONIK2_Log $hash, 2, "Alert: Host uses untested Firmware '$a[20]'. Please inform FHEM community about compatibility.";
}
# Type of Heatpump
@@ -1064,7 +1066,7 @@ LUXTRONIK2_UpdateDone($)
$value .= "$opStateHeatPump1
\n";
$value .= "$opStateHeatPump2
\n";
$value .= "$opStateHeatPump3Txt
\n";
- $value .= "Brauchwasser: ".$hotWaterTemperature."°C";
+ $value .= "Brauchwasser: ".$hotWaterTemperature."°C";
readingsBulkUpdate($hash,"floorplanHTML",$value);
}
# State update
@@ -1719,7 +1721,7 @@ LUXTRONIK2_doStatisticThermalPower ($$$$$$$$$)
$last[6] = $targetTemp;
$last[7] = $electricalPower;
- } elsif ($last[0] == $MonitoredOpState && ($currOpState == $MonitoredOpState || $currOpState == 16) ) { #16=Durchflussüberwachung
+ } elsif ($last[0] == $MonitoredOpState && ($currOpState == $MonitoredOpState || $currOpState == 16) ) { #16=Durchflussüberwachung
# Store intermediate values as long as the correct opMode runs
$save = 1;
$last[3] += $currAmbTemp;
@@ -1727,7 +1729,7 @@ LUXTRONIK2_doStatisticThermalPower ($$$$$$$$$)
$last[5]++;
$last[7] += $electricalPower;
- } elsif ($last[0] == $MonitoredOpState && $currOpState != $MonitoredOpState && $currOpState != 16 ) { #16=Durchflussüberwachung
+ } elsif ($last[0] == $MonitoredOpState && $currOpState != $MonitoredOpState && $currOpState != 16 ) { #16=Durchflussüberwachung
# Do statistics at the end of the monitored operation if it run at least 9.5 minutes
$save = 1;
$last[0] = $currOpState;
diff --git a/fhem/FHEM/72_FRITZBOX.pm b/fhem/FHEM/72_FRITZBOX.pm
index bd4b3a784..7c886badf 100644
--- a/fhem/FHEM/72_FRITZBOX.pm
+++ b/fhem/FHEM/72_FRITZBOX.pm
@@ -584,8 +584,15 @@ sub FRITZBOX_Get($@)
my $result = FRITZBOX_Web_Query( $hash, $queryStr) ;
my $tmp;
- if (ref $result->{result} eq "") { $tmp = $result->{result}; }
- else { $tmp = Dumper ($result->{result}); }
+ if (defined $result->{Error} ) {
+ $tmp = "ERROR:\n".Dumper ($result->{Error});
+ }
+ elsif (ref $result->{result} ) {
+ $tmp = Dumper ($result->{result} );
+ }
+ else {
+ $tmp = "Unexpected result: " . Dumper ($result);
+ }
return $returnStr . $tmp;
}
elsif( lc $cmd eq "ringtones" ) {
@@ -4637,16 +4644,24 @@ sub FRITZBOX_Web_Query($$@)
return \%retHash;
}
- if ($response->content =~ /|"pid": "logout"/) {
+ my $jsonText = $response->content;
+
+ if ($jsonText =~ /|"pid": "logout"/) {
my %retHash = ("Error" => "Old SID not valid anymore.", "ResetSID" => "1");
return \%retHash;
}
+
+ if ( $jsonText !~ /{"/ ) {
+ chop $jsonText;
+ my %retHash = ("Error" => "no json string returned (".$jsonText.")", "ResetSID" => "1");
+ return \%retHash;
+ }
+
#################
- # FRITZBOX_Log $hash, 3, "Response: ".$response->content;
+ #FRITZBOX_Log $hash, 3, "Response: ".$response->content;
#################
- my $jsonText = $response->content;
# Remove illegal escape sequences
$jsonText =~ s/\\'/'/g; #Hochkomma
$jsonText =~ s/\\x\{[0-9a-f]\}//g; #delete control codes (as hex numbers)
@@ -4659,6 +4674,8 @@ sub FRITZBOX_Web_Query($$@)
else {
$jsonResult = JSON->new->latin1->decode( $jsonText );
}
+ #Not a HASH reference at ./FHEM/72_FRITZBOX.pm line 4662.
+ # 2018.03.19 18:43:28 3: FRITZBOX: get Fritzbox luaQuery settings/sip
$jsonResult->{sid} = $sid;
$jsonResult->{Error} = $jsonResult->{error} if defined $jsonResult->{error};
return $jsonResult;
@@ -4815,7 +4832,7 @@ sub FRITZBOX_fritztris($)
=pod
=item device
-=item summary Controls some features of AVM's Fritz!Box router and repeater and Fritz!Fon.
+=item summary Controls some features of AVM's Fritz!Box, FRITZ!Repeater and Fritz!Fon.
=item summary_DE Steuert einige Funktionen von AVM's Fritz!Box, Fritz!Repeater und Fritz!Fon.
=begin html