Homematic Ultraschall Sensor

Begonnen von gloob, 01 August 2018, 10:03:37

Vorheriges Thema - Nächstes Thema

gloob

Hallo,

Ich möchte euch gerne ein aktuelles Projekt von mir Vorstellen. Es handelt sich um einen Ultraschall-Sensor zur Entfernungsmessung mit Homematic Interface.



Hardware
Die Hardware basiert auf unterschiedlichen Platinen.

Prinzipiell kann man alles nehmen wo ein Arduino Pro Mini + CC1101 + Taster + IOs drauf passt.
Das Ultraschallmodul wird an die Pins: 9,7,6,5 angeschlossen.

Pin 9 = GND
Pin 8 = NC
Pin 7 = Echo
Pin 6 = Trigger
Pin 5 = VCC

Der Jumper auf der Rückseite des US-100 darf nicht gesteckt sein.

Die erste Version
basiert auf dem Universalsensor Platine von Dirk (https://wiki.fhem.de/wiki/Universalsensor) und einem US_100 Ultraschall-Sensor.
Ein passender Schaltplan ist im Wiki verlinkt. Ich habe den ATMega mit den notwendigen Komponenten sowie den Taster und den Spannungsteiler für die Batteriemessung bestückt.

Die dritte Version
nutzt einen Arduino Pro Mini sowie eine Adapterplatine. Somit ist das verlöten von SMD Bauteilen nicht notwendig.
Der Pro Mini sollte jedoch auf Stromsparmodus getrimmt werden: https://asksinpp.de/Grundlagen/01_hardware.html#stromversorgung

Die vierte Version
nutzt einen Arduino Pro Mini sowie eine Adapterplatine (https://github.com/TomMajor/SmartHome/tree/master/HB-UNI-Sensor1). Somit ist das verlöten von SMD Bauteilen nicht notwendig.
Der Pro Mini sollte jedoch auf Stromsparmodus getrimmt werden: https://asksinpp.de/Grundlagen/01_hardware.html#stromversorgung

Als Spannungsquelle nutze ich 2 AAA Batterien.

Arduino Pro Mini: https://www.aliexpress.com/item/Free-shipping-improved-version-of-pro-mini-electronic-building-blocks-Interactive-Media-ATMEGA328P-5V-16M/1298250308.html
CC1101: https://www.aliexpress.com/item/CC1101-Wireless-Module-Long-Distance-Transmission-Antenna-868MHZ-M115-For-FSK-GFSK-ASK-OOK-MSK-64/32630602112.html
US-100: https://de.aliexpress.com/item/1-pc-US-100-Ultrasonic-Sensor-Module-DC-2-4V-5V-With-Temperature-Compensation-Range-Distance/32369369824.html
Batterienhalter: https://de.aliexpress.com/item/Plastic-2-X-1-5V-AAA-Battery-Clip-Holder-With-Pin-Case-Black-Plastic-Case-Storage/32789950480.html

Das Dateien für das Drucken des Gehäuses habe ich auf Thingiverse hochgeladen:
V1: https://www.thingiverse.com/thing:2975998
V3: https://www.thingiverse.com/thing:3584718
V4: https://www.thingiverse.com/thing:3631375




Firmware
Die Firmware basiert auf papas Custom-Sensor: https://github.com/pa-pa/AskSinPP/tree/V3/examples/custom/HB-GEN-SENS
Den aktuellen Stand meiner verwendeten Version hänge ich hier an.



Integration in FHEM
Für die Integration in FHEM muss das Modul HMConfig_AskSinPPCustom.pm (https://github.com/pa-pa/AskSinPP/tree/V3/examples/custom/contrib/FHEM) installiert werden.
Die Datei muss in das FHEM Verzeichnis (z.B. opt\fhem\FHEM) kopiert werden und FHEM neu gestartet werden.
cd /opt/fhem/FHEM
wget -O HMConfig_AskSinPPCustom.pm https://raw.githubusercontent.com/pa-pa/AskSinPP/V3/examples/custom/contrib/FHEM/HMConfig_AskSinPPCustom.pm



Zum Einbinden des Sensors in FHEM muss die VCCU oder das Homematic Gateway in den Anlernmodus gesetzt werden

set VCCU hmPairForSec 60


Anschließend müssen die Batterien in den Sensor eingelegt und der Konfig-Button gedrückt werden.

Nach dem erfolgreichen Anlernen gibt es 2 neue Devices:


define HM_xxxxxx CUL_HM xxxxxx
attr HM_xxxxxx IODev myHmUARTLGW
attr HM_xxxxxx IOgrp vccu:myHmUARTLGW
attr HM_xxxxxx autoReadReg 4_reqStatus
attr HM_xxxxxx expert 2_raw
attr HM_xxxxxx firmware 0.1
attr HM_xxxxxx model HB-GEN-SENS
attr HM_xxxxxx room CUL_HM
attr HM_xxxxxx serialNr FHEMxxxxxx
attr HM_xxxxxx subType custom
attr HM_xxxxxx webCmd getConfig:clear msgEvents



define HM_xxxxxx_Values CUL_HM xxxxxx01
attr HM_xxxxxx_Values userattr valuesformat
attr HM_xxxxxx_Values model HB-GEN-SENS
attr HM_xxxxxx_Values peerIDs
attr HM_xxxxxx_Values room CUL_HM
attr HM_xxxxxx_Values valuesformat 2:distance:10 1:batVoltage:10


Zwei Attribute müssen im HM_xxxxxx_Values selbst definiert werden:

attr HM_xxxxxx_Values userattr valuesformat
attr HM_xxxxxx_Values valuesformat 2:distance:10 1:batVoltage:10




Einstellen des Sendeintervalls
Das Sendeintervall steht per Default auf 180 Sekunden. Kann aber über das Setzen eines Registers geändert werden

set HM_xxxxxx_Values regSet eventDlyTime ZEIT_IN_SEKUNDEN


Nach dem Setzen des Intervalls muss der Konfig-Button am Sensor gedrückt werden um den Wert zu übernehmen.



Integration in CCU
Integration über die alternative Firmware (HB-UNI-Sens-Dist-US-US100) und https://github.com/jp112sdl/jp-hb-devices-addon



Firmwareupdate
V1: Die Geräte sind mit einem OTA-Bootloader geflasht, dass heißt Firmwareupdate können mit einem CUL übertragen werden.
V3: Die Geräte können mit einem einfachen FTDI Adapter geflasht werden.



CCU
Firmware für die CCU hinzugefügt (HB-UNI-Sen-DIST-US-US100)
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

papa

Ich würde das eventDlyTime in den V3 mergen. Dann haben wir da eine stabile Basis für den Sensor.
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

PeMue

#2
Hallo Stefan,

Danke für die ausführliche Anleitung. Ich habe noch ein paar Fragen:
- Könnte auch Dirk's Firmware für den Ultraschallsensor geflasht werden (und sein FHEM Modul verwendet werden)?

Zitat von: gloob am 01 August 2018, 10:03:37
Die Geräte sind mit einem OTA-Bootloader geflasht, dass heißt Firmwareupdate können mit einem CUL übertragen werden.
- Müsste dann nicht in Deinem Sketch folgende Zeile
//#define USE_OTA_BOOTLOADER            // define this to read the device id, serial and device type from bootloader section ohne Kommentar am Anfang sein?

Danke + Gruß

Peter
RPi3Bv1.2 rpiaddon 1.66 6.0 1xHM-CC-RT-DN 1.4 1xHM-TC-IT-WM 1.1 2xHB-UW-Sen-THPL-O 0.15 1x-I 0.14OTAU  1xCUNO2 1.67 2xEM1000WZ 2xUniroll 1xASH2200 3xHMS100T(F) 1xRFXtrx 90 1xWT440H 3xTFA30.3150 5xFA21
RPi1Bv2 LCDCSM 1.63 5.8 2xMAX HKT 1xMAX RT V200KW1 Heizung Wasser

gloob

Zitat von: papa am 01 August 2018, 11:11:06
Ich würde das eventDlyTime in den V3 mergen. Dann haben wir da eine stabile Basis für den Sensor.

Das wäre sehr gut, dann hätte man einen festen Stand auf den man verweisen kann.
Vielen Dank.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

gloob

#4
Zitat von: PeMue am 01 August 2018, 11:13:17
- Könnte auch Dirk's Firmware für den Ultraschallsensor geflasht werden (und sein FHEM Modul verwendet werden)?

Dirks Firmware kann auch benutzt werden, allerdings kann man dann das Sendeintervall nicht einstellen, sondern müsste eine neue Firmware aufspielen.
Die Batteriespannung wird glaube ich auch nicht mit übertragen sondern nur ein "OK/NOK".

Zitat von: PeMue am 01 August 2018, 11:13:17
- Müsste dann nicht in Deinem Sketch folgende Zeile
//#define USE_OTA_BOOTLOADER            // define this to read the device id, serial and device type from bootloader section ohne Kommentar am Anfang sein?

Das Define gibt nur an ob die ID, Seriennummer und Devicetype aus dem Bootloader gelesen werden. Ein OTA-Update funktioniert auch ohne das Define. Die Seriennummer und co. müssen auf diese Weise richtig in der Firmware stehen.

Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

Pfriemler



Zitat von: gloob am 01 August 2018, 11:18:39
Dirks Firmware ... kann man dann das Sendeintervall nicht einstellen, sondern müsste eine neue Firmware aufspielen.
Die Batteriespannung wird glaube ich auch nicht mit übertragen sondern nur ein "OK/NOK".
Ich nutze seit mehr als einem Jahr Dirks 0.15, da wird die Batteriespannung übertragen. Verwende die 60s-Firmware, Haltbarkeit der Batterien mind. 1 Jahr.

via Tapatalk

"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

gloob

Zitat von: Pfriemler am 01 August 2018, 11:36:24
Ich nutze seit mehr als einem Jahr Dirks 0.15, da wird die Batteriespannung übertragen. Verwende die 60s-Firmware, Haltbarkeit der Batterien mind. 1 Jahr.

via Tapatalk

Okay dann hatte ich das mit der Batteriespannung falsch im Kopf. Aber es gibt ja viele Wege nach Rom  ;)
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

papa

Zitat von: gloob am 01 August 2018, 11:13:54
Das wäre sehr gut, dann hätte man einen festen Stand auf den man verweisen kann.
Ist jetzt auch im V3 Branch
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

papa

Bitte mal die Links vom master auf den V3 ändern
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

gloob

Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

Benni

Hallo,

gibt es eigentlich einen Grund (außer der Batterieschonung) weshalb eventDlyTime auf minimal 15 Sekunden begrenzt ist?

Ich frage deshalb, weil ich den Sensor gerne bei mir im Wohnwagen für die Füllstandsmessung des Frischwassertanks verwenden möchte und da hätte ich aktuelle Werte gerne etwas zügiger (spez. wenn ich ans Befüllen denke). Ich würde den Sensor dazu per Step-Down ans 12V-Bordnetz anschließen, von daher wäre mir die Batterielebenszeit ja wurscht.
Dann dürfte auch ein 1-Sekunden-Intervall möglich sein, was für meine Zwecke dann ausreichend wäre.

gb#

papa

Noch andere Sender Zeit zum Senden übrig lassen
BananaPi + CUL868 + CUL433 + HM-UART + 1Wire

Benni

Zitat von: papa am 29 August 2018, 16:22:10
Noch andere Sender Zeit zum Senden übrig lassen

Ok! Das Leuchtet natürlich ein.

Dann werde ich das anders lösen und zusätzlich noch einen vorhandenen Schwimmerschalter integrieren. Für die "genaue" Ermittlung des Füllstandes kann ich dann auch mit einem längeren Intervall leben.

Danke!

gb#

tndx

Moin zusammen,

kann es sein, dass gloobs Firmware die Spannung hinter dem StepUp misst? Ich wundere mich über

batVoltage 3.3

meines Sensors, obwohl 2 AA-Zellen mit jeweils 1,25 V drin stecken.

Da ich Dirks Platine nutze, ist die notige Hardware zur Messung der Batterispannung vorhanden, kann mir jemand einen Tip geben, wie ich die Firmware anpassen kann?

Danke im Voraus!

gloob

Kommt natürlich immer drauf an ob man den step-up auch bestückt hat. Ich nutzender Platinen ohne und daher ist die Messung in der Firmware auch direkt am Input Pin und nicht vor dem Step-up
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway