LUXTRONIK2,OPENWEATHER,PROPLANTA,JSONMETER,FRITZBOX,statistics: docu

git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@16438 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
tupol 2018-03-18 18:51:57 +00:00
parent ddf49c7df1
commit b364da46ad
6 changed files with 343 additions and 318 deletions

View File

@ -1,4 +1,4 @@
###############################################################
###############################################################
# $Id$Date: $
#
# 23_LUXTRONIK2.pm
@ -8,7 +8,7 @@
#
# Copyright notice
#
# The modul reads and writes parameters of the heat pump controller
# The module reads and writes parameters of the heat pump controller
# Luxtronik 2.0 used in Alpha Innotec and Siemens Novelan (WPR NET) heat pumps.
#
# This script is free software; you can redistribute it and/or modify
@ -85,7 +85,7 @@ LUXTRONIK2_Initialize($)
"autoSynchClock:slider,10,5,300 ".
"boilerVolumn ".
"compressor2ElectricalPowerWatt ".
"doStatistics:0,1 ".
"doStatistics:0,1,2 ".
"heatPumpElectricalPowerFactor ".
"heatPumpElectricalPowerWatt ".
"heatRodElectricalPowerWatt ".
@ -289,7 +289,7 @@ LUXTRONIK2_Set($$@)
$hash->{LOCAL} = 0;
return $resultStr;
}
elsif( int(@_)==4 && $cmd eq 'hotWaterCircPumpDeaerate' ) { # Einstellung->Entlüftung
elsif( int(@_)==4 && $cmd eq 'hotWaterCircPumpDeaerate' ) { # Einstellung->Entlüftung
Log3 $name, 3, "set $name $cmd $val";
return "$name Error: Wrong parameter given for opModeHotWater, use Automatik,Party,Off"
if $val !~ /on|off/;
@ -598,9 +598,9 @@ sub LUXTRONIK2_DoUpdate($)
$rName = "userValue$rIndex" if $rName eq "";
$return_str .= $rName." ".$heatpump_values[$rIndex];
}
# 77 - VentSupplyAirTemp
# 77 - VentSupplyAirTemperature
$return_str .= "|".($heatpump_visibility[264]==1 ? $heatpump_values[159] : "no");;
# 78 - VentExhaustAirTemp
# 78 - VentExhaustAirTemperature
$return_str .= "|".($heatpump_visibility[265]==1 ? $heatpump_values[160] : "no");;
# 79 - opModeVentilation
$return_str .= "|".($heatpump_visibility[4]==1 ? $heatpump_parameters[894] : "no");;
@ -696,7 +696,7 @@ LUXTRONIK2_UpdateDone($)
my %ventMode = ( 0 => "Automatik",
1 => "Party",
2 => "Feuchte",
2 => "Feuchteschutz",
3 => "Aus");
my $counterRetry = $hash->{fhem}{counterRetry};
@ -782,8 +782,13 @@ LUXTRONIK2_UpdateDone($)
}
# if selected, do all the statistic calculations
# if attribute doStatistic = 1 do all the statistic calculations
# if attribute doStatistic = 2 do only those statistic calculations not included in FHEM Module statistics
if ( $doStatistic == 1) {
# LUXTRONIK2_doStatisticMinMax $hash, $readingName, $value
LUXTRONIK2_doStatisticMinMax ( $hash, "statAmbientTemp", $ambientTemperature);
}
if ( $doStatistic >= 1) {
#LUXTRONIK2_doStatisticBoilerHeatUp $hash, $currOpHours, $currHQ, $currTemp, $opState, $target
$value = LUXTRONIK2_doStatisticBoilerHeatUp ($hash, $a[35], $a[37]/10, $hotWaterTemperature, $opStateHeatPump3,$hotWaterTemperatureTarget);
if ($value ne "") {
@ -814,12 +819,7 @@ LUXTRONIK2_UpdateDone($)
if ($value ne "") { readingsBulkUpdate($hash,"statThermalPowerBoiler",$value); }
$value = LUXTRONIK2_doStatisticThermalPower ($hash, 0, $opStateHeatPump3, $a[36]/10, $a[34], $ambientTemperature, $heatSourceIN, $returnTemperatureTarget, $heatPumpPower);
if ($value ne "") { readingsBulkUpdate($hash,"statThermalPowerHeating",$value); }
# LUXTRONIK2_doStatisticMinMax $hash, $readingName, $value
LUXTRONIK2_doStatisticMinMax ( $hash, "statAmbientTemp", $ambientTemperature);
}
#Operating status of heat pump
my $opStateHeatPump1 = $wpOpStat1{$a[2]}; ##############
$opStateHeatPump1 = "unbekannt (".$a[2].")" unless $opStateHeatPump1;
@ -893,7 +893,7 @@ LUXTRONIK2_UpdateDone($)
readingsBulkUpdate($hash,"opStateHeating",$value);
# Ventilation operating mode
if ( $a[79] ne "no" ) {
if ( $a[79] !~ /no/ ) {
$value = $ventMode{$a[79]};
$value = "unbekannt (".$a[79].")" unless $value;
readingsBulkUpdate($hash,"opModeVentilation",$value);
@ -913,6 +913,7 @@ LUXTRONIK2_UpdateDone($)
$hash->{fhem}{defrost}{hsIn} = $heatSourceIN;
$hash->{fhem}{defrost}{hsOut} = $heatSourceOUT;
}
# Defrost-Readings erstellen
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} ) );
@ -920,7 +921,16 @@ LUXTRONIK2_UpdateDone($)
$value .= " hsIN: ".$hash->{fhem}{defrost}{hsInStart} . " - ". $hash->{fhem}{defrost}{hsIn};
#$value .= " hsOUT: ".$hash->{fhem}{defrost}{hsOutStart} . " - ". $heatSourceOUT;
readingsBulkUpdate( $hash, "heatSourceDefrostLast", $value);
my $rName = "heatSourceDefrostCounter";
$rName .= "Air" if $hash->{fhem}{defrost}{mode} eq "air";
$rName .= "Reverse" if $hash->{fhem}{defrost}{mode} eq "reverse";
my $rValue = ReadingsVal ( $name, $rName, 0 ) + 1;
readingsBulkUpdate ( $hash, $rName, 0 ) if $rValue == 1; #for statistics module
readingsBulkUpdate ( $hash, $rName, $rValue );
$hash->{fhem}{defrost}{mode} = "none";
# 16 => "Durchflussueberwachung"
if ($opStateHeatPump3 == 16) {
readingsBulkUpdate( $hash, "heatSourceDefrostLastTimeout", "Amb: ".$hash->{fhem}{defrost}{amb}." hsIN: ".$hash->{fhem}{defrost}{hsIn}." hsOUT: ".$hash->{fhem}{defrost}{hsOut});
@ -986,8 +996,8 @@ LUXTRONIK2_UpdateDone($)
if ($a[58] !~ /no/) {readingsBulkUpdate( $hash, "mixer2TargetTemperature",LUXTRONIK2_CalcTemp($a[58]));}
if ($a[59] !~ /no/) {readingsBulkUpdate( $hash, "mixer3FlowTemperature",LUXTRONIK2_CalcTemp($a[59]));}
if ($a[60] !~ /no/) {readingsBulkUpdate( $hash, "mixer3TargetTemperature",LUXTRONIK2_CalcTemp($a[60]));}
if ($a[77] !~ /no/) {readingsBulkUpdate( $hash, "VentSupplyAirTemperature",LUXTRONIK2_CalcTemp($a[77]));}
if ($a[78] !~ /no/) {readingsBulkUpdate( $hash, "VentExhaustAirTemperature",LUXTRONIK2_CalcTemp($a[78]));}
if ($a[77] !~ /no/) {readingsBulkUpdate( $hash, "ventSupplyAirTemperature",LUXTRONIK2_CalcTemp($a[77]));}
if ($a[78] !~ /no/) {readingsBulkUpdate( $hash, "ventExhaustAirTemperature",LUXTRONIK2_CalcTemp($a[78]));}
# Operating hours (seconds->hours) and heat quantities
# LUXTRONIK2_storeReadings: $hash, $readingName, $value, $factor, $doStatistic, $electricalPower
@ -1071,7 +1081,7 @@ LUXTRONIK2_UpdateDone($)
# $defrostValve = $a[67]; #AVout
# $hotWaterBoilerValve = $a[9]; #BUP
# $heatingSystemCircPump = $a[27]; #HUP
# 0=Heizen, 1=keine Anforderung, 3=Schaltspielzeit, 5=Brauchwasser, 7=Abtauen, 16=Durchflussüberwachung
# 0=Heizen, 1=keine Anforderung, 3=Schaltspielzeit, 5=Brauchwasser, 7=Abtauen, 16=Durchflussüberwachung
my $lastHeatingCycle = ReadingsVal($name, "heatingCycle", "");
if ( $opStateHeatPump3 == 0 ) {
readingsBulkUpdate($hash, "heatingCycle", "running");
@ -1827,7 +1837,7 @@ LUXTRONIK2_doStatisticBoilerHeatUp ($$$$$$)
#real (mixed) Temperature-Difference
my $boilerVolumn = AttrVal($name, "boilerVolumn", 0);
if ($boilerVolumn >0 ) {
# (delta T) [K] = Wärmemenge [kWh] / #Volumen [l] * ( 3.600 [kJ/kWh] / ( 4,179 [kJ/(kg*K)] (H2O Wärmekapazität bei 40°C) * 0,992 [kg/l] (H2O Dichte bei 40°C) ) [K/(kWh*l)] )
# (delta T) [K] = Wärmemenge [kWh] / #Volumen [l] * ( 3.600 [kJ/kWh] / ( 4,179 [kJ/(kg*K)] (H2O Wärmekapazität bei 40°C) * 0,992 [kg/l] (H2O Dichte bei 40°C) ) [K/(kWh*l)] )
$value2 = 868.4 * $value3 / $boilerVolumn ;
$returnStr .= sprintf " realDT: %.0f", $value2;
}
@ -1907,8 +1917,8 @@ LUXTRONIK2_doStatisticBoilerCoolDown ($$$$$$)
}
# Calculates single MaxMin Values and informs about end of day and month
sub ########################################
LUXTRONIK2_doStatisticMinMax ($$$)
########################################
sub LUXTRONIK2_doStatisticMinMax ($$$)
{
my ($hash, $readingName, $value) = @_;
my $dummy;
@ -2007,10 +2017,10 @@ LUXTRONIK2_doStatisticMinMaxSingle ($$$$)
return;
}
sub ########################################
LUXTRONIK2_storeReadings($$$$$$)
########################################
sub LUXTRONIK2_storeReadings($$$$$$)
{
my ($hash, $readingName, $value, $factor, $doStatistics, $electricalPower) = @_;
my ($hash, $readingName, $value, $factor, $doStatistic, $electricalPower) = @_;
if ($value eq "no" || $value == 0 ) { return; }
@ -2019,12 +2029,12 @@ LUXTRONIK2_storeReadings($$$$$$)
$readingName =~ s/counter//;
# LUXTRONIK2_doStatisticDelta: $hash, $readingName, $value, $factor, $electricalPower
if ( $doStatistics == 1) { LUXTRONIK2_doStatisticDelta $hash, "stat".$readingName, $value, $factor, $electricalPower; }
if ( $doStatistic == 1) { LUXTRONIK2_doStatisticDelta $hash, "stat".$readingName, $value, $factor, $electricalPower; }
}
# Calculates deltas for day, month and year
sub ########################################
LUXTRONIK2_doStatisticDelta ($$$$$)
########################################
sub LUXTRONIK2_doStatisticDelta ($$$$$)
{
my ($hash, $readingName, $value, $factor, $electricalPower) = @_;
my $name = $hash->{NAME};
@ -2182,8 +2192,8 @@ LUXTRONIK2_doStatisticDeltaSingle ($$$$$$$)
=pod
=item device
=item summary Connects with a Luxtronik 2.0 controller for heat pumps
=item summary_DE Verbindet mit einer Luxtronik 2.0 Heizungssteuerung für Wärmepumpen.
=item summary Connects with a Luxtronik 2.0 controller for heat pumps.
=item summary_DE Verbindet mit einer Luxtronik 2.0 Heizungssteuerung für Wärmepumpen.
=begin html
@ -2194,7 +2204,7 @@ LUXTRONIK2_doStatisticDeltaSingle ($$$$$$$)
Luxtronik 2.0 and 2.1 is a heating controller from <a href="http://www.alpha-innotec.de">Alpha InnoTec (AIT)</a> used in heat pumps of Alpha InnoTec, Buderus (Logamatic HMC20, HMC20 Z), CTA All-In-One (Aeroplus), Elco, Nibe (AP-AW10), Roth (ThermoAura&reg;, ThermoTerra), Novelan (WPR NET) and Wolf Heiztechnik (BWL/BWS).<br>
It has a built-in ethernet (RJ45) port, so it can be directly integrated into a local area network (LAN).
<br>
<i>The modul is reported to work with firmware: V1.51, V1.54C, V1.60, V1.64, V1.69, V1.70, V1.73, V1.77, V1.80, V1.81.</i>
<i>The module is reported to work with firmware: V1.51, V1.54C, V1.60, V1.64, V1.69, V1.70, V1.73, V1.77, V1.80, V1.81.</i>
<br>
More Info on the particular <a href="http://www.fhemwiki.de/wiki/Luxtronik_2.0">page of FHEM-Wiki</a> (in German).
<br>
@ -2218,7 +2228,7 @@ LUXTRONIK2_doStatisticDeltaSingle ($$$$$$$)
<ul>A firmware check assures before each set operation that a heat pump with untested firmware is not damaged accidently.
<li><code>activeTariff &lt; 0 - 9 &gt;</code>
<br>
Allows the separate measurement of the consumption (doStatistics = 1) within different tariffs.<br>
Allows the separate measurement of the consumption (doStatistics = 1 or 2) within different tariffs.<br>
This value must be set at the correct point of time in accordance to the existing or planned tariff <b>by the FHEM command "at"</b>.<br>
0 = without separate tariffs
</li><br>
@ -2295,11 +2305,11 @@ LUXTRONIK2_doStatisticDeltaSingle ($$$$$$$)
<li><code>compressor2ElectricalPowerWatt</code><br>
Electrical power of the 2nd compressor to calculated the COP and estimate electrical consumption (calculations not implemented yet)
</li><br>
<li><code>doStatistics &lt; 0 | 1 &gt;</code>
<li><code>doStatistics &lt; 0 | 1 | 2 &gt;</code>
<br>
Calculates statistic values: <i>statBoilerGradientHeatUp, statBoilerGradientCoolDown, statBoilerGradientCoolDownMin (boiler heat loss)</i>
1 or 2: Calculates statistic values: <i>statBoilerGradientHeatUp, statBoilerGradientCoolDown, statBoilerGradientCoolDownMin (boiler heat loss)</i>
<br>
Builds daily, monthly and yearly statistics for certain readings (average/min/max or cumulated values).
1: Builds daily, monthly and yearly statistics for certain readings (average/min/max or cumulated values).
<br>
Logging and visualisation of the statistic should be done with readings of type 'stat<i>ReadingName</i><b>Last</b>'.
</li><br>
@ -2326,8 +2336,8 @@ LUXTRONIK2_doStatisticDeltaSingle ($$$$$$$)
</li><br>
<li><code>userHeatpumpParameters &lt;Index [Name][,Index2 [Name2],Index3 [Name3] ...]&gt;</code>
<br>
Allows to continuousely read the value of certian controler parameters. The index number of the parameter can be determined with the get command <i>rawData</i><br>
In the attribute definition, a name can be writen behind the index number separated by a space. The respective parameter value will either be shown with the prefix "userParameter..." or under the given name. <br>
Allows to continuously read the value of certain controler parameters. The index number of the parameter can be determined with the get command <i>rawData</i><br>
In the attribute definition, a name can be written behind the index number separated by a space. The respective parameter value will either be shown with the prefix "userParameter..." or under the given name. <br>
Multiple indexes are separated by a comma.<br>
If the readings are not used anymore the can be deleted with the FHEM command <a href="#deletereading">deleteReading</a>.
</li><br>
@ -2348,9 +2358,9 @@ LUXTRONIK2_doStatisticDeltaSingle ($$$$$$$)
<h3>LUXTRONIK2</h3>
<div>
<ul>
Die Luxtronik 2.0 and 2.1 ist eine Heizungssteuerung der Firma <a href="http://www.alpha-innotec.de">Alpha InnoTec AIT</a>, welche in W&auml;rmepumpen von Alpha InnoTec, Buderus (Logamatic HMC20, HMC20 Z), CTA All-In-One (Aeroplus), Elco, Nibe (AP-AW10), Roth (ThermoAura&reg;, ThermoTerra), Novelan (WPR NET) und Wolf Heiztechnik (BWL/BWS) verbaut ist. Sie besitzt einen Ethernet (RJ45) Anschluss, so dass sie direkt in lokale Netzwerke (LAN) integriert werden kann.
Die Luxtronik 2.0 and 2.1 ist eine Heizungssteuerung der Firma <a href="http://www.alpha-innotec.de">Alpha InnoTec AIT</a>, welche in Wärmepumpen von Alpha InnoTec, Buderus (Logamatic HMC20, HMC20 Z), CTA All-In-One (Aeroplus), Elco, Nibe (AP-AW10), Roth (ThermoAura&reg;, ThermoTerra), Novelan (WPR NET) und Wolf Heiztechnik (BWL/BWS) verbaut ist. Sie besitzt einen Ethernet (RJ45) Anschluss, so dass sie direkt in lokale Netzwerke (LAN) integriert werden kann.
<br>
<i>Das Modul wurde bisher mit folgender Steuerungs-Firmware getestet: V1.51, V1.54C, V1.60, V1.64, V1.69, V1.70, V1.73, V1.77, V1.80, V1.81.</i>
<i>Das Modul wurde bisher mit folgender Steuerung-Firmware getestet: V1.51, V1.54C, V1.60, V1.64, V1.69, V1.70, V1.73, V1.77, V1.80, V1.81.</i>
<br>
Mehr Infos im entsprechenden <u><a href="http://www.fhemwiki.de/wiki/Luxtronik_2.0">Artikel der FHEM-Wiki</a></u>.
<br>&nbsp;
@ -2360,9 +2370,9 @@ LUXTRONIK2_doStatisticDeltaSingle ($$$$$$$)
<ul>
<code>define &lt;name&gt; LUXTRONIK2 &lt;IP-Adresse[:Port]&gt; [Abfrageinterval]</code>
<br>
Wenn das Abfrage-Interval nicht angegeben ist, wird es auf 300 (Sekunden) gesetzt. Der kleinste m&ouml;gliche Wert ist 10.
Wenn das Abfrage-Interval nicht angegeben ist, wird es auf 300 (Sekunden) gesetzt. Der kleinste mögliche Wert ist 10.
<br>
Die Angabe des Portes kann gew&ouml;hnlich entfallen.
Die Angabe des Portes kann gewöhnlich entfallen.
<br>
Beispiel: <code>define Heizung LUXTRONIK2 192.168.0.12 600</code>
@ -2372,36 +2382,36 @@ LUXTRONIK2_doStatisticDeltaSingle ($$$$$$$)
<a name="LUXTRONIK2set"></a>
<b>Set</b><br>
<ul>
Durch einen Firmware-Test wird vor jeder Set-Operation sichergestellt, dass W&auml;rmepumpen mit ungetester Firmware nicht unabsichtlich besch&auml;digt werden.
Durch einen Firmware-Test wird vor jeder Set-Operation sichergestellt, dass Wärmepumpen mit ungetesteter Firmware nicht unabsichtlich beschädigt werden.
<br>&nbsp;
<li><code>activeTariff &lt; 0 - 9 &gt;</code>
<br>
Erlaubt die gezielte, separate Erfassung der statistischen Verbrauchswerte (doStatistics = 1) f&uuml;r verschiedene Tarife (Doppelstromz&auml;hler)<br>
Erlaubt die gezielte, separate Erfassung der statistischen Verbrauchswerte (doStatistics = 1) für verschiedene Tarife (Doppelstromzähler)<br>
Dieser Wert muss entsprechend des vorhandenen oder geplanten Tarifes zum jeweiligen Zeitpunkt z.B. durch den FHEM-Befehl "at" gesetzt werden.<br>
0 = tariflos
</li><br>
<li><code>heatingCurveEndPoint &lt;Temperaratur&gt;</code><br>
Einstellung des Heizkurvenparameters. In 0.1er Schritten einstellbar.
<li><code>heatingCurveEndPoint &lt;Temperatur&gt;</code><br>
Einstellung des Heizkurven-Parameters. In 0.1er Schritten einstellbar.
</li><br>
<li><code>heatingCurveOffset &lt;Temperaratur&gt;</code><br>
Einstellung des Heizkurvenparameters. In 0.1er Schritten einstellbar.
<li><code>heatingCurveOffset &lt;Temperatur&gt;</code><br>
Einstellung des Heizkurven-Parameters. In 0.1er Schritten einstellbar.
</li><br>
<li><code>hotWaterCircPumpDeaerate &lt;on | off&gt;</code><br>
Schaltet die externe Warmwasser-Zirkulationspumpe an oder aus. Durch die Zirkulation wird das Abk&uuml;hlen des Warmwassers in den Hausleitungen verhindert. Der W&auml;rmeverbrauch steigt jedoch drastisch.
Schaltet die externe Warmwasser-Zirkulationspumpe an oder aus. Durch die Zirkulation wird das Abkühlen des Warmwassers in den Hausleitungen verhindert. Der Wärmeverbrauch steigt jedoch drastisch.
<br>
Achtung! Es wird die Entl&uuml;ftungsfunktion der Steuerung genutzt. Dadurch taktet die Pumpe jeweils 5 Minuten ein und 5 Minuten aus.
Achtung! Es wird die Entlüftungsfunktion der Steuerung genutzt. Dadurch taktet die Pumpe jeweils 5 Minuten ein und 5 Minuten aus.
</li><br>
<li><code>hotWaterTemperatureTarget &lt;Temperatur&gt;</code>
<br>
Soll-Temperatur des Hei&szlig;wasserboilers in &deg;C
Soll-Temperatur des Heißwasserspeichers in °C
</li><br>
<li><code>opModeHotWater &lt;Betriebsmodus&gt;</code>
<br>
Betriebsmodus des Hei&szlig;wasserboilers ( Auto | Party | Off )
Betriebsmodus des Heißwasserspeichers ( Auto | Party | Off )
</li><br>
<li><code>resetStatistics &lt;statWerte&gt;</code>
<br>
L&ouml;scht die ausgew&auml;hlten statisischen Werte: <i>all, statBoilerGradientCoolDownMin, statAmbientTemp..., statElectricity..., statHours..., statHeatQ...</i>
Löscht die ausgewählten statistischen Werte: <i>all, statBoilerGradientCoolDownMin, statAmbientTemp..., statElectricity..., statHours..., statHeatQ...</i>
</li><br>
<li><code>returnTemperatureHyst &lt;Temperatur&gt;</code>
<br>
@ -2409,19 +2419,19 @@ LUXTRONIK2_doStatisticDeltaSingle ($$$$$$$)
</li><br>
<li><code>returnTemperatureSetBack &lt;Temperatur&gt;</code>
<br>
Absenkung oder Anhebung der R&uuml;cklauftemperatur von -5 K bis + 5K. In 0.1er Schritten einstellbar.
Absenkung oder Anhebung der Rücklauftemperatur von -5 K bis + 5K. In 0.1er Schritten einstellbar.
</li><br>
<li><code>INTERVAL &lt;Sekunden&gt;</code>
<br>
Abfrageinterval in Sekunden
Abfrageintervall in Sekunden
</li><br>
<li><code>statusRequest</code>
<br>
Aktualisieren der Ger&auml;tewerte
Aktualisieren der Gerätewerte
</li><br>
<li><code>synchClockHeatPump</code>
<br>
Abgleich der Uhr der Steuerung mit der FHEM Zeit. <b>Diese &Auml;nderung geht verloren, sobald die Steuerung ausgeschaltet wird!!</b></li>
Abgleich der Uhr der Steuerung mit der FHEM Zeit. <b>Diese Änderung geht verloren, sobald die Steuerung ausgeschaltet wird!!</b></li>
</ul>
<br>
@ -2430,14 +2440,14 @@ LUXTRONIK2_doStatisticDeltaSingle ($$$$$$$)
<ul>
<li><code>heatingCurveParameter &lt;Aussentemp1 Solltemp1 Aussentemp2 Solltemp2&gt;</code>
<br>
Ermittelt rekursiv anhand zweier Punkte auf der Heizkurve die entsprechenden Heizkurvenparameter <i>heatingCurveEndPoint</i> und <i>heatingCurveOffset</i>.<br>
Diese k&ouml;nnen dann &uuml;ber die entsprechenden set-Befehl einstellt werden.
Ermittelt rekursiv anhand zweier Punkte auf der Heizkurve die entsprechenden Heizkurven-Parameter <i>heatingCurveEndPoint</i> und <i>heatingCurveOffset</i>.<br>
Diese können dann über die entsprechenden set-Befehl einstellt werden.
</li>
<br>
<li><code>rawData</code>
<br>
Zeigt alle von der Steuerung auslesbaren Parameter und Betriebswerte an.<br>
Diese k&ouml;nnen dann mit den Attributen <i>userHeatpumpParameters</i> und <i>userHeatpumpValues</i> einem Ger&auml;tewert zugeordnet werden.
Diese können dann mit den Attributen <i>userHeatpumpParameters</i> und <i>userHeatpumpValues</i> einem Gerätewert zugeordnet werden.
</li><br>
</ul>
<br>
@ -2447,60 +2457,60 @@ LUXTRONIK2_doStatisticDeltaSingle ($$$$$$$)
<ul>
<li><code>allowSetParameter &lt; 0 | 1 &gt;</code>
<br>
Die internen <a href="#LUXTRONIK2set">Parameter</a> der W&auml;rmepumpensteuerung k&ouml;nnen
nur ge&auml;ndert werden, wenn dieses Attribut auf 1 gesetzt ist.
Die internen <a href="#LUXTRONIK2set">Parameter</a> der Wärmepumpensteuerung nnen
nur geändert werden, wenn dieses Attribut auf 1 gesetzt ist.
</li><br>
<li><code>autoSynchClock &lt;Zeitunterschied&gt;</code>
<br>
Die Uhr der W&auml;rmepumpe wird automatisch korrigiert, wenn ein gewisser <i>Zeitunterschied</i> (10 s - 600 s)
gegen&uuml;ber der FHEM Zeit erreicht ist. Zuvor wird die Kompatibilit&auml;t der Firmware &uuml;berpr&uuml;ft.<br>
<i>(Ein Ger&auml;tewert 'delayDeviceTimeCalc' &lt;= 2 s ist auf die internen Berechnungsintervale der
W&auml;rmepumpensteuerung zur&uuml;ckzuf&uuml;hren.)</i>
Die Uhr der Wärmepumpe wird automatisch korrigiert, wenn ein gewisser <i>Zeitunterschied</i> (10 s - 600 s)
gegenüber der FHEM Zeit erreicht ist. Zuvor wird die Kompatibilität der Firmware überprüft.<br>
<i>(Ein Gerätewert 'delayDeviceTimeCalc' &lt;= 2 s ist auf die internen Berechnungsintervale der
Wärmepumpensteuerung zurückzuführen.)</i>
</li><br>
<li><code>compressor2ElectricalPowerWatt</code><br>
Betriebsleistung des zweiten Kompressors zur Berechung der Arbeitszahl (erzeugte W&auml;rme pro elektrische Energieeinheit)
und Absch&auml;tzung des elektrischen Verbrauches (Auswertungen noch nicht implementiert)
Betriebsleistung des zweiten Kompressors zur Berechnung der Arbeitszahl (erzeugte Wärme pro elektrische Energieeinheit)
und Abschätzung des elektrischen Verbrauches (Auswertungen noch nicht implementiert)
</li><br>
<li><code>doStatistics &lt; 0 | 1 &gt;</code>
<li><code>doStatistics &lt; 0 | 1 | 2 &gt;</code>
<br>
Berechnet statistische Werte: <i>statBoilerGradientHeatUp, statBoilerGradientCoolDown,
statBoilerGradientCoolDownMin (W&auml;rmeverlust des Boilers)</i>
statBoilerGradientCoolDownMin (Wärmeverlust des Boilers)</i>
<br>
Bildet t&auml;gliche, monatliche und j&auml;hrliche Statistiken bestimmter Ger&auml;tewerte.<br>
F&uuml;r grafische Auswertungen k&ouml;nnen die Werte der Form 'stat<i>ReadingName</i><b>Last</b>' genutzt werden.
Bildet tägliche, monatliche und jährliche Statistiken bestimmter Gerätewerte.<br>
Für grafische Auswertungen nnen die Werte der Form 'stat<i>ReadingName</i><b>Last</b>' genutzt werden.
</li><br>
<li><code>heatPumpElectricalPowerWatt &lt;E-Leistung in Watt&gt;</code><br>
Elektrische Leistungsaufnahme der W&auml;rmepumpe in Watt bei einer Vorlauftemperatur von 35 &deg;C zur Berechung der Arbeitszahl (erzeugte W&auml;rme pro elektrische Energieeinheit)
und Absch&auml;tzung des elektrischen Verbrauches
Elektrische Leistungsaufnahme der Wärmepumpe in Watt bei einer Vorlauftemperatur von 35 &deg;C zur Berechung der Arbeitszahl (erzeugte Wärme pro elektrische Energieeinheit)
und Abschätzung des elektrischen Verbrauches
</li><br>
<li><code>heatPumpElectricalPowerFactor</code><br>
&Auml;nderung der elektrischen Leistungsaufnahme pro 1 K Vorlauftemperaturdifferenz zu 35 &deg;C
änderung der elektrischen Leistungsaufnahme pro 1 K Vorlauftemperaturdifferenz zu 35 &deg;C
<br>
(z.B. 2% pro 1 K = 0,02)
</li><br>
<li><code>heatRodElectricalPowerWatt &lt;E-Leistung in Watt&gt;</code><br>
Elektrische Leistungsaufnahme der Heizst&auml;be in Watt zur Absch&auml;tzung des elektrischen Verbrauches
Elektrische Leistungsaufnahme der Heizstäbe in Watt zur Abschätzung des elektrischen Verbrauches
</li><br>
<li><code>ignoreFirmwareCheck &lt; 0 | 1 &gt;</code>
<br>
Durch einen Firmware-Test wird vor jeder Set-Operation sichergestellt, dass W&auml;rmepumpen
mit ungetester Firmware nicht unabsichtlich besch&auml;digt werden. Wenn dieses Attribute auf 1
Durch einen Firmware-Test wird vor jeder Set-Operation sichergestellt, dass Wärmepumpen
mit ungetester Firmware nicht unabsichtlich beschädigt werden. Wenn dieses Attribute auf 1
gesetzt ist, dann wird der Firmware-Test ignoriert und neue Firmware kann getestet werden.
Dieses Attribut wird jedoch ignoriert, wenn die Steuerungs-Firmware bereits als nicht kompatibel berichtet wurde.
Dieses Attribut wird jedoch ignoriert, wenn die Steuerung-Firmware bereits als nicht kompatibel berichtet wurde.
</li><br>
<li><code>statusHTML</code>
<br>
Wenn gesetzt, dann wird ein HTML-formatierter Wert "floorplanHTML" erzeugt,
welcher vom Modul <a href="#FLOORPLAN">FLOORPLAN</a> genutzt werden kann.<br>
Momentan wird nur gepr&uuml;ft, ob der Wert dieses Attributes ungleich NULL ist,
der entsprechende Ger&auml;tewerte besteht aus dem aktuellen W&auml;rmepumpenstatus und der Heizwassertemperatur.
Momentan wird nur geprüft, ob der Wert dieses Attributes ungleich NULL ist,
der entsprechende Gerätewerte besteht aus dem aktuellen Wärmepumpenstatus und der Warmwassertemperatur.
</li><br>
<li><code>userHeatpumpParameters &lt;Index [Name][,Index2 [Name2],Index3 [Name3] ...]&gt;</code>
<br>
Erlaubt das Auslesen der Werte benutzerspezifischer Parameter. Die Indizes der verf&uuml;gbaren Parameterwerte k&ouml;nnen mit dem get-Befehl <i>rawData</i> ermittelt werden.<br>
In der Attributdefinition kann der Name hinter den Index getrennt durch ein Leerzeichen geschrieben werden. Der jeweilige Parameter-Wert wird entweder mit dem Pr&auml;fix "userParameter..." oder unter dem angegebenen Namen angezeigt. <br>
Erlaubt das Auslesen der Werte benutzerspezifischer Parameter. Die Indizes der verfügbaren Parameterwerte nnen mit dem get-Befehl <i>rawData</i> ermittelt werden.<br>
In der Attributdefinition kann der Name hinter den Index getrennt durch ein Leerzeichen geschrieben werden. Der jeweilige Parameter-Wert wird entweder mit dem Präfix "userParameter..." oder unter dem angegebenen Namen angezeigt. <br>
Mehrere Indizes werden durch Kommas getrennt.<br>
Nicht mehr ben&ouml;tigte Ger&auml;tewerte k&ouml;nnen mit dem FHEM-Befehl <a href="#deletereading">deleteReading</a> gel&ouml;scht werden.
Nicht mehr benötigte Gerätewerte nnen mit dem FHEM-Befehl <a href="#deletereading">deleteReading</a> gelöscht werden.
</li><br>
<li><code>userHeatpumpValues &lt;Index Name[,Index2 Name2,Index3 Name3 ...]&gt;</code>
<br>

View File

@ -1,4 +1,4 @@
###############################################################
###############################################################
# $Id$
#
# 59_OPENWEATHER.pm
@ -511,7 +511,7 @@ OPENWEATHER_Html($@)
for(my $i=0; $i<=2; $i++)
{
$ret .= sprintf('<tr><td valign=top><b>%s</b></td><td>%s<br>min. %s &deg;C max. %s &deg;C<br>Nieders.risiko: %s %%<br>Wind: %s km/h aus %s</td></tr>',
$ret .= sprintf('<tr><td valign=top><b>%s</b></td><td>%s<br>min. %s °C max. %s °C<br>Nieders.risiko: %s %%<br>Wind: %s km/h aus %s</td></tr>',
$i==0 ? "heute" : ReadingsVal($d, "fc".$i."_wday", "")
, ReadingsVal($d, "fc".$i."_weather", "")
, ReadingsVal($d, "fc".$i."_tempMin", ""), ReadingsVal($d, "fc".$i."_tempMax", "")
@ -531,6 +531,10 @@ OPENWEATHER_Html($@)
1;
=pod
=item device
=item summary Extracts weather data via the "openweather" API of www.wetter.com.
=item summary_DE Extrahiert Wetterdaten über die "openweather"-Schnittstelle von www.wetter.com.
=begin html
<a name="OPENWEATHER"></a>
@ -541,7 +545,7 @@ OPENWEATHER_Html($@)
<br>
It requires a registration on this website to obtain the necessary parameters.
<br>
It uses the perl moduls HTTP::Request, LWP::UserAgent, HTML::Parse and Digest::MD5.
It uses the perl modules HTTP::Request, LWP::UserAgent, HTML::Parse and Digest::MD5.
<br/><br/>
<a name="OPENWEATHERdefine"></a>
<b>Define</b>
@ -623,17 +627,17 @@ OPENWEATHER_Html($@)
<ul>
Note! The forecast values (in brackets) have first to be selected on the project setup page on wetter.com.
<br/>&nbsp;<br/>
<li><b>fc</b><i>0|1|2</i><b>_...</b> - forecast values for <i>today|tommorrow|in 2 days</i></li>
<li><b>fc</b><i>0|1|2</i><b>_...</b> - forecast values for <i>today|tomorrow|in 2 days</i></li>
<li><b>fc</b><i>0</i><b>_...<i>06|11|17|23</i></b> - forecast values for <i>today</i> at <i>06|11|17|23</i> o'clock</li>
<li><b>fc</b><i>1</i><b>_temp</b><i>Min|Max</i> - <i>minimal|maximal</i> temperature for <i>tommorrow</i> in &deg;C (tn,tx)</li>
<li><b>fc</b><i>0</i><b>_temp</b><i>Min06</i> - <i>minimal</i> temperatur <i>today</i> at <i>06:00</i> o'clock in &deg;C</li>
<li><b>fc</b><i>1</i><b>_temp</b><i>Min|Max</i> - <i>minimal|maximal</i> temperature for <i>tomorrow</i> in °C (tn,tx)</li>
<li><b>fc</b><i>0</i><b>_temp</b><i>Min06</i> - <i>minimal</i> temperature<i>today</i> at <i>06:00</i> o'clock in °C</li>
<li><b>fc</b><i>0</i><b>_chOfRain</b> - chance of rain <i>today</i> in % (pc)</li>
<li><b>fc</b><i>0</i><b>_valHours</b><i>06</i> - validity period in hours of the forecast values starting at <i>06:00</i> o'clock (p)</li>
<li><b>fc</b><i>0</i><b>_weather</b> - weather situation <i>today</i> in German (w_txt)</li>
<li><b>fc</b><i>0</i><b>_weatherCode</b> - code of weather situation <i>today</i> (w)</li>
<li><b>fc</b><i>0</i><b>_wday</b> - German abbreviation of week day of <i>today</i> (d)</li>
<li><b>fc</b><i>0</i><b>_wind</b> - wind speed <i>today</i> in km/h (ws)</li>
<li><b>fc</b><i>0</i><b>_windDir</b> - wind direction <i>today</i> in &deg; (degree) (wd)</li>
<li><b>fc</b><i>0</i><b>_windDir</b> - wind direction <i>today</i> in ° (degree) (wd)</li>
<li><b>fc</b><i>0</i><b>_windDirTxt</b> - wind direction <i>today</i> in text form (wd_txt</li>
<li>etc.</li>
</ul>
@ -650,18 +654,18 @@ OPENWEATHER_Html($@)
<div>
<ul>
<a name="OPENWEATHERdefine"></a>
Das Modul extrahiert Wetterdaten &uuml;ber die <a href="http://www.wetter.com/apps_und_mehr/website/api/dokumentation">"openweather"-Schnittstelle (API)</a> von <a href="http://www.wetter.com">www.wetter.com</a>.
Das Modul extrahiert Wetterdaten über die <a href="http://www.wetter.com/apps_und_mehr/website/api/dokumentation">"openweather"-Schnittstelle (API)</a> von <a href="http://www.wetter.com">www.wetter.com</a>.
<br/>
Zuvor ist eine Registrierung auf der Webseite notwendig.
<br/>
Das Modul nutzt die Perlmodule HTTP::Request, LWP::UserAgent, HTML::Parse und Digest::MD5.
Das Modul nutzt die Perl-Module HTTP::Request, LWP::UserAgent, HTML::Parse und Digest::MD5.
<br>
F&uuml;r detailierte Anleitungen bitte die <a href="http://www.fhemwiki.de/wiki/OPENWEATHER"><b>FHEM-Wiki</b></a> konsultieren und erg&auml;nzen.
Für detailierte Anleitungen bitte die <a href="http://www.fhemwiki.de/wiki/OPENWEATHER"><b>FHEM-Wiki</b></a> konsultieren und ergänzen.
<br/><br/>
<b>Define</b>
<ul>
<br>
<code>define &lt;name&gt; OPENWEATHER &lt;Projekt&gt; &lt;Ortscode&gt; &lt;apiSchl&uuml;ssel&gt; [Sprache]</code>
<code>define &lt;name&gt; OPENWEATHER &lt;Projekt&gt; &lt;Ortscode&gt; &lt;apiSchlüssel&gt; [Sprache]</code>
<br>
Beispiel:
<br>
@ -671,23 +675,23 @@ OPENWEATHER_Html($@)
<br/><br/>
<li><code>&lt;Projekt&gt;</code>
<br>
Name des benutzerspezifischen 'openweather'-Projektes (erzeugt &uuml;ber ein Konto auf wetter.com).
Name des benutzerspezifischen 'openweather'-Projektes (erzeugt über ein Konto auf wetter.com).
</li><br>
<li><code>&lt;Ortscode&gt;</code>
<br>
Code des Ortes, f&uuml;r den die Wettervorhersage ben&ouml;tigt wird. Er kann direkt aus der Adresszeile der jeweiligen Vorhersageseite genommen werden. Zum Beispiel <i>DE0009042</i> aus:
Code des Ortes, für den die Wettervorhersage ben&ouml;tigt wird. Er kann direkt aus der Adresszeile der jeweiligen Vorhersageseite genommen werden. Zum Beispiel <i>DE0009042</i> aus:
<br>
<i>http://www.wetter.com/wetter_aktuell/aktuelles_wetter/deutschland/rostock/<u>DE0009042</u>.html</i>
</li><br>
<li><code>&lt;apiSchl&uuml;ssel&gt;</code>
<li><code>&lt;apiSchlüssel&gt;</code>
<br>
Geheimer Schl&uuml;ssel, den man erh&auml;lt, nachdem man ein neues 'Openweather'-Projekt auf der Website registriert hat.
Geheimer Schlüssel, den man erhält, nachdem man ein neues 'Openweather'-Projekt auf der Website registriert hat.
</li><br>
<li><code>[Sprache]</code>
<br>
Optional. Standardsprache f&uuml;r die Wettersituation ist Deutsch. Mit <i>en</i> kann man zu Englisch und mit <i>es</i> zu Spanisch wechseln.
Optional. Standardsprache für die Wettersituation ist Deutsch. Mit <i>en</i> kann man zu Englisch und mit <i>es</i> zu Spanisch wechseln.
</li><br>
&Uuml;ber die Funktion <code>OPENWEATHER_Html</code> wird ein HTML-Code f&uuml;r ein vertikal arrangierte Wettervorhersage erzeugt.
&Uuml;ber die Funktion <code>OPENWEATHER_Html</code> wird ein HTML-Code für ein vertikal arrangierte Wettervorhersage erzeugt.
<br>
Beispiel:
<br>
@ -711,7 +715,7 @@ OPENWEATHER_Html($@)
<br>
<li><code>get &lt;name&gt; apiResponse</code>
<br>
Zeigt die R&uuml;ckgabewerte der Website an.
Zeigt die Rückgabewerte der Website an.
</li><br>
</ul>
@ -721,11 +725,11 @@ OPENWEATHER_Html($@)
<br>
<li><code>disable &lt;0 | 1&gt;</code>
<br>
Automatische Aktuallisierung ist angehalten, wenn der Wert auf 1 gesetzt wird.
Automatische Aktualisierung ist angehalten, wenn der Wert auf 1 gesetzt wird.
</li><br>
<li><code>INTERVAL &lt;Abfrageinterval&gt;</code>
<li><code>INTERVAL &lt;Abfrageintervall&gt;</code>
<br>
Abfrageinterval in Sekunden (Standard und kleinster Wert ist 3600 = 1 Stunde). 0 stoppt die automatische Aktualisierung
Abfrageintervall in Sekunden (Standard und kleinster Wert ist 3600 = 1 Stunde). 0 stoppt die automatische Aktualisierung
</li><br>
<li><a href="#readingFnAttributes">readingFnAttributes</a></li>
</ul>
@ -734,19 +738,19 @@ OPENWEATHER_Html($@)
<a name="OPENWEATHERreading"></a>
<b>Vorhersagewerte</b>
<ul>
Wichtig! Die Vorhersagewerte (in Klammern) m&uuml;ssen zuerst in den Vorhersageeinstellungen des Projektes auf wetter.com ausgew&auml;hlt werden.
Wichtig! Die Vorhersagewerte (in Klammern) müssen zuerst in den Vorhersageeinstellungen des Projektes auf wetter.com ausgewählt werden.
<br/>&nbsp;<br/>
<li><b>fc</b><i>0|1|2</i><b>_...</b> - Vorhersagewerte f&uuml;r <i>heute|morgen|&uuml;bermorgen</i></li>
<li><b>fc</b><i>0</i><b>_...<i>06|11|17|23</i></b> - Vorhersagewerte f&uuml;r <i>heute</i> um <i>06|11|17|23</i> Uhr</li>
<li><b>fc</b><i>0|1|2</i><b>_...</b> - Vorhersagewerte für <i>heute|morgen|übermorgen</i></li>
<li><b>fc</b><i>0</i><b>_...<i>06|11|17|23</i></b> - Vorhersagewerte für <i>heute</i> um <i>06|11|17|23</i> Uhr</li>
<li><b>fc</b><i>0</i><b>_chOfRain</b> - <i>heutige</i> Niederschlagswahrscheinlichkeit in % (pc)</li>
<li><b>fc</b><i>0</i><b>_temp</b><i>Min|Max</i> - <i>Mindest|Maximal</i>temperatur <i>heute</i> in &deg;C (tn, tx)</li>
<li><b>fc</b><i>0</i><b>_temp</b><i>Min06</i> - <i>Mindest</i>temperatur <i>heute</i> um <i>06:00</i> Uhr in &deg;C</li>
<li><b>fc</b><i>0</i><b>_valHours</b><i>06</i> - G&uuml;ltigkeitszeitraum der Prognose von <i>heute</i> ab <i>6:00 Uhr</i> in Stunden (p)</li>
<li><b>fc</b><i>0</i><b>_temp</b><i>Min|Max</i> - <i>Mindest|Maximal</i>temperatur <i>heute</i> in °C (tn, tx)</li>
<li><b>fc</b><i>0</i><b>_temp</b><i>Min06</i> - <i>Mindest</i>temperatur <i>heute</i> um <i>06:00</i> Uhr in °C</li>
<li><b>fc</b><i>0</i><b>_valHours</b><i>06</i> - Gültigkeitszeitraum der Prognose von <i>heute</i> ab <i>6:00 Uhr</i> in Stunden (p)</li>
<li><b>fc</b><i>0</i><b>_weather</b> - Wetterzustand <i>heute</i> (w_txt)</li>
<li><b>fc</b><i>0</i><b>_weatherCode</b> - Code des Wetterzustand <i>heute</i> (w)</li>
<li><b>fc</b><i>0</i><b>_wday</b> - Abk&uuml;rzung des Wochentags von <i>heute</i> (d)</li>
<li><b>fc</b><i>0</i><b>_wday</b> - Abkürzung des Wochentags von <i>heute</i> (d)</li>
<li><b>fc</b><i>0</i><b>_wind</b> - Windgeschwindigkeit <i>heute</i> in km/h (ws)</li>
<li><b>fc</b><i>0</i><b>_windDir</b> - Windrichtung <i>heute</i> in &deg; (Grad) (wd)</li>
<li><b>fc</b><i>0</i><b>_windDir</b> - Windrichtung <i>heute</i> in ° (Grad) (wd)</li>
<li><b>fc</b><i>0</i><b>_windDirTxt</b> - Windrichtung <i>heute</i> in Textform (wd_txt)</li>
<li>etc.</li>
</ul>

View File

@ -1,4 +1,4 @@
####################################################################################################
####################################################################################################
# $Id$
#
# 59_PROPLANTA.pm
@ -68,7 +68,7 @@ my $curReadingType = 0;
,["Luftdruck", "pressure", 1]
,["Taupunkt", "dewPoint", 1]
,["Uhrzeit", "obsTime", 6]
,["Höhe der", "cloudBase", 8]
,["Höhe der", "cloudBase", 8]
);
# 1 = Tag-ID, 2 = readingName, 3 = Tag-Type (see above)
@ -147,7 +147,7 @@ my $curReadingType = 0;
,"gering" => 1
,"leicht" => 1
,"ja" => 1
,"m&auml;&szlig;ig" => 2
,"mäßig" => 2
,"stark" => 3
);
@ -156,13 +156,13 @@ my $curReadingType = 0;
,"Nordost" => 45
,"Ost-Nordost" => 68
,"Ost" => 90
,"Ost-Südost" => 113
,"Südost" => 135
,"Süd-Südost" => 158
,"Süd" => 180
,"Süd-Südwest" => 203
,"Südwest" => 225
,"West-Südwest" => 248
,"Ost-Südost" => 113
,"Südost" => 135
,"Süd-Südost" => 158
,"Süd" => 180
,"Süd-Südwest" => 203
,"Südwest" => 225
,"West-Südwest" => 248
,"West" => 270
,"West-Nordwest" => 203
,"Nordwest" => 225
@ -367,10 +367,10 @@ sub start
$text = $attr->{alt};
$text =~ s/Windrichtung: //;
$text = $winddir{$text} if defined $winddir{$text};
# $text =~ s/ö/oe/;
# $text =~ s/ä/ae/;
# $text =~ s/ü/ue/;
# $text =~ s/ß/ss/;
# $text =~ s/ö/oe/;
# $text =~ s/ä/ae/;
# $text =~ s/ü/ue/;
# $text =~ s/ß/ss/;
push( @texte, $readingName . "|" . $text );
# Image URL
push( @texte, $readingName."Icon" . "|" . $attr->{src} );
@ -461,7 +461,7 @@ sub PROPLANTA_Define($$)
$lang = lc( $a[3] ) if int(@a) == 4;
if ( $lang ne "")
{ # {my $test="http://www.proplanta.de/Wetter/LOKALERORT-Wetter.html";; $test =~ s/LOKALERORT/München/g;; return $test;;}
{ # {my $test="http://www.proplanta.de/Wetter/LOKALERORT-Wetter.html";; $test =~ s/LOKALERORT/München/g;; return $test;;}
return "Wrong country code '$lang': use " . join(" | ", keys( %url_template ) ) unless defined( $url_template{$lang} );
my $URL = $url_template{$lang};
my $ort_encode= $a[2];
@ -722,7 +722,7 @@ sub PROPLANTA_Done($)
if (defined $values{fc0_tempMin} && defined $values{fc0_tempMax})
{
$newState = "Tmin: " . $values{fc0_tempMin} . " Tmax: " . $values{fc0_tempMax};
# Achtung! Nach Mitternacht fehlen für 1 h die aktuellen Werte
# Achtung! Nach Mitternacht fehlen für 1 h die aktuellen Werte
$newState .= " T: " . $values{temperature} . " H: " . $values{humidity} . " W: " . $values{wind} . " P: " . $values{pressure}
if defined $values{temperature} && defined $values{humidity} && defined $values{wind} && defined $values{pressure};
}
@ -776,7 +776,7 @@ PROPLANTA_Html(@)
$ret .= "<tbody align=center>";
# define MyForecast weblink htmlCode { PROPLANTA_Html("ProPlanta_Wetter") }
for(my $i=0; $i<$days; $i++) {
$ret .= sprintf('<tr><td>%s</td><td>%s<br><img src="%s"></td><td>%s<br><img src="%s"></td><td>%s<br><img src="%s"></td><td>%s<br><img src="%s"></td><td>%s&deg;C</td><td>%s&deg;C</td><td>%s %%</td><td>%s</td></tr>',
$ret .= sprintf('<tr><td>%s</td><td>%s<br><img src="%s"></td><td>%s<br><img src="%s"></td><td>%s<br><img src="%s"></td><td>%s<br><img src="%s"></td><td>%s°C</td><td>%s°C</td><td>%s %%</td><td>%s</td></tr>',
ReadingsVal($d, "fc".$i."_date", ""),
ReadingsVal($d, "fc".$i."_weatherMorning", ""), ReadingsVal($d, "fc".$i."_weatherMorningIcon", ""),
ReadingsVal($d, "fc".$i."_weatherDay", ""), ReadingsVal($d, "fc".$i."_weatherDayIcon", ""),
@ -788,7 +788,7 @@ PROPLANTA_Html(@)
);
}
# for(my $i=0; $i<=4; $i++) {
# $ret .= sprintf('<tr><td>%s</td><td>%s: %s<br>min %s °C max %s °C<br>wind: %s km/h %s<br>precip: %s mm</td></tr>',
# $ret .= sprintf('<tr><td>%s</td><td>%s: %s<br>min %s °C max %s °C<br>wind: %s km/h %s<br>precip: %s mm</td></tr>',
# WWOIconIMGTag(ReadingsVal($d, "fc${i}_weatherDayIcon", ""),$uselocal,$isday),
# ReadingsVal($d, "fc${i}_date", ""),
# ReadingsVal($d, "fc${i}_weatherDay", ""),
@ -901,13 +901,13 @@ PROPLANTA_Html(@)
<li><b>fc</b><i>0</i><b>_rad</b> - global radiation <i>today</i></li>
<li><b>fc</b><i>0</i><b>_rain</b><i>15</i> - amount of rainfall <i>today</i> at <i>15:00</i> o'clock in mm</li>
<li><b>fc</b><i>0</i><b>_sun</b> - relative sun shine duration <i>today</i> in % (between sun rise and set)</li>
<li><b>fc</b><i>0</i><b>_temp</b><i>Min|Max</i> - <i>minimal|maximal</i> temperature <i>today</i> in &deg;C</li>
<li><b>fc</b><i>0</i><b>_temp</b><i>15</i> - temperatur <i>today</i> at <i>15:00</i> o'clock in &deg;C</li>
<li><b>fc</b><i>0</i><b>_temp</b><i>Min|Max</i> - <i>minimal|maximal</i> temperature <i>today</i> in °C</li>
<li><b>fc</b><i>0</i><b>_temp</b><i>15</i> - temperatur <i>today</i> at <i>15:00</i> o'clock in °C</li>
<li><b>fc</b><i>0</i><b>_uv</b> - UV-Index <i>today</i></li>
<li><b>fc</b><i>0</i><b>_weather</b><i>Morning|Day|Evening|Night</i> - weather situation <i>today morning|during day|in the evening|during night</i></li>
<li><b>fc</b><i>0</i><b>_weather</b><i>Day</i><b>Icon</b> - icon of weather situation <i>today</i> by <i>day</i></li>
<li><b>fc</b><i>0</i><b>_wind</b><i>15</i> - wind speed <i>today</i> at <i>15</i>:00 Uhr in km/h</li>
<li><b>fc</b><i>0</i><b>_windDir</b><i>15</i> - wind direction <i>today</i> at <i>15</i>:00 Uhr in &deg;</li>
<li><b>fc</b><i>0</i><b>_windDir</b><i>15</i> - wind direction <i>today</i> at <i>15</i>:00 Uhr in °</li>
<li>etc.</li>
</ul>
<br>
@ -925,18 +925,18 @@ PROPLANTA_Html(@)
<a name="PROPLANTAdefine"></a>
Das Modul extrahiert Wetterdaten von der Website <a href="http://www.proplanta.de">www.proplanta.de</a>.
<br/>
Es stellt eine Vorhersage f&uuml;r 12 Tage zur Verf&uuml;gung - w&auml;hrend der ersten 7 Tage im 3-Stunden-Intervall.
Es stellt eine Vorhersage für 12 Tage zur Verfügung - hrend der ersten 7 Tage im 3-Stunden-Intervall.
<br>
Dieses Modul erzeugt eine hohe CPU-Last. Es wird deshalb empfohlen, die auszulesenden Vorhersagetage zu reduzieren.
<br>
<i>Es nutzt die Perl-Module HTTP::Request, LWP::UserAgent und HTML::Parse</i>.
<br>
F&uuml;r detailierte Anleitungen bitte die <a href="http://www.fhemwiki.de/wiki/PROPLANTA"><b>FHEM-Wiki</b></a> konsultieren und erg&auml;nzen.
Für detaillierte Anleitungen bitte die <a href="http://www.fhemwiki.de/wiki/PROPLANTA"><b>FHEM-Wiki</b></a> konsultieren und ergänzen.
<br/><br/>
<b>Define</b>
<ul>
<br>
<code>define &lt;Name&gt; PROPLANTA [Stadt] [L&auml;ndercode]</code>
<code>define &lt;Name&gt; PROPLANTA [Stadt] [Ländercode]</code>
<br>
Beispiel:
<br>
@ -946,16 +946,16 @@ PROPLANTA_Html(@)
<br>&nbsp;
<li><code>[Stadt]</code>
<br>
Optional. Die Stadt muss auf <a href="http://www.proplanta.de">www.proplanta.de</a> ausw&auml;hlbar sein.
Optional. Die Stadt muss auf <a href="http://www.proplanta.de">www.proplanta.de</a> auswählbar sein.
<br>
Wichtig!! Auf die <b>gro&szlig;en</b> Anfangsbuchstaben achten.
Wichtig!! Auf die <b>großen</b> Anfangsbuchstaben achten.
Leerzeichen im Stadtnamen werden durch ein + (Plus) ersetzt.
</li><br>
<li><code>[L&auml;ndercode]</code>
<li><code>[Ländercode]</code>
<br>
Optional. M&ouml;gliche Werte: de (Standard), at, ch, fr, it
Optional. Mögliche Werte: de (Standard), at, ch, fr, it
</li><br>
&Uuml;ber die Funktion <code>PROPLANTA_Html</code> wird ein HTML-Code f&uuml;r eine Vorhersage für die angegebenen Anzahl Tage (standardmäßig 3) erzeugt.
Über die Funktion <code>PROPLANTA_Html</code> wird ein HTML-Code für eine Vorhersage für die angegebenen Anzahl Tage (standardmäßig 3) erzeugt.
<br>
Beispiel:
<br>
@ -980,15 +980,15 @@ PROPLANTA_Html(@)
<br>
<li><code>forecastDays &lt;4-14&gt;</code>
<br>
Anzahl Tage, f&uuml;r die die Vorhersage ausgelesen werden soll. Standard ist 14 Tage (inkl. heute).
Anzahl Tage, für die die Vorhersage ausgelesen werden soll. Standard ist 14 Tage (inkl. heute).
</li><br>
<li><code>INTERVAL &lt;Abfrageinterval&gt;</code>
<li><code>INTERVAL &lt;Abfrageintervall&gt;</code>
<br>
Abfrageinterval in Sekunden (Standard 3600 = 1 Stunde)
Abfrageintervall in Sekunden (Standard 3600 = 1 Stunde)
</li><br>
<li><code>URL &lt;Internetadresse&gt;</code>
<br>
Internetadresse, von der die Daten ausgelesen werden (&uuml;berschreibt die Werte im 'define'-Term)
Internetadresse, von der die Daten ausgelesen werden (überschreibt die Werte im 'define'-Term)
</li><br>
<li><a href="#readingFnAttributes">readingFnAttributes</a></li>
</ul>
@ -999,42 +999,42 @@ PROPLANTA_Html(@)
<b>Vorhersagewerte</b>
<ul>
<br>
<li><b>fc</b><i>0|1|2|3...|13</i><b>_...</b> - Vorhersagewerte f&uumlr <i>heute|morgen|&uuml;bermorgen|in 3|...|13 Tagen</i></li>
<li><b>fc</b><i>0</i><b>_...<i>00|03|06|09|12|15|18|21</i></b> - Vorhersagewerte f&uumlr <i>heute</i> um <i>00|03|06|09|12|15|18|21</i> Uhr</li>
<li><b>fc</b><i>0</i><b>_chOfRain</b><i>Day|Night</i> - <i>heutiges</i> Niederschlagsrisiko <i>tags&uuml;ber|nachts</i> in %</li>
<li><b>fc</b><i>0|1|2|3...|13</i><b>_...</b> - Vorhersagewerte für <i>heute|morgen|übermorgen|in 3|...|13 Tagen</i></li>
<li><b>fc</b><i>0</i><b>_...<i>00|03|06|09|12|15|18|21</i></b> - Vorhersagewerte für <i>heute</i> um <i>00|03|06|09|12|15|18|21</i> Uhr</li>
<li><b>fc</b><i>0</i><b>_chOfRain</b><i>Day|Night</i> - <i>heutiges</i> Niederschlagsrisiko <i>tagsüber|nachts</i> in %</li>
<li><b>fc</b><i>1</i><b>_chOfRain</b><i>15</i> - <i>morgiges</i> Niederschlagsrisiko um <i>15</i>:00 Uhr in %</li>
<li><b>fc</b><i>2</i><b>_cloud</b><i>15</i> - Wolkenbedeckungsgrad <i>&uuml;bermorgen</i> um <i>15</i>:00 Uhr in %</li>
<li><b>fc</b><i>0</i><b>_dew</b> - Taubildung <i>heute</i> (0=keine, 1=leicht, 2=m&auml;&szlig;ig, 3=stark)</li>
<li><b>fc</b><i>0</i><b>_evapor</b> - Verdunstung <i>heute</i> (0=keine, 1=gering, 2=m&auml;&szlig;ig, 3=stark)</li>
<li><b>fc</b><i>2</i><b>_cloud</b><i>15</i> - Wolkenbedeckungsgrad <i>übermorgen</i> um <i>15</i>:00 Uhr in %</li>
<li><b>fc</b><i>0</i><b>_dew</b> - Taubildung <i>heute</i> (0=keine, 1=leicht, 2=mäßig, 3=stark)</li>
<li><b>fc</b><i>0</i><b>_evapor</b> - Verdunstung <i>heute</i> (0=keine, 1=gering, 2=mäßig, 3=stark)</li>
<li><b>fc</b><i>0</i><b>_frost</b> - Bodenfrost <i>heute</i> (0=nein, 1=ja)</li>
<li><b>fc</b><i>1</i><b>_moon</b><i>Rise|Set</i> - Mond<i>auf|unter</i>gang <i>morgen</i></li>
<li><b>fc</b><i>0</i><b>_rad</b> - Globalstrahlung <i>heute</i></li>
<li><b>fc</b><i>0</i><b>_rain</b><i>15</i> - Niederschlagsmenge <i>heute</i> um <i>15</i>:00 Uhr in mm</li>
<li><b>fc</b><i>0</i><b>_sun</b> - relative Sonnenscheindauer <i>heute</i> in % (zwischen Sonnenauf- und -untergang)</li>
<li><b>fc</b><i>0</i><b>_temp</b><i>Min|Max</i> - <i>Minimal|Maximal</i>temperatur <i>heute</i> in &deg;C</li>
<li><b>fc</b><i>0</i><b>_temp</b><i>15</i> - Temperatur <i>heute</i> um <i>15</i>:00 Uhr in &deg;C</li>
<li><b>fc</b><i>0</i><b>_temp</b><i>Min|Max</i> - <i>Minimal|Maximal</i>temperatur <i>heute</i> in °C</li>
<li><b>fc</b><i>0</i><b>_temp</b><i>15</i> - Temperatur <i>heute</i> um <i>15</i>:00 Uhr in °C</li>
<li><b>fc</b><i>0</i><b>_uv</b> - UV-Index <i>heute</i></li>
<li><b>fc</b><i>0</i><b>_weather</b><i>Morning|Day|Evening|Night</i> - Wetterzustand <i>heute morgen|tags&uuml;ber|abends|nachts</i></li>
<li><b>fc</b><i>0</i><b>_weather</b><i>Day</i><b>Icon</b> - Icon Wetterzustand <i>heute tags&uuml;ber</i></li>
<li><b>fc</b><i>0</i><b>_weather</b><i>Morning|Day|Evening|Night</i> - Wetterzustand <i>heute morgen|tagsüber|abends|nachts</i></li>
<li><b>fc</b><i>0</i><b>_weather</b><i>Day</i><b>Icon</b> - Icon Wetterzustand <i>heute tagsüber</i></li>
<li><b>fc</b><i>0</i><b>_wind</b><i>15</i> - Windgeschwindigkeit <i>heute</i> um <i>15</i>:00 Uhr in km/h</li>
<li><b>fc</b><i>0</i><b>_windDir</b><i>15</i> - Windrichtung <i>heute</i> um <i>15</i>:00 Uhr in &deg;</li>
<li><b>fc</b><i>0</i><b>_windDir</b><i>15</i> - Windrichtung <i>heute</i> um <i>15</i>:00 Uhr in °</li>
<li>etc.</li>
</ul>
<br>
<b>Aktuelle Werte</b>
<ul>
<br>
<li><b>cloudBase</b><i>Min|Max</i> - H&ouml;he der <i>minimalen|maximalen</i> Wolkenuntergrenze in m</li>
<li><b>dewPoint</b> - Taupunkt in &deg;C</li>
<li><b>cloudBase</b><i>Min|Max</i> - Höhe der <i>minimalen|maximalen</i> Wolkenuntergrenze in m</li>
<li><b>dewPoint</b> - Taupunkt in °C</li>
<li><b>humidity</b> - relative Feuchtigkeit in %</li>
<li><b>obs_time</b> - Uhrzeit der Wetterbeobachtung</li>
<li><b>pressure</b> - Luftdruck in hPa</li>
<li><b>temperature</b> - Temperature in &deg;C</li>
<li><b>temperature</b> - Temperature in °C</li>
<li><b>visibility</b> - Sichtweite in km</li>
<li><b>weather</b> - Wetterzustand</li>
<li><b>weatherIcon</b> - Icon Wetterzustand</li>
<li><b>wind</b> - Windgeschwindigkeit in km/h</li>
<li><b>windDir</b> - Windrichtung in &deg;</li>
<li><b>windDir</b> - Windrichtung in °</li>
</ul>
<br><br>
</ul>

View File

@ -1,4 +1,4 @@
###############################################################
###############################################################
# $Id$
#
# 70_JSONMETER.pm
@ -919,8 +919,8 @@ JSONMETER_doStatisticDeltaSingle ($$$$$$)
=begin html
=item device
=item summary reads OBIS data from measurement units
=item summary_DE liest OBIS Daten von Messger&auml;ten
=item summary reads OBIS data from measurement devices
=item summary_DE liest OBIS Daten von Messgeräten
<a name="JSONMETER"></a>
<h3>JSONMETER</h3>
@ -930,7 +930,7 @@ JSONMETER_doStatisticDeltaSingle ($$$$$$)
<br>
that provides OBIS compliant data in JSON format on a webserver or on the FHEM file system.
<br>
It assumes normally, that the structur of the JSON data do not change.
It assumes normally, that the structure of the JSON data do not change.
<br>
&nbsp;
<br>
@ -949,7 +949,7 @@ JSONMETER_doStatisticDeltaSingle ($$$$$$)
The attribute 'pathString' can be used to add login information to the URL path of predefined devices.
<br>&nbsp;
<ul>
<li><b>ITF</b> - FROETEC Simplex ME one tariff electrical meter (N-ENERGY) (<a href="http://www.itf-froeschl.de">ITF Fr&ouml;schl</a>)</li>
<li><b>ITF</b> - FROETEC Simplex ME one tariff electrical meter (N-ENERGY) (<a href="http://www.itf-froeschl.de">ITF Fröschl</a>)</li>
<li><b>EFR</b> - <a href="http://www.efr.de">EFR</a> Smart Grid Hub for electrical meter (EON, N-ENERGY and EnBW)
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;use the 'pathstring' attribute to specifiy your login information
@ -1057,39 +1057,39 @@ JSONMETER_doStatisticDeltaSingle ($$$$$$)
<h3>JSONMETER</h3>
<div>
<ul>
Dieses Modul liest Daten von Messger&auml;ten (z.B. Stromz&auml;hler, Gasz&auml;hler oder W&auml;rmez&auml;hler, so genannte Smartmeter),
welche <a href="http://de.wikipedia.org/wiki/OBIS-Kennzahlen">OBIS</a> kompatible Daten im JSON-Format auf einem Webserver oder auf dem FHEM-Dateisystem zur Verf&uuml;gung stellen.
Dieses Modul liest Daten von Messgeräten (z.B. Stromzähler, Gaszähler oder Wärmezähler, so genannte Smartmeter),
welche <a href="http://de.wikipedia.org/wiki/OBIS-Kennzahlen">OBIS</a> kompatible Daten im JSON-Format auf einem Webserver oder auf dem FHEM-Dateisystem zur Verfügung stellen.
<br>
F&uuml;r detailierte Anleitungen bitte die <a href="http://www.fhemwiki.de/wiki/JSONMETER"><b>FHEM-Wiki</b></a> konsultieren und erg&auml;nzen.
Für detaillierte Anleitungen bitte die <a href="http://www.fhemwiki.de/wiki/JSONMETER"><b>FHEM-Wiki</b></a> konsultieren und ergänzen.
<br>
&nbsp;
<br>
<b>Define</b>
<ul>
<code>define &lt;name&gt; JSONMETER &lt;Ger&auml;tetyp&gt; [&lt;IP-Adresse&gt;] [Abfrageinterval]</code>
<code>define &lt;name&gt; JSONMETER &lt;Gerätetyp&gt; [&lt;IP-Adresse&gt;] [Abfrageinterval]</code>
<br>
Beispiel: <code>define Stromzaehler JSONMETER ITF 192.168.178.20 300</code>
<br>&nbsp;
<li><code>[Abfrageinterval]</code>
<li><code>[Abfrageintervall]</code>
<br>
Optional. Standardm&auml;ssig 300 Sekunden. Der kleinste m&ouml;gliche Wert ist 30.
Optional. Standardmäßig 300 Sekunden. Der kleinste mögliche Wert ist 30.
<br>
Bei 0 kann die Ger&auml;teabfrage nur manuell gestartet werden.
Bei 0 kann die Geräteabfrage nur manuell gestartet werden.
</li><br>
<li><code>&lt;Ger&auml;tetyp&gt;</code>
<li><code>&lt;Gerätetyp&gt;</code>
<br>
Definiert den Pfad und den Port, um die JSON-Datei einzulesen.
<br>
Mit dem Attribute 'pathString' k&ouml;nnen Login Information an den URL-Pfad von vordefinierten Ger&auml;te angehangen werden.
Mit dem Attribute 'pathString' können Login Information an den URL-Pfad von vordefinierten Geräte angehangen werden.
<ul>
<li><b>ITF</b> - FROETEC Simplex ME Eintarifz&auml;hler (N-ENERGY) (<a href="http://www.itf-froeschl.de">ITF Fr&ouml;schl</a>)</li>
<li><b>EFR</b> - <a href="http://www.efr.de">EFR</a> Smart Grid Hub f&uuml;r Stromz&auml;hler (EON, N-ENERGY, EnBW)
<li><b>ITF</b> - FROETEC Simplex ME Eintarifzähler (N-ENERGY) (<a href="http://www.itf-froeschl.de">ITF Fröschl</a>)</li>
<li><b>EFR</b> - <a href="http://www.efr.de">EFR</a> Smart Grid Hub für Stromzähler (EON, N-ENERGY, EnBW)
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Die Login-Information wird &uuml;ber das Attribute 'pathstring' angegeben.
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Die Login-Information wird über das Attribute 'pathstring' angegeben.
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code>?LogName=<i>Benutzer</i>&LogPSWD=<i>Passwort</i></code></li>
<li><b>LS110</b> - <a href="http://www.youless.nl/downloads-ls110.html">YouLess LS110</a> Netzwerkf&auml;higer Sensor f&uuml;r elektromechanische Stromz&auml;hler</li>
<li><b>LS110</b> - <a href="http://www.youless.nl/downloads-ls110.html">YouLess LS110</a> Netzwerkfähiger Sensor für elektromechanische Stromzähler</li>
<li><b>LS120</b> - <a href="http://www.youless.nl/winkel/product/ls120.html">YouLess LS120</a> Neues Modell</li>
<li><b>url</b> - benutzt die URL, welche durch das Attribut 'pathString' und 'port' definiert wird.</li>
<li><b>file</b> - benutzt die Datei, welche durch das Attribut 'pathString' definiert wird (im FHEM Dateisystem)</li>
@ -1102,7 +1102,7 @@ JSONMETER_doStatisticDeltaSingle ($$$$$$)
<ul>
<li><code>activeTariff &lt; 0 - 9 &gt;</code>
<br>
Erlaubt die gezielte, separate Erfassung der statistischen Verbrauchswerte (doStatistics = 1) f&uuml;r verschiedene Tarife (Doppelstromz&auml;hler), wenn der Stromz&auml;hler dies selbst nicht unterscheiden kann (z.B. LS110) oder wenn gepr&uuml;ft werden soll, ob ein zeitabh&auml;ngiger Tarif preiswerter w&auml;re. Dieser Wert muss entsprechend des vorhandenen oder geplanten Tarifes zum jeweiligen Zeitpunkt z.B. durch den FHEM-Befehl "at" gesetzt werden.<br>
Erlaubt die gezielte, separate Erfassung der statistischen Verbrauchswerte (doStatistics = 1) für verschiedene Tarife (Doppelstromzähler), wenn der Stromzähler dies selbst nicht unterscheiden kann (z.B. LS110) oder wenn geprüft werden soll, ob ein zeitabhängiger Tarif preiswerter re. Dieser Wert muss entsprechend des vorhandenen oder geplanten Tarifes zum jeweiligen Zeitpunkt z.B. durch den FHEM-Befehl "at" gesetzt werden.<br>
0 = tariflos
</li><br>
<li><code>INTERVAL &lt;Abfrageinterval&gt;</code>
@ -1111,17 +1111,17 @@ JSONMETER_doStatisticDeltaSingle ($$$$$$)
</li><br>
<li><code>resetStatistics &lt;statWerte&gt;</code>
<br>
L&ouml;scht die ausgew&auml;hlten statisischen Werte: <i>all, statElectricityConsumed..., statElectricityConsumedTariff..., statElectricityPower...</i>
Löscht die ausgewählten statisischen Werte: <i>all, statElectricityConsumed..., statElectricityConsumedTariff..., statElectricityPower...</i>
</li><br>
<li><code>restartJsonAnalysis</code>
<br>
Neustart der Analyse der json-Datei zum Auffinden bekannter Ger&auml;tewerte (kompatibel zum OBIS Standard).
Diese Analysie wird normaler Weise nur einmalig durchgef&uuml;hrt, nachdem Ger&auml;tewerte gefunden wurden.
Neustart der Analyse der json-Datei zum Auffinden bekannter Gerätewerte (kompatibel zum OBIS Standard).
Diese Analysie wird normaler Weise nur einmalig durchgeführt, nachdem Gerätewerte gefunden wurden.
</li><br>
<li><code>statusRequest</code>
<br>
Aktualisieren der Ger&auml;tewerte</li>
Aktualisieren der Gerätewerte</li>
</ul>
<br>
@ -1142,35 +1142,35 @@ JSONMETER_doStatisticDeltaSingle ($$$$$$)
<ul>
<li><code>alwaysAnalyse &lt; 0 | 1 &gt;</code>
<br>
F&uuml;hrt bei jeder Abfrage der Ger&auml;tewerte eine Analyse der JSON-Datenstruktur durch.
Führt bei jeder Abfrage der Gerätewerte eine Analyse der JSON-Datenstruktur durch.
<br>
Dies ist sinnvoll, wenn sich die JSON-Struktur &auml;ndert. Normalerweise wird die analysierte Struktur
Dies ist sinnvoll, wenn sich die JSON-Struktur ändert. Normalerweise wird die analysierte Struktur
zwischengespeichert, um die CPU-Last gering zu halten.
</li><br>
<li><code>doStatistics &lt; 0 | 1 &gt;</code>
<br>
Bildet t&auml;gliche, monatliche und j&auml;hrliche Statistiken bestimmter Ger&auml;tewerte (Mittel/Min/Max oder kumulierte Werte).
F&uuml;r grafische Auswertungen k&ouml;nnen die Werte der Form 'stat<i>ReadingName</i><b>Last</b>' genutzt werden.
Bildet tägliche, monatliche und jährliche Statistiken bestimmter Gerätewerte (Mittel/Min/Max oder kumulierte Werte).
Für grafische Auswertungen nnen die Werte der Form 'stat<i>ReadingName</i><b>Last</b>' genutzt werden.
</li><br>
<li><code>pathString &lt;Zeichenkette&gt;</code>
<ul>
<li>Ger&auml;tetyp 'file': definiert den lokalen Dateinamen und -pfad
<li>Gerätetyp 'file': definiert den lokalen Dateinamen und -pfad
</li>
<li>Ger&auml;tetyp 'url': Definiert den URL-Pfad
<li>Gerätetyp 'url': Definiert den URL-Pfad
</li>
<li>Andere: Kann benutzt werden um Login-Information zum URL Pfad von vordefinerten Ger&auml;ten hinzuzuf&uuml;gen
<li>Andere: Kann benutzt werden um Login-Information zum URL Pfad von vordefinierten Geräten hinzuzufügen
</li>
</ul>
</li><br>
<li><code>port &lt;Nummer&gt;</code>
<br>
Beim Ger&auml;tetyp 'url' kann hier der URL-Port festgelegt werden. (standardm&auml;ssig 80)
Beim Gerätetyp 'url' kann hier der URL-Port festgelegt werden. (standardmäßig 80)
</li><br>
<li><code>timeOut &lt;Sekunden&gt;</code>
<br>
Gibt an, nach wieviel Sekunden das Einlesen der Rohdaten abgebrochen werden soll. (standardm&auml;ssig 10)
Gibt an, nach wieviel Sekunden das Einlesen der Rohdaten abgebrochen werden soll. (standardmäßig 10)
<br>
Die Laufzeit des Einlesevorganges wird bei "get <device> jsonFile" angezeigt.
Die Laufzeit des Einlesevorganges wird bei "get &lt;device&gt; jsonFile" angezeigt.
</li><br>
<li><a href="#readingFnAttributes">readingFnAttributes</a></li>
</ul>

View File

@ -1,4 +1,4 @@
###############################################################
###############################################################
# $Id$
#
# 72_FRITZBOX.pm
@ -4815,8 +4815,8 @@ sub FRITZBOX_fritztris($)
=pod
=item device
=item summary Controls some features of a Fritz!Box router and Fritz!Fon.
=item summary_DE Steuert gewisse Funktionen eines Fritz!Box Routers und verbundene Fritz!Fon.
=item summary Controls some features of AVM's Fritz!Box router and repeater and Fritz!Fon.
=item summary_DE Steuert einige Funktionen von AVM's Fritz!Box, Fritz!Repeater und Fritz!Fon.
=begin html
@ -4824,7 +4824,7 @@ sub FRITZBOX_fritztris($)
<h3>FRITZBOX</h3>
<div>
<ul>
Controls some features of a Fritz!Box router. Connected Fritz!Fon's (MT-F, MT-D, C3, C4) can be used as
Controls some features of a Fritz!Box router or Fritz!Repeater. Connected Fritz!Fon's (MT-F, MT-D, C3, C4, C5) can be used as
signaling devices. MP3 files and Text2Speech can be played as ring tone or when calling phones.
<br>
For detail instructions, look at and please maintain the <a href="http://www.fhemwiki.de/wiki/FRITZBOX"><b>FHEM-Wiki</b></a>.
@ -4910,7 +4910,7 @@ sub FRITZBOX_fritztris($)
<br>
<code>set fritzbox moh customer /var/InternerSpeicher/warnung.mp3</code>
<br>
Changes the 'music on hold' of the Box. The parameter 'customer' allows to upload a mp3 file. Alternatively a text can be spoken with "say:". The music on hold has <u>always</u> a length of 8.2 s. It is played continousely during the broking of calls or if the modul rings a phone and the call is taken. So, it can be used to transmit little messages of 8 s.
Changes the 'music on hold' of the Box. The parameter 'customer' allows to upload a mp3 file. Alternatively a text can be spoken with "say:". The music on hold has <u>always</u> a length of 8.2 s. It is played continuously during the broking of calls or if the module rings a phone and the call is taken. So, it can be used to transmit little messages of 8 s.
<br>
</li><br>
@ -4942,7 +4942,7 @@ sub FRITZBOX_fritztris($)
Maximal 30 characters are allowed.
<br/><br/>
On Fritz!Fons the parameter 'say:' can be used to let the phone speak a message (max. 100 characters) instead of using the ringtone.
Alternatively, a MP3 link (from a web server) can be played with 'play:'. This creates the internet radio station 'FHEM' and uses translate.google.com for text2speech. It will <u>always</u> play the complete text/sound. It will than ring with standard ring tone until the end of the 'ring duration' is reached.
Alternatively, a MP3 link (from a web server) can be played with 'play:'. This creates the web radio station 'FHEM' and uses translate.google.com for text2speech. It will <u>always</u> play the complete text/sound. It will than ring with standard ring tone until the end of the 'ring duration' is reached.
Say and play <u>may</u> work only with one single Fritz!Fon at a time.
<br>
The behaviour may vary depending on the Fritz!OS.
@ -5087,7 +5087,7 @@ sub FRITZBOX_fritztris($)
<li><code>ringWithIntern &lt;1 | 2 | 3&gt;</code>
<br>
To ring a fon a caller must always be specified. Default of this modul is 50 "ISDN:W&auml;hlhilfe".
To ring a phone a caller must always be specified. Default of this module is 50 "ISDN:Wählhilfe".
<br>
To show a message (default: "FHEM") during a ring the internal phone numbers 1-3 can be specified here.
The concerned analog phone socket <u>must</u> exist.
@ -5193,17 +5193,17 @@ sub FRITZBOX_fritztris($)
<h3>FRITZBOX</h3>
<div>
<ul>
Steuert gewisse Funktionen eines Fritz!Box Routers. Verbundene Fritz!Fon's (MT-F, MT-D, C3, C4) k&ouml;nnen als Signalger&auml;te genutzt werden. MP3-Dateien und Text (Text2Speech) k&ouml;nnen als Klingelton oder einem angerufenen Telefon abgespielt werden.
Steuert gewisse Funktionen eines Fritz!Box Routers. Verbundene Fritz!Fon's (MT-F, MT-D, C3, C4) können als Signalgeräte genutzt werden. MP3-Dateien und Text (Text2Speech) können als Klingelton oder einem angerufenen Telefon abgespielt werden.
<br>
F&uuml;r detailierte Anleitungen bitte die <a href="http://www.fhemwiki.de/wiki/FRITZBOX"><b>FHEM-Wiki</b></a> konsultieren und erg&auml;nzen.
Für detailierte Anleitungen bitte die <a href="http://www.fhemwiki.de/wiki/FRITZBOX"><b>FHEM-Wiki</b></a> konsultieren und ergänzen.
<br/><br/>
Das Modul schaltet in den lokalen Modus, wenn FHEM auf einer Fritz!Box l&auml;uft (als root-Benutzer!). Ansonsten versucht es eine Web oder Telnet Verbindung zu "fritz.box" zu &ouml;ffnen. D.h. Telnet (#96*7*) muss auf der Fritz!Box erlaubt sein. F&uuml;r diesen Fernzugriff muss <u>einmalig</u> das Passwort gesetzt werden.
Das Modul schaltet in den lokalen Modus, wenn FHEM auf einer Fritz!Box läuft (als root-Benutzer!). Ansonsten versucht es eine Web oder Telnet Verbindung zu "fritz.box" zu öffnen. D.h. Telnet (#96*7*) muss auf der Fritz!Box erlaubt sein. Für diesen Fernzugriff muss <u>einmalig</u> das Passwort gesetzt werden.
<br/><br/>
Die Steuerung erfolgt teilweise &uuml;ber die offizielle TR-064-Schnittstelle und teilweise &uuml;ber undokumentierte Schnittstellen zwischen Webinterface und Firmware Kern. Das Modul funktioniert am besten mit dem Fritz!OS 6.24. Bei den nachfolgenden Fritz!OS Versionen hat AVM einige interne Schnittstellen (telnet, webcm) ersatzlos gestrichen. <b>Einige Modul-Funktionen sind dadurch nicht oder nur eingeschr&auml;nkt verf&uuml;gbar (siehe Anmerkungen zu ben&ouml;tigten API).</b>
Die Steuerung erfolgt teilweise über die offizielle TR-064-Schnittstelle und teilweise über undokumentierte Schnittstellen zwischen Webinterface und Firmware Kern. Das Modul funktioniert am besten mit dem Fritz!OS 6.24. Bei den nachfolgenden Fritz!OS Versionen hat AVM einige interne Schnittstellen (telnet, webcm) ersatzlos gestrichen. <b>Einige Modul-Funktionen sind dadurch nicht oder nur eingeschränkt verfügbar (siehe Anmerkungen zu benötigten API).</b>
<br>
Bitte auch die anderen Fritz!Box-Module beachten: <a href="#SYSMON">SYSMON</a> und <a href="#FB_CALLMONITOR">FB_CALLMONITOR</a>.
<br>
<i>Das Modul nutzt das Perlmodule 'Net::Telnet', 'JSON::XS', 'LWP', 'SOAP::Lite' f&uuml;r den Fernzugriff.</i>
<i>Das Modul nutzt das Perlmodule 'Net::Telnet', 'JSON::XS', 'LWP', 'SOAP::Lite' für den Fernzugriff.</i>
<br/><br/>
<a name="FRITZBOXdefine"></a>
<b>Define</b>
@ -5229,15 +5229,15 @@ sub FRITZBOX_fritztris($)
<br>
Schaltet den Weckruf Nummer 1, 2 oder 3 an oder aus (Standard ist on). Setzt die Zeit und den Wochentag.
<br>
Ben&ouml;tigt die API: Telnet oder webcm.
Benötigt die API: Telnet oder webcm.
</li><br>
<li><code>set &lt;name&gt; call &lt;number&gt; [Dauer] [say:Text|play:MP3URL]</code>
<br>
Ruf f&uuml;r 'Dauer' Sekunden (Standard 60 s) die angegebene Telefonnummer von einem internen Telefonanschluss an (Standard ist 1 oder das Attribut 'ringWithIntern'). Wenn der Angerufene abnimmt, h&ouml;rt er die Wartemusik oder den angegebenen Text oder Klang.
Ruf für 'Dauer' Sekunden (Standard 60 s) die angegebene Telefonnummer von einem internen Telefonanschluss an (Standard ist 1 oder das Attribut 'ringWithIntern'). Wenn der Angerufene abnimmt, hört er die Wartemusik oder den angegebenen Text oder Klang.
Der interne Telefonanschluss klingelt ebenfalls.
<br>
"say:" und "play:" ben&ouml;tigen die API: Telnet oder webcm.
"say:" und "play:" benötigen die API: Telnet oder webcm.
</li><br>
<li><code>set &lt;name&gt; checkAPIs</code>
@ -5247,33 +5247,33 @@ sub FRITZBOX_fritztris($)
<li><code>set &lt;name&gt; customerRingTone &lt;internalNumber&gt; &lt;MP3DateiInklusivePfad&gt;</code>
<br>
L&auml;dt die MP3-Datei als Klingelton auf das angegebene Telefon. Die Datei muss im Dateisystem der Fritzbox liegen.
Lädt die MP3-Datei als Klingelton auf das angegebene Telefon. Die Datei muss im Dateisystem der Fritzbox liegen.
<br>
Das Hochladen dauert etwa eine Minute bis der Klingelton verf&uuml;gbar ist. (API: Telnet)
Das Hochladen dauert etwa eine Minute bis der Klingelton verfügbar ist. (API: Telnet)
</li><br>
<li><code>set &lt;name&gt; dect &lt;on|off&gt;</code>
<br>
Schaltet die DECT-Basis der Box an oder aus.
<br>
Ben&ouml;tigt die API: Telnet oder webcm.
Benötigt die API: Telnet oder webcm.
</li><br>
<li><code>set &lt;name&gt; diversity &lt;number&gt; &lt;on|off&gt;</code>
<br>
Schaltet die Rufumleitung (Nummer 1, 2 ...) f&uuml;r einzelne Rufnummern an oder aus.
Schaltet die Rufumleitung (Nummer 1, 2 ...) für einzelne Rufnummern an oder aus.
<br>
Die Rufumleitung muss zuvor auf der Fritz!Box eingerichtet werden. Ben&ouml;tigt die API: Telnet oder webcm.
Die Rufumleitung muss zuvor auf der Fritz!Box eingerichtet werden. Benötigt die API: Telnet oder webcm.
<br>
Achtung! Es lassen sich nur Rufumleitungen f&uuml;r einzelne angerufene Telefonnummern (also nicht "alle") und <u>ohne</u> Abh&auml;ngigkeit von der anrufenden Nummer schalten.
Es muss also ein <i>diversity</i>-Ger&auml;wert geben.
Achtung! Es lassen sich nur Rufumleitungen für einzelne angerufene Telefonnummern (also nicht "alle") und <u>ohne</u> Abhängigkeit von der anrufenden Nummer schalten.
Es muss also ein <i>diversity</i>-Geräwert geben.
<br>
Ben&ouml;tigt die API: Telnet, webcm oder TR064 (>=6.50).
Benötigt die API: Telnet, webcm oder TR064 (>=6.50).
</li><br>
<li><code>set &lt;name&gt; guestWLAN &lt;on|off&gt;</code>
<br>
Schaltet das G&auml;ste-WLAN an oder aus. Das G&auml;ste-Passwort muss gesetzt sein. Wenn notwendig wird auch das normale WLAN angeschaltet.
Schaltet das Gäste-WLAN an oder aus. Das Gäste-Passwort muss gesetzt sein. Wenn notwendig wird auch das normale WLAN angeschaltet.
</li><br>
<li><code>set &lt;name&gt; moh &lt;default|sound|customer&gt; [&lt;MP3DateiInklusivePfad|say:Text&gt;]</code>
@ -5282,14 +5282,14 @@ sub FRITZBOX_fritztris($)
<br>
<code>set fritzbox moh customer /var/InternerSpeicher/warnung.mp3</code>
<br>
&Auml;ndert die Wartemusik ('music on hold') der Box. Mit dem Parameter 'customer' kann eine eigene MP3-Datei aufgespielt werden.
Alternativ kann mit "say:" auch ein Text gesprochen werden. Die Wartemusik hat <u>immer</u> eine L&auml;nge von 8,13 s. Sie wird kontinuierlich w&auml;hrend des Makelns von Gespr&auml;chen aber auch bei Nutzung der internen W&auml;hlhilfe bis zum Abheben des rufenden Telefons abgespielt. Dadurch k&ouml;nnen &uuml;ber FHEM dem Angerufenen 8s-Nachrichten vorgespielt werden.
ändert die Wartemusik ('music on hold') der Box. Mit dem Parameter 'customer' kann eine eigene MP3-Datei aufgespielt werden.
Alternativ kann mit "say:" auch ein Text gesprochen werden. Die Wartemusik hat <u>immer</u> eine Länge von 8,13 s. Sie wird kontinuierlich während des Makelns von Gesprächen aber auch bei Nutzung der internen Wählhilfe bis zum Abheben des rufenden Telefons abgespielt. Dadurch können über FHEM dem Angerufenen 8s-Nachrichten vorgespielt werden.
<br>
</li><br>
<li><code>set &lt;name&gt; password &lt;Passwort&gt;</code>
<br>
Speichert das Passwort f&uuml;r den Fernzugriff &uuml;ber Telnet.
Speichert das Passwort für den Fernzugriff über Telnet.
</li><br>
<li><code>set &lt;name&gt; ring &lt;intNummern&gt; [Dauer [Klingelton]] [show:Text] [say:Text | play:Link]</code>
@ -5301,24 +5301,24 @@ sub FRITZBOX_fritztris($)
<br>
<code>set fritzbox ring 610 10 play:http://raspberrypi/sound.mp3</code>
</dd>
L&auml;sst die internen Nummern f&uuml;r "Dauer" Sekunden und (auf Fritz!Fons) mit dem angegebenen "Klingelton" klingeln.
Lässt die internen Nummern r "Dauer" Sekunden und (auf Fritz!Fons) mit dem angegebenen "Klingelton" klingeln.
<br>
Mehrere interne Nummern m&uuml;ssen durch ein Komma (ohne Leerzeichen) getrennt werden.
Mehrere interne Nummern müssen durch ein Komma (ohne Leerzeichen) getrennt werden.
<br>
Standard-Dauer ist 5 Sekunden. Es kann aber zu Verz&ouml;gerungen in der Fritz!Box kommen. Standard-Klingelton ist der interne Klingelton des Ger&auml;tes.
Der Klingelton wird f&uuml;r Rundrufe (9 oder 50) ignoriert.
Standard-Dauer ist 5 Sekunden. Es kann aber zu Verzögerungen in der Fritz!Box kommen. Standard-Klingelton ist der interne Klingelton des Gerätes.
Der Klingelton wird für Rundrufe (9 oder 50) ignoriert.
<br>
Wenn der Anruf angenommen wird, h&ouml;rt der Angerufene die Wartemusik (music on hold), welche ebenfalls zur Nachrichten&uuml;bermittlung genutzt werden kann.
Wenn der Anruf angenommen wird, hört der Angerufene die Wartemusik (music on hold), welche ebenfalls zur Nachrichtenübermittlung genutzt werden kann.
<br>
Die Parameter <i>Klingelton, show:, say:</i> und <i>play:</i> ben&ouml;tigen die API Telnet oder webcm.
Die Parameter <i>Klingelton, show:, say:</i> und <i>play:</i> benötigen die API Telnet oder webcm.
<br/><br/>
Wenn das <a href=#FRITZBOXattr>Attribut</a> 'ringWithIntern' existiert, wird der Text hinter 'show:' als Name des Anrufers angezeigt.
Er darf maximal 30 Zeichen lang sein.
<br/><br/>
Auf Fritz!Fons wird der Text (max. 100 Zeichen) hinter dem Parameter 'say:' direkt angesagt und ersetzt den Klingelton.
<br>
Alternativ kann mit 'play:' auch ein MP3-Link (vom einem Webserver) abgespielt werden. Dabei wird die Internetradiostation 39 'FHEM' erzeugt und translate.google.com f&uuml;r Text2Speech genutzt. Es wird <u>immer</u> der komplette Text/Klang abgespielt. Bis zum Ende der 'Klingeldauer' klingelt das Telefon dann mit seinem Standard-Klingelton.
Das Abspielen ist eventuell nicht auf mehreren Fritz!Fons gleichzeitig m&ouml;glich.
Alternativ kann mit 'play:' auch ein MP3-Link (vom einem Webserver) abgespielt werden. Dabei wird die Internetradiostation 39 'FHEM' erzeugt und translate.google.com für Text2Speech genutzt. Es wird <u>immer</u> der komplette Text/Klang abgespielt. Bis zum Ende der 'Klingeldauer' klingelt das Telefon dann mit seinem Standard-Klingelton.
Das Abspielen ist eventuell nicht auf mehreren Fritz!Fons gleichzeitig möglich.
<br>
Je nach Fritz!OS kann das beschriebene Verhalten abweichen.
<br>
@ -5326,17 +5326,17 @@ sub FRITZBOX_fritztris($)
<li><code>set &lt;name&gt; sendMail [to:&lt;Address&gt;] [subject:&lt;Subject&gt;] [body:&lt;Text&gt;]</code>
<br>
Sendet eine Email &uuml;ber den Emailbenachrichtigungsservice der als Push Service auf der Fritz!Box konfiguriert wurde.
Mit "\n" kann einen Zeilenumbruch im Textk&ouml;rper erzeut werden.
Alle Parameter k&ouml;nnen ausgelassen werden. Bitte kontrolliert, dass die Email nicht im Junk-Verzeichnis landet.
Sendet eine Email über den Emailbenachrichtigungsservice der als Push Service auf der Fritz!Box konfiguriert wurde.
Mit "\n" kann einen Zeilenumbruch im Textkörper erzeut werden.
Alle Parameter können ausgelassen werden. Bitte kontrolliert, dass die Email nicht im Junk-Verzeichnis landet.
<br>
Ben&ouml;tigt einen Telnet Zugang zur Box.
Benötigt einen Telnet Zugang zur Box.
<br>
</li><br>
<li><code>set &lt;name&gt; startRadio &lt;internalNumber&gt; [Name oder Nummer]</code>
<br>
Startet das Internetradio auf dem angegebenen Fritz!Fon. Eine verf&uuml;gbare Radiostation kann &uuml;ber den Namen oder die (Ger&auml;tewert)Nummer ausgew&auml;hlt werden. Ansonsten wird die in der Box als Internetradio-Klingelton eingestellte Station abgespielt. (Also <b>nicht</b> die am Telefon ausgew&auml;hlte.)
Startet das Internetradio auf dem angegebenen Fritz!Fon. Eine verfügbare Radiostation kann über den Namen oder die (Gerätewert)Nummer ausgewählt werden. Ansonsten wird die in der Box als Internetradio-Klingelton eingestellte Station abgespielt. (Also <b>nicht</b> die am Telefon ausgewählte.)
<br>
</li><br>
@ -5348,7 +5348,7 @@ sub FRITZBOX_fritztris($)
<li><code>set &lt;name&gt; update</code>
<br>
Startet eine Aktualisierung der Ger&auml;tewerte.
Startet eine Aktualisierung der Gerätewerte.
</li><br>
<li><code>set &lt;name&gt; wlan &lt;on|off&gt;</code>
@ -5363,31 +5363,31 @@ sub FRITZBOX_fritztris($)
<br>
<li><code>get &lt;name&gt; ringTones</code>
<br>
Zeigt die Liste der Klingelt&ouml;ne, die benutzt werden k&ouml;nnen.
Zeigt die Liste der Klingeltöne, die benutzt werden nnen.
</li><br>
<li><code>get &lt;name&gt; shellCommand &lt;Befehl&gt;</code>
<br>
F&uuml;hrt den angegebenen Befehl auf der Fritz!Box-Shell aus und gibt das Ergebnis zur&uuml;ck.
Kann benutzt werden, um Shell-Befehle auszuf&uuml;hren, die nicht im Modul implementiert sind.
Führt den angegebenen Befehl auf der Fritz!Box-Shell aus und gibt das Ergebnis zurück.
Kann benutzt werden, um Shell-Befehle auszuführen, die nicht im Modul implementiert sind.
<br>
Muss zuvor &uuml;ber das Attribute "allowShellCommand" freigeschaltet werden.
Muss zuvor über das Attribute "allowShellCommand" freigeschaltet werden.
</li><br>
<li><code>get &lt;name&gt; tr064Command &lt;service&gt; &lt;control&gt; &lt;action&gt; [[argName1 argValue1] ...] </code>
<br>
F&uuml;hrt &uuml;ber TR-064 Aktionen aus (siehe <a href="http://avm.de/service/schnittstellen/">Schnittstellenbeschreibung</a> von AVM).
Führt über TR-064 Aktionen aus (siehe <a href="http://avm.de/service/schnittstellen/">Schnittstellenbeschreibung</a> von AVM).
<br>
argValues mit Leerzeichen m&uuml;ssen in Anf&uuml;hrungszeichen eingeschlossen werden.
argValues mit Leerzeichen müssen in Anführungszeichen eingeschlossen werden.
<br>
Beispiel: <code>get Fritzbox tr064Command X_AVM-DE_OnTel:1 x_contact GetDECTHandsetInfo NewDectID 1</code>
<br>
Muss zuvor &uuml;ber das Attribute "allowTR064Command" freigeschaltet werden.
Muss zuvor über das Attribute "allowTR064Command" freigeschaltet werden.
</li><br>
<li><code>get &lt;name&gt; tr064ServiceListe</code>
<br>
Zeigt die Liste der TR-064-Dienste und Aktionen, die auf dem Ger&auml;t erlaubt sind.
Zeigt die Liste der TR-064-Dienste und Aktionen, die auf dem Gerät erlaubt sind.
</li><br>
</ul>
@ -5407,33 +5407,33 @@ sub FRITZBOX_fritztris($)
<li><code>boxUser &lt;user name&gt;</code>
<br>
Benutzername f&uuml;r den TR064- oder einen anderen webbasierten Zugang. Normalerweise wird keine Benutzername f&uuml;r das Login ben&ouml;tigt.
Wenn die Fritz!Box anders konfiguriert ist, kann der Nutzer &uuml;ber dieses Attribut definiert werden.
Benutzername für den TR064- oder einen anderen webbasierten Zugang. Normalerweise wird keine Benutzername für das Login benötigt.
Wenn die Fritz!Box anders konfiguriert ist, kann der Nutzer über dieses Attribut definiert werden.
</li><br>
<li><code>defaultCallerName &lt;Text&gt;</code>
<br>
Standard-Text, der auf dem angerufenen internen Telefon als "Anrufer" gezeigt wird.
<br>
Dies erfolgt, indem w&auml;hrend des Klingelns tempor&auml;r der Name der internen anrufenden Nummer ge&auml;ndert wird.
Dies erfolgt, indem während des Klingelns temporär der Name der internen anrufenden Nummer geändert wird.
<br>
Es sind maximal 30 Zeichen erlaubt. Das Attribute "ringWithIntern" muss ebenfalls spezifiziert sein.
<br>
Ben&ouml;tigt die API: Telnet oder webcmd
Benötigt die API: Telnet oder webcmd
</li><br>
<li><code>defaultUploadDir &lt;fritzBoxPath&gt;</code>
<br>
Dies ist der Standard-Pfad der f&uuml;r Dateinamen benutzt wird, die nicht mit einem / (Schr&auml;gstrich) beginnen.
Dies ist der Standard-Pfad der für Dateinamen benutzt wird, die nicht mit einem / (Schrägstrich) beginnen.
<br>
Es muss ein Pfad auf der Fritz!Box sein. D.h., er sollte mit /var/InternerSpeicher starten, wenn es in Windows unter \\ip-address\fritz.nas erreichbar ist.
</li><br>
<li><code>forceTelnetConnection &lt;0 | 1&gt;</code>
<br>
Erzwingt den Fernzugriff &uuml;ber Telnet (anstatt &uuml;ber die WebGUI oder TR-064).
Erzwingt den Fernzugriff über Telnet (anstatt über die WebGUI oder TR-064).
<br>
Dieses Attribut muss bei &auml;lteren Ger&auml;ten/Firmware aktiviert werden.
Dieses Attribut muss bei älteren Geräten/Firmware aktiviert werden.
</li><br>
<li><code>fritzBoxIP &lt;IP-Adresse&gt;</code>
@ -5443,31 +5443,31 @@ sub FRITZBOX_fritztris($)
<li><code>INTERVAL &lt;Sekunden&gt;</code>
<br>
Abfrage-Interval. Standard ist 300 (Sekunden). Der kleinste m&ouml;gliche Wert ist 60.
Abfrage-Interval. Standard ist 300 (Sekunden). Der kleinste mögliche Wert ist 60.
</li><br>
<li><code>ringWithIntern &lt;1 | 2 | 3&gt;</code>
<br>
Um ein Telefon klingeln zu lassen, muss in der Fritzbox eine Anrufer (W&auml;hlhilfe, Wert 'box_stdDialPort') spezifiziert werden.
Um ein Telefon klingeln zu lassen, muss in der Fritzbox eine Anrufer (Wählhilfe, Wert 'box_stdDialPort') spezifiziert werden.
<br>
Um w&auml;hrend des Klingelns eine Nachricht (Standard: "FHEM") anzuzeigen, kann hier die interne Nummer 1-3 angegeben werden.
Um während des Klingelns eine Nachricht (Standard: "FHEM") anzuzeigen, kann hier die interne Nummer 1-3 angegeben werden.
Der entsprechende analoge Telefonanschluss muss vorhanden sein.
</li><br>
<li><code>telnetTimeOut &lt;Sekunden&gt;</code>
<br>
Maximale Zeit, bis zu der w&auml;hrend einer Telnet-Sitzung auf Antwort gewartet wird. Standard ist 10 s.
Maximale Zeit, bis zu der während einer Telnet-Sitzung auf Antwort gewartet wird. Standard ist 10 s.
</li><br>
<li><code>telnetUser &lt;user name&gt;</code>
<br>
Benutzername f&uuml;r den Telnetzugang. Normalerweise wird keine Benutzername f&uuml;r das Login ben&ouml;tigt.
Wenn die Fritz!Box anders konfiguriert ist, kann der Nutzer &uuml;ber dieses Attribut definiert werden.
Benutzername für den Telnetzugang. Normalerweise wird keine Benutzername für das Login benötigt.
Wenn die Fritz!Box anders konfiguriert ist, kann der Nutzer über dieses Attribut definiert werden.
</li><br>
<li><code>useGuiHack &lt;0 | 1&gt;</code>
<br>
Falls die APIs der Box nicht mehr die &Auml;nderung des Klingeltones unterst&uuml;tzen (Fritz!OS >6.24), kann dieses Attribute entsprechend der <a href="http://www.fhemwiki.de/wiki/FRITZBOX#Klingelton-Einstellung_und_Abspielen_von_Sprachnachrichten_bei_Fritz.21OS-Versionen_.3E6.24">WIKI-Anleitung</a> genutzt werden.
Falls die APIs der Box nicht mehr die änderung des Klingeltones unterstützen (Fritz!OS >6.24), kann dieses Attribute entsprechend der <a href="http://www.fhemwiki.de/wiki/FRITZBOX#Klingelton-Einstellung_und_Abspielen_von_Sprachnachrichten_bei_Fritz.21OS-Versionen_.3E6.24">WIKI-Anleitung</a> genutzt werden.
</li><br>
<li><a href="#readingFnAttributes">readingFnAttributes</a></li>
@ -5485,25 +5485,25 @@ sub FRITZBOX_fritztris($)
<br>
<li><b>box_dect</b> - Aktueller Status des DECT-Basis</li>
<li><b>box_fwVersion</b> - Firmware-Version der Box, wenn veraltet dann wird '(old)' angehangen</li>
<li><b>box_guestWlan</b> - Aktueller Status des G&auml;ste-WLAN</li>
<li><b>box_guestWlanCount</b> - Anzahl der Ger&auml;te die &uuml;ber das G&auml;ste-WLAN verbunden sind</li>
<li><b>box_guestWlanRemain</b> - Verbleibende Zeit bis zum Ausschalten des G&auml;ste-WLAN</li>
<li><b>box_guestWlan</b> - Aktueller Status des Gäste-WLAN</li>
<li><b>box_guestWlanCount</b> - Anzahl der Geräte die über das ste-WLAN verbunden sind</li>
<li><b>box_guestWlanRemain</b> - Verbleibende Zeit bis zum Ausschalten des Gäste-WLAN</li>
<li><b>box_ipExtern</b> - Internet IP der Fritz!Box</li>
<li><b>box_model</b> - Fritz!Box-Modell</li>
<li><b>box_moh</b> - Wartemusik-Einstellung</li>
<li><b>box_powerRate</b> - aktueller Stromverbrauch in Prozent der maximalen Leistung</li>
<li><b>box_rateDown</b> - Download-Geschwindigkeit des letzten Intervals in kByte/s</li>
<li><b>box_rateUp</b> - Upload-Geschwindigkeit des letzten Intervals in kByte/s</li>
<li><b>box_stdDialPort</b> - Anschluss der ger&auml;teseitig von der W&auml;hlhilfe genutzt wird</li>
<li><b>box_tr064</b> - Anwendungsschnittstelle TR-064 (wird auch von diesem Modul ben&ouml;tigt)</li>
<li><b>box_stdDialPort</b> - Anschluss der geräteseitig von der hlhilfe genutzt wird</li>
<li><b>box_tr064</b> - Anwendungsschnittstelle TR-064 (wird auch von diesem Modul benötigt)</li>
<li><b>box_tr069</b> - Provider-Fernwartung TR-069 (sicherheitsrelevant!)</li>
<li><b>box_wlanCount</b> - Anzahl der Ger&auml;te die &uuml;ber WLAN verbunden sind</li>
<li><b>box_wlanCount</b> - Anzahl der Geräte die über WLAN verbunden sind</li>
<li><b>box_wlan_2.4GHz</b> - Aktueller Status des 2.4-GHz-WLAN</li>
<li><b>box_wlan_5GHz</b> - Aktueller Status des 5-GHz-WLAN</li>
<br>
<li><b>dect</b><i>1</i> - Name des DECT Telefons <i>1</i></li>
<li><b>dect</b><i>1</i><b>_alarmRingTone</b> - Klingelton beim Wecken &uuml;ber das DECT Telefon <i>1</i></li>
<li><b>dect</b><i>1</i><b>_alarmRingTone</b> - Klingelton beim Wecken über das DECT Telefon <i>1</i></li>
<li><b>dect</b><i>1</i><b>_custRingTone</b> - Benutzerspezifischer Klingelton des DECT Telefons <i>1</i></li>
<li><b>dect</b><i>1</i><b>_fwVersion</b> - Firmware-Version des DECT Telefons <i>1</i></li>
<li><b>dect</b><i>1</i><b>_intern</b> - Interne Nummer des DECT Telefons <i>1</i></li>
@ -5520,16 +5520,16 @@ sub FRITZBOX_fritztris($)
<li><b>fon</b><i>1</i><b>_intern</b> - Interne Nummer des analogen Telefonanschlusses <i>1</i></li>
<li><b>fon</b><i>1</i><b>_out</b> - ausgehende Nummer des Anschlusses <i>1</i></li>
<br>
<li><b>gsm_internet</b> - Internetverbindung errichtet &uuml;ber Mobilfunk-Stick </li>
<li><b>gsm_rssi</b> - Indikator der empfangenen GSM-Signalst&auml;rke (0-100)</li>
<li><b>gsm_internet</b> - Internetverbindung errichtet über Mobilfunk-Stick </li>
<li><b>gsm_rssi</b> - Indikator der empfangenen GSM-Signalstärke (0-100)</li>
<li><b>gsm_state</b> - Status der Mobilfunk-Verbindung</li>
<li><b>gsm_technology</b> - GSM-Technologie, die f&uuml;r die Daten&uuml;bertragung genutzt wird (GPRS, EDGE, UMTS, HSPA)</li>
<li><b>gsm_technology</b> - GSM-Technologie, die für die Datenübertragung genutzt wird (GPRS, EDGE, UMTS, HSPA)</li>
<br>
<li><b>mac_</b><i>01_26_FD_12_01_DA</i> - MAC Adresse und Name eines aktiven Netzwerk-Ger&auml;tes.
<li><b>mac_</b><i>01_26_FD_12_01_DA</i> - MAC Adresse und Name eines aktiven Netzwerk-Gerätes.
<br>
Bei einer WLAN-Verbindung wird "WLAN" und (von der Box gesehen) die Sende- und Empfangsgeschwindigkeit und die Empfangsst&auml;rke angehangen. Bei einer LAN-Verbindung wird der LAN-Port und die LAN-Geschwindigkeit angehangen. Gast-Verbindungen werden mit "gWLAN" oder "gLAN" gekennzeichnet.
Bei einer WLAN-Verbindung wird "WLAN" und (von der Box gesehen) die Sende- und Empfangsgeschwindigkeit und die Empfangsstärke angehangen. Bei einer LAN-Verbindung wird der LAN-Port und die LAN-Geschwindigkeit angehangen. Gast-Verbindungen werden mit "gWLAN" oder "gLAN" gekennzeichnet.
<br>
Inaktive oder entfernte Ger&auml;te erhalten zuerst den Werte "inactive" und werden beim n&auml;chsten Update gel&ouml;scht.</li>
Inaktive oder entfernte Geräte erhalten zuerst den Werte "inactive" und werden beim nächsten Update gelöscht.</li>
<br>
<li><b>radio</b><i>01</i> - Name der Internetradiostation <i>01</i></li>
<br>
@ -5538,7 +5538,7 @@ sub FRITZBOX_fritztris($)
<li><b>tam</b><i>1</i><b>_oldMsg</b> - Anzahl alter Nachrichten auf dem Anrufbeantworter <i>1</i></li>
<li><b>tam</b><i>1</i><b>_state</b> - Aktueller Status des Anrufbeantworters <i>1</i></li>
<br>
<li><b>user</b><i>01</i> - Name von Nutzer/IP <i>1</i> f&uuml;r den eine Zugangsbeschr&auml;nkung (Kindersicherung) eingerichtet ist</li>
<li><b>user</b><i>01</i> - Name von Nutzer/IP <i>1</i> für den eine Zugangsbeschränkung (Kindersicherung) eingerichtet ist</li>
<li><b>user</b><i>01</i>_thisMonthTime - Internetnutzung des Nutzers/IP <i>1</i> im aktuellen Monat (Kindersicherung)</li>
<li><b>user</b><i>01</i>_todaySeconds - heutige Internetnutzung des Nutzers/IP <i>1</i> in Sekunden (Kindersicherung)</li>
<li><b>user</b><i>01</i>_todayTime - heutige Internetnutzung des Nutzers/IP <i>1</i> (Kindersicherung)</li>

View File

@ -1,4 +1,4 @@
##############################################
##############################################
# $Id$
#
# 98_statistic.pm
@ -60,14 +60,26 @@ sub statistics_UpdateDevReading($$$$);
# Syntax: readingName => statisticType
# statisticType: 0=noStatistic | 1=minMaxAvg(daily) | 2=delta | 3=stateDuration | 4=tendency | 5=minMaxAvg(hourly)
##############################################################
my %knownReadings = (
"brightness" => 5
,"count" => 2
my %knownReadings = (
"ambientTemperature" => 5
,"brightness" => 5
,"count" => 2
,"counterHeatQHeating" =>2
,"counterHeatQHotWater" =>2
,"counterHeatQTotal" =>2
,"counterHours2ndHeatSource1" =>2
,"counterHours2ndHeatSource2" =>2
,"counterHours2ndHeatSource3" =>2
,"counterHoursHeatPump" =>2
,"counterHoursHeating" =>2
,"counterHoursHotWater" =>2
,"current" => 1
,"energy" => 2
,"energy_current" => 1
,"energy_total" => 2
,"energyCalc" => 2
,"heatSourceDefrostCounterAir" => 2
,"heatSourceDefrostCounterReverse" => 2
,"Total.Energy" => 2
,"humidity" => 1
,"lightsensor" => 3
@ -1156,7 +1168,7 @@ sub statistics_UpdateDevReading($$$$)
=item helper
=item summary Calculates statistical values and adds them to the devices.
=item summary_DE Berechnet statistische Werte und f&uuml;gt sie dem Ger&auml;t hinzu.
=item summary_DE Berechnet statistische Werte und fügt sie dem Gerät hinzu.
<a name="statistics"></a>
<h3>statistics</h3>
@ -1329,53 +1341,52 @@ sub statistics_UpdateDevReading($$$$)
<h3>statistics</h3>
<div>
<ul>
Dieses Modul wertet von den angegebenen Ger&auml;ten (als regul&auml;rer Ausdruck) bestimmte Werte statistisch aus und f&uuml;gt das Ergebnis den jeweiligen Ger&auml;ten als neue Werte hinzu.
Dieses Modul wertet von den angegebenen Geräten (als regulärer Ausdruck) bestimmte Werte statistisch aus und fügt das Ergebnis den jeweiligen Geräten als neue Werte hinzu.
<br>
F&uuml;r detailierte Anleitungen bitte die <a href="http://www.fhemwiki.de/wiki/Statistics"><b>FHEM-Wiki</b></a> konsultieren und erg&auml;nzen.
Für detailierte Anleitungen bitte die <a href="http://www.fhemwiki.de/wiki/Statistics"><b>FHEM-Wiki</b></a> konsultieren und ergänzen.
<br>&nbsp;
<br>
Es unterscheidet in vier Statistik-Typen denen bereits standardm&auml;ssig Ger&auml;tewerte zugeordnet sind:
Es unterscheidet in vier Statistik-Typen denen bereits standardmäßig Gerätewerte zugeordnet sind:
<ul>
<li><b>Min|Avg|Max</b> Minimum, Durchschnitt und Maximum von Momentanwerten:
<br>
&uuml;ber den Zeitraum Tag, Monat und Jahr:
über den Zeitraum Tag, Monat und Jahr:
<br>
<i>current, energy_current, humidity, luminosity, temperature, voltage</i>
<i>current, energy_current, humidity, luminosity, temperature, voltage, etc.</i>
<br>
&uuml;ber den Zeitraum Stunde, Tag, Monat und Jahr:
über den Zeitraum Stunde, Tag, Monat und Jahr:
<br>
<i>brightness, wind, wind_speed, windSpeed</i>
<i>brightness, wind, wind_speed, windSpeed, etc.</i>
</li><br>
<li><b>Tendency</b> Tendenz &uuml;ber 1h, 2h, 3h und 6h: <i>pressure</i>
<li><b>Tendency</b> Tendenz über 1h, 2h, 3h und 6h: <i>pressure</i>
</li><br>
<li><b>Delta</b> Differenz zwischen Anfangs- und Endwerte innerhalb eines Zeitraums (Stunde, Tag, Monat, Jahr):
<br>
<i>count, energy, energy_total, power, total, rain, rain_rate, rain_total</i>
<i>count, energy, energy_total, power, total, rain, rain_rate, rain_total, etc.</i>
</li><br>
<li><b>Duration</b> Dauer und Anzahl der Zust&auml;nde (on, off, open, closed...) innerhalb eines Zeitraums (Tag, Monat, Jahr):
<li><b>Duration</b> Dauer und Anzahl der Zustände (on, off, open, closed...) innerhalb eines Zeitraums (Tag, Monat, Jahr):
<br>
<i>lightsensor, lock, motion, Window, window, state (wenn kein anderer Ger&auml;tewert g&uuml;ltig)</i>
<i>lightsensor, lock, motion, Window, window, state (wenn kein anderer Gerätewert ltig)</i>
</li><br>
</ul>
&Uuml;ber die <a href="#statisticsattr">Attribute</a> <code>deltaReadings, durationReadings, minAvgMaxReadings, tendencyReadings</code> k&ouml;nnen weitere Ger&auml;tewerte hinzugef&uuml;gt oder
einem anderen Statistik-Typ zugeordnet werden.
Über die <a href="#statisticsattr">Attribute</a> <code>deltaReadings, durationReadings, minAvgMaxReadings, tendencyReadings</code> können weitere Gerätewerte hinzugefügt oder einem anderen Statistik-Typ zugeordnet werden.
<br>&nbsp;
<br>
<b>Define</b>
<ul>
<br>
<code>define &lt;Name&gt; statistics &lt;Ger&auml;teNameRegExp&gt; [Prefix]</code>
<code>define &lt;Name&gt; statistics &lt;GeräteNameRegExp&gt; [Prefix]</code>
<br>
Beispiel: <code>define Statistik statistics Wettersensor|Badsensor</code>
<br>&nbsp;
<li><code>&lt;Ger&auml;teNameRegExp&gt;</code>
<li><code>&lt;GeräteNameRegExp&gt;</code>
<br>
Regul&auml;rer Ausdruck f&uuml;r den Ger&auml;tenamen. <b>!!! Nicht die Ger&auml;tewerte !!!</b>
Regulärer Ausdruck für den Gerätenamen. <b>!!! Nicht die Gerätewerte !!!</b>
</li><br>
<li><code>[Prefix]</code>
<br>
Optional. Der Prefix wird vor den Namen der statistischen Ger&auml;tewerte gesetzt. Standardm&auml;ssig <i>stat</i>
Optional. Der Prefix wird vor den Namen der statistischen Gerätewerte gesetzt. Standardmäßig <i>stat</i>
</li><br>
</ul>
@ -1383,13 +1394,13 @@ sub statistics_UpdateDevReading($$$$)
<b>Set</b>
<ul>
<br>
<li><code>resetStatistics &lt;All|Ger&auml;tename&gt;</code>
<li><code>resetStatistics &lt;All|Gerätename&gt;</code>
<br>
Setzt die Statistiken der ausgew&auml;hlten Ger&auml;te zur&uuml;ck.
Setzt die Statistiken der ausgewählten Geräte zurück.
</li><br>
<li><code>doStatistics</code>
<br>
Berechnet die aktuellen Statistiken aller beobachteten Ger&auml;te.
Berechnet die aktuellen Statistiken aller beobachteten Geräte.
</li><br>
</ul>
<br>
@ -1405,31 +1416,31 @@ sub statistics_UpdateDevReading($$$$)
<br>
<li><code>dayChangeTime &lt;Zeit&gt;</code>
<br>
Uhrzeit des Tageswechsels. Standardm&auml;ssig 00:00. Bei Wetterdaten kann der Tageswechsel z.B. auf 6:50 gesetzt werden.
Uhrzeit des Tageswechsels. Standardmäßig 00:00. Bei Wetterdaten kann der Tageswechsel z.B. auf 6:50 gesetzt werden.
</li><br>
<li><code>deltaReadings &lt;Ger&auml;tewerte&gt;</code>
<li><code>deltaReadings &lt;Gerätewerte&gt;</code>
<br>
Durch Kommas getrennte Liste von weiteren Ger&auml;tewerten, f&uuml;r welche die Differenz zwischen den Werten am Anfang und Ende einer Periode (Stunde/Tag/Monat/Jahr) bestimmt wird.
Durch Kommas getrennte Liste von weiteren Gerätewerten, r welche die Differenz zwischen den Werten am Anfang und Ende einer Periode (Stunde/Tag/Monat/Jahr) bestimmt wird.
</li><br>
<li><code>durationPeriodHour &lt; 1 | 0 &gt;</code>
<br>
Wenn auf 1 gesetzt, dann werden f&uuml;r "durationReadings" auch st&uuml;ndliche Statistiken gebildet.
Wenn auf 1 gesetzt, dann werden für "durationReadings" auch stündliche Statistiken gebildet.
</li><br>
<li><code>durationReadings &lt;Ger&auml;tewerte&gt;</code>
<li><code>durationReadings &lt;Gerätewerte&gt;</code>
<br>
Durch Kommas getrennte Liste von weiteren Ger&auml;tewerten, f&uuml;r welche die Dauer einzelner Ger&auml;tewerte innerhalb bestimmte Zeitr&auml;ume (Stunde/Tag/Monat/Jahr) erfasst wird.
Durch Kommas getrennte Liste von weiteren Gerätewerten, r welche die Dauer einzelner Gerätewerte innerhalb bestimmte Zeiträume (Stunde/Tag/Monat/Jahr) erfasst wird.
</li><br>
<li><code>excludedReadings &lt;Ger&auml;tenameRegExp:Ger&auml;tewertRegExp&gt;</code>
<li><code>excludedReadings &lt;GerätenameRegExp:GerätewertRegExp&gt;</code>
<br>
Regul&auml;rer Ausdruck der Ger&auml;tewerte die nicht ausgewertet werden sollen.
Regulärer Ausdruck der Gerätewerte die nicht ausgewertet werden sollen.
z.B. <code>FritzDect:current|Sensor_.*:humidity</code>
<br>
</li><br>
<li><code>ignoreDefaultAssignments <code>&lt;0 | 1&gt;</code></code>
<br>
Ignoriert die Standardzuordnung von Ger&auml;tewerten zu Statistiktypen..<br>
D.h., nur die Ger&auml;tewerte, die &uuml;ber Attribute den Statistiktypen zugeordnet sind, werden ausgewertet.
Ignoriert die Standardzuordnung von Gerätewerten zu Statistik-Typen..<br>
D.h., nur die Gerätewerte, die über Attribute den Statistik-Typen zugeordnet sind, werden ausgewertet.
<br>
</li><br>
@ -1437,26 +1448,26 @@ sub statistics_UpdateDevReading($$$$)
<br>
noch nicht implementiert - Es werden keine gesammelten Statistiken angezeigt, sondern nur die unter "singularReadings" definierten Einzelwerte
</li><br>
<li><code>minAvgMaxReadings &lt;Ger&auml;tewerte&gt;</code>
<li><code>minAvgMaxReadings &lt;Gerätewerte&gt;</code>
<br>
Durch Kommas getrennte Liste von Ger&auml;tewerten, f&uuml;r die in bestimmten Zeitr&auml;umen (Tag, Monat, Jahr) Minimum, Mittelwert und Maximum erfasst werden.
Durch Kommas getrennte Liste von Gerätewerten, für die in bestimmten Zeiträumen (Tag, Monat, Jahr) Minimum, Mittelwert und Maximum erfasst werden.
</li><br>
<li><code>periodChangePreset &lt;Sekunden&gt;</code>
<br>
Start der Berechnung der periodischen Daten, standardm&auml;ssig 5 Sekunden vor der vollen Stunde,
Start der Berechnung der periodischen Daten, standardmäßig 5 Sekunden vor der vollen Stunde,
<br>
Erlaubt die korrekte zeitliche Zuordnung in Plots, kann je nach Systemauslastung verringert oder vergr&ouml;&szlig;ert werden.
Erlaubt die korrekte zeitliche Zuordnung in Plots, kann je nach Systemauslastung verringert oder vergrößert werden.
<br>
</li><br>
<li><code>singularReadings &lt;Ger&auml;tRegExp:Ger&auml;teWertRegExp:Statistiktyp:Zeitraum&gt;</code>
<li><code>singularReadings &lt;GerätRegExp:GeräteWertRegExp:Statistiktyp:Zeitraum&gt;</code>
<ul>
<li>Statistiktyp: Min|Avg|Max|Delta|<i>DurationState</i>|<span style="color:blue;">Tendency</span></li>
<li>Statistik-Typ: Min|Avg|Max|Delta|<i>DurationState</i>|<span style="color:blue;">Tendency</span></li>
<li>Zeitraum: Hour|Day|Month|Year|<span style="color:blue;">1h|2h|3h|6h</span></li>
</ul>
Regul&auml;rer Ausdruck statistischer Werte, die <u>zus&auml;tzlich</u> auch als einzelne Werte gespeichert werden sollen.
Regulärer Ausdruck statistischer Werte, die <u>zusätzlich</u> auch als einzelne Werte gespeichert werden sollen.
Erleichtert die Erzeugung von Plots und anderer Auswertungen (notify).
<br>
F&uuml;r "duration"-Ger&auml;tewerte muss der Name des jeweiligen Statuswertes als <code>Statistiktyp</code> eingesetzt werden.
Für "duration"-Gerätewerte muss der Name des jeweiligen Statuswertes als <code>Statistiktyp</code> eingesetzt werden.
<dt>Beispiel:</dt>
<dd>
<code>Wettersensor:rain:Delta:(Hour|Day)|FritzDect:power:Delta:Day</code>
@ -1464,30 +1475,30 @@ sub statistics_UpdateDevReading($$$$)
<code>Wettersensor:rain:Delta:(Hour|Day)|FritzDect:power:Delta:Day</code>
</dd>
</li><br>
<li><code>specialDeltaPeriods &lt;Ger&auml;t:Ger&auml;tewert:Zeitraum:Anzahl1:Anzahl2:...&gt;</code>
<li><code>specialDeltaPeriods &lt;Gerät:Gerätewert:Zeitraum:Anzahl1:Anzahl2:...&gt;</code>
<br>
Erzeugt f&uuml;r die angegebenen "delta"-Ger&auml;tewerte zus&auml;tzliche Einzelwerte &uuml;ber die angegebene Anzahl eines Zeitraums (Hour, Day, Month).
Erzeugt für die angegebenen "delta"-Gerätewerte zusätzliche Einzelwerte über die angegebene Anzahl eines Zeitraums (Hour, Day, Month).
<br>
Regul&auml;re Ausdr&uuml;cke k&ouml;nnen <u>nicht</u> genutzt werden. Es k&ouml;nnen auch mehrere Ger&auml;tewert und/oder Zeitr&auml;ume hinzugef&uuml;gt werden. Diese m&uuml;ssen durch Kommas (ohne Leerzeichen) getrennt werden.
Reguläre Ausdrücke nnen <u>nicht</u> genutzt werden. Es können auch mehrere Gerätewert und/oder Zeiträume hinzugefügt werden. Diese ssen durch Kommas (ohne Leerzeichen) getrennt werden.
<br>
<dt>Beispiel:</dt>
<dd>
<code>attr Statistik specialDeltaPeriods Wettersensor:rain:Hour:06:72:96</code>
<br>
Dies erzeugt 3 zus&auml;tzliche Werte f&uuml;r die Regenmenge in den letzten 6, 72, 96 Stunden.
Dies erzeugt 3 zusätzliche Werte r die Regenmenge in den letzten 6, 72, 96 Stunden.
<br>
<code>attr Statistik specialDeltaPeriods Wettersensor:rain:Hour:48,Wettersensor:rain:Day:30,EZaehler:energy:Month:6:12</code>
<br>
Dies erzeugt 4 zus&auml;tzliche Werte f&uuml;r die Regenmenge in den letzten 48 Stunden und den letzten 30 Tagen und den Energieverbrauch der letzten 6 und 12 Monate.
Dies erzeugt 4 zusätzliche Werte r die Regenmenge in den letzten 48 Stunden und den letzten 30 Tagen und den Energieverbrauch der letzten 6 und 12 Monate.
</dd>
</li><br>
<li><code>specialDeltaPeriodHours</code>
<br>
veraltet
</li><br>
<li><code>tendencyReadings &lt;Ger&auml;tewerte&gt;</code>
<li><code>tendencyReadings &lt;Gerätewerte&gt;</code>
<br>
Durch Kommas getrennte Liste von weiteren Ger&auml;tewerten, f&uuml;r die innerhalb bestimmter Zeitr&auml;ume (1h, 2h, 3h, 6h) die Differenz zwischen Anfangs- und Endwert ermittelt wird.
Durch Kommas getrennte Liste von weiteren Gerätewerten, für die innerhalb bestimmter Zeiträume (1h, 2h, 3h, 6h) die Differenz zwischen Anfangs- und Endwert ermittelt wird.
</li><br>
<li><a href="#readingFnAttributes">readingFnAttributes</a>
</li><br>