FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: SABINEMUELLER am 09 Juli 2021, 19:30:36

Titel: Datenübernahme von MQTT2 nach Userreadings oder direkt nach Filelog
Beitrag von: SABINEMUELLER am 09 Juli 2021, 19:30:36
Bitte um Hilfe.
Welche Möglichkeit gibt es die Daten von MQTT2 Device nach Filelog zu schreiben?

Ich habe folgende konfig:

define MQTT2_DHT11_Buero MQTT2_DEVICE DHT11_Buero
attr MQTT2_DHT11_Buero IODev MQTT2_HZ_Sensoren
attr MQTT2_DHT11_Buero autocreate 0
attr MQTT2_DHT11_Buero devStateStyle style="color:blue;;font-weight:bold"
attr MQTT2_DHT11_Buero event-min-interval 2, MQTT_DHT1_Buero_LOG:2
attr MQTT2_DHT11_Buero event-on-change-reading temperature,humidity,dewpoint
attr MQTT2_DHT11_Buero icon temperature_humidity

attr MQTT2_DHT11_Buero readingList tele/DHT11_Buero/LWT:.* LWT\
cmnd/DHT11_Buero/POWER:.* Power\
tele/DHT11_Buero/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ?  json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }\
stat/DHT11_Buero/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }\
stat/DHT11_Buero/POWER1:.* state\
tele/DHT11_Buero/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }\
tele/DHT11_Buero/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }\
tele/DHT11_Buero/UPTIME:.* { json2nameValue($EVENT,'',$JSONMAP) }

attr MQTT2_DHT11_Buero room MQTT->1_Status
attr MQTT2_DHT11_Buero stateFormat {sprintf("Temperatur: %.1f °C   Feuchte: %.1f %%   Taupunkt: %.1f °C", ReadingsVal($name,"DHT11-02_Temperature",0), ReadingsVal($name,"DHT11-02_Humidity",0), ReadingsVal($name,"DHT11-02_DewPoint",0))}
attr MQTT2_DHT11_Buero userReadings MQTT_DHT1_Buero_LOG:: .* {sprintf("Temperatur: %.1f °C   Feuchte: %.1f %%   Taupunkt: %.1f °C", ReadingsVal($name,"DHT11-02_Temperature",0), ReadingsVal($name,"DHT11-02_Humidity",0), ReadingsVal($name,"DHT11-02_DewPoint",0))}

define FileLog_MQTT2_DHT11_Buero FileLog ./log/MQTT2_DHT11_Buero_%Y_%m.log MQTT2_DHT11_Buero:MQTT_DHT1_Buero_LOG.*
setuuid FileLog_MQTT2_DHT11_Buero 60e84302-f33f-5d57-fc7f-697ffe090db6721a
attr FileLog_MQTT2_DHT11_Buero logtype text
attr FileLog_MQTT2_DHT11_Buero room MQTT->4_Log

Im stateFormat werden auf der WEB Oberfläche die Werte richtig angezeigt.
Es werden aber keine Werte ins Log-File geschrieben.
Wo ist mein Fehler? Gibt es noch eine andere Möglichkeit die Werte in ein FileLog zu speichern?
Wo bekomme ich Infos darüber was folgende Zeilen genau zu bedeuten haben und welche Infos Tasmota in FHEM bereitstellt? (Platine ist ein ESP1 mit DHT11 und geflashtem Tasmota)

tele/DHT11_Buero/LWT:.* LWT\
cmnd/DHT11_Buero/POWER:.* Power\
tele/DHT11_Buero/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ?  json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }\
stat/DHT11_Buero/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }\
stat/DHT11_Buero/POWER1:.* state\
tele/DHT11_Buero/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }\
tele/DHT11_Buero/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }\
tele/DHT11_Buero/UPTIME:.* { json2nameValue($EVENT,'',$JSONMAP) }

Mfg.
Sabine
Titel: Antw:Datenübernahme von MQTT2 nach Userreadings oder direkt nach Filelog
Beitrag von: Otto123 am 09 Juli 2021, 21:14:24
Hallo Sabine,

die Zeile ist falsch:
define FileLog_MQTT2_DHT11_Buero FileLog ./log/MQTT2_DHT11_Buero_%Y_%m.log MQTT2_DHT11_Buero:MQTT_DHT1_Buero_LOG.*

so sollte es sein.
define FileLog_MQTT2_DHT11_Buero FileLog ./log/MQTT2_DHT11_Buero_%Y_%m.log MQTT2_DHT11_Buero:.*


Du solltest beim posten Code Tags verwenden: https://forum.fhem.de/index.php/topic,71806.0.html

Erklärung der Readinglist
Vielleicht hilft das hier? https://wiki.fhem.de/wiki/MQTT2-Module_-_Praxisbeispiele
Oder der grundlegende MQTT Artikel im Wiki?

Gruß Otto
Titel: Antw:Datenübernahme von MQTT2 nach Userreadings oder direkt nach Filelog
Beitrag von: Nobbynews am 10 Juli 2021, 13:26:54
Hallo Sabine,

auf wenn MQTT nicht mein Steckenpferd ist, sind mir 2 Sachen aufgefallen.
Zitat von: SABINEMUELLER am 09 Juli 2021, 19:30:36
attr MQTT2_DHT11_Buero event-min-interval 2, MQTT_DHT1_Buero_LOG:2
Hier erschließt sich mir der Sinn der führenden "2" nicht. Die Syntax ist doch <device>:Zeitspanne.
Soll wirklich alle 2 Sekunden ein event erzeugt werden oder sind 2 Minuten, also 120 Sekunden gemeint?
Zitat von: SABINEMUELLER am 09 Juli 2021, 19:30:36
attr MQTT2_DHT11_Buero stateFormat {sprintf("Temperatur: %.1f °C   Feuchte: %.1f %%   Taupunkt: %.1f °C", ReadingsVal($name,"DHT11-02_Temperature",0), ReadingsVal($name,"DHT11-02_Humidity",0), ReadingsVal($name,"DHT11-02_DewPoint",0))}
attr MQTT2_DHT11_Buero userReadings MQTT_DHT1_Buero_LOG:: .* {sprintf("Temperatur: %.1f °C   Feuchte: %.1f %%   Taupunkt: %.1f °C", ReadingsVal($name,"DHT11-02_Temperature",0), ReadingsVal($name,"DHT11-02_Humidity",0), ReadingsVal($name,"DHT11-02_DewPoint",0))}

define FileLog_MQTT2_DHT11_Buero FileLog ./log/MQTT2_DHT11_Buero_%Y_%m.log MQTT2_DHT11_Buero:MQTT_DHT1_Buero_LOG.*

Das userReading müsste mMn so lauten:
attr MQTT2_DHT11_Buero userReadings MQTT_DHT1_Buero_LOG:MQTT_DHT11_Buero:Temperature:.* {sprintf("Temperatur: %.1f °C   Feuchte: %.1f %%   Taupunkt: %.1f °C", ReadingsVal($name,"DHT11-02_Temperature",0), ReadingsVal($name,"DHT11-02_Humidity",0), ReadingsVal($name,"DHT11-02_DewPoint",0))}

Zusätzlich hat sich hinter dem zweiten Doppelpunkt ein Leerzeichen eingeschlichen.
Die Definition des FileLogs würde ich dann so vornehmen:
define FileLog_MQTT2_DHT11_Buero FileLog ./log/MQTT2_DHT11_Buero_%Y_%m.log MQTT2_DHT11_Buero:MQTT_DHT1_Buero_LOG:.*
Das deckt sich im Prinzip mit dem Hinweis von Otto, nur dass nicht alle event bzw. readings des device geloggt werden, sontern nur das userReading.

Norbert

Edit:
Definition des userReadings korrigiert
Titel: Antw:Datenübernahme von MQTT2 nach Userreadings oder direkt nach Filelog
Beitrag von: MadMax-FHEM am 10 Juli 2021, 13:49:37
Und weil wir schon bei Attributen sind (min-interval):

Zitat
Syntax

Das event-min-interval Attribut wird in der folgenden Weise spezifiziert:

    attr <device> event-min-interval reading1:minInterval1[,reading2:minInterval2,...]

Die zu berücksichtigenden Readings sind als durch Komma getrennte Werte anzugeben, können aber auch über reguläre Ausdrücke zusammengefasst werden. Das minIntervall wird in Sekunden angegeben.

Wichtig: KOMMA SEPARIERTE Liste! Nicht KOMMA und dann ein LEERZEICHEN vor dem nächsten Eintrag! Sonst gehört das LEERZEICHEN zum nächsten Eintrag mit dazu!

Gruß, Joachim
Titel: Antw:Datenübernahme von MQTT2 nach Userreadings oder direkt nach Filelog
Beitrag von: Otto123 am 10 Juli 2021, 14:01:30
Ehrlich gesagt habe ich mich da gestern durch schlechte Lesbarkeit und fürchterliche Namensgebungen einfach verlesen.🤣😭
Wie man auf die Idee kommt ein Userreading aus mehrfachen Namensteilen der beteiligten Geräte zu bilden? 😳🥺 Ersatzweise würde ich Willi nehmen.😄
Titel: Antw:Datenübernahme von MQTT2 nach Userreadings oder direkt nach Filelog
Beitrag von: SABINEMUELLER am 11 Juli 2021, 16:48:38
Hallo und Danke für eure Antworten,

ich habe alle Vorschläge einschließlich der Umbenennung in"Willi" ausprobiert.
Leider keinen Erfolg.

Nochmal zur besseren Übersicht.
Ich habe einen ESP1-Chip mit DHT11 Sensor mit Tasmota "Topic=HZ_Sensoren" laufen.
In FHEM läuft ein MQTT2-Server "MQTT2_FHEM_Server" das FHEM-Device "HZS_Buero_DHT11" empfängt die Daten und zeigt mir diese in den Readings und in der Stateleiste "stateFormat" neben dem Device an (Werte werden auch aktualisiert).


define MQTT2_FHEM_Server MQTT2_SERVER 1883 global
attr MQTT2_FHEM_Server ignoreRegexp cmnd/[^:"]+:
attr MQTT2_FHEM_Server room MQTT->1_Status

define HZS_Buero_DHT11 MQTT2_DEVICE MQTT2_FHEM_Server
attr HZS_Buero_DHT11 IODev MQTT2_HZ_Sensoren
attr HZS_Buero_DHT11 autocreate 0
attr HZS_Buero_DHT11 devStateStyle style="color:blue;;font-weight:bold"
attr HZS_Buero_DHT11 event-min-interval 120,HZS_Buero_DHT11_LOG:120
attr HZS_Buero_DHT11 event-on-change-reading temperature,humidity,dewpoint
attr HZS_Buero_DHT11 icon temperature_humidity
attr HZS_Buero_DHT11 readingList tele/HZ_Sensoren/LWT:.* LWT\
cmnd/HZ_Sensoren/POWER:.* Power\
tele/HZ_Sensoren/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ?  json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }\
stat/HZ_Sensoren/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }\
stat/HZ_Sensoren/POWER1:.* state\
tele/HZ_Sensoren/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }\
tele/HZ_Sensoren/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }\
tele/HZ_Sensoren/UPTIME:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr HZS_Buero_DHT11 room MQTT->1_Status
attr HZS_Buero_DHT11 stateFormat {sprintf("Temperatur: %.1f °C   Feuchte: %.1f %%   Taupunkt: %.1f °C", ReadingsVal($name,"DHT11-02_Temperature",0), ReadingsVal($name,"DHT11-02_Humidity",0), ReadingsVal($name,"DHT11-02_DewPoint",0))}
attr HZS_Buero_DHT11 userReadings Willi_LOG:HZS_Buero_DHT11:.* {sprintf("Temperatur: %.1f °C   Feuchte: %.1f %%   Taupunkt: %.1f °C", ReadingsVal($name,"DHT11-02_Temperature",0), ReadingsVal($name,"DHT11-02_Humidity",0), ReadingsVal($name,"DHT11-02_DewPoint",0))}

define FileLog_HZS_Buero_DHT11 FileLog ./log/HZS_Buero_DHT11_%Y_%m.log HZS_Buero_DHT11:Willi_LOG:.*
attr FileLog_HZS_Buero_DHT11 logtype text
attr FileLog_HZS_Buero_DHT11 room MQTT->4_Log


Es wird ein Log-File angelegt aber keine Daten eingetragen.
Meine Vermutung ist, dass die Daten aus dem MQTT2-Device nicht an das userreading übergeben werden oder das userreading die Daten nicht in das Log-File überträgt. 
Ich bin mir aber auch nicht sicher ob ich das mit dem userreading so überhaupt machen kann.
Vieleicht gibt es aber auch eine einfachere Lösung wie Nobbynews andeutungsweise schrieb "Das deckt sich im Prinzip mit dem Hinweis von Otto, nur dass nicht alle event bzw. readings des device geloggt werden, sontern nur das userReading."
Wie kann ich alle oder selektierte events bzw. readings loggen?

Gruß
Sabine
Titel: Antw:Datenübernahme von MQTT2 nach Userreadings oder direkt nach Filelog
Beitrag von: TomLee am 11 Juli 2021, 17:04:38
ZitatWie kann ich alle oder selektierte events bzw. readings loggen?

Am einfachsten, dann kann man auch keinen Fehler machen, über den Wizard oben in dem FileLog-Device, mit bspw:

set FileLog_HZS_Buero_DHT11 addRegexpPart HZS_Buero_DHT11 <readingname>

das gewünschte Reading in der DEF ergänzen.

Gruß

Thomas

edit:

und entfernen mit removeRegexpPart, im Wizard
Titel: Antw:Datenübernahme von MQTT2 nach Userreadings oder direkt nach Filelog
Beitrag von: Otto123 am 11 Juli 2021, 17:07:27
Hi,

das hier scheint falsch:
attr HZS_Buero_DHT11 userReadings Willi_LOG:HZS_Buero_DHT11:.* {sprintf("Temperatur: %.1f °C   Feuchte: %.1f %%   Taupunkt: %.1f °C", ReadingsVal($name,"DHT11-02_Temperature",0), ReadingsVal($name,"DHT11-02_Humidity",0), ReadingsVal($name,"DHT11-02_DewPoint",0))}
Du kannst nicht mit dem Gerät triggern
Willi_LOG:HZS_Buero_DHT11:.*
sondern mit einem Reading im Gerät
Willi_LOG:DHT11-02_Temperature:.*

Da Du Zahlen lesen willst: nimm ReadingsNum() anstatt ReadingsVal().

Deine Device Definition ist "komisch": Du verwendest $JSONMAP, hast aber gar kein attr jsonMap definiert?

Gruß Otto
Titel: Antw:Datenübernahme von MQTT2 nach Userreadings oder direkt nach Filelog
Beitrag von: Nobbynews am 11 Juli 2021, 17:33:26
Zitat von: SABINEMUELLER am 11 Juli 2021, 16:48:38

attr HZS_Buero_DHT11 event-min-interval 120,HZS_Buero_DHT11_LOG:120

Das Attribut ist mMn immer noch falsch gesetzt. Die "120," vorneweg sind falsch und gehören da nicht hin.
Außerdem muss hier das neue userReading WILLI_LOG eingetragen werden.
Zitat von: SABINEMUELLER am 11 Juli 2021, 16:48:38

attr HZS_Buero_DHT11 userReadings Willi_LOG:HZS_Buero_DHT11:.* {sprintf("Temperatur: %.1f °C   Feuchte: %.1f %%   Taupunkt: %.1f °C", ReadingsVal($name,"DHT11-02_Temperature",0), ReadingsVal($name,"DHT11-02_Humidity",0), ReadingsVal($name,"DHT11-02_DewPoint",0))}

Das war mein Fehler. Sorry. Otto hat es korrigiert.

Wobei mir noch etwas aufgefallen ist.
Zitat von: SABINEMUELLER am 11 Juli 2021, 16:48:38

attr HZS_Buero_DHT11 event-on-change-reading temperature,humidity,dewpoint

Gibt es diese Readings im device HZS_Buero_DHT11 überhaupt? Im userReading heißen die DHT11-02_Temperature, DHT11-02_Humidity und DHT11-02_DewPoint. Wenn nicht, passiert da garnichts.

Norbert
Titel: Antw:Datenübernahme von MQTT2 nach Userreadings oder direkt nach Filelog
Beitrag von: SABINEMUELLER am 11 Juli 2021, 18:38:39
Ich habe eure Vorschläge ausprobiert. Keinen Erfolg.

Wenn ich in der WEB Oberfläche unter Regexp parts -> set FileLog_HZS  addRegexpPart FileLog_HZS addRegexpPart.* auswähle,
wird das "2021-07-11_17:56:56 FileLog_HZS addRegexpPart FileLog_HZS addRegexpPart.*" ins Logfile geschrieben.

Wenn ich in der WEB Oberfläche unter Regexp parts -> set FileLog_HZS  addRegexpPart MQTT2_DVES_EAD76F DHT11-02_Temperature:.* auswähle,
wird das "2021-07-11_18:04:44 FileLog_HZS addRegexpPart MQTT2_DVES_EAD76F DHT11-02_Temperature:.*" ins Logfile geschrieben.

"DVES_EAD76F" das ist die Tasmota- Topic bezeichnung. Ich habe die aber in der Tasmota Config entsprechend angepasst. Geht trotzdem nicht.


Und das war es dann auch schon.

In dem Readings des Devices steht folgendes:

Readings
Buero_DHT11_LOG                  Temperatur: 29.9 °C Feuchte: 48.0 % Taupunkt: 17.7 °C                 2021-07-11 18:32:29
DHT11-02_DewPoint                17.7                                                                                                   2021-07-11 18:32:29
DHT11-02_Humidity                  48.0                                                                                                   2021-07-11 18:32:29
DHT11-02_Temperature           29.9                                                                                                   2021-07-11 18:32:29

Gruß
Sabine

Titel: Antw:Datenübernahme von MQTT2 nach Userreadings oder direkt nach Filelog
Beitrag von: Otto123 am 11 Juli 2021, 18:53:06
Du redest jetzt von einem völlig anderem Gerät?  :-[

Aber immerhin wird ein userReadings erzeugt
Buero_DHT11_LOG                  Temperatur: 29.9 °C Feuchte: 48.0 % Taupunkt: 17.7 °C                 2021-07-11 18:32:29

Aber ich verzweifle mit Deinen Angaben - glaub mir so wird Dir keiner helfen können! Poste bitte komplette lists von ALLEN beteiligten Devices - sonst hast Du Weihnachten noch kein log.
Und solange Du eigentlich nicht wirklich weißt was Du da tust: entferne bitte alle attr event.* - mach es später wenn zuviele Daten im Log stehen neu. :)

Gruß Otto 
Titel: Antw:Datenübernahme von MQTT2 nach Userreadings oder direkt nach Filelog
Beitrag von: TomLee am 11 Juli 2021, 18:59:11
Das mit den lists ist offensichtlich auch noch nicht klar, verlink doch gleich dazu wie man das macht (https://forum.fhem.de/index.php/topic,71806.0.html).

edit:

doch, sry, oben gibts eines.

edit:

nee, doch nicht, da ist die Definition aus der fhem.cfg rauskopiert.
Titel: Antw:Datenübernahme von MQTT2 nach Userreadings oder direkt nach Filelog
Beitrag von: SABINEMUELLER am 11 Juli 2021, 19:39:29
Hier mein "List HZS": MQTT-Device

Internals:
   CFGFN      /opt/fhem/FHEM/MQTT_Sensoren.cfg
   CID        MQTT2_FHEM_Server
   DEF        MQTT2_FHEM_Server
   DEVICETOPIC HZS
   FUUID     
   IODev      MQTT2_FHEM_Server
   LASTInputDev MQTT2_FHEM_Server
   MQTT2_FHEM_Server_MSGCNT 87
   MQTT2_FHEM_Server_TIME 2021-07-11 19:17:44
   MSGCNT     87
   NAME       HZS
   NR         659
   STATE      Temperatur: 29.6 °C   Feuchte: 51.0 %   Taupunkt: 18.4 °C
   TYPE       MQTT2_DEVICE
   READINGS:
     2021-07-11 19:17:44   Buero_DHT11_LOG Temperatur: 29.6 °C   Feuchte: 51.0 %   Taupunkt: 18.4 °C
     2021-07-11 19:15:50   Buero_DHT11_LOG1 Temperatur: 29.9 °C   Feuchte: 51.0 %   Taupunkt: 18.7 °C
     2021-07-11 19:17:44   DHT11-02_DewPoint 18.4
     2021-07-11 19:17:44   DHT11-02_Humidity 51.0
     2021-07-11 19:17:44   DHT11-02_Temperature 29.6
     2021-07-11 19:17:40   FallbackTopic   cmnd/DVES_EAD76F_fb/
     2021-07-11 17:33:02   FullTopic       %prefix%/%topic%/
     2021-07-11 19:17:40   GroupTopic      cmnd/tasmotas/
     2021-07-11 19:17:44   Heap            29
     2021-07-11 19:17:40   Hostname        HZ_Sensoren
     2021-07-11 17:36:40   IODev           MQTT2_FHEM_Server
     2021-07-11 19:17:40   IPAddress       
     2021-07-11 19:17:40   LWT             Online
     2021-07-11 19:17:44   LoadAvg         19
     2021-07-11 19:17:40   Module          Generic
     2021-07-11 17:33:02   MqttClient      DVES_EAD76F
     2021-07-11 19:17:44   MqttCount       1
     2021-07-11 17:33:02   MqttHost       
     2021-07-11 17:33:02   MqttPassword   
     2021-07-11 17:33:02   MqttPort        1883
     2021-07-11 17:33:02   MqttUser        HZS
     2021-07-11 19:17:40   RestartReason   External System
     2021-07-11 19:17:44   Sleep           50
     2021-07-11 19:17:44   SleepMode       Dynamic
     2021-07-11 19:17:44   TempUnit        C
     2021-07-11 19:17:44   Time            2021-07-11T18:17:44
     2021-07-11 17:33:02   Topic           DVES_EAD76F
     2021-07-11 19:17:44   Uptime          0T00:00:09
     2021-07-11 19:17:44   UptimeSec       9
     2021-07-11 19:17:40   Version         9.5.0(tasmota)
     2021-07-11 19:17:40   WebServerMode   Admin
     2021-07-11 19:17:44   Wifi_AP         1
     2021-07-11 19:17:44   Wifi_BSSId     
     2021-07-11 19:17:44   Wifi_Channel    11
     2021-07-11 19:17:44   Wifi_Downtime   0T00:00:03
     2021-07-11 19:17:44   Wifi_LinkCount  1
     2021-07-11 19:17:44   Wifi_Mode       11n
     2021-07-11 19:17:44   Wifi_RSSI       90
     2021-07-11 19:17:44   Wifi_SSId       
     2021-07-11 19:17:44   Wifi_Signal     -55
Attributes:
   IODev      MQTT2_HZ_Sensoren
   autocreate 0
   devStateStyle style="color:blue;font-weight:bold"
   event-min-interval Buero_DHT11_LOG:60
   event-on-change-reading DHT11-02_Temperature,DHT11-02_Humidity,DHT11-02_DewPoint
   icon       temperature_humidity
   readingList tele/DVES_EAD76F/LWT:.* LWT
cmnd/DVES_EAD76F/POWER:.* Power
tele/DVES_EAD76F/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ?  json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }
stat/DVES_EAD76F/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }
stat/DVES_EAD76F/POWER1:.* state
tele/DVES_EAD76F/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }
tele/DVES_EAD76F/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }
tele/DVES_EAD76F/UPTIME:.* { json2nameValue($EVENT,'',$JSONMAP) }
   room       MQTT->1_Status
   stateFormat {sprintf("Temperatur: %.1f °C   Feuchte: %.1f %%   Taupunkt: %.1f °C", ReadingsVal($name,"DHT11-02_Temperature",0), ReadingsVal($name,"DHT11-02_Humidity",0), ReadingsVal($name,"DHT11-02_DewPoint",0))}
   userReadings Buero_DHT11_LOG:DHT11-02_Temperature:.* {sprintf("Temperatur: %.1f °C   Feuchte: %.1f %%   Taupunkt: %.1f °C", ReadingsVal($name,"DHT11-02_Temperature",0), ReadingsVal($name,"DHT11-02_Humidity",0), ReadingsVal($name,"DHT11-02_DewPoint",0))}


Das LOG1 stammt noch aus einer meiner Versuche.
Hier mein Server:


Internals:
   CFGFN      /opt/fhem/FHEM/MQTT_Sensoren.cfg
   CONNECTS   11
   Clients    :MQTT2_DEVICE:MQTT_GENERIC_BRIDGE:
   ClientsKeepOrder 1
   DEF        1883 global
   FD         42
   FUUID     
   NAME       MQTT2_FHEM_Server
   NR         639
   PORT       1883
   STATE      Initialized
   TYPE       MQTT2_SERVER
   MatchList:
     1:MQTT2_DEVICE ^.
     2:MQTT_GENERIC_BRIDGE ^.
   READINGS:
     2021-07-11 19:23:43   RETAIN          {"tasmota/discovery/xxxxxxEAD76F/config":"{\u0022ip\u0022:\u0022xxx.xxx.x.xxx\u0022,\u0022dn\u0022:\u0022Tasmota\u0022,\u0022fn\u0022:[\u0022Tasmota\u0022,null,null,null,null,null,null,null],\u0022hn\u0022:\u0022HZ_Sensoren\u0022,\u0022mac\u0022:\u0022xxxxxxEAD76F\u0022,\u0022md\u0022:\u0022Generic\u0022,\u0022ty\u0022:0,\u0022if\u0022:0,\u0022ofln\u0022:\u0022Offline\u0022,\u0022onln\u0022:\u0022Online\u0022,\u0022state\u0022:[\u0022off\u0022,\u0022on\u0022,\u0022toggle\u0022,\u0022hold\u0022],\u0022sw\u0022:\u00229.5.0\u0022,\u0022t\u0022:\u0022DVES_EAD76F\u0022,\u0022ft\u0022:\u0022%prefix%/%topic%/\u0022,\u0022tp\u0022:[\u0022cmnd\u0022,\u0022stat\u0022,\u0022tele\u0022],\u0022rl\u0022:[0,0,0,0,0,0,0,0],\u0022swc\u0022:[-1,-1,-1,-1,-1,-1,-1,-1],\u0022swn\u0022:[null,null,null,null,null,null,null,null],\u0022btn\u0022:[0,0,0,0,0,0,0,0],\u0022so\u0022:{\u00224\u0022:0,\u002211\u0022:0,\u002213\u0022:0,\u002217\u0022:0,\u002220\u0022:0,\u002230\u0022:0,\u002268\u0022:0,\u002273\u0022:0,\u002282\u0022:0,\u0022114\u0022:0,\u0022117\u0022:0},\u0022lk\u0022:1,\u0022lt_st\u0022:0,\u0022sho\u0022:[0,0,0,0],\u0022ver\u0022:1}","tasmota/discovery/xxxxxxEAD76F/sensors":"{\u0022sn\u0022:{\u0022Time\u0022:\u00222021-07-11T18:23:43\u0022,\u0022DHT11-01\u0022:{\u0022Temperature\u0022:null,\u0022Humidity\u0022:null,\u0022DewPoint\u0022:null},\u0022DHT11-02\u0022:{\u0022Temperature\u0022:29.5,\u0022Humidity\u0022:50.0,\u0022DewPoint\u0022:18.0},\u0022TempUnit\u0022:\u0022C\u0022},\u0022ver\u0022:1}","tele/DVES_EAD76F/LWT":"Online","tele/HZ_Sensoren/LWT":"Offline"}
     2021-07-11 19:23:34   nrclients       1
     2021-07-11 17:36:39   state           Initialized
   clients:
     MQTT2_FHEM_Server__49248 1
   retain:
     tasmota/discovery/xxxxxxEAD76F/config:
       ts         1626024223.32367
       val        {"ip":"","dn":"Tasmota","fn":["Tasmota",null,null,null,null,null,null,null],"hn":"HZ_Sensoren","mac":"","md":"Generic","ty":0,"if":0,"ofln":"Offline","onln":"Online","state":["off","on","toggle","hold"],"sw":"9.5.0","t":"DVES_EAD76F","ft":"%prefix%/%topic%/","tp":["cmnd","stat","tele"],"rl":[0,0,0,0,0,0,0,0],"swc":[-1,-1,-1,-1,-1,-1,-1,-1],"swn":[null,null,null,null,null,null,null,null],"btn":[0,0,0,0,0,0,0,0],"so":{"4":0,"11":0,"13":0,"17":0,"20":0,"30":0,"68":0,"73":0,"82":0,"114":0,"117":0},"lk":1,"lt_st":0,"sho":[0,0,0,0],"ver":1}
     tasmota/discovery/xxxxxxEAD76F/sensors:
       ts         1626024223.88137
       val        {"sn":{"Time":"2021-07-11T18:23:43","DHT11-01":{"Temperature":null,"Humidity":null,"DewPoint":null},"DHT11-02":{"Temperature":29.5,"Humidity":50.0,"DewPoint":18.0},"TempUnit":"C"},"ver":1}
     tele/DVES_EAD76F/LWT:
       ts         1626024214.01828
       val        Online
     tele/HZ_Sensoren/LWT:
       ts         1626017802.27137
       val        Offline
Attributes:
   ignoreRegexp cmnd/[^:"]+:
   room       MQTT->1_Status



Gruß
Sabine
Titel: Antw:Datenübernahme von MQTT2 nach Userreadings oder direkt nach Filelog
Beitrag von: Otto123 am 11 Juli 2021, 19:53:08
Dir geht es doch aber ums Log? Wo ist das Logdevice was Du aktuell beackerst?

ZitatCFGFN      /opt/fhem/FHEM/MQTT_Sensoren.cfg
::) ::) ::) gaaanz wichtig

ZitatignoreRegexp cmnd/[^:"]+:
Macht man sowas am Server? Was ist da der tiefere Grund?

Gruß Otto
Titel: Antw:Datenübernahme von MQTT2 nach Userreadings oder direkt nach Filelog
Beitrag von: Beta-User am 11 Juli 2021, 20:05:16
Zitat von: Otto123 am 11 Juli 2021, 19:53:08
Macht man sowas am Server? Was ist da der tiefere Grund?
Steht so im Wiki - ich meine, aus gutem Grund...



eocr in dieser Form dürfte das Event unterbinden => kein log...
Titel: Antw:Datenübernahme von MQTT2 nach Userreadings oder direkt nach Filelog
Beitrag von: Otto123 am 11 Juli 2021, 20:11:25
Zitat von: Beta-User am 11 Juli 2021, 20:05:16
Steht so im Wiki - ich meine, aus gutem Grund...
Aber eben doch speziell und nicht generell https://wiki.fhem.de/wiki/MQTT2_CLIENT - oder?

Soweit ich das einschätze: ist hier ein MQTT2 Standard Umgebung mit ein paar Tasmota Sensoren im Spiel, die cfg wird direkt editiert, das FileLog ist ein Buch mit 7 Siegeln und eocr ist unwissend irgendwie gesetzt.   :o
Aber mag ja sein ich sehe noch nicht sehr viel ...
Titel: Antw:Datenübernahme von MQTT2 nach Userreadings oder direkt nach Filelog
Beitrag von: TomLee am 11 Juli 2021, 20:14:54
Zitat von: Beta-User am 11 Juli 2021, 20:05:16
Steht so im Wiki - ich meine, aus gutem Grund...



Verlink doch gleich ein Beispiel warum, das letzte mal ist ja nicht so lange her, das man auch versteht warum.

https://forum.fhem.de/index.php/topic,121608.msg1162281.html#msg1162281 (https://forum.fhem.de/index.php/topic,121608.msg1162281.html#msg1162281)
Titel: Antw:Datenübernahme von MQTT2 nach Userreadings oder direkt nach Filelog
Beitrag von: Nobbynews am 11 Juli 2021, 20:26:03
Interessant am device HZS finde ich
- CFGFN      /opt/fhem/FHEM/MQTT_Sensoren.cfg
- DEF        MQTT2_FHEM_Server
-  IODev      MQTT2_FHEM_Server
- Attributes:
   IODev      MQTT2_HZ_Sensoren.  -> da nur Empfang hier unerheblich

Titel: Antw:Datenübernahme von MQTT2 nach Userreadings oder direkt nach Filelog
Beitrag von: SABINEMUELLER am 11 Juli 2021, 20:30:41
Hier das LOG-Device:

Internals:
   CFGFN      /opt/fhem/FHEM/MQTT_Sensoren.cfg
   DEF        ./log/HZS_Buero_DHT11_%Y_%m.log HZS_Buero_DHT11:Buero_DHT11_LOG:.*
   FD         46
   FUUID     
   NAME       FileLog_HZS
   NR         661
   NTFY_ORDER 50-FileLog_HZS
   REGEXP     HZS_Buero_DHT11:Buero_DHT11_LOG:.*
   STATE      active
   TYPE       FileLog
   currentlogfile ./log/HZS_Buero_DHT11_2021_07.log
   logfile    ./log/HZS_Buero_DHT11_%Y_%m.log
   READINGS:
     2021-07-11 18:04:44   linesInTheFile  7
Attributes:
   logtype    text
   room       MQTT->4_Log


Nochmal die aktuelle Konfigdatei:

define MQTT2_FHEM_Server MQTT2_SERVER 1883 global
setuuid MQTT2_FHEM_Server 60e1d481-f33f-5d57-9cbd-704548dfa57240dc
attr MQTT2_FHEM_Server ignoreRegexp cmnd/[^:"]+:
attr MQTT2_FHEM_Server room MQTT->1_Status


define HZS MQTT2_DEVICE MQTT2_FHEM_Server
attr HZS IODev MQTT2_HZ_Sensoren
attr HZS autocreate 0
attr HZS devStateStyle style="color:blue;;font-weight:bold"
attr HZS event-min-interval Buero_DHT11_LOG:60
attr HZS event-on-change-reading DHT11-02_Temperature,DHT11-02_Humidity,DHT11-02_DewPoint
attr HZS icon temperature_humidity
attr HZS readingList tele/DVES_EAD76F/LWT:.* LWT\
cmnd/DVES_EAD76F/POWER:.* Power\
tele/DVES_EAD76F/INFO.:.* { $EVENT =~ m,^..Info[1-3]..(.+).$, ?  json2nameValue($1,'',$JSONMAP) : json2nameValue($EVENT,'',$JSONMAP) }\
stat/DVES_EAD76F/RESULT:.* { json2nameValue($EVENT,'',$JSONMAP) }\
stat/DVES_EAD76F/POWER1:.* state\
tele/DVES_EAD76F/STATE:.* { json2nameValue($EVENT,'',$JSONMAP) }\
tele/DVES_EAD76F/SENSOR:.* { json2nameValue($EVENT,'',$JSONMAP) }\
tele/DVES_EAD76F/UPTIME:.* { json2nameValue($EVENT,'',$JSONMAP) }
attr HZS room MQTT->1_Status
attr HZS stateFormat {sprintf("Temperatur: %.1f °C   Feuchte: %.1f %%   Taupunkt: %.1f °C", ReadingsVal($name,"DHT11-02_Temperature",0), ReadingsVal($name,"DHT11-02_Humidity",0), ReadingsVal($name,"DHT11-02_DewPoint",0))}
attr HZS userReadings Buero_DHT11_LOG:DHT11-02_Temperature:.* {sprintf("Temperatur: %.1f °C   Feuchte: %.1f %%   Taupunkt: %.1f °C", ReadingsVal($name,"DHT11-02_Temperature",0), ReadingsVal($name,"DHT11-02_Humidity",0), ReadingsVal($name,"DHT11-02_DewPoint",0))}

define FileLog_HZS FileLog ./log/HZS_Buero_DHT11_%Y_%m.log HZS_Buero_DHT11:Buero_DHT11_LOG:.*
attr FileLog_HZS logtype text
attr FileLog_HZS room MQTT->4_Log


Bei dem readingList, wie oben schon geschrieben, weis ich nicht was was bedeutet und die WIKI ist da auch nicht aussagekräftig.
Ich habe im Internet schon versucht weitere Info zu bekonmmen. Leider aber nicht Verwertbares. Die Server Konfig habe ich großteils aus dem Wiki. Wie Beta-User schon bemerkt hat.
Wenn ich Bezeichnungen, Namengebungen ändern oder anpassen soll, einfach nur sagen was und wie. Das ist ein Testsystem, da ist noch alles möglich.
Ich bin mir auch nicht sicher ob der Weg über das userreading der richtige ist. Das war nur eine Idee von mir.
Wenn es eine bessere Möglichkeit gibt bin ich für Vorschläge offen.

Gruß
Sabine
Titel: Antw:Datenübernahme von MQTT2 nach Userreadings oder direkt nach Filelog
Beitrag von: Otto123 am 11 Juli 2021, 21:46:05
Zitat von: SABINEMUELLER am 11 Juli 2021, 20:30:41
Das ist ein Testsystem, da ist noch alles möglich.
Ich bin mir auch nicht sicher ob der Weg über das userreading der richtige ist. Das war nur eine Idee von mir.
Ich sehe hier nicht durch, zuviele verschiedene zu komplizierte Namen und Geräte. Vielleicht mag das ein Anderer aufdröseln.

Mein Empfehlung: Auf Anfang:
nicht per Hand editieren, cfg Strukturen sind für FHEM so nützlich wie ein Sack Reis.
Mit einem neuen unverbrauchten FHEM starten.
einfach einen MQTT2_SERVER definieren ohne weitere attribute
den Tasmota auf diesen Server verbinden
Per autocreate das MQTT2_DEVICE anlegen lassen - da ist das LogDevice dabei. 8)
Das userReadings anlegen, es wird von selbst mitgeloggt.
Dann einfach mit dem Wizard das Logging einschränken, das ist normalerweise intuitiv bedienbar.
Dann am Gerät weiter spielen bis der gewünschte Stand erreicht ist.
Die event Attribute versuchen zu verstehen.

Achso und wenn ich den Hinweis und Link von Beta-User und TomLee richtig verstehe: nicht ohne Not die topics in tasmota unwissend verbiegen.

Gruß Otto
Titel: Antw:Datenübernahme von MQTT2 nach Userreadings oder direkt nach Filelog
Beitrag von: Nobbynews am 12 Juli 2021, 06:02:25
Hier stimmt doch etwas ganz gewaltig nicht.
In den lists in Antwort #12 haben weder das device HZS noch MQTT2_FHEM_SERVER eine FUUID.
Das Log-Device in Antwort #18 hat ebenfalls keine FUUID, dafür aber der Server in der Config (Auszug von fhem.cfg) plötzlich ein setuuid.
Und dann ist die def von
Zitat von: SABINEMUELLER am 11 Juli 2021, 20:30:41

define HZS MQTT2_DEVICE MQTT2_FHEM_Server

imho alles andere als richtig. Vermutlich wird aber der Parameter "MQTT2_FHEM_SERVER" im define des device MQTT2_DEVICE nicht berücksichtigt oder geprüft. ?

Ich bin raus.

Norbert
Titel: Antw:Datenübernahme von MQTT2 nach Userreadings oder direkt nach Filelog
Beitrag von: Beta-User am 12 Juli 2021, 07:44:05
Zitat von: Otto123 am 11 Juli 2021, 21:46:05
Achso und wenn ich den Hinweis und Link [...] richtig verstehe: nicht ohne Not die topics in tasmota unwissend verbiegen.
@Otto:
Die Schlussfolgerung ist zwar an sich auch nicht falsch, aber zur Klarstellung: sowohl bei der Empfehlung zu der ignoreRegexp (die schon länger "indirekt" durch den Verweis auf M2C in den "Praxisbeispielen" steht) wie in dem verlinkten Thread ging es um was anderes:
- allgemein sollte man die Topics "ignorieren", die dazu da sind, Anweisungen an (andere) Clients wie FHEM (intern) zu senden (bei Tasmota eben "cmnd/..."). Sonst kann man nicht sauber zwischen Anweisung und Ergebnis unterscheiden (wenn die Anweisung von woanders her kommt wie FHEM).
- In dem verlinkten Thread hat der User versucht, die Anweisung trotzdem abzugreifen, um "indirekte Verknüpfungen" herzustellen - und das auch noch über den "eigenen" cmnd-Topic. MAn. mehrfach "unglücklich"...
(Hier OT: Für sowas sollte man dann versuchen, entweder an den anderen Client direkt zu publishen (dessen Reaktion sollte dann wieder in FHEM ankommen), oder eben einen "normalen Tastendruck-Event" zu generieren (=>anderer Topic), auf den man dann mit normalen FHEM-Mitteln reagiert.

Die Gesamtzusammenhänge scheinen aber auch über den von TomLee verlinkten Thread (Danke! Der paßt m.E. an sich schon!) nicht klarer zu werden, von daher _glaube ich_, es ist einfacher, die pauschale Empfehlung so unerklärt im Wiki stehen zu lassen, die cmnd-Topics zu ignorieren und bei Bedarf zu erläutern, warum das so ist - es gibt jetzt so langsam aber sicher hoffentlich genug User, die wissen, warum das da steht...

Zitat von: Otto123 am 11 Juli 2021, 21:46:05Ich sehe hier nicht durch, zuviele verschiedene zu komplizierte Namen und Geräte. Vielleicht mag das ein Anderer aufdröseln.
Was das angeht, schließe ich mich sowohl der Analyse wie der Schlussfolgerung an!
Wollte nur klarstellen, dass in dem ganzen Wirrwarr dieser eine "richtige" Punkt zu finden war, den man bitte nicht in Frage stellen sollte...
Titel: Antw:Datenübernahme von MQTT2 nach Userreadings oder direkt nach Filelog
Beitrag von: Otto123 am 12 Juli 2021, 10:04:46
Zitat von: Beta-User am 12 Juli 2021, 07:44:05
Wollte nur klarstellen, dass in dem ganzen Wirrwarr dieser eine "richtige" Punkt zu finden war, den man bitte nicht in Frage stellen sollte...
@Beta-User Hab ich verstanden und werde es im Kopf behalten.  8)