diff --git a/FHEM/71_XiaomiSmartHome.pm b/FHEM/71_XiaomiSmartHome.pm index e1d0561..98ccaaa 100644 --- a/FHEM/71_XiaomiSmartHome.pm +++ b/FHEM/71_XiaomiSmartHome.pm @@ -50,7 +50,7 @@ use SetExtensions; sub XiaomiSmartHome_Notify($$); sub XiaomiSmartHome_updateSingleReading($$); my $iv="\x17\x99\x6d\x09\x3d\x28\xdd\xb3\xba\x69\x5a\x2e\x6f\x58\x56\x2e"; -my $version = "1.18"; +my $version = "1.19"; my %XiaomiSmartHome_gets = ( "getDevices" => ["get_id_list", '^.+get_id_list_ack' ], diff --git a/FHEM/71_XiaomiSmartHome_Device.pm b/FHEM/71_XiaomiSmartHome_Device.pm index 818cf46..dd36e59 100644 --- a/FHEM/71_XiaomiSmartHome_Device.pm +++ b/FHEM/71_XiaomiSmartHome_Device.pm @@ -26,7 +26,7 @@ use strict; use warnings; -my $version = "1.18"; +my $version = "1.19"; sub XiaomiSmartHome_Device_updateSReading($); @@ -243,24 +243,30 @@ sub XiaomiSmartHome_Device_Read($$$){ readingsBulkUpdate($hash, "battery_level", $bat, 1 ); } if (defined $data->{temperature}){ - my $temp = sprintf( "%#.4d", $data->{temperature}); - $temp =~ s/(^[-+]?\d+?(?=(?>(?:\d{2})+)(?!\d))|\G\d{3}(?=\d))/$1./g; - $temp = XiaomiSmartHome_round($temp, $XMIround_tmp, $name ); - Log3 $name, 3, "$name: DEV_Read>" . " Name: " . $hash->{NAME} . " SID: " . $sid . " Type: " . $hash->{MODEL} . " Temperature: " . $temp . " Round: " . $XMIround_tmp; - readingsBulkUpdate($hash, "temperature", "$temp", 1 ); + if ($data->{temperature} ne "10000"){ + my $temp = sprintf( "%#.4d", $data->{temperature}); + $temp =~ s/(^[-+]?\d+?(?=(?>(?:\d{2})+)(?!\d))|\G\d{3}(?=\d))/$1./g; + $temp = XiaomiSmartHome_round($temp, $XMIround_tmp, $name ); + Log3 $name, 3, "$name: DEV_Read>" . " Name: " . $hash->{NAME} . " SID: " . $sid . " Type: " . $hash->{MODEL} . " Temperature: " . $temp . " Round: " . $XMIround_tmp; + readingsBulkUpdate($hash, "temperature", "$temp", 1 ); + } } if (defined $data->{humidity}){ - my $hum = $data->{humidity}; - $hum =~ s/(^[-+]?\d+?(?=(?>(?:\d{2})+)(?!\d))|\G\d{2}(?=\d))/$1./g; - $hum = XiaomiSmartHome_round($hum, $XMIround_hum, $name ); - Log3 $name, 3, "$name: DEV_Read>" . " Name: " . $hash->{NAME} . " SID: " . $sid . " Type: " . $hash->{MODEL} . " Humidity: " . $hum . " Round: " . $XMIround_hum; - readingsBulkUpdate($hash, "humidity", "$hum", 1 ); + if ($data->{humidity} ne "0"){ + my $hum = $data->{humidity}; + $hum =~ s/(^[-+]?\d+?(?=(?>(?:\d{2})+)(?!\d))|\G\d{2}(?=\d))/$1./g; + $hum = XiaomiSmartHome_round($hum, $XMIround_hum, $name ); + Log3 $name, 3, "$name: DEV_Read>" . " Name: " . $hash->{NAME} . " SID: " . $sid . " Type: " . $hash->{MODEL} . " Humidity: " . $hum . " Round: " . $XMIround_hum; + readingsBulkUpdate($hash, "humidity", "$hum", 1 ); + } } if (defined $data->{pressure}){ - my $pres = $data->{pressure}; - $pres =~ s/(^[-+]?\d+?(?=(?>(?:\d{3})+)(?!\d))|\G\d{3}(?=\d))/$1./g; - Log3 $name, 3, "$name: DEV_Read>" . " Name: " . $hash->{NAME} . " SID: " . $sid . " Type: " . $hash->{MODEL} . " Pressure: " . $pres; - readingsBulkUpdate($hash, "pressure", "$pres", 1 ); + if ($data->{pressure} ne "0"){ + my $pres = $data->{pressure}; + $pres =~ s/(^[-+]?\d+?(?=(?>(?:\d{3})+)(?!\d))|\G\d{3}(?=\d))/$1./g; + Log3 $name, 3, "$name: DEV_Read>" . " Name: " . $hash->{NAME} . " SID: " . $sid . " Type: " . $hash->{MODEL} . " Pressure: " . $pres; + readingsBulkUpdate($hash, "pressure", "$pres", 1 ); + } } if (defined $data->{lux}){ my $lux = $data->{lux}; diff --git a/controls_mish.txt b/controls_mish.txt index 16c3bf5..9d2ed06 100644 --- a/controls_mish.txt +++ b/controls_mish.txt @@ -1,2 +1,2 @@ -UPD 2017-12_08_13:29:11 36907 FHEM/71_XiaomiSmartHome.pm -UPD 2017-12-08_13:28:54 26468 FHEM/71_XiaomiSmartHome_Device.pm +UPD 2017-12_08_08:06:18 36907 FHEM/71_XiaomiSmartHome.pm +UPD 2017-12-13_08:02:11 26609 FHEM/71_XiaomiSmartHome_Device.pm