FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: aficianado am 12 Dezember 2019, 10:08:07

Titel: mqtt subscribeReading_Sensor
Beitrag von: aficianado am 12 Dezember 2019, 10:08:07
Hallo Miteinander,
sitze schon seit Tagen und komme nicht weiter:

Tasmota SP111, Mosquitto läuft, ich kann mit FHEM 5.5 den Schalter KG_Licht bedienen und eine Änderung des Schaltzustandes am Tasmota per tcp wird auch in FHEM dargestellt.

define Mosquitto MQTT 127.0.0.1:1883
define KG_Licht MQTT_DEVICE
attr KG_Licht IODev Mosquitto
attr KG_Licht devStateIcon ON:switch_on_k:OFF OFF:switch_off_k:ON
attr KG_Licht publishSet ON OFF cmnd/S25/KG/SP111/Licht/POWER
attr KG_Licht room MQTT
attr KG_Licht stateFormat state
attr KG_Licht subscribeReading_Sensor tele/S25/KG/SP111/Licht/SENSOR
attr KG_Licht subscribeReading_state stat/S25/KG/SP111/Licht/POWER

define KG_Licht_power dummy
define KG_Licht_power_act notify KG_Licht {\
  my $st= Value("KG_Licht:Sensor");;\
  fhem ("set KG_Licht_power $st");;\
}

attr KG_Licht_power room MQTT



Jetzt versuche ich das KG_Licht:Sensor auszugeben, welches auch unter KG_Licht zu sehen ist:


Readings
Licht

ON

2019-12-11 19:09:27
Sensor

{"Time":"2019-12-12T09:54:21","ENERGY":{"TotalStartTime":"2019-12-10T19:20:05","Total":0.280,"Yesterday":0.252,"Today":0.026,"Period":5,"Power":59,"ApparentPower":62,"ReactivePower":19,"Factor":0.95,"Voltage":231,"Current":0.267}}

2019-12-12 09:54:22
Status

1

2019-12-11 16:34:56
state

ON

2019-12-12 09:35:02
transmission-state

incoming publish received


Aber das klappt so nicht, KG_Licht:Sensor liefert nicht die Daten aus dem Reading Sensor.

Gibt es denn eine Möglichkeit an den Sensor String zu kommen? Ich würde gerne den String aufbrechen mit split und die Power auslesen.

Meine Versuche mit Json haben alle nicht geklappt.

Bin für jeden Hinweis dankbar!

Titel: Antw:mqtt subscribeReading_Sensor
Beitrag von: OdfFhem am 12 Dezember 2019, 10:45:57
Für diese Aufgabenstellung könnte man expandJSON einsetzen ...
Titel: Antw:mqtt subscribeReading_Sensor
Beitrag von: Waldmensch am 12 Dezember 2019, 11:39:32
leg mal ein expandJSON Device an:

defmod ejSENSOR expandJSON KG_Licht:Sensor:.\{.*\}
Titel: Antw:mqtt subscribeReading_Sensor
Beitrag von: aficianado am 12 Dezember 2019, 11:53:58
wenn ich das device anlege bekomme ich:

Unknown command defmod, try help. Please define ejSENSOR first

wenn ich es mit define probiere
define ejSENSOR expandJSON KG_Licht:Sensor:.\{.*\}


kommt
Unknown module expandJSON Please define ejSENSOR first

wenn ich diesen Weg gehen wollte, müsste ich vermutlich das FHEM updaten. Aber funktioniert dann noch meine 99_Utils.pm? Da ist eine Telnet-Anbindung für existierende Sensoren dran.

Gibt es noch eine ander Möglichkeit? An sich läuft es ja unter FHEM 5.5, ich müsste nur irgendwie an diesen String rankommen.

Vielen Dank im Voraus!
Titel: Antw:mqtt subscribeReading_Sensor
Beitrag von: Waldmensch am 12 Dezember 2019, 12:26:08
Eigene Änderungen macht man deshalb in einer eigenen 99_myUtils, die wird bei einem Update nicht überschrieben.

Ansonsten wüsste ich nicht, warum das JSON Objekt nicht im Reading ,,Sensor" vorhanden wäre.


Gesendet von iPhone mit Tapatalk
Titel: Antw:mqtt subscribeReading_Sensor
Beitrag von: Beta-User am 12 Dezember 2019, 12:46:50
Na ja, seit 5.5 hat sich einiges geändert. Kommt halt drauf an, wie das Coding in der myUtils ist...

Was spricht dagegen, dem Pi3 (lt. Signatur) eine SD-Karte mit aktuellem FHEM zu spendieren und es auszuprobieren?

Was JSON angeht, würde ich dann aber gleich empfehlen, mal einen Blick auf die MQTT2_.*-Module zu werfen. JSON auspacken ist damit (genauer: mit json2nameValue()) viel einfacher (auch was die Benennung der Readings und das Rausfiltern von Unnötigem angeht usw.).
Titel: Antw:mqtt subscribeReading_Sensor
Beitrag von: aficianado am 12 Dezember 2019, 15:19:31
danke, mit 5.9 schaut das reading nun so aus

Readings
ENERGY_ApparentPower

61

2019-12-12 15:16:59
ENERGY_Current

0.263

2019-12-12 15:16:59
ENERGY_Factor

0.96

2019-12-12 15:16:59
ENERGY_Period

5

2019-12-12 15:16:59
ENERGY_Power

58

2019-12-12 15:16:59
ENERGY_ReactivePower

18

2019-12-12 15:16:59
ENERGY_Today

0.021

2019-12-12 15:16:59
ENERGY_Total

0.274

2019-12-12 15:16:59
ENERGY_TotalStartTime

2019-12-10T19:20:05

2019-12-12 15:16:59
ENERGY_Voltage

232

2019-12-12 15:16:59
ENERGY_Yesterday

0.252

2019-12-12 15:16:59
Sensor

{"Time":"2019-12-12T15:16:58","ENERGY":{"TotalStartTime":"2019-12-10T19:20:05","Total":0.274,"Yesterday":0.252,"Today":0.021,"Period":5,"Power":58,"ApparentPower":61,"ReactivePower":18,"Factor":0.96,"Voltage":232,"Current":0.263}}

2019-12-12 15:16:59
Time

2019-12-12T15:16:58

2019-12-12 15:16:59
state

ON

2019-12-12 15:02:23
transmission-state

incoming publish received

2019-12-12 15:16:59


aber wie bekomme ich nun z.B. ENERGY_Voltage auf der Konsole angezeigt, bzw. eine dummy zugeordnet den ich dann ausgeben kann?

Besten Dank im Vorraus !!
Titel: Antw:mqtt subscribeReading_Sensor
Beitrag von: Beta-User am 12 Dezember 2019, 15:27:52
Abfrage ist ReadingsVal(), zur Anzeige als eigenes Device in FHEMWEB: ReadingsProxy?

Gibt aber viele Möglichkeiten, z.B. wurde stateFormat+devStateIcon ziemlich aufgebohrt und kann auch Text/Symbole aus mehreren Readings anzeigen...

Vielleicht steigst du nach der Zeit einfach mal wieder in die Einsteigerliteratur ein? (Ich empfehle auch gerne den "Rahmen" der commandref: https://fhem.de/commandref_modular_DE.html (https://fhem.de/commandref_modular_DE.html)).

Als Einstieg in die Frontend-Gestaltung mit FHEMWEB evtl. https://wiki.fhem.de/wiki/DeviceOverview_anpassen? (https://wiki.fhem.de/wiki/DeviceOverview_anpassen?)

Vielleicht erklärst du etwas besser, nach was du eigentlich suchst bzw. was der Plan ist...

Ansonsten: Schön, dass das update scheinbar so reibungslos geklappt hat.
Titel: Antw:mqtt subscribeReading_Sensor
Beitrag von: sledge am 12 Dezember 2019, 15:32:26
Aus der Hüfte geschossen attr ejSENSOR stateFormat ENERGY_Voltage

Oder meinst Du was ganz anderes?
Titel: Antw:mqtt subscribeReading_Sensor
Beitrag von: aficianado am 12 Dezember 2019, 16:09:40
Danke, der:
attr ejSENSOR stateFormat ENERGY_Voltage
gibt Fehlermeldung
ejSENSOR: unknown attribute stateFormat

Also ich will die ENERGY_Voltage auf im room MQTT als Zahlenwert darstellen.
Einen dummy kann ich im Room MQTT darstellen. Also war meine Überlegung, den Inhalt des ENERGY_Voltage in ein dummy zu schreiben.
Den funktionierenden Schalter zum Schalten der Tasmota Steckdose habe ich bereits, das ging mit Hilfe der FHEM-postings ganz gut. Aber die Ausgabe des Readings, da komme ich nicht weiter.

Besten Dank im Vorraus!

besten Dank für Eure Zeit und Unterstützung.
Titel: Antw:mqtt subscribeReading_Sensor
Beitrag von: Beta-User am 12 Dezember 2019, 16:20:25
Nochmal: Entweder ReadingsProxy als separates Device (nicht Dummy) oder einfach stateFormat in der neuen Fassung verwenden (am MQTT_DEVICE). Damit bekommt man neben dem klickbaren on/off-Schalter auch noch den (formatierten) Zahlenwert dargestellt...

Weitere Alternative: readingsGroup.
Titel: Antw:mqtt subscribeReading_Sensor
Beitrag von: aficianado am 12 Dezember 2019, 16:36:43
Danke, ja, das mit dem stateFormat dirkt am device würde mir sehr gut gefallen.
momentan schaut das bei mir so aus:
attr KG_Licht stateFormat state
und die reeadings
Readings
ENERGY_ApparentPower

61

2019-12-12 16:31:59
ENERGY_Current

0.266

2019-12-12 16:31:59
ENERGY_Factor

0.94

2019-12-12 16:31:59
ENERGY_Period

5

2019-12-12 16:31:59
ENERGY_Power

57

2019-12-12 16:31:59
ENERGY_ReactivePower

21

2019-12-12 16:31:59
ENERGY_Today

0.094

2019-12-12 16:31:59
ENERGY_Total

0.347

2019-12-12 16:31:59
ENERGY_TotalStartTime

2019-12-10T19:20:05

2019-12-12 16:31:59
ENERGY_Voltage

231

2019-12-12 16:31:59
ENERGY_Yesterday

0.252

2019-12-12 16:31:59
Sensor

{"Time":"2019-12-12T16:32:00","ENERGY":{"TotalStartTime":"2019-12-10T19:20:05","Total":0.347,"Yesterday":0.252,"Today":0.094,"Period":5,"Power":57,"ApparentPower":61,"ReactivePower":21,"Factor":0.94,"Voltage":231,"Current":0.266}}

2019-12-12 16:31:59
Time

2019-12-12T16:32:00

2019-12-12 16:31:59
state

ON

2019-12-12 15:02:23
transmission-state

incoming publish received

2019-12-12 16:31:59




bitte, wie müsste ich das erweitern? Ich habe schon vorher damit einiges probiert, leider ohne Erfolg.

esten Dank im Voraus!
Titel: Antw:mqtt subscribeReading_Sensor
Beitrag von: Beta-User am 12 Dezember 2019, 16:47:12
Versuch's mal mit einem Zeilenumbruch ;) :
attr KG_Licht stateFormat state\
ENERGY_Voltage V

(Für die Bearbeitung im Attribut via FHEMWEB bzw. zum RAW-Import! Bitte cfg-Editieren einstellen, falls du das aus früheren Zeiten noch gewohnt sein solltest...)
Titel: Antw:mqtt subscribeReading_Sensor
Beitrag von: aficianado am 12 Dezember 2019, 17:26:20
super Danke, das funktioniert prima.

Eine letzte Frage:
Ein Schaltwechsel der Steckdose wird über das state sofort erkannt, aber die ENERGY_Voltage kommt asynchron alle 5min, da würde ich gerne über ein notify die Steckdose abfragen nach den Sensorwerten:
define act_KG_Licht KG_Licht:state {\
  my $pl= GetFileFromURL("http://192.168.1.177/cs?status8",1,,,0);;\
}

das ergibt aber die Fehlermeldung:
Unknown module KG_Licht:state

ist das irgendwie lösbar?

Danke im Voraus !

Titel: Antw:mqtt subscribeReading_Sensor
Beitrag von: Beta-User am 12 Dezember 2019, 17:35:01
Mindestens zwei Fehler: da fehlt die Angabe, dass es ein notify sein soll, zum anderen ist "state" speziell (braucht ein Attribut) und zu guter Letzt gehe ich davon aus, dass du state nur indirekt setzt (via userReading), was vermutlich auch noch weitere Schwierigkeiten verursacht.

Und dann finde ich es noch suboptimal, dasselbe über mehrere Wege zu machen; bin nicht der Tasmota-Spezialist, aber vermutlich kann man via MQTT auch versuchen, das Teil zu einer Aktualisierung aufzufordern... (müßte als publish-Befehl über das IO gehen).

ABER: Ich komme nochmal zurück auf das bereits geschriebene: Da fehlen mMn. viele Grundlagen, und es macht wenig Sinn, das hier 1:1 zu besprechen; bitte vorab mal aktuelle Grundlagendoku wälzen...
Titel: [gelöst] mqtt subscribeReading_Sensor
Beitrag von: aficianado am 12 Dezember 2019, 17:46:09
Vielen Dank für die Hilfe.

Und an den fehlenden Grundlagen werde ich arbeiten :-))
Titel: Antw:mqtt subscribeReading_Sensor
Beitrag von: Waldmensch am 12 Dezember 2019, 18:30:12
Warum nutzt Du nicht einfach das command ,,teleperiod" auf dem Tasmota Device. Damit kannst Du einstellen, wie oft Du den Wert haben willst.


Gesendet von iPhone mit Tapatalk
Titel: [gelöst] Antw:mqtt subscribeReading_Sensor
Beitrag von: aficianado am 12 Dezember 2019, 19:01:53
stimmt, das habe ich inzwischen auch so gemacht und auf 10 gesetzt  :-))

Super und Danke an Alle !!