Selbstbau HM_WDS10_TH_O mit Luftdruckmessung

Begonnen von trilu, 23 Februar 2014, 12:23:22

Vorheriges Thema - Nächstes Thema

trilu

Hallo Zusammen,
ich möchte euch mein erstes produktives Device vorstellen, einen selbstgebauten WDS10 Wettersensor mit zusätzlicher Luftdruckmessung.
Basis für das ganze ist ein Panstamp Modul, wobei ein Arduino Pro Mini mit CC1101 Modul auch gehen würde.

Als Sensoren habe ich einen SHT10 für Temperatur und Luftfeuchte und einen BMP180 für Luftdruck verwendet, beide habe ich freundlicherweise
von Dirk bekommen. Martin876 hat den verlängerten String in FHEM integriert, so dass mit einer aktuellen FHEM HM Version dem Empfang nichts
im Wege steht.

Die Schaltung besteht im Wesentlichen aus einem Panstamp, den beiden Sensoren, einem Config Taster, einem Kondensator und zwei Batterien.
Der SHT10 ist an Pin A0 (data) und Pin A1 (clock) angeschlossen, sowie VCC und GND
Der BMP180 ist ein i2c Sensor und folglich an Pin A4 und A5 angeschlossen.
Der 100nF Kondensator hängt zwischen dem Programmieranschluss (DTR) und dem Reset Pin des Panstamp, so dass man den Panstamp auch mit
einem FTDI Adapter programmieren kann.
Die Dual Led hängt an Pin D7 und D6 und zeigt die verschiedenen Zustände des Sensors an, also ob ein ACK kam, wann gesendet wird, usw...

Softwareseitig ist auch eine Low Batterie Erkennung eingebaut, die Schaltschwelle lässt sich im Source Code setzen: "hm.battery.setVoltage(30);"
Derzeit ist sie zu Testzwecken auf 3,0 Volt gesetzt, ich denke das das Modul bis runter auf 2,7 Volt zuverlässig arbeiten sollte. Die Tests stehen aber
noch aus.

Das Timing habe ich von hier: "http://forum.fhem.de/index.php/topic,17485.0.html"
Ob es so passt und sich der Temperaturfühler mit dem HM-CC-RT-DN koppeln lässt, kann ich leider nicht sagen, da ich keinen HM-CC-RT-DN besitze.

Die gesendeten Messages sehen dann so aus, in Klammern seht ihr das Timing (milli Sekunden Systemzeit Arduino):

0E 01 A2 70 6F B7 4C 63 19 63 00 D6 2E 03 FE (l:15)(59359)
0A 01 80 02 63 19 63 6F B7 4C 00 (l:11)(59480)

0E 02 A2 70 6F B7 4C 63 19 63 00 D2 2E 03 FE (l:15)(202407)
0A 02 80 02 63 19 63 6F B7 4C 00 (l:11)(202528)

0E 03 A2 70 6F B7 4C 63 19 63 00 CD 2F 03 FE (l:15)(398872)
0A 03 80 02 63 19 63 6F B7 4C 00 (l:11)(398993)

0E 04 A2 70 6F B7 4C 63 19 63 00 C9 2F 03 FE (l:15)(579913)
0A 04 80 02 63 19 63 6F B7 4C 00 (l:11)(580034)

0E 05 A2 70 6F B7 4C 63 19 63 00 C6 30 03 FE (l:15)(745398)
0A 05 80 02 63 19 63 6F B7 4C 00 (l:11)(745519)

0E 06 A2 70 6F B7 4C 63 19 63 00 C4 30 03 FE (l:15)(895094)
0A 06 80 02 63 19 63 6F B7 4C 00 (l:11)(895215)

0E 07 A2 70 6F B7 4C 63 19 63 00 C2 31 03 FE (l:15)(1029429)
0A 07 80 02 63 19 63 6F B7 4C 00 (l:11)(1029548)

0E 08 A2 70 6F B7 4C 63 19 63 00 C0 31 03 FE (l:15)(1217157)
0A 08 80 02 63 19 63 6F B7 4C 00 (l:11)(1217277)

0E 09 A2 70 6F B7 4C 63 19 63 00 BF 31 03 FE (l:15)(1389287)
0A 09 80 02 63 19 63 6F B7 4C 00 (l:11)(1389408)

0E 0A A2 70 6F B7 4C 63 19 63 00 BE 31 03 FE (l:15)(1545744)
0A 0A 80 02 63 19 63 6F B7 4C 00 (l:11)(1545865)

0E 0B A2 70 6F B7 4C 63 19 63 00 BD 32 03 FE (l:15)(1686865)
0A 0B 80 02 63 19 63 6F B7 4C 00 (l:11)(1686984)


Kurze Erklärung zu den gesendeten Messages.
0E 0B A2 70 6F B7 4C 63 19 63 00 BD 32 03 FE
0E - Länge des Strings in Byte
0B - Messagecounter
A2 - Message flags
70 - Weather Event (Art der Message)
6F B7 4C - eigene HM ID (kann in der Register.h gesetzt werden)
63 19 63 - meine Zentrale (wird beim pairen gesetzt)
00 BD - Temperatur in zehntel Grad, hier also 18,9 Grad
32 - Luftfeuchtigkeit in %, Hex 32 ist 50% in Decimal
03 FE - Luftdruck, 1022 hPa NN, also über Meeresspiegel

Die eigene Höhe über Meeresspiegel muss derzeit im Sourcecode gesetzt werden, und zwar so:
"sensTHP.config(A0, A1, 0, &sht10, &bmp085, 570);"
Ich werde versuchen das ganze noch in einen, von FHEM veränderbaren, Register Wert zu gießen, so das die Konfiguration in
Zukunft variabel ist.

Ich hatte das Modul auch noch nicht im Tiefkühlschrank, ob die Minus Werte passen, weiß ich folglich nicht.
Das Gehäuse, bzw. die Öffnung für den Temperaturfühler, ist auch noch Verbesserungsfähig. Hier werde ich die Tage mal den Baumarkt
besuchen und schauen was es für Verschraubungen gibt  8)
Dirk hat auch angekündigt eine Platine für die Sensoren entwerfen zu wollen - zusätzlich wird es dann auch noch einen Helligkeitssensor geben...

Der Sensor lässt sich mit FHEM und auch der Original HM Config Software pairen und verhält sich (hoffentlich) wie der Originale...
Die Sourcen zum Sensor liegen hier: "https://github.com/trilu2000/AskSin"

Zum Schluss noch ein paar Bilder...

Dirk

Hi trilu,

Super Arbeit.
Leider bin ich noch nicht zum Testen gekommen.

ZitatDirk hat auch angekündigt eine Platine für die Sensoren entwerfen zu wollen
Die Platine wird, laut aktuellem Stand sowohl als Shield für einen Arduino-Pro-Mini dienen können, als auch direkt mit einem Atmega328 zu bestücken sein.
Der Helligkeitssensor wird hier auch schon mit vorgesehen.
Das erste Layout bereite ich grade für dieses Gehäuse vor:
http://static3.tme.eu/katalog_pics/5/4/4/54492c6918313ffc888d3ded8d3a76ea/box-sens-white.jpg

Gruß
Dirk

trilu

Danke, wobei das Lötgefädle nicht wirklich schön ist  ;)
Aber Heisskleber wird es schon richten....

Robbi24

#3
  Hallo trilu. Meinen Glückwunsch zu dieser tollen Software.

   Den HM_LC_SW1_BA_PCB habe ich schon nachgebaut  (Mit TRX868 und Pro Mini 3,3V ).

      http://www.aliexpress.com/item/5pcs-lot-Pro-Mini-328-Mini-ATMEGA328-3-3V-8MHz-Free-Shipping-Dropshipping/1545115091.html

   Jetzt bestelle ich die Sensoren für den  HM_WDS10_TH_O.   

   Mit welchen Project geht es denn weiter? Ich würde gerne einen R.W.E Zwischenstecker oder einen Max! Zwischenstecker auf Asksin und FHEM umstellen. Das müsste doch gehen. Die Zwischenstecker können ja nicht ausgelesen werden und müssen komplett gelöscht werden. Nur welchen Bootloader nehme ich dann. Mit einem mkII Flashadapter habe ich schon mal getestet.


PS
Ein Arduino Uno lässt sich auch auf 3,3V umstellen. Ich habe es aber noch nicht mit dem TRX868 getestet.
http://learn.adafruit.com/arduino-tips-tricks-and-techniques/3-3v-conversion

trilu

@robbi24
Das lohnt ja nicht wirklich, der MAX Zwischenstecker kostet ja auch 40 Euro, da kann man ja den Originalen von HM auch kaufen  :o

Grundsätzlich müsste sich der "HM_LC_SW1_BA_PCB" Sketch schon eignen um eine eigene Firmware für so ein Ding zu generieren.
Relay Class und Register Settings existieren ja schon. Die Pins müssen dann halt noch an die HW angepasst werden.
Hast du einen Schaltplan für den RWE oder MAX Zwischenstecker, so dass man sehen kann an welchen Pins die LED und das Relais hängen.
Und vielleicht eine Frage vorab, welche CPU ist in den Dingern? Meine Lib ist derzeit für Arduino, dass heisst es werden jede Menge Atmel CPU's
supportet. Bootloader brauchst du eigentlich nicht, schau mal hier, da hat Jan die Lib auf eine 644 CPU portiert...
http://forum.fhem.de/index.php/topic,18071.0.html

Als nächstes möchte ich mich an eine Dimmer Class setzen, so dass man seine eigenen LED Dimmer basteln kann...

Robbi24

#5
Die Frage war eigentlich grundsätzlich gemeint:"Lassen sich Geräte von Max! oder R.W.E SH auf Homematic umrüsten". Es gibt viele Devices von R.W.E günstig bei Ebay und die sehen alle schick aus. Da gibt es viele mit AVR 328 und CC110x-Modul die fast baugleich mit Homematic sind.  Die kommen fast alle von EQ3.


.. wurde schon öfter angedacht siehe hier:

https://github.com/ccier/openhm/wiki/Devices     ( mit RSH ist R.W.E gemeint )

oder hier

   https://code.google.com/p/busware/source/browse/trunk/Dudette/board.h

Da wurde ein R.W.E PSS ( Zwischenstecker) umgeflasht.

Dirk

Hi Robbi24,

Wenn die RWE Stecker eine AVR und ein CC110x-Modul beherbergen, dann sollte man die mit ein Paar wenigen Änderungen an der Lib auch umflashen können.

Gruß
Dirk

marc2

Hallo Dirk !

Zitat von: Dirk am 23 Februar 2014, 12:44:18
Die Platine wird, laut aktuellem Stand sowohl als Shield für einen Arduino-Pro-Mini dienen können, als auch direkt mit einem Atmega328 zu bestücken sein.

Auf was für eine Funkmodul setzt Du denn dabei auf ? Immer erst einen MAX Fensterkontakt  oder andere MAX/HM Komponenten auszuschlachten, würde mich eher in Richtung Panstamp treiben. Allein die Versandkosten verhageln einem die Panstamps ....

Gruß, Marc

Dirk

Hi Marc,

ZitatAuf was für eine Funkmodul setzt Du denn dabei auf ?
auf diese hier:
http://www.aliexpress.com/item/2PCS-LOT-CC1101-868MHz-wireless-module-free-shipping/1282890043.html
Diese würde ich auch im Layout so vorsehen.

Gruß
Dirk

trilu

Wobei es die Module auch günstiger gibt...
http://www.aliexpress.com/item/5PCS-LOT-CC1101-wireless-module-Frequency-range-300-1000-MHz-free-shipping/1095240213.html
Das einzig nervige ist die Wartezeit.  Aber bei den Preisen kann man auch vorrausschauend bestellen.

marc2

Hi !

Leider hat dieses Modul scheinbar etwas andere Maße. Weiterhin scheinen VCC und GND im  Vergleich zu dem anderen Modul
vertauscht zu sein. Da Dirks Platinen ja im Regelfall Maßanfertigungen sind, wird man wohl das erstgenannte Modul bestellen müssen,
das aber immer noch billiger ist, als ein MAX Fensterkontakt  ;)

Zitat von: trilu am 24 Februar 2014, 06:49:19
Wobei es die Module auch günstiger gibt...
http://www.aliexpress.com/item/5PCS-LOT-CC1101-wireless-module-Frequency-range-300-1000-MHz-free-shipping/1095240213.html
Das einzig nervige ist die Wartezeit.  Aber bei den Preisen kann man auch vorrausschauend bestellen.

Gruß, Marc

trilu

Hi Marc,
Ich bin mir fast sicher,  dass Dirk das zweite Modul hat.  Wir hatten darüber mal im AskSin Thread geredet.  Zusätzlich habe ich ihm ein Modul geschickt,  da seine noch nicht geliefert waren...
Viele Grüsse
Horst

santalaus

Wäre es möglich auf der Platine einen Anschluss für einen Bewegungsmelder vorzusehen?

Der AtMega müsste doch noch freie Pins haben.
Dann könnte man mit einem Bauteil einen Raum komplett überwachen.

Nico

Dirk

Hier nochmal ein Link mit 5 Modulen. Die sind dann etwas günstiger:
http://www.aliexpress.com/item/5pcs-lot-CC1101-868MHz-wireless-module-distance-for-300m-Free-shipping/1104732817.html
Ich, und bestimmt auch Trilu haben bestimmt noch ein Paar Module übrig.

Hier der Beitrag wo ich die Module für meine Taster verbaut hatte. Da kann man die Module mal im Einsatz sehen:
http://forum.fhem.de/index.php/topic,19657.msg132656.html#msg132656

Man kann grundsätzlich auch andere Module mit dem CC110x nehmen. Aber in der Regel sind die Module aus China auf 433Mhz abgestimmt.
Man kann die Frequenz zwar ändern, allerdings hat man dann eine geringere Reichweite.
Ich habe beide Module, die für 868Mhz und die für 433Mhz getestet. Und erwartungsgemäß ist das Modul was auch hardwareseitig für 866Mhz ausgelegt war, sende- und empfangsseitig besser gewesen.

Zitat von: santalaus am 24 Februar 2014, 20:58:18
Wäre es möglich auf der Platine einen Anschluss für einen Bewegungsmelder vorzusehen?
Was für einen Bewegungsmelder schwebt dir hier denn vor?

Planmäßig ist die Platine bei den Abmessungen für das Gehäuse unten, mit Batteriehalter, Steckplatz für Arduino, für den alternativen Atmega328, CC1101-Modul, Temp/Feuchte-, Luftdruck- und Helligkeitssensor schon gut ausgefüllt.

@Trilu
Ich habe mir das Datenblatt des Helligkeitssensors mal angeschaut.
Dieser hat einen Konfigurierbaren Interrupt welcher selber bei entsprechenen Helligkeitsänderungen auslöst.
Die Schwelle kann man programmieren. Dann muss man den Sensor nicht pollen und kann Helligkeitsänderungen auch at hoc versenden.
Ich habe den Int im derzeitigen Entwurf der Platine an A0 vorgesehen.
Nur falls du das schon mal testen willst :)

Gruß
Dirk

santalaus

Hallo,

also mir würde der Bewegungsmelder aus den Airwick Modulen vorschweben ;)

Ich denke aber das es ggf auf der Platine am sinnvollsten sein könnte einfach ein 3-Pin 2,54 Kontakt vorzusehen und den Sensor via Kabel anzuschliessen.

Nico