change state of watering_computer

This commit is contained in:
Marko Oldenburg 2017-08-07 20:02:15 +02:00
parent 82c8667e2c
commit ea2bb58574
2 changed files with 26 additions and 9 deletions

View File

@ -279,7 +279,7 @@ sub GardenaSmartBridge_InternalTimerGetDeviceData($) {
sub GardenaSmartBridge_Write($@) {
my ($hash,$payload,$deviceId,$model) = @_;
my ($hash,$payload,$deviceId,$abilities) = @_;
my $name = $hash->{NAME};
my $session_id = $hash->{helper}{session_id};
@ -296,13 +296,13 @@ sub GardenaSmartBridge_Write($@) {
$uri .= '/locations/?user_id=' . $hash->{helper}{user_id} if( not defined($hash->{helper}{locations_id}) );
readingsSingleUpdate($hash,'state','fetch locationId',1) if( not defined($hash->{helper}{locations_id}) );
$uri .= '/sessions' if( not defined($hash->{helper}{session_id}));
$uri .= '/devices' if( not defined($model) and defined($hash->{helper}{locations_id}) );
$uri .= '/devices' if( not defined($abilities) and defined($hash->{helper}{locations_id}) );
}
$uri .= '/sessions' if( not defined($hash->{helper}{session_id}));
if( defined($hash->{helper}{locations_id}) ) {
$uri .= '/devices/' . $deviceId . '/abilities/' . $model . '/command' if( defined($model) and defined($payload) );
$uri .= '/devices/' . $deviceId . '/abilities/' . $abilities . '/command' if( defined($abilities) and defined($payload) );
$uri .= '?locationId=' . $hash->{helper}{locations_id};
}

View File

@ -187,8 +187,10 @@ sub GardenaSmartDevice_Set($@) {
my ($arg, @params) = @args;
my $payload;
my $abilities;
### mower
if( lc $cmd eq 'parkuntilfurthernotice' ) {
$payload = '"name":"park_until_further_notice"';
@ -206,6 +208,7 @@ sub GardenaSmartDevice_Set($@) {
my $duration = join( " ", @args );
$payload = '"name":"start_override_timer","parameters":{"duration":' . $duration . '}';
### watering_computer
} elsif( lc $cmd eq 'manualoverride' ) {
my $duration = join( " ", @args );
@ -215,12 +218,22 @@ sub GardenaSmartDevice_Set($@) {
$payload = '"name":"cancel_override"';
### Sensors
} elsif( lc $cmd eq 'refresh' ) {
my $sensname = join( " ", @args );
$payload = '"name":"measure_ambient_temperature"' if( $sensname eq 'Temperature' );
$payload = '"name":"measure_light"' if( $sensname eq 'Light' );
$payload = '"name":"measure_humidity"' if( $sensname eq 'Humidity' );
if( lc $sensname eq 'temperature' ) {
$payload = '"name":"measure_ambient_temperature"';
$abilities = 'ambient_temperature';
} elsif( lc $sensname eq 'light' ) {
$payload = '"name":"measure_light"';
$abilities = 'light';
} elsif( lc $sensname eq 'humidity' ) {
$payload = '"name":"measure_humidity"';
$abilities = 'humidity';
}
} elsif( lc $cmd eq '' ) {
@ -242,13 +255,17 @@ sub GardenaSmartDevice_Set($@) {
my $list = '';
$list .= 'parkUntilFurtherNotice:noArg parkUntilNextTimer:noArg startResumeSchedule:noArg startOverrideTimer:slider,0,60,1440' if( AttrVal($name,'model','unknown') eq 'mower' );
$list .= 'manualOverride:slider,0,10,240 cancelOverride:noArg' if( AttrVal($name,'model','unknown') eq 'watering_computer' );
$list .= 'refresh:Temperature,Light,Humidity' if( AttrVal($name,'model','unknown') eq 'sensor' );
$list .= 'refresh:temperature,light,humidity' if( AttrVal($name,'model','unknown') eq 'sensor' );
return "Unknown argument $cmd, choose one of $list";
}
IOWrite($hash,$payload,$hash->{DEVICEID},AttrVal($name,'model','unknown'));
Log3 $name, 4, "GardenaSmartBridge ($name) - IOWrite: $payload $hash->{DEVICEID} " . AttrVal($name,'model','unknown') . " IODevHash=$hash->{IODev}";
$abilities = 'mower' if( AttrVal($name,'model','unknown') eq 'mower' );
$abilities = 'outlet' if( AttrVal($name,'model','unknown') eq 'watering_computer' );
IOWrite($hash,$payload,$hash->{DEVICEID},$abilities);
Log3 $name, 4, "GardenaSmartBridge ($name) - IOWrite: $payload $hash->{DEVICEID} $abilities IODevHash=$hash->{IODev}";
return undef;
}