get devicename, get firmware

This commit is contained in:
Marko Oldenburg 2018-01-19 15:39:57 +01:00
parent 42f412c007
commit c2f3bfb90a

View File

@ -49,7 +49,7 @@ use JSON;
use Blocking;
my $version = "0.0.5";
my $version = "0.0.11";
@ -57,7 +57,8 @@ my $version = "0.0.5";
my %gatttChar = (
'devicename' => '0x3',
'battery' => '0x3f',
'payload' => '0x3d'
'payload' => '0x3d',
'firmware' => '0x18'
);
my %CallBatteryAge = ( '8h' => 28800,
@ -97,6 +98,8 @@ sub CometBlueBTLE_CreateDevicenameHEX($);
sub CometBlueBTLE_HandlePayload($$);
sub CometBlueBTLE_HandleBattery($$);
sub CometBlueBTLE_HandleFirmware($$);
sub CometBlueBTLE_HandleDevicename($$);
@ -282,7 +285,7 @@ sub CometBlueBTLE_stateRequest($) {
if( !IsDisabled($name) ) {
#if( ReadingsVal($name,'firmware','none') ne 'none' ) {
if( ReadingsVal($name,'firmware','none') ne 'none' ) {
return CometBlueBTLE_CreateParamGatttool($hash,'read',$gatttChar{'battery'})
if( CometBlueBTLE_CallBattery_IsUpdateTimeAgeToOld($hash,$CallBatteryAge{AttrVal($name,'BatteryFirmwareAge','24h')}) );
@ -298,10 +301,10 @@ sub CometBlueBTLE_stateRequest($) {
# return;
#}
#} else {
} else {
# CometBlueBTLE_CreateParamGatttool($hash,'read',$XiaomiModels{AttrVal($name,'model','')}{firmware});
#}
CometBlueBTLE_CreateParamGatttool($hash,'read',$gatttChar{'firmware'});
}
} else {
readingsSingleUpdate($hash,"state","disabled",1);
@ -340,14 +343,15 @@ sub CometBlueBTLE_Set($$@) {
my $handle;
my $value = 'write';
if( $cmd eq 'devicename' ) {
return "usage: devicename <name>" if( @args < 1 );
if( $cmd eq 'desired-temp' ) {
return "usage: desired-temp <name>" if( @args < 1 );
#my $devicename = join( " ", @args );
#$mod = 'write'; $handle = $XiaomiModels{AttrVal($name,'model','')}{devicename}; $value = CometBlueBTLE_CreateDevicenameHEX(makeDeviceName($devicename));
#my $devicename = join( " ", @args);
$mod = 'write'; $handle = $gatttChar{'payload'};
$value =;
} else {
my $list = "";
my $list = ""; #desired-temp:on,off,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30
return "Unknown argument $cmd, choose one of $list";
}
@ -374,7 +378,7 @@ sub CometBlueBTLE_Get($$@) {
} elsif( $cmd eq 'firmware' ) {
return "usage: firmware" if( @args != 0 );
$mod = 'read'; $handle = 'test';
$mod = 'read'; $handle = $gatttChar{'firmware'};
} elsif( $cmd eq 'devicename' ) {
return "usage: devicename" if( @args != 0 );
@ -382,7 +386,7 @@ sub CometBlueBTLE_Get($$@) {
$mod = 'read'; $handle = $gatttChar{'devicename'};
} else {
my $list = "temperatures:noArg";
my $list = "temperatures:noArg devicename:noArg firmware:noArg";
return "Unknown argument $cmd, choose one of $list";
}
@ -588,6 +592,18 @@ sub CometBlueBTLE_ProcessingNotification($@) {
Log3 $name, 3, "CometBlueBTLE ($name) - ProcessingNotification: handle $gatttChar{'payload'}";
$readings = CometBlueBTLE_HandlePayload($hash,$notification);
} elsif( $handle eq $gatttChar{'firmware'} ) {
### firmware abrufen
Log3 $name, 3, "CometBlueBTLE ($name) - ProcessingNotification: handle $gatttChar{'firmware'}";
$readings = CometBlueBTLE_HandleFirmware($hash,$notification);
} elsif( $handle eq $gatttChar{'devicename'} ) {
### firmware abrufen
Log3 $name, 3, "CometBlueBTLE ($name) - ProcessingNotification: handle $gatttChar{'devicename'}";
$readings = CometBlueBTLE_HandleDevicename($hash,$notification);
}
@ -595,7 +611,7 @@ sub CometBlueBTLE_ProcessingNotification($@) {
}
sub CometBlueBTLE_HandleBattery($$) {
### FlowerSens - Read Firmware and Battery Data
### Read Battery Data
my ($hash,$notification) = @_;
my $name = $hash->{NAME};
@ -613,7 +629,7 @@ sub CometBlueBTLE_HandleBattery($$) {
}
sub CometBlueBTLE_HandlePayload($$) {
### Flower Sens - Read Sensor Data
### Read Payload Data
my ($hash,$notification) = @_;
my $name = $hash->{NAME};
@ -648,6 +664,38 @@ sub CometBlueBTLE_HandlePayload($$) {
return \%readings;
}
sub CometBlueBTLE_HandleFirmware($$) {
### Read Firmware Data
my ($hash,$notification) = @_;
my $name = $hash->{NAME};
my %readings;
Log3 $name, 3, "CometBlueBTLE ($name) - FlowerSens handle $gatttChar{'firmware'}";
$readings{'firmware'} = pack('H*'.$notification);
$hash->{helper}{CallBattery} = 0;
return \%readings;
}
sub CometBlueBTLE_HandleDevicename($$) {
### Read Devicename Data
my ($hash,$notification) = @_;
my $name = $hash->{NAME};
my %readings;
Log3 $name, 3, "CometBlueBTLE ($name) - FlowerSens handle $gatttChar{'devicename'}";
$readings{'devicename'} = pack('H*'.$notification);
$hash->{helper}{CallBattery} = 0;
return \%readings;
}
sub CometBlueBTLE_WriteReadings($$) {
my ($hash,$readings) = @_;
@ -744,6 +792,21 @@ sub CometBlueBTLE_ConvertPintoHexLittleEndian($) {
#my $pinHexLittleEndian;
}
sub CometBlueBTLE_CreatePayloadString($$) {
my ($setCmd,$value) = @_;
sprintf('%.2x',ReadingsVal($name,'measured-temp',0)*2)
sprintf('%.2x',$value*2)
sprintf('%.2x',ReadingsVal($name,'tempEco',0)*2)
sprintf('%.2x',ReadingsVal($name,'tempComfort',0)*2)
sprintf('%.2x',ReadingsVal($name,'tempOffset',0))
sprintf('%.2x',ReadingsVal($name,'winOpnState',0))
sprintf('%.2x',ReadingsVal($name,'winOpnPeriod',0))
}