| 
						
					 | 
					 | 
					@@ -195,6 +195,11 @@ sub Define {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    $hash->{helper}{eco_mode_id}               = '';
 | 
					 | 
					 | 
					 | 
					    $hash->{helper}{eco_mode_id}               = '';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    $hash->{helper}{button_config_time_id}     = '';
 | 
					 | 
					 | 
					 | 
					    $hash->{helper}{button_config_time_id}     = '';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    $hash->{helper}{winter_mode_id}            = '';
 | 
					 | 
					 | 
					 | 
					    $hash->{helper}{winter_mode_id}            = '';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    # Electroni Pressure Pump
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    $hash->{helper}{operating_mode_id}         = '';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    $hash->{helper}{leakage_detection_id}      = '';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    $hash->{helper}{turn_on_pressure_id}       = '';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    $hash->{helper}{_id} = '';
 | 
					 | 
					 | 
					 | 
					    $hash->{helper}{_id} = '';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -294,7 +299,7 @@ sub Set {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        || AttrVal( $name, 'model', 'unknown' ) eq 'watering_computer' );
 | 
					 | 
					 | 
					 | 
					        || AttrVal( $name, 'model', 'unknown' ) eq 'watering_computer' );
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    $abilities = 'power'
 | 
					 | 
					 | 
					 | 
					    $abilities = 'power'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if ( AttrVal( $name, 'model', 'unknown' ) eq 'power' );
 | 
					 | 
					 | 
					 | 
					      if ( AttrVal( $name, 'model', 'unknown' ) eq 'power' );
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    $abilities = 'manual_watering'
 | 
					 | 
					 | 
					 | 
					    $abilities = 'watering'
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if ( AttrVal( $name, 'model', 'unknown' ) eq 'electronic_pressure_pump' );
 | 
					 | 
					 | 
					 | 
					      if ( AttrVal( $name, 'model', 'unknown' ) eq 'electronic_pressure_pump' );
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ### mower
 | 
					 | 
					 | 
					 | 
					    ### mower
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -355,12 +360,12 @@ sub Set {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					#$abilities['service_id'] = $hash->{helper}{SCHEDULESID}  if ( $mainboard_version > 10.30 );
 | 
					 | 
					 | 
					 | 
					#$abilities['service_id'] = $hash->{helper}{SCHEDULESID}  if ( $mainboard_version > 10.30 );
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ### electronic_pressure_pump
 | 
					 | 
					 | 
					 | 
					    ### electronic_pressure_pump
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    elsif ( lc $cmd eq 'pumptimer' ) {
 | 
					 | 
					 | 
					 | 
					    # elsif ( lc $cmd eq 'pumptimer' ) {
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        $payload =
 | 
					 | 
					 | 
					 | 
					    #     $payload =
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          '"name":"pump_manual_watering_timer","parameters":{"duration":'
 | 
					 | 
					 | 
					 | 
					    #       '"name":"pump_manual_watering_timer","parameters":{"duration":'
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          . $aArg->[0] . '}';
 | 
					 | 
					 | 
					 | 
					    #       . $aArg->[0] . '}';
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    # }
 | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ### watering_computer
 | 
					 | 
					 | 
					 | 
					    ### watering_computer & electronic pump
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    elsif ( lc $cmd eq 'manualoverride' ) {
 | 
					 | 
					 | 
					 | 
					    elsif ( lc $cmd eq 'manualoverride' ) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        $payload =
 | 
					 | 
					 | 
					 | 
					        $payload =
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            '"properties":{"name":"watering_timer_1'
 | 
					 | 
					 | 
					 | 
					            '"properties":{"name":"watering_timer_1'
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -477,7 +482,41 @@ sub Set {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          . '","device":"'
 | 
					 | 
					 | 
					 | 
					          . '","device":"'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          . $hash->{DEVICEID} . '"}';
 | 
					 | 
					 | 
					 | 
					          . $hash->{DEVICEID} . '"}';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    }
 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    ### Sensors
 | 
					 | 
					 | 
					 | 
					    ### Watering_pressure_pump
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    elsif ( lc $cmd eq 'operatingmode') {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      my $op_mode = $aArg->[0];
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      $payload = '"settings":{"name":"operating_mode",'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                 .'"value":"'.$op_mode.'",'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                 .'"device":"'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                 . $hash->{DEVICEID}.'"}';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      $abilities = 'watering_pressure_pump_settings';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      $service_id = $hash->{helper}->{ 'operating_mode_id' };
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    elsif ( lc $cmd eq 'leakagedetection') {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      my $leakdetection_mode = $aArg->[0];
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      $payload = '"settings":{"name":"leakage_detection",'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                 .'"value":"'.$leakdetection_mode.'",'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                 .'"device":"'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                 . $hash->{DEVICEID}.'"}';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      $abilities = 'watering_pressure_pump_settings';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      $service_id = $hash->{helper}->{ 'leakage_detection_id' };
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    elsif ( lc $cmd eq 'turnonpressure') {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      my $turnonpressure = $aArg->[0];
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      $payload = '"settings":{"name":"turn_on_pressure",'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                 .'"value":"'.$turnonpressure.'",'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                 .'"device":"'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                 . $hash->{DEVICEID}.'"}';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      $abilities = 'watering_pressure_pump_settings';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      $service_id = $hash->{helper}->{ 'turn_on_pressure_id' };
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    elsif ( lc $cmd eq 'resetvalveerrors') {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      $payload = '"name":"reset_valve_errors",'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                 .' "parameters": {}';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      $abilities = 'error';
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    ### Sensors 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    elsif ( lc $cmd eq 'refresh' ) {
 | 
					 | 
					 | 
					 | 
					    elsif ( lc $cmd eq 'refresh' ) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        my $sensname = $aArg->[0];
 | 
					 | 
					 | 
					 | 
					        my $sensname = $aArg->[0];
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -529,6 +568,9 @@ sub Set {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					'closeAllValves:noArg stopScheduleValve:selectnumbers,1,1,6,0,lin resumeScheduleValve:selectnumbers,1,1,6,0,lin manualDurationValve1:slider,1,1,90 manualDurationValve2:slider,1,1,90 manualDurationValve3:slider,1,1,90 manualDurationValve4:slider,1,1,90 manualDurationValve5:slider,1,1,90 manualDurationValve6:slider,1,1,90 cancelOverrideValve1:noArg cancelOverrideValve2:noArg cancelOverrideValve3:noArg cancelOverrideValve4:noArg cancelOverrideValve5:noArg cancelOverrideValve6:noArg'
 | 
					 | 
					 | 
					 | 
					'closeAllValves:noArg stopScheduleValve:selectnumbers,1,1,6,0,lin resumeScheduleValve:selectnumbers,1,1,6,0,lin manualDurationValve1:slider,1,1,90 manualDurationValve2:slider,1,1,90 manualDurationValve3:slider,1,1,90 manualDurationValve4:slider,1,1,90 manualDurationValve5:slider,1,1,90 manualDurationValve6:slider,1,1,90 cancelOverrideValve1:noArg cancelOverrideValve2:noArg cancelOverrideValve3:noArg cancelOverrideValve4:noArg cancelOverrideValve5:noArg cancelOverrideValve6:noArg'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          if ( AttrVal( $name, 'model', 'unknown' ) eq 'ic24' );
 | 
					 | 
					 | 
					 | 
					          if ( AttrVal( $name, 'model', 'unknown' ) eq 'ic24' );
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        $list .= 'manualOverride:slider,1,1,90 cancelOverride:noArg operatingMode:automatic,scheduled leakageDetection:watering,washing_machine,domestic_water_supply,off turnOnpressure:slider,2,0.2,3.0,1 resetValveErrors:noArg'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					          if ( AttrVal( $name, 'model', 'unknown' ) eq 'electronic_pressure_pump' );
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        $list .= 'refresh:temperature,humidity'
 | 
					 | 
					 | 
					 | 
					        $list .= 'refresh:temperature,humidity'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          if ( AttrVal( $name, 'model', 'unknown' ) =~ /sensor.?/ );
 | 
					 | 
					 | 
					 | 
					          if ( AttrVal( $name, 'model', 'unknown' ) =~ /sensor.?/ );
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -761,7 +803,10 @@ sub WriteReadings {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            && ( $decode_json->{settings}[$settings]{name} =~
 | 
					 | 
					 | 
					 | 
					            && ( $decode_json->{settings}[$settings]{name} =~
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                   /schedules_paused_until_?\d?$/
 | 
					 | 
					 | 
					 | 
					                   /schedules_paused_until_?\d?$/
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                || $decode_json->{settings}[$settings]{name} eq 'eco_mode'
 | 
					 | 
					 | 
					 | 
					                || $decode_json->{settings}[$settings]{name} eq 'eco_mode'
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                || $decode_json->{settings}[$settings]{name} eq 'winter_mode' )
 | 
					 | 
					 | 
					 | 
					                || $decode_json->{settings}[$settings]{name} eq 'winter_mode' 
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                || $decode_json->{settings}[$settings]{name} eq 'operating_mode' 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                || $decode_json->{settings}[$settings]{name} eq 'leakage_detection' 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                || $decode_json->{settings}[$settings]{name} eq 'turn_on_pressure' )
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					          )
 | 
					 | 
					 | 
					 | 
					          )
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        {
 | 
					 | 
					 | 
					 | 
					        {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if ( $hash->{helper}
 | 
					 | 
					 | 
					 | 
					            if ( $hash->{helper}
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -778,6 +823,14 @@ sub WriteReadings {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    $decode_json->{settings}[$settings]{value} );
 | 
					 | 
					 | 
					 | 
					                    $decode_json->{settings}[$settings]{value} );
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            }
 | 
					 | 
					 | 
					 | 
					            }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            # save electroni presse pump settings as readings
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            if ( $decode_json->{settings}[$settings]{name} eq 'operating_mode' 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                || $decode_json->{settings}[$settings]{name} eq 'leakage_detection' 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                || $decode_json->{settings}[$settings]{name} eq 'turn_on_pressure' ) {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                readingsBulkUpdateIfChanged( $hash, $decode_json->{settings}[$settings]{name},
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    $decode_json->{settings}[$settings]{value} );
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            # save winter mode as reading
 | 
					 | 
					 | 
					 | 
					            # save winter mode as reading
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if ( $decode_json->{settings}[$settings]{name} eq 'winter_mode' ) {
 | 
					 | 
					 | 
					 | 
					            if ( $decode_json->{settings}[$settings]{name} eq 'winter_mode' ) {
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -867,7 +920,6 @@ sub setState {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    # 4. Ventil manuell geoeffnet, Zeitpläne deaktiviert.
 | 
					 | 
					 | 
					 | 
					    # 4. Ventil manuell geoeffnet, Zeitpläne deaktiviert.
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    #   App zeigt: "Wird bewässert   xx Minuten verbleibend"
 | 
					 | 
					 | 
					 | 
					    #   App zeigt: "Wird bewässert   xx Minuten verbleibend"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if ( AttrVal( $name, 'model', 'unknown' ) eq 'watering_computer' ){
 | 
					 | 
					 | 
					 | 
					    if ( AttrVal( $name, 'model', 'unknown' ) eq 'watering_computer' ){
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					         my $state_string = ReadingsVal( $name, 'watering-watering_timer_1_duration', 0 ) =~
 | 
					 | 
					 | 
					 | 
					         my $state_string = ReadingsVal( $name, 'watering-watering_timer_1_duration', 0 ) =~
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					              m{\A[1-9]([0-9]+)?\z}xms
 | 
					 | 
					 | 
					 | 
					              m{\A[1-9]([0-9]+)?\z}xms
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            # offen
 | 
					 | 
					 | 
					 | 
					            # offen
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -941,6 +993,39 @@ sub setState {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        ReadingsVal( $name, 'power-power_timer', 'no info from power-timer' ) )
 | 
					 | 
					 | 
					 | 
					        ReadingsVal( $name, 'power-power_timer', 'no info from power-timer' ) )
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					      if ( AttrVal( $name, 'model', 'unknown' ) eq 'power' );
 | 
					 | 
					 | 
					 | 
					      if ( AttrVal( $name, 'model', 'unknown' ) eq 'power' );
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    #electronic water pump
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    if ( AttrVal( $name, 'model', 'unknown' ) eq 'electronic_pressure_pump' ) {  #        | ok | pump_not_filled (Pumpe nicht gefüllt)
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					         my $state_string = ReadingsVal( $name, 'watering-watering_timer_1_duration', 0 ) =~
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					              m{\A[1-9]([0-9]+)?\z}xms
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            # offen
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            ? 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					              ( ReadingsVal($name, 'scheduling-schedules_paused_until', '' ) eq '' )
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					              # leer ( zeitplan aktiv ... ) 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					              ? sprintf( (RigReadingsValue($hash, 'will be irrigated %.f minutes remaining.').' '.RigReadingsValue($hash, 'next watering: %s')), (ReadingsVal( $name, 'watering-watering_timer_1_duration', 0 )/60), RigReadingsValue($hash, ReadingsVal($name, 'scheduling-scheduled_watering_next_start', '')) ) 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					              # zeitplan pausiert
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					              : 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                ( ReadingsVal($name, 'scheduling-schedules_paused_until', '') eq '2038-01-18T00:00:00.000Z')
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                # pause bis  dauerhaft
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                ? sprintf( (RigReadingsValue($hash, 'will be irrigated %.f minutes remaining.').' '.RigReadingsValue($hash , 'schedule permanently paused')), (ReadingsVal( $name, 'watering-watering_timer_1_duration', 0 )/60) )
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                # naechter termin
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                : sprintf( RigReadingsValue($hash , 'paused until %s'), RigReadingsValue($hash, ReadingsVal($name, 'scheduling-schedules_paused_until', '')) )
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            # zu
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            :
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					              ( ReadingsVal($name, 'scheduling-schedules_paused_until', '' ) eq '' )
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					              # zeitplan aktiv
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					              ? sprintf( (RigReadingsValue($hash, 'closed') .'. '.RigReadingsValue($hash, 'next watering: %s')),  RigReadingsValue($hash, ReadingsVal($name, 'scheduling-scheduled_watering_next_start', '') ) )
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					              # zeitplan pausiert
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					              : RigReadingsValue($hash, 'closed')
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					            ;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      # state offline | override
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      $state_string = 'offline' if ($online_state eq 'offline');
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      # check valv error, override state 
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      my $error_type = ReadingsVal( $name, 'error-valve_error_1_type', 'ok' );
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      $state_string = ( $error_type ne 'ok' ) ? $error_type : $state_string;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					  
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					      readingsBulkUpdate(
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        $hash, 'state',  RigReadingsValue( $hash, $state_string ) );
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					    }
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    return;
 | 
					 | 
					 | 
					 | 
					    return;
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					}
 | 
					 | 
					 | 
					 | 
					}
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -1054,6 +1139,7 @@ sub ReadingLangGerman {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        'paused until %s'                => 'pausiert bis %s',        
 | 
					 | 
					 | 
					 | 
					        'paused until %s'                => 'pausiert bis %s',        
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        'will be irrigated %.f minutes remaining.'=> 'Wird bewässert. %.f Minuten verbleibend.',
 | 
					 | 
					 | 
					 | 
					        'will be irrigated %.f minutes remaining.'=> 'Wird bewässert. %.f Minuten verbleibend.',
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        'next watering: %s'              => 'Nächste Bewässerung: %s',
 | 
					 | 
					 | 
					 | 
					        'next watering: %s'              => 'Nächste Bewässerung: %s',
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					        'pump_not_filled'                => 'Pumpe nicht gefüllt',
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    );
 | 
					 | 
					 | 
					 | 
					    );
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    if (
 | 
					 | 
					 | 
					 | 
					    if (
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					@@ -1535,7 +1621,7 @@ sub SetPredefinedStartPoints {
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  ],
 | 
					 | 
					 | 
					 | 
					  ],
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  "release_status": "stable",
 | 
					 | 
					 | 
					 | 
					  "release_status": "stable",
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  "license": "GPL_2",
 | 
					 | 
					 | 
					 | 
					  "license": "GPL_2",
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  "version": "v2.4.3",
 | 
					 | 
					 | 
					 | 
					  "version": "v2.5.2",
 | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  "author": [
 | 
					 | 
					 | 
					 | 
					  "author": [
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    "Marko Oldenburg <fhemdevelopment@cooltux.net>"
 | 
					 | 
					 | 
					 | 
					    "Marko Oldenburg <fhemdevelopment@cooltux.net>"
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					  ],
 | 
					 | 
					 | 
					 | 
					  ],
 | 
				
			
			
		
	
	
		
		
			
				
					
					| 
						
					 | 
					 | 
					 
 |