NEWS
Xiaomi Temp and Humidity Monitor 2 + BLE Adapter
-
@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. -
@smarthome2020
2 Stunden hat er bei mir schon durchgehalten, aber nach 1-2 Tagen war immer Schicht im Schacht.Ist zwar nicht die schönste Lösung, wenn es aber sonst nicht anders geht. Könntest höchstens mal den Adapter umstellen ob ihm da was nicht "schmeckt".
Nutzt du einen MiniPC als ioB-Server oder einen PI? Ev. geht ihm dann nämlich der RAM aus. -
@sborg
Hab einen Mini PC mit 8GB RAM. Sollte also reichen . Probiere es mal mit dem Blockly. -
Hier mal mein Blockly, Adapter wurde schon 2x damit neugestartet:
<xml xmlns="https://developers.google.com/blockly/xml"> <variables> <variable type="timeout" id="BLE-Adapter-Neustart">BLE-Adapter-Neustart</variable> </variables> <block type="on_ext" id="mx#5OD`.VyZDq=4Up2tj" x="163" y="113"> <mutation xmlns="http://www.w3.org/1999/xhtml" items="1"></mutation> <field name="CONDITION">ne</field> <field name="ACK_CONDITION"></field> <value name="OID0"> <shadow type="field_oid" id="H+w#Kn139V0tWHK/uXQi"> <field name="oid">ble.0.a4:c1:38:57:74:74.rssi</field> </shadow> </value> <statement name="STATEMENT"> <block type="timeouts_cleartimeout" id="F1FmC9B1IO7ZrftLA9vB"> <field name="NAME">BLE-Adapter-Neustart</field> <next> <block type="timeouts_settimeout" id="uqqZ#KU1Q%b_tt5ZujXy"> <field name="NAME">BLE-Adapter-Neustart</field> <field name="DELAY">5</field> <field name="UNIT">min</field> <statement name="STATEMENT"> <block type="control" id="V#U6WMi[{+2(-4Sbtbse"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="false"></mutation> <field name="OID">system.adapter.ble.0.alive</field> <field name="WITH_DELAY">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="0{:#OFY4|?Y7|+/Uv%PS"> <field name="BOOL">FALSE</field> </block> </value> <next> <block type="control" id="GvzYu^KLA0BJgSuONBC`"> <mutation xmlns="http://www.w3.org/1999/xhtml" delay_input="true"></mutation> <field name="OID">system.adapter.ble.0.alive</field> <field name="WITH_DELAY">TRUE</field> <field name="DELAY_MS">10</field> <field name="UNIT">sec</field> <field name="CLEAR_RUNNING">FALSE</field> <value name="VALUE"> <block type="logic_boolean" id="Jr%V,C;g(5gP*9!gZQik"> <field name="BOOL">TRUE</field> </block> </value> <next> <block type="timeouts_cleartimeout" id="$c#~oXyhd{;1,$m`^4:b"> <field name="NAME">BLE-Adapter-Neustart</field> </block> </next> </block> </next> </block> </statement> </block> </next> </block> </statement> </block> </xml>
-
Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut. Statusinformationen werden eingelesen.... Fertig libcap2-bin ist schon die neueste Version (1:2.25-2). libudev-dev ist schon die neueste Version (241-7~deb10u9+rpi1). bluetooth ist schon die neueste Version (5.50-1.2~deb10u3+rpt1). bluez ist schon die neueste Version (5.50-1.2~deb10u3+rpt1). libbluetooth-dev ist schon die neueste Version (5.50-1.2~deb10u3+rpt1). 0 aktualisiert, 0 neu installiert, 0 zu entfernen und 11 nicht aktualisiert.
Davon hab ich scheinbar auch schon alle
-
@dezi sagte in Xiaomi Temp and Humidity Monitor 2 + BLE Adapter:
11 nicht aktualisiert.
Die hast du aber nicht. Ran da.
-
@thomas-braun
Die hab ich im Anschluss direkt aktualisiert. Denke eher das liegt daran das ich Treiber nicht gestartet bekomme laut iobroker. Bluetooth an sich in an und findet auch Geräte -