2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-13 05:06:35 +00:00

24_TPLinkHS110.pm: fix time for HS100 and add next_action display

git-svn-id: https://svn.fhem.de/fhem/trunk@21189 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
vk 2020-02-13 11:24:15 +00:00
parent 4c1fd283bf
commit 03982ccc10

View File

@ -1,7 +1,7 @@
################################################################ ################################################################
# $Id$ # $Id$
# #
# Release 2019-05-31 SendCommand2 # Release 2020-01-19
# #
# Copyright notice # Copyright notice
# #
@ -175,7 +175,7 @@ sub TPLinkHS110_Get($$) {
my $errmsg; my $errmsg;
my $data; my $data;
my $command = '{"system":{"get_sysinfo":{}}}'; my $command = '{"system":{"get_sysinfo":{}},"time":{"get_time":{}}}';
($errmsg, $data) = TPLinkHS110_SendCommand($hash, $command); ($errmsg, $data) = TPLinkHS110_SendCommand($hash, $command);
if (defined($errmsg)) { if (defined($errmsg)) {
Log3 $hash, 1, "TPLinkHS110: $name Get failed - " . $errmsg; # JV Log3 $hash, 1, "TPLinkHS110: $name Get failed - " . $errmsg; # JV
@ -206,6 +206,17 @@ sub TPLinkHS110_Get($$) {
} }
$key = $hwMap{$hw_ver}{'system'}{'get_sysinfo'}{$key}{'name'} $key = $hwMap{$hw_ver}{'system'}{'get_sysinfo'}{$key}{'name'}
} }
# next_action
if ($key eq "next_action") {
if ($sysinfoValue->{'type'} eq "1" ) {
# e.g. 12:34 on
$sysinfoValue = sprintf("%02i:%02i %s",int($sysinfoValue->{'schd_sec'} / 60 / 60),int($sysinfoValue->{'schd_sec'} / 60 % 60),($sysinfoValue->{'action'} eq "1" ? ' on' : " off" ));
} else {
$sysinfoValue = "-None-";
}
}
readingsBulkUpdate($hash, $key, $sysinfoValue); readingsBulkUpdate($hash, $key, $sysinfoValue);
} }
if ($json->{'system'}->{'get_sysinfo'}->{'relay_state'} == 0) { if ($json->{'system'}->{'get_sysinfo'}->{'relay_state'} == 0) {
@ -214,6 +225,17 @@ sub TPLinkHS110_Get($$) {
if ($json->{'system'}->{'get_sysinfo'}->{'relay_state'} == 1) { if ($json->{'system'}->{'get_sysinfo'}->{'relay_state'} == 1) {
readingsBulkUpdate($hash, "state", "on"); readingsBulkUpdate($hash, "state", "on");
} }
# Get Time
my $remotetime = $json->{'time'}->{'get_time'}->{'year'}."-";
$remotetime .= $json->{'time'}->{'get_time'}->{'month'}."-";
$remotetime .= $json->{'time'}->{'get_time'}->{'mday'}. " ";
$remotetime .= $json->{'time'}->{'get_time'}->{'hour'}.":";
$remotetime .= $json->{'time'}->{'get_time'}->{'min'}.":";
$remotetime .= $json->{'time'}->{'get_time'}->{'sec'};
readingsBulkUpdate($hash, "time", $remotetime);
# If the device is a HS110, get realtime data: # If the device is a HS110, get realtime data:
# if ( 1 == 0 ) { # if ( 1 == 0 ) {
if ($json->{'system'}->{'get_sysinfo'}->{'model'} eq "HS110(EU)" or $json->{'system'}->{'get_sysinfo'}->{'model'} eq "HS110(UK)") { if ($json->{'system'}->{'get_sysinfo'}->{'model'} eq "HS110(EU)" or $json->{'system'}->{'get_sysinfo'}->{'model'} eq "HS110(UK)") {
@ -239,7 +261,7 @@ sub TPLinkHS110_Get($$) {
return; return;
} }
else { else {
Log3 $hash, 2, "TPLinkHS110: $name Realtime data updated"; Log3 $hash, 3, "TPLinkHS110: $name Realtime data updated";
} }
my %emeterReadings = (); my %emeterReadings = ();
@ -264,7 +286,6 @@ sub TPLinkHS110_Get($$) {
Log3 $hash, 3, "TPLinkHS110: $name Device is an HS110. Got extra realtime data: $emeterReadings{'power'} Watt, $emeterReadings{'voltage'} Volt, $emeterReadings{'current'} Ampere"; Log3 $hash, 3, "TPLinkHS110: $name Device is an HS110. Got extra realtime data: $emeterReadings{'power'} Watt, $emeterReadings{'voltage'} Volt, $emeterReadings{'current'} Ampere";
# Get Daily Stats # Get Daily Stats
$command = '{"emeter":{"get_daystat":{"month":' . $mon . ',"year":' . $year . '}}}'; $command = '{"emeter":{"get_daystat":{"month":' . $mon . ',"year":' . $year . '}}}';
($errmsg, $data) = TPLinkHS110_SendCommand($hash, $command); ($errmsg, $data) = TPLinkHS110_SendCommand($hash, $command);
@ -302,7 +323,7 @@ sub TPLinkHS110_Get($$) {
if ($hw_ver eq "1.0") {readingsBulkUpdate($hash, "monthly_total", $total);} if ($hw_ver eq "1.0") {readingsBulkUpdate($hash, "monthly_total", $total);}
if ($hw_ver eq "2.0") {readingsBulkUpdate($hash, "monthly_total", $total * 0.001);} if ($hw_ver eq "2.0") {readingsBulkUpdate($hash, "monthly_total", $total * 0.001);}
if ($count) {readingsBulkUpdate($hash, "daily_average", $total / $count)}; if ($count) {readingsBulkUpdate($hash, "daily_average", $total / $count)};
Log3 $hash, 2, "TPLinkHS110: $name Daystat updated"; Log3 $hash, 3, "TPLinkHS110: $name Daystat updated";
} }
else { else {
Log3 $hash, 1, "TPLinkHS110: $name Error updating daystat. Success: " . $success . ", json: " . $json; Log3 $hash, 1, "TPLinkHS110: $name Error updating daystat. Success: " . $success . ", json: " . $json;