add support

-add support for sensor Singel Rocker
-add support for sensor Double Rocker
-add support for sensor Wirless Mini Switch
-add function for reconnect if disconnected
This commit is contained in:
2018-11-24 00:00:42 +01:00
parent d3d96436a2
commit fbd347aae3
3 changed files with 31 additions and 9 deletions

View File

@@ -51,7 +51,7 @@ sub XiaomiSmartHome_Notify($$);
sub XiaomiSmartHome_updateSingleReading($$); sub XiaomiSmartHome_updateSingleReading($$);
my $iv="\x17\x99\x6d\x09\x3d\x28\xdd\xb3\xba\x69\x5a\x2e\x6f\x58\x56\x2e"; my $iv="\x17\x99\x6d\x09\x3d\x28\xdd\xb3\xba\x69\x5a\x2e\x6f\x58\x56\x2e";
my $version = "1.33"; my $version = "1.36";
my %XiaomiSmartHome_gets = ( my %XiaomiSmartHome_gets = (
"getDevices" => ["get_id_list", '^.+get_id_list_ack' ], "getDevices" => ["get_id_list", '^.+get_id_list_ack' ],
@@ -76,7 +76,7 @@ my %sets = (
sub XiaomiSmartHome_Initialize($) { sub XiaomiSmartHome_Initialize($) {
my ($hash) = @_; my ($hash) = @_;
$hash->{Clients} = "XiaomiSmartHome_Device"; $hash->{Clients} = 'XiaomiSmartHome_Device';
$hash->{DefFn} = 'XiaomiSmartHome_Define'; $hash->{DefFn} = 'XiaomiSmartHome_Define';
$hash->{UndefFn} = 'XiaomiSmartHome_Undef'; $hash->{UndefFn} = 'XiaomiSmartHome_Undef';
$hash->{NotifyFn} = 'XiaomiSmartHome_Notify'; $hash->{NotifyFn} = 'XiaomiSmartHome_Notify';
@@ -84,8 +84,9 @@ sub XiaomiSmartHome_Initialize($) {
$hash->{GetFn} = 'XiaomiSmartHome_Get'; $hash->{GetFn} = 'XiaomiSmartHome_Get';
$hash->{AttrFn} = 'XiaomiSmartHome_Attr'; $hash->{AttrFn} = 'XiaomiSmartHome_Attr';
$hash->{ReadFn} = 'XiaomiSmartHome_Read'; $hash->{ReadFn} = 'XiaomiSmartHome_Read';
$hash->{WriteFn} = "XiaomiSmartHome_Write"; $hash->{ReadyFn} = 'XiaomiSmartHome_Ready';
$hash->{AttrList} = "disable:1,0 " . $hash->{WriteFn} = 'XiaomiSmartHome_Write';
$hash->{AttrList} = 'disable:1,0 ' .
$readingFnAttributes; $readingFnAttributes;
$hash->{MatchList} = { "1:XiaomiSmartHome_Device" => ".*magnet.*", $hash->{MatchList} = { "1:XiaomiSmartHome_Device" => ".*magnet.*",
@@ -108,7 +109,10 @@ sub XiaomiSmartHome_Initialize($) {
"18:XiaomiSmartHome_Device" => "^.+weather.v1", "18:XiaomiSmartHome_Device" => "^.+weather.v1",
"19:XiaomiSmartHome_Device" => "^.+sensor_motion.aq2", "19:XiaomiSmartHome_Device" => "^.+sensor_motion.aq2",
"20:XiaomiSmartHome_Device" => "^.+sensor_wleak.aq1", "20:XiaomiSmartHome_Device" => "^.+sensor_wleak.aq1",
"21:XiaomiSmartHome_Device" => "^.+vibration"}; "21:XiaomiSmartHome_Device" => "^.+vibration",
"22:XiaomiSmartHome_Device" => "^.*b186acn01",
"23:XiaomiSmartHome_Device" => "^.*b286acn01",
"24:XiaomiSmartHome_Device" => "^.*b1acn01"};
FHEM_colorpickerInit(); FHEM_colorpickerInit();
} }
##################################### #####################################
@@ -563,6 +567,22 @@ sub XiaomiSmartHome_EncryptKey($)
} }
##################################### #####################################
sub XiaomiSmartHome_Ready($)
{
my ($hash) = @_;
# Versuch eines Verbindungsaufbaus, sofern die Verbindung beendet ist.
return DevIo_OpenDev($hash, 1, undef ) if ( $hash->{STATE} eq "disconnected" );
# This is relevant for Windows/USB only
if(defined($hash->{USBDev})) {
my $po = $hash->{USBDev};
my ( $BlockingFlags, $InBytes, $OutBytes, $ErrorFlags ) = $po->status;
return ( $InBytes > 0 );
}
}
#####################################
sub XiaomiSmartHome_Get($@) sub XiaomiSmartHome_Get($@)
{ {
my ($hash , $name, $opt, $args ) = @_; my ($hash , $name, $opt, $args ) = @_;
@@ -1090,3 +1110,4 @@ sub XiaomiSmartHome_updateAllReadings($)
=cut =cut

View File

@@ -27,7 +27,7 @@ use warnings;
my $version = "1.33"; my $version = "1.36";
sub XiaomiSmartHome_Device_updateSReading($); sub XiaomiSmartHome_Device_updateSReading($);
@@ -38,7 +38,7 @@ sub XiaomiSmartHome_Device_Initialize($)
{ {
my ($hash) = @_; my ($hash) = @_;
$hash->{Match} = ".*magnet.*|.*motion.*|sensor_ht|.*switch.*|plug|.*cube.*|86sw1|86sw2|ctrl_neutral1|ctrl_neutral2|rgbw_light|curtain|ctrl_ln1|ctrl_ln2|86plug|natgas|smoke|weather.v1|sensor_wleak.aq1|vibration"; $hash->{Match} = ".*magnet.*|.*motion.*|sensor_ht|.*switch.*|plug|.*cube.*|86sw1|86sw2|ctrl_neutral1|ctrl_neutral2|rgbw_light|curtain|ctrl_ln1|ctrl_ln2|86plug|natgas|smoke|weather.v1|sensor_wleak.aq1|vibration|remote.b186acn01|remote.b286acn01|remote.b1acn01";
$hash->{DefFn} = "XiaomiSmartHome_Device_Define"; $hash->{DefFn} = "XiaomiSmartHome_Device_Define";
$hash->{SetFn} = "XiaomiSmartHome_Device_Set"; $hash->{SetFn} = "XiaomiSmartHome_Device_Set";
$hash->{UndefFn} = "XiaomiSmartHome_Device_Undef"; $hash->{UndefFn} = "XiaomiSmartHome_Device_Undef";
@@ -739,3 +739,4 @@ sub XiaomiSmartHome_round {
=end html_DE =end html_DE
=cut =cut

View File

@@ -1,2 +1,2 @@
UPD 2018-09-09 12:43:14 39606 FHEM/71_XiaomiSmartHome.pm UPD 2018-11-23 23:51:54 40279 FHEM/71_XiaomiSmartHome.pm
UPD 2018-09-09 12:43:16 29789 FHEM/71_XiaomiSmartHome_Device.pm UPD 2018-11-23 23:51:53 29839 FHEM/71_XiaomiSmartHome_Device.pm