From 5bf618a9d2fc3bb13ea28b77f3e4b7cb8cf4529f Mon Sep 17 00:00:00 2001 From: Sebastian Date: Mon, 13 Jun 2022 20:44:02 +0200 Subject: [PATCH] [alpha] - extendetState | legacy: will be irrigeated by longest_duration, has scheduling check --- CHANGED | 2 +- FHEM/74_GardenaSmartDevice.pm | 14 +++++++++----- controls_GardenaSmartDevice.txt | 2 +- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/CHANGED b/CHANGED index 90035e0..7c3cf46 100644 --- a/CHANGED +++ b/CHANGED @@ -1 +1 @@ - [alpha] - extendetState, legacy enabled + [alpha] - extendetSate ic24 diff --git a/FHEM/74_GardenaSmartDevice.pm b/FHEM/74_GardenaSmartDevice.pm index f939e8a..dc17bb3 100644 --- a/FHEM/74_GardenaSmartDevice.pm +++ b/FHEM/74_GardenaSmartDevice.pm @@ -872,20 +872,24 @@ sub setState { if ( AttrVal( $name, 'model', 'unknown' ) eq 'ic24' ){ my @ic24opened_ventils; my $state_string = ''; my $nearst_irrigation = '2999-12-12 23:59'; - my $has_scheduling = 0; my $lowest_duration = 9999; + my $has_scheduling = 0; my $longest_duration = 0; my @valves_connected = split(',', ReadingsVal( $name, 'ic24-valves_connected', '')); for (@valves_connected){ ## add to opened ventils, if watering active push @ic24opened_ventils, $_ if ( ( ( ReadingsVal( $name, "watering-watering_timer_".$_."_duration", 0 ) =~ m{\A[1-9]([0-9]+)?\z}xms ) ? $_ : 0 ) > 0 ); ## find nearst timestamp $has_scheduling = 1 if ( ReadingsVal($name, 'scheduling-schedules_paused_until_'.$_ , '') ne '2038-01-18T00:00:00.000Z'); - $lowest_duration = ReadingsVal( $name, "watering-watering_timer_".$_."_duration", 0 ) if ( + $longest_duration = ReadingsVal( $name, "watering-watering_timer_".$_."_duration", 0 ) if ( ( ReadingsVal( $name, "watering-watering_timer_".$_."_duration", 0 ) =~ m{\A[1-9]([0-9]+)?\z}xms && ReadingsVal( $name, "watering-watering_timer_".$_."_duration", 0 ) > 0 - && ReadingsVal( $name, "watering-watering_timer_".$_."_duration", 0 ) < $lowest_duration ) ); + && ReadingsVal( $name, "watering-watering_timer_".$_."_duration", 0 ) > $longest_duration ) ); if ( ReadingsVal($name, 'scheduling-scheduled_watering_next_start_'.$_, '') ne '') { - $nearst_irrigation = ReadingsVal($name, 'scheduling-scheduled_watering_next_start_'.$_, '') if ( Time::Piece->strptime( ReadingsVal($name, 'scheduling-scheduled_watering_next_start_'.$_, ''), "%Y-%m-%d %H:%M") < Time::Piece->strptime( $nearst_irrigation, "%Y-%m-%d %H:%M")) + $nearst_irrigation = ReadingsVal($name, 'scheduling-scheduled_watering_next_start_'.$_, '') + if ( + Time::Piece->strptime( ReadingsVal($name, 'scheduling-scheduled_watering_next_start_'.$_, ''), "%Y-%m-%d %H:%M") < Time::Piece->strptime( $nearst_irrigation, "%Y-%m-%d %H:%M") + && has_scheduling + ) } # fi } # override state 4 extendedstates @@ -904,7 +908,7 @@ sub setState { } else { $state_string = scalar(@ic24opened_ventils) > 0 # offen - ? sprintf( (RigReadingsValue($hash, 'will be irrigated %.f minutes remaining.')), $lowest_duration/60) + ? sprintf( (RigReadingsValue($hash, 'will be irrigated %.f minutes remaining.')), $longest_duration/60) # zu : ( $has_scheduling ) diff --git a/controls_GardenaSmartDevice.txt b/controls_GardenaSmartDevice.txt index d318fbd..ddfe9b6 100644 --- a/controls_GardenaSmartDevice.txt +++ b/controls_GardenaSmartDevice.txt @@ -1,2 +1,2 @@ UPD 2022-05-28_13:13:38 49520 FHEM/73_GardenaSmartBridge.pm -UPD 2022-06-12_20:07:37 67702 FHEM/74_GardenaSmartDevice.pm +UPD 2022-06-13_20:42:35 67780 FHEM/74_GardenaSmartDevice.pm