patch_ic24 #69
@@ -872,20 +872,24 @@ sub setState {
 | 
				
			|||||||
    if ( AttrVal( $name, 'model', 'unknown' ) eq 'ic24' ){
 | 
					    if ( AttrVal( $name, 'model', 'unknown' ) eq 'ic24' ){
 | 
				
			||||||
      my @ic24opened_ventils; 
 | 
					      my @ic24opened_ventils; 
 | 
				
			||||||
      my $state_string = ''; my $nearst_irrigation = '2999-12-12 23:59';
 | 
					      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', ''));
 | 
					      my @valves_connected = split(',', ReadingsVal( $name, 'ic24-valves_connected', ''));
 | 
				
			||||||
      for (@valves_connected){ 
 | 
					      for (@valves_connected){ 
 | 
				
			||||||
        ## add to opened ventils, if watering active
 | 
					        ## 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 );
 | 
					        push @ic24opened_ventils, $_ if ( ( ( ReadingsVal( $name, "watering-watering_timer_".$_."_duration", 0 ) =~ m{\A[1-9]([0-9]+)?\z}xms ) ? $_ : 0 ) > 0 );
 | 
				
			||||||
        ## find nearst timestamp 
 | 
					        ## find nearst timestamp 
 | 
				
			||||||
        $has_scheduling = 1 if ( ReadingsVal($name, 'scheduling-schedules_paused_until_'.$_ , '')  ne '2038-01-18T00:00:00.000Z');
 | 
					        $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 ) =~ m{\A[1-9]([0-9]+)?\z}xms 
 | 
				
			||||||
              && ReadingsVal( $name, "watering-watering_timer_".$_."_duration", 0 ) > 0 
 | 
					              && 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 '') {
 | 
					        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
 | 
					        } # fi
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
      # override state 4 extendedstates
 | 
					      # override state 4 extendedstates
 | 
				
			||||||
@@ -904,7 +908,7 @@ sub setState {
 | 
				
			|||||||
      } else {
 | 
					      } else {
 | 
				
			||||||
        $state_string = scalar(@ic24opened_ventils) > 0
 | 
					        $state_string = scalar(@ic24opened_ventils) > 0
 | 
				
			||||||
          # offen
 | 
					          # 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
 | 
					          # zu
 | 
				
			||||||
          :
 | 
					          :
 | 
				
			||||||
            ( $has_scheduling )
 | 
					            ( $has_scheduling )
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,2 +1,2 @@
 | 
				
			|||||||
UPD 2022-05-28_13:13:38 49520 FHEM/73_GardenaSmartBridge.pm
 | 
					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
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user