added update function for overlay, code cleaned
This commit is contained in:
parent
a020f7ea0f
commit
085af3d5a8
@ -52,6 +52,7 @@ my %sets = (
|
||||
"update" => "noArg",
|
||||
"setGeo" => "",
|
||||
"setZoneOverlay" => "",
|
||||
"updateAllOverlays" => "noArg",
|
||||
"setAllOverlays" => ""
|
||||
);
|
||||
|
||||
@ -204,6 +205,11 @@ sub TadoAPI_Set(@) {
|
||||
}
|
||||
Log3 $name, 4, "TadoAPI $name" . ": " . "$cmd finished\n";
|
||||
|
||||
} elsif( $cmd eq 'updateAllOverlays' ) {
|
||||
Log3 $name, 5, "TadoAPI $name" . ": " . "processing ($cmd)";
|
||||
TadoAPI_GetAllZoneOverlays($hash);
|
||||
Log3 $name, 4, "TadoAPI $name" . ": " . "$cmd finished\n";
|
||||
|
||||
} elsif( $cmd eq 'refreshToken' ) {
|
||||
Log3 $name, 3, "TadoAPI: set $name: processing ($cmd)";
|
||||
RemoveInternalTimer($hash);
|
||||
@ -220,7 +226,16 @@ sub TadoAPI_Set(@) {
|
||||
Log3 $name, 5, "TadoAPI $name" . ": " . "processing ($cmd)";
|
||||
return "ZoneID as parameter needed" if (!$value);
|
||||
if( $value >= 1 ) {
|
||||
TadoAPI_GetZoneReadingsById($hash, $value);
|
||||
my ($temperature, $humidity, $desiredTemp, $currentHeatingPower, $overlay ) = TadoAPI_GetZoneReadingsById($hash, $value);
|
||||
my $zoneName = TadoAPI_GetZoneNameById($hash, $value);
|
||||
readingsBeginUpdate($hash);
|
||||
readingsBulkUpdate($hash, "Temperatur_" . $zoneName, $temperature);
|
||||
readingsBulkUpdate($hash, "Luftfeuchtigkeit_" . $zoneName, $humidity);
|
||||
readingsBulkUpdate($hash, "Heizleistung_" . $zoneName, $currentHeatingPower);
|
||||
readingsBulkUpdate($hash, "OverlayType_" . $zoneName, $overlay);
|
||||
readingsBulkUpdate($hash, "DesiredTemp_" . $zoneName, $desiredTemp);
|
||||
readingsEndUpdate($hash, 1);
|
||||
$message = "OK";
|
||||
} else {
|
||||
return "Wrong ZoneID";
|
||||
}
|
||||
@ -666,7 +681,6 @@ sub TadoAPI_SetZoneOverlayById(@){
|
||||
data => $myjson
|
||||
};
|
||||
|
||||
#Log3 $name, 5, 'NonBlocking Request: ' . Dumper($request);
|
||||
Log3 $name, $reqDebug, "TadoAPI $name" . ": " . "Request $URL";
|
||||
HttpUtils_NonblockingGet($request);
|
||||
}
|
||||
@ -676,19 +690,24 @@ sub TadoAPI_SetAllOverlays(@){
|
||||
my ($hash, $setting) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
my $homeID = $attr{$name}{homeID};
|
||||
my $TokenData = TadoAPI_LoadToken($hash);
|
||||
my @zones = TadoAPI_GetTadoDevices($hash);
|
||||
|
||||
if(defined($TokenData)){
|
||||
my $message = "";
|
||||
my $method = "";
|
||||
my $myjson ="";
|
||||
|
||||
my @devArr = TadoAPI_GetTadoDevices($hash);
|
||||
|
||||
for (my $i=0; $i < @devArr; $i++) {
|
||||
my $zoneid = $devArr[$i]->{'id'};
|
||||
for (my $i=0; $i < @zones; $i++) {
|
||||
my $zoneid = $zones[$i]->{'id'};
|
||||
TadoAPI_SetZoneOverlayById($hash, $zoneid, $setting);
|
||||
}
|
||||
}
|
||||
|
||||
sub TadoAPI_GetAllZoneOverlays(@){
|
||||
my ($hash) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
my @zones = TadoAPI_GetTadoDevices($hash);
|
||||
|
||||
foreach my $zone ( @zones ){
|
||||
my $zoneId = $zone->{'id'};
|
||||
my $zoneName = TadoAPI_ReplaceUmlaute($zone->{'name'});
|
||||
my ($temperature, $humidity, $desiredTemp, $currentHeatingPower, $overlay ) = TadoAPI_GetZoneReadingsById($hash, $zoneId);
|
||||
readingsSingleUpdate($hash, "OverlayType_" . $zoneName, $overlay, 1);
|
||||
}
|
||||
}
|
||||
|
||||
@ -810,7 +829,7 @@ sub Tado_UpdateZoneOverlayCallback($)
|
||||
my ($param, $err, $data) = @_;
|
||||
my $hash = $param->{hash};
|
||||
my $name = $hash->{NAME};
|
||||
my $zoneID = $param->{zoneID};
|
||||
my $zoneId = $param->{zoneID};
|
||||
my $setting = $param->{setting};
|
||||
|
||||
if($err ne "")
|
||||
@ -822,11 +841,21 @@ sub Tado_UpdateZoneOverlayCallback($)
|
||||
elsif($data ne "")
|
||||
{
|
||||
Log3 $name, 5, "url ".$param->{url}." returned: $data";
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "set (async) Overlay for Zone $zoneID to: $setting";
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "set (async) Overlay for Zone $zoneId to: $setting";
|
||||
|
||||
}
|
||||
# finaly update readings
|
||||
TadoAPI_GetZoneReadingsById($hash, $zoneID);
|
||||
my ($temperature, $humidity, $desiredTemp, $currentHeatingPower, $overlay ) = TadoAPI_GetZoneReadingsById($hash, $zoneId);
|
||||
my $zoneName = TadoAPI_GetZoneNameById($hash, $zoneId);
|
||||
|
||||
# updates zone readings
|
||||
readingsBeginUpdate($hash);
|
||||
# readingsBulkUpdate($hash, "Temperatur_" . $zoneName, $temperature);
|
||||
# readingsBulkUpdate($hash, "Luftfeuchtigkeit_" . $zoneName, $humidity);
|
||||
# readingsBulkUpdate($hash, "Heizleistung_" . $zoneName, $currentHeatingPower);
|
||||
readingsBulkUpdate($hash, "OverlayType_" . $zoneName, $overlay);
|
||||
readingsBulkUpdate($hash, "DesiredTemp_" . $zoneName, $desiredTemp);
|
||||
readingsEndUpdate( $hash, 1 );
|
||||
}
|
||||
|
||||
sub TadoAPI_LogInfoCallback($){
|
||||
@ -1425,7 +1454,7 @@ sub TadoAPI_readPassword($)
|
||||
1;
|
||||
|
||||
=pod
|
||||
=item helper
|
||||
=item device
|
||||
=item summary integration of the Tado API
|
||||
=item summary_DE Anbindung der Tado Heizungssteuerung über API
|
||||
=begin html
|
||||
@ -1433,10 +1462,12 @@ sub TadoAPI_readPassword($)
|
||||
<a name="TadoAPI"></a>
|
||||
<h3>TadoAPI</h3>
|
||||
<ul>
|
||||
Module to control the integration of tado devices with FHEM.<br>
|
||||
The TadoAPI module connects your tado devices to FHEM. Most zone readings are shown and desired temperature for a zone can be set.<br>
|
||||
TadoAPI makes use of the (unofficial) tado api and does NOT rely on any addition local client installed.<br>
|
||||
Notes:
|
||||
<ul>
|
||||
<li>JSON has to be installed on the FHEM host.</li>
|
||||
<li>JSON has to be installed on the FHEM host.<br>
|
||||
Please install the module (e.g. with <code>sudo apt-get install libjson-perl</code>) or the correct method for the underlying platform/system.</li>
|
||||
</ul>
|
||||
|
||||
<a name="TadoAPIdefine"></a>
|
||||
|
Loading…
x
Reference in New Issue
Block a user