OpenMQTTGateway: Unterschied zwischen den Versionen
(erste Version) |
DasQ (Diskussion | Beiträge) K (→Links: ergänzt) |
||
(7 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
== Einführung == | == Einführung == | ||
[https://github.com/1technophile/OpenMQTTGateway OpenMQTTGateway] ist eine firmware für ESP8266 bzw. ESP32, mit der sich neben verschiedenen Sensoren (BME280 u.a.) auch Infrarot- und 433MHz-Signale empfangen und senden lassen. In FHEM steht derzeit hauptsächlich die Auswertung diverser BLE-Geräte im Vordergrund. | [https://github.com/1technophile/OpenMQTTGateway OpenMQTTGateway] ist eine firmware für ESP8266 bzw. ESP32, mit der sich neben verschiedenen Sensoren (BME280 u.a.) auch Infrarot- und 433MHz-Signale empfangen und senden lassen. In FHEM steht derzeit hauptsächlich die Auswertung diverser BLE-Geräte im Vordergrund. | ||
Setzt man einen ESP32 ein, genügt hierzu das blanke Board ohne Zusatzhardware, es kann eine vorkompilierte | Setzt man einen ESP32 ein, genügt hierzu das blanke Board ohne Zusatzhardware, es kann eine vorkompilierte Firmware geflasht werden (USB-Seriell-Wandler erforderlich). | ||
Sobald man die Zugangsdaten zum MQTT2_SERVER eingetragen hat, sollte ein entsprechendes MQTT2_DEVICE-Gerät automatisch erstellt werden. | Sobald man die Zugangsdaten zum MQTT2_SERVER eingetragen hat, sollte ein entsprechendes MQTT2_DEVICE-Gerät automatisch erstellt werden. | ||
Mit <code>set MQTT2_OMG1 attrTemplate OpenMQTTGateway_MCU</code> wird dieses Gerät als zentrales Empfangsgerät konfiguriert, das dann über die ''bridgeRegexp'' die eingehenden Informationen | Mit <code>set MQTT2_OMG1 attrTemplate OpenMQTTGateway_MCU</code> wird dieses Gerät als zentrales Empfangsgerät konfiguriert, das dann über die ''bridgeRegexp'' die eingehenden Informationen zu allem, was nicht BTLE ist jeweils in separate MQTT2_DEVICE-Instanzen verteilt. | ||
Erst wenn dieses Device konfiguriert wurde, werden weitere attrTemplate geladen, die dann im Folgenden Verwendung finden. | Erst wenn dieses Device konfiguriert wurde, werden weitere attrTemplate geladen, die dann im Folgenden Verwendung finden. | ||
== OpenMQTTGateway und BTLE == | == OpenMQTTGateway und BTLE == | ||
=== | === OpenMQTTGateway_MCU === | ||
{{Hinweis|Das ältere attrTemplate ''oMQTTgw_BT'' ist nicht mehr erforderlich!}} | |||
In diesem Device landen - sofern man keine whitelist- oder blacklist setzt - einfach alle BT-Infos, die das Gateway im Lauf eines Tages so einsammeln. Damit dies einigermaßen überschaubar bleibt, werden regelmäßig alle diesbezüglichen Readings (bis auf wenige Ausnahmen wie ''associatedWith'') gelöscht, die älter sind als 24 Stunden. Dabei werden die JSON-Daten so aufbereitet, dass man erkennen kann, was eigentlich jeweils mit einer bestimmten BT-Kennung zusammengehört. | |||
Daneben kann man eben ein paar BT-spezifische Befehle absetzen, | Daneben kann man eben ein paar BT-spezifische Befehle absetzen, insbesondere white- und blacklists anlegen oder direkte Befehle an einzelne BT-Geräte versenden (wie z.B. ein "SwitchBot"-Gerät)... | ||
Erst die weiteren (BT-) Geräte, die man dann (mit Hilfe | Erst die weiteren (BT-) Geräte, die man dann (mit Hilfe der Readings am Gatewas) erstellt, indem man mit dem passenden attrTemplate die BT-Adresse angibt, sind dann die eigentlichen Nutz-Devices. Anders als sonst bei MQTT2_DEVICE gewohnt, werden diese weiteren Instanzen von MQTT2_DEVICE nicht automatisch erstellt, sondern können nur halbautomatisiert erstellt werden, indem man das passende attrTemplate anwendet und diesem die passende BT-ID mitteilt. | ||
Beispiel für z.B. einen ''MiFlora''-Sensor: <code>set MQTT2_OMG1 attrTemplate OpenMQTTGateway_BT_mi_flora_sensor</code> | Beispiel für z.B. einen ''MiFlora''-Sensor: <code>set MQTT2_OMG1 attrTemplate OpenMQTTGateway_BT_mi_flora_sensor</code> | ||
Es folgt die Anfrage der zum gewünschten Gerät gehörenden BT-ID; diese kann man den | Es folgt die Anfrage der zum gewünschten Gerät gehörenden BT-ID; diese kann man den Reading am Gateway entnehmen. Entsprechend verfährt man für andere Geräte. | ||
=== Anwendungsbeispiele === | === Anwendungsbeispiele === | ||
==== Temperatur und Luftfeuchtigkeit ==== | |||
Es werden diverse Temperatur- und Luftfeuchtesensoren unterstützt, u.A. praktisch alle Xiaomi-Cleargrass und Mijia. Für die LYWSD03MMC kann dabei eine [https://github.com/pvvx/ATC_MiThermometer alternative Firmware] aufgespielt werden. | |||
==== Anwesenheitserkennung mit Gigaset Keeper G-Tag ==== | ==== Anwesenheitserkennung mit Gigaset Keeper G-Tag ==== | ||
'''Zielsetzung:''' | '''Zielsetzung:''' | ||
Zeile 32: | Zeile 33: | ||
===== Anlegen des OpenMQTTGateway in FHEM: ===== | ===== Anlegen des OpenMQTTGateway in FHEM: ===== | ||
Via autocreate wie oben beschrieben oder manuell: | Via [[autocreate]] wie oben beschrieben oder manuell: | ||
defmod MQTT2_OpenMQTTGateway_ESP32_BLE MQTT2_DEVICE OpenMQTTGateway_ESP32_BLE | defmod MQTT2_OpenMQTTGateway_ESP32_BLE MQTT2_DEVICE OpenMQTTGateway_ESP32_BLE | ||
Zeile 38: | Zeile 39: | ||
===== Anlegen der einzelnen G-Tags als MQTT2 Device ===== | ===== Anlegen der einzelnen G-Tags als MQTT2 Device ===== | ||
Die zu verwendenden MAC-Adressen der G-Tags sollten bereits bekannt sein und werden ohne Trennzeichen angegeben. z.B. '''FFFFC424A123'''. | Die zu verwendenden MAC-Adressen der G-Tags sollten bereits bekannt sein und werden ohne Trennzeichen angegeben. z.B. '''FFFFC424A123'''. | ||
Zeile 45: | Zeile 45: | ||
set MQTT2_OpenMQTTGateway_ESP32_BLE attrTemplate OpenMQTTGateway_BT_gtag <MAC Adresse> | set MQTT2_OpenMQTTGateway_ESP32_BLE attrTemplate OpenMQTTGateway_BT_gtag <MAC Adresse> | ||
Im Raum MQTT2_DEVICE taucht jetzt ein neues Device '' OMG_<MAC Adresse>'' auf. Diesem wurde per Template ein Temperatur Icon zugewiesen. Dieses kann leicht über ''Select icon'' am unteren Rand der Device-Übersicht geändert werden | Im Raum MQTT2_DEVICE taucht jetzt ein neues Device ''OMG_<MAC Adresse>'' auf. Diesem wurde per Template ein Temperatur Icon zugewiesen. Dieses kann leicht über ''Select icon'' am unteren Rand der Device-Übersicht geändert werden, alternativ über die Attribute: | ||
attr OMG_<MAC Adresse> icon gtag_kontur | attr OMG_<MAC Adresse> icon gtag_kontur | ||
Wem die Bezeichnung OMG_<Mac Adresse> zur unübersichtlich ist, kann das Device umbenennen oder über die Attribute auch ein | Wem die Bezeichnung OMG_<Mac Adresse> zur unübersichtlich ist, kann das Device umbenennen oder über die Attribute auch ein alias zuweisen. | ||
===== Anlegen der Presence Devices ===== | ===== Anlegen der Presence Devices ===== | ||
Zeile 60: | Zeile 59: | ||
===== Zusammenfassen der einzelnen Anwesenheiten in einer ''structure'' ===== | ===== Zusammenfassen der einzelnen Anwesenheiten in einer ''structure'' ===== | ||
Dies ist nur notwendig, sofern mehr als ein Tag verwendet wird. | Dies ist nur notwendig, sofern mehr als ein Tag verwendet wird. | ||
defmod Anwesenheit structure <identifier> <MAC Adresse 1>_presence <room> <MAC Adresse 2>_presence | defmod Anwesenheit structure <identifier> <MAC Adresse 1>_presence <room> <MAC Adresse 2>_presence | ||
''<identifier>'' ist ein Gruppierungsmerkmal unter dem die Anwesenheiten der Tags angelegt wurden. | ''<identifier>'' ist ein Gruppierungsmerkmal, unter dem die Anwesenheiten der Tags angelegt wurden. | ||
Wichtig für die Funktion sind noch folgenden Attribute: | Wichtig für die Funktion sind noch folgenden Attribute: | ||
Zeile 71: | Zeile 70: | ||
attr Anwesenheit clientstate_priority present absent | attr Anwesenheit clientstate_priority present absent | ||
Damit sind auch alle nötigen Schritte erfolgt. Der Status der [[structure]] '''Anwesenheit''' kann dann für weitere Auswertungen genutzt werden. | |||
== OpenMQTTGateway und 433MHz == | |||
{{Link2Forum|Topic=103737|LinkText=Thread zur Verwendung als 433MHz-Interface}} mit ''rolling code'' | |||
== Links == | == Links == | ||
* {{Link2Forum|Topic=103737|LinkText=Thread zur Entwicklung der attrTemplate für MQTT2_DEVICE}} | * {{Link2Forum|Topic=103737|LinkText=Thread zur Entwicklung der attrTemplate für MQTT2_DEVICE}} | ||
* {{Link2Forum|Topic=126366|LinkText=OpenMQTTGateway support thread - im Speziellen: BT/BTLE}} | |||
== Hinweise == | == Hinweise == | ||
<references /> | <references /> | ||
[[Kategorie:Interfaces]] | [[Kategorie:Interfaces]] | ||
[[Kategorie:IP Components]] | [[Kategorie:IP Components]] | ||
[[Kategorie:MQTT]] | [[Kategorie:MQTT]] | ||
[[Kategorie:Bluetooth]] | |||
[[Kategorie:433MHz]] | |||
[[Kategorie:Temperatursensoren]] |
Aktuelle Version vom 15. März 2024, 16:10 Uhr
Einführung
OpenMQTTGateway ist eine firmware für ESP8266 bzw. ESP32, mit der sich neben verschiedenen Sensoren (BME280 u.a.) auch Infrarot- und 433MHz-Signale empfangen und senden lassen. In FHEM steht derzeit hauptsächlich die Auswertung diverser BLE-Geräte im Vordergrund.
Setzt man einen ESP32 ein, genügt hierzu das blanke Board ohne Zusatzhardware, es kann eine vorkompilierte Firmware geflasht werden (USB-Seriell-Wandler erforderlich).
Sobald man die Zugangsdaten zum MQTT2_SERVER eingetragen hat, sollte ein entsprechendes MQTT2_DEVICE-Gerät automatisch erstellt werden.
Mit set MQTT2_OMG1 attrTemplate OpenMQTTGateway_MCU
wird dieses Gerät als zentrales Empfangsgerät konfiguriert, das dann über die bridgeRegexp die eingehenden Informationen zu allem, was nicht BTLE ist jeweils in separate MQTT2_DEVICE-Instanzen verteilt.
Erst wenn dieses Device konfiguriert wurde, werden weitere attrTemplate geladen, die dann im Folgenden Verwendung finden.
OpenMQTTGateway und BTLE
OpenMQTTGateway_MCU
In diesem Device landen - sofern man keine whitelist- oder blacklist setzt - einfach alle BT-Infos, die das Gateway im Lauf eines Tages so einsammeln. Damit dies einigermaßen überschaubar bleibt, werden regelmäßig alle diesbezüglichen Readings (bis auf wenige Ausnahmen wie associatedWith) gelöscht, die älter sind als 24 Stunden. Dabei werden die JSON-Daten so aufbereitet, dass man erkennen kann, was eigentlich jeweils mit einer bestimmten BT-Kennung zusammengehört.
Daneben kann man eben ein paar BT-spezifische Befehle absetzen, insbesondere white- und blacklists anlegen oder direkte Befehle an einzelne BT-Geräte versenden (wie z.B. ein "SwitchBot"-Gerät)...
Erst die weiteren (BT-) Geräte, die man dann (mit Hilfe der Readings am Gatewas) erstellt, indem man mit dem passenden attrTemplate die BT-Adresse angibt, sind dann die eigentlichen Nutz-Devices. Anders als sonst bei MQTT2_DEVICE gewohnt, werden diese weiteren Instanzen von MQTT2_DEVICE nicht automatisch erstellt, sondern können nur halbautomatisiert erstellt werden, indem man das passende attrTemplate anwendet und diesem die passende BT-ID mitteilt.
Beispiel für z.B. einen MiFlora-Sensor: set MQTT2_OMG1 attrTemplate OpenMQTTGateway_BT_mi_flora_sensor
Es folgt die Anfrage der zum gewünschten Gerät gehörenden BT-ID; diese kann man den Reading am Gateway entnehmen. Entsprechend verfährt man für andere Geräte.
Anwendungsbeispiele
Temperatur und Luftfeuchtigkeit
Es werden diverse Temperatur- und Luftfeuchtesensoren unterstützt, u.A. praktisch alle Xiaomi-Cleargrass und Mijia. Für die LYWSD03MMC kann dabei eine alternative Firmware aufgespielt werden.
Anwesenheitserkennung mit Gigaset Keeper G-Tag
Zielsetzung:
Die Anwesenheit von Gigaset Keeper Tags soll mittels OpenMQTTGateway erkannt werden. Der Anwesenheitsstatus dieser Tags kann dann zur einem Status Anwesenheit zusammengefasst werden und für weitere Auswertungen genutzt werden.
Anlegen des OpenMQTTGateway in FHEM:
Via autocreate wie oben beschrieben oder manuell:
defmod MQTT2_OpenMQTTGateway_ESP32_BLE MQTT2_DEVICE OpenMQTTGateway_ESP32_BLE
MQTT2_OpenMQTTGateway_ESP32_BLE ist hier der Name des MQTT2 Device und kann frei gewählt werden.
Anlegen der einzelnen G-Tags als MQTT2 Device
Die zu verwendenden MAC-Adressen der G-Tags sollten bereits bekannt sein und werden ohne Trennzeichen angegeben. z.B. FFFFC424A123.
Folgende Zeile wird für jeden einzelnen Tag ausgeführt.
set MQTT2_OpenMQTTGateway_ESP32_BLE attrTemplate OpenMQTTGateway_BT_gtag <MAC Adresse>
Im Raum MQTT2_DEVICE taucht jetzt ein neues Device OMG_<MAC Adresse> auf. Diesem wurde per Template ein Temperatur Icon zugewiesen. Dieses kann leicht über Select icon am unteren Rand der Device-Übersicht geändert werden, alternativ über die Attribute:
attr OMG_<MAC Adresse> icon gtag_kontur
Wem die Bezeichnung OMG_<Mac Adresse> zur unübersichtlich ist, kann das Device umbenennen oder über die Attribute auch ein alias zuweisen.
Anlegen der Presence Devices
Folgende Zeile wird für jeden einzelnen Tag ausgeführt.
defmod <MAC Adresse>_presence PRESENCE function { my $maxage = AttrVal("OMG_<MAC Adresse>","maxPresenceAge","300");;;; ReadingsAge("OMG_<MAC Adresse>","last_IO","100000") < $maxage ? 1 : 0 }
Wichtig ist hier, dass der DEVICE_NAME angegeben wird, in diesem Fall OMG_<MAC Adresse>.
Zusammenfassen der einzelnen Anwesenheiten in einer structure
Dies ist nur notwendig, sofern mehr als ein Tag verwendet wird.
defmod Anwesenheit structure <identifier> <MAC Adresse 1>_presence <room> <MAC Adresse 2>_presence
<identifier> ist ein Gruppierungsmerkmal, unter dem die Anwesenheiten der Tags angelegt wurden.
Wichtig für die Funktion sind noch folgenden Attribute:
attr Anwesenheit clientstate_behavior relative attr Anwesenheit clientstate_priority present absent
Damit sind auch alle nötigen Schritte erfolgt. Der Status der structure Anwesenheit kann dann für weitere Auswertungen genutzt werden.
OpenMQTTGateway und 433MHz
Thread zur Verwendung als 433MHz-Interface mit rolling code
Links
- Thread zur Entwicklung der attrTemplate für MQTT2_DEVICE
- OpenMQTTGateway support thread - im Speziellen: BT/BTLE