added Setter for Overlay Desired Temp; getZoneInfo shows more information
This commit is contained in:
parent
9fed48fb7f
commit
572f1fc305
140
98_TadoAPI.pm
140
98_TadoAPI.pm
|
@ -60,7 +60,8 @@ my %sets = (
|
|||
"getTemperature" => "noArg",
|
||||
"refreshToken" => "noArg",
|
||||
"password" => "",
|
||||
"setGeo" => "on,off"
|
||||
"setGeo" => "on,off",
|
||||
"setOverlay" => "20,21,22,off"
|
||||
);
|
||||
|
||||
my %gets = (
|
||||
|
@ -165,9 +166,18 @@ sub TadoAPI_Set(@) {
|
|||
TadoAPI_SetGeo($hash, 0);
|
||||
}
|
||||
TadoAPI_GetGeo($hash);
|
||||
|
||||
return undef;
|
||||
|
||||
} elsif( $cmd eq 'setOverlay' ) {
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "processing ($cmd)" if $debug;
|
||||
if( $value > 10 ) {
|
||||
TadoAPI_SetOverlay($hash, $value);
|
||||
} else {
|
||||
TadoAPI_SetOverlay($hash, "off");
|
||||
}
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "$cmd finished\n";
|
||||
return undef;
|
||||
|
||||
} elsif( $cmd eq 'refreshToken' ) {
|
||||
Log3 $name, 3, "TadoAPI: set $name: processing ($cmd)";
|
||||
RemoveInternalTimer($hash);
|
||||
|
@ -179,7 +189,6 @@ sub TadoAPI_Set(@) {
|
|||
Log3 $name, 3, "TadoAPI $name" . ": " . "processing ($cmd)" if $debug;
|
||||
TadoAPI_GetTemperature($hash);
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "$cmd finished\n";
|
||||
|
||||
return undef;
|
||||
|
||||
|
||||
|
@ -206,6 +215,8 @@ sub TadoAPI_Get(@) {
|
|||
my $name = $hash->{NAME};
|
||||
my $homeID = $attr{$name}{homeID};
|
||||
my $mobileID = $attr{$name}{mobileID};
|
||||
my $message = undef;
|
||||
|
||||
#debug
|
||||
$debug = $attr{$name}{debug};
|
||||
if(!defined($gets{$cmd})) {
|
||||
|
@ -237,11 +248,13 @@ sub TadoAPI_Get(@) {
|
|||
$cmd eq "getZoneInfo" and do {
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "processing ($cmd)" if $debug;
|
||||
TadoAPI_GetZoneInfo($hash);
|
||||
$message = "See Logfile for Info";
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "$cmd finished\n";
|
||||
last;
|
||||
};
|
||||
}
|
||||
};
|
||||
return $message if $message;
|
||||
return TadoAPI_Catch($@) if $@;
|
||||
return undef;
|
||||
}
|
||||
|
@ -534,6 +547,69 @@ sub TadoAPI_Update(@){
|
|||
|
||||
######################## tado methods ########################
|
||||
##############################################################
|
||||
sub TadoAPI_SetOverlay(@){
|
||||
my ($hash, $setting) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
my $homeID = $attr{$name}{homeID};
|
||||
my $URL = $QueryURL . qq{/$homeID/zones/1/overlay};
|
||||
|
||||
Log3 $name, 3, "TadoAPI $name" . ": SetOverlay (Setting: " . $setting . ") - " . "query-URL: $URL" if $debug;
|
||||
|
||||
if($apiStatus == 1){
|
||||
TadoAPI_Connect($hash);
|
||||
|
||||
$header = HTTP::Headers->new("Content-Type"=>"application/json;charset=UTF-8","Authorization" => "$TokenData->{'token_type'} $TokenData->{'access_token'}");
|
||||
|
||||
$UserAgent = LWP::UserAgent::Paranoid->new(ssl_opts => { verify_hostname => 1 },protocols_allowed => ['https','http'],request_timeout => 5,);
|
||||
$UserAgent->default_headers($header);
|
||||
|
||||
if ($setting eq "off"){
|
||||
# Delete overlay
|
||||
$Request = HTTP::Request->new( 'DELETE', $URL );
|
||||
$Request->content_type('application/json');
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "Deleting Overlay (off)" if $debug;
|
||||
}elsif($setting > 10){
|
||||
$Request = HTTP::Request->new( 'PUT', $URL );
|
||||
$Request->content_type('application/json');
|
||||
my $message = {
|
||||
setting => {
|
||||
type => "HEATING",
|
||||
power => "ON",
|
||||
temperature => {
|
||||
celsius => $setting
|
||||
},
|
||||
},
|
||||
termination => {
|
||||
type => "MANUAL"
|
||||
},
|
||||
};
|
||||
my $myjson = encode_json($message);
|
||||
#print Dumper($myjson);
|
||||
$Request->content($myjson);
|
||||
}
|
||||
|
||||
$UserAgent->default_headers($header);
|
||||
$Response = $UserAgent->request($Request);
|
||||
|
||||
if($Response->is_success){
|
||||
print "\n Retriving State:\n" if $debug;
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "Retriving state:\n" . $Response->content if $debug;
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "Set Overlay setting for to: $setting";
|
||||
|
||||
# write readings
|
||||
readingsBeginUpdate($hash);
|
||||
readingsBulkUpdate($hash, "OverlayType", "MANUAL");
|
||||
readingsEndUpdate( $hash, 1 );
|
||||
|
||||
}else{
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "Error in SetOverlay()";
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "Status (setOverlay): " . $Response->status_line if $debug;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
sub TadoAPI_GetUpdate(@){
|
||||
my ($hash) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
|
@ -547,6 +623,8 @@ sub TadoAPI_GetUpdate(@){
|
|||
my $currentHeatingPower = 0;
|
||||
my $tadoMode = 0;
|
||||
my $success = 0;
|
||||
my $overlay = 0;
|
||||
my $desiredTemp = 0;
|
||||
|
||||
TadoAPI_Connect($hash);
|
||||
|
||||
|
@ -564,6 +642,11 @@ sub TadoAPI_GetUpdate(@){
|
|||
$temperature = $ResponseData->{'sensorDataPoints'}->{'insideTemperature'}->{'celsius'};
|
||||
$tadoMode = $ResponseData->{'tadoMode'};
|
||||
$humidity = $ResponseData->{'sensorDataPoints'}->{'humidity'}->{'percentage'};
|
||||
|
||||
$overlay = $ResponseData->{'overlayType'};
|
||||
if (!defined $overlay) {$overlay = "no overlay"};
|
||||
|
||||
$desiredTemp = $ResponseData->{'setting'}->{'temperature'}->{'celsius'};
|
||||
$currentHeatingPower = $ResponseData->{'activityDataPoints'}->{'heatingPower'}->{'percentage'};
|
||||
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "UpdateFn: Actual temperature is: $temperature Celsius and home mode $tadoMode" if $debug;
|
||||
|
@ -595,9 +678,10 @@ sub TadoAPI_GetUpdate(@){
|
|||
readingsBulkUpdate($hash, "HomeMode", $tadoMode);
|
||||
readingsBulkUpdate($hash, "Luftfeuchtigkeit", $humidity);
|
||||
readingsBulkUpdate($hash, "Heizleistung", $currentHeatingPower);
|
||||
readingsBulkUpdate($hash, "OverlayType", $overlay);
|
||||
readingsBulkUpdate($hash, "DesiredTemp", $desiredTemp);
|
||||
readingsEndUpdate( $hash, 1 );
|
||||
}
|
||||
|
||||
$success = 0;
|
||||
}
|
||||
return undef;
|
||||
|
@ -700,24 +784,55 @@ sub TadoAPI_GetZoneInfo(@) {
|
|||
$header = HTTP::Headers->new("Content-Type"=>"application/json;charset=UTF-8","Authorization" => "$TokenData->{'token_type'} $TokenData->{'access_token'}");
|
||||
$UserAgent = LWP::UserAgent::Paranoid->new(ssl_opts => { verify_hostname => 1 },protocols_allowed => ['https','http'],request_timeout => 5,);
|
||||
$UserAgent->default_headers($header);
|
||||
|
||||
|
||||
# HomeInfo
|
||||
$URL = qq{https://my.tado.com/api/v2/me};
|
||||
|
||||
$Request = GET($URL);
|
||||
$Response = $UserAgent->request($Request);
|
||||
|
||||
if($Response->is_success){
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "Home Info:\n" . $Response->content . "\n";
|
||||
}else{
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "[Authentication Error]". $Response->status_line;
|
||||
}
|
||||
# TadoDevicesInfo
|
||||
$URL = $QueryURL.qq{/$homeID/zones};
|
||||
|
||||
$Request = GET($URL);
|
||||
$Response = $UserAgent->request($Request);
|
||||
|
||||
if($Response->is_success){
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "Tado Devices:\n" . $Response->content . "\n";
|
||||
}else{
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "[Authentication Error]". $Response->status_line;
|
||||
}
|
||||
# Mobileinfo
|
||||
$URL = $QueryURL . qq{/$homeID/mobileDevices};
|
||||
|
||||
$Request = GET($URL);
|
||||
$Response = $UserAgent->request($Request);
|
||||
|
||||
if($Response->is_success){
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "Mobile Devices:\n" . $Response->content . "\n";
|
||||
}else{
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "[Authentication Error]". $Response->status_line;
|
||||
}
|
||||
# ZoneInfo
|
||||
$URL=$QueryURL.qq{/$homeID/zones/1/state};
|
||||
|
||||
$Request = GET($URL);
|
||||
$Response = $UserAgent->request($Request);
|
||||
|
||||
if($Response->is_success){
|
||||
my $ResponseData = decode_json($Response->content);
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "Retriving zone 1 state:\n" . $Response->content if $debug;
|
||||
|
||||
my $text = $Response->content;
|
||||
|
||||
print "Retriving zone 1 state:\n" . $text;
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "Zone 1 State:\n" . $Response->content;
|
||||
}else{
|
||||
Log3 $name, 3, "TadoAPI $name" . ": " . "[Authentication Error]". $Response->status_line;
|
||||
}
|
||||
|
||||
}
|
||||
return undef;
|
||||
|
||||
|
||||
}
|
||||
|
||||
sub TadoAPI_GetHomeMode(@) {
|
||||
|
@ -727,7 +842,6 @@ sub TadoAPI_GetHomeMode(@) {
|
|||
my $URL=$QueryURL.qq{/$homeID/zones/1/state};
|
||||
my $tadoMode = 0;
|
||||
|
||||
|
||||
if($apiStatus == 1){
|
||||
TadoAPI_Connect($hash);
|
||||
|
||||
|
|
Loading…
Reference in New Issue