Tasmota DHT22- Temperatur und Luftfeuchtigkeit nach FHEM

Begonnen von chq, 05 Juli 2018, 21:58:56

Vorheriges Thema - Nächstes Thema

chq

Hallo,

bin mittlerweile so weit, dass bei mir ein DHT22 an ner tasmotageflashten S20 hängt und auf deren Woboberfläche sinnvolle Werte angezeigt werden.

Leider kann ich keine Quelle im Netz finden, die mir erklärt, wie ich die Werte für Temperatur und Luftfeuchtigkeit nach FHEM bekomme.

Per MQTT-Broker kann ich meine S20 bereits relaismäßig schalten.

Wie muss es denn generell laufen? Ist es so, dass seitens FHEM permanent nach den Werten für Temperatur und Luftfeuchtigkeit seitens der S20 "nachgefragt" werden muss (Polling), oder sollte die S20 dies per "Tasmota-Telemetry period" automatisch mitteilen?

Wer kann helfen?

Gruß Chris

Edit: Ich war wohl nur etwas zu ungeduldig. Nun kam "was rein": {"Time":"2018-07-05T21:56:16","AM2301":{"Temperature":24.3,"Humidity":62.6},"TempUnit":"C"}. Wie "zerlege" ich denn den Spass, so dass was Sinnvolles draus werden kann?
So einfach wie möglich, so kompliziert wie nötig

andies

Mach mal autoSubscribeReadings auf 1. und dann 5 Minuten warten.


Gesendet von iPhone mit Tapatalk Pro
FHEM 6.3 auf RaspPi4 (Raspbian:  6.6.28+; Perl: v5.36.0)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

helmut

Zitat von: chq am 05 Juli 2018, 21:58:56
Edit: Ich war wohl nur etwas zu ungeduldig. Nun kam "was rein": {"Time":"2018-07-05T21:56:16","AM2301":{"Temperature":24.3,"Humidity":62.6},"TempUnit":"C"}. Wie "zerlege" ich denn den Spass, so dass was Sinnvolles draus werden kann?

Hallo Chris,

dazu ist expandJSON geeignet. Beispiel:
defmod sonoff_ej expandJSON sonoff.*:(SENSOR|STATE|RESULT):.{.*}
Gruss Helmut
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)

chq

#3
Hallo,

danke für den Hinweis bzgl. des/der/dem expandJSON. Leider will es noch immer nicht so, wie ich will.

Wovon ich mittlerweile ausgehe:

1. Es ist tendenziell richtig, sich in einem in der Weboberfläche von Tasmota zu def. Intervall die Sensorwerte schicken zu lassen. Dies funktioniert soweit.
2. CPAN ist richtig installiert.

Bzgl. 2. bin ich folgendermaßen vorgegangen:

perl -v

sudo cpan install Net::MQTT:Simple

sudo cpan install Net::MQTT:Constants

sudo perl -MCPAN -e shell
cpan[1]> install CPAN
cpan[2]> reload cpan


Ob ich mir die letzten drei Zeilen hätte sparen können, kann ich mangels Fachwissen nicht sagen.

Hier ein list meines Tasmota-Devices:

Internals:
   IODev      mqtt
   NAME       Zahnbuerste
   NR         21
   STATE      OFF
   TYPE       MQTT_DEVICE
   qos        *:0
   retain     *:1
   READINGS:
     2018-07-06 12:35:57   SENSOR          {"Time":"2018-07-06T12:35:55","AM2301":{"Temperature":23.2,"Humidity":68.6},"TempUnit":"C"}
     2018-07-06 19:35:40   Sensor          {"Time":"2018-07-06T19:35:38","AM2301":{"Temperature":24.1,"Humidity":63.4},"TempUnit":"C"}
     2018-07-06 18:07:30   state           OFF
     2018-07-06 19:35:40   transmission-state incoming publish received
   message_ids:
   publishSets:
     :
       topic      cmnd/Zahnbuerste/power
       values:
         ON
         OFF
   sets:
     OFF       
     ON         
   subscribe:
     tele/Zahnbuerste/SENSOR
     stat/Zahnbuerste/POWER
   subscribeExpr:
     ^tele\/Zahnbuerste\/SENSOR$
     ^stat\/Zahnbuerste\/POWER$
   subscribeQos:
     stat/Zahnbuerste/POWER 0
     tele/Zahnbuerste/SENSOR 0
   subscribeReadings:
     stat/Zahnbuerste/POWER:
       cmd       
       name       state
     tele/Zahnbuerste/SENSOR:
       cmd       
       name       Sensor
Attributes:
   IODev      mqtt
   devStateIcon OFF:FS20.off:ON ON:FS20.on:OFF
   event-on-change-reading .*
   publishSet ON OFF cmnd/Zahnbuerste/power
   qos        at-most-once
   retain     1
   room       Bad
   stateFormat state
   subscribeReading_Sensor tele/Zahnbuerste/SENSOR
   subscribeReading_state stat/Zahnbuerste/POWER
   webCmd     ON:OFF


Ich gehe davon aus, dass das Reading "SENSOR" noch aus vergangenen (und mittlerweile unerheblichen) Tests stammt.

Bzgl. des/der/dem expandJSON bin ich gedanklich so weit:

defmod ZahnbuersteJSON expandJSON Zahnbuerste:Sensor

Dass das (noch) nicht vollständig ist weiss ich, kann mir den Rest jedoch leider auch unter Zuhilfenahme der Commandref nicht wirklich herleiten.

|, /, ., :, * und mangelndes Verständnis bzgl. Regex verwirren doch sehr.  :P

Gruß Chris
So einfach wie möglich, so kompliziert wie nötig

dev0

ZitatIch gehe davon aus, dass das Reading "SENSOR" noch aus vergangenen
Dann lösche es einfach:

deletereading Zahnbuerste SENSOR


Zitatmangelndes Verständnis bzgl. Regex verwirren doch sehr
Daran solltest Du arbeiten. Ohne regex zu verstehen oder anwenden zu können wirst Du Dich mit FHEM sehr schwer tun.
defmod ZahnbuersteJSON expandJSON Zahnbuerste:Sensor:.*

chq

#5
Hallo,

dank Dir für die Infos.

Nach Eingabe von..

defmod ZahnbuersteJSON expandJSON Zahnbuerste:Sensor:.*

..müsste das Device ZahnbuersteJSON nun theoretisch Readings erzeugen, sobald ein Sensor-Reading von Zahnbuerste "reinkommt", oder?

Dies ist leider nicht der Fall.

Gruß Chris

Edit: Ich glaub ich hab's. Die "fehlenden" Readings entstehen nicht im Device ZahnbuersteJSON, sondern im Device Zahnbuerste. Fett!  :)
So einfach wie möglich, so kompliziert wie nötig