Heute habe ich ein sehr spannendes Thema für Euch. Es geht um selbst gebaute Sensoren, die sich, wie “normale” Sensoren einfach ohne Umweg an die CCU2 anlernen lassen. Das Schöne daran ist, dass die Kosten dafür sehr überschaubar sind und man selber Hand anlegen kann – wenn man denn will ;-) Das Projekt ist zusammen mit Alexander Reinert entstanden, der hierfür den passenden Input geliefert hat.

Was ist der Sinn und Zweck dieses Projekts? IoT ist in aller Munde und Bau von Sensoren und kleinen Platinen ist so einfach wie noch nie. Die Arduino-Plattform liefert zudem das passende Werkzeug, um solche Projekte ohne großen Aufwand umzusetzen. Ziel ist es, eine Platine zu schaffen, die zusammen mit einem schicken Gehäuse, nicht mehr viel mit den Sensoren gemein hat, die man aus manchen Bastelzimmern kennt. Das hier vorgestellte Modul soll die Plattform für unterschiedliche Sensoren bilden, die dann selber zusammengebaut werden können. Starten werden wir mit einem Sensor, der uns eine (sehr genaue!) Temperatur und Luftfeuchtigkeit liefert. Der Sensor arbeitet mit 2AA Batterien in einem flachen Gehäuse und lässt sich ganz einfach an einer CCU2 über Funk anmelden. Dort kann er dann wie jeder andere Sensor auch, abgefragt und ausgewertet werden.

Die Laufzeit der Batterie ist, je nach Funkempfang zwischen 1,5 und 3 Jahre ausgelegt. Dadurch ist der DIY-Sensor auch für den Alltag bestens geeignet. Die Kosten für den Sensor belaufen sich auf unter 25€!In diversen Foren wird das Thema schon länger diskutiert und es gibt dazu auch ein paar wenige Anleitungen, die aber für den Laien nicht besonders gut zu verstehen sind. Damit auch die Leser unter Euch in den Genuss kommen können, solche Sensoren nachzubauen, haben wir uns vorgenommen eine sehr detaillierte Beschreibung zu erstellen, die Euch zeigt, wie Ihr Schritt für Schritt das Projekt nachbauen könnt.

Die Idee hinter den Sensoren ist schon etwas älter und stammt aus dem FHEM-Forum. Dort wurde damals Libs AskSin (Name abgeleitet von Homematic BidCos) ins Leben gerufen. Diese Library dient als Grundlage der DIY-Sensoren. Aus Libs AskSin wurde dann NewAskSin – damit war es möglich, Sensoren im Eigenbau zu entwickeln. Für den „laien“ aber sehr umständlich und eher nicht für den produktiven Einsatz geeignet.

Irgendwann hat Holger den Code aufgeräumt, umstrukturiert und auf C++ portiert, AskSinPP war geboren.

Jerome Pech hat diese Software dann auch außerhalb der FHEM-Community bekannt gemacht und die angefangen, den Aufbau etwas Laien gerecht aufzuarbeiten.Auch hat er viele Sketches für die Arduino-Plattform geschrieben, die das Handling sehr viel einfacher machten.

Alexander Reinert (Ihr kennt ihn durch das piVCCU Projekt) hat sich dann an die Entwicklung von fertigen Platinen gewagt und uns auf dieses Thema aufmerksam gemacht und uns den passenden Input geliefert.

Soviel zur Vorgeschichte.

Vorab möchte ich einen großen Dank an Jerome Pech und Alexander Reinert aussprechen, da erst durch die beiden diese Anleitung für Euch möglich ist.

Eigenschaften des Sensors

Präzises messen von Temperatur und Luftfeuchtigkeit – Es erfolgt alle 3 Minuten eine automatische Übermittlung der Daten an die CCU.

Sensoreinheit von Bosch.

Die Batterielaufzeit beträgt (rechnerisch) 2-3 Jahre.

Größe ca. 10x10x3 cm

Kann verwendet werden mit: CCU1,CCU2,CCU3, RaspberryMatic, piVCCU OCCU – nicht für den Homematic IP Access Point geeignet.

Der Sensor wird in der CCU als richtiges Gerät erkannt, kein Cux Daemon oder ähnliche Software notwendig.

Es können mehrere Sensoren parallel angelernt werden.

Vorteil gegenüber fertigen Homematic-Sensoren: Viel höhere Genauigkeit durch präzisen Sensor von Bosch.

Platine kann für weitere I2C-Sensoren genutzt werden – hier folgen weitere DIY-Projekte!

Was brauchen wir alles für den Aufbau dieses Sensors?

1x Grundplatine (Layout von Alex) könnt Ihr über unsere Shop beziehen

1x BME280 Sensor (Hochpräziser Sensor für Temperatur und Luftfeuchtigkeit)

1x Arduino Pro Mini 3,3V mit 8 MHz

1x Funkmodul 868MHz

1x Antennendraht 8,6cm (1mm Abisoliert)

2x Batteriehalter für AA-Zellen

1x Taster 6x6x5mm

1x Elko 10uF 1,5mm

1x Universalgehäuse

4x Blechschraube M2

2x AA Batterien

Signalisierung über LED (Anlernmodus)

1x LED 3mm (rot)

1x Widerstand R1 470 Ohm

Verpolungsschutz der Batterien

1x Mosfet IRLU024NPBF (optional)

1x Widerstand R3 100K Ohm (optional)

Flashen des Arduino

Zum Flashen benötigen wir zudem noch einen FTDI Adapter 3.3V

Ich habe Euch hier mal die unterschiedlichen Bezugsquellen zusamMengestellt. Wer den Kram bei Aliexpress kauft, spart eine Menge Geld, muss aber etwas auf die Lieferung warten. Es können leider schon mal gut 30 – 40 Tage vergehen, bevor die Sendung aus China bei Euch ankommt. Bei Amazon geht das natürlich schneller, Ihr bezahlt dann aber einen saftigen Aufpreis.

Wo am besten kaufen?

Ich habe alle Teile mit µ-Elektronik bei Aliexpress bestellt, die Bauteile wie Widerstände, Taster, das Gehäuse und den MOSFET bei Conrad und die Batteriehalter bei ELV.

Wem das alles zu aufwendig ist, kann mir gerne eine Mail schreiben, ich habe alle Bauteile (inkl. Schrauben und Antennendraht) vorrätig.

Ich habe die fertige Platine von Alex bereits hier, Ihr findet die Platine und die Bauteile im Shop.

Technikkram Amazon Aliexpress Conrad
ELV
Grundplatine Link
BME280 Sensor Link Link
Arduino Pro Mini Link Link
Funkmodul Link Link
Antennendraht
Batteriehalter Link
LED 3mm Link Link
R1 = 470 Ohm Link Link
R3 = 100K Ohm Link Link
Taster 6x6x5mm Link Link
Elko 10uF Link Link
Universalgehäuse Link
Blechschraube M2 Link
AA Batterien Link Link
Mosfet Link Link
FTDI Adapter Link Link

Bevor wir mit dem Aufbau anfangen, habe ich Euch ein paar Bilder erstellt, damit Ihr sehen könnt, wie das fertige Modul aussieht und wie Ihr dieses in die CCU integrieren könnt. Das Anlernen funktioniert, wie bei jedem anderen Gerät auch über einen Knopfdruck auf der Platine und über die Anlernroutine in der CCU.

Aufbau des Sensors

Wir fangen nun an die Platine zu bestücken, wenn Ihr alle Bauteile bestellt habt, die in der Liste oben aufgeführt sind, können wir anfangen ;-)

Zuerst habe ich das C1101 868 MHz-Funkmodul auf die Platine gesetzt. Ihr habt dabei zwei Möglichkeiten. Entweder verwendet Ihr die beiliegende Steckleiste. Diese wir dann auf die Platine gelötet und anschließend das Funkmodul an die Stifte. Wer es etwas einfacher haben will, kann das Modul aber auch direkt auf die Platine setzen. Das habe ich so gemacht. Auf dem Bild sehr Ihr, dass das Modul direkt auf die Platine gelegt worden ist.

Am besten stellt Ihr Euren Lötkolben auf 360°C ein. Ihr erhitzt nun beide Kontaktflächen und lasst dann langsam etwas Lötzinn auf die Stelle fließen. Ihr braucht nicht besonders viel und solltet darauf achten, dass das Zinn keine Brücke zu den benachbarten Kontakten herstellt.

In der Platine ist zudem eine Bohrung, die für die Antenne vorgesehen ist. Als Antenne nehmt Ihr einfach einen dünnen Draht und schneidet diesen auf eine Länge von 8,6 cm. Mit einer Zange entfernt Ihr dann die Isolierung (1mm). Die blanke Litze steckt Ihr dann durch das Loch und verlötet diese mit dem mittleren Kontakt der c1101-Platine.

Kleiner Tipp: Wenn Ihr eine Homematic-Funkmodul für den Raspberry Pi aufgebaut habt und dieses auf eine externe Antenne umgerüstet habt, dann der „alte“ Antennendraht super für dieses Projekt genutzt werden.

Nun kümmern wir uns um den Arduino Pro mini. Der kleine Chip ist auf einer Board installiert. Wir müssen die beiliegenden Kontakte links und rechts bestücken. Dazu werden die Steckleisten mit 2x 12 Pins benötigt. Die Leisten an den schmalen Seiten (oben und unten) müssen wir nicht bestücken.

Ganz wichtig ist auch, dass die beiden Pins A4 und A5 verlötet werden. Hierüber findet die I2C-Kommunikation mit dem Sensor statt.

Wir müssen in Summe als 26 Lötpunkte auf dem Arduino setzen. Ihr könnt die Steckerleiste entweder von oben oder von unten verlöten. Dabei solltet Ihr vorsichtig sein und nicht zu viel Zinn verwenden.

Nachdem alle Pins angebracht worden sind können wir den Chip mit der Platine verlöten. Dazu setzen wir das Modul auf die Platine und drehen diese um.

Alle 26 Pins müssen nun verlötet werden. Kontrolliert die Lötstellen bitte sorgfältig, da sonst eine spätere Fehlersuche sehr aufwändig werden kann….

Nachdem der Arduino platziert ist, kümmern wir uns um den I2C-Sensor. Der BME280 besitzt 6 Anschlüsse, wovon wir aber nur 4 benötigen.Die beiliegende Steckerleiste löten wir zuerst auf die Platine. Dann löten wir den Sensor auf die Stiftleiste, sodass die oberen 2 Kontakte leer bleiben.

Nun haben wir alle Bauteile mit µ-Chips eingesetzt. Jetzt folgen die etwas einfacheren Komponenten wie Widerstände, Taster und LED.

Den Anfang macht die LED. Die LED ist optional und kann für die Signalisierung während des Anlernvorgangs genutzt werden. Da der Anlernvorgang aber auch am PC-Monitor verfolgte werden kann, kann die LED + der Widerstand R1 eingespart werden.

Den richtigen Einbau setzt Ihr auf dem Bild. Das lange Bein (Anode oder „+“) wird nach unten gesetzt. Das kurze Beinchen wird auf die Bohrung mit der Bezeichnung „4“ gesetzt. Der Widerstand wird als Vorwiderstand für die LED benötigt und kommt auf die Position R1. Hier spielt die Polarität keine Rolle.

Auch dieser Widerstand kann eingespart werden, wenn Ihr die LED nicht benötigt.

Es folgt nun der Taster, der für das Starten des Anlernvorgangs benötigt wird. Dieser wird an die dafür vorgesehene Stelle (weißes Rechteck) gelötet. Ihr könnt hier nichts falsch machen, da der Taster nur genau in die Bohrung passt.

Der nächste Schritt ist ebenfalls optional. Alex hat sich für die Platine einen Verpolungsschutz überlegt, der die Elektronik davor schützt, wenn die Batterien falsch herum eingesetzt werden. Ohne den MOSFET würde dann die Elektronik Schaden nehmen.

Da aber die Batteriehalter sehr eindeutig beschriftet sind, könnt Ihr auf diesen MOSFET + Widerstand aber auch verzichten.

Wenn Ihr ohne MOSFET (Überspannungsschutz) arbeiten wollt, müssen die beiden Kontakte von J8 zusammengelötet (gebrückt) werden.

Nun folgt noch der Elko am C1101-Modul. Dieser muss auf die Position C1 gesetzt werden. Die Anode („-„) muss auf die weiße Fläche auf der Platine gesetzt werden. Die richtige Position könnt Ihr den Foto entnehmen.

Als letzter Schritt müssen noch die beiden Halter für die AA-Zellen verlötet werden. Die richtige Polung seht Ihr auf der Platine und in den Haltern. Dort ist ebenfalls ein „+“ und „-“ zu finden. Minus ist dort, wo die Feder verbaut ist.

Das waren die letzten beiden Bauteile, die wir benötigt haben.

Solltet Ihr Probleme bei der Installation der Software haben, könnt Ihr mich gerne anschreiben, dann kann ich Euch einen fertig geflashten Arduino zukommen lassen!

Software einspielen

Doch ohne die passende Software bleibt unsere Platine ein Briefbeschwerer ;-) Daher wollen wir jetzt das passende Sketch installieren um den Sensor in die CCU einzubinden.

Da ich weiß, das viele von Euch noch keinerlei Erfahrung mit Arduino und dessen Programmierung gemacht haben, werde ich auch diese Schritte im Detail beschreiben.

Zuerst müssen wir die Arduion IDE Software herunterladen. Diese gibt es für Windows, Mac und Linux.

Nachdem der Download beendet ist, müsst die die Installationsroutine durchlaufen und das Programm starten.

AskSinPP herunterladen

Um zu starten benötigen wir zuerst AskSinPP. Über die Schaltfläche „Clone or download“ rufen wir ein weiteres Fenster auf. Hier wählen wir nun Download ZIP aus.

Nachdem die Datei heruntergeladen ist entpacken wir die Datei in einem temporären Ordner.

Nun müssen wir aus den soeben entpackten Dateien ein neues Archiv machen, jedoch ohne das zusätzliches Unterverzeichnis AskSinPP. Im neuen ZIP-Archiv sind dann direkt die Ordner bootloader, examples usw… zu finden.

Das neue Archiv kann den gleichen Namen wie das alte Archiv tragen.

Wir brauchen diese Datei gleich, um die ZIP-Datei als zusätzliche Library in Arduino IDE einzubinden.

Einbinden der AskSinPP Bibliothek

Die soeben angelegte ZIP-Datei spielen wir jetzt in das Arduino IDE ein. Dazu klicken wir im Hauptfenster auf „Sketch“ und dann auf „Bibliothek einbinden“ dort wählen wir dann „.ZIP-Bibliothek einbinden…“ an.

In dem neuen Fenster wählen wir nun unsere soeben erzeugte ZIP-Datei aus.

Damit haben wir die wichtigste Bibliothek für die Funktion unseres neuen Sensors eingebunden!

Sketch herunterladen

Nun laden wir die fertigen Sketche für den Sensor herunter. Diese bekommen wir bei GitHub von Jerome.

Auch hier wählen wir wieder „Clone or download“ an und laden die ZIP-Datei herunter.

Ich habe das Archiv direkt in den Ordner der Arduino-Installation geschoben. Diesen findet Ihr unter „Dokumente“ –> „Arduino“. Hier habe ich alle Beispiele abgelegt, die in der ZIP-Datei von Jerome vorhanden sind.

Hier ist auch das Sketch von unserem BME280 enthalten. Dieses werden wir gleich laden.

Zusätzliche Bibliotheken installieren

Zuerst müssen aber noch weitere Bibliotheken geladen werden, damit das Projekt laufen kann.

Wir brauchen folgende Bibliotheken, die noch installiert werden müssen:

  • EnableInterrupt (Mike Schwager)
  • Low-Power (Rocket Scream)
  • BME280 (Tyler Glen)

Fangen wir mit der ersten Bibliothek an. Diese installieren wir über das Haupfenster mit einem Klick auf „Sketch“ –> „Bibliothek einbinden“ –> „Bibliothek verwalten…“

Es öffnet sich ein neues Fenster. Dort können wir dann nach der benötigten Datei suchen.

Wir geben als im Eingabefeld „EnableInterrupt“ ein und wählen die aktuelle Version aus und danach auf „Installieren“.

Damit haben wir nun die erste Bibliothek eingebunden.

Die nächste Library, die wir benötigen können wir hier von GitHub herunterladen. Auch diese Bibliothek binden wir wieder über die Schaltfläche „Sketch“ –> „Bibliothek einbinden…“ und dann auf „.ZIP-Bibliothek hinzufügen…“.

Hier wählen wir dann die soeben heruntergeladene Datei von GitHub aus.

Jetzt folgt die letzte Bibliothek für den BME280-Sensor. Diese erhalten wir ebenfalls von GitHub.

Auch diese Datei binden wir wieder über die Schaltfläche „Sketch“ –> „Bibliothek einbinden…“ und dann auf „.ZIP-Bibliothek hinzufügen…“ ein.

Damit haben wir nun alle nötigen Dateien zusammen und können jetzt das Board konfigurieren!

Board Konfigurieren

Nun müssen wir dem Programm noch mitteilen, welches Board wir programmieren wollen. Dazu klicken wir auf „Werkzeuge“ und tragen dort die Information ein, die Ihr im Bild sehen könnt.

Hier sind die Einstellungen nochmal einzeln aufgeführt. Um an den COM-Port des FTDI-Adapters zu erhalten, muss der Adapter an den Computer angeschlossen werden. Ihr könnt dann im Gerätemanager den passenden Port sehen. In meinem Fall ist das COM7.

  • Board: Arduino Pro or Pro Mini
  • Prozessor: ATMega328P 3.3V 8MHz
  • Port: Der COM Port vom FTDI Adapter

Sketch laden

Nun müssen wir das fertige Sketch laden, um den Sensor zum Leben zu erwecken. Das Sketch ist wie ein Programm, welches auf den Prozessor vom Arduino geschrieben wird.

Dieses findet Ihr im zuvor heruntergeladenen Archiv. Dort müsst Ihr nach HM

HM-WDS10-TH-I-BME280/HM-WDS40-TH-I-BME280.ino suchen.

Arduino flashen

Jetzt haben wir soweit alles vorbereitet, dass der Arduino programmiert werden kann. Dazu müssen wir den Programmer auf 3,3V umstellen. Auf der Platine ist dafür ein Jumper angebracht. Dieser kann entweder in der Stellung 3,3V oder 5V gesteckt werden. Wir müssen diesen für unseren Arduino auf 3,3V stellen.

Die Platine wird bei diesem Schritt ohne die Batterien betrieben. Wir stecken nun die PINs vom Programmer in das Board vom Arduino, wie Ihr es auch auf dem Foto erkennen könnt.

Nun klicken wir im Fenster auf „Sketch“ –> „Überprüfen / Kompilieren“.

Dieser Vorgang dauert ein paar Sekunden und es sollte am Ende so aussehen, wir auf dem folgenden Bild:

Wenn Ihr bis hier alles richtig gemacht habt, dann können wir das Programm nun auf die CPU schreiben.

Dazu klicken wir auf „Sketch“ –> „Hochladen“

Auch dieser Vorgang dauert etwas und Ihr könnt beobachten, wie die beiden roten LEDs am Programmer während des Vorgangs blinken.

Damit haben wir erfolgreich die Software auf das Gerät gespielt!

Installation prüfen

Nachdem der Vorgang abgeschlossen ist, können wir überprüfen, ob alles richtig funktioniert. Dazu öffnen wir den seriellen Monitor. Das machen wir über „Werkzeuge“ –> „serieller Monitor“.

Die Ausgabe im Plotter sollte so aussehen, wie im oberen Fenster. Dort könnt Ihr erkenne, dass der Messwert als „Measure…“ bereits vom I2C Sensor an den Arduino übertragen wird!

Jetzt können wir den Sensor an unsere CCU anlernen!

Sensor an die CCU anlernen

Dazu öffnen wir das Webinterface der CCU oder der piVCCU und klicken dort wie gewohnt auf „Gerät anlernen“.

Der Arduino bleibt noch an den Programmer angeschlossen und es müssen auch noch keine Batterien eingelegt werden.

Wir starten nun den Anlernmodus der CCU.

Direkt im Anschluss drücken wir kurz auf den Taster des neuen Sensors. Im Plotter könnt Ihr diesen Tastendruck ebenfalls sehen.

Die rote LED auf dem Sensor beginnt nun zu blicken.

Nach einer kurzen Zeit wird das Gerät im Posteingang der CCU auftauchen. Nun ist der Sensor der CCU bekannt und kann wie gewohnt konfiguriert und abgefragt werden.

Batterien einsetzen und Gehäuse installieren

Der Programmer kann nun vom Board getrennt und die beiden AA-Batterien eingesetzt werden. Die rote LED leuchtet kurz auf und der Sensor sendet im Anschluss seine Messwerte an die CCU.

LEDs deaktivieren

Damit die Batterien des Sensor länger halten, sollen die beiden kleinen LEDs von Arduino Board entfernt werden. Das könnt Ihr entweder mit einem spitzen Gegenstand oder dem Lötkolben machen.

Damit ist diese Anleitung fertig. Ich hoffe Ihr konnten der Anleitung gut folgen. Wenn Ihr Vorschläge für Verbesserungen habt oder Ideen für weitere Projekte, dann könnt Ihr wie gewohnt die Kommentar-Funktion nutzen!

 

Das könnte Dich auch interessieren

CCU3 – Tuning durch Einbau eines Raspberry Pi3 B+
Aufrufe 13369
Dieser Artikel ist aus einer spontanen Idee heraus entstanden und nicht unbedingt zum nachmachen empfohlen. Da es sich ja auch schon rein preislich n...
CCU3 – Umstieg von der CCU2
Aufrufe 5414
Heute möchte ich euch beschrieben wie der Umstieg von der CCU2 auf die neue HomeMatic Zentrale CCU3 funktioniert. Funktioniert der Restore des Backup...
DIY Homematic-Sensor – Platine jetzt im Shop verfügbar
Aufrufe 970
Vor ein paar Tagen habe ich Euch das Projekt DIY-Bausatz für Homematic-Sensoren vorgestellt. Jérôme Pech betreibt das Projekt via GitHub und Alexander...
CCU3 – Analyse der Hardware
Aufrufe 2313
Eigentlich haben wir fast alles über die wahrscheinliche Hardware der CCU3 hier bei technikkram bereits beschrieben. Aber jetzt haben wir natürlich e...
CCU3 – neue Firmware Version 3.37.8 verfügbar
Aufrufe 2324
Seit dem 29.08.2018 ist auf der Downloadseite von eQ-3 eine aktuelle CCU3 Firmware mit der Versionsnummer 3.37.8 "verfügbar". Bei dem Versuch diese F...
CCU3 – Erster Start und Software (Installation aktuelle Firmware)
Aufrufe 4033
Nachdem wir gemeinsam die CCU3 ausgepackt und genau angeschaut haben, hier der erste Bericht über den Start der neuen HomeMatic Zentrale und die inst...
75 Kommentare
  1. Markus sagte:

    Hallo
    ich habe leider nur den BMP280( I2C Adresse 0x76) anstatt des BME280 bei mir liegen. Lässt sich der Arduino Sketch an diesen Sensor anpassen?

    Antworten
  2. Jochen sagte:

    Hallo Jerome,

    Ich habe drei von den Bausätzen am laufen, bei zwei von drei Sensoren weichen die Messwerte leider deutlich ab. Aktuell wird die Abweichung bei mir über die CCU korrigiert und in eine Systemvariable geschrieben. Eleganter wäre meiner Meinung nach allerdings eine Korrektur direkt auf dem Arduino. Gibt es im Code eine Möglichkeit den Temp. bzw. Feuchtewert per Offset zu korrigieren?

    Antworten
    • Jérôme sagte:

      Hi!
      Eleganter wäre meiner Meinung nach, die Sensoren zu überprüfen / auszutauschen.
      Klar kann man im Code einen Offset verrechnen, aber das ist wohl der falsche Weg.
      Immerhin hast du für den Bausatz Geld bezahlt.

      Antworten
      • Jochen sagte:

        Ich hatte schon mit Sebastian geschrieben bezügl. der beiden gelieferten Sensoren mit der hohen Abweichung, er wollte sich melden sobald er wieder welche reinbekommt. Auch nach dem Tausch der „defekten“ Sensoren bleibt sicherlich immer noch eine Streuung/Abweichung von 3-5% mit der man sicherlich leben kann – aber wäre es denn so aufwendig den Code anzupassen? Wahrscheinlich ist das in wenigen Zeilen im Sketch umgesetzt, für mich als Arduino-Laie allerdings momentan schwierig bis nicht lösbar. Vielleicht kann mir hier jemand etwas auf die Sprünge helfen..!?

        Antworten
        • Pech Jérôme sagte:

          Die schnelle quick&dirty Variante wäre in Zeile 106:
          msg.init(msgcnt, bme280.temperature(),bme280.humidity(), device().battery().low());

          Da kannst du noch was draufaddieren oder subtrahieren.

          Beispiel:
          msg.init(msgcnt, bme280.temperature()+25,bme280.humidity(), device().battery().low());
          entspricht „gemessene Temperatur +2,5°C“

          Antworten
          • Jochen sagte:

            Vielen Dank für den Lösungsvorschlag. Konkret möchte ich den Messwert um 10% erhöhen. Vermutlich wird im Sketch *1.1 falsch interpretiert? Was wäre hier richtig *110/100 ?

          • Jérôme sagte:

            Um 10% erhöhen? Also wenns nur 5°C sind, um +0,5°C und wenn es 30°C sind um 3,0°C? Sicher, dass du einen relativen Offset möchtest?
            (Bei den HM-Thermostaten kann man auch nur eine absolute Verschiebung angeben.)
            Aber gut… Also es gehen an sich beide Möglichkeiten. Die zweite ist aber wohl die bessere.
            (bme280.temperature()*110L)/100

          • Jochen sagte:

            ..fragt sich ob das sinnvoll war nur einen absoluten Offset zu implementieren ;) Die hohe Abweichung bezieht sich bei meinen Sensoren auf die Luftfeuchte – und die ist relativ zum Messwert. Bei der Temperatur wäre der Offset tatsächlich absolut. Vielen Dank Jerome für deine Unterstützung!

  3. Michael Bauer sagte:

    Wo besteht der Unterschied zwischen diesem Platinenaufbau und dem HB-UNI-Sensor1?
    Könnte man den Sketch HB-UNI-Sensor1.ino + BM280-Library für dieses Board verwenden?

    Antworten
  4. Werner sagte:

    Hallo Jerome

    ich habe jetzt mal eine Versuchsschaltung aufgebaut mit dem DS18B20. Den hatte ich eh hier . Das Anlernen hat super geklappt und die Temperatur ist lesbar. Wird in der CCU2 angezeigt.

    Allerdings nur das. Ich dachte die Batterieüberwachung geht auch? Im Quelltext habe ich auch was dazu gefunden, es aber noch nicht nachvollzogen.
    Ich habe dieses Sketch genommen und die Pins angepasst.
    HM-WDS40-TH-I-DS18B20

    Gruß
    Werner

    Antworten
    • Jérôme sagte:

      Hallo!
      Ja, die Batterieüberwachung geht selbstverständlich.
      Bei Erreichen der battery.low(22); Schwelle (hier 2.2V) wird in der CCU die Servicemeldung „Batterieladung gering“ angezeigt. Natürlich nur, wenn BOD deaktiviert oder auf 1.8V gesetzt ist, da sonst der 328P bei 2.7V seine Arbeit einstellt.

      Antworten
        • Werner sagte:

          Hallo Jerome

          also das mit der Batterie und Servicemeldung geht. Habs getestet. Schade, wäre halt schön gewesen wenn die Batteriespannung übertragen wird, dann könnte man ich iobroker ein Batteriesymbol mit dem Zustand dazu machen.
          Ist das schwer ein Feature für die CCU2 zu implementieren? Denke mal das HB Addon muss da angepasst werden.

          Gruß
          Werner

          Antworten
      • Werner sagte:

        Hallo Jerome

        also das mit der Batterie und Servicemeldung geht. Habs getestet. Schade, wäre halt schön gewesen wenn die Batteriespannung übertragen wird, dann könnte man ich iobroker ein Batteriesymbol mit dem Zustand dazu machen.
        Ist das schwer ein Feature für die CCU2 zu implementieren? Denke mal das HB Addon muss da angepasst werden.

        Gruß
        Werner

        Antworten
        • Jérôme sagte:

          Es geht ja hier in dem Beitrag um den Nachbau eines HM Geräts, das ohne Addon anzulernen ist.
          Das originale Gerät sieht keine Batteriespannung vor.
          Inwieweit der HB-UNI-Sensor1 (für den dann ein Addon benötigt wird) das schon alles mitbringt, weiß ich nicht. Das Projekt ist auch nicht von mir.
          Für die Entwicklung von Individuallösungen fehlen mir Zeit und Motivation.
          Ob es „schwer“ ist, liegt im Auge des Betrachters.
          Wo ein Wille ist, ist auch ein Weg… Es gibt halt keine Dokumentation von der AskSinPP Lib bzw. der XML Struktur. Ich habe ca. 3 Monate benötigt, um mich da einigermaßen einzuarbeiten.

          Antworten
  5. Michael Bauer sagte:

    Hallo,
    ist es geplant das die Luftdruckmessung des BME280 auch aktiviert wird?
    Geht es, rein theoretisch, überhaupt die Funktion in ein sketch-file mit einzuprogrammieren?
    Grüße
    Michael

    Antworten
    • Jérôme sagte:

      Das geht, wenn du ein Custom Device erstellst – was sich aber definitiv nicht mit 1-2 Sätzen erklären lässt.
      Da hier im Beispiel nur Standard-HM-Geräte emuliert werden, können auch nur die Werte übertragen werden, wie es auch die HM Geräte machen. Und da ist bei den Innen-/Außentemperatursensoren kein Luftdruck vorgesehen.

      Antworten
      • Michael Bauer sagte:

        Die HM-WDS40-TH-I-BME280.ino hat die Datenquelle #include angegeben. Könnte über eine Modifikation des Bme280.h etwas erreichen?

        Antworten
        • Jérôme sagte:

          Nein. Das Problem ist weder der Arduino, noch der BME280 oder der Sketch.
          Die Gegenseite – die CCU – kann den Luftdruck nicht auswerten/anzeigen.

          Antworten
          • Michael Bauer sagte:

            Oh, in diese Richtung habe ich überhaupt nicht gedacht.
            Vermutlich spielt es dann auch keine Rolle ob CCU oder RaspberryMatic als Homematich läuft.

          • Jérôme sagte:

            Nein, die Software, die im „Inneren“ läuft, ist ja immer dieselbe.
            So wie ein HM-WDS40-TH-I immer ein HM-WDS40-TH-I ist.
            Ob du es nun an der CCU2 anlernst oder an RaspberryMatic.

          • Michael Bauer sagte:

            Das Gerät HM-WDC7000 von ELV soll auch den Luftdruck an die CCU weitergeben.
            Einem Forumseintrag soll das so aussehen: HM-WDC7000 NEQ0187263:10.AIR_PRESSURE.

          • Jérôme sagte:

            Ja, das ist auch so. Aber ein HM-WDC7000 ist kein HM-WDS40-TH-I, um den es hier in dem Beitrag geht. Es gibt bereits auch schon einige Möglichkeiten, den Luftdruck zu erfassen. Zum Beispiel mit dem HB-UNI-Sensor1 oder HB-UNI-Sen-WEA. Aber vielleicht schreibt auch jemand mal einen Sketch, um den HM-WDC7000 zu emulieren…

  6. Herbert sagte:

    Habe vor einer Woche den Bausatz erhalten und dank der genauen Anleitung ohne Probleme zum Laufen gebracht. Über die gelieferten Temperaturwerte bin ich jedoch im Zweifel. Ich habe nun den gesamten Sensor zusammen nit einem Vergleichsthermometer im Kühlschrank platziert.
    Ausgangswert: 30°C, nach 1 Stunde: 13°C, nach 2 Stunden: 12,6°C, nach 5 Stunden hat sich der Wert stabilisiert: 12,1°C . Vergleichsthermometer: 7,7°C. Wie ist dieses träge Verhalten zu erklären? Ist mir ein Fehler unterlaufen?
    Gruß Herbert

    Antworten
  7. Stefan Riese sagte:

    Sollten auf den Arduino nicht auch die Fuses angepasst werden um BOD zu deaktivieren?
    Außerdem würde ich empfehlen den Bootloader zu überschreiben, damit man die Firmware auch OTA (over the air) flashen kann.

    Antworten
    • Jérôme sagte:

      BOD deaktivieren: Ja.

      OTA: Geschmacksache… Da i.d.R. der Sketch 1x geflasht wird und sich nicht wieder ändert, würde ich es nicht machen. Wenn man jedoch viele Geräte desselben Typs hat, evtl. schon, weil man denn die Device ID nicht im Sketch fest vergeben muss. Aufwand – Nutzen. Der ungeübte Hobbylöter ist u.U. froh, einfach nur den Sketch auf den Arduino zu bekommen. ;)

      Antworten
      • Stefan Riese sagte:

        BOD sollte erwähnt werden. Mein Sensor wollte am Anfang mit 2,5V Batteriespannung nicht angehen. Das kann einen schon mal zur Verzweiflung bringen als Anfänger.

        Antworten
        • Jérôme sagte:

          Ja und nein… Wer hat (gerade als Anfänger!?) einen ISP zur Hand, und weiß wie man die Fuses setzt?
          Aber grundsätzlich ist Unterspannung mit der default BOD von 2.7V schon ein Problem.

          Antworten
          • Stefan Riese sagte:

            Dann sollte man das im Artikel hinterlegen.

            Die Aussage „Die Laufzeit der Batterie ist, je nach Funkempfang zwischen 1,5 und 3 Jahre ausgelegt“ ist sonst sehr irre führend. Die Batteriespannung wird deutlich eher unter 2,7V fallen und den Sensor lahm legen.

            Besonders wenn man einen Bausatz hier im Shop kauft, sollten die Fuses gesetzt sein, sonst wird der Kunde schon ein wenig getäuscht / enttäuscht sein mit der Laufzeit.

  8. Werner sagte:

    Hallo Jerome

    bei github hast du ja viele Beispiele abgelegt
    Beispiel_AskSinPP
    Was bedeuten die Abkürzungen der Sketches bzw gibt es da auch einen Schaltplan?
    Für den DS18B20 gibt es mehrere

    Gruß
    Werner

    Antworten
    • Jérôme sagte:

      Hi!
      Die Bezeichnungen der Geräte, die mit HB-… beginnen findest du, wenn du auf den jeweiligen Ordner klickst. Die Bezeichnungen, die mit HM-… beginnen entsprechen den Bezeichnern, wie sie HomeMatic verwendet.
      Für den DS18B20 gibt es einmal einen generischen Sketch, um bis zu 8 Sensoren/Temperaturen zu erfassen (HB-UNI-Sen-TEMP-DS18B20), den Sketch des Temperaturdifferenzsensors (HM-WDS30-OT2) und den des Temperatursensors (innen) (HM-WDS40-TH-I).

      Der Anschluss des Sensors ergibt eigentlich von selbst aus den defines im Sketch.
      Einen gesonderten Schaltplan gibt es nicht.

      Antworten
  9. Werner sagte:

    Hallo

    Respekt, das sieht ,mal klasse aus. Da werde ich mich mal ranmachen. Ich vermisse nur die Überwachung der batteriespannung für ein LowBatt Message. A/D Wandler hat er ja. Ist das noch vorgesehen?

    Gruß
    Werner

    Antworten
    • Jérôme sagte:

      Hallo Werner!
      Das ist sogar implementiert.
      Mit
      battery.low(22);
      steht der Wert für die LowBat-Mitteilung im Sketch standardmäßig auf 2.2V.

      Antworten
      • Werner sagte:

        Hallo Jerome

        danke für die Info. Werde mir die Tage mal den Quelltext ansehen. Bin da ein kleiner „Profi“ und war einige Jahre Entwickler. Die Anleitung ist echt gut geschrieben für Laien.

        gruß
        Werner

        Antworten
    • Jérôme sagte:

      Meinst du hardwareseitig (z.B. Gehäuse), oder softwareseitig (dass das Gerät als Außensensor in der WebUI dargestellt wird)?

      Antworten
  10. Christoph sagte:

    Hallo Zusammen,

    irgendwas mach ich wohl beim Flashen des Arduino falsch. Der Vorgang läuft wie von dir beschrieben durch und der Sketch wird sauber hochgeladen. Wenn ich allerdings anschließend den Seriellen Monitor starte kommt als Ausgabe nur irgendwelche Buchstabensalat und seltsame Zeichen. Weiß jemand woran das liegt?

    Antworten
    • Jérôme sagte:

      Hallo Christoph.
      Hast du den seriellen Monitor auf „57600 Baud“ eingestellt?
      Wenn dann immer noch Zeichensalat kommt, hast du evtl einen 16MHz Arduino Pro Mini.

      Antworten
      • Christoph sagte:

        Gerade nochmal überprüft, ich hatte die von Ali Express bestellt, die du verlinkt hast. Sollten 8 MHz sein, Monitor steht auch auf 57600 Baud. Noch eine andere Idee? ;-)

        Antworten
        • Jérôme sagte:

          Hast du in der Arduino IDE das richtige Board (Pro Mini) gewählt und den richtigen Prozessor (ATmega328P 3.3V/8MHz) vor dem Flashen eingestellt?

          Antworten
          • Christoph sagte:

            Ah, danke für den Tip. Asche über mein Haupt. Hatte von einem anderen Projekt noch einen Arduino Nano eingestellt. Jetzt gehts!! Danke!

  11. Frank sagte:

    Hallo Sebastian, wenn ich mehrer Module betreiben möchte muss ich dann an der Software irgendetwas ändern? Seriennummer, Geräte-ID? Und wenn ja wie geht das bzw. was muss ich wo eingeben.
    Danke im Voraus.

    Antworten
    • Jérôme sagte:

      Du musst im Sketch die Device ID und Device Serial ändern.
      {0x34, 0x56, 0x81}, // Device ID
      „JPTH10I004“, // Device Serial
      Beide sind eindeutig und dürfen somit nur einmalig in deinem System vorkommen.
      Die Device ID besteht aus 3 Byte (Hex-Werte) und die Device Serial ist immer 10-stellig alphanumerisch.

      Antworten
  12. Mathias sagte:

    Ich habe nun gefunden, für was ich das Projekt verwenden könnte.
    Schimmer-Media hat ein Sensor vorgestellt auf Basis einer NodeMCU, um den Stromverbrauch zu erfassen. Was mir aber interessanter erscheint, ein Luftgütesensir. Mal schauen ob der sich vom wemos d1 mini auch auf den Arduino migrieren läßt.
    Gruß, Mathias

    Antworten
        • Jérôme sagte:

          Den MQ135 an einen Arduino anzuflanschen ginge absolut problemlos, denn er liefert lediglich einen analogen Wert.
          Die Frage ist eher, was man von einem „Luftgütesensor“ für 24h! sowie im Regelbetrieb von ~20 Sekunden. Für Batteriebetrieb also keinesfalls geeignet… jedes Mal 20 Sekunden vorheizen, vorm Messen und dazu noch die hohe Stromaufnahme.

          Antworten
          • Mathias sagte:

            ok,
            war ein Versuch meinerseits.
            Wäre auch zu schön gewesen :(
            Gruß,
            Mathias

          • Mathias sagte:

            wie steht es dann beim TRTC5000?
            Ich habe da einen Workshop gefunden, um den Strom- und Wasserverbrauch ins Smartphone einzubinden. Ich denke der Autor hat mit einem nodeMCU gearbeitet. Ich müßte mir 5 davon machen.
            Gruß
            Mathias

  13. Christoph sagte:

    Hi,

    kleiner Fehler noch in deinem Beitrag, der Amazon Link zu den Elkos zeigt auf welche mit 400V. Ich hab die bestellt und mich gewundert warum die so riesig sind ;-) Korrekt sind natürlich die 25V welche viel kleiner sind.

    Gruß Christoph

    Antworten
  14. Saibot sagte:

    Kann man den Sensor auch in ein Gewächshaus anbringen, oder verfälscht die direkte Sonneneinstrahlung das Messergebniss?

    Antworten
  15. Holger sagte:

    Sehr interessante Anleitung!
    Gibt es hiermit auch die Möglichkeit und Bauteile, eine Lichtschranke zu realisieren?
    Das fehlt mir nämlich noch und der Durchgangssensor von Homematic ist mir definitiv zu teuer, um damit mehrere Fenster auszustatten!

    Antworten
  16. Mike sagte:

    Hallo,
    danke für den tollen Beitrag. Vielleicht habe ich nur das Problem, aber die Conrad-Links funktionieren nicht. Man kann sich die Adresse aber rauskopieren.

    Antworten
  17. Erik sagte:

    Hallo Sebastian,

    in welchem Bereich wird sich die Grundplatine in eurem Shop preislich ca. bewegen?
    Kannst du da schon eine Info zu geben? Danke!

    Gruß
    Erik

    Antworten
  18. Jürgen Nielsen sagte:

    Hallo, super Anleitung!
    Mir ein kleiner Fehler aufgefallen, der berichtigt werden sollte
    Zitat aus der Anleitung:
    >>> Als letzter Schritt müssen noch die beiden Halter für die AA-Zellen verlötet werden. Die richtige Polung seht Ihr auf der Platine und in den Haltern. Dort ist ebenfalls ein „+“ und „-“ zu finden. Plus ist dort, wo die Feder verbaut ist.
    — Richtig wäre: Minus ist dort, wo die Feder verbaut ist!
    Tolle, sehr verständliche Anleitung!
    Gruß
    Jürgen

    Antworten
  19. Michael sagte:

    Eine grundsätzliche Frage:

    Bei BidCoS® handelt es sich ja um ein propriestäres Ptrotokoll der eQ-3 AG, die zur ELV-Gruppe gehört. Hat eQ-3 seine Genehmigung zur Nutzung des Protokolls für solche Eigenbauten gegeben oder gewegt man sich damit im Graubereich oder sogar illegalen Bereich?

    Wäre die Nutzung eine eQ-3-TRX-Moduls eine Option?

    Antworten
    • Jérôme sagte:

      Sagen wir es mal so:
      Die von dir genannte „geschützte“ Bezeichnung des Funkprotokolls findet sich in der Bibliothek und in den Projekten nirgends wieder.
      Die AskSinPP-Bibliothek lässt einen Arduino in Verbindung mit einem Funkmodul eine „Sprache“ sprechen, die mit der HomeMatic Zentralensoftware kompatibel ist.

      Sie ist auch nur für nicht-kommerzielle Zwecke zu verwenden!
      (Siehe Lizenzbedingungen des Lib-Erstellers; http://creativecommons.org/licenses/by-nc-sa/3.0/de/)
      Die Bezeichnungen für die Geräte (HM-…), die in den examples zu finden sind, sind wiederum nicht markenrechtlich geschützt. Zumindest habe ich beim dpma dazu nichts finden können.

      Somit sehe *ich* für die rein private [fett + unterstrichen] Nutzung keine Bedenken.

      Ja, ein TRX Modul lässt sich wunderbar verwenden.
      Anschlussbelegung findest du hier:
      https://wiki.fhem.de/wiki/HomeMatic_Asksin_Library

      Antworten
      • Michael sagte:

        Es geht nicht um irgendwelche Markennamen oder Begriffe – Sie können nicht einfach ohne Nachfrage & Erlaubnis ein propritäres Protokoll verwenden, das ggf. geschützt ist, nur weil Sie mit nicht-kommerzieller Nutzung argumentieren.

        Antworten
        • Frank sagte:

          Sorry, aber hier sind sie im Irrtum. Selbstverständlich ist das Nachprogrammieren eines Protokolls erlaubt. Wäre es nicht so müssten viele „kompatible“ Geräte sofort aus dem Verkehr gezogen werden. Um nur mal ein Beispiel von vielen zu nennen: Nachfüllbare Druckerpatronen von Fremdherstellern. Für die Protokolle der in den Originalpatronen verwendeten Sicherheitschips wird selbstverständlich von den Herstellern keine Lizenz vergeben. Trotzdem werden diese Chips nachgebaut und das Protokoll nachprogrammiert und bisher hat es kein Hersteller geschafft dagegen vor zu gehen.

          Antworten
    • Sebastian
      Sebastian sagte:

      …Danke für den Hinweis! Habe ich gester auch bemerkt und Alex hat mich auch schon darauf aufmerksam gemacht ;-) Der Artikel wird nachher noch uberarbeitet

      Antworten
      • Jérôme sagte:

        Perfekt.
        Echt Klasse, wie viel Mühe & Arbeit du in die Doku gesteckt hast, so dass auch Laien zum Ziel kommen!

        Es gibt sicher noch viele weitere Projekte, die einer ausführlicheren Anleitung bedürfen. :)

        Antworten
        • Sebastian
          Sebastian sagte:

          Merci ;-) Ist echt ein spannendes Thema und bisher war es nur wenigen Lesern zugänglich, daher freut es mich, wenn ich damit auch andere Leser erreichen kann, die Spaß daran haben. Wir können uns gerne über weitere Projekt unterhalten ;-)

          Antworten
          • Jérôme sagte:

            Es gibt ja schon eine Vielzahl von HomeMatic Geräten (sowohl Sender als auch Aktoren), die sich mithilfe dieser Library sowohl mit/ohne der Uni-Platine von Alex, nutzen lassen.

            Ein Einsteigerartikel wie auf meiner Github Seite https://github.com/jp112sdl/Beispiel_AskSinPP wäre toll.

            Nur halt in hübsch – und detaillierter/verständlicher/ausführlicher. :)

            Wenn du Lust und Laune darauf hast, meld dich.

  20. Mathias sagte:

    Schade……
    warst leider zu früh oder ich zu spät!
    ich habe mir einenen Sensor für’s Bad von Xiaomi gekauft und über IObroker eingebunden.
    Läuft super das Teil und macht was es soll.
    Dazu braucht man den Hygrometer und das Gateway.
    Da ich noch 4 weitere Bewegungsmelder für ca EUR 10,00 je Stück bei Aliexpress geordert habe, macht das ganze wieder Sinn.
    Meine Türklingel habe ich mit einem wireless Switch smart gemacht.
    Ich kenne keinen anderen Hersteller als Xiaomi, der Schaltaktoren OHNE Neutralleiter auf dem Markt gebracht hat. damit will ich das Flurlicht einschalten, sobald jemand bei mir klingelt.
    4 Rauchmelder sind auch schon unterwegs zu mir.
    Das ganze geht leider nur über den Umweg von IObroker.
    Gruß, Mathias
    Mathias

    Antworten

Dein Kommentar

An Diskussion beteiligen?
Hinterlasse uns Deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

* Die Checkbox für die Zustimmung zur Speicherung ist nach DSGVO zwingend. Dieses Formular speichert Ihren Namen, Ihre Email Adresse sowie den Inhalt, damit wir die Kommentare auf unsere Seite auswerten können. Weitere Informationen finden Sie auf unserer Seite der Datenschutzbestimmungen.

Ich akzeptiere die Speicherung der Daten.