diff --git a/CHANGED b/CHANGED
index edb2815..b612008 100644
--- a/CHANGED
+++ b/CHANGED
@@ -1 +1 @@
- [Ticket: no]
+ [enhancement] - add resetvalveerrors ic24
diff --git a/FHEM/74_GardenaSmartDevice.pm b/FHEM/74_GardenaSmartDevice.pm
index ec8973d..6429842 100644
--- a/FHEM/74_GardenaSmartDevice.pm
+++ b/FHEM/74_GardenaSmartDevice.pm
@@ -7,6 +7,7 @@
#
# Special thanks goes to comitters:
# - Michael (mbrak) Thanks for Commandref
+# - Christian (zife) Thanks for Commandref
# - Matthias (Kenneth) Thanks for Wiki entry
# - BioS Thanks for predefined start points Code
# - fettgu Thanks for Debugging Irrigation Control data flow
@@ -570,7 +571,7 @@ sub Set {
if ( AttrVal( $name, 'model', 'unknown' ) eq 'electronic_pressure_pump' );
$list .=
-'closeAllValves:noArg stopScheduleValve:select,'.ReadingsVal( $name, 'ic24-valves_connected', '1' ).' resumeScheduleValve:select,'.ReadingsVal( $name, 'ic24-valves_connected', '1' )
+'closeAllValves:noArg resetValveErrors:noArg stopScheduleValve:select,'.ReadingsVal( $name, 'ic24-valves_connected', '1' ).' resumeScheduleValve:select,'.ReadingsVal( $name, 'ic24-valves_connected', '1' )
if ( AttrVal( $name, 'model', 'unknown' ) eq 'ic24' );
foreach my $valve (split(',', ReadingsVal( $name, 'ic24-valves_connected', '1'))) {
@@ -707,9 +708,9 @@ sub WriteReadings {
$hash,
$decode_json->{abilities}[$abilities]{name} . '-'
. $propertie->{name},
- ($propertie->{value} eq '') ? RigReadingsValue( $hash, 'n/a') : RigReadingsValue( $hash, $propertie->{value} )
+ (defined ($propertie->{value} ) eq '') ? RigReadingsValue( $hash, 'n/a') : "".RigReadingsValue( $hash, $propertie->{value} ) # cast all data to string with ""
)
- if ( exists( $propertie->{value} ) # defined ignored 'value':null
+ if ( exists( $propertie->{value} )
&& $decode_json->{abilities}[$abilities]{name} . '-'
. $propertie->{name} ne 'radio-quality'
&& $decode_json->{abilities}[$abilities]{name} . '-'
@@ -724,13 +725,17 @@ sub WriteReadings {
. $propertie->{name} ne 'humidity-humidity'
&& $decode_json->{abilities}[$abilities]{name} . '-'
. $propertie->{name} ne 'light-light'
+ && $decode_json->{abilities}[$abilities]{name} . '-'
+ . $propertie->{name} ne 'ic24-valves_connected'
+ && $decode_json->{abilities}[$abilities]{name} . '-'
+ . $propertie->{name} ne 'ic24-valves_master_config'
&& ref( $propertie->{value} ) ne "HASH" );
readingsBulkUpdateIfChanged(
$hash,
$decode_json->{abilities}[$abilities]{name} . '-'
. $propertie->{name},
- RigReadingsValue( $hash, $propertie->{value} )
+ "".RigReadingsValue( $hash, $propertie->{value} ) # cast all data to string with ""
)
if (
defined( $propertie->{value} )
@@ -757,7 +762,7 @@ sub WriteReadings {
$decode_json->{abilities}[$abilities]{name} . '-'
. $propertie->{name}
. '_timestamp',
- Time::Piece->strptime(
+ "".Time::Piece->strptime(
RigReadingsValue( $hash, $propertie->{timestamp} ),
"%Y-%m-%d %H:%M:%S" )->strftime('%s')
@@ -792,7 +797,7 @@ sub WriteReadings {
my $sub_state = 0; my $sub_value = 0;
while ( my ( $r, $v ) = each %{ $propertie->{value} } ) {
if ( ref( $v ) ne "HASH" ) {
- readingsBulkUpdate(
+ readingsBulkUpdateIfChanged(
$hash,
$decode_json->{abilities}[$abilities]{name} . '-'
. $propertie->{name} . '_'
@@ -801,7 +806,7 @@ sub WriteReadings {
);
} else {
while ( my ( $i_r, $i_v ) = each %{ $v } ) {
- readingsBulkUpdate(
+ readingsBulkUpdateIfChanged(
$hash,
$decode_json->{abilities}[$abilities]{name} . '-'
. $propertie->{name} . '_'
@@ -835,11 +840,64 @@ sub WriteReadings {
if (
exists( $decode_json->{scheduled_events} )
# && scalar ($decode_json->{scheduled_events} ) > 0
- && ref ($decode_json->{scheduled_events}) eq 'ARRAY' ) {
+ && ref ($decode_json->{scheduled_events}) eq 'ARRAY'
+ && AttrVal( $name, 'model', 'unknown' ) !~ /sensor.?/ ) {
readingsBulkUpdateIfChanged( $hash, 'scheduling-schedules_events_count',
scalar( @{$decode_json->{scheduled_events} } ) );
- my $valve_id =1; my $event_id = 1; # ic24 [1..6] | wc, pump [1]
-
+ my $valve_id =1; my $event_id = 0; # ic24 [1..6] | wc, pump [1]
+
+ ##
+ # validiere schedules
+ my @soll = ();my @ist=(); my @tmp_ist=();
+ for my $cloud_schedules ( @{ $decode_json->{scheduled_events} } ) {
+ while ( my ( $r, $v ) = each %{ $cloud_schedules } ) {
+ push @soll, $v if $r eq 'id'; # cloud hat SOLL
+ }
+ }
+
+ foreach my $dev_schedules ( sort keys %{ $hash->{READINGS} } ) {
+ my $dev_reading = ReadingsVal( $name, $dev_schedules, "error" );
+ push @ist, $dev_reading if $dev_schedules =~ /schedule.*\d_id/; # push reading _id
+ push @ist, $1 if $dev_schedules =~ /schedule.*_(\d)_id/; # push readigs d from x_id
+
+ Log3 $name, 5, "[DEBUG] $name - Schedule - Key ist : $dev_schedules ";
+ Log3 $name, 5, "[DEBUG] $name - Schedule - ID FOUND $dev_reading" if $dev_schedules =~ /schedule.*_\d_id/; # cloud hat SOLL
+ }
+ #Log3 $name, 5, "[DEBUG] Cloud:".Dumper(@soll) . "- Internal:". Dumper(@ist);
+
+ ## delete only if cloud != (ist/2)
+ if ((scalar(@soll) != scalar(@ist/2)
+ && scalar(@soll) > 0
+ && scalar(@ist) > 0)
+ || (scalar(@ist) eq 2 && scalar(@soll) eq 1 )){
+ @tmp_ist = @ist;
+ while(my $element = shift(@soll)) {
+ my $schedule_step_int = 0;
+
+ foreach my $sist (@tmp_ist) {
+ my $step = scalar(@tmp_ist) > 1 ? 2:1;
+ if ($element eq $sist){
+ splice(@ist, $schedule_step_int, $step); # more than 2 items del them, otherwise 1
+ }
+ $schedule_step_int += $step;
+ }
+ }
+ }
+ #Log3 $name, 5, "[DEBUG] $name - Schedule - Rest ". Dumper(@ist);
+ # delete only if count soll != count ist. cos the will be overwritten
+ if (scalar(@ist) > 0
+ && scalar(@soll) != scalar(@ist/2) ){
+ while (my $old_schedule_id = shift(@ist)) {
+ if (length($old_schedule_id) == 1) {
+ foreach (keys %{$hash->{READINGS}}) {
+ delete $hash->{READINGS}->{$_} if($_ =~ /scheduling-schedules_event_$old_schedule_id.*/);
+ }
+ }# fi
+ Log3 $name, 5, "[DEBUG] - $name : deletereading scheduling-schedules_event_$old_schedule_id.*" if length($old_schedule_id) == 1;
+ }
+ }
+ #### /validiere schedules
+
for my $event_schedules ( @{ $decode_json->{scheduled_events} } ) {
$valve_id = $event_schedules->{valve_id} if ( exists($event_schedules->{valve_id} ) ); #ic24
$event_id++; # event id
@@ -847,15 +905,13 @@ sub WriteReadings {
while ( my ( $r, $v ) = each %{ $event_schedules } ) {
readingsBulkUpdateIfChanged( $hash, 'scheduling-schedules_event_'
. $event_id
- . '_valve_'
- . $valve_id
+ #. ( ReadingsVal($name,'error-valve_error_1_valve_id','') ne '' ? "_valve_$valve_id" : '')
. '_'
. $r,
$v) if (ref($v) ne 'HASH' );
readingsBulkUpdateIfChanged( $hash, 'scheduling-schedules_event_'
. $event_id
- . '_valve_'
- . $valve_id
+ #. ( ReadingsVal($name,'error-valve_error_1_valve_id','') ne '' ? "_valve_$valve_id" : '')
. '_'
. $v->{type},
join(',', @ { $v->{weekdays}}) ) if (ref($v) eq 'HASH' );
@@ -904,7 +960,7 @@ sub WriteReadings {
$decode_json->{settings}[$settings]{value} );
# CommandAttr( undef, $name . " scheduling-scheduled_watering_next_start_") if ($decode_json->{settings}[$settings]{value} eq '' )
}
-
+#TODO: Readings und Setter ?!
# save electronid pressure pump settings as readings
if ( $decode_json->{settings}[$settings]{name} eq 'operating_mode'
|| $decode_json->{settings}[$settings]{name} eq 'leakage_detection'
@@ -921,12 +977,13 @@ sub WriteReadings {
$winter_mode = $decode_json->{settings}[$settings]{value};
}
}
-
- if ($decode_json->{settings}[$settings]{name} eq 'valve_names'
- && ref( $decode_json->{settings}[$settings]{value} ) eq "ARRAY" ) { # or HASH ?
+
+ if ( defined( $decode_json->{settings}[$settings]{name} )
+ && $decode_json->{settings}[$settings]{name} eq 'valve_names'
+ && ref( $decode_json->{settings}[$settings]{value} ) eq "ARRAY" ) { # or HASH ?
my @valves = @{$decode_json->{settings}[$settings]{value}};
foreach my $valve( @valves ) {
- Log3 $name, 4, "GardenaSmartDevice ($name) valve_name $valve->{'name'}";
+ #Log3 $name, 4, "GardenaSmartDevice ($name) valve_name $valve->{'name'}";
readingsBulkUpdateIfChanged( $hash, 'valve-valve_name_'.$valve->{"id"},
$valve->{"name"} );
}
@@ -1000,12 +1057,15 @@ sub setState {
my @opened_valves;
my $state_string = ''; my $nearst_irrigation = '2999-12-12 12:00';
my $has_schedule = 0; my $longest_duration = 0; my $processed_item = '';
+ my $error_type = 'ok';
my @valves_connected = AttrVal( $name, 'model', 'unknown' ) eq 'ic24' ? split(',', ReadingsVal( $name, 'ic24-valves_connected', '')) : '1';
$has_schedule = 1 if ( ReadingsVal($name, 'scheduling-schedules_events_count', '') ne '' );
for (@valves_connected){ # valves 1 or 1..6
## add to opened ventils, if watering active
push @opened_valves, $_ if ( ( ( ReadingsVal( $name, "watering-watering_timer_".$_."_duration", 0 ) =~ m{\A[1-9]([0-9]+)?\z}xms ) ? $_ : 0 ) > 0 );
+ ## set error type (pumpe required)
+ $error_type = ReadingsVal( $name, 'error-valve_error_'.$_.'_type', 'ok' ) if (ReadingsVal( $name, 'error-valve_error_'.$_.'_type', 'ok' ) ne 'ok');
## find longest irrigation duration
$longest_duration = ReadingsVal( $name, "watering-watering_timer_".$_."_irrigation_left", 0 ) if (
( ReadingsVal( $name, "watering-watering_timer_".$_."_duration", 0 ) =~ m{\A[1-9]([0-9]+)?\z}xms
@@ -1017,13 +1077,13 @@ sub setState {
? RigReadingsValue($hash, ReadingsVal($name, 'scheduling-schedules_paused_until_'.$_, ''))
: RigReadingsValue($hash, ReadingsVal($name, 'scheduling-schedules_paused_until', ''));
- Log3 $name, 3, "[DEBUG] - process: $processed_item";
- Log3 $name, 3, "[DEBUG] - next_start: ". ReadingsVal($name, 'scheduling-scheduled_watering_next_start', ''); # n/a RigReadingsValue( $hash, 'n/a')
+ Log3 $name, 5, "[DEBUG] - process: $processed_item";
+ Log3 $name, 5, "[DEBUG] - next_start: ". ReadingsVal($name, 'scheduling-scheduled_watering_next_start', ''); # n/a RigReadingsValue( $hash, 'n/a')
# $nearst_irrigation = RigReadingsValue($hash, ReadingsVal($name, 'scheduling-schedules_paused_until_'.$_, ''))
if ( ReadingsVal($name, 'scheduling-scheduled_watering_next_start', '') eq RigReadingsValue( $hash, 'n/a') ) { # non next start, schedules paused permanently or next schedule > 1 year; get nearst paused_until
- Log3 $name, 3, "[DEBUG] - next_start: empty ";
- Log3 $name, 3, "[DEBUG] - empty pro item ".Time::Piece->strptime( $processed_item, "%Y-%m-%d %H:%M:%S");
- Log3 $name, 3, "[DEBUG] - empty nearst ".Time::Piece->strptime( $nearst_irrigation, "%Y-%m-%d %H:%M:%S");
+ Log3 $name, 5, "[DEBUG] - next_start: empty ";
+ Log3 $name, 5, "[DEBUG] - empty pro item ".Time::Piece->strptime( $processed_item, "%Y-%m-%d %H:%M:%S");
+ Log3 $name, 5, "[DEBUG] - empty nearst ".Time::Piece->strptime( $nearst_irrigation, "%Y-%m-%d %H:%M:%S");
$nearst_irrigation = $processed_item
if ( Time::Piece->strptime( $processed_item, "%Y-%m-%d %H:%M:%S")
< Time::Piece->strptime( $nearst_irrigation, "%Y-%m-%d %H:%M:%S")
@@ -1034,50 +1094,15 @@ sub setState {
} else {
$nearst_irrigation = ReadingsVal($name, 'scheduling-scheduled_watering_next_start', '');
}
- Log3 $name, 3, "[DEBUG] - choosed nearst: $nearst_irrigation";
+ Log3 $name, 5, "[DEBUG] - choosed nearst: $nearst_irrigation";
-
-######
-######
-###### $has_scheduling = 1 if ( ReadingsVal($name, 'scheduling-schedules_paused_until_'.$_ , '') ne '2038-01-18T00:00:00.000Z' ); #&& ReadingsVal($name, 'scheduling-schedules_paused_until_'.$_ , '') eq '' );
-###### #$has_scheduling = 1 if ( ReadingsVal($name, 'scheduling-schedules_paused_until_'.$_ , 'n/a') eq '' );
-######
-###### # if ( ReadingsVal($name, 'scheduling-scheduled_watering_next_start_'.$_, '') ne ''
-###### # --- wenn next_start_x ne 'na' && paused_until_x eq '' -> start_x
-###### ## scheduling-schedules_paused_until_* = leer oder n/a -> keine zeitpläne
-######
-###### if ( ReadingsVal($name, 'scheduling-schedules_paused_until_'.$_ , '') ne '2038-01-18T00:00:00.000Z' ) {
-###### # $nearst_irrigation = ReadingsVal($name, 'scheduling-scheduled_watering_next_start', '');
-###### Log3 $name, 3, "[DEBUG] - ";
-######
-###### # $nearst_irrigation = RigReadingsValue($hash, ReadingsVal($name, 'scheduling-schedules_paused_until_'.$_, ''))
-###### # if (
-###### # Time::Piece->strptime( RigReadingsValue($hash, ReadingsVal($name, 'scheduling-schedules_paused_until_'.$_, '')), "%Y-%m-%d %H:%M") < Time::Piece->strptime( $nearst_irrigation, "%Y-%m-%d %H:%M")
-###### # && $has_scheduling && Time::Piece->strptime( RigReadingsValue($hash, ReadingsVal($name, 'scheduling-schedules_paused_until_'.$_, '')), "%Y-%m-%d %H:%M") > Time::Piece->new
-###### # )
-###### if ( ReadingsVal($name, 'scheduling-scheduled_watering_next_start', '') eq '' ) { # non next start, schedules paused permanently or next schedule > 1 year; get nearst paused_until
-###### $nearst_irrigation = RigReadingsValue($hash, ReadingsVal($name, 'scheduling-schedules_paused_until_'.$_, ''))
-###### if ( Time::Piece->strptime( RigReadingsValue($hash, ReadingsVal($name, 'scheduling-schedules_paused_until_'.$_, '')), "%Y-%m-%d %H:%M")
-###### < Time::Piece->strptime( $nearst_irrigation, "%Y-%m-%d %H:%M")
-###### && $has_scheduling
-###### && Time::Piece->strptime( RigReadingsValue($hash, ReadingsVal($name, 'scheduling-schedules_paused_until_'.$_, '')), "%Y-%m-%d %H:%M")
-###### > Time::Piece->new
-###### )
-###### } else {
-###### $nearst_irrigation = ReadingsVal($name, 'scheduling-scheduled_watering_next_start', '');
-###### }
-###### } # fi
-######
-###### #$nearst_irrigation = ReadingsVal($name, 'scheduling-scheduled_watering_next_start', '');
-###### # if ( ReadingsVal($name, 'scheduling-scheduled_watering_next_start_'.$_, 'n/a') ne 'n/a' );
-######
} # for
# override state 4 extendedstates
if ( AttrVal( $name, "extendedState", 0 ) == 1) {
if (scalar(@opened_valves) > 0){
## valve 1 will be ir.. 23 minutes remaining
for (@valves_connected){
- $state_string .= sprintf(RigReadingsValue($hash,'valve').' '.$_.' '.(RigReadingsValue($hash, 'will be irrigated %.f minutes remaining.') .''), (ReadingsVal( $name, 'watering-watering_timer_'.$_.'_duration', 0 )/60));
+ $state_string .= sprintf(RigReadingsValue($hash,'valve').' '.$_.' '.(RigReadingsValue($hash, 'watering. %.f minutes left') .''), (ReadingsVal( $name, 'watering-watering_timer_'.$_.'_duration', 0 )/60));
} # /for
} else {
$state_string .= RigReadingsValue($hash, 'closed');
@@ -1091,10 +1116,10 @@ sub setState {
' )
if ( AttrVal( $name, 'stateFormat', 'none' ) eq 'none' );
} else {
- Log3 $name, 3, "[DEBUG] - Offene Ventile :".scalar(@opened_valves)." laengste bewaesserung: $longest_duration . hat Zeitplan: $has_schedule Naechster Zeitplan: $nearst_irrigation";
+ Log3 $name, 5, "[DEBUG] - Offene Ventile :".scalar(@opened_valves)." laengste bewaesserung: $longest_duration . hat Zeitplan: $has_schedule Naechster Zeitplan: $nearst_irrigation";
$state_string = scalar(@opened_valves) > 0
# offen
- ? sprintf( (RigReadingsValue($hash, 'will be irrigated %.f minutes remaining.')), $longest_duration/60)
+ ? sprintf( (RigReadingsValue($hash, 'watering. %.f minutes left')), $longest_duration/60)
# zu
:
( $has_schedule
@@ -1113,101 +1138,14 @@ sub setState {
;
# state offline | override
$state_string = 'offline' if ($online_state eq 'offline');
+ $state_string = ( $error_type ne 'ok' ) ? $error_type : $state_string;
}
-
- ## check ob ws offen ist
- # ja -> dann zeig alle offene an ( durch api max. 2 )
- ##
- # nein -> dann nur closed
- #
- ## check ob ein zeitplan aktiv
- # ja -> zeig nur den nächsten an
- ##
- # nein -> permanent geschlosen
- ####
- # ### eventuell auf binare bits und shiften
- # $state_string .= $activ_watering > 0
- # # offen
- # ?
- # ( ReadingsVal($name, 'scheduling-schedules_paused_until_'.$activ_watering, '' ) eq '' )
- # # leer ( zeitplan aktiv ... )
- # ? sprintf('V'.$activ_watering.' '.(RigReadingsValue($hash, 'will be irrigated %.f minutes remaining.').' '.RigReadingsValue($hash, 'next watering: %s')), (ReadingsVal( $name, 'watering-watering_timer_'.$activ_watering.'_duration', 0 )/60), RigReadingsValue($hash, ReadingsVal($name, 'scheduling-scheduled_watering_next_start_'.$activ_watering, '')) )
- # # zeitplan pausiert
- # :
- # ( ReadingsVal($name, 'scheduling-schedules_paused_until_'.$activ_watering , '') eq '2038-01-18T00:00:00.000Z')
- # # pause bis dauerhaft
- # ? sprintf('V'.$activ_watering.' '. (RigReadingsValue($hash, 'will be irrigated %.f minutes remaining.').' '.RigReadingsValue($hash , 'schedule permanently paused')), (ReadingsVal( $name, 'watering-watering_timer_'.$activ_watering.'_duration', 0 )/60) )
- # # naechter termin
- # : sprintf('V'.$activ_watering.' '. RigReadingsValue($hash , 'paused until %s'), RigReadingsValue($hash, ReadingsVal($name, 'scheduling-schedules_paused_until_'.$activ_watering , '')) )
- # # zu
- # :
- # ( ReadingsVal($name, 'scheduling-schedules_paused_until_'.$activ_watering , '' ) eq '' )
- # # zeitplan aktiv
- # ? sprintf( (RigReadingsValue($hash, 'closed') .'. '.RigReadingsValue($hash, 'next watering: %s')), RigReadingsValue($hash, ReadingsVal($name, 'scheduling-scheduled_watering_next_start_'.$activ_watering, '') ) )
- # # zeitplan pausiert
- # : RigReadingsValue($hash, 'closed')
- # ;
-
- #} FOR valvces_connected
- # if ($activ_watering > 0)
- # {
- # # ein ventil offen
- # my $state_string = "ein ventil offen"
- # }
readingsBulkUpdate(
$hash, 'state', RigReadingsValue( $hash, $state_string ) );
}
- #online state water control
- # zeitplan -> dauert pausiert wenn 2038-01-18T00:00:00.000Z
-
- # watering-watering_timer_1_state idle | scheduled | manual
- # watering-watering_timer_1_duration 0 in sec
- # scheduling-scheduled_watering_next_start XXX
- # scheduling-scheduled_watering_end | end < NOW && duration = 0 => abbruch manuell
- # scheduling-schedules_paused_until
-
-
- # 1. Ventil geschlossen, Zeitplan pausiert.
- # App zeigt: nichts (wenn vorher ein Zeitplan abgebrochen wurde, steht da "Unterbrochen xx:yy - zz:aa")
- # 2. Ventil geschlossen, Zeitplan aktiv.
- # App zeigt: "Nächste Bewässerung heute um xx:yy Uhr" (wenn vorher ein Zeitplan abgebrochen wurde, steht da vorher auch "Unterbrochen xx:yy - zz:aa")
- # 3. Ventil manuell geoeffnet, späterer Zeitplan aktiv.
- # Wird bewässert xx Minuten verbleibend" und "Nächste Bewässerung heute um xx:yy Uhr"
- # 4. Ventil manuell geoeffnet, Zeitpläne deaktiviert.
- # App zeigt: "Wird bewässert xx Minuten verbleibend"
- ### CHANGE to one
- # if ( AttrVal( $name, 'model', 'unknown' ) eq 'watering_computer' ){
-
- # 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_irrigation_left', 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_irrigation_left', 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');
-
- # readingsBulkUpdate(
- # $hash, 'state', RigReadingsValue( $hash, $state_string ) );
- # }
+ # Sensor / Sensor 2
if ( AttrVal( $name, 'model', 'unknown' ) =~ /sensor.?/ ) {
my $state_string =
( ReadingsVal( $name, 'device_info-category', 'unknown' ) eq
@@ -1227,11 +1165,6 @@ sub setState {
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');
-# }
#online state sensor I II
readingsBulkUpdate( $hash, 'state',
$online_state eq 'online' ? RigReadingsValue( $hash, $state_string) : RigReadingsValue( $hash, 'offline') );
@@ -1241,39 +1174,6 @@ sub setState {
ReadingsVal( $name, 'power-power_timer', 'no info from power-timer' ) )
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;
}
@@ -1385,10 +1285,12 @@ sub ReadingLangGerman {
'awake' => 'Aufgewacht',
'schedule permanently paused' => 'Zeitplan dauerhaft pausiert',
'paused until %s' => 'pausiert bis %s',
- 'will be irrigated %.f minutes remaining.'=> 'Wird bewässert. %.f Minuten verbleibend.',
+ 'watering. %.f minutes left' => 'Wird bewässert. %.f Minuten verbleibend.',
'next watering: %s' => 'Nächste Bewässerung: %s',
'n/a' => 'nicht verfügbar',
'pump_not_filled' => 'Pumpe nicht gefüllt',
+ 'clean_fine_filter' => 'Filter reinigen',
+ 'concurrent_limit_reached' => 'Grenze gleichzeitig geöffneter Ventile erreicht',
);
if (
@@ -1539,320 +1441,836 @@ sub SetPredefinedStartPoints {
=item device
=item summary Modul to control GardenaSmart Devices
-=item summary_DE Modul zur Steuerung von GardenaSmartgeräten
-
+=item summary_DE Modul zur Steuerung von GardenaSmartgeräten
=begin html
GardenaSmartDevice
-
- In combination with GardenaSmartBridge this FHEM Module controls the GardenaSmart Device using the GardenaCloud
+
+ In combination with Fhem device GardenaSmartBridge this Fhem module enables communication between GardenaCloud and
+ fhem.
- Once the Bridge device is created, the connected devices are automatically recognized and created in FHEM.
- From now on the devices can be controlled and changes in the GardenaAPP are synchronized with the state and readings of the devices.
+ Once the bridge device is created, the connected Gardena devices will be recognized and created in Fhem
+ automatically.
+ From now on these devices can be controlled via Fhem. Changes in the Gardena App are synchronized with state and
+ readings of the devices.
+
+ So far, known devices are mower, smart water control, irrigation control, smart sensors, power plug and pressure
+ pump. Schedules can be disabled/enabled via fhem, defining or deleting them must be done via Gardena App or its web interface.
-
- Readings
+
+
+
+ Readings (model = mower)
+
+ Readings are based on Sileno, other models might have different/additional readings depending on their functions (tbd.)
+
- - battery-charging - Indicator if the Battery is charged (0/1) or with newer Firmware (false/true)
- - battery-level - load percentage of the Battery
- - battery-rechargeable_battery_status - healthyness of the battery (out_of_operation/replace_now/low/ok)
+ - battery-charging - Indicator if battery is charged (0/1)
+ - battery-level - load percentage of battery
+ - battery-rechargeable_battery_status - healthyness of the battery (out_of_operation/replace_now/low/ok), not all models
- device_info-category - category of device (mower/watering_computer)
+ - device_info-connection_status - connection status (online/offline/unknown)
- device_info-last_time_online - timestamp of last radio contact
- device_info-manufacturer - manufacturer
- device_info-product - product type
- device_info-serial_number - serial number
- - device_info-sgtin -
+ - device_info-sgtin - (tbd.)
- device_info-version - firmware version
- firmware-firmware_command - firmware command (idle/firmware_cancel/firmware_upload/unsupported)
- firmware-firmware_status - firmware status
- - firmware-firmware_update_start - indicator when a firmwareupload is started
- firmware-firmware_upload_progress - progress indicator of firmware update
- firmware-inclusion_status - inclusion status
- - internal_temperature-temperature - internal device temperature
+ - internal_temperature-temperature - internal device temperature, not all models
- mower-error - actual error message
-
- - no_message
- - outside_working_area
- - no_loop_signal
- - wrong_loop_signal
- - loop_sensor_problem_front
- - loop_sensor_problem_rear
- - trapped
- - upside_down
- - low_battery
- - empty_battery
- - no_drive
- - lifted
- - stuck_in_charging_station
- - charging_station_blocked
- - collision_sensor_problem_rear
- - collision_sensor_problem_front
- - wheel_motor_blocked_right
- - wheel_motor_blocked_left
- - wheel_drive_problem_right
- - wheel_drive_problem_left
- - cutting_system_blocked
- - invalid_sub_device_combination
- - settings_restored
- - electronic_problem
- - charging_system_problem
- - tilt_sensor_problem
- - wheel_motor_overloaded_right
- - wheel_motor_overloaded_left
- - charging_current_too_high
- - temporary_problem
- - guide_1_not_found
- - guide_2_not_found
- - guide_3_not_found
- - difficult_finding_home
- - guide_calibration_accomplished
- - guide_calibration_failed
- - temporary_battery_problem
- - battery_problem
- - alarm_mower_switched_off
- - alarm_mower_stopped
- - alarm_mower_lifted
- - alarm_mower_tilted
- - connection_changed
- - connection_not_changed
- - com_board_not_available
- - slipped
-
+
+ - no_message
+ - outside_working_area
+ - no_loop_signal
+ - wrong_loop_signal
+ - loop_sensor_problem_front
+ - loop_sensor_problem_rear
+ - trapped
+ - upside_down
+ - low_battery
+ - empty_battery
+ - no_drive
+ - lifted
+ - stuck_in_charging_station
+ - charging_station_blocked
+ - collision_sensor_problem_rear
+ - collision_sensor_problem_front
+ - wheel_motor_blocked_right
+ - wheel_motor_blocked_left
+ - wheel_drive_problem_right
+ - wheel_drive_problem_left
+ - cutting_system_blocked
+ - invalid_sub_device_combination
+ - settings_restored
+ - electronic_problem
+ - charging_system_problem
+ - tilt_sensor_problem
+ - wheel_motor_overloaded_right
+ - wheel_motor_overloaded_left
+ - charging_current_too_high
+ - temporary_problem
+ - guide_1_not_found
+ - guide_2_not_found
+ - guide_3_not_found
+ - difficult_finding_home
+ - guide_calibration_accomplished
+ - guide_calibration_failed
+ - temporary_battery_problem
+ - battery_problem
+ - alarm_mower_switched_off
+ - alarm_mower_stopped
+ - alarm_mower_lifted
+ - alarm_mower_tilted
+ - connection_changed
+ - connection_not_changed
+ - com_board_not_available
+ - slipped
+
- - mower-manual_operation - (0/1) or with newer Firmware (false/true)
- - mower-override_end_time - manual override end time
+ - mower-last_error_code - code of last error
- mower-source_for_next_start - source for the next start
-
- - no_source
- - mower_charging
- - completed_cutting_autotimer
- - week_timer
- - countdown_timer
- - undefined
-
-
- - mower-status - mower state (see state)
+
+ - no_source
+ - mower_charging
+ - completed_cutting_autotimer
+ - week_timer
+ - countdown_timer
+ - undefined
+
+
+ - mower-status - mower status (see state reading)
+ - mower-timestamp_last_error_code - timestamp of last error
- mower-timestamp_next_start - timestamp of next scheduled start
- - radio-connection_status - state of connection
+ - mower_stats-charging_cycles - number of charging cycles
+ - mower_stats-collisions - number of collisions
+ - mower_stats-cutting_time - cutting time in hours
+ - mower_stats-running_time - running time in hours (including cutting time)
+ - mower_timer-mower_timer - (tbd.)
+ - mower_timer-mower_timer_timestamp - (tbd.)
+ - mower_type-base_software_up_to_date - latest software (0/1)
+ - mower_type-device_type - device type
+ - mower_type-device_variant - device variant
+ - mower_type-mainboard_version - mainboard version
+ - mower_type-mmi_version - mmi version
+ - mower_type-serial_number - serial number
- radio-quality - percentage of the radio quality
- radio-state - radio state (bad/poor/good/undefined)
+ - scheduling-schedules_event_1_end_at - ending time of schedule 1
+ - scheduling-schedules_event_1_id - ID of schedule 1
+ - scheduling-schedules_event_1_start_at - starting time of schedule 1
+ - scheduling-schedules_event_1_weekly - weekdays of schedule 1(comma-separated)
+ - ...more readings for additional schedules (if defined)
+ - scheduling-schedules_events_count - number of pre-defined schedules
+ - startpoint-1-enabled - starpoint 1 enabled (0/1)
+ - ...more readings for additional startpoints
- state - state of the mower
-
- - paused
- - ok_cutting
- - ok_searching
- - ok_charging
- - ok_leaving
- - wait_updating
- - wait_power_up
- - parked_timer
- - parked_park_selected
- - off_disabled
- - off_hatch_open
- - unknown
- - error
- - error_at_power_up
- - off_hatch_closed
- - ok_cutting_timer_overridden
- - parked_autotimer
- - parked_daily_limit_reached
-
+
+ - paused
+ - ok_cutting
+ - ok_searching
+ - ok_charging
+ - ok_leaving
+ - wait_updating
+ - wait_power_up
+ - parked_timer
+ - parked_park_selected
+ - off_disabled
+ - off_hatch_open
+ - unknown
+ - error
+ - error_at_power_up
+ - off_hatch_closed
+ - ok_cutting_timer_overridden
+ - parked_autotimer
+ - parked_daily_limit_reached
+ - hibernate - winter mode)
+
+ - winter_mode - status of winter mode (awake/hibernate)
+ Readings (model = watering_computer)
+
+ - ambient_temperature-temperature - ambient temperature in Celsius
+ - battery-disposable_battery_status - healthyness of the battery (ok/low/replace_now/out_of_operation/no_battery/unknown)
+ - battery-level - energy level of battery in percent
+ - device_info-category - category of device (mower/watering_computer/sensor/etc.)
+ - device_info-connection_status - connection status (online/offline/unknown)
+ - device_info-last_time_online - timestamp of last radio contact
+ - device_info-manufacturer - manufacturer
+ - device_info-product - product type
+ - device_info-serial_number - serial number
+ - device_info-sgtin - (tbd.)
+ - device_info-version - firmware version
+ - error-error - error message (tbd.)
+ - error-valve_error_1_severity - (tbd.)
+ - error-valve_error_1_type - (tbd.)
+ - error-valve_error_1_valve_id - id of valve with error
+ - firmware-firmware_available_version - new available firmware (only if available)
+ - firmware-firmware_command - firmware command (idle/firmware_cancel/firmware_upload/unsupported)
+ - firmware-firmware_status - firmware status
+ - firmware-firmware_upload_progress - progress indicator of firmware update
+ - firmware-inclusion_status - inclusion status
+ - manualButtonTime - watering time for manual button on device in minutes
+ - radio-quality - percentage of the radio quality
+ - radio-state - radio state (bad/poor/good/undefined)
+ - scheduling-scheduled_watering_end - next schedule ending time
+ - scheduling-scheduled_watering_next_start - next schedule starting time
+ - scheduling-schedules_event_1_valve_1_end_at - ending time of schedule 1
+ - scheduling-schedules_event_1_valve_1_id - ID of schedule 1
+ - scheduling-schedules_event_1_valve_1_start_at - starting time of schedule 1
+ - scheduling-schedules_event_1_valve_1_weekly - weekdays of schedule 1
+ - scheduling-schedules_events_count - number of pre-defined schedules
+ - scheduling-schedules_paused_until - date/time until schedule is paused (2038-01-18T00:00:00.000Z is defined as permanently by Gardena cloud)
+ - state - state of device
+
+ - closed - valve closed, no schedules available
+ - closed. schedule permanently paused - valve closed, schedule disabled
+ - closed. next watering: YYYY-MM-DD HH:MM - valve closed, next scheduled start at YYYY-MM-DDTHH:MM:00.000Z
+ - watering. n minutes left. - watering, n minutes remaining (depending on manual button time or on pre-defined schedule)
+ - offline - device is disabled/not connected
+ - hibernate - winter mode)
+
+
+ - watering-watering_timer_1_duration - duration of current watering in seconds
+ - watering-watering_timer_1_irrigation_left - remaining watering time in minutes
+ - watering-watering_timer_1_state - state of schedule
+ - watering-watering_timer_1_valve_id - valve id of schedule
+ - winter_mode - status of winter mode (awake/hibernate)
+
+
+ Readings (model = ic24)
+
+ - device_info-category - category of device (mower/watering_computer/sensor/etc.)
+ - device_info-connection_status - connection status (online/offline/unknown)
+ - device_info-last_time_online - timestamp of last radio contact
+ - device_info-manufacturer - manufacturer
+ - device_info-product - product type
+ - device_info-serial_number - serial number
+ - device_info-sgtin - tbd.
+ - device_info-version - firmware version
+ - error-error - error message (tbd.)
+ - error-valve_error_0_severity - (tbd.)
+ - error-valve_error_0_type - (tbd.)
+ - error-valve_error_0_valve_id - id of valve with error
+ - ...more error readings
-
+
- firmware-firmware_available_version - new available firmware (only if available)
+ - firmware-firmware_command - firmware command (idle/firmware_cancel/firmware_upload/unsupported)
+ - firmware-firmware_status - firmware status
+ - firmware-firmware_upload_progress - progress indicator of firmware update
+ - firmware-inclusion_status - inclusion status
+ - ic24-valves_connected - connected valves (comma separated)
+ - ic24-valves_master_config - master valve (only if defined in Gardena app)
+ - radio-quality - percentage of the radio quality
+ - radio-state - radio state (bad/poor/good/undefined)
+ - scheduling-scheduled_watering_end - next schedule ending time
+ - scheduling-scheduled_watering_end_1 - next schedule ending time for valve 1
+ - ...more readings for valves 2-6
+ - scheduling-scheduled_watering_next_start - next schedule starting time
+ - scheduling-scheduled_watering_next_start_1 - next schedule starting time for valve 1
+ - ...more readings for valves 2-6
+ - scheduling-schedules_event_1_valve_1_end_at - ending time of schedule 1
+ - scheduling-schedules_event_1_valve_1_id - ID of schedule 1
+ - scheduling-schedules_event_1_valve_1_start_at - starting time of schedule 1
+ - scheduling-schedules_event_1_valve_1_weekly - weekdays of schedule 1
+ - scheduling-schedules_events_count - number of pre-defined schedules
+ - ...more readings for further schedules/valves
+ - scheduling-schedules_paused_until_1 - date/time until schedule is paused (2038-01-18T00:00:00.000Z is defined as permanently by Gardena cloud)
+ - ...more readings for valves 2-6
+ - state - state of device
+
+ - closed - valve closed, no schedules available
+ - closed. schedule permanently paused - valve closed, all schedules disabled/paused
+ - closed. next watering: YYYY-MM-DD HH:MM - valve closed, next scheduled start at YYYY-MM-DDTHH:MM:00.000Z
+ - watering. n minutes left. - watering, n minutes remaining. If more than one schedule is active, the longer remaining time is shown.
+ - offline - device is disabled/not connected
+
+
+ - valve-valve_name_1 - individual name for valve 1
+ - ...more readings for valves 2-6 (if installed)
+ - watering-watering_timer_1_duration - duration of current watering in seconds
+ - watering-watering_timer_1_irrigation_left - remaining watering time in minutes
+ - watering-watering_timer_1_state - state of schedule
+ - watering-watering_timer_1_valve_id - valve id of schedule
+ - ...more readings for further valves/schedules
+ - winter_mode - status of winter mode (awake/hibernate)
+
+
+ Readings (model = sensor)
+
+ - ambient_temperature-frost_warning - frost warning
+ - ambient_temperature-temperature - ambient temperature in Celsius
+ - battery-disposable_battery_status - healthyness of the battery (ok/low/replace_now/out_of_operation/no_battery/unknown)
+ - battery-level - energy level of battery in percent
+ - device_info-category - category of device (mower/watering_computer/sensor/etc.)
+ - device_info-connection_status - connection status (online/offline/unknown)
+ - device_info-last_time_online - timestamp of last radio contact
+ - device_info-manufacturer - manufacturer
+ - device_info-product - product type
+ - device_info-serial_number - serial number
+ - device_info-sgtin - tbd.
+ - device_info-version - firmware version
+ - firmware-firmware_available_version - new available firmware (only if available)
+ - firmware-firmware_command - firmware command (idle/firmware_cancel/firmware_upload/unsupported)
+ - firmware-firmware_status - firmware status
+ - firmware-firmware_upload_progress - progress indicator of firmware update
+ - firmware-inclusion_status - inclusion status
+ - humidity-humidity - humidity in percent
+ - light-light - brightness in lux
+ - radio-quality - percentage of the radio quality
+ - radio-state - radio state (bad/poor/good/undefined)
+ - soil_temperature-temperature - soil temperature in Celsius
+ - state - state of sensor (temperature (T:), humidity (H:), brightness/light (L:)|offline|hibernate)
+ - winter_mode - status of winter mode (awake/hibernate)
+
+
+ Readings (model = sensor2)
+
+ "sensor2" does not measure brightness or ambient temperature, and it has another reading for frost warning. Other than that, it seems to be more or less identical to "sensor".
+
+
+ - battery-disposable_battery_status - healthyness of the battery (ok/low/replace_now/out_of_operation/no_battery/unknown)
+ - battery-level - energy level of battery in percent
+ - device_info-category - category of device (mower/watering_computer/sensor/etc.)
+ - device_info-connection_status - connection status (online/offline/unknown)
+ - device_info-last_time_online - timestamp of last radio contact
+ - device_info-manufacturer - manufacturer
+ - device_info-product - product type
+ - device_info-serial_number - serial number
+ - device_info-sgtin - tbd.
+ - device_info-version - firmware version
+ - firmware-firmware_available_version - new available firmware (only if available)
+ - firmware-firmware_command - firmware command (idle/firmware_cancel/firmware_upload/unsupported)
+ - firmware-firmware_status - firmware status
+ - firmware-firmware_upload_progress - progress indicator of firmware update
+ - firmware-inclusion_status - inclusion status
+ - humidity-humidity - humidity in percent
+ - radio-quality - percentage of the radio quality
+ - radio-state - radio state (bad/poor/good/undefined)
+ - soil_model-model_definition - tbd.
+ - soil_model-model_status - tbd.
+ - soil_temperature-frost-warning - frost warning
+ - soil_temperature-temperature - soil temperature in Celsius
+ - state - state of sensor (temperature (T:), humidity (H:)|offline|hibernate)
+ - winter_mode - status of winter mode (awake/hibernate)
+
+
+ Readings (model = power)
+
+
+ Readings (model = electronic_pressure_pump)
+
+
- Attributes
+ Attribute (all models)
- - readingValueLanguage - Change the Language of Readings (de,en/if not set the default is english and the global language is not set at german)
- - model -
+ - IODev - Name of GardenaSmartBridge device
+ - model watering_computer|sensor|sensor2|mower|ic24|power|electronic_pressure_pump - model of
+ GardenaSmartDevice
+ - readingValueLanguage en|de - Reading language enlish or german (default: english, if global language is not
+ set to german)
-
+
- set
+ set (model = mower)
- - winter_mode - awake | hibernate
-
-
- mower
- - parkUntilFurtherNotice
- - parkUntilNextTimer
- - startOverrideTimer - (in minutes, 60 = 1h, 1440 = 24h, 4320 = 72h)
- - startResumeSchedule
- - startpoint enable|disable 1|2|3 - enables or disables one or more predefined start points
+ - parkUntilFurtherNotice - park mower and disable schedule
+ - parkUntilNextTimer - park mower until next schedule
+ - startOverrideTimer n - manual mowing for n minutes (e.g. 60 = 1h, 1440 = 24h, 4320 = 72h)
+ - startResumeSchedule - enable schedule
+ - startPoint enable|disable 1|2|3 - enable or disable pre-defined starting points
- set NAME startpoint enable 1
- set NAME startpoint disable 3 enable 1
- irrigation control
- - resumeScheduleValve - start schedule irrigation on valve n
- - stopScheduleValve - stop schedule irrigation on valve n (Default: 2038-01-18T00:00:00.000Z) | optional params hours (now + hours)
+ - winter_mode awake|hibernate - Disable or enable winter mode
+
+
+ set (model = watering_computer)
+
+ - cancelOverride - stop (manual) watering
+ - manualButtonTime n - set watering time for manual button (0 disables button)
+ - manualOverride n - manual watering for n minutes
+ - resumeSchedule - enable schedule
+ - stopSchedule n - disable schedule for n hours (Default: 2038-01-18T00:00:00.000Z, Gardena App reads it as
+ "permanently")
+ - winter_mode awake|hibernate - Disable or enable winter mode
+
+
+ set (model = ic24)
+
+ - cancelOverrideValve1 - stop (manual) watering for valve 1
+ - cancelOverrideValve2 - stop (manual) watering for valve 2
+ - cancelOverrideValve3 - stop (manual) watering for valve 3
+ - cancelOverrideValve4 - stop (manual) watering for valve 4
+ - cancelOverrideValve5 - stop (manual) watering for valve 5
+ - cancelOverrideValve6 - stop (manual) watering for valve 6
- closeAllValves - close all valves
- water control
- - manualButtonTime - set manual time for button press (in minutes) 0 disable button
- - stopSchedule - stop schedule for now + n hours (Default: 2038-01-18T00:00:00.000Z)
- - resumeSchedule - resume schedule
+ - manualDurationValve1 n - open valve 1 for n minutes
+ - manualDurationValve2 n - open valve 2 for n minutes
+ - manualDurationValve3 n - open valve 3 for n minutes
+ - manualDurationValve4 n - open valve 4 for n minutes
+ - manualDurationValve5 n - open valve 5 for n minutes
+ - manualDurationValve6 n - open valve 6 for n minutes
+ - resetValveErrors n - reset valve errormessage
+ - resumeScheduleValve n - (re)start irrigation schedule for valve n
+ - stopScheduleValve n m - stop irrigation schedule for valve n (Default: 2038-01-18T00:00:00.000Z, Gardena
+ App reads it as "permanently")
+ - winter_mode awake|hibernate - Disable or enable winter mode
+
+
+ set (model = sensor)
+
+ - refresh temperature|humidity|light - refresh sensor reading for temperature, humidity or daylight
+ - winter_mode awake|hibernate - Disable or enable winter mode
+
+
+ set (model = sensor2)
+
+ - refresh temperature|humidity - refresh sensor reading for temperature or humidity
+ - winter_mode awake|hibernate - Disable or enable winter mode
+
+
+ set (model = power)
+
+
+ set (model = electronic_pressure_pump)
+
=end html
+
=begin html_DE
GardenaSmartDevice
- Zusammen mit dem Device GardenaSmartDevice stellt dieses FHEM Modul die Kommunikation zwischen der GardenaCloud und Fhem her.
+ Zusammen mit dem Device GardenaSmartBridge stellt dieses Fhem-Modul die Kommunikation zwischen der GardenaCloud und
+ Fhem her.
- Wenn das GardenaSmartBridge Device erzeugt wurde, werden verbundene Geräte automatisch erkannt und in Fhem angelegt.
- Von nun an können die eingebundenen Geräte gesteuert werden. Änderungen in der APP werden mit den Readings und dem Status syncronisiert.
-
-
+ Wenn das GardenaSmartBridge Device erzeugt wurde, werden verbundene Geräte automatisch erkannt und in Fhem angelegt.
+ Von nun an können die eingebundenen Geräte gesteuert werden. änderungen in der App werden mit den Readings und dem
+ Status synchronisiert.
+
+ Bekannte Gardena-Geräte umfassen Rasenmäher, Smart Water Control, Irrigation Control, Smart Sensoren,
+ Steckdosen-Adapter und Pumpe. Zeitpläne können über fhem pausiert/aktiviert werden, das Anlegen oder Löschen erfolgt
+ derzeit nur über die App oder deren Web-Frontend.
+
+
+
+
+ Readings (model = mower/Mäher)
+
+ Readings basieren auf dem Modell Sileno, andere Modelle haben abweichende/zusätzliche Readings abhängig von ihren Funktionen (tbd.)
+
- Readings
-
- - battery-charging - Ladeindikator (0/1) oder mit neuerer Firmware (false/true)
+ - battery-charging - Ladeindikator (0/1)
- battery-level - Ladezustand der Batterie in Prozent
- - battery-rechargeable_battery_status - Zustand der Batterie (Ausser Betrieb/Kritischer Batteriestand, wechseln Sie jetzt/Niedrig/oK)
+ - battery-rechargeable_battery_status - Zustand der Batterie (Ausser Betrieb/Kritischer Batteriestand,
+ wechseln Sie jetzt/Niedrig/oK), nicht bei allen Modellen
+ - device_info-connection_status - Verbindungs-Status (online/offline/unknown)
- device_info-category - Eigenschaft des Gerätes (Mäher/Bewässerungscomputer/Bodensensor)
- device_info-last_time_online - Zeitpunkt der letzten Funkübertragung
- device_info-manufacturer - Hersteller
- device_info-product - Produkttyp
- device_info-serial_number - Seriennummer
- - device_info-sgtin -
+ - device_info-sgtin - (tbd.)
- device_info-version - Firmware Version
- - firmware-firmware_command - Firmware Kommando (Nichts zu tun/Firmwareupload unterbrochen/Firmwareupload/nicht unterstützt)
+ - firmware-firmware_command - Firmware Kommando (Nichts zu tun/Firmwareupload
+ unterbrochen/Firmwareupload/nicht unterstützt)
- firmware-firmware_status - Firmware Status
- - firmware-firmware_update_start - Firmwareupdate (0/1) oder mit neuerer Firmware (false/true)
- firmware-firmware_upload_progress - Firmwareupdatestatus in Prozent
- firmware-inclusion_status - Einbindungsstatus
- - internal_temperature-temperature - Interne Geräte Temperatur
+ - internal_temperature-temperature - Interne Geräte Temperatur, nicht bei allen Modellen
- mower-error - Aktuelle Fehler Meldung
-
- - Kein Fehler
- - Außerhalb des Arbeitsbereichs
- - Kein Schleifensignal
- - Falsches Schleifensignal
- - Problem Schleifensensor, vorne
- - Problem Schleifensensor, hinten
- - Eingeschlossen
- - Steht auf dem Kopf
- - Niedriger Batteriestand
- - Batterie ist leer
- - Kein Antrieb
- - Angehoben
- - Eingeklemmt in Ladestation
- - Ladestation blockiert
- - Problem Stoßsensor hinten
- - Problem Stoßsensor vorne
- - Radmotor rechts blockiert
- - Radmotor links blockiert
- - Problem Antrieb, rechts
- - Problem Antrieb, links
- - Schneidsystem blockiert
- - Fehlerhafte Verbindung
- - Standardeinstellungen
- - Elektronisches Problem
- - Problem Ladesystem
- - Kippsensorproblem
- - Rechter Radmotor überlastet
- - Linker Radmotor überlastet
- - Ladestrom zu hoch
- - Vorübergehendes Problem
- - SK 1 nicht gefunden
- - SK 2 nicht gefunden
- - SK 3 nicht gefunden
- - Problem die Ladestation zu finden
- - Kalibration des Suchkabels beendet
- - Kalibration des Suchkabels fehlgeschlagen
- - Kurzzeitiges Batterieproblem
- - Batterieproblem
- - Alarm! Mäher ausgeschalten
- - Alarm! Mäher gestoppt
- - Alarm! Mäher angehoben
- - Alarm! Mäher gekippt
- - Verbindung geändert
- - Verbindung nicht geändert
- - COM board nicht verfügbar
- - Rutscht
-
+
+ - Kein Fehler
+ - Ausserhalb des Arbeitsbereichs
+ - Kein Schleifensignal
+ - Falsches Schleifensignal
+ - Problem Schleifensensor, vorne
+ - Problem Schleifensensor, hinten
+ - Eingeschlossen
+ - Steht auf dem Kopf
+ - Niedriger Batteriestand
+ - Batterie ist leer
+ - Kein Antrieb
+ - Angehoben
+ - Eingeklemmt in Ladestation
+ - Ladestation blockiert
+ - Problem Stosssensor hinten
+ - Problem Stosssensor vorne
+ - Radmotor rechts blockiert
+ - Radmotor links blockiert
+ - Problem Antrieb, rechts
+ - Problem Antrieb, links
+ - Schneidsystem blockiert
+ - Fehlerhafte Verbindung
+ - Standardeinstellungen
+ - Elektronisches Problem
+ - Problem Ladesystem
+ - Kippsensorproblem
+ - Rechter Radmotor überlastet
+ - Linker Radmotor überlastet
+ - Ladestrom zu hoch
+ - Vorübergehendes Problem
+ - SK 1 nicht gefunden
+ - SK 2 nicht gefunden
+ - SK 3 nicht gefunden
+ - Problem die Ladestation zu finden
+ - Kalibration des Suchkabels beendet
+ - Kalibration des Suchkabels fehlgeschlagen
+ - Kurzzeitiges Batterieproblem
+ - Batterieproblem
+ - Alarm! Mäher ausgeschalten
+ - Alarm! Mäher gestoppt
+ - Alarm! Mäher angehoben
+ - Alarm! Mäher gekippt
+ - Verbindung geändert
+ - Verbindung nicht geändert
+ - COM board nicht verfügbar
+ - Rutscht
+
- - mower-manual_operation - Manueller Betrieb (0/1) oder mit neuerer Firmware (false/true)
- mower-override_end_time - Zeitpunkt wann der manuelle Betrieb beendet ist
- mower-source_for_next_start - Grund für den nächsten Start
-
- - Kein Grund
- - Mäher wurde geladen
- - SensorControl erreicht
- - Wochentimer erreicht
- - Stoppuhr Timer
- - Undefiniert
-
-
- - mower-status - Mäher Status (siehe state)
- - mower-timestamp_next_start - Zeitpunkt des nächsten geplanten Starts
- - radio-connection_status - Status der Funkverbindung
- - radio-quality - Indikator für die Funkverbindung in Prozent
- - radio-state - radio state (schlecht/schwach/gut/Undefiniert)
- - state - Staus des Mähers
-
- - Pausiert
- - Mähen
- - Suche Ladestation
- - Lädt
- - Mähen
- - Wird aktualisiert ...
- - Wird eingeschaltet ...
- - Geparkt nach Zeitplan
- - Geparkt
- - Der Mäher ist ausgeschaltet
- - Deaktiviert. Abdeckung ist offen oder PIN-Code erforderlich
- - Unbekannter Status
- - Fehler
- - Neustart ...
- - Deaktiviert. Manueller Start erforderlich
- - Manuelles Mähen
- - Geparkt durch SensorControl
- - Abgeschlossen
-
+
+ - Kein Grund
+ - Mäher wurde geladen
+ - SensorControl erreicht
+ - Wochentimer erreicht
+ - Stoppuhr Timer
+ - Undefiniert
+
+ - mower-status - Mäher Status (siehe state)
+ - mower-timestamp_last_error_code - Zeitpunkt des letzten Fehlers
+ - mower-timestamp_next_start - Zeitpunkt des nächsten geplanten Starts
+ - mower_stats-charging_cycles - Anzahl Ladezyklen
+ - mower_stats-collisions - Anzahl Zusammenstösse
+ - mower_stats-cutting_time - Schnittzeit in Stunden
+ - mower_stats-running_time - Laufzeit in Stunden (inkl. Schnittzeit)
+ - mower_timer-mower_timer - (tbd.)
+ - mower_timer-mower_timer_timestamp - (tbd.)
+ - mower_type-base_software_up_to_date - Software aktuell (0/1)
+ - mower_type-device_type - Gerätetyp
+ - mower_type-device_variant - Gerätevariante
+ - mower_type-mainboard_version - Mainboard-Version
+ - mower_type-mmi_version - MMI-Version
+ - mower_type-serial_number - Seriennummer
+ - radio-quality - Indikator für die Funkverbindung in Prozent
+ - radio-state - Verbindungsqualität (schlecht/schwach/gut/Undefiniert)
+ - scheduling-schedules_event_1_end_at - Endzeit des Zeitplans 1
+ - scheduling-schedules_event_1_id - ID des Zeitplans 1
+ - scheduling-schedules_event_1_start_at - Startzeit des Zeitplans 1
+ - scheduling-schedules_event_1_weekly - Wochentage des Zeitplans 1 (kommagetrennt)
+ - ...weitere Readings für zusätzliche Zeitpläne (falls angelegt)
+ - scheduling-schedules_events_count - Anzahl angelegter Zeitpläne
+ - startpoint-1-enabled - starpoint 1 enabled (0/1)
+ - ...weitere Readings für zusätzliche Startpunkte (falls angelegt)
+ - state - Status des Mähers
+
+ - Pausiert
+ - Mähen
+ - Suche Ladestation
+ - Lädt
+ - Mähen
+ - Wird aktualisiert ...
+ - Wird eingeschaltet ...
+ - Geparkt nach Zeitplan
+ - Geparkt
+ - Der Mäher ist ausgeschaltet
+ - Deaktiviert. Abdeckung ist offen oder PIN-Code erforderlich
+ - Unbekannter Status
+ - Fehler
+ - Neustart ...
+ - Deaktiviert. Manueller Start erforderlich
+ - Manuelles Mähen
+ - Geparkt durch SensorControl
+ - Abgeschlossen
+ - Winterschlaf - Gerät ist im Winterschlaf
+
+
+ - winter_mode - Status Winterschlaf (awake/hibernate)
+ Readings (model = watering_computer/Bewässerungscomputer)
+
+ - ambient_temperature-temperature - Umgebungstemperatur in Celsius
+ - battery-disposable_battery_status - Batteriezustand
+ - battery-level - Ladezustand der Batterie in Prozent
+ - device_info-category - Art des Geräts
+ - device_info-connection_status - Verbindungsstatus (online/offline/unknown)
+ - device_info-last_time_online - Zeitpunkt der letzten Funkübertragung
+ - device_info-manufacturer - Hersteller
+ - device_info-product - Produkttyp
+ - device_info-serial_number - Seriennummer
+ - device_info-sgtin - (tbd.)
+ - device_info-version - Firmware Version
+ - error-error - Fehlermeldung (tbd.)
+ - error-valve_error_1_severity - (tbd.)
+ - error-valve_error_1_type - (tbd.)
+ - error-valve_error_1_valve_id - ID des fehlerhaften Ventils
+ - firmware-firmware_available_version - Neue Firmware (nur wenn verfügbar)
+ - firmware-firmware_command - Firmware-Kommando (idle/firmware_cancel/firmware_upload/unsupported)
+ - firmware-firmware_status - Firmware Status
+ - firmware-firmware_upload_progress - Firmwareupdatestatus in Prozent
+ - firmware-inclusion_status - Einbindungsstatus
+ - manualButtonTime - Bewässerungszeit für den Geräte-Knopf in Minuten
+ - radio-quality - Indikator für die Funkverbindung in Prozent
+ - radio-state - Verbindungsqualität (schlecht/schwach/gut/Undefiniert)
+ - scheduling-scheduled_watering_end - Endzeit des nächsten Zeitplans
+ - scheduling-scheduled_watering_next_start - Startzeit des nächsten Zeitplans
+ - scheduling-schedules_event_1_valve_1_end_at - Endzeit von Zeitplan 1
+ - scheduling-schedules_event_1_valve_1_id - ID von Zeitplan 1
+ - scheduling-schedules_event_1_valve_1_start_at - Startzeit von Zeitplan 1
+ - scheduling-schedules_event_1_valve_1_weekly - Wochentage von Zeitplan 1
+ - scheduling-schedules_events_count - Anzahl angelegter Zeitpläne
+ - scheduling-schedules_paused_until - Datum/Uhrzeit, bis wann Zeitplan pausiert ist (2038-01-18T00:00:00.000Z wird von Gardena-Cloud als dauerhaft angesehen)
+ - state - Status des Geräts
+
+ - geschossen - Ventil geschlossen, keine Zeitpläne definiert
+ - geschlossen. Zeitplan dauerhaft pausiert - Ventil geschlossen, Zeitplan dauerhaft pausiert
+ - geschlossen. Nächste Bewässerung: YYYY-MM-DD HH:MM - Ventil geschlossen, nächster Zeitplan-Start YYYY-MM-DDTHH:MM:00.000Z
+ - will be irrigated n minutes remaining. - watering, n minutes remaining (depending on manual button time or on pre-defined schedule)
+ - offline - Gerät ist ausgeschaltet/hat keine Verbindung
+ - Winterschlaf - Gerät ist im Winterschlaf
+
+
+ - watering-watering_timer_1_duration - Gesamt-Dauer der aktuellen Bewässerung in Sekunden
+ - watering-watering_timer_1_irrigation_left - Verbleibende Bewässerungszeit in Minuten
+ - watering-watering_timer_1_state - Status des Zeitplans
+ - watering-watering_timer_1_valve_id - Ventil-ID des Zeitplans
+ - winter_mode - Status Winterschlaf (awake/hibernate)
+
+
+ Readings (model = ic24)
+
+ - device_info-category - Art des Geräts
+ - device_info-connection_status - Verbindungsstatus (online/offline/unknown)
+ - device_info-last_time_online - Zeitpunkt der letzten Funkübertragung
+ - device_info-manufacturer - Hersteller
+ - device_info-product - Produkttyp
+ - device_info-serial_number - Seriennummer
+ - device_info-sgtin - (tbd.)
+ - device_info-version - Firmware Version
+ - error-error - Fehlermeldung (tbd.)
+ - error-valve_error_0_severity - (tbd.)
+ - error-valve_error_0_type - (tbd.)
+ - error-valve_error_0_valve_id - ID des fehlerhaften Ventils
+ - ...ggf. weitere Error-Readings
+ - firmware-firmware_available_version - Neue Firmware (nur wenn verfügbar)
+ - firmware-firmware_command - Firmware-Kommando (idle/firmware_cancel/firmware_upload/unsupported)
+ - firmware-firmware_status - Firmware Status
+ - firmware-firmware_upload_progress - Firmwareupdatestatus in Prozent
+ - firmware-inclusion_status - Einbindungsstatus
+ - ic24-valves_connected - Verbundene Ventile (ID, kommagetrennt)
+ - ic24-valves_master_config - Masterventil (nur, wenn in Gardena-App definiert)
+ - radio-quality - Indikator für die Funkverbindung in Prozent
+ - radio-state - Verbindungsqualität (schlecht/schwach/gut/Undefiniert)
+ - scheduling-scheduled_watering_end - Endzeit des nächsten Zeitplans
+ - scheduling-scheduled_watering_end_1 - Endzeit des nächsten Zeitplans für Ventil 1
+ - ...weitere Readings für Ventile 2-6
+ - scheduling-scheduled_watering_next_start - Startzeit des nächsten Zeitplans
+ - scheduling-scheduled_watering_next_start_1 - Startzeit des nächsten Zeitplans für Ventil 1
+ - ...weitere Readings für Ventile 2-6
+ - scheduling-schedules_event_1_valve_n_end_at - Endzeit des ersten definierten Zeitplans für Ventil n
+ - scheduling-schedules_event_1_valve_n_id - ID des ersten definierten Zeitplans für Ventil n
+ - scheduling-schedules_event_1_valve_n_start_at - Startzeit des ersten definierten Zeitplans für Ventil n
+ - scheduling-schedules_event_1_valve_n_weekly - Wochentage des ersten definierten Zeitplans für Ventil n
+ - scheduling-schedules_events_count - Anzahl angelegter Zeitpläne
+ - ...weitere Readings für zusätzliche Zeitpläne/Ventile
+ - scheduling-schedules_paused_until_1 - Datum/Uhrzeit, bis wann Zeitplan pausiert ist (2038-01-18T00:00:00.000Z wird von Gardena-Cloud als dauerhaft angesehen)
+ - ...weitere Readings für Ventile 2-6
+ - state - Status des Geräts
+
+ - geschossen - Ventil geschlossen, keine Zeitpläne definiert
+ - geschlossen. Zeitplan dauerhaft pausiert - Ventil geschlossen, Zeitplan dauerhaft pausiert
+ - geschlossen. Nächste Bewässerung: YYYY-MM-DD HH:MM - Ventil geschlossen, nächster Zeitplan-Start YYYY-MM-DDTHH:MM:00.000Z
+ - wird bewässert. n Minuten verbleibend - Bewässerung aktiv, n Minuten verbleibend (wenn 2 Ventile geöffnet sind, wird die längere Dauer angezeigt)
+ - offline - Gerät ist ausgeschaltet/hat keine Verbindung
+ - Winterschlaf - Gerät ist im Winterschlaf
+
+
+ - valve-valve_name_1 - Eigener Name für Ventil 1
+ - ...weitere Readings für Ventile 2-6 (if installed)
+ - watering-watering_timer_1_duration - Gesamt-Dauer der aktuellen Bewässerung in Sekunden
+ - watering-watering_timer_1_irrigation_left - Verbleibende Dauer der aktuellen Bewässerung in Minuten
+ - watering-watering_timer_1_state - Status des Timers
+ - watering-watering_timer_1_valve_id - Ventil-ID des Timers
+ - ...weitere Readings für weitere Ventile/Zeitpläne
+ - winter_mode - Status Winterschlaf (awake/hibernate)
+
+
+ Readings (model = sensor)
+
+ - ambient_temperature-frost_warning - Frostwarnung
+ - ambient_temperature-temperature - Umgebungstemperatur in Celsius
+ - battery-disposable_battery_status - Batteriezustand
+ - battery-level - Ladezustand der Batterie in Prozent
+ - device_info-category - Art des Geräts
+ - device_info-connection_status - Verbindungsstatus (online/offline/unknown)
+ - device_info-last_time_online - Zeitpunkt der letzten Funkübertragung
+ - device_info-manufacturer - Hersteller
+ - device_info-product - Produkttyp
+ - device_info-serial_number - Seriennummer
+ - device_info-sgtin - (tbd.)
+ - device_info-version - Firmware Version
+ - firmware-firmware_available_version - Neue Firmware (nur wenn verfügbar)
+ - firmware-firmware_command - Firmware-Kommando (idle/firmware_cancel/firmware_upload/unsupported)
+ - firmware-firmware_status - Firmware Status
+ - firmware-firmware_upload_progress - Firmwareupdatestatus in Prozent
+ - firmware-inclusion_status - Einbindungsstatus
+ - humidity-humidity - Feuchtigkeit in Prozent
+ - light-light - Helligkeit in Lux
+ - radio-quality - Indikator für die Funkverbindung in Prozent
+ - radio-state - Verbindungsqualität (schlecht/schwach/gut/Undefiniert)
+ - soil_temperature-temperature - Erd-Temperatur in Celsius
+ - state - Status (Temperatur (T:), Feuchtigkeit (H:), Helligkeit (L:)|offline|Winterschlaf)
+ - winter_mode - Status Winterschlaf (awake/hibernate)
+
+
+ Readings (model = sensor2)
+
+ "sensor2" hat keine Helligkeitsmessung oder Umgebungstemperatur, und es legt die Frost-Warnung in einem anderen Reading ab. Ansonsten ist er mehr oder weniger identisch zum "sensor".
+
+
+ - battery-disposable_battery_status - Batteriezustand
+ - battery-level - Ladezustand der Batterie in Prozent
+ - device_info-category - Art des Geräts
+ - device_info-connection_status - Verbindungsstatus (online/offline/unknown)
+ - device_info-last_time_online - Zeitpunkt der letzten Funkübertragung
+ - device_info-manufacturer - Hersteller
+ - device_info-product - Produkttyp
+ - device_info-serial_number - Seriennummer
+ - device_info-sgtin - (tbd.)
+ - device_info-version - Firmware Version
+ - firmware-firmware_available_version - Neue Firmware (nur wenn verfügbar)
+ - firmware-firmware_command - Firmware-Kommando (idle/firmware_cancel/firmware_upload/unsupported)
+ - firmware-firmware_status - Firmware Status
+ - firmware-firmware_upload_progress - Firmwareupdatestatus in Prozent
+ - firmware-inclusion_status - Einbindungsstatus
+ - humidity-humidity - Feuchtigkeit in Prozent
+ - radio-quality - Indikator für die Funkverbindung in Prozent
+ - radio-state - Verbindungsqualität (schlecht/schwach/gut/Undefiniert)
+ - soil_model-model_definition - (tbd.)
+ - soil_model-model_status - (tbd.)
+ - soil_temperature-frost-warning - Frostwarnung
+ - soil_temperature-temperature - Erd-Temperatur in Celsius
+ - state - Status (Temperatur (T:), Feuchtigkeit (H:), Helligkeit (L:)|offline|Winterschlaf)
+ - winter_mode - Status Winterschlaf (awake/hibernate)
+
+
+ Readings (model = power)
+
+
+ Readings (model = electronic_pressure_pump)
+
+
- Attribute
+ Attribute (alle Modelle)
- - readingValueLanguage - Änderung der Sprache der Readings (de,en/wenn nichts gesetzt ist, dann Englisch es sei denn deutsch ist als globale Sprache gesetzt)
- - model -
+ - IODev - Name des GardenaSmartBridge Devices
+ - model watering_computer|sensor|sensor2|mower|ic24|power|electronic_pressure_pump - Modell des
+ GardenaSmartDevice
+ - readingValueLanguage en|de - Sprache der Readings englisch oder deutsch (default: englisch, es sei denn,
+ Deutsch ist als globale Sprache gesetzt)
+
- set
+ set (model = mower)
- - winter_mode - aufwäcken (awake)| winterschlaf (hibernate)
-
-
- mäher
- - parkUntilFurtherNotice - Parken des Mähers unter Umgehung des Zeitplans
- - parkUntilNextTimer - Parken bis zum nächsten Zeitplan
- - startOverrideTimer - Manuelles mähen (in Minuten, 60 = 1h, 1440 = 24h, 4320 = 72h)
- - startResumeSchedule - Weiterführung des Zeitplans
- - startpoint enable|disable 1|2|3 - Aktiviert oder deaktiviert einen vordefinierten Startbereich
+ - parkUntilFurtherNotice - Parken des Mähers und Aussetzen des Zeitplans
+ - parkUntilNextTimer - Parken bis zum nächsten Start nach Zeitplan
+ - startOverrideTimer n - Manuelles Mähen für n Minuten (z.B. 60 = 1h, 1440 = 24h, 4320 = 72h)
+ - startResumeSchedule - Zeitplan wieder aktivieren
+ - startPoint enable|disable 1|2|3 - Aktiviert oder deaktiviert einen vordefinierten Startbereich
- set NAME startpoint enable 1
- set NAME startpoint disable 3 enable 1
- irrigation control
- - resumeScheduleValve - Startet Bew&aauml;sserung am Ventil n nach Zeitplan
- - stopScheduleValve - Setzt Bew&aauml;sserung am Ventil n aus (Default: 2038-01-18T00:00:00.000Z) | Optionaler Parameter Stunden (Jetzt + Stunden)
- - closeAllValves - Stopt Bew&aauml;sserung an allen Ventilen
- water control
- - manualButtonTime - setzt die Dauer für den manuellen Knopf (in Minuten) 0 Schaltet den Knopf aus
- - stopSchedule - Halte Zeitplan an für x Stunden - (Default: 2038-01-18T00:00:00.000Z)
- - resumeSchedule - Weiterführung des Zeitplans
+ - winter_mode awake|hibernate - Winterschlaf aktivieren oder Gerät aufwecken
+
+
+ set (model = watering_computer)
+
+ - cancelOverride - (Manuelle) Bewässerung stoppen
+ - manualButtonTime n - Bewässerungsdauer für manuellen Knopf auf n Minuten setzen (0 schaltet den Knopf aus)
+
+ - manualOverride n - Manuelle Bewässerung für n Minuten
+ - resumeSchedule - Zeitplan wieder aktivieren
+ - stopSchedule n - Zeitplan anhalten für n Stunden (Default: 2038-01-18T00:00:00.000Z, durch Gardena-App als
+ "dauerhaft" interpretiert)
+ - winter_mode awake|hibernate - Winterschlaf aktivieren oder Gerät aufwecken
+
+
+ set (model = ic24)
+
+ - cancelOverrideValve1 - (Manuelle) Bewässerung an Ventil 1 stoppen
+ - cancelOverrideValve2 - (Manuelle) Bewässerung an Ventil 2 stoppen
+ - cancelOverrideValve3 - (Manuelle) Bewässerung an Ventil 3 stoppen
+ - cancelOverrideValve4 - (Manuelle) Bewässerung an Ventil 4 stoppen
+ - cancelOverrideValve5 - (Manuelle) Bewässerung an Ventil 5 stoppen
+ - cancelOverrideValve6 - (Manuelle) Bewässerung an Ventil 6 stoppen
+ - closeAllValves - Alle Ventile schliessen
+ - manualDurationValve1 n - Ventil 1 für n Minuten öffnen
+ - manualDurationValve2 n - Ventil 2 für n Minuten öffnen
+ - manualDurationValve3 n - Ventil 3 für n Minuten öffnen
+ - manualDurationValve4 n - Ventil 4 für n Minuten öffnen
+ - manualDurationValve5 n - Ventil 5 für n Minuten öffnen
+ - manualDurationValve6 n - Ventil 6 für n Minuten öffnen
+ - resetValveErrors n - Ventilfehler zurücksetzen
+ - resumeScheduleValve n - Zeitplan für Ventil n wieder aktivieren
+ - stopScheduleValve n m - Zeitplan für Ventil n anhalten für m Stunden (Default: 2038-01-18T00:00:00.000Z,
+ durch Gardena-App als "dauerhaft" interpretiert)
+ - winter_mode awake|hibernate - Winterschlaf aktivieren oder Gerät aufwecken
+
+
+ set (model = sensor)
+
+ - refresh temperature|humidity|light - Sensorwert für Temperatur, Feuchtigkeit oder Helligkeit aktualisieren
+
+ - winter_mode awake|hibernate - Winterschlaf aktivieren oder Gerät aufwecken
+
+
+ set (model = sensor2)
+
+ - refresh temperature|humidity - Sensorwert für Temperatur oder Feuchtigkeit aktualisieren
+ - winter_mode awake|hibernate - Winterschlaf aktivieren oder Gerät aufwecken
+
+
+ set (model = power)
+
+
+ set (model = electronic_pressure_pump)
+
=end html_DE
+
=for :application/json;q=META.json 74_GardenaSmartDevice.pm
{
"abstract": "Modul to control GardenaSmart Devices",
@@ -1870,7 +2288,7 @@ sub SetPredefinedStartPoints {
],
"release_status": "stable",
"license": "GPL_2",
- "version": "v2.5.4",
+ "version": "v2.5.7",
"author": [
"Marko Oldenburg "
],
diff --git a/controls_GardenaSmartDevice.txt b/controls_GardenaSmartDevice.txt
index 69e96c8..32327a6 100644
--- a/controls_GardenaSmartDevice.txt
+++ b/controls_GardenaSmartDevice.txt
@@ -1,2 +1,2 @@
-UPD 2022-07-12_20:03:00 49634 FHEM/73_GardenaSmartBridge.pm
-UPD 2022-07-13_20:56:14 81987 FHEM/74_GardenaSmartDevice.pm
+UPD 2022-07-21_19:43:48 49634 FHEM/73_GardenaSmartBridge.pm
+UPD 2022-08-11_14:24:26 107803 FHEM/74_GardenaSmartDevice.pm