Coder Social home page Coder Social logo

rffhem's People

Contributors

habeichvergessen avatar hjgode avatar homeautouser avatar jarnsen avatar kolbi avatar pejonp avatar ralf9 avatar sidey79 avatar wexstorm avatar

Stargazers

 avatar

Watchers

 avatar  avatar

rffhem's Issues

Optimierungen an der sub SIGNALduino_Parse_MU()

prüfen ob die clock in der Toleranz ist

Am Anfang direkt nach der filterfunc

wird geprüft ob in clockpos ein String ungleich one oder zero (z.B. cp) enthalten ist.
Dann wird geprüft ob die in CP ausgegebene clock in der Toleranz ist.

		$msgclock = $msg_parts{pattern}{$msg_parts{clockidx}};
		if (!SIGNALduino_inTol($clockabs,$msgclock,$msgclock*0.30)) {
			next;
		}

Testen ob one in der patternList ist
next if (($pstr=SIGNALduino_PatternExists($hash,\@{$ProtocolListSIGNALduino{$id}{one}},\%patternList,\$rawData)) eq -1);
Wenn in clockpos one steht, dann wird getestet ob die im one Array enthaltene Clock in der Toleranz ist.

Testen ob zero im Protokoll definiert ist und in der patternList enthalten ist.
Wenn in clockpos zero steht, dann wird getestet ob die im zero Array enthaltene Clock in der Toleranz ist.

Anpassungen und Erweiterungen der 00_SIGNALduino.pm

Bei meiner Variante der 00_SIGNALduino.pm habe ich die folgenden Anpassungen und Erweiterungen eingebaut die nicht in der offiziellen Version drin sind.
Die 00_SIGNALduino.pm ist auf meine alternative Firmware ab V 3.3.2.1 und ab V 4.x.x optimiert.

Dies ist keine offizielle Version, es ist eine private Entwicklung von mir.
Bei Fragen oder Probleme
https://forum.fhem.de/index.php/topic,111653.msg1058900.html#msg1058900

Ein update auf meine Variante der 00_SIGNALduino.pm kann gemacht werden mit:
update all https://raw.githubusercontent.com/Ralf9/RFFHEM/master/controls_signalduino.txt
oder die aktuelle Version
update all https://raw.githubusercontent.com/Ralf9/RFFHEM/dev/controls_dev_ralf9_signalduino.txt

oder,
die 00_SIGNALduino.pm ins FHEM Verzeichnis kopieren
https://raw.githubusercontent.com/Ralf9/RFFHEM/master/FHEM/00_SIGNALduino.pm
und die signalduino_protocols.pm ins lib Verzeichnis kopieren
https://raw.githubusercontent.com/Ralf9/RFFHEM/master/FHEM/lib/signalduino_protocols.pm
und dann fhem neustarten

Optimierung für den Hideki Temperatur- und Feuchtigkeits Sensor (ID 12),

Es gibt ein neues Internal "versionprotoL" für das Datum der letzten Änderung des Protocolhash

SIGNALduino_Parse_MU, prüfen ob clock in der Toleranz ist (28.10.18 )
Es gibt dafür in der Protocollist einen neuen Eintrag clockpos
z.B. clockpos => ['cp'] oder clockpos => ['one',0],
#1

SIGNALduino_Read(), MU-Overflow (16.12.18 ) (ist bei der firmware V 4.x nicht mehr notwendig)
Damit können bei komprimierten MU-Nachrichten bei einem Überlauf auch die restlichen Daten übertragen werden. 21ee442
Dazu ist meine firmware ab V 3.3.2.1-rc8 notwendig.

Beim Protocollhash gibt es eine neue Kategorie changed
Damit sind Änderungen im Protocolhash besser nachvollziehbar
z.B.

20181219 new
20181204 new, old move to ID 33
20181216 move from ID 38

Im Information menu gibt es einen neuen Eintrag Display protocollist changes since days, damit können die Protokoll IDs mit "changed" Einträgen seit den letzten x Tagen angezeigt werden.

Parse_MS und Parse_MU reconstruct last bit (ist inzwischen auch im dev-r34)
Wenn in der Protokolldefinition reconstructBit => 1 steht, dann wird das letzte Bit, falls der Rest fehlt, rekonstruiert.

bei dispatch, bei addvals die ID zugefügt (03.02.19 )
Im logischen Modul wird nun beim Device bei den Internals auch die ID angezeigt.

Bei der sub SIGNALduino_Parse wird nun beim Dummy in den Internals keine unknownmessages mehr angelegt,
ca214dd

get availableFirmware (10.02.19)
Im Attribut updateChannelFW kann nun für get availableFirmware ein anderer Github Accout als RFD-FHEM eingetragen werden. e114fec
Z.B. bei updateChannelFW Ralf9 wird bei get availableFirmware dies verwendet:
https://github.com/Ralf9/SIGNALDuino/releases

bei set und get unnötige Befehle ausblenden (16.02.19 )
Beim DummyDevice werden bei set und get nicht unterstützte Befehle ausgeblendet.
Beim Device ohne cc1101 werden bei set und get die cc1101 Befehle ausgeblendet.
Bugfix bei Parse_MS() 7381be7

temporäre whitelist beim dummysduino (14.03.19) 20ea302
Wenn bei get dummysduino raw id<nr> am Anfang steht, dann wird "nr" als temporäre whitelist verwendet, z.B.
get dummysduino raw id91,91.1
get dummysduino raw id0#MS;P2=564;P3=-2096;P4=-4171;P5=-9052;D=252323232324232
Es gibt dafür ein neues Internal tmpWhiteList

Anpassungen für SIGNALduino_TOOL (14.03.19) 20ea302
Wenn es das Internal "rawListNr" gibt, dann wird die Nr per dispatch an das Modul SIGNALduino_TOOL übergeben

neues Attribut userprotocol (26.05.19) #3
und neuer Get Menüeintrag "protocolIdToJson"

Wenn mit einem get dummy raw ein dispatch gemacht wird, dann wird der Sensor/Devicename zurückgegeben (06.06.19) 719e2f0

neues Attribut userprotocol

Momentan muß, wenn ein Anwender ein neues Protokoll testen soll, vom Anwender die Protokoll Hash Datei editiert oder ersetzt und fhem neu gestartet werden.
Mit dem neuen Attribut "userprotocol" kann ein neues Protokoll hinzugefügt werden ohne die Protokoll Hash Datei editieren oder ersetzen.

In das neue Attribut "userprotocol" wird die neue Protokolldefinition als json String eingetragen.
Z.B. bei der ID 95 sieht der json String so aus:
{"name":"Techmar", "id":"95", "one":[1,-0.6], "zero":[1,-1.2], "start":[1,-1.8], "clockabs":"550", "format":"twostate", "preamble":"P95#", "clientmodule":"SD_UT", "length_min":"50", "length_max":"50"}

Mit dem neuen Get Menüeintrag "protocolIdToJson" kann eine vorhandene Protokoll ID als json String ausgegeben werden.
Unter dem json String wird die Protokolldefinition besser lesbar dargestellt.
protcolIdToJson

Der json String kann dann bei Bedarf z.B. in einem Texteditor editiert werden und dann in das Attribut "userprotocol" eingetragen werden.
Als array können auch mehrere json String eingetragen werden:
[{"name":"Techmar"...},{"name":"weather (v1)"...}]

Damit es keine Konflikte mit vorhandenen Protokoll IDs geben kann, ist zu empfehlen für die ID eine Nummer ab 900 zu verwenden.

Anpassungen und Erweiterungen der 00_SIGNALduino.pm für FSK

Mit diesen und weiteren Anpassungen und Erweiterungen der 00_SIGNALduino.pm
b0b8e26
6fd89e1
ist mit meiner alternativen Firmware ab V 3.3.4.x ein xFSK Empfang möglich.
https://github.com/Ralf9/SIGNALDuino/releases
Wenn im Attribut updateChannelFW Ralf9 ausgewählt wird, dann mit get Avaiable Firmware und set flash meine meine alternativen Firmware geflasht werden.

Bis jetzt funktioniert der Empfang von LaCrosse Temperatursensoren ( ID 100 + 103), PCA 301 (ID 101) und Kopp free control (ID 102).

Ein update auf meine Variante der 00_SIGNALduino.pm kann gemacht werden mit:
update all https://raw.githubusercontent.com/Ralf9/RFFHEM/master/controls_signalduino.txt

oder,
zum Testen die 00_SIGNALduino.pm ins FHEM Verzeichnis kopieren
https://raw.githubusercontent.com/Ralf9/RFFHEM/master/FHEM/00_SIGNALduino.pm
und die signalduino_protocols.pm ins lib Verzeichnis kopieren
https://raw.githubusercontent.com/Ralf9/RFFHEM/master/FHEM/lib/signalduino_protocols.pm
und dann fhem neustarten

versionmodul  v3.4.7-dev_ralf_...
versionprotoL v3.4.7-dev_ralf_...

Die anderen Erweiterungen und Anpassungen, die nicht das xFSK betreffen, sind hier beschrieben
#2

###########
Die empfangenen LaCrosse Nachrichten werden per dispatch dem 36_LaCrosse Modul übergeben.
Damit ein neuer Sensor per Autocreate angelegt werden kann, gibt es einen neuen set Befehl:
set sduino LaCrossePairForSec

2020.01.06 23:14:13.098 4 : LaCrosse: Unknown device 1B, please define it
2020-01-06 23:14:15.541 SIGNALduino sduinoRXB LaCrossePairForSec 60
2020.01.06 23:14:17.318 4 : sduinoRXB/msg READ: MN;D=96E6323451AAAA000052C826;
2020.01.06 23:14:17.319 4 : sduinoRXB: Found 2-FSK Protocol id 100 -> Lacrosse
2020.01.06 23:14:17.319 4 : sduinoRXB LaCrosse: ID=100, addr=27 temp=23.2, hum=52 bat=0 batInserted=128
2020.01.06 23:14:17.319 4 : sduinoRXB ParseMN: ID=100 dmsg=OK 9 27 129 4 208 52
2020.01.06 23:14:17.319 4 : sduinoRXB Dispatch: OK 9 27 129 4 208 52, dispatch
2020.01.06 23:14:17.320 3 : sduinoRXB LaCrosse Parse: type=0 T(H)
2020.01.06 23:14:17.321 4 : LaCrosse: Unknown device 1B, please define it
2020-01-06 23:14:17.326 Global global UNDEFINED LaCrosse_1B LaCrosse 1B
2020.01.06 23:14:21.525 4 : sduinoRXB/msg READ: MN;D=96E63233C6AAAA000028EF99;
2020.01.06 23:14:21.525 4 : sduinoRXB: Found 2-FSK Protocol id 100 -> Lacrosse
2020.01.06 23:14:21.525 4 : sduinoRXB LaCrosse: ID=100, addr=27 temp=23.2, hum=51 bat=0 batInserted=128
2020.01.06 23:14:21.525 4 : sduinoRXB ParseMN: ID=100 dmsg=OK 9 27 129 4 208 51
2020.01.06 23:14:21.525 4 : sduinoRXB Dispatch: OK 9 27 129 4 208 51, dispatch
2020.01.06 23:14:21.527 3 : sduinoRXB LaCrosse Parse: type=0 T(H)
2020.01.06 23:14:21.527 4 : LaCrosse: Unknown device 1B, please define it
2020.01.06 23:14:21.528 2 : autocreate: define LaCrosse_1B LaCrosse 1B

###########
Ab der firmware V 3.3.4.x gibt es einen neuen Befehl b<0-9>, damit können dann die Register zwischen 10 verschiedenen EEPROM Bänken (0000, 0100, 0140, 0180, 01C0,..) umgeschaltet werden.
Mit b<0-9>W wird die Bank umgeschaltet und die BankNr im EEPROM gespeichert.
Mit b? kann die aktuelle Bank abgefragt werden.
Wenn z.B. mit "b1" auf den EEPROM Speicherbereich 0x100 umgeschaltet wird, dann werden mit den W-Befehlen wie z.B. "set sduino cc1101_reg" in diese EEPROM Bank geschrieben.
Wenn auf Bank 0 eine Register konfig für ook und in Bank 1 eine Register konfig für LaCrosse gespeichert ist, dann kann mit "b0" und "b1" zwischen diesen gewechselt werden:
Es gibt dafür einen neuen get Befehl
get sduino setBank (? oder 0-9)
Edit (25.04.20): habe das "get setBank" in get cmdBank umbenannt

ich habe es bei get zugefügt, da es beim set noch keine asyncOut Ausgabe gibt
ccBankInfo_20200125

Edit (25.01.20):
Es gibt 2 neue Internals ccconf und ccconfFSK, die mit "get sduino setBank" aktualisiert werden.
Wenn beim init beim Einlesen bei der Version "(b.*)" enthalten ist, wird die ccBankinfo abgefragt und in die Internals ccconf und ccconfFSK eingetragen.

############
mit set sduino get raw rN0100 kann der Inhalt der Speicherbänke angezeigt werden
readEEPROM64

############
In der Protocollist Overview werden die neuen FSK IDs 100 bis 102 auch angezeigt
Protocoloverview_FSK

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.