new set command

This commit is contained in:
Marko Oldenburg 2017-02-13 21:36:50 +01:00
parent c1e5bc105f
commit dc86807fba

View File

@ -229,14 +229,21 @@ sub XiaomiFlowerSens_stateRequestTimer($) {
sub XiaomiFlowerSens_Set($$@) { sub XiaomiFlowerSens_Set($$@) {
my ($hash, $name, @aa) = @_; my ($hash, $name, @aa) = @_;
my ($cmd, $arg) = @aa; my ($cmd, @args) = @aa;
my $action;
if( $cmd eq 'statusRequest' ) { if( $cmd eq 'statusRequest' ) {
return "usage: statusRequest" if( @args != 0 );
XiaomiFlowerSens_stateRequest($hash); XiaomiFlowerSens_stateRequest($hash);
} elsif( $cmd eq 'clearFirmwareReading' ) {
return "usage: clearFirmwareReading" if( @args != 0 );
readingsSingleUpdate($hash,'firmware','',0);
} else { } else {
my $list = "statusRequest:noArg"; my $list = "statusRequest:noArg clearFirmwareReading:noArg";
return "Unknown argument $cmd, choose one of $list"; return "Unknown argument $cmd, choose one of $list";
} }
@ -252,13 +259,13 @@ sub XiaomiFlowerSens_Run($) {
my $wfr; my $wfr;
if( ReadingsVal($name, "firmware", 0) eq "2.6.2" ) { if( ReadingsVal($name, 'firmware', '') eq "2.6.2" ) {
$wfr = 0; $wfr = 0;
} else { } else {
$wfr = 1; $wfr = 1;
} }
my $response_encode = XiaomiFlowerSens_forRun_encodeJSON($mac,$wfr); my $response_encode = XiaomiFlowerSens_forRun_encodeJSON($mac,$wfr);
$hash->{helper}{RUNNING_PID} = BlockingCall("XiaomiFlowerSens_BlockingRun", $name."|".$response_encode, "XiaomiFlowerSens_BlockingDone", 30, "XiaomiFlowerSens_BlockingAborted", $hash) unless(exists($hash->{helper}{RUNNING_PID})); $hash->{helper}{RUNNING_PID} = BlockingCall("XiaomiFlowerSens_BlockingRun", $name."|".$response_encode, "XiaomiFlowerSens_BlockingDone", 30, "XiaomiFlowerSens_BlockingAborted", $hash) unless(exists($hash->{helper}{RUNNING_PID}));
@ -358,15 +365,16 @@ sub XiaomiFlowerSens_callGatttool($@) {
#### Read Sensor Data #### Read Sensor Data
## support for Firmware 2.6.6, man muß erst einen Characterwert schreiben ## support for Firmware 2.6.6, man muß erst einen Characterwert schreiben
Log3 $name, 5, "Sub XiaomiFlowerSens_callGatttool ($name) - WFR: $wfr";
if($wfr == 1) { if($wfr == 1) {
$loop = 0; $loop = 0;
do { do {
$wresp = qx(gatttool -i $hci -b $mac --char-write-req -a 0x33 -n A01F 2>&1 /dev/null) if($wfr == 1); $wresp = qx(gatttool -i $hci -b $mac --char-write-req -a 0x33 -n A01F 2>&1 /dev/null);
$loop++; $loop++;
Log3 $name, 4, "Sub XiaomiFlowerSens_callGatttool ($name) - call gatttool charWrite loop $loop"; Log3 $name, 4, "Sub XiaomiFlowerSens_callGatttool ($name) - call gatttool charWrite loop $loop";
Log3 $name, 4, "Sub XiaomiFlowerSens_callGatttool ($name) - charWrite wresp: $wresp" if(defined($wresp)); Log3 $name, 4, "Sub XiaomiFlowerSens_callGatttool ($name) - charWrite wresp: $wresp" if(defined($wresp) and ($wresp) );
} while( ($loop < 10) and (not $wresp =~ /^Characteristic value was written successfully$/) ); } while( ($loop < 10) and (not $wresp =~ /^Characteristic value was written successfully$/) );
} }
@ -571,6 +579,7 @@ sub XiaomiFlowerSens_BlockingAborted($) {
<b>Set</b> <b>Set</b>
<ul> <ul>
<li>statusRequest - retrieves the current state of the Xiaomi Flower Monitor.</li> <li>statusRequest - retrieves the current state of the Xiaomi Flower Monitor.</li>
<li>clearFirmwareReading - clear firmware reading for new begin.</li>
<br> <br>
</ul> </ul>
<br><br> <br><br>