OpenMQTTGateway support thread - im Speziellen: BT/BTLE

Begonnen von Beta-User, 21 Februar 2022, 17:13:56

Vorheriges Thema - Nächstes Thema

ares

Mein Espressif ESP32 Dev Kit ist endlich angekommen und nachdem ich den Windows-Treiber (Google) installiert habe wurde er auch mit COM-Port im Geräte-Manager angezeigt.
Die Installation von https://docs.openmqttgateway.com/upload/web-install.html direkt aus dem Browser ohne zusätzliche Software war genauso einfach wie die Konfiguration per Smartphone. Ich habe nur den WiFi-Zugang und MQTT2_SERVER eingetragen und als Gateway-Name "OMG_ESP32_BLE_1" verwendet.
In fhem habe ich nur den Server erstellt:
define MQTT2_FHEM_Server MQTT2_SERVER 1883 global
Automatisch angelegt wurde ein MQTT2_DEVICE "MQTT2_OMG_ESP32_BLE_1"mit FileLog. Soweit war das auch für mich noch einfach.

Nun zu meinen Fragen:

(1) Was mir nicht gefällt ist, dass ich nun permanent die config speichern soll oder das nicht mache und damit sicher später irgendwann vergesse zu speichern. Kann das Speichern für das Device irgendwie auf "automatisch" gestellt werden?

(2) Die readingList zeigt nicht nur Einträge mit home/ an, sondern immer mehr Einträge mit homeassistant/ und dort mit diversen MAC-Adressen. Ist das normal?

(3) Wie mache ich weiter?
set QTT2_OMG_ESP32_BLE_1 attrTemplate OpenMQTTGateway_MCU
Oder wo finde ich den Faden wieder zum weiter machen?

Viele Grüße
Manfred

Beta-User

Expressantworten:
ad 1) automatisch speichern sollte man m.E. NIE.
Hier ist das "Problem", dass ständig die readingList erweitert wird, sobald ein neues BT-Gerät in Reichweite kommt.
ad 2) ad homeassistant siehe "ignoreRegexp" beim Wiki zu MQTT2_CLIENT
ad 3) Genau, mit dem "mcu"-attrTemplate. Das fängt dann auch das ständige "autocreate"/save-"Problem" ab.
Für das Vorgehen, auch danach, bitte in den FHEM-Wiki-Artikel zu OMG schauen und ggf. Vorschläge machen, wenn da was unklar sein sollte.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

kroman

Zitat von: Beta-User am 05 März 2022, 11:20:00
:) ...funktioniert auch ohne "jetzt".

Bei mir nicht. Mit dem binary schon, da AttemptBLECOnnect defaultmäßig auf true steht.

Zitat
Jetzt stellen sich halt eine ganze Reihe von Fragen, wie man das ganze sinnvoll verwertet...

Falls jemand Ideen (=Code) hat: her damit ::) ...

Bevor ich an FHEM rangehe, werde ich mir den OMG selber und die Parameter im source code noch genauer anschauen.

kroman

Zitat von: ares am 05 März 2022, 12:46:15
Nun zu meinen Fragen:

Nachdem du das MCU template angewandt hast, sollte sich in der readingList nach ein paar Minuten eigentlich nichts mehr ändern. Hier gibt es bei mir nur 1 MAC Adresse, nämlich die vom ESP selber.

Die unerwünschten MAC Adressen im scanner wirst du mit z.B.


set mqtt2server publish -r home/OMG1/commands/MQTTtoBT/config {"white-list":["AA:AA:AA:AA:AA:AA","BB:BB:BB:BB:BB:BB","CC:CC:CC:CC:CC:CC"]}


los. Durch -r (retain) speichert das der MQTT2 server und verschickt die whitelist nach power off/on des ESPs automatisch wieder an den ESP.
Das ist ohnehin empfehlenswert um auch den ESP zu entlasten.

ares

#34
Zitat von: Beta-User am 05 März 2022, 13:12:51
Für das Vorgehen, auch danach, bitte in den FHEM-Wiki-Artikel zu OMG schauen und ggf. Vorschläge machen, wenn da was unklar sein sollte.

Happy über den ersten Erfolg habe ich erstmal alles vergessen was ich schon gelesen und nicht verstanden habe. Der Hinweis auf den FHEM-Wiki-Artikel hat geholfen und ich habe nochmal mit Gateway-Name OMG1 von vorne angefangen.

(1) Das Device zeigt mir nun grün "Online" und die Version an. Beim Klick auf den grünen Kreis wird versucht, die Website des OMG1 zu öffnen, die aber in meiner Verison v0.9.10 nicht erreichbar ist.

(2) Nach dem Hinweis "BT-scanner-attrTemplate" bei oMQTTgw_BT hab ich dann noch ein Template benutzt, auch wenn das NICHT so schön wie bei der Einführung dabei steht obwohl der Name hier ja vorgegeben wär.
set MQTT2_oMQTTgw_BT attrTemplate OpenMQTTGateway_BT_scanner
Edit: eventuell passt das ja hier schon nicht, da dauerhaft "Last: last" im STATE angezeigt wird.

(3) Danach habe ich meine Waage hinzugefügt:
set MQTT2_OMG1 attrTemplate OpenMQTTGateway_BT_scale 70879E4C3B50
Da das nicht funktioniert habe ich das Try&Error nochmal so versucht:
set MQTT2_oMQTTgw_BT attrTemplate OpenMQTTGateway_BT_scale 70879E4C3B50
Beides liefert kein Gewicht im Device OMG_70879E4C3B50, im Reading 70879E4C3B50_servicedata von MQTT2_oMQTTgw_BT finde ich aber den korrekten, jedoch nicht dekodierten Inhalt "a26248e60703050e330f".

Wo stelle ich mich derzeit noch zu doof an?
Edit: eventuell war "esp32dev-ble" (BLE gateway with one scan every 55s per default) falsch?

Viele Grüße
Manfred

MadMax-FHEM

Also ich hab ja auch versucht whitelist zu setzen...
...aber irgendwie "ignoriert" das mein Scanner (bzw. beide Scanner)... :-\

Da muss ich wohl noch ein wenig "üben", bevor das "produktiv" gehen kann.

Plan (wenn schon nicht mein Smartphone damit und auch nicht mit https://espresense.com/ "erfasst" bekomme): einen Raspberry PI ZeroW weg, der aktuell meine FlowerSense "überwacht"...
...und einen ESP32 für meine Waage.

Ansonsten sollen die nicht so viel "rumscannen"...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

ares

Zitat von: MadMax-FHEM am 05 März 2022, 15:13:13
...und einen ESP32 für meine Waage.
Da bist Du weiter als ich gekommen. Bei mir kommen in MQTT2_oMQTTgw_BT nur die richtigen RAW-Daten an und im Device danach nichts mehr. Ich bin daher kurz davor das selbst aus oOMQTTgw_BT abzugreifen und umzurechnen. Wenn das aber der Fall ist, dann kann ich das aber auch gleich am ESP32 machen und spare mir die Whitelist. Bei OpenMQTT ist mein Frustfaktor nämlich aktuell sehr hoch nachdem ich seit Stunden rate und nicht weiter komme.

Viele Grüße
Manfred

MadMax-FHEM

Hast du das Erzeugen per WebCmd selbst eingegeben oder per DropDown beim "Scanner-Device"?

Ich habe auch (erst mal) nichts umbenannt...

Bzw. per attrTemplate habe ich es noch gar nicht versucht.
Kann ich ja mal machen.

Ich war ja noch bevor es ein attrTemplate gab.
Meine Basis war FlowerIrgendwas und dann eben angepasst (siehe zu Beginn des Threads)...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

ares

#38
Zitat von: MadMax-FHEM am 05 März 2022, 16:14:43
Hast du das Erzeugen per WebCmd selbst eingegeben oder per DropDown beim "Scanner-Device"?
Ich habe glaube ich schon beides versucht, das sollte aber aus meiner Sicht keinen Unterschied machen.

Ich kann gerne erneut alles löschen und dann alle Eingaben protokollieren, falls das hilft.
Mir kommt derzeit das "Last: last" im STAT von MQTT2_oMQTTgw_BT merkwürdig vor.

70879E4C3B50_servicedata hab ich manuell dekodiert und der Inhalt ist korrekt. Ich denke, der ESP32 sollte weight schon berechnen und übermitteln, aber wo geht das auf dem Weg verloren?
setstate MQTT2_oMQTTgw_BT 2022-03-05 16:17:50 70879E4C3B50_id 70:87:9E:4C:3B:50
setstate MQTT2_oMQTTgw_BT 2022-03-05 16:17:50 70879E4C3B50_mac_type 0
setstate MQTT2_oMQTTgw_BT 2022-03-05 16:17:50 70879E4C3B50_manufacturerdata 570170879e4c3b50
setstate MQTT2_oMQTTgw_BT 2022-03-05 16:17:50 70879E4C3B50_name MI SCALE2
setstate MQTT2_oMQTTgw_BT 2022-03-05 16:17:50 70879E4C3B50_rssi -59
setstate MQTT2_oMQTTgw_BT 2022-03-05 16:17:50 70879E4C3B50_servicedata a24e48e607030510040a

Steht das Gewicht bei Dir leserlich in MQTT2_oMQTTgw_BT?
Wenn Du ein Testsystem hast, kannst Du dann den ESP32 ausstecken, alles in fhem löschen und nochmal starten? Ich denke, das Gewicht sollte schon im MQTT2_oMQTTgw_BT stehen bevor Du die Waage anlegst, da bei anderen Geräte ja auch schon battery zu sehen ist ohne dass ich mit diesen etwas gemacht hätte.

Und ich dachte anfangs, die Waage läuft und ich muss mich nur mit dem Mi Band 6 meiner Tochter ärgern, da sie ihre Schritte in SmartVisu sehen möchte. Da sehe ich dann aber erstmal nur noch Fragezeichen auf mich zukommen.

Viele Grüße
Manfred

Edit: Erreichst Du Deinen ESP32 beim Klick auf den grünen Kreis vor der Vrsionsnummer?

MadMax-FHEM

#39
Also meine Schritte sind eingangs im Thread genau beschrieben (oder auch per PM an dich?), hier noch mal kurz.

ESP mit fertigem Image geflasht (esp32dev-ble).

Dann nur WLAN settings und mqttserver-IP und Port (PW usw. habe ich nicht, also beim MQTTServer).

Dann wurde ein Device angelegt -> attrTemplate OpenMQTTGateway_MCU

Dann kam ein weiteres Device -> attrTemplate OpenMQTTGateway_BT_scanner

KEINE NAMEN ANGEPASST usw.

Also heißt mein Gateway-Device: MQTT2_OpenMQTTGateway_ESP32_BLE
Und mein Scanner: MQTT2_oMQTTgw_BT

Dann wie vorne zu lesen...
...bzw. eben Waage gelöscht und neu über den Scanner angelegt: passt.

Ja das Gewicht weight und auch impedance kommen bei mir im Scanner schon entsprechend an inkl. Angabe der Unit (kg).

Noch mal alles löschen etc. muss ich mal sehen, es ist zwar ein Testsystem ja aber das kostet Zeit...
Ich werde wohl erst noch ein wenig rumüben aber sicher noch mal neu von vorne bevor ich das auf mein Hauptsystem kippe.
(wobei ich ja ehrlich gesagt von dem ganzen mqtt Datenflutzeugs noch nicht so überzeugt bin :-\ einmal wo was falsch angepasst oder umbenamst oder was auch immer und das ganze System dreht ab / zumindest momentan mein Gefühl / vielleicht wird das ja noch, wenn ich mal länger damit "rumspiele")

EDIT: aber solange ich das mit whitelist nicht in den Griff bekomme werde ich erst mal nichts auf mein Hauptsystem lassen. Und wenn ich das nicht (sauber) hinkriege, dass ich 2 BTLEGateways sauber "auseinander" kriege (also einen der NUR die Waage macht und einen der NUR meine FlowerSense macht) kommt mir max. die Waage in mein Hauptsystem (zur Not auch ohne whitelist aber schöner wäre mit)...

Hier noch die Daten meiner Waage:
Zitat
model Miscale_v2
model_id XMTZC05HM

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Beta-User

Hmm, also, ein paar kurze Anmerkungen:
- mit white-/blacklist habe ich mich bisher nicht groß befasst;
- der "Datenfluss" ist auch kein großes Geheimnis: im Prinzip wird immer nur in jedem Gerät jeweils der JSON ausgepackt, unterschiedlich ist nur die Methode, wie die "Präfixes" ermittelt werden. Umgerechnet wird bisher gar nicht, der Batterie-Wert wäre dazu eine Art Prototyp.

Wenn also die 2. "Scale" nur Rohdaten liefert, kann man entweder in der Tat den Code für die firmware ergänzen und ggf. einen Patch einreichen, oder man muss eben selbst rechnen (hier vermutlich am einfachsten per userReading).

Der "scanner" war bis vor kurzem mal triggernd, daher wurde dann auch das "last" ermittelt. Wie irgendwo hier geschrieben bin ich im Moment nicht sicher, ob/wie man den scanner eigentlich künftig gestalten soll...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

ares

Ich habe dasselbe Image, auf Deinen Rat hin ebenfalls noch kein Passwort und nur den Gateway-Namen im ESP32 auf OMG1 geändert, damit das kürzer ist und erweiterbar ist.

Das Löschen und neu anlegen geht recht fix, habe ich eben nochmal gemacht:
(1) alles zu MQTT außer MQTT2_SERVER bei abgestecktem OMG1 in fhem gelöscht
(2) OMG1 mit Strom versorgt
(3) Template auf automatisch erstelltes Device angewendet
set MQTT2_OMG1 attrTemplate OpenMQTTGateway_MCU
(3) Template auf zweites automatisch erstelltes Device angewendet
set MQTT2_oMQTTgw_BT attrTemplate OpenMQTTGateway_BT_scanner
(5) OMG1 neu gestartet, danach Anzeige Version: v0.9.10
(6) einmal auf der MI SCALE2 gewogen
(7) in MQTT2_oMQTTgw_BT sind die Readings mit Raw-Daten, aber ohne Gewicht
(8) STATE von MQTT2_oMQTTgw_BT ist "Last: last"
(9) Klick auf den grünen Button im State: "Die Website ist nicht erreichbar"
Falls Du nochmal testest... Punkte 7-9 würden mich interessieren.

Zitat von: MadMax-FHEM am 05 März 2022, 16:38:45
...bzw. eben Waage gelöscht und neu über den Scanner angelegt: passt.
Laut wiki https://wiki.fhem.de/wiki/OpenMQTTGateway sollte das über das Gateway-Device und nicht über den Scanner laufen?
Wie legst Du das "Device Waage" genau an und ändert sich dann etwas in Punkt 7-9?

Was ändert die whitelist, wenn die Daten trotzdem erst ankommen und dann genau wie jetzt ignoriert werden?

model_id wird mir in fhem nicht angezeigt. Ich habe aber ebenfalls eine Xiaomi-MiScale2 und die RAW-Daten passen ja.
Meine ersten Gehversuche mit MQTT bzw. mit OMG waren ebenfalls nicht so überzeugend, ich hoffe das ändert sich noch.

Viele Grüße
Manfred

kroman

Zitat von: MadMax-FHEM am 05 März 2022, 16:38:45
aber solange ich das mit whitelist nicht in den Griff bekomme

Bei mir geht das problemlos.
Wie publishst du die whitelist?

Falls über den MQTT2 server, dann solltest du mit verbose 5 am MQTT2 server die Nachricht im fhemlog sehen, um mal zu kontrollieren, ob sie denn rausgeht.
Oder du wirfst wireshark an etc.

Zitat von: ares am 05 März 2022, 17:02:36
Was ändert die whitelist, wenn die Daten trotzdem erst ankommen und dann genau wie jetzt ignoriert werden?

Mit der whitelist kommen sie dann eben nicht mehr an.

Beta-User

7: Das scheint an dem abweichenden Modell zu liegen => bei OMG einkippen
8: event-on-Attribut löschen, dann wird "last" erzeugt (s.o.)
9: Das mit dem "grünen Punkt" ist eine Art default (kommend von Tasmota). Da das OMG nach dem Einrichten der Zugangsdaten zum WLAN/MQTT kein Web-Interface mehr hat, ist es halt funktionslos. M.E. kein Beinbruch, vielleicht ändert sich das bei OMG ja mal...

OMG ist eine eher schwierige Ecke, um sich in MQTT2_.* einzuarbeiten; wenn dann noch nicht voll unterstützte Geräte dazukommen, mag das frustrierend sein. Aber mit dieser Modulfamilie bekommt man wenigstens die Option, aus "was auch immer" an Infos verwertbare Readings zu generieren; mit MQTT_DEVICE wäre man an der Stelle jedenfalls noch viel mehr "lost", und JSON-Blobs damit zu versenden, ginge schon gleich gar nicht...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

ares

Zitat von: Beta-User am 05 März 2022, 17:17:42
7: Das scheint an dem abweichenden Modell zu liegen => bei OMG einkippen
Ich habe doch gar kein abweichendes Modell, sondern ebenfalls eine XIAOMI MI Smart scale 2.

Zitat von: Beta-User am 05 März 2022, 17:00:29
Wenn also die 2. "Scale" nur Rohdaten liefert, kann man entweder in der Tat den Code für die firmware ergänzen und ggf. einen Patch einreichen, oder man muss eben selbst rechnen (hier vermutlich am einfachsten per userReading).
Das Gewicht sollte bereits ermittelt werden.
https://compatible.openmqttgateway.com/index.php/devices/?383_attr_pa_brand%5B0%5D=39&383_product_cat%5B0%5D=51&383_orderby=option_2&383_device=laptop&383_filtered=true

Es gibt für Android auch eine App "nRF Connect" und die ist sicher universell, da damit alles dekodiert werden kann.
Wiege ich mich, wird mir dort das Gewicht mit 3 Nachkommastellen angezeigt, auch wenn die Waage nur 50g Genauigkeit hat.

Wenn Byte 1 $22 oder $a2 ist, dann wird das Gewicht in Kilogramm übertragen. Dazu sind die Bytes 3+2 nur durch 200 zu teilen.

Viele Grüße
Manfred