Selbstbau-BMP180-Sensor mit LaCrosse 433 MHz Protokoll

Begonnen von juergs, 14 August 2016, 22:19:23

Vorheriges Thema - Nächstes Thema

juergs

#15
Aber die Idee war gar nicht so schlecht.

Das Protokoll sendet ja Tem + HUM in separaten Telegrammen in fünf BCD-Digits verklausuliert.
Wovon 3 davon der informative Anteil sind und die restlichen 2 Digits eine Wiederholung der ersten 2 sind.
Also sollten 3 BCD-Digits zur Übertragung zur Verfügung stehen. Nur Negative Werte müssen vermieden werden.
Interessanterweise werden zur Temperatur 50 Grad hinzuaddiert, um positiv zu bleiben.  ;)

http://forum.arduino.cc/index.php?topic=155483.0

juergs

#16
Das TX3-Protokoll kann nur 2-Stellige Werte + 1 Nachkomma-Stelle übermitteln.
bei Offset 800:
H=199.9600219726 TENS=19 ONES=9 TENTHS=9
nible1=0 nible2=1010 nible3=1110 nible4=1111 nible5=0
tens     = 19 10011
ONES     = 9
TENTHS   = 9
CheckSum = 8


bei Offset 1000:

Temp.: 24.4 Druck: 1000.44 Druck[corr]: 0.44
h=0.4400024414
nible1=0 nible2=1010 nible3=0 nible4=1111 nible5=1
tens     = 7 111
ONES     = 4
TENTHS   = 4
CheckSum = 4


Momentan kenne ich nur die LaCrosse-Gerätetypen 0x00 = Temperatur und 0xEF für Luftfeuchte.


juergs

#17
Eine Methode ist:
Eine BCD-Stelle nach rechts schieben: 800 subtrahieren und durch 10 teilen.

Beispiel:
Sensor-seitig: 998.5 hPa => (998.5 - 800)/10 = 19.85 ==> FHEM-seitig: (19.85 *10)+800 = 998,5

CUL_TX_120.press { ReadingsVal("CUL_TX_120","humidity", 0)*10+800;}

Minimalwert wäre dann 800 hPa. Doch besser mit 700er Offset...

FHEM-userReadings-Attribut:
CUL_TX_120.press { ReadingsVal("CUL_TX_120","humidity", 0)*10+700;}

ZitatTemp.: 24.6 Druck: 1000.48 Druck[corr]: 30.05


Anbei der Code V2 mit 700 als Offset und ergänzter LaCrosse-Instanz mit LaCrosseClass::CalcPress() .

juergs

#18
Statt 5 Telegramm-Wiederholungen sind jetzt 3 eingestellt. Das sollte reichen.

Temp.: 24.6 Druck: 1000.61 Druck[corr]: 30.06
h=30.0609989166
nible1=0 nible2=1010 nible3=0 nible4=1111 nible5=1
tens     = 7 111
ONES     = 4
TENTHS   = 6
CheckSum = 6
h=30.0609989166
nible1=0 nible2=1010 nible3=0 nible4=1111 nible5=1
tens     = 7 111
ONES     = 4
TENTHS   = 6
CheckSum = 6
h=30.0609989166
nible1=0 nible2=1010 nible3=0 nible4=1111 nible5=1
tens     = 7 111
ONES     = 4
TENTHS   = 6
CheckSum = 6
CalcPress::H=30.0609989166 CalcPress::TENS=3 CalcPress::ONES=0 CalcPress::TENTHS=0
h=30.0609989166
nible1=0 nible2=1010 nible3=1110 nible4=1111 nible5=1
tens     = 3 11
ONES     = 0
TENTHS   = 0
CheckSum = 14
h=30.0609989166
nible1=0 nible2=1010 nible3=1110 nible4=1111 nible5=1
tens     = 3 11
ONES     = 0
TENTHS   = 0
CheckSum = 14
h=30.0609989166
nible1=0 nible2=1010 nible3=1110 nible4=1111 nible5=1
tens     = 3 11
ONES     = 0
TENTHS   = 0
CheckSum = 14


Dann schauen wir morgen wieder auf das Ergebnis.

juergs

#19
Das heutige Ergebnis. Leider keine großen Luftdruckveränderungen ...


juergs

#21
Hier der zweite Prototyp mit ATtiny85:
Mit 18650-Lipo-Akku + BMP180 + DHT220 sollte ausreichend sein.
Der Lipo-Accu mit 4,1..3,6V sollte auch dem DHT genügen.
Batterievergleich
ZitatNominal capacity: 3350 mAh
Nominal voltage: 3.6 V
Discharge end voltage: 2.5 V
Charging voltage: 4.20 +/- 0.03 V
Das BMP180-Breakoutboard hat ein LDO-Regler + Vorwiderstände.
Warte noch auf den Lipo-Charger zum komplettieren.
Evtl. auch extern mit 3mm Klinken-Buchse.

passendes Gehäuse
Gehäuse, größere Baufrom


juergs

#23
Sieht doch ganz gut aus ....  :)
Temperaturabfall, weil Fenster geöffnet .... "tropische Nacht"

Luftdrucktrend unter "Charts"
Karlsruhe
Luftdruck-Trend

toensi

Hallo zusammen,

bitte um Mithilfe, bekomm es nicht hin. Kommt nix an in FHEM.
Muß ich den LACROSSE CUL STICK in Pairing setzten, so das er die Werte erhält ??

Der BMP180 ist über I2C-Standardbelegung am Leonardo angeschlossen. GND , VCC, 2, 3 -> BMP wird erkannt und liefert Werte.
BMP180 Temperatur und Luftdruck auslesen.
Temp.: 23.0 Druck: 1012.00 Druck[corr]: 31.20
h=31.2000007629
nible1=0   nible2=1010   nible3=0   nible4=1111   nible5=1
tens     = 7   111
ONES     = 3
TENTHS   = 0
CheckSum = 14
h=31.2000007629
nible1=0   nible2=1010   nible3=0   nible4=1111   nible5=1
tens     = 7   111
ONES     = 3
TENTHS   = 0
CheckSum = 14
h=31.2000007629
nible1=0   nible2=1010   nible3=0   nible4=1111   nible5=1
tens     = 7   111
ONES     = 3
TENTHS   = 0
CheckSum = 14
CalcPress::H=31.2000007629 CalcPress::TENS=3 CalcPress::ONES=1 CalcPress::TENTHS=2
h=31.2000007629
nible1=0   nible2=1010   nible3=1110   nible4=1111   nible5=1
tens     = 3   11
ONES     = 1
TENTHS   = 2
CheckSum = 2
h=31.2000007629
nible1=0   nible2=1010   nible3=1110   nible4=1111   nible5=1
tens     = 3   11
ONES     = 1
TENTHS   = 2
CheckSum = 2
h=31.2000007629
nible1=0   nible2=1010   nible3=1110   nible4=1111   nible5=1
tens     = 3   11
ONES     = 1
TENTHS   = 2
CheckSum = 2

Bis hier denke ich, ist alles OK. Nun DATEN senden an FHEM ,mh?????

433MHz-Sender an Port D7. --> Superheterodyne 433 Mhz RF sender : http://www.ebay.de/itm/Superheterodyne-Sender-Empfaenger-433-Mhz-aehnlich-3400-RF-Raspberry-Pi-Arduino-/252256558833 .............so einen hab ich , kommt nix an.
RFM69CW oder RFM69HCW ???

In FHEM sieht die Define auch komisch aus.

CUL_TX_120 Defined
CODE 120
DEF  120
NAME CUL_TX_120
NR 510
STATE Defined
TYPE CUL_TX
corr 0
lastH 0
lastT 0
minsecs 0


Was mache ich falsch, das keine DATEN in FHEM ankommen, falscher Sender ? wird erkannt als AliRF_22A286.

Bitte um Hilfe, DANK Voarb....:=)

juergs

#25
Hallo toensi,
Sieht ja schon ganz gut aus. Die Werte werden geliefert.

Zu klären wäre:

Ich benutze einen nanoCul mit 433MHz Version.

"LaCrosse" bezieht sich auf das Protokoll und nicht die
Hardware. Deshalb benötig man auch kein Pairing etc.


Der Sensor wird mit "autocreate" normalerweise richtig
erkannt und ohne weiteres Zutun als cul_tx-Device angelegt.
Meine cul_tx120-Definitionen sind schon im Thread angegeben.

Wenn Dein Sender unter 433.92 MHz sendet, sollte er von Fhem erkannt werden


Könntest Du schildern was Du zum Empfang benutzt?
Jürgen

toensi

Hallo Jürgen,

zum Empfang benutze ich:  JeeLink 1 als Epfänger für PIR 433 MHZ :PCA301:EC3000:RoomNode:LaCrosse:ETH200comfort:CUL_IR:HX2272:FS20:AliRF:Level:EMT7110:KeyValueProtocol

JeeLink 2 für  Temperatursensoren
:PCA301:EC3000:RoomNode:LaCrosse:ETH200comfort:CUL_IR:HX2272:FS20:AliRF:Level:EMT7110:KeyValueProtocol
[LaCrosseITPlusReader.10.1h (RFM69CW) @AutoToggle 30 Seconds / 868280 kHz]

Cul 868 für Homematic

Denke es liegt am Sender, werde mir jetzt so einen Bestellen und weiter testen. Oder fehlt der Empänger ? sollte doch mit Jeelink1 gehen oder ??
http://www.ebay.de/itm/433Mhz-RF-Sender-Empfaenger-transmitter-receiver-modul-Arduino-wireless-funk-kit-/171650960632

Besten Dank und Gruß aus Münster.................:)

juergs

#27
Hallo toensi,

...sorry, jetzt ist es klar.

Es liegt nicht am Sender.
Diese Art von Sender ist nicht (direkt) kompatibel zu Deinen Jeelink-Empfängern.  (Hauptsächlich 868 MHz!)
Die Sender, die ich benutze, verwendet die "Modulationsart" OOK welche der Cc1101 im Cul kann.

Die Jeelinks mit den RFM chips können das mit Tricks auch... empfangen aber normalerweise nur FSK.
Aber dann müsstest Du ein Empfänger opfern, der dann nur dieses spezielle Protokoll empfangen kann.

Tut mir Leid, wenn das nicht so deutlich erkennbar war.

Aber vielleicht gibt es ja Hoffnung für eine andere Lösung?

Jürgen

juergs

#28
Je nach dem welche FW konfiguratiom Dei cul868 hat könntest Du
Probieren, den cul auf 433 MHZ umzuschalten

Mit set culname freq 433.920 sollte es möglich sein, den 868er umzuschalten.
Dann kannst Du die Sensoren möglichweise empfangen.
Aber ob das mit Deiner Infrastruktur harmoniert ....

Dieser Thread ist ja aus  diesem hier mit dem Dallas-DS18B20
abgeleitet.

Mann müßte prüfen, ob für Dich diese Variante in Frage kommt:
http://johan.kanflo.com/the-aaduino/
Die ist mit einem RFM69 realisiert.... und könnte auf Deine Jeelinks passen.

Die Umschalterei mit den Homematic-CUl war schon öfter hier im Forum ein Thema.
Es geht wurde aber davon abgeraten und eher ein 433-CUL oder FHEMDUINO/Signalduino  zusätzlich empfohlen.

Hier noch der Hinweis auf RFM - OOK:
http://jeelabs.net/projects/cafe/wiki/Receiving_OOKASK_with_a_modified_RFM12B
Ein anderes Protokoll
controlling-433mhz-rf-power-sockets-with-a-rfm12b-module
433-92mhz-askook-transmitter-modules-compared/

toensi

Hallo Jürgen!

Danke für die schnelle Rückantwort und Hilfe.

So hab jetzt nen CUL433 an FHEM angesteckt und ist Initialized.

Clients :FS20:FHT.*:KS300:USF1000:BS:HMS: :CUL_EM:CUL_WS:CUL_FHTTK:CUL_HOERMANN: :ESA2000:CUL_IR:CUL_TX:Revolt:IT:UNIRoll:SOMFY: :STACKABLE_CC:CUL_RFR::CUL_TCM97001:CUL_REDIRECT:

V 1.21.00 a-culfw Build: private build (unknown) CUL433 (F-Band: 433MHz)

FHEM: autocreate ist active also disable 0.

Bekomme im LOG File und im Event Monitor nix rein....
Empfänger CUL 433 ist ca 3 m entfernt

Danke Vorab :=)