Skip to content
Branch: master
Find file History
Permalink
Type Name Latest commit message Commit time
..
Failed to load latest commit information.
CCU_RM Unified CCU/RM AddOn install files for HB-UNI-Sensor1 May 1, 2019
FHEM HB-UNI-Sensor1, fix FHEM brightness scaling bug Apr 28, 2019
Images HB-UNI-Sensor1, update documentation May 14, 2019
PIR Update documentation Feb 24, 2019
Sensors Reduce RAM usage in tmBattery class May 14, 2019
DeviceID.h
HB-UNI-Sensor1.ino Add HB-UNI-Sensor1 VEML6070 (UV sensor) support Apr 9, 2019
README.md HB-UNI-Sensor1, update documentation May 14, 2019

README.md

Universalsensor HB-UNI-Sensor1

  • Demonstriert einen HomeMatic/RaspberryMatic/FHEM Universalsensor für Temperatur, Luftdruck, Luftfeuchte, Helligkeit usw.
  • modifizierbar für andere Sensoren
  • konfigurierbares Sendeintervall über WebUI
  • konfigurierbare Höhe (für Berechnung des Luftdrucks auf Meeresniveau/Normaldruck) über WebUI
  • über die defines am Anfang des Sketches können entweder Dummy Werte für die Sensoren (zum Testen der Anbindung an HomeMatic/RaspberryMatic/FHEM) oder reale Sensoren aktiviert werden Beispiel:
    #define SENSOR_BME280 // realer BME280 angeschlossen
    //#define SENSOR_BME280 // es werden BME280 Dummy Werte gesendet
  • Es können mehrere HB-UNI-Sensor1 an einer Zentrale verwendet werden. Dafür müssen sich die einzelnen Sensoren nur in Device ID und Device Serial unterscheiden:
    const struct DeviceInfo PROGMEM devinfo =
    { 0xA5, 0xA5, 0x00 }, // Device ID
    "UNISENS001", // Device Serial
  • Ich empfehle den MAX44009 Helligkeitssensor anstatt dem TSL2561, siehe
    SensorTest_Lux
  • Der Status eines digitalen Eingangs kann mit übertragen werden. Falls diese Option aktivert ist wird bei einer Änderung an diesem Eingang sofort ein neues Telegramm an die Zentrale gesendet, unabhängig vom eingestellten Sendeintervall.
  • Folgende Sensoren sind zur Zeit beim HB-UNI-Sensor1 aktivierbar:
    #define SENSOR_DS18X20
    #define SENSOR_BME280
    #define SENSOR_BMP180
    #define SENSOR_TSL2561
    #define SENSOR_MAX44009
    #define SENSOR_SHT10
    #define SENSOR_DIGINPUT
    #define SENSOR_VEML6070

Prototyp

pic

Schaltung

pic

Aufbau Aussensensor

pic

pic

pic

pic

pic

pic

Platine

Schaltung

Verringerung Ruhestrom

Messung der Batteriespannung

pic

  • Option 1: Standard, UBatt = Betriebsspannung AVR
    keine zusätzliche Hardware notwendig
    #define BAT_SENSOR tmBattery

  • Option 2: Batteriespannungsmessung für StepUp/StepDown
    2 zusätzliche Widerstände notwendig
    #define BAT_SENSOR tmBatteryResDiv<A0, 9, 5700>
    // sense pin A0, activation pin D9, Faktor = Rges/Rlow*1000, z.B. 470k/100k, Faktor 570k/100k*1000 = 5700

  • Option 3: Echte Batteriespannungsmessung unter Last
    #define BAT_SENSOR tmBatteryLoad<A0, 9, 4000, 200>
    // sense pin A0, activation pin D9, Faktor = Rges/Rlow*1000, z.B. 10/30 Ohm, Faktor 40/10*1000 = 4000, 200ms Belastung vor Messung

Die Batteriespannungsmessung unter Last dient u.a. dem Schutz vor einem "Babbling Idiot, siehe Babbling Idiot Protection

Aus meiner Sicht würde es sehr helfen, eine echte Messung des Batteriezustands unter Last zu haben, um frühzeitig leere Batterien zu erkennen und zu tauschen. Bekanntermaßen sagt eine Spannungsmessung an unbelasteter Batterie, je nach Batterie- bzw. Akkutyp, nicht viel über den Ladezustand aus.

Die Schaltung belastet die Batterie bzw. den Akku für einige Hundert Millisekunden und misst dabei die Spannung. Dies führt meiner Meinung nach zu realistischeren Werten über den Batteriezustand als eine asynchrone und unbelastete Messung.

Dazu wurde eine neue Batterieklasse nach Vorbild von papas Batterieklassen erstellt. Sie heißt hier tmBatteryLoad und befindet sich unter Sensors/tmBattery.h
Die Aktivierung ist oben in Option 3 dargestellt.
Mit dieser Klasse und der Schaltung werden die Batterien bei 3V mit ca. 75mA für die kurze Zeit der Messung belastet. Anpassungen an andere Spannungen und Ströme sind natürlich leicht über die Widerstände R2/R3 möglich. Momentan geschieht das 2 mal am Tag.
battery.init(seconds2ticks(12UL * 60 * 60), CLOCK);

Das Bild zeigt den Einbruch der Batteriespannung wenn für 200ms mit 75mA belastet wird. Die Spannung bricht um 142mV ein und wird am Ende der 200ms gemessen.
pic

RaspberryMatic/CCU2/CCU3 Installation

Einstellungen/Systemsteuerung/Zusatzsoftware -> Datei CCU_RM/HB-UNI-Sensor1-addon.tgz installieren.

pic

RaspberryMatic WebUI

Der angemeldete Sensor auf der RaspberryMatic:

pic

pic

pic

FHEM Installation

Die Datei FHEM/HMConfig_UniSensor1.pm nach /opt/fhem/FHEM kopieren, dann FHEM neustarten.

pic

pic

Parameter Höhe einstellen:
"Ich konnte bei meinem THPL Sensor mit BME280 und MAX44009 über getConfig // Config drücken // set regSet altitude 590 // Config drücken // getConfig // Config drücken die Höhe einstellen. Bitte berichtigt mich, wenn ich da zu viel drücke und mache- so hat es jedenfalls funktioniert ::)"
FHEM user kpwg

Benutzerspezifischen Sensordaten

Ab Firmware 0x13 können zwei extra Byte 'customData' in der Payload mit benutzerspezifischen Daten belegt und mit einer alternativen Firmware xml-Datei der RaspberryMatic/CCU2/CCU3-Zentrale bzw. mit dem Perl-Skript FHEM zur Verfügung gestellt werden.

Diese alternative Firmware xml-Datei muss für die Behandlung von 'customData' angepasst werden und im Verzeichnis
/usr/local/addons/hb-uni-sensor1/custom_firmware
liegen.

Das AddOn Skript sorgt dann dafür, dass die alternativen Firmware xml-Dateien bei Aktionen wie

  • AddOn Update-Installation,
  • Einspielen eines RaspberryMatic/CCU2/CCU3 Backups,
  • Update der RaspberryMatic/CCU2/CCU3 Firmware

wieder in das richtige Verzeichnis kopiert und in der Zentrale berücksichtigt werden.

Ein Beispiel für eine alternative Firmware xml-Datei, die zusätzlich den gemessenen UV-Index für den VEML6070 Sensor zur Verfügung stellt, liegt nach Installation des AddOn im Verzeichnis
/usr/local/addons/hb-uni-sensor1/custom_firmware_bsp

Zur Aktivierung muss dieses Verzeichnis in
custom_firmware
umbenannt und anschließend die Zentrale neugestartet werden.

Danach (und bei jeder weiteren eventuellen Änderung in der alternativen Firmware xml-Datei) muss ein bereits vorhandener HB-UNI-Sensor1 abgelernt/gelöscht und wieder neu angelernt werden!
Nur so werden die xml Änderungen in die Zentrale übernommen.

pic

Bewegungsmelder mit PIR AS312 am digitalen Eingang

  • Der Inverter mit Transistor sorgt für minimalen Ruhestrom (keine Bewegung, PIR Ausgang Low, Transistor gesperrt) und trägt außerdem durch die Entkopplung zum sicheren Betrieb bei (keine unerwünschte Auslösung des PIR während des 868MHz Sendevorgangs an die Zentrale).
  • Die Bilder demonstrieren die Ideen und den konstruktiven Aufbau von user fhemfreund, getrimmt auf minimale Gerätegröße. Danke für den Ideenaustausch und das zur Verfügung gestellte Gerät. 😄
  • Mit der RTC Option beträgt der Ruhestrom inklusive PIR nur ca. 14uA und es besteht somit die Hoffnung dass die eingesetzte Batterie CR2450 möglichst lange hält.

pic pic pic pic pic pic


Benötige Libraries

AskSinPP Library
EnableInterrupt
Low-Power

Für einen DS18x20 Sensor (Temperatur):
OneWire

Für einen BME280 Sensor (Temperatur/Druck/Feuchte):
BME280

Für einen BMP180 Sensor (Temperatur/Druck):
BMP180

Für einen TSL2561 Sensor (Helligkeit in Lux):
TSL2561

Für einen MAX44009 Sensor (Helligkeit in Lux):
keine zusätzliche Library nötig.

Für einen SHT10 Sensor (Feuchte):
SHT10

Für einen VEML6070 Sensor (UV-Index):
keine zusätzliche Library nötig.

Links

FHEM Forum: Selbstbau HM_WDS10_TH_O mit Luftdruckmessung

FHEM Forum: AskSin++ Library

HomeMatic Forum: Hardwareentwicklung und Selbstbau von Aktoren und Sensoren

Warnung vor dem Flashen von 3,3V Geräten mit USBasp Klones

Flashen PLHT Sensor

Lizenz

Creative Commons Lizenzvertrag
Dieses Werk ist lizenziert unter einer Creative Commons Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 4.0 International Lizenz.

You can’t perform that action at this time.