mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-01-31 06:39:11 +00:00
00_SIGNALduino.pm: Updated to version 3.5.5
git-svn-id: https://svn.fhem.de/fhem/trunk@27956 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
12affd16ff
commit
fefd03b3bd
@ -1,5 +1,5 @@
|
||||
# $Id$
|
||||
# v3.5.4 - https://github.com/RFD-FHEM/RFFHEM/tree/master
|
||||
# v3.5.5 - https://github.com/RFD-FHEM/RFFHEM/tree/master
|
||||
# The module is inspired by the FHEMduino project and modified in serval ways for processing the incoming messages
|
||||
# see http://www.fhemwiki.de/wiki/SIGNALDuino
|
||||
# It was modified also to provide support for raw message handling which can be send from the SIGNALduino
|
||||
@ -15,7 +15,8 @@ package main;
|
||||
use strict;
|
||||
use warnings;
|
||||
use Storable qw(dclone);
|
||||
#use version 0.77; our $VERSION = version->declare('v3.5.4');
|
||||
use FHEM::Core::Utils::Math;
|
||||
#use version 0.77; our $VERSION = version->declare('v3.5.5');
|
||||
|
||||
my $missingModulSIGNALduino = ' ';
|
||||
|
||||
@ -37,11 +38,11 @@ use List::Util qw(first);
|
||||
|
||||
#$| = 1; #Puffern abschalten, Hilfreich fuer PEARL WARNINGS Search
|
||||
|
||||
#use Math::Round qw();
|
||||
|
||||
|
||||
|
||||
use constant {
|
||||
SDUINO_VERSION => '3.5.4', # Datum wird automatisch bei jedem pull request aktualisiert
|
||||
SDUINO_VERSION => '3.5.5', # Datum wird automatisch bei jedem pull request aktualisiert
|
||||
SDUINO_INIT_WAIT_XQ => 1.5, # wait disable device
|
||||
SDUINO_INIT_WAIT => 2,
|
||||
SDUINO_INIT_MAXRETRY => 3,
|
||||
@ -253,7 +254,7 @@ my %matchListSIGNALduino = (
|
||||
'14:Dooya' => '^P16#[A-Fa-f0-9]+',
|
||||
'15:SOMFY' => '^Ys[0-9A-F]+',
|
||||
'16:SD_WS_Maverick' => '^P47#[A-Fa-f0-9]+',
|
||||
'17:SD_UT' => '^P(?:14|20|24|26|29|30|34|46|56|68|69|76|78|81|83|86|90|91|91.1|92|93|95|97|99|104|105|114|118|121)#.*', # universal - more devices with different protocols
|
||||
'17:SD_UT' => '^P(?:14|20|24|26|29|30|34|46|56|68|69|76|78|81|83|86|90|91|91.1|92|93|95|97|99|104|105|114|118|121|127|128)#.*', # universal - more devices with different protocols
|
||||
'18:FLAMINGO' => '^P13\.?1?#[A-Fa-f0-9]+', # Flamingo Smoke
|
||||
'19:CUL_WS' => '^K[A-Fa-f0-9]{5,}',
|
||||
'20:Revolt' => '^r[A-Fa-f0-9]{22}',
|
||||
@ -323,7 +324,7 @@ sub SIGNALduino_Initialize {
|
||||
.' doubleMsgCheck_IDs'
|
||||
.' eventlogging:0,1'
|
||||
.' flashCommand'
|
||||
.' hardware:ESP32,ESP32cc1101,ESP8266,ESP8266cc1101,MAPLEMINI_F103CB,MAPLEMINI_F103CBcc1101,nano328,nanoCC1101,miniculCC1101,promini,radinoCC1101'
|
||||
.' hardware:esp32s,esp32cc1101,esp8266s,esp8266cc1101,MAPLEMINI_F103CBs,MAPLEMINI_F103CBcc1101,nano328,nanoCC1101,miniculCC1101,promini8cc1101,promini16cc1101,promini8s,promini16s,radinoCC1101'
|
||||
.' hexFile'
|
||||
.' initCommands'
|
||||
.' longids'
|
||||
@ -389,11 +390,6 @@ sub SIGNALduino_Define {
|
||||
DevIo_CloseDev($hash);
|
||||
my $name = $a[0];
|
||||
|
||||
if (!exists &round)
|
||||
{
|
||||
Log3 $name, 1, "$name: Define, Signalduino can't be activated (sub round not found). Please update Fhem via update command";
|
||||
return ;
|
||||
}
|
||||
|
||||
my $dev = $a[2];
|
||||
#Debug "dev: $dev" if ($debug);
|
||||
@ -644,7 +640,7 @@ sub SIGNALduino_RemoveLaCrossePair {
|
||||
}
|
||||
|
||||
############################# package main, test exists
|
||||
sub SIGNALduino_Set($$@) {
|
||||
sub SIGNALduino_Set {
|
||||
my ($hash,$name, @a) = @_;
|
||||
|
||||
return "\"set SIGNALduino\" needs at least one parameter" if(@a < 1);
|
||||
@ -843,14 +839,14 @@ sub SIGNALduino_Set_sendMsg {
|
||||
return "$hash->{NAME}: sendmsg, unknown protocol: $protocol" if (!$hash->{protocolObject}->protocolExists($protocol));
|
||||
|
||||
$repeats //= 1 ;
|
||||
if (InternalVal($hash->{NAME},'cc1101_available',0))
|
||||
if ( InternalVal($hash->{NAME},'cc1101_available',0) == 1 )
|
||||
{
|
||||
my $f=$hash->{protocolObject}->getProperty($protocol,'frequency');
|
||||
if ( defined $f ) {
|
||||
$frequency = q[F=].$hash->{protocolObject}->getProperty($protocol,'frequency'). q[;]
|
||||
$frequency //= $hash->{protocolObject}->checkProperty($protocol,'frequency',q{});
|
||||
if ( length $frequency > 0 ) {
|
||||
$frequency = q[F=].$frequency.q[;];
|
||||
}
|
||||
}
|
||||
$frequency //= q{};
|
||||
} else { $frequency = q{}; }
|
||||
|
||||
my %signalHash;
|
||||
my %patternHash;
|
||||
my $pattern='';
|
||||
@ -861,7 +857,7 @@ sub SIGNALduino_Set_sendMsg {
|
||||
if (defined($hash->{protocolObject}->getProperty($protocol,'format')) && $hash->{protocolObject}->getProperty($protocol,'format') eq 'manchester')
|
||||
{
|
||||
$clock += $_ for( @{$hash->{protocolObject}->getProperty($protocol,'clockrange')} );
|
||||
$clock = round($clock/2,0);
|
||||
$clock = FHEM::Core::Utils::Math::round($clock/2,0);
|
||||
|
||||
my $intro;
|
||||
my $outro;
|
||||
@ -1007,9 +1003,8 @@ sub SIGNALduino_Set_LaCrossePairForSec {
|
||||
}
|
||||
|
||||
############################# package main, test exists
|
||||
sub SIGNALduino_Get($@) {
|
||||
sub SIGNALduino_Get {
|
||||
my ($hash,$name, @a) = @_;
|
||||
#my $type = $hash->{TYPE};
|
||||
|
||||
return "\"get SIGNALduino\" needs at least one parameter" if(@a < 1);
|
||||
|
||||
@ -1219,7 +1214,7 @@ sub SIGNALduino_CheckccConfResponse {
|
||||
|
||||
if ($msg2 !~ /Modulation:\sASK\/OOK/) {
|
||||
$msg2 .= ", Syncmod: ".$syncmod[($r{"12"})&7]; #Syncmod | Register 0x12
|
||||
$msg2 .= ", Deviation: ".round((8+($r{"15"}&7))*(2**(($r{"15"}>>4)&7)) *26000/(2**17),2) .' kHz'; #Deviation | Register 0x15
|
||||
$msg2 .= ", Deviation: ".FHEM::Core::Utils::Math::round((8+($r{"15"}&7))*(2**(($r{"15"}>>4)&7)) *26000/(2**17),2) .' kHz'; #Deviation | Register 0x15
|
||||
}
|
||||
|
||||
readingsBeginUpdate($_[0]);
|
||||
@ -2102,7 +2097,7 @@ sub SIGNALduino_PatternExists {
|
||||
|
||||
############################# package main
|
||||
#SIGNALduino_MatchSignalPattern{$hash,@array, %hash, @array, $scalar}; not used >v3.1.3
|
||||
sub SIGNALduino_MatchSignalPattern($\@\%\@$){
|
||||
sub SIGNALduino_MatchSignalPattern {
|
||||
my ( $hash, $signalpattern, $patternList, $data_array, $idx) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
#print Dumper($patternList);
|
||||
@ -2149,7 +2144,7 @@ sub SIGNALduino_Split_Message {
|
||||
my $clockabs;
|
||||
my $mcbitnum;
|
||||
my $rssi;
|
||||
|
||||
my $freqafc; ## for AFC cc1101 0x32 (0xF2): FREQEST – Frequency Offset Estimate from Demodulator
|
||||
my @msg_parts = SIGNALduino_splitMsg($rmsg,';'); ## Split message parts by ';'
|
||||
my %ret;
|
||||
my $debug = AttrVal($name,'debug',0);
|
||||
@ -2209,6 +2204,10 @@ sub SIGNALduino_Split_Message {
|
||||
$rssi = $_ ;
|
||||
Debug "$name: extracted RSSI $rssi \n" if ($debug);
|
||||
$ret{rssi} = $rssi;
|
||||
} elsif ($_ =~ m/A=(-?[0-9]{0,3})/ ){
|
||||
# uncoverable branch true
|
||||
Debug qq[$name: extracted FREQEST $1 \n] if ($debug);
|
||||
$ret{freqest} = $1;
|
||||
} else {
|
||||
Debug "$name: unknown Message part $_" if ($debug);;
|
||||
}
|
||||
@ -2221,7 +2220,7 @@ sub SIGNALduino_Split_Message {
|
||||
############################# package main, test exists
|
||||
# Function which dispatches a message if needed.
|
||||
sub SIGNALduno_Dispatch {
|
||||
my ($hash, $rmsg, $dmsg, $rssi, $id) = @_;
|
||||
my ($hash, $rmsg, $dmsg, $rssi, $id, $freqafc) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
|
||||
if (!defined($dmsg))
|
||||
@ -2279,6 +2278,10 @@ sub SIGNALduno_Dispatch {
|
||||
else {
|
||||
$rssi = '';
|
||||
}
|
||||
if(defined($freqafc)) { # AFC cc1101 0x32 (0xF2): FREQEST – Frequency Offset Estimate from Demodulator
|
||||
$addvals{FREQAFC} = $freqafc;
|
||||
}
|
||||
|
||||
$dmsg = lc($dmsg) if ($id eq '74' or $id eq '74.1'); # 10_FS20.pm accepted only lower case hex
|
||||
$hash->{logMethod}->($name, SDUINO_DISPATCH_VERBOSE, "$name: Dispatch, $dmsg, $rssi dispatch");
|
||||
Dispatch($hash, $dmsg, \%addvals); ## Dispatch to other Modules
|
||||
@ -2380,7 +2383,7 @@ sub SIGNALduino_Parse_MS {
|
||||
#Debug 'List of pattern:';
|
||||
my $clockabs= $msg_parts{pattern}{$msg_parts{clockidx}};
|
||||
return if ($clockabs == 0);
|
||||
$patternList{$_} = round($msg_parts{pattern}{$_}/$clockabs,1) for keys %{$msg_parts{pattern}};
|
||||
$patternList{$_} = FHEM::Core::Utils::Math::round($msg_parts{pattern}{$_}/$clockabs,1) for keys %{$msg_parts{pattern}};
|
||||
|
||||
#Debug Dumper(\%patternList);
|
||||
|
||||
@ -2527,7 +2530,7 @@ sub SIGNALduino_Parse_MS {
|
||||
############################# package main
|
||||
## //Todo: check list as reference
|
||||
# // Todo: Make this sub robust and use it
|
||||
sub SIGNALduino_padbits(\@$) {
|
||||
sub SIGNALduino_padbits {
|
||||
my $i=@{$_[0]} % $_[1];
|
||||
while (@{$_[0]} % $_[1] > 0) ## will pad up full nibbles per default or full byte if specified in protocol
|
||||
{
|
||||
@ -2608,10 +2611,10 @@ sub SIGNALduino_Parse_MU {
|
||||
(my $count_changes,$rawData,my %patternListRaw_tmp) = $method->($name,$id,$rawData,%patternListRaw);
|
||||
use strict "refs";
|
||||
|
||||
%patternList = map { $_ => round($patternListRaw_tmp{$_}/$clockabs,1) } keys %patternListRaw_tmp;
|
||||
%patternList = map { $_ => FHEM::Core::Utils::Math::round($patternListRaw_tmp{$_}/$clockabs,1) } keys %patternListRaw_tmp;
|
||||
}
|
||||
} else {
|
||||
%patternList = map { $_ => round($patternListRaw{$_}/$clockabs,1) } keys %patternListRaw;
|
||||
%patternList = map { $_ => FHEM::Core::Utils::Math::round($patternListRaw{$_}/$clockabs,1) } keys %patternListRaw;
|
||||
}
|
||||
|
||||
Debug qq[Testing against protocol id $id -> ]. $hash->{protocolObject}->getProperty($id,'name') if ($debug);
|
||||
@ -2899,7 +2902,7 @@ sub SIGNALduino_Parse_MN {
|
||||
my $hash = shift // return; #return if no hash is provided
|
||||
my $rmsg = shift // return; #return if no rmsg is provided
|
||||
|
||||
if ($rmsg !~ /^MN;D=[0-9A-F]+;(?:R=[0-9]+;)?$/){
|
||||
if ($rmsg !~ /^MN;D=[0-9A-F]+;(?:R=[0-9]+;)?(?:A=-?[0-9]{1,3};)?$/) { # AFC cc1101 0x32 (0xF2): FREQEST – Frequency Offset Estimate from Demodulator
|
||||
$hash->{logMethod}->($hash->{NAME}, 3, qq[$hash->{NAME}: Parse_MN, faulty msg: $rmsg]);
|
||||
return ; # Abort here if not successfull
|
||||
}
|
||||
@ -2911,10 +2914,15 @@ sub SIGNALduino_Parse_MN {
|
||||
my $rawData = _limit_to_hex($msg_parts{rawData}) // $hash->{logMethod}->($hash->{NAME}, 3, qq[$hash->{NAME}: Parse_MN, faulty rawData D=: $msg_parts{rawData}]) // return ;
|
||||
my $rssi;
|
||||
my $rssiStr= '';
|
||||
if ( defined $msg_parts{rssi} ){
|
||||
my $freqafc;
|
||||
if ( exists $msg_parts{rssi} ){
|
||||
$rssi = _limit_to_number($msg_parts{rssi}) // $hash->{logMethod}->($hash->{NAME}, 3, qq[$hash->{NAME}: Parse_MN, faulty rssi R=: $msg_parts{rssi}]) // return ;
|
||||
($rssi,$rssiStr) = SIGNALduino_calcRSSI($rssi);
|
||||
};
|
||||
if ( exists $msg_parts{freqest} ){ #AFC cc1101 0x32 (0xF2): FREQEST – Frequency Offset Estimate from Demodulator
|
||||
$freqafc = $msg_parts{freqest};
|
||||
$freqafc = FHEM::Core::Utils::Math::round((26000000 / 16384 * $freqafc / 1000),0);
|
||||
}
|
||||
my $messagetype=$msg_parts{messagetype};
|
||||
my $name = $hash->{NAME};
|
||||
|
||||
@ -2958,7 +2966,7 @@ sub SIGNALduino_Parse_MN {
|
||||
}
|
||||
$dmsg = sprintf('%s%s',$hash->{protocolObject}->checkProperty($id,'preamble',''),$methodReturn[0]);
|
||||
$hash->{logMethod}->($name, 5, qq[$name: Parse_MN, Decoded matched MN Protocol id $id dmsg=$dmsg $rssiStr]);
|
||||
SIGNALduno_Dispatch($hash,$rmsg,$dmsg,$rssi,$id);
|
||||
SIGNALduno_Dispatch($hash,$rmsg,$dmsg,$rssi,$id,$freqafc);
|
||||
$message_dispatched++;
|
||||
|
||||
}
|
||||
@ -2966,7 +2974,7 @@ sub SIGNALduino_Parse_MN {
|
||||
}
|
||||
|
||||
############################# package main
|
||||
sub SIGNALduino_Parse($$$$@) {
|
||||
sub SIGNALduino_Parse {
|
||||
my ($hash, $iohash, $name, $rmsg, $initstr) = @_;
|
||||
|
||||
#print Dumper(\%ProtocolListSIGNALduino);
|
||||
@ -3069,7 +3077,7 @@ sub SIGNALduino_WriteInit {
|
||||
}
|
||||
|
||||
############################# package main
|
||||
sub SIGNALduino_SimpleWrite(@) {
|
||||
sub SIGNALduino_SimpleWrite {
|
||||
my ($hash, $msg, $nonl) = @_;
|
||||
return if(!$hash);
|
||||
if($hash->{TYPE} eq 'SIGNALduino_RFR') {
|
||||
@ -3091,7 +3099,7 @@ sub SIGNALduino_SimpleWrite(@) {
|
||||
}
|
||||
|
||||
############################# package main
|
||||
sub SIGNALduino_Attr(@) {
|
||||
sub SIGNALduino_Attr {
|
||||
my ($cmd,$name,$aName,$aVal) = @_;
|
||||
my $hash = $defs{$name};
|
||||
my $debug = AttrVal($name,'debug',0);
|
||||
@ -3229,7 +3237,7 @@ sub SIGNALduino_Attr(@) {
|
||||
}
|
||||
|
||||
############################# package main
|
||||
sub SIGNALduino_FW_Detail($@) {
|
||||
sub SIGNALduino_FW_Detail {
|
||||
my ($FW_wname, $name, $room, $pageHash) = @_;
|
||||
|
||||
my $hash = $defs{$name};
|
||||
@ -3342,7 +3350,7 @@ sub SIGNALduino_FW_saveWhitelist {
|
||||
}
|
||||
|
||||
############################# package main - test is missing
|
||||
sub SIGNALduino_IdList($@) {
|
||||
sub SIGNALduino_IdList {
|
||||
my ($param, $aVal, $blacklist, $develop0) = @_;
|
||||
my (undef,$name) = split(':', $param);
|
||||
|
||||
@ -3545,7 +3553,7 @@ sub SIGNALduino_callsub {
|
||||
# Will return $count of ???, modified $rawData , modified %patternListRaw,
|
||||
# =cut
|
||||
############################# package main
|
||||
sub SIGNALduino_filterMC($$$%) {
|
||||
sub SIGNALduino_filterMC {
|
||||
## Warema Implementierung : Todo variabel gestalten
|
||||
my ($name,$id,$rawData,%patternListRaw) = @_;
|
||||
my $hash=$defs{$name};
|
||||
@ -3614,7 +3622,7 @@ sub SIGNALduino_filterMC($$$%) {
|
||||
# Will return $count of combined values, modified $rawData , modified %patternListRaw,
|
||||
# =cut
|
||||
############################# package main
|
||||
sub SIGNALduino_filterSign($$$%) {
|
||||
sub SIGNALduino_filterSign {
|
||||
my ($name,$id,$rawData,%patternListRaw) = @_;
|
||||
my $debug = AttrVal($name,'debug',0);
|
||||
|
||||
@ -3683,7 +3691,7 @@ sub SIGNALduino_filterSign($$$%) {
|
||||
# Will return $count of combined values, modified $rawData , modified %patternListRaw,
|
||||
# =cut
|
||||
############################# package main
|
||||
sub SIGNALduino_compPattern($$$%) {
|
||||
sub SIGNALduino_compPattern {
|
||||
my ($name,$id,$rawData,%patternListRaw) = @_;
|
||||
my $debug = AttrVal($name,'debug',0);
|
||||
|
||||
@ -4181,7 +4189,7 @@ sub CalcDataRate {
|
||||
$DRATE_E = int($DRATE_E);
|
||||
|
||||
my $DRATE_M = (($dr*1000) * (2**28) / (26000000 * (2**$DRATE_E))) - 256;
|
||||
my $DRATE_Mr = main::round($DRATE_M,0);
|
||||
my $DRATE_Mr = FHEM::Core::Utils::Math::round($DRATE_M,0);
|
||||
$DRATE_M = int($DRATE_M);
|
||||
|
||||
my $datarate0 = ( ((256+$DRATE_M)*(2**($DRATE_E & 15 )))*26000000/(2**28) / 1000);
|
||||
@ -4531,6 +4539,8 @@ USB-connected devices (SIGNALduino):<br>
|
||||
<br>Example 4: <code>set sduino raw SN;R=3;D=9A46036AC8D3923EAEB470AB;</code> sends a xFSK message of raw and repeated 3 times
|
||||
<ul><br>
|
||||
<b>note: The wrong use of the upcoming options can lead to malfunctions of the SIGNALduino!</b><br><br>
|
||||
<li>CEA -> Switching on the automatic frequency control for FSK modulation and firmware version >= V 4.0.0 (config: AFC=1)</li>
|
||||
<li>CDA -> Switching off the automatic frequency control for FSK modulation and firmware version >= V 4.0.0 (config: AFC=0)</li>
|
||||
<li>CER -> turn on data compression (config: Mred=1)</li>
|
||||
<li>CDR -> disable data compression (config: Mred=0)</li><br>
|
||||
|
||||
@ -4734,32 +4744,37 @@ USB-connected devices (SIGNALduino):<br>
|
||||
<a name="SIGNALDuino_hardware"></a>
|
||||
<li>hardware<br>
|
||||
Currently, there are serval hardware options with different receiver options available.
|
||||
The simple single wire option, consists of a single wire connected receiver and a single wire connected transmitter which are connected over a single digital port with the microcontroller. The receiver only sends data and the transmitter receives only from the microcontroller.
|
||||
The simple single wire option, consists of a single wire connected receiver and a single wire connected transmitter which are connected over a single digital port with the microcontroller.
|
||||
The receiver only sends data and the transmitter receives only from the microcontroller.
|
||||
The other option consists of the cc1101 (sub 1 GHZ) chip, which can transmit and receiver. It's a transceiver which is connected via spi.
|
||||
ESP8266 hardware type, currently doesn't support flashing out of the modu and needs at leat 1 MB of flash.
|
||||
ESP8266 hardware type, currently doesn't support flashing out of the module and needs at leat 1 MB of flash.
|
||||
<ul>
|
||||
<li>ESP32: ESP32 with simple single wire receiver</li>
|
||||
<li>ESP32cc1101: ESP32 with CC1101 (spi connected) receiver</li>
|
||||
<li>ESP8266: ESP8266 with simple single wire receiver</li>
|
||||
<li>ESP8266cc1101: ESP8266 with CC1101 (spi connected) receiver</li>
|
||||
<li>MAPLEMINI_F103CB: MapleMini F103CB (STM32 family) with simple single wire receiver</li>
|
||||
<li>esp32s: ESP32 with simple single wire receiver</li>
|
||||
<li>esp32cc1101: ESP32 with CC1101 (spi connected) receiver</li>
|
||||
<li>esp8266s: ESP8266 with simple single wire receiver</li>
|
||||
<li>esp8266cc1101: ESP8266 with CC1101 (spi connected) receiver</li>
|
||||
<li>MAPLEMINI_F103CBs: MapleMini F103CB (STM32 family) with simple single wire receiver</li>
|
||||
<li>MAPLEMINI_F103CBcc1101: MapleMini F103CB (STM32 family) with CC1101 (spi connected) receiver</li>
|
||||
<li>miniculCC1101: Arduino pro Mini with CC110x (spi connected) receiver and cables as a minicul</li>
|
||||
<li>nano: Arduino Nano 328 with simple single wired receiver</li>
|
||||
<li>nano328: Arduino Nano 328 with simple single wired receiver</li>
|
||||
<li>nanoCC1101: Arduino Nano 328 with CC110x (spi connected) receiver</li>
|
||||
<li>promini: Arduino Pro Mini 328 with simple single receiver </li>
|
||||
<li>promini8s: Arduino Pro Mini 328 8Mhz with simple single wired receiver</li>
|
||||
<li>promini8cc1101: Arduino Pro Mini 328 8Mhz with CC110x (spi connected) receiver</li>
|
||||
<li>promini16s: Arduino Pro Mini 328 16Mhz with simple single wired receiver</li>
|
||||
<li>promini16cc1101: Arduino Pro Mini 328 16Mhz with CC110x (spi connected) receiver</li>
|
||||
<li>radinoCC1101: Arduino compatible radino with cc1101 (spi connected) receiver</li>
|
||||
</ul>
|
||||
</li><br>
|
||||
<a name="longids"></a>
|
||||
<li>longids<br>
|
||||
Comma separated list of device-types for SIGNALduino that should be handled using long IDs. This additional ID allows it to differentiate some weather sensors, if they are sending on the same channel. Therfor a random generated id is added. If you choose to use longids, then you'll have to define a different device after battery change.<br>
|
||||
Default is to not to use long IDs for all devices.
|
||||
<br><br>
|
||||
Examples:<PRE>
|
||||
# Default, use of long IDs is defined by logical modules. Mostly disabled except for OREGON:
|
||||
deleteattr sduino longids
|
||||
# Do not use any long IDs for any devices:
|
||||
attr sduino longids 0
|
||||
# Use any long IDs for all devices (this is default):
|
||||
# Use any long IDs for all devices:
|
||||
attr sduino longids 1
|
||||
# Use longids for BTHR918N devices.
|
||||
# Will generate devices names like BTHR918N_f3.
|
||||
@ -4818,6 +4833,10 @@ USB-connected devices (SIGNALduino):<br>
|
||||
Modulation 2-FSK, Datarate=17.26 kbps, Sync Word=2DD4, Packet Length= Byte, Frequency 868.35 MHz
|
||||
<ul><small>Example: Thunder and lightning sensor Fine Offset WH57, Froggit DP60, Ambient Weather WH31L</small></ul>
|
||||
</li>
|
||||
<li>Inkbird_IBS-P01R<br>
|
||||
Modulation 2-FSK, Datarate=10.00 kbps, Sync Word=2DD4, Packet Length=18 Byte, Frequency 433.92 MHz
|
||||
<ul><small>Example: Inkbird IBS-P01R pool thermometer, ITH-20R thermometer/hygrometer</small></ul>
|
||||
</li>
|
||||
<li>KOPP_FC<br>
|
||||
modulation GFSK, Datarate=4.7855 kbps, Sync Word=AA54, frequency 868.3MHz
|
||||
</li>
|
||||
@ -5118,6 +5137,8 @@ USB-connected devices (SIGNALduino):<br>
|
||||
|
||||
<ul>
|
||||
<b>Hinweis: Die falsche Benutzung der kommenden Optionen kann zu Fehlfunktionen des SIGNALduinos führen!</b><br><br>
|
||||
<li>CEA -> Einschalten der automatischen Frequenzkontrolle bei FSK-Modulation und Firmwareversion >= V 4.0.0 (config: AFC=1)</li>
|
||||
<li>CDA -> Abschalten der automatischen Frequenzkontrolle bei FSK-Modulation und Firmwareversion >= V 4.0.0 (config: AFC=0)</li>
|
||||
<li>CER -> Einschalten der Datenkomprimierung (config: Mred=1)</li>
|
||||
<li>CDR -> Abschalten der Datenkomprimierung (config: Mred=0)</li><br>
|
||||
<u>Register Befehle bei einem CC1101</u>
|
||||
@ -5318,36 +5339,42 @@ USB-connected devices (SIGNALduino):<br>
|
||||
<a name="SIGNALDuino_hardware"></a>
|
||||
<li>hardware<br>
|
||||
Derzeit mögliche Hardware Varianten mit verschiedenen Empfänger Optionen.
|
||||
Die einfache Variante besteht aus einem Empfänger und einen Sender, die über je eine einzige digitale Signalleitung Datem mit dem Microcontroller austauschen. Der Empfänger sendet dabei und der Sender empfängt dabei ausschließlich.
|
||||
Die einfache Variante besteht aus einem Empfänger und einen Sender, die über je eine einzige digitale Signalleitung Datem mit dem Microcontroller austauschen.
|
||||
Der Empfänger sendet dabei und der Sender empfängt dabei ausschließlich.
|
||||
Weiterhin existiert der den sogenannten cc1101 (sub 1 GHZ) Chip, welche empfangen und senden kann. Dieser wird über die SPI Verbindung angebunden.
|
||||
ESP8266 Hardware Typen, unterstützen derzeit kein flashen aus dem Modul und benötigen mindestens 1 MB Flash Speicher.
|
||||
<ul>
|
||||
<li>ESP32: ESP32 für einfachen eindraht Empfänger</li>
|
||||
<li>ESP32s: ESP32 für einfachen eindraht Empfänger</li>
|
||||
<li>ESP32cc1101: ESP32 mit einem CC110x-Empfänger (SPI Verbindung)</li>
|
||||
<li>ESP8266: ESP8266 für einfachen eindraht Empfänger</li>
|
||||
<li>ESP8266s: ESP8266 für einfachen eindraht Empfänger</li>
|
||||
<li>ESP8266cc1101: ESP8266 mit einem CC110x-Empfänger (SPI Verbindung)</li>
|
||||
<li>MAPLEMINI_F103CB: MapleMini F103CB (STM32) für einfachen eindraht Empfänger</li>
|
||||
<li>MAPLEMINI_F103CBs: MapleMini F103CB (STM32) für einfachen eindraht Empfänger</li>
|
||||
<li>MAPLEMINI_F103CBcc1101: MapleMini F103CB (STM32) mit einem CC110x-Empfänger (SPI Verbindung)</li>
|
||||
<li>miniculCC1101: Arduino pro Mini mit einem CC110x-Empfänger (SPI Verbindung) entsprechend dem minicul verkabelt</li>
|
||||
<li>nano: Arduino Nano 328 für einfachen eindraht Empfänger</li>
|
||||
<li>nano328: Arduino Nano 328 für einfachen eindraht Empfänger</li>
|
||||
<li>nanoCC1101: Arduino Nano für einen CC110x-Empfänger (SPI Verbindung)</li>
|
||||
<li>promini: Arduino Pro Mini 328 für einfachen eindraht Empfänger</li>
|
||||
<li>promini8s: Arduino Pro Mini 328 8Mhz für einfachen eindraht Empfänger</li>
|
||||
<li>promini8cc1101: Arduino Pro Mini 328 8Mhz für einen CC110x-Empfänger (SPI Verbindung)</li>
|
||||
<li>promini16s: Arduino Pro Mini 328 16Mhz für einfachen eindraht Empfänger</li>
|
||||
<li>promini16cc1101: Arduino Pro Mini 328 16Mhz für einen CC110x-Empfänger (SPI Verbindung)</li>
|
||||
<li>radinoCC1101: Ein Arduino kompatibler Radino mit CC110x-Empfänger (SPI Verbindung)</li>
|
||||
</ul><br>
|
||||
Notwendig für den Befehl <code>flash</code>. Hier sollten Sie angeben, welche Hardware Sie mit dem usbport verbunden haben. Andernfalls kann es zu Fehlfunktionen des Geräts kommen. Wichtig ist auch das Attribut <code>updateChannelFW</code><br>
|
||||
</li><br>
|
||||
<a name="longids"></a>
|
||||
<li>longids<br>
|
||||
Durch Komma getrennte Liste von Device-Typen für Empfang von langen IDs mit dem SIGNALduino. Diese zusätzliche ID erlaubt es Wettersensoren, welche auf dem gleichen Kanal senden zu unterscheiden. Hierzu wird eine zufällig generierte ID hinzugefügt. Wenn Sie longids verwenden, dann wird in den meisten Fällen nach einem Batteriewechsel ein neuer Sensor angelegt. Standardmäßig werden keine langen IDs verwendet.<br>
|
||||
Durch Komma getrennte Liste von Device-Typen für Empfang von langen IDs mit dem SIGNALduino. Diese zusätzliche ID erlaubt es Wettersensoren, welche auf dem gleichen Kanal senden zu unterscheiden. Hierzu wird eine zufällig generierte ID hinzugefügt. Wenn Sie longids verwenden, dann wird in den meisten Fällen nach einem Batteriewechsel ein neuer Sensor angelegt.<br>
|
||||
Folgende Module verwenden diese Funktionalität: 14_Hideki, 41_OREGON, 14_CUL_TCM97001, 14_SD_WS07.<br>
|
||||
Beispiele:<PRE>
|
||||
# Keine langen IDs verwenden (Default Einstellung):
|
||||
# Voreinstellung, Nutzung von langen IDs wird durch logische Module definiert. Meist deaktiviert, außer bei OREGON:
|
||||
deleteattr sduino longids
|
||||
# Keine langen IDs verwenden:
|
||||
attr sduino longids 0
|
||||
# Immer lange IDs verwenden:
|
||||
attr sduino longids 1
|
||||
# Verwende lange IDs für SD_WS07 Devices.
|
||||
# Device Namen sehen z.B. so aus: SD_WS07_TH_3.
|
||||
attr sduino longids SD_WS07
|
||||
# Device Namen sehen z.B. so aus: SD_WS07_TH_3
|
||||
attr sduino longids SD_WS07_TH
|
||||
</PRE>
|
||||
</li>
|
||||
<a name="maxMuMsgRepeat"></a>
|
||||
@ -5400,6 +5427,18 @@ USB-connected devices (SIGNALduino):<br>
|
||||
Modulation 2-FSK, Datenrate=17.26 kbps, Sync Word=2DD4, Packet Length=9 Byte, Frequenz 868.35 MHz
|
||||
<ul><small>Beispiel: Gewittersensor Fine Offset WH57, Froggit DP60, Ambient Weather WH31L</small></ul>
|
||||
</li>
|
||||
<li>Fine_Offset_WH31_868<br>
|
||||
Modulation 2-FSK, Datenrate=17.26 kbps, Sync Word=2DD4, Packet Length=11 Byte, Frequenz 868.35 MHz
|
||||
<ul><small>Beispiel: Temperatur-/Feuchtesensor Fine Offset WH31, Froggit DP50, Ambient Weather WH31e/b, Ecowitt wh31</small></ul>
|
||||
</li>
|
||||
<li>Fine_Offset_WH40_868<br>
|
||||
Modulation 2-FSK, Datenrate=17.26 kbps, Sync Word=2DD4, Packet Length=14 Byte, Frequenz 868.35 MHz
|
||||
<ul><small>Beispiel: Regensensor Fine Offset WH40, Ambient Weather WH40, Ecowitt WH40</small></ul>
|
||||
</li>
|
||||
<li>Inkbird_IBS-P01R<br>
|
||||
Modulation 2-FSK, Datenrate=10.00 kbps, Sync Word=2DD4, Packet Length=18 Byte, Frequenz 433.92 MHz
|
||||
<ul><small>Beispiel: Inkbird IBS-P01R Pool Thermometer, ITH-20R Thermo-/Hygrometer</small></ul>
|
||||
</li>
|
||||
<li>KOPP_FC<br>
|
||||
Modulation GFSK, Datenrate=4.7855 kbps, Sync Word=AA54, Frequenz 868.3MHz
|
||||
</li>
|
||||
@ -5599,7 +5638,7 @@ USB-connected devices (SIGNALduino):<br>
|
||||
"web": "https://wiki.fhem.de/wiki/SIGNALduino"
|
||||
}
|
||||
},
|
||||
"version": "v3.5.4"
|
||||
"version": "v3.5.5"
|
||||
}
|
||||
=end :application/json;q=META.json
|
||||
=cut
|
||||
|
Loading…
Reference in New Issue
Block a user