14_SD_WS.pm: protocol 27 / new sensor EFS-3110A

git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@22841 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
sidey79 2020-09-24 21:19:58 +00:00
parent 05d5ffd79a
commit afd6a02006
3 changed files with 40 additions and 12 deletions

View File

@ -1,5 +1,7 @@
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
# Do not insert empty lines here, update check depends on it.
- feature: 14_SD_WS: protocol 27 / new sensor EFS-3110A
- feature: 93_DbRep: sqlCmd supports PREPARE statement, Forum: #114293
- bugfix: 70_BOTVAC: fix processing of set for preferences
- feature: 59_Twilight: remove dependencies to global lon/lat settings;

View File

@ -26,6 +26,7 @@
# 29.12.2019 neues Protokoll 27: Temperatur-/Feuchtigkeitssensor EuroChron EFTH-800
# 09.02.2020 neues Protokoll 54: Regenmesser TFA Drop
# 22.02.2020 Protokoll 58: neuer Sensor TFA 30.3228.02, FT007T Thermometer Sensor
# 25.08.2020 Protokoll 27: neuer Sensor EFS-3110A
package main;
@ -187,8 +188,8 @@ sub SD_WS_Parse($$)
},
27 =>
{
# Protokollbeschreibung: Temperatur-/Feuchtigkeitssensor EuroChron EFTH-800
# -----------------------------------------------------------------------------------
# Protokollbeschreibung: Temperatur-/Feuchtigkeitssensor EuroChron EFTH-800, EFS-3110A
# ------------------------------------------------------------------------------------
# 0 4 | 8 12 | 16 20 | 24 28 | 32 36 | 40 44
# 0000 1001 | 0001 0110 | 0001 0000 | 0000 0000 | 0100 1001 | 0100 0000
# ?ccc iiii | iiii iiii | bstt tttt | tttt ???? | hhhh hhhh | xxxx xxxx
@ -199,11 +200,12 @@ sub SD_WS_Parse($$)
# t: 10 bit unsigned temperature, scaled by 10
# h: 8 bit relative humidity percentage (BCD)
# x: 8 bit CRC8
# ?: unknown (Bit 0, 28-31 always 0 ???)
# ?: unknown (Bit 0, 28-31, always 0000 by EFTH-800, 1000 by EFS-3110A)
# The sensor sends two messages at intervals of about 57-58 seconds
sensortype => 'EFTH-800',
sensortype => 'EFTH-800, EFS-3110A',
model => 'SD_WS_27_TH',
prematch => sub {my $rawData = shift; return 1 if ($rawData =~ /^[0-9A-F]{7}0[0-9]{2}[0-9A-F]{2}$/); }, # prematch 113C49A 0 47 AE
# prematch => sub {my $rawData = shift; return 1 if ($rawData =~ /^[0-9A-F]{7}0[0-9]{2}[0-9A-F]{2}$/); }, # prematch 113C49A 0 47 AE (EFTH-800)
prematch => sub {my $rawData = shift; return 1 if ($rawData =~ /^[0-9A-F]{7}0|8[0-9]{2}[0-9A-F]{2}$/); }, # prematch 3F94519 8 55 C7 (EFS-3110A)
channel => sub {my (undef,$bitData) = @_; return (SD_WS_binaryToNumber($bitData,1,3) + 1 ); },
id => sub {my (undef,$bitData) = @_; return substr($rawData,1,3); },
bat => sub {my (undef,$bitData) = @_; return substr($bitData,16,1) eq "0" ? "ok" : "low";},
@ -1217,7 +1219,7 @@ sub SD_WS_WH2SHIFT($){
<li>Bresser 7009994</li>
<li>BresserTemeo</li>
<li>Conrad S522</li>
<li>EuroChron EFTH-800 (temperature and humidity sensor)</li>
<li>EuroChron EFTH-800, EFS-3110A (temperature and humidity sensor)</li>
<li>NC-3911, NC-3912 refrigerator thermometer</li>
<li>Opus XT300</li>
<li>PV-8644 infactory Poolthermometer</li>
@ -1320,7 +1322,7 @@ sub SD_WS_WH2SHIFT($){
<li>Bresser 7009994</li>
<li>BresserTemeo</li>
<li>Conrad S522</li>
<li>EuroChron EFTH-800 (Temperatur- und Feuchtigkeitssensor)</li>
<li>EuroChron EFTH-800, EFS-3110A (Temperatur- und Feuchtigkeitssensor)</li>
<li>NC-3911, NC-3912 digitales Kuehl- und Gefrierschrank-Thermometer</li>
<li>Opus XT300</li>
<li>PV-8644 infactory Poolthermometer</li>

View File

@ -69,7 +69,7 @@ package lib::SD_ProtocolData;
use strict;
use warnings;
our $VERSION = '1.20';
our $VERSION = '1.21';
our %protocols = (
"0" => ## various weather sensors (500 | 9100)
# Mebus | Id:237 Ch:1 T: 1.9 Bat:low MS;P0=-9298;P1=495;P2=-1980;P3=-4239;D=1012121312131313121313121312121212121212131212131312131212;CP=1;SP=0;R=223;O;m2;
@ -409,7 +409,7 @@ package lib::SD_ProtocolData;
# MU;P0=-96;P1=800;P2=-985;P3=485;P4=1421;P5=-8608;D=0123232323232323242324232324242324232324242324242324232323242324242323232324242424242424242424242424242424242424242424242424242424242424242424242424242424242324242424232323235;CP=4;R=0;
{
name => 'weather',
comment => 'Weatherstation WH1080, WH3080, CTW600',
comment => 'Weatherstation WH1080, WH3080, WH5300SE, CTW600',
id => '9',
knownFreqs => '433.92 | 868.35',
zero => [3,-2],
@ -820,17 +820,18 @@ package lib::SD_ProtocolData;
length_min => '40',
length_max => '40',
},
"27" => ## Temperatur-/Feuchtigkeitssensor EuroChron EFTH-800 (433 MHz)
"27" => ## Temperatur-/Feuchtigkeitssensor EuroChron EFTH-800 (433 MHz) - https://github.com/RFD-FHEM/RFFHEM/issues/739
# SD_WS_27_TH_2 - T: 15.5 H: 48 - MU;P0=-224;P1=258;P2=-487;P3=505;P4=-4884;P5=743;P6=-718;D=0121212301212303030301212123012123012123030123030121212121230121230121212121212121230301214565656561212123012121230121230303030121212301212301212303012303012121212123012123012121212121212123030121;CP=1;R=53;
# SD_WS_27_TH_3 - T: 3.8 H: 76 - MU;P0=-241;P1=251;P2=-470;P3=500;P4=-4868;P5=743;P6=-718;D=012121212303030123012301212123012121212301212303012121212121230303012303012123030303012123014565656561212301212121230303012301230121212301212121230121230301212121212123030301230301212303030301212301;CP=1;R=23;
# SD_WS_27_TH_3 - T: 5.3 H: 75 - MU;P0=-240;P1=253;P2=-487;P3=489;P4=-4860;P5=746;P6=-725;D=012121212303030123012301212123012121212303012301230121212121230303012301230303012303030301214565656561212301212121230303012301230121212301212121230301230123012121212123030301230123030301230303030121;CP=1;R=19;
# Eurochron Zusatzsensor fuer EFS-3110A - https://github.com/RFD-FHEM/RFFHEM/issues/889
# short pulse of 244 us followed by a 488 us gap is a 0 bit
# long pulse of 488 us followed by a 244 us gap is a 1 bit
# sync preamble of pulse, gap, 732 us each, repeated 4 times
# sensor sends two messages at intervals of about 57-58 seconds
{
name => 'EFTH-800',
comment => 'EuroChron weatherstation EFTH-800',
comment => 'EuroChron weatherstation EFTH-800, EFS-3110A',
id => '27',
knownFreqs => '433.92',
one => [2,-1],
@ -2677,6 +2678,29 @@ package lib::SD_ProtocolData;
length_min => '16',
length_max => '16',
},
"105" => # Remote control BF-301 from Shenzhen BOFU Mechanic & Electronic Co., Ltd.
# Protocol description found on https://github.com/akirjavainen/markisol/blob/master/Markisol.ino
# original remotes repeat 8 (multi) or 10 (single) times by default
# https://github.com/RFD-FHEM/RFFHEM/issues/861 stsirakidis 2020-06-27
# BF_301_FAD0 down MU;P0=-697;P1=5629;P2=291;P3=3952;P4=-2459;P5=1644;P6=-298;P7=689;D=34567676767676207620767620762020202076202020762020207620202020207676762076202020767614567676767676207620767620762020202076202020762020207620202020207676762076202020767614567676767676207620767620762020202076202020762020207620202020207676762076202020767614;CP=2;R=41;O;
# BF_301_FAD0 stop MU;P0=5630;P1=3968;P2=-2458;P3=1642;P4=-285;P5=690;P6=282;P7=-704;D=12345454545454675467545467546767676754676767546754675467676767675454546754676767675402345454545454675467545467546767676754676767546754675467676767675454546754676767675402345454545454675467545467546767676754676767546754675467676767675454546754676767675402;CP=6;R=47;O;
# BF_301_FAD0 up MU;P0=-500;P1=5553;P2=-2462;P3=1644;P4=-299;P5=679;P6=298;P7=-687;D=01234545454545467546754546754676767675467676767675454546767676767545454675467546767671234545454545467546754546754676767675467676767675454546767676767545454675467546767671234545454545467546754546754676767675467676767675454546767676767545454675467546767671;CP=6;R=48;O;
{
name => 'BF-301',
comment => 'Remote control',
id => '105',
knownFreqs => '433.92',
one => [2,-1], # 660,-330
zero => [1,-2], # 330,-660
start => [17,-7,5,-1], # 5610,-2310,1650,-330
clockabs => 330,
format => 'twostate',
clientmodule => 'SD_UT',
modulematch => '^P105#',
preamble => 'P105#',
length_min => '40',
length_max => '40',
},
########################################################################
#### ### old information from incomplete implemented protocols #### ####
@ -2713,4 +2737,4 @@ package lib::SD_ProtocolData;
sub getProtocolList {
return \%protocols;
}
}
}