JSON -> Readings

Begonnen von dev0, 09 Februar 2017, 11:31:43

Vorheriges Thema - Nächstes Thema

Dlay

#75
Das macht doch keinen Sinn ?!?

In dem Reading ist die Uhrzeit enthalten. Die ändert sich ja ständig also ist  es doch nicht gut das mit reinzunehmen. Oder sehe ich da etwas falsch ?

Das SENSOR Reading ändert sich doch andauernd wegen der Zeit und erzeut somit auch Events.

dev0

Das siehst Du falsch, die Events werden benötigt.

Dlay

Ich habe jetzt ein .* bei eocr gesetzt und es ist nun viel ruhiger im Eventlog. Die Readings werden aber trotzdem aktualisiert.

Danke für den Tipp !

tobox

Ich habe mal eine Frage zu j2r: Meine Klimaanlage liefert mir sämtliche Daten als JSON per MQTT, z.B. folgendes:

{
  "power" : "ON",
  "mode" : "COOL",
  "temperature" : 25,
  "fan" : "QUIET",
  "vane" : "1",
  "wideVane" : ">>",
  "iSee" : false
}

Mit j2r kann ich die jetzt als einzelne Readings anzeigen lassen, aber gibt es auch eine Möglichkeit für die Schreibrichtung? D.h., wenn ich power auf OFF stelle, soll das passende JSON hingeschickt werden.

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Dlay

#80
Zitat von: tobox am 27 Juni 2017, 08:46:36
Ich habe mal eine Frage zu j2r: Meine Klimaanlage liefert mir sämtliche Daten als JSON per MQTT, z.B. folgendes:

{
  "power" : "ON",
  "mode" : "COOL",
  "temperature" : 25,
  "fan" : "QUIET",
  "vane" : "1",
  "wideVane" : ">>",
  "iSee" : false
}

Mit j2r kann ich die jetzt als einzelne Readings anzeigen lassen, aber gibt es auch eine Möglichkeit für die Schreibrichtung? D.h., wenn ich power auf OFF stelle, soll das passende JSON hingeschickt werden.

Hallo tobox,

also ich sende nach zwei Sekunden ein JSON per MQTT an mein Sonoff IR Modul. Das sollte für dich auch funktionieren.

{ system "mosquitto_pub -h 192\.168\.1\.1 -t /zuhause/schalter/mqtt_sonoff_2/cmnd/IRSend -m \'\{\"protocol\": \"NEC\",\"bits\": 32, \"data\": 1082099831\}\' "}

Musst du halt nur an deine Daten anpassen.

Ist aber eher ein MQTT Thema.

Bei mir schalte ich eine Lampe ein und sende via MQTT JSON den Befehl um die Farbeinstellung der Lampe via Infrarotmodul zu setzen:

Licht_Wohnzimmer:on {
fhem ("set mqtt_sonoff_2 on")};
{ fhem ("sleep 2")};
{ system "mosquitto_pub -h 192\.168\.1\.1 -t /zuhause/schalter/mqtt_sonoff_2/cmnd/IRSend -m \'\{\"protocol\": \"NEC\",\"bits\": 32, \"data\": 1082099831\}\' "}


Gruß
Dlay

Christian Uhlmann

Hallo zusammen,

@dev0: vielen Dank für deine Arbeit am Modul, nutze es schon eine Weile.

Jetzt bin ich dabei ein wenig zu optimieren und möchte gerne meine Readings auch für die MQTT Devices so haben, wie sie normalerweise in FHEM sind.
Also in meinem Beispiel power und energy für aktueller Verbrauch und Gesamtverbrauch, so kenne ich es von anderen Geräten.

Gibt es eine Möglichkeit, das Zielreading zu bestimmen? bei

Target reading:
.*power.*
(Power|Current|Voltage|.*day)

habe ich kurz gedacht, dass es darüber geht, aber ich denke wohl eher nicht.

Kenne mich mit regex nicht so gut aus, daher die Frage hier in die Runde ob mein vorhaben umsetzbar ist ohne über userReadings zu gehen?
Vielleicht habe ich diese Möglichkeit ja auch einfach nur "übersehen" (den Wald vor lauter Bäumen nicht sehen :) )


Danke und Grüße

Christian
Host: Debian Buster als VM / XCP-NG
Gateways: DuoFern Stick, CUL433 Revolt, CUL MAX, HMLan, HM-USB 2, LaCrosseGateway
Devices: 12x Rademacher Rollos, 6x TX 29 DT-HT, 10x HM-CC-RT-DN, 14x MAX Fensterkontakte, Diverse HM Aktoren für Licht, Klingel, Gong, Eingangstür, ESPEasy, Sonoff mit Tasmota

dev0

ZitatGibt es eine Möglichkeit, das Zielreading zu bestimmen?
Bin unsicher was Du genau meinst. Du kannst, mit dem letzen Argument im Define, bestimmen ob ein Reading angelegt wird. Die Namen der Readings sind durch den JSON String vorgegeben und nicht anpassbar. Wenn Du andere Readingnamen benötigst, dann kannst Du diese Readings zusätzlich anlegen (mit userReadings, notify, DOIF, ...).

mynameisfu

Gude
Ich bin glaube ich ein totaler Trottel oder ich verstehe es nicht so wirklich ich habe einen sonoff basic mit einem dht22, mqtt sendet mir lustig alles was ich auseinander nehmen möchte.

2017-08-13 23:16:59 MQTT_DEVICE Fernseher SENSOR: {"Time":"2017-08-13T22:16:59", "DHT22":{"Temperature":23.1, "Humidity":61.1}, "TempUnit":"C"}

das list von meinem ej3:

nternals:
   DEF        Fernseher.*:.*:.*
   NAME       ej3
   NOTIFYDEV  Fernseher.*
   NR         644
   NTFY_ORDER 50-ej3
   STATE      2017-08-13 23:11:59
   TYPE       expandJSON
   s_regexp   Fernseher.*:.*:.*
   t_regexp   .*
   version    1.11
   Readings:
     2017-08-13 23:05:33   state           active
   Helper:
Attributes:


und das list von meinem sonoff:

Internals:
   IODev      mqtt
   NAME       Fernseher
   NR         642
   STATE      OFF
   TYPE       MQTT_DEVICE
   qos        1
   retain     1
   Readings:
     2017-08-13 23:16:59   DHT22_Humidity  61.1
     2017-08-13 23:16:59   DHT22_Temperature 23.1
     2017-08-13 23:16:59   SENSOR          {"Time":"2017-08-13T22:16:59", "DHT22":{"Temperature":23.1, "Humidity":61.1}, "TempUnit":"C"}
     2017-08-13 23:16:59   TempUnit        C
     2017-08-13 23:16:59   Time            2017-08-13T22:16:59
     2017-08-13 22:59:20   presence        Online
     2017-08-13 22:42:12   state           OFF
     2017-08-13 23:16:59   transmission-state incoming publish received
   Message_ids:
   Publishsets:
     :
       topic      cmnd/Fernseher/POWER
       values:
         On
         Off
   Sets:
     Off
     On
   subscribe:
     tele/Fernseher/SENSOR
     tele/Fernseher/LWT
     stat/Fernseher/POWER
   subscribeExpr:
     ^tele\/Fernseher\/SENSOR$
     ^tele\/Fernseher\/LWT$
     ^stat\/Fernseher\/POWER$
   Subscribereadings:
     stat/Fernseher/POWER state
     tele/Fernseher/LWT presence
     tele/Fernseher/SENSOR SENSOR
Attributes:
   IODev      mqtt
   devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON Offline:rc_BLUE:OFF
   group      Schalter_Wonzimmer
   icon       on
   publishSet On Off cmnd/Fernseher/POWER
   qos        at-least-once
   retain     1
   room       01_Haus,1.1 Wohnzimmer,MQTT
   stateFormat {ReadingsVal($name,"presence","") eq "Offline" ? "Offline" : ReadingsVal($name,"state","")}
   subscribeReading_SENSOR tele/Fernseher/SENSOR
   subscribeReading_presence tele/Fernseher/LWT
   subscribeReading_state stat/Fernseher/POWER
   webCmd     On:Off


doch leider Splittet er mir das nicht in die einzelnen Kategorien?
Wo liegt mein Fehler?
Lg Fu

dev0

Zitat von: mynameisfu am 13 August 2017, 23:23:12

     2017-08-13 23:16:59   DHT22_Humidity  61.1
     2017-08-13 23:16:59   DHT22_Temperature 23.1
     2017-08-13 23:16:59   SENSOR          {"Time":"2017-08-13T22:16:59", "DHT22":{"Temperature":23.1, "Humidity":61.1}, "TempUnit":"C"}
     2017-08-13 23:16:59   TempUnit        C
     2017-08-13 23:16:59   Time            2017-08-13T22:16:59


Ist doch alles so wie es sein soll, oder?

Btw: zum Posten von Code bitte die Code Tags verwenden (# Button), sonst ist das nur schwer lesbar.

mynameisfu

Zitat von: dev0 am 14 August 2017, 07:25:53
Ist doch alles so wie es sein soll, oder?

Btw: zum Posten von Code bitte die Code Tags verwenden (# Button), sonst ist das nur schwer lesbar.
Guten Morgen nein leider nicht... Die Temperatur wird mir mit der Luftfeuchtigkeit zusammen angezeigt ich wollte es aber irgend wie trennen!
LG fu

Gesendet von meinem SM-G950F mit Tapatalk


dev0

Zitat

     2017-08-13 23:16:59   DHT22_Humidity  61.1
     2017-08-13 23:16:59   DHT22_Temperature 23.1

Zitat von: mynameisfu am 15 August 2017, 07:02:59
Die Temperatur wird mir mit der Luftfeuchtigkeit zusammen angezeigt ich wollte es aber irgend wie trennen!

Die Temperatur und die Luftfeuchtigkeut aus dem JSON String werden korrekt verarbeitet und in zwei getrennte Readings geschrieben. Ich weiss beim besten Willen nicht wo Dein Problem liegt.

Reinhart

der MQTT String wird vom deinem Broker kompakt im Json Format unter der Rubrik "SENSOR" empfangen.

2017-08-13 23:16:59   SENSOR          {"Time":"2017-08-13T22:16:59", "DHT22":{"Temperature":23.1, "Humidity":61.1}, "TempUnit":"C"}

Das Modul von dev0 zerlegt dann erst diesen String und schreibt sie als einzelne Readings in Fhem.

2017-08-13 23:16:59   DHT22_Humidity  61.1
2017-08-13 23:16:59   DHT22_Temperature 23.1


Wenn du diese Reading auswertest hast du doch das gewünschte Ergebnis.

LG
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

mynameisfu

oh man  :o ich bin ein blind fisch ;D danke ihr habt recht es steht ja genau oben drüber :DDD
danke nochmal für den hinweis.

SamNitro

Habe ein problem beim zerlegen der Daten meiner S20 Steckdosen alle anderen sonoff funktionieren (basic, pow)

expandJSON
defmod ej_sonoff expandJSON sonoff.*:.*:.{.*}
attr ej_sonoff room MQTT

setstate ej_sonoff 2017-09-16 20:38:02
setstate ej_sonoff 2017-09-16 20:21:16 state active


sonoff_pow funktioniert
defmod sonoff_pow MQTT_DEVICE
attr sonoff_pow IODev MQTT
attr sonoff_pow autoSubscribeReadings +/sonoff_pow/+
attr sonoff_pow event-on-change-reading .*
attr sonoff_pow eventMap ON:on OFF:off
attr sonoff_pow publishSet ON OFF cmnd/sonoff_pow/power
attr sonoff_pow room MQTT
attr sonoff_pow stateFormat state
attr sonoff_pow subscribeReading_ENERGY tele/sonoff_pow/ENERGY
attr sonoff_pow subscribeReading_LWT tele/sonoff_pow/LWT
attr sonoff_pow subscribeReading_POWER stat/sonoff_pow/POWER
attr sonoff_pow subscribeReading_RESULT stat/sonoff_pow/RESULT
attr sonoff_pow subscribeReading_STATE tele/sonoff_pow/STATE
attr sonoff_pow subscribeReading_UPTIME tele/sonoff_pow/UPTIME
attr sonoff_pow subscribeReading_power cmnd/sonoff_pow/power
attr sonoff_pow webCmd ON:OFF

setstate sonoff_pow on
setstate sonoff_pow 2017-09-16 20:39:02 Current 0.14
setstate sonoff_pow 2017-09-16 20:39:02 ENERGY {"Time":"2017-09-16T19:39:01", "Total":10.298, "Yesterday":0.846, "Today":0.707, "Period":0, "Power":0, "Factor":0.00, "Voltage":230, "Current":0.140}
setstate sonoff_pow 2017-09-16 20:39:02 Factor 0
setstate sonoff_pow 2017-09-16 20:39:02 POWER on
setstate sonoff_pow 2017-09-16 20:39:02 Period 0
setstate sonoff_pow 2017-09-16 20:39:02 Power 0
setstate sonoff_pow 2017-09-16 20:22:06 RESULT {"POWER":"ON"}
setstate sonoff_pow 2017-09-16 20:39:02 STATE {"Time":"2017-09-16T19:39:01", "Uptime":511, "Vcc":3.182, "POWER":"ON", "Wifi":{"AP":2, "SSID":"Garage", "RSSI":68, "APMac":"xx:xx:xx:xx:xx:xx"}}
setstate sonoff_pow 2017-09-16 20:39:02 Time 2017-09-16T19:39:01
setstate sonoff_pow 2017-09-16 20:39:02 Today 0.707
setstate sonoff_pow 2017-09-16 20:39:02 Total 10.298
setstate sonoff_pow 2017-09-16 20:39:02 Uptime 511
setstate sonoff_pow 2017-09-16 20:39:02 Vcc 3.182
setstate sonoff_pow 2017-09-16 20:39:02 Voltage 230
setstate sonoff_pow 2017-09-16 20:39:02 Wifi_AP 2
setstate sonoff_pow 2017-09-16 20:39:02 Wifi_APMac xx:xx:xx:xx:xx:xx
setstate sonoff_pow 2017-09-16 20:39:02 Wifi_RSSI 68
setstate sonoff_pow 2017-09-16 20:39:02 Wifi_SSID Garage
setstate sonoff_pow 2017-09-16 20:39:02 Yesterday 0.846
setstate sonoff_pow 2017-09-16 20:22:06 power ON
setstate sonoff_pow 2017-09-16 20:22:06 state ON
setstate sonoff_pow 2017-09-16 20:39:02 transmission-state incoming publish received


sonoff_s20 funktioniert nicht
defmod sonoff_s20 MQTT_DEVICE
attr sonoff_s20 IODev MQTT
attr sonoff_s20 autoSubscribeReadings +/sonoff_s20/+
attr sonoff_s20 event-on-change-reading state.*,Set.*
attr sonoff_s20 eventMap ON:on OFF:off
attr sonoff_s20 publishSet ON OFF cmnd/sonoff_s20/power
attr sonoff_s20 room Küche,MQTT
attr sonoff_s20 stateFormat state
attr sonoff_s20 subscribeReading_INFO1 tele/sonoff_s20/INFO1
attr sonoff_s20 subscribeReading_INFO2 tele/sonoff_s20/INFO2
attr sonoff_s20 subscribeReading_INFO3 tele/sonoff_s20/INFO3
attr sonoff_s20 subscribeReading_LWT tele/sonoff_s20/LWT
attr sonoff_s20 subscribeReading_POWER cmnd/sonoff_s20/POWER
attr sonoff_s20 subscribeReading_RESULT stat/sonoff_s20/RESULT
attr sonoff_s20 subscribeReading_STATE tele/sonoff_s20/STATE
attr sonoff_s20 subscribeReading_power cmnd/sonoff_s20/power
attr sonoff_s20 webCmd ON:OFF

setstate sonoff_s20 state
setstate sonoff_s20 2017-09-16 20:35:57 INFO1 {"Module":"S20 Socket", "Version":"5.7.1i", "FallbackTopic":"DVES_CCD0A7", "GroupTopic":"sonoffs"}
setstate sonoff_s20 2017-09-16 20:35:57 INFO2 {"WebServerMode":"Admin", "Hostname":"sonoff_s20-4263", "IPAddress":"192.168.1.27"}
setstate sonoff_s20 2017-09-16 20:35:57 INFO3 {"RestartReason":"Software/System restart"}
setstate sonoff_s20 2017-09-16 20:35:56 LWT Online
setstate sonoff_s20 2017-09-16 20:35:58 POWER OFF
setstate sonoff_s20 2017-09-16 20:35:58 RESULT {"POWER":"OFF"}
setstate sonoff_s20 2017-09-16 20:41:05 STATE {"Time":"2017-09-16T19:41:05", "Uptime":0, "Vcc":3.595, "POWER":"OFF", "Wifi":{"AP":1, "SSId":"PC", "RSSI":98, "APMac":"xx:xx:xx:xx:xx:xx"}}
setstate sonoff_s20 2017-09-16 20:41:05 transmission-state incoming publish received

(Intel-Nuc Proxmox) (Homematic) (EnOcean) (CUL868) (CUL433) (Zigbee2MQTT) (ESP8266) (Echo) (DUOFERN)