Universalsensor für Homematic

Hier möchte ich gerne den Nachbau des Universalsensors von Dirk beschreiben. Der Sensor existiert in 2 Varianten:

  • Innensensor ( HB-UW-Sen-THPL-I )
  • Aussensensor (HB-UW-Sen-THPL-O)

Innensensor

Auf dem Innensensor kann man 3 Fühler installieren:

Weitere spezielle Bauteile sind

Die Links bei Aliexpress, sind nur Beispiele. Leider kommt es immer wieder vor, das falsche Bauteile geliefert werden. Den BMP180 hab ich von einem günstigem Breakoutboard gelötet.

Der Innensensor kann erweitert werden für 1-wire erweitert werden. Ich habe das nicht benutzt und den Platz für 2 AAA Batterien verwendet.

Die Platine ist für das Gehäuse SUPERTRONIC BOX-SENS-WHITE entwickelt worden.

Aussensensor

Der Aussensensor unterscheidet sich nur geringfügig vom Innensensor. Er enthält Platz für:

  • Temperatur / Luftdruck (BMP180)
  • Helligkeit (TSL2561)

Weitere Sensoren können über einen I2C Bus angesteuert werden.

Aufbau

  1. Drosselspule und Max1724 + C6 und C7 löten und die Spannung von 3,3V messen.
  2. Atmega und restlichen Widerstände, Kondensatoren, Konfigschalter und LED löten.
  3. Steckerleiste anlöten

Nun kann der Atmega mit dem Bootloader geflasht werden.

Bootloader für OTA (Over the Air)

Asksin OTA Bootloader hier herrunterladen: https://github.com/kc-GitHub/Asksin_OTA_Bootloader

In der Datei devices/HB-UW-Sen-THPL.h sind der Typ, die Serialnumber (z.B. UWS7475150) und die HM-ID zu ändern:

#define HM_TYPE         0xF1, 0x01    // DIY (HB-UW-Sen-THPL-I)
#define HM_SERIAL       'U','W','S','7','4','7','5','1','5','0'
#define HM_ID           0xEA, 0xD5, 0xC9

dann:

make clean HB_UW_Sen_THPL

und ein Bootloader-AskSin-OTA-HB_UW_Sen_THPL.hex wird erstellt.

Der Sensor wird wie ein Arduino Pro Mini angeschlossen:

Jetzt kann bereits der Bootloader installiert werden:

sudo bin/avrdude -Cbin/avrdude.conf -p m328p -P gpio -c gpio -U lfuse:w:0xE2:m -U hfuse:w:0xD0:m -U efuse:w:0x06:m -U lock:w:0x2F:m -e -Uflash:w:Bootloader-AskSin-OTA-HB_UW_Sen_THPL.hex:i

Ist der Bootloader erfolgreich installiert, leuchtet die Diode 8 mal.

Arduino Bootloader

Alternativ kann auch ein Ardunino Bootloader eingespiel werden. Dazu wird eine der 3 Möglichkeiten gewählt. Ich bevorzuge die Variante mit meinem Raspberry Pi, da ich dort komfortable Scripte abfahren kann.

Für den Betrieb ohne externen Oszillator verwende ich diese Settings:
bin/avrdude -Cbin/avrdude.conf -p m328p -P gpio -c gpio -U lfuse:w:0xE2:m -U hfuse:w:0xD0:m -U efuse:w:0x06:m -U lock:w:0x2F:m -e -Uflash:w:ATmegaBOOT_168_atmega328_pro_8MHz.hex:i
Danach verbinde ich den Sensor mit einem FTDI-USB-Connector und spiele die Firmware mit der Arduino-IDE ein.

 

Firmware

Zum Einspielen der Firmware verwende ich einen NanoCUL. Damit kann ich OTA das Update einspielen.

Der nanoCUL ist mit dem Rasperry Pi verbunden. Mit dem Kommando:

sudo flash-ota -c /dev/serial/by-id/usb-FTDI_FT232R_USB_UART_AI03VVGB-if00-port0 -f $FILE_NAME.eq3 -s UWS7475150

startet der Updatevorgang.