NEWS
Xiaomi Temp and Humidity Monitor 2 + BLE Adapter
-
@sborg Geflashed habe ich den zu Hause am PC und im Einsatz ist er bei den Schwiegereltern im Keller.
Ich hab jetzt noch nen zweiten Sensor, der bei mir hier schon seit Jahre rumsteht und nur als Anzeige dient, fertig gemacht und neben den anderen gestellt.
Gleiches Ergebnis. rssi wird angezeigt und aktualisiert (auch das zeigt doch, dass die nicht noch wo anders gekoppelt sind, oder?), services enthält nix. -
@dasjens sagte in Xiaomi Temp and Humidity Monitor 2 + BLE Adapter:
auch das zeigt doch, dass die nicht noch wo anders gekoppelt sind, oder?
IMO ja, denn dann sollte er das eigentlich nicht anzeigen dürfen bzw. dann sollte auch der String unter "services" auftauchen.
Es könnte natürlich auch sein, dass sich mal mit einem Update ein Fehler in den Adapter eingeschlichen hat und es aktuell schlichtweg nicht geht. Da bräuchte es jetzt jemand der es aktuell noch einsetzt und bestätigt "geht oder geht nicht". -
@sborg Ich hab jetzt noch mal ne v1, also den runden Sensor daneben gestellt. Gleiche Ergebnis. Es wird nur die rssi angezeigt.
Hab auch den Adapter auf v0.13.3 downgraded. Gleiche Ergebnis.
v0.13.2 findet dann auf einmal keinen Bluetooth Adapter. (Das war ja die Version, mit der es hier zum Schluss wohl am besten funktioniert hat.)Nun bin ich am Ende meiner arg begrenzten Weisheit und werde wohl zu was teurerem greifen müssen.
Aber fetten Dank für deine Hilfe hier!
-
@dasjens Naja, Hilfe ist relativ
Die Adapter sind auch von der verwendeten Nodejs-Version abhängig. Die sind dann immer bis zu einem gewissen Grad Up/Down kompatibel.
Ich fand es damals zwar auch gut, aber die Daten kamen nicht immer zuverlässig und die saugen die Batterien schnell leer (so alle 3-4 Monate).
Falls ZigBee eine Option ist, dann bspw. die Aqara. Kosten im 4er Pack ~18,- €
Da halten dann auch die Batterien sehr lange -
@sborg
Ich bin noch ganz am Anfang bei iobroker und wollte erst mal ganz klassisch im Keller bei den Rechnern nen Ventilator über die Temperatur steuern. ^^
Mittlerweile hab ich ne kleine vis gebastelt die Müll und bestimmte Daten aus dem Wechselrichter anzeigt. /Ersparnis, Gewinn etc.)Hast du mal nen Link für die Aqara?
Brauch ich da noch nen Gateway oder können die so angesprochen/ausgelesen werden?
Im Endeffekt brauch ich na nur was kostengünstiges um die Temperatur auszulesen.Danke nochmals für deine Hilfe! (mir hilft es relativ viel!)
-
@dasjens Sry, bin aktuell nicht mehr täglich hier
Für ZigBee (kommt man früher oder später meist eh nicht drum herum) brauchst du einen Empfänger/Coordinator.
Da gibt es verschiedene zb. den C2531 (schwierig, Programmer nötig), den CC26X2R1 von Texas Instruments (einfach, aber teuer [nutze ich]), den Conbee 2 oder von Sonoff (wohl der aktuell einfachste und nicht gerade teuer).Ich kaufe eigentlich immer bei Aliexpress, Alibaba und den üblichen. Man muss dort nur immer genau aufpassen was man genau kauft. Oft suggeriert das Bild mehr als der Text. Die 18,- € von oben zeigen 4 Sensoren, sind dann aber tatsächlich nur die 4 Wandhalter
Ich würde dann aber ggf. einen neuen Thread eröffnen, denn das wird hier unter Xiaomi BLE sonst zu OT
-
@sborg Also bei mir geht es mit den Xiaomi Sensoren.
Habe gerade eben noch welche eingebunden. Ich habe sie geflasht (Firmware flashen ) mit der custom firmware und dann ganz wichtig, nachdem die neue Firmware drauf ist noch mal connecten und auf "Mi Like" stellen.
Damit läuft es bei mir. -
@hakemann Ich habe auch nicht geschrieben, dass es nicht läuft
Es ist zwar nett im Raum auch direkt eine Anzeige zu haben, nur habe ich kein flächendeckendes BT bei mir. Da kommen dann mal Werte, oder auch nicht. Für eine Steuerung so also nicht unbedingt zu gebrauchen.
KO-Kriterium warum ich es aktuell aber nicht einsetze ist der Batterieverbrauch. Wenn ich mal Zeit habe werde ich sie wohl mal auf Akku umbauen. -
@sborg
Hi SBorg.... Habe jetzt mal einen ESP32 D1 Mini mit ESPresense geflasht und die Anwesenheitserkennung läuft deutlich besser.Was richtig cool ist, dass die ATC_miThermometer unterstützt werden wie ich jetzt rausgefunden habe.
Im Mqtt Adapter werden mir alle Thermometer auch als Json angezeigt.
Weißt du zufällig, wie ich das anstelle, dass er mir für die Werte automatisch Datenpunkte erstellt.
Hier mal ein Beispiel von einem Json von einem meiner ATC Thermometer:{ "id": "miTherm:a4c138f3a385", "idType": 110, "rssi@1m": -71, "rssi": -99, "raw": 6.31, "distance": 6.21, "speed": 0, "mac": "a4c138f3a385", "interval": 18341, "mV": 2558, "batt": 36, "temp": 22.9, "rh": 68 }
Es wäre mühselig für alle Thermometer dann ein Blockly zu schreiben.
Vielleicht hast du ja ne Idee. Bei ESPHome war es ja einfach. Da habe ich einfach in die YAML Datei folgende Werte reingeschrieben und die Datenpunkte wurden mir erstellt:### Esszimmer sensor: - platform: atc_mithermometer mac_address: "A4:C1:38:1B:03:F5" temperature: name: "Esszimmer Temperature" humidity: name: "Esszimmer Humidity" battery_level: name: "Esszimmer Battery-Level" battery_voltage: name: "Esszimmer Battery-Voltage" signal_strength: name: "Esszimmer Bluetooth Signal"
Wie bekomme ich das auch für ESPresense hin und iobroker, da leider alle Videos zu dem Thema nur zeigen wie man es mit HomeAssistant macht.
-
@sushibomba sagte in Xiaomi Temp and Humidity Monitor 2 + BLE Adapter:
Im Mqtt Adapter werden mir alle Thermometer auch als Json angezeigt.
Weißt du zufällig, wie ich das anstelle, dass er mir für die Werte automatisch Datenpunkte erstellt.Heißt die Aktion mit ESPHome ist beendet ?
Das mit automatischen Datenpunkten geht so erst mal nicht, denn bei MQTT wird automatisch das "subscribed" was der Server "published". Wenn also ESPresense bspw. keinen Topic mit der Temperatur published, kann der ioB auch nix subscriben und somit auch keinen Datenpunkt anlegen.Du kommst aber recht einfach per Blockly, JS, NodeRED an das JSON heran:
Ich habe hier mal den JSON von einem ESPHome Binary-Sensor benutzt. Wenn du also einfach bei "Attribut" zB temp vom Objekt-Datenpunkt (also das JSON) einträgst, bekommst du die 22.9 raus.
Das kann man direkt in einer Steuerung nutzen, oder in der VIS, oder macht da dann den (unnötigen) Weg und schreibt es in einzelne Datenpunkte (wozu, ich komme ja jederzeit an das JSON heran?) -
Ja habe jetzt alle bis auf einen mit ESPresense geflasht
Ok ich muss ehrlich gestehe... Danke für die Erklärung aber wirklich schlauer bin ich nicht dadurch. Liegt definitiv aber an mir nicht an dir
Ich hätte halt gerne in den jeweiligen Räumen und der Rubik - Sensoren - Temperatur und Luftfeuchte jeweils die folgenden Datenpunkte einzeln. Warum macht das keinen Sinn deiner Meinung nach?
Also pro Sensor 5 Datenpunkte:
- platform: atc_mithermometer
mac_address: "A4:C1:38:1B:03:F5"
temperature:
name: "Esszimmer Temperature"
humidity:
name: "Esszimmer Humidity"
battery_level:
name: "Esszimmer Battery-Level"
battery_voltage:
name: "Esszimmer Battery-Voltage"
signal_strength:
name: "Esszimmer Bluetooth Signal"
Also so mache ich es derzeit mit den Uhren:
Ist halt auch mega aufwendig für jeden Raum dann zwei mal das ganze anzulegen.
- platform: atc_mithermometer
-
@sushibomba
Das ist in etwa so als du von mir wissen willst ob es regnet. Da ist es doch "blöd" wenn ich dir alle 30 Sekunden nun sage "es regnet nicht". Effektiver wäre doch ich melde mich nur wenn es regnet...?Du hast in dem JSON alles was du brauchst. Da macht es eigentlich keinen Sinn nun 3.000x am Tag zig Werte in Datenpunkte zu schreiben, wenn du 5x am Tag bspw. diese für die VIS brauchst.
Sonst musst du halt mittels Blockly, NodeRED... deine Datenpunkte erstellen/befüllen:
(in "Example_State" steht bei mir zu Testzwecken dein JSON)Ergebnis:
Beispiel wie einfach man an die Werte innerhalb des JSON dran kommt:
...oder einen Feature Request beim Projekt absetzen, damit sie die Einzelwerte publishen, aber das wird keiner machen, dafür gibt es ja das JSON
-
@sborg sagte in Xiaomi Temp and Humidity Monitor 2 + BLE Adapter:
@sushibomba
Das ist in etwa so als du von mir wissen willst ob es regnet. Da ist es doch "blöd" wenn ich dir alle 30 Sekunden nun sage "es regnet nicht". Effektiver wäre doch ich melde mich nur wenn es regnet...?Da gebe ich dir absolut recht. Ich brauche nicht wissen das es nicht regnet. Sondern nur wenn es regnet und wann es wieder aufgehört hat.
Du hast in dem JSON alles was du brauchst. Da macht es eigentlich keinen Sinn nun 3.000x am Tag zig Werte in Datenpunkte zu schreiben, wenn du 5x am Tag bspw. diese für die VIS brauchst.
Vielleicht hast du ja auch einen Tipp für mich wie ich es ohne Datenpunkte zu erstellen vernünftig auswerten kann und die Daten wie Temperatur und Feuchtigkeit anderweitig in Scripts etc. nutzen kann.
Sonst musst du halt mittels Blockly, NodeRED... deine Datenpunkte erstellen/befüllen:
Gibt es auch die Möglichkeit in einem Blockly gleichzeitig alle Datenpunkte für die einzelnen Daten zusammen zu erstellen?
Also in etwa so im Blockly wie für meine Rollläden. Oder geht das auch irgendwie einfacher?:
<xml xmlns="https://developers.google.com/blockly/xml"> <block type="procedures_callcustomnoreturn" id="+`U:,L*=oJVY$-mpp~ZF" x="-1112" y="-562"> <mutation name="Datenpunkt erstellen"></mutation> </block> <block type="procedures_defcustomnoreturn" id="gG.jtgXd}}FUY8!S][~U" x="-1112" y="-512"> <mutation statements="false"></mutation> <field name="NAME">Datenpunkt erstellen</field> <field name="SCRIPT">Y3JlYXRlU3RhdGUoImFsaWFzLjAuUm9sbGFkZW5zdGV1ZXJ1bmcuUm9sbG9fR2Flc3RlLVdDIiwgbnVsbCwge25hbWU6ICJSb2xsbyBHw6RzdGUtV0MiLCB0eXBlOiAibnVtYmVyIiwgcm9sZTogInN0YXRlIiwgdW5pdDogIiUifSk7DQoNCmNyZWF0ZVN0YXRlKCJhbGlhcy4wLlJvbGxhZGVuc3RldWVydW5nLlJvbGxvX0vDvGNoZSIsIG51bGwsIHtuYW1lOiAiUm9sbG8gS8O8Y2hlIiwgdHlwZTogIm51bWJlciIsIHJvbGU6ICJzdGF0ZSIsIHVuaXQ6ICIlIn0pOw0KDQpjcmVhdGVTdGF0ZSgiYWxpYXMuMC5Sb2xsYWRlbnN0ZXVlcnVuZy5Sb2xsb19Cw7xybyIsIG51bGwsIHtuYW1lOiAiUm9sbG8gQsO8cm8iLCB0eXBlOiAibnVtYmVyIiwgcm9sZTogInN0YXRlIiwgdW5pdDogIiUifSk7DQoNCmNyZWF0ZVN0YXRlKCJhbGlhcy4wLlJvbGxhZGVuc3RldWVydW5nLlJvbGxvX0VaIiwgbnVsbCwge25hbWU6ICJSb2xsbyBFWiIsIHR5cGU6ICJudW1iZXIiLCByb2xlOiAic3RhdGUiLCB1bml0OiAiJSJ9KTsNCg0KY3JlYXRlU3RhdGUoImFsaWFzLjAuUm9sbGFkZW5zdGV1ZXJ1bmcuUm9sbG9fQmFkIiwgbnVsbCwge25hbWU6ICJSb2xsbyBCYWQiLCB0eXBlOiAibnVtYmVyIiwgcm9sZTogInN0YXRlIiwgdW5pdDogIiUifSk7DQoNCmNyZWF0ZVN0YXRlKCJhbGlhcy4wLlJvbGxhZGVuc3RldWVydW5nLlJvbGxvX1NaIiwgbnVsbCwge25hbWU6ICJSb2xsbyBTWiIsIHR5cGU6ICJudW1iZXIiLCByb2xlOiAic3RhdGUiLCB1bml0OiAiJSJ9KTsNCg0KY3JlYXRlU3RhdGUoImFsaWFzLjAuUm9sbGFkZW5zdGV1ZXJ1bmcuUm9sbG9fU1pfVMO8ciIsIG51bGwsIHtuYW1lOiAiUm9sbG8gU1otVMO8ciIsIHR5cGU6ICJudW1iZXIiLCByb2xlOiAic3RhdGUiLCB1bml0OiAiJSJ9KTsNCg0KY3JlYXRlU3RhdGUoImFsaWFzLjAuUm9sbGFkZW5zdGV1ZXJ1bmcuUm9sbG9fV1pfUkVDSFRTIiwgbnVsbCwge25hbWU6ICJSb2xsbyBXWi1SRUNIVFMiLCB0eXBlOiAibnVtYmVyIiwgcm9sZTogInN0YXRlIiwgdW5pdDogIiUifSk7DQoNCmNyZWF0ZVN0YXRlKCJhbGlhcy4wLlJvbGxhZGVuc3RldWVydW5nLlJvbGxvX1daX0xJTktTIiwgbnVsbCwge25hbWU6ICJSb2xsbyBXWi1MSU5LUyIsIHR5cGU6ICJudW1iZXIiLCByb2xlOiAic3RhdGUiLCB1bml0OiAiJSJ9KTsNCg0KY3JlYXRlU3RhdGUoImFsaWFzLjAuUm9sbGFkZW5zdGV1ZXJ1bmcuUm9sbG9fV1pfVGVyYXNzZSIsIG51bGwsIHtuYW1lOiAiUm9sbG8gV1otVGVyYXNzZSIsIHR5cGU6ICJudW1iZXIiLCByb2xlOiAic3RhdGUiLCB1bml0OiAiJSJ9KTsNCg0KY3JlYXRlU3RhdGUoImFsaWFzLjAuUm9sbGFkZW5zdGV1ZXJ1bmcuUm9sbG9fV1pfVMO8ciIsIG51bGwsIHtuYW1lOiAiUm9sbG8gV1otVMO8ciIsIHR5cGU6ICJudW1iZXIiLCByb2xlOiAic3RhdGUiLCB1bml0OiAiJSJ9KTsNCg0KY3JlYXRlU3RhdGUoImFsaWFzLjAuUm9sbGFkZW5zdGV1ZXJ1bmcuUm9sbG9fV1pfVMO8ciIsIG51bGwsIHtuYW1lOiAiUm9sbG8gV1otVMO8ciIsIHR5cGU6ICJudW1iZXIiLCByb2xlOiAic3RhdGUiLCB1bml0OiAiJSJ9KTsNCg0KY3JlYXRlU3RhdGUoIjBfdXNlcmRhdGEuMC5Sb2xsYWRlbnN0ZXVlcnVuZy5Sb2xsYWRlbi1BS1RJViIsIGZhbHNlLCB7bmFtZTogIlJvbGxhZGVuLUFLVElWIiwgdHlwZTogInN0cmluZyIsIHJvbGU6ICJzdGF0ZSIsfSk7DQoNCmNyZWF0ZVN0YXRlKCIwX3VzZXJkYXRhLjAuUm9sbGFkZW5zdGV1ZXJ1bmcuUm9sbGFkZW4tUFJPWkVOVCIsIG51bGwsIHtuYW1lOiAiUm9sbGFkZW4tUFJPWkVOVCIsIHR5cGU6ICJudW1iZXIiLCByb2xlOiAic3RhdGUiLCB1bml0OiAiJSIsIG1pbjogIjAiLCBtYXg6ICIxMDAifSk7</field> <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment> </block> </xml>
(in "Example_State" steht bei mir zu Testzwecken dein JSON)
Ergebnis:
Beispiel wie einfach man an die Werte innerhalb des JSON dran kommt:
...oder einen Feature Request beim Projekt absetzen, damit sie die Einzelwerte publishen, aber das wird keiner machen, dafür gibt es ja das JSON
Ok verstehe.
-
@sushibomba sagte in Xiaomi Temp and Humidity Monitor 2 + BLE Adapter:
Vielleicht hast du ja auch einen Tipp für mich wie ich es ohne Datenpunkte zu erstellen vernünftig auswerten kann und die Daten wie Temperatur und Feuchtigkeit anderweitig in Scripts etc. nutzen kann.
Dein JSON liegt ja irgendwo als Datenpunkt vor. Mit der 1. Zeile der Demo weise ich genau dieses Objekt der Variablen json zu. Nun kann man mit dem Baustein "Attribut" auf jeden Wert des JSON zugreifen.
Du kannst natürlich auch in deinem Blockly eine Variable "Temperatur" anlegen und der dann das "Attribut von Objekt..." zuweisen. Dann kannst du mit "Temperatur" arbeiten, ist halt weniger abstrakt als "Attribut 'temp' von Objekt 'xyz'".@sushibomba sagte in Xiaomi Temp and Humidity Monitor 2 + BLE Adapter:
Gibt es auch die Möglichkeit in einem Blockly gleichzeitig alle Datenpunkte für die einzelnen Daten zusammen zu erstellen?
Jein. Man kann aber mittels Selector zB. über alle Räume iterieren und dann in dieser Schleife mittels eines Aufrufs bspw. die Temperaturen feststellen (für alle Räume gleichzeitig), mit einem weiteren Aufruf die Luftfeuchte usw.
-
Hi,
ich hab mir auch mal eines der kleinen Thermometer von Xiaomi besorgt. Nach Flashen der alternativen Firmware kann ich es auch einbinden über den BLE-Adapter in den ioBroker.
Mir ist aufgefallen, dass jeweils am nächsten Tag keine Aktualisierung der Temperatur mehr erfolgt. Heute zB war der letzte Wert um 7:47 Uhr gesendet worden. Nach Neustart des Adapters geht es dann wieder.
Der BLE-Adapter liegt in der Version v0.13.4 vor. ioBroker ist per Proxmox-VM neu aufgesetzt am Laufen.
Man könnte nun den Adapter per Skript neu starten, ich wäre jedoch an einer Lösung ohne Neustart interessiert. -
Ich bräuchte mal hilfe. Ich habe schon eniges aus dem Forum probiert.
Folgendes steht im log:Cannot find module '../build/Release/bluetooth_hci_socket.node'Require stack:- /opt/iobroker/node_modules/@abandonware/bluetooth-hci-socket/lib/native.js- /opt/iobroker/node_modules/@abandonware/bluetooth-hci-socket/index.js- /opt/iobroker/node_modules/@abandonware/noble/lib/hci-socket/hci.js- /opt/iobroker/node_modules/@abandonware/noble/lib/hci-socket/bindings.js- /opt/iobroker/node_modules/@abandonware/noble/lib/resolve-bindings.js- /opt/iobroker/node_modules/@abandonware/noble/with-custom-binding.js- /opt/iobroker/node_modules/@abandonware/noble/index.js- /opt/iobroker/node_modules/iobroker.ble/build/scanProcess.js
-
@smarthome2020 sagte in Xiaomi Temp and Humidity Monitor 2 + BLE Adapter:
Hi,
ich hab mir auch mal eines der kleinen Thermometer von Xiaomi besorgt. Nach Flashen der alternativen Firmware kann ich es auch einbinden über den BLE-Adapter in den ioBroker.
Mir ist aufgefallen, dass jeweils am nächsten Tag keine Aktualisierung der Temperatur mehr erfolgt. Heute zB war der letzte Wert um 7:47 Uhr gesendet worden. Nach Neustart des Adapters geht es dann wieder.
Der BLE-Adapter liegt in der Version v0.13.4 vor. ioBroker ist per Proxmox-VM neu aufgesetzt am Laufen.
Man könnte nun den Adapter per Skript neu starten, ich wäre jedoch an einer Lösung ohne Neustart interessiert.Hat keiner ein ähnliches Problem? Bzw. eine Lösung ? Ich kann den Adapter vllt per Blockly oder Script neustarten, ist aber eher ein Workaround .
-
@dezi Sieht so aus als wären nicht alle nötigen Pakete installiert?
sudo apt-get install bluetooth bluez libbluetooth-dev libudev-dev libcap2-bin
hast du ausgeführt und keinen Fehler erhalten? -
@smarthome2020 sagte in Xiaomi Temp and Humidity Monitor 2 + BLE Adapter:
Hat keiner ein ähnliches Problem? Bzw. eine Lösung ?
Doch, hatte ich oben bereits erwähnt. Stabil lief es bei mir nie. Dein Problem hatte sich dann bei mir erledigt, als ich Nachts nach dem Backup nochmals den ioB durchstartete (tat dem ioB auch gut ).
...aber im Grunde auch nichts anderes als den BLE-Adapter neu zu starten... -
@sborg
Also ich starte den ioBroker jeden Morgen um 05:00 Uhr neu. Dennoch ist um 7 Uhr teilweise keine Verbindung mehr da. Ich wollte nun über die RSSI-Variable schauen, ob ich den Adapter neustarten kann. Wenn es keine Aktualisierung des RSSI-Wertes gibt --> Adapterneustart.