From c7e66be79b52f8191bb32e1245629254e024769b Mon Sep 17 00:00:00 2001 From: Marko Oldenburg Date: Mon, 26 Apr 2021 21:37:53 +0200 Subject: [PATCH 1/8] change version number --- FHEM/74_GardenaSmartDevice.pm | 2 +- controls_GardenaSmartDevice.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/FHEM/74_GardenaSmartDevice.pm b/FHEM/74_GardenaSmartDevice.pm index 42d678b..c3195e4 100644 --- a/FHEM/74_GardenaSmartDevice.pm +++ b/FHEM/74_GardenaSmartDevice.pm @@ -1257,7 +1257,7 @@ sub SetPredefinedStartPoints { ], "release_status": "stable", "license": "GPL_2", - "version": "v2.2.2", + "version": "v2.2.3", "author": [ "Marko Oldenburg " ], diff --git a/controls_GardenaSmartDevice.txt b/controls_GardenaSmartDevice.txt index 1178321..25cc020 100644 --- a/controls_GardenaSmartDevice.txt +++ b/controls_GardenaSmartDevice.txt @@ -1,2 +1,2 @@ UPD 2021-04-22_18:29:35 46169 FHEM/73_GardenaSmartBridge.pm -UPD 2021-04-26_20:00:59 48421 FHEM/74_GardenaSmartDevice.pm +UPD 2021-04-26_21:37:06 48421 FHEM/74_GardenaSmartDevice.pm From e7814b889432eb2b30a8ae83bbaafce84b21f9f2 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Tue, 4 May 2021 18:18:14 +0200 Subject: [PATCH 2/8] change state to 'offline' if device is offline. Sensor changed values to -1 --- FHEM/74_GardenaSmartDevice.pm | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/FHEM/74_GardenaSmartDevice.pm b/FHEM/74_GardenaSmartDevice.pm index c3195e4..38a0676 100644 --- a/FHEM/74_GardenaSmartDevice.pm +++ b/FHEM/74_GardenaSmartDevice.pm @@ -649,7 +649,9 @@ sub WriteReadings { } while ( $settings >= 0 ); readingsBulkUpdate( $hash, 'state', - ReadingsVal( $name, 'mower-status', 'readingsValError' ) ) + ReadingsVal($name , 'device_info-connection_status', 'unknown') eq 'online' ? + ReadingsVal( $name, 'mower-status', 'readingsValError') : 'offline' + ) if ( AttrVal( $name, 'model', 'unknown' ) eq 'mower' ); readingsBulkUpdate( $hash, 'state', @@ -661,16 +663,24 @@ sub WriteReadings { ) ) if ( AttrVal( $name, 'model', 'unknown' ) eq 'watering_computer' ); - readingsBulkUpdate( - $hash, 'state', - 'T: ' + + if ( AttrVal( $name, 'model', 'unknown' ) eq 'sensor' ) { + my $online_state = ReadingsVal($name , 'device_info-connection_status', 'unknown'); + my $state_string = 'T: ' . ReadingsVal( $name, 'ambient_temperature-temperature', 'readingsValError' ) . '°C, H: ' . ReadingsVal( $name, 'humidity-humidity', 'readingsValError' ) . '%, L: ' - . ReadingsVal( $name, 'light-light', 'readingsValError' ) . 'lux' - ) if ( AttrVal( $name, 'model', 'unknown' ) eq 'sensor' ); + . ReadingsVal( $name, 'light-light', 'readingsValError' ) . 'lux'; + + if ( $online_state eq 'offline') { + readingsBulkUpdate( $hash, 'ambient_temperature-temperature', '-1' ); + readingsBulkUpdate( $hash, 'humidity-humidity', '-1' ); + readingsBulkUpdate( $hash, 'light-light', '-1' ); + } + readingsBulkUpdate($hash, 'state', ReadingsVal($name , 'device_info-connection_status', 'unknown') eq 'online' ? $state_string : 'offline' ) + } readingsBulkUpdate( $hash, 'state', From fa698b56946e9699d4706284be6625d56fcd4f14 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Sun, 9 May 2021 16:42:36 +0200 Subject: [PATCH 3/8] add Sensor2 --- FHEM/74_GardenaSmartDevice.pm | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/FHEM/74_GardenaSmartDevice.pm b/FHEM/74_GardenaSmartDevice.pm index 38a0676..18a16fc 100644 --- a/FHEM/74_GardenaSmartDevice.pm +++ b/FHEM/74_GardenaSmartDevice.pm @@ -419,7 +419,12 @@ sub Set { if ( AttrVal( $name, 'model', 'unknown' ) eq 'ic24' ); $list .= 'refresh:temperature,light,humidity' - if ( AttrVal( $name, 'model', 'unknown' ) eq 'sensor' ); + if ( AttrVal( $name, 'model', 'unknown' ) eq 'sensor' + && ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor'); + + $list .= 'refresh:humidity' + if ( AttrVal( $name, 'model', 'unknown' ) eq 'sensor' + && ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor2' ); $list .= 'on:noArg off:noArg on-for-timer:slider,0,1,60' if ( AttrVal( $name, 'model', 'unknown' ) eq 'power' ); @@ -666,18 +671,14 @@ sub WriteReadings { if ( AttrVal( $name, 'model', 'unknown' ) eq 'sensor' ) { my $online_state = ReadingsVal($name , 'device_info-connection_status', 'unknown'); - my $state_string = 'T: ' - . ReadingsVal( $name, 'ambient_temperature-temperature', - 'readingsValError' ) - . '°C, H: ' - . ReadingsVal( $name, 'humidity-humidity', 'readingsValError' ) - . '%, L: ' - . ReadingsVal( $name, 'light-light', 'readingsValError' ) . 'lux'; + my $state_string = 'T: ' . ReadingsVal( $name, 'ambient_temperature-temperature', 'readingsValError' ). '°C,' if (ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor'); + $state_string .= 'H: '. ReadingsVal( $name, 'humidity-humidity', 'readingsValError' ). '%'; + $state_string .= ', L: ' . ReadingsVal( $name, 'light-light', 'readingsValError' ) . 'lux' if (ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor'); if ( $online_state eq 'offline') { - readingsBulkUpdate( $hash, 'ambient_temperature-temperature', '-1' ); readingsBulkUpdate( $hash, 'humidity-humidity', '-1' ); - readingsBulkUpdate( $hash, 'light-light', '-1' ); + readingsBulkUpdate( $hash, 'ambient_temperature-temperature', '-1' ) if (ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor'); + readingsBulkUpdate( $hash, 'light-light', '-1' ) if (ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor'); } readingsBulkUpdate($hash, 'state', ReadingsVal($name , 'device_info-connection_status', 'unknown') eq 'online' ? $state_string : 'offline' ) } From 7a6ba453eda7e9756cc1afac50bb82b4a79a51cc Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 10 May 2021 19:15:34 +0200 Subject: [PATCH 4/8] add Sensor2 --- FHEM/74_GardenaSmartDevice.pm | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/FHEM/74_GardenaSmartDevice.pm b/FHEM/74_GardenaSmartDevice.pm index 18a16fc..74fdd51 100644 --- a/FHEM/74_GardenaSmartDevice.pm +++ b/FHEM/74_GardenaSmartDevice.pm @@ -388,9 +388,13 @@ sub Set { my $sensname = $aArg->[0]; if ( lc $sensname eq 'temperature' ) { - $payload = '"name":"measure_ambient_temperature"'; - $abilities = 'ambient_temperature'; - + if ( ReadingsVal( $name, 'device_info-category', 'sensor' ) eq 'sensor') { + $payload = '"name":"measure_ambient_temperature"'; + $abilities = 'ambient_temperature'; + } else { + $payload = '"name":"measure_soil_temperature"'; + $abilities = 'soil_temperature'; + } } elsif ( lc $sensname eq 'light' ) { $payload = '"name":"measure_light"'; @@ -401,6 +405,7 @@ sub Set { $payload = '"name":"measure_soil_humidity"'; $abilities = 'humidity'; } + } else { @@ -418,13 +423,12 @@ sub Set { 'manualDurationValve1:slider,1,1,59 manualDurationValve2:slider,1,1,59 manualDurationValve3:slider,1,1,59 manualDurationValve4:slider,1,1,59 manualDurationValve5:slider,1,1,59 manualDurationValve6:slider,1,1,59 cancelOverrideValve1:noArg cancelOverrideValve2:noArg cancelOverrideValve3:noArg cancelOverrideValve4:noArg cancelOverrideValve5:noArg cancelOverrideValve6:noArg' if ( AttrVal( $name, 'model', 'unknown' ) eq 'ic24' ); - $list .= 'refresh:temperature,light,humidity' + $list .= 'refresh:temperature,humidity' + if ( AttrVal( $name, 'model', 'unknown' ) eq 'sensor' ); + # add light for old sensors + $list .= 'light' if ( AttrVal( $name, 'model', 'unknown' ) eq 'sensor' - && ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor'); - - $list .= 'refresh:humidity' - if ( AttrVal( $name, 'model', 'unknown' ) eq 'sensor' - && ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor2' ); + && ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor' ); $list .= 'on:noArg off:noArg on-for-timer:slider,0,1,60' if ( AttrVal( $name, 'model', 'unknown' ) eq 'power' ); From ba4fbc44a7540af4f1d011ef5b78a8de5dbc3770 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Tue, 11 May 2021 20:11:22 +0200 Subject: [PATCH 5/8] fix state for sensor 2, cleanup code vor offline state, removed -1 values if offline --- FHEM/74_GardenaSmartDevice.pm | 25 ++++++++++++++----------- 1 file changed, 14 insertions(+), 11 deletions(-) diff --git a/FHEM/74_GardenaSmartDevice.pm b/FHEM/74_GardenaSmartDevice.pm index 74fdd51..9debeb2 100644 --- a/FHEM/74_GardenaSmartDevice.pm +++ b/FHEM/74_GardenaSmartDevice.pm @@ -426,7 +426,7 @@ sub Set { $list .= 'refresh:temperature,humidity' if ( AttrVal( $name, 'model', 'unknown' ) eq 'sensor' ); # add light for old sensors - $list .= 'light' + $list .= ',light' if ( AttrVal( $name, 'model', 'unknown' ) eq 'sensor' && ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor' ); @@ -545,7 +545,7 @@ sub WriteReadings { . $propertie->{name} ne 'light-light' && ref( $propertie->{value} ) ne "HASH" ); - readingsBulkUpdate( + readingsBulkUpdateIfChanged( $hash, $decode_json->{abilities}[$abilities]{name} . '-' . $propertie->{name}, @@ -657,8 +657,11 @@ sub WriteReadings { $settings--; } while ( $settings >= 0 ); + + my $online_state = ReadingsVal($name , 'device_info-connection_status', 'unknown'); + readingsBulkUpdate( $hash, 'state', - ReadingsVal($name , 'device_info-connection_status', 'unknown') eq 'online' ? + $online_state eq 'online' ? ReadingsVal( $name, 'mower-status', 'readingsValError') : 'offline' ) if ( AttrVal( $name, 'model', 'unknown' ) eq 'mower' ); @@ -674,17 +677,17 @@ sub WriteReadings { if ( AttrVal( $name, 'model', 'unknown' ) eq 'sensor' ) { - my $online_state = ReadingsVal($name , 'device_info-connection_status', 'unknown'); - my $state_string = 'T: ' . ReadingsVal( $name, 'ambient_temperature-temperature', 'readingsValError' ). '°C,' if (ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor'); + my $state_string = ''; + $state_string = 'T: ' . ReadingsVal( $name, 'ambient_temperature-temperature', 'readingsValError' ). '°C,' if (ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor'); $state_string .= 'H: '. ReadingsVal( $name, 'humidity-humidity', 'readingsValError' ). '%'; $state_string .= ', L: ' . ReadingsVal( $name, 'light-light', 'readingsValError' ) . 'lux' if (ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor'); - if ( $online_state eq 'offline') { - readingsBulkUpdate( $hash, 'humidity-humidity', '-1' ); - readingsBulkUpdate( $hash, 'ambient_temperature-temperature', '-1' ) if (ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor'); - readingsBulkUpdate( $hash, 'light-light', '-1' ) if (ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor'); - } - readingsBulkUpdate($hash, 'state', ReadingsVal($name , 'device_info-connection_status', 'unknown') eq 'online' ? $state_string : 'offline' ) + # if ( $online_state eq 'offline') { + # readingsBulkUpdate( $hash, 'humidity-humidity', '-1' ); + # readingsBulkUpdate( $hash, 'ambient_temperature-temperature', '-1' ) if (ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor'); + # readingsBulkUpdate( $hash, 'light-light', '-1' ) if (ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor'); + # } + readingsBulkUpdate($hash, 'state', $online_state eq 'online' ? $state_string : 'offline' ) } readingsBulkUpdate( From cbbd3e929fd7517b1e3484381d70ca57466bf9a5 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Tue, 11 May 2021 20:21:45 +0200 Subject: [PATCH 6/8] add Soil-Temperatur to state for sensor2 --- FHEM/74_GardenaSmartDevice.pm | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/FHEM/74_GardenaSmartDevice.pm b/FHEM/74_GardenaSmartDevice.pm index 9debeb2..de42c1e 100644 --- a/FHEM/74_GardenaSmartDevice.pm +++ b/FHEM/74_GardenaSmartDevice.pm @@ -677,8 +677,7 @@ sub WriteReadings { if ( AttrVal( $name, 'model', 'unknown' ) eq 'sensor' ) { - my $state_string = ''; - $state_string = 'T: ' . ReadingsVal( $name, 'ambient_temperature-temperature', 'readingsValError' ). '°C,' if (ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor'); + my $state_string = 'T: ' . ( ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor') ? ReadingsVal( $name, 'ambient_temperature-temperature', 'readingsValError' ) : ReadingsVal( $name, 'soil_temperature-temperature', 'readingsValError' ) . '°C,' ; $state_string .= 'H: '. ReadingsVal( $name, 'humidity-humidity', 'readingsValError' ). '%'; $state_string .= ', L: ' . ReadingsVal( $name, 'light-light', 'readingsValError' ) . 'lux' if (ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor'); From 6b544bb0b5b8d916c8d1687b457d060291d8c10b Mon Sep 17 00:00:00 2001 From: Sebastian Date: Tue, 11 May 2021 20:29:15 +0200 Subject: [PATCH 7/8] fix missing "T:" in State --- FHEM/74_GardenaSmartDevice.pm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/FHEM/74_GardenaSmartDevice.pm b/FHEM/74_GardenaSmartDevice.pm index de42c1e..3356467 100644 --- a/FHEM/74_GardenaSmartDevice.pm +++ b/FHEM/74_GardenaSmartDevice.pm @@ -677,7 +677,7 @@ sub WriteReadings { if ( AttrVal( $name, 'model', 'unknown' ) eq 'sensor' ) { - my $state_string = 'T: ' . ( ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor') ? ReadingsVal( $name, 'ambient_temperature-temperature', 'readingsValError' ) : ReadingsVal( $name, 'soil_temperature-temperature', 'readingsValError' ) . '°C,' ; + my $state_string = ( ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor') ? 'T: ' .ReadingsVal( $name, 'ambient_temperature-temperature', 'readingsValError' ) . '°C, ' : 'T: ' .ReadingsVal( $name, 'soil_temperature-temperature', 'readingsValError' ) . '°C, ' ; $state_string .= 'H: '. ReadingsVal( $name, 'humidity-humidity', 'readingsValError' ). '%'; $state_string .= ', L: ' . ReadingsVal( $name, 'light-light', 'readingsValError' ) . 'lux' if (ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor'); @@ -686,7 +686,7 @@ sub WriteReadings { # readingsBulkUpdate( $hash, 'ambient_temperature-temperature', '-1' ) if (ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor'); # readingsBulkUpdate( $hash, 'light-light', '-1' ) if (ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor'); # } - readingsBulkUpdate($hash, 'state', $online_state eq 'online' ? $state_string : 'offline' ) + readingsBulkUpdate($hash, 'state', $online_state eq 'offline' ? $state_string : 'offline' ) } readingsBulkUpdate( From cb2a925556ea8609bb7a4b50e18da7b5b11cda31 Mon Sep 17 00:00:00 2001 From: Sebastian Date: Tue, 11 May 2021 20:29:49 +0200 Subject: [PATCH 8/8] D'OH --- FHEM/74_GardenaSmartDevice.pm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FHEM/74_GardenaSmartDevice.pm b/FHEM/74_GardenaSmartDevice.pm index 3356467..58f4ea9 100644 --- a/FHEM/74_GardenaSmartDevice.pm +++ b/FHEM/74_GardenaSmartDevice.pm @@ -686,7 +686,7 @@ sub WriteReadings { # readingsBulkUpdate( $hash, 'ambient_temperature-temperature', '-1' ) if (ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor'); # readingsBulkUpdate( $hash, 'light-light', '-1' ) if (ReadingsVal($name, 'device_info-category', 'unknown') eq 'sensor'); # } - readingsBulkUpdate($hash, 'state', $online_state eq 'offline' ? $state_string : 'offline' ) + readingsBulkUpdate($hash, 'state', $online_state eq 'online' ? $state_string : 'offline' ) } readingsBulkUpdate(