Hi,
ich habe gerade herausgefunden, das ESPHome den co2mini unterstützt.
Daher habe ich mir ein WemosD1 an den co2mini gebaut und sende jetzt die Daten via MQTT zu FHEM. Super Sache, aber ein Punkt bekomme ich gerade nicht hin.
Es wurde automatisch dieses DEVICE angelegt:
Internals:
CFGFN
CID co2_sensor_sz_840d8e8a913d
DEF co2_sensor_sz_840d8e8a913d
FUUID 63deb1d9-f33f-0804-eddf-8494e3fdccb568f4
IODev MyBroker
LASTInputDev MyBroker
MSGCNT 498
MyBroker_CONN MyBroker_192.168.178.149_58224
MyBroker_MSGCNT 498
MyBroker_TIME 2023-02-04 22:13:48
NAME MQTT2_co2_sensor_sz
NR 8149
STATE 24.1
TYPE MQTT2_DEVICE
eventCount 504
READINGS:
2023-02-04 20:28:25 IODev MyBroker
2023-02-04 21:55:22 avty_t co2-sensor-sz/status
2023-02-04 22:13:48 debug [0;36m[D][sensor:126]: 'Schlafzimmer Temperatur': Sending state 24.10001 °C with 1 decimals of accuracy[0m
2023-02-04 21:55:22 dev_cla temperature
2023-02-04 21:55:22 dev_ids 840d8e8a913d
2023-02-04 21:55:22 dev_mdl d1_mini
2023-02-04 21:55:22 dev_mf espressif
2023-02-04 21:55:22 dev_name co2-sensor-sz
2023-02-04 21:55:22 dev_sw esphome v2022.12.8 Feb 4 2023, 20:27:44
2023-02-04 21:55:22 ic mdi:molecule-co2
2023-02-04 21:55:22 name Schlafzimmer Temperatur
2023-02-04 21:55:22 stat_cla measurement
2023-02-04 21:55:22 stat_t co2-sensor-sz/sensor/schlafzimmer_temperatur/state
2023-02-04 22:13:48 state 24.1
2023-02-04 21:55:22 status online
2023-02-04 21:55:22 uniq_id ESPsensorschlafzimmer_temperatur
2023-02-04 21:55:22 unit_of_meas °C
Attributes:
readingList co2_sensor_sz_840d8e8a913d:co2-sensor-sz/debug:.* debug
co2_sensor_sz_840d8e8a913d:homeassistant/sensor/co2-sensor-sz/schlafzimmer_co2/config:.* { json2nameValue($EVENT) }
co2_sensor_sz_840d8e8a913d:co2-sensor-sz/sensor/schlafzimmer_co2/state:.* state
co2_sensor_sz_840d8e8a913d:homeassistant/sensor/co2-sensor-sz/schlafzimmer_temperatur/config:.* { json2nameValue($EVENT) }
co2_sensor_sz_840d8e8a913d:co2-sensor-sz/sensor/schlafzimmer_temperatur/state:.* state
co2_sensor_sz_840d8e8a913d:co2-sensor-sz/status:.* status
room MQTT2_DEVICE
Das Problem ist, dass ich von den zwei Sensoren nur einen in FHEM sehe und zwar den zweiten, den Temperaturwert.
Wenn ich das readingList richtig verstehe und mit dem MQTT Explorer mir das so anschauen, dann habe ich gerade das Gefühl, dass zwar beide Werte ausgelesen werden, aber der zweite Wert "schlafzimmer_temperatur" den ersten Wert überschreibt.
Dieses JSON:
co2_sensor_sz_840d8e8a913d:homeassistant/sensor/co2-sensor-sz/schlafzimmer_co2/config:.* { json2nameValue($EVENT) }
hat am Ende die gleichen Werte wie hier
co2_sensor_sz_840d8e8a913d:homeassistant/sensor/co2-sensor-sz/schlafzimmer_temperatur/config:.* { json2nameValue($EVENT) }
Der "state" wird quasi auch überschrieben.
Ich könnte jetzt "state" in state_co2 und state_temp umwandeln, aber bei den JSON Infos wüßte ich nicht wie?!
Wie kann ich also beide Werte bekommen?!
VG+Danke
René
PS: so sieht das angelegte Log aus:
2023-02-04_22:34:48 MQTT2_co2_sensor_sz debug: ESC[0;36m[D][sensor:126]: 'Schlafzimmer CO2': Sending state 1236.00000 ppm with 0 decimals of accuracyESC[0m
2023-02-04_22:34:48 MQTT2_co2_sensor_sz 1236
2023-02-04_22:34:48 MQTT2_co2_sensor_sz debug: ESC[0;36m[D][sensor:126]: 'Schlafzimmer Temperatur': Sending state 24.35001 °C with 1 decimals of accuracyESC[0m
2023-02-04_22:34:48 MQTT2_co2_sensor_sz 24.4
2023-02-04_22:35:48 MQTT2_co2_sensor_sz debug: ESC[0;36m[D][sensor:126]: 'Schlafzimmer CO2': Sending state 1146.00000 ppm with 0 decimals of accuracyESC[0m
2023-02-04_22:35:48 MQTT2_co2_sensor_sz 1146
2023-02-04_22:35:48 MQTT2_co2_sensor_sz debug: ESC[0;36m[D][sensor:126]: 'Schlafzimmer Temperatur': Sending state 24.35001 °C with 1 decimals of accuracyESC[0m
2023-02-04_22:35:48 MQTT2_co2_sensor_sz 24.4
Moin,
die Funktion json2namevalue kennt mehr Argumente, siehe Wiki Artikel (https://wiki.fhem.de/wiki/MQTT2_DEVICE_-_Schritt_f%C3%BCr_Schritt) im passenden Abschnitt.
Oder den topic zwischendurch mit analysieren. Siehe bridgeRegexp (https://wiki.fhem.de/wiki/MQTT2_DEVICE_-_Schritt_f%C3%BCr_Schritt#bridgeRegexp)
Und vielleicht die homeassistent Topics gleich in den Skat drücken. ;) Auswertung unterbinden (https://wiki.fhem.de/wiki/MQTT2_DEVICE_-_Schritt_f%C3%BCr_Schritt#Auswertung_unterbinden).
Gruß Otto
Moinsen Otto,
ich hatte mir den Artikel gestern Nacht noch angeschaut und hatte jetzt noch ein
co2_sensor_sz_840d8e8a913d:homeassistant/sensor/co2-sensor-sz/schlafzimmer_co2/config:.* { json2nameValue($EVENT, 'SZ_') }
eingebaut... hat aber erst heute Morgen um 6 Uhr die Readings geändert und nicht sofort.
Weißt du warum das so lange dauert?
Aber ich habe verstanden, dass ich mit der zweiten Option noch Präfixe setzen kann.
Die Frage ist ob ich das wirklich will/muss... eigentlich interessiert mich ja nur die eigentlichen CO2 und Temp - Werte und der andere "Quatsch" den der ESPHome sendet ist für mich eher uninteressant.
Also wäre doch die eigentliche Lösung, die beiden Zeilen:
co2_sensor_sz_840d8e8a913d:homeassistant/sensor/co2-sensor-sz/schlafzimmer_co2/config:.* { json2nameValue($EVENT) }
co2_sensor_sz_840d8e8a913d:homeassistant/sensor/co2-sensor-sz/schlafzimmer_temperatur/config:.* { json2nameValue($EVENT) }
zu löschen und
diese hier den Readingsnamen anzupassen:
co2_sensor_sz_840d8e8a913d:co2-sensor-sz/sensor/schlafzimmer_co2/state:.* co2
co2_sensor_sz_840d8e8a913d:co2-sensor-sz/sensor/schlafzimmer_temperatur/state:.* temp
oder?
Ich hantiere das erste Mal mit MQTT rum, bis auf den TASMOTA-Stromzähler, daher bin ich da noch nicht ganz so bewandert.
VG+Danke
René
Rene
Warum das lange gedauert hat kann ich nicht sagen. :-[
Die readingList Einträge löschen ist der falsche Weg, Du musst die Auswertung unterbinden:
co2_sensor_sz_840d8e8a913d:homeassistant/sensor/co2-sensor-sz/schlafzimmer_co2/config:.* {}
co2_sensor_sz_840d8e8a913d:homeassistant/sensor/co2-sensor-sz/schlafzimmer_temperatur/config:.* {}
oder so
co2_sensor_sz_840d8e8a913d:homeassistant/sensor/co2-sensor-sz/.*/config:.* {}
Ansonsten tauchen die Readings irgendwann irgendwo wieder auf :)
Zitat von: Otto123 am 05 Februar 2023, 09:07:36
oder so
co2_sensor_sz_840d8e8a913d:homeassistant/sensor/co2-sensor-sz/.*/config:.* {}
Bestimmte Zweige nicht auszupacken hat mich die Tage auch beschäftigt, ich meine festgestellt zu haben das man
alles was nach
co2-sensor-sz folgt dann auch so ausknipsen kann:
co2_sensor_sz_840d8e8a913d:homeassistant/sensor/co2-sensor-sz.* {}
Oder ist dabei ein Denkfehler, es tut bei mir zumindest ?
Du Schere - ich Skalpell :)
Falls da noch was anderes wäre als config ;D
Klar geht das - es ginge ja sogar .* {} für alles :)
ZitatreadingList <regexp> [readingName|perl-Expression]
Moinsen,
ich habs jetzt so gemacht wie Otto und auch das was bei debug geloggt wurde mit dem "Skalpel" deaktiviert.
Gleichzeitig habe ich nochmal alle sinnlosen Readings aus der Übersicht gelöscht.
jetzt sieht das so aus:
Internals:
CFGFN
CID co2_sensor_sz_840d8e8a913d
DEF co2_sensor_sz_840d8e8a913d
FUUID 63deb1d9-f33f-0804-eddf-8494e3fdccb568f4
IODev MyBroker
LASTInputDev MyBroker
MSGCNT 3615
MyBroker_CONN MyBroker_192.168.178.149_60737
MyBroker_MSGCNT 3615
MyBroker_TIME 2023-02-05 10:57:38
NAME MQTT2_co2_sensor_sz
NR 8149
STATE 1447 ppm
<br>
23.8 Grad
TYPE MQTT2_DEVICE
eventCount 3421
OLDREADINGS:
READINGS:
2023-02-04 20:28:25 IODev MyBroker
2023-02-05 10:57:38 co2_state 1447
2023-02-05 09:44:50 debug [0;36m[D][sensor:126]: 'Schlafzimmer Temperatur': Sending state 23.22501 °C with 1 decimals of accuracy[0m
2023-02-04 21:55:22 dev_cla temperature
2023-02-04 21:55:22 dev_ids 840d8e8a913d
2023-02-04 21:55:22 dev_mdl d1_mini
2023-02-04 21:55:22 dev_mf espressif
2023-02-04 21:55:22 dev_name co2-sensor-sz
2023-02-04 21:55:22 dev_sw esphome v2022.12.8 Feb 4 2023, 20:27:44
2023-02-04 21:55:22 ic mdi:molecule-co2
2023-02-05 09:50:49 status online
2023-02-05 10:57:38 temp_state 23.8
Attributes:
readingList co2_sensor_sz_840d8e8a913d:co2-sensor-sz/debug:.* {}
co2_sensor_sz_840d8e8a913d:homeassistant/sensor/co2-sensor-sz/schlafzimmer_co2/config:.* {}
co2_sensor_sz_840d8e8a913d:co2-sensor-sz/sensor/schlafzimmer_co2/state:.* co2_state
co2_sensor_sz_840d8e8a913d:homeassistant/sensor/co2-sensor-sz/schlafzimmer_temperatur/config:.* {}
co2_sensor_sz_840d8e8a913d:co2-sensor-sz/sensor/schlafzimmer_temperatur/state:.* temp_state
co2_sensor_sz_840d8e8a913d:co2-sensor-sz/status:.* status
room MQTT2_DEVICE
stateFormat co2_state ppm
<br>
temp_state Grad
Ich könnte noch ein paar Werte mehr löschen, da sie nie wieder aktualisiert werden, da ..../config:.* ja jetzt "deaktivert ist, aber so weiß ich wenigstens noch woher die Daten mal kamen.
VG+Danke
Moinsen,
ich habe jetzt einen zweiten co2mini per MQTT eingebunden, dieser liefert nur
co2_sensor_wz_84f3eb244711:co2-sensor-wz/debug:.* {}
co2_sensor_wz_84f3eb244711:co2-sensor-wz/sensor/wohnzimmer_co2/state:.* co2_state
co2_sensor_wz_84f3eb244711:co2-sensor-wz/sensor/wohnzimmer_temperatur/state:.* temp_state
co2_sensor_wz_84f3eb244711:co2-sensor-wz/status:.* status
allerdings habe ich hier relativ "schnell" die debug Zeile "deaktiviert".
Oder habt ihr eine andere Idee, warum hier die
co2_sensor_sz_840d8e8a913d:homeassistant/sensor/co2-sensor-sz/schlafzimmer_co2/config:.* {}
co2_sensor_sz_840d8e8a913d:homeassistant/sensor/co2-sensor-sz/schlafzimmer_temperatur/config:.* {}
nicht ausgelesen werden?
VG+Danke
René
Moin René,
ich denke der ha topic ist dort nicht aktiviert? Du hast ev. MQTT anders konfiguriert im Gerät?
Theoretisch kann auch ein homeassistant/sensor/.* {} in EINEM MQTT2_DEVICE alle diese Nachrichten quasi "wegfressen"
Gruß Otto
Zitat von: Otto123 am 05 Februar 2023, 08:10:31
Und vielleicht die homeassistent Topics gleich in den Skat drücken. ;)
...das solltest du in deine berühmte Zitatensammlung übernehmen...
Ansonsten ist (u.a.) der "homeassistant-config"-Topic auch einfach ein Kandidat für "ignoreRegexp" am IO-Device ;) .
Hi Otto,
ja irgendwas muss ich anders konfiguriert haben... ganz ehrlich, ich finde aber den Grund nicht.
Ich habe ESPHome nochmal frisch auf beide ESPs geflashed und jetzt senden beide die Homeassistant-Werte nicht mehr... naja umso besser :)
Mit dem MQTT2 Device lese ich ja jetzt ein Topic aus... da auch wird einmalig beim Start des ESPs ein Status "online" übermittelt.
https://esphome.io/components/mqtt.html#mqtt-last-will-birth (https://esphome.io/components/mqtt.html#mqtt-last-will-birth)
Aber wenn ich den ESP stromlos mache, dann wechselt das auch nicht zu offline... wie auch, der client kann nix mehr senden.
Oder kann der MQTT2 Server das irgendwie zu offline wandeln, wenn keine Nachrichten mehr kommen?!
VG
René