Senden via Jeelink/LaCrosse

Begonnen von user1, 11 August 2015, 18:14:50

Vorheriges Thema - Nächstes Thema

user1

Ich verschiebe mal den im "Anfängerforum" begonnenen Thread (http://forum.fhem.de/index.php/topic,39909.0.html) hierher:

Die Frage war, ob es möglich sein, Custom-Funktelegramme im LaCrosse-Format via Jeelink aus FHEM heraus abzusetzen, um eigene Hardware anzusteuern.

Antwort von Wzut: Genau das Thema ( LaCrosse bidirektional ) habe ich z.Z. auf meiner Wunschliste und auch schon konkrete Vorstellungen zur Umsetzung.


HCS

Na prima. habe gerade vor einer Woche die Senderoutinen (wegen Speichermangel) im Sketch stillgelegt.
Kann sie aber auch wieder aktivieren, dann muss ich halt wo anders den Platz rauskitzeln.

Generell geht das. Das s command ist noch drin, müsste aber für dieses Vorhaben evtl. etwas angepasst werden.
Funktioniert generell nach diesem Prinzip: 10,20,30,40s rechnet über die angegebenen Bytes die Prüfsumme, hängt diese an und schickt das dann über das Radio raus. Allerdings ist momentan die Anzahl Bytes fix. Das könnte ich aber universeller machen, so dass der Sketch eine beliebige Anzahl Bytes akzeptiert, die Prüfsumme rechnet und das dann raus schickt. Was die Bytes bedeuten ist ihm egal. Das kann man dann irgend wo empfangen und interpretieren.

Das Protokoll könnte man so gestalten, dass es der angepasste Sketch beim Empfang akzeptiert und man könnte über die matchlist in FHEM im JeeLink Modul ein eigenes Modul dran hängen, das die Daten in FHEM weiter verarbeitet.

Die Software für die Gegenstelle müsste aber ja dann auch noch von jemand implementiert werden.

Das ursprüngliche Thema "Daten an eine LaCrosse Basisstation senden", die dann eine Temperatur anzeigt habe ich aber endgültig verworfen.

Wzut

Zitat von: HCS am 11 August 2015, 19:40:51
Na prima. habe gerade vor einer Woche die Senderoutinen (wegen Speichermangel) im Sketch stillgelegt.
Habe ich im LaCrosse Thread mitbekommen :) Ich verwende allerdings noch die Version 10.1j  und da sind noch 3K Luft ( 27020 vs. 30720 )
Das Thema LaCrosse senden hat mich auch die Tage beschäftigt (beim Nachbau deines  Level Senders), da entstand auch die Idee meinen aktuellen Hardware Zoo zu verkleinern und für das nächste Bastel Projekt statt WLAN auch auf diese 868MHz RFM Schiene zu setzten.   
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

HCS

Zitat von: Wzut am 11 August 2015, 22:01:49
Ich verwende allerdings noch die Version 10.1j  und da sind noch 3K Luft ( 27020 vs. 30720 )
Und nach 10.1j kam dann der BMP180 und der zweite RFM rein, das hat das Fass dann voll gemacht.

Zitat von: Wzut am 11 August 2015, 22:01:49Das Thema LaCrosse senden hat mich auch die Tage beschäftigt (beim Nachbau deines  Level Senders), da entstand auch die Idee meinen aktuellen Hardware Zoo zu verkleinern und für das nächste Bastel Projekt statt WLAN auch auf diese 868MHz RFM Schiene zu setzten.
Wie schon geschrieben, ich würde die universelle Sende- und Empfangsroutine im Sketch passend machen, den "sende an LaCrosse Basisstation" Teil rauswerfen, dann könnt ihr das vermutlich realisieren, was ihr wollt. Eure "Gegenstellen" müsstet ihr aber schon selbst implementieren.

Ganz grob das Prinzip:
ihr sagt dem Sketch über das JeeLinkModul mit "set myJeeLink raw 1,2,3,4,5,6,7,8s", dass ihr diese 8 Bytes versendet haben wollt
der Sketch packt CRC dran und schickt es mit den aktuell konfigurierten HF-Parametern (Frequenz, data rate) raus
Eure Gegenstelle antwortet mit einem Paket, das sich von TX..., EMT, WS 1600, usw. unterscheiden lässt
Der Sketch gibt diese Pakete an das JeeLink Modul, mit einem Start wie wenn es eine neue Sorte LaCrosse Sensor wäre
Das JeeLink Modul gibt gem. seiner MatchList diese Daten an ein 99_SonstWas Modul, das ihr euch schreibt, das dann mit den Daten machen kann was es will.

Würde sich damit das realisieren lassen, was ihr vorhabt?

Das Ganze funktioniert parallel zum "normalen" Empfangsbetrieb für die LaCrosse Sensoren und am JeeLink Modul müsste vermutlich auch nichts geändert werden.

user1

Genau so was habe ich mir vorgestellt.

Falls der Platz nicht reicht gäbe es ja ev noch die Variante, per #define Blöcke die man im Code drin haben möchte an bzw. abzuwählen und separate Sketches zu generieren. Aber wenn alles reinpasst um so besser!

HCS

Zitat von: Wzut am 11 August 2015, 22:01:49Das Thema LaCrosse senden hat mich auch die Tage beschäftigt
Kannst Dich in Kürze intensiver mit beschäftigen. Am WE werde ich es vermutlich verfügbar machen, klappt schon ganz gut...
Bidirektionale Kommunikation mit Eigenbausensor parallel zum normalen LaCrosse-Empfang

Wzut

Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

fh168

finde ich ja cool. Ich habe mir neulich einen MQ-7 Sensor (misst co2) gekauft und wollte den mit MySensors-Logik ausstatten. Und ja, just for fun. Vielleicht werde ich das mal mit der Jeelink-LaCrosse Logik bauen und drüber bloggen.

LG
/robin
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

HCS

Zitat von: fh168 am 15 August 2015, 12:36:21Und ja, just for fun.
90% ist "just for fun", früher konnten Menschen noch Lichtschalter benutzen, wenn sie etwas sehen wollten bei Nacht und haben dem Hersteller geglaubt, dass die Glühbirne 60W verbraucht, wenn 60 Watt draufsteht, auch ohne einen EMT7110 davor zu packen.  ;D ;D ;D ;D

Darum macht das hier auch Spaß, weil es etwas ist, das man einfach machen kann, es aber zum Überleben nicht braucht.

Ein co2 Sensor - das wäre auch noch was. Bin irgendwie auch auf dem "just for fun messen, was zu messen ist" Trip  ;D

fh168

wenn du noch einen benötigst mq 7 pm me
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

Wzut

Zitat von: HCS am 15 August 2015, 12:46:44
Darum macht das hier auch Spaß, weil es etwas ist, das man einfach machen kann, es aber zum Überleben nicht braucht.
Vollkommen richtig , ich vormuliere es immer etwas härter :
Warum leckt der Hund sich die Eier ? Antwort : weil er es kann ... :)
Maintainer der Module: MAX, MPD, UbiquitiMP, UbiquitiOut, SIP, BEOK, readingsWatcher

HCS

#11
So, da ist es: LaCrosse bidirektional

Anbei ein funktionsfähiges Beispiel für einen Sensor, mit dem man kommunizieren kann.

Voraussetzung: auf dem JeeLink, der an FHEM dran ist, muss mindesten Version 10.1o sein und FHEM muss auf dem trunk Stand sein.

Sketch (im ZIP) CustomSensorExample
Der Beispielsensor hat die ID 11 und sendet alle 10 Sekunden ein Paket, das so aussieht:  "1 ctr"
wobei ctr immer um eins hochzählt

Wenn er ein Paket empfängt, das für ihn ist, dann nimmt er die ersten beiden Bytes, addiert sie und sendet das Ergebnis zurück.
Das macht alles keinen Sinn, funktioniert trotzdem und zeigt, wie so ein Sensor funktioniert.
Man könnte z.B. etwas schalten, und zurückmelden, ob es ausgeführt wurde, ein HMS für Arme also.

FHEM Beispiel Modul (im ZIP) 36_CustomSensorExample.pm
Ein Beispiel, wie das auf FHEM-Seite aussehen kann.
Definieren mit: define myCS CustomSensorExample 0B
Das Modul hat zwei readings. "periodic" ist der Wert, den der Beispielsketch alle 10 Sekunden sendet.
result ist die Antwort, die der Sketch vom CustomSensor erhalten hat.
mit "set myCS SendToSensor" kann man Daten an den Sensor senden. Beispiel "set myCS SendToSensor 10,15" sendet die Bytes 10 und 15 an den Sensor.
Darauf antwortet der der Senor mit dem Ergebnis 25, was man dann als Ergebnis im reading "result" haben sollte.

Der LaCrosseITPlusReader10 Sketch sendet richtung CustomSensor immer mit 17242 kbps, egal, was für den "normalen" LaCrosse Betrieb aktuell konfiguriert ist.

Zu beachten: wenn man den Sketch toggeln lässt, kann es passieren, dass man die Antwort vom CustomSensor verpasst. Ideal für dieses Vorhaben ist ein SuperJee, bei dem man einen RFM dann fix auf 17241 kbps laufen lässt.

Und wichtig: das ist ein Beispiel, das die Technologie veranschaulicht, es hat erst dann einen Nutzen, wenn man sich etwas daraus weiterentwickelt, das etwas sinnvolles tut.

Hier noch ein list für das JeeLink modul und den CS.
Beim JeeLink sind die Attribute Clients und MatchList zu beachten, die gesetzt werden müssen, um den CustomSensor zu definieren.

Ihr könnt ja dann mal berichten,was ihr eigentlich gebaut habt.

Internals:
   CustomSensorExample_lastRcv 2015-08-15 19:46:28
   DEF        0B
   IODev      myJeeLink
   LASTInputDev myJeeLink
   MSGCNT     1991
   NAME       myCS
   NR         195
   STATE      6
   TYPE       CustomSensorExample
   addr       0B
   myJeeLink_MSGCNT 1991
   myJeeLink_RAWMSG OK CC 11 2 46 0 0 7
   myJeeLink_TIME 2015-08-15 19:46:28
   CHANGETIME:
   Readings:
     2015-08-15 19:46:28   periodic        46
     2015-08-15 19:44:53   result          6
     2015-08-15 19:44:53   state           6
Attributes:
   IODev      myJeeLink
   room       .Test


Internals:
   Clients    :PCA301:EC3000:RoomNode:LaCrosse:ETH200comfort:CUL_IR:HX2272:FS20:AliRF:Level:EMT7110:CustomSensorExample
   DEF        /dev/ttyUSB0@57600
   DeviceName /dev/ttyUSB0@57600
   FD         4
   NAME       myJeeLink
   NR         12
   PARTIAL
   RAWMSG     OK 9 11 1 4 252 106
   STATE      Initialized
   TYPE       JeeLink
   model      [LaCrosseITPlusReader.10.1o (RFM12B f:868300 r:17241) + (RFM12B f:868300 t:20~6) + BMP180]
   myJeeLink_MSGCNT 108463
   myJeeLink_TIME 2015-08-15 19:45:44
   CHANGETIME:
   Matchlist:
     1:PCA301   ^\S+\s+24
     2:EC3000   ^\S+\s+22
     3:RoomNode ^\S+\s+11
     4:LaCrosse ^(\S+\s+9 |OK\sWS\s)
     5:AliRF    ^\S+\s+5
     6:EMT7110  ^OK\sEMT7110\s
     7:CustomSensorExample ^OK\sCC\s
   Readings:
     2015-08-15 14:18:13   state           opened
Attributes:
   Clients    :PCA301:EC3000:RoomNode:LaCrosse:ETH200comfort:CUL_IR:HX2272:FS20:AliRF:Level:EMT7110:CustomSensorExample
   MatchList  { "1:PCA301" => "^\\S+\\s+24", "2:EC3000" => "^\\S+\\s+22", "3:RoomNode" => "^\\S+\\s+11", "4:LaCrosse" => "^(\\S+\\s+9 |OK\\sWS\\s)", "5:AliRF" => "^\\S+\\s+5 ", "6:EMT7110" => "^OK\\sEMT7110\\s", "7:CustomSensorExample" => "^OK\\sCC\\s" }
   flashCommand avrdude -p atmega328P -c arduino -P [PORT] -D -U flash:w:[HEXFILE] 2>[LOGFILE]
   group      JeeLink
   initCommands 0m 0r 0t 6M 2R 20T 868300f 220h 0a v
   room       System

fh168

#12
Hallo HCS,

vielleicht in diesem Thread etwas offtopic, ich habe mir mal eine Stand-Alone Lösung gebastelt mit dem MQ-7 Sensor.
Mal sehen, vielleicht kann man auch ein Jeelink-Sender jetzt noch mit dazu packen. Den Programm-Code von Dir schaue ich mir auf jeden Fall an. Hört sich interessant an. Vielleicht schreibe ich darüber, wenn er regulär eingecheckt ist.

Viel Spaß beim Lesen: http://blog.moneybag.de/rauchsensor-mq-7-mit-lcd-display-und-arduino-nano/

LG
/robin
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

fh168

#13
bei den Clients fehlt mir noch das CustomsSensorsExample, muss ich da nochwas beachten?
Auf der Sender-Seite: Reicht ein RFM12B 868 MHz?
Auf der Empfänger-Seite: Reicht ein RFM12B 868 MHz oder müssen da zwei Transceiver auf dem Nano drauf sein?

Clients
:PCA301:EC3000:RoomNode:LaCrosse:ETH200comfort:CUL_IR:HX2272:FS20:AliRF:Level:EMT7110
DEF
/dev/ttyUSB0@57600
DeviceName
/dev/ttyUSB0@57600
FD
5
NAME
jeelinkcross
NR
5
PARTIAL
RAWMSG
OK WS 0 2 5 27 255 255 255 255 255 255 255 255 255 0 3 248
STATE
Initialized
TYPE
JeeLink
jeelinkcross_MSGCNT
71
jeelinkcross_TIME
2015-08-16 10:20:20
model
[LaCrosseITPlusReader.10.1o (RFM12B f:868300 t:30~7) + BMP180]
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

HCS

Zitat von: fh168 am 16 August 2015, 10:21:28
bei den Clients fehlt mir noch das CustomsSensorsExample, muss ich da nochwas beachten?
Musst Clients und Matchlist setzten, siehe mein Beispiel

Zitat von: fh168 am 16 August 2015, 10:21:28
Auf der Sender-Seite: Reicht ein RFM12B 868 MHz?
Ja

Zitat von: fh168 am 16 August 2015, 10:21:28
Auf der Empfänger-Seite: Reicht ein RFM12B 868 MHz oder müssen da zwei Transceiver auf dem Nano drauf sein?
Ich gehe mal davon aus, dass Du mit "Empfänger-Seite" FHEM meinst.
Da reicht ein RFM. Der muss aber fix auf 17241 kbps laufen.