JSON -> Readings

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

Vorheriges Thema - Nächstes Thema

Reinhart

ok, ich habe jetzt einen Downgrade auf die 1.10 durchgeführt und die funktioniert ebenfalls, auch das Logging.

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

dirkcx

hier das "list" des relevanten mqtt device
Das Reading ENERGY wird aktuell befüllt, siehe Uhrzeit ;-)


Internals:
   CFGFN      ./conf/fhem_sonoff.cfg
   CHANGED
   IODev      mqtt
   NAME       sonoff3884
   NR         213
   STATE      [ON] aktuell: 0 W, heute: 0.752 Kw/h
   TYPE       MQTT_DEVICE
   qos        0
   retain     0
   Readings:
     2017-03-22 08:06:01   Current         0
     2017-03-24 03:06:52   Energy          {"Time":"2017-03-24T03:06:52", "Yesterday":2.943, "Today":0.131, "Period":118, "Power":1424, "Factor":1.00, "Voltage":222, "Current":6.046}
     2017-03-22 08:06:01   Factor          0
     2017-03-23 20:06:10   Light           ON
     2017-03-22 08:06:01   Period          0
     2017-03-22 08:06:01   Power           0
     2017-03-22 08:06:01   Time            2017-03-22T08:06:01
     2017-03-22 08:06:01   Today           0.752
     2017-03-22 08:06:01   Voltage         221
     2017-03-22 08:06:01   Yesterday       6.383
     2017-03-23 20:06:10   state           ON
     2017-03-24 03:06:52   transmission-state incoming publish received
   Message_ids:
   Publishsets:
     :
       topic      cmnd/sonoff3884/LIGHT
       values:
         ON
         OFF
   Sets:
     OFF
     ON
   subscribe:
     tele/sonoff3884/ENERGY
     stat/sonoff3884/LIGHT
     cmnd/sonoff3884/LIGHT
   subscribeExpr:
     ^tele\/sonoff3884\/ENERGY$
     ^stat\/sonoff3884\/LIGHT$
     ^cmnd\/sonoff3884\/LIGHT$
   Subscribereadings:
     cmnd/sonoff3884/LIGHT state
     stat/sonoff3884/LIGHT Light
     tele/sonoff3884/ENERGY Energy
Attributes:
   IODev      mqtt
   event-on-change-reading Yesterday,Today,Power,Current,Voltage,Light
   publishSet ON OFF cmnd/sonoff3884/LIGHT
   room       Warmwasser
   stateFormat [state] aktuell: Power W, heute: Today Kw/h
   subscribeReading_Energy tele/sonoff3884/ENERGY
   subscribeReading_Light stat/sonoff3884/LIGHT
   subscribeReading_state cmnd/sonoff3884/LIGHT
   verbose    1
   webCmd     ON:OFF
Server: Gigabyte GB-BACE3160 | Ubuntu 20.04 LTS Server | aktuelles FHEM | CULUSB (busware) FS20/FHT/... | MySensors: seriell / esp8266 | ZigBee (Zigbee CC2531 / zigbee2mqtt) | homebridge / homebridge-config-ui

dev0

Laut Deiner lists heißt das Reading Energy aber die Regex verwendet ENERGY. Gibt mal folgendes per copy/past in die FHEM command line ein (wenn das expandJSON Modul noch ej3 heißt):

defmod ej3 expandJSON sonoff.*:.*:.*


Wenn Du bei verbose 5 nichts im Log siehst, dann heißt das, das die regexp nicht matched.
Falls Du das Modul aktualisiert hast und noch keinen Neustart von FHEM gemacht hast, dann kann es auch nicht schaden FHEM einmal neu zu starten.

dirkcx

#63
leider bringt keine der Maßnahmen eine Lösung :-(
Restart usw. hatte ich schon mehrfach gemacht

Bis auf Weiteres nutze ich jetzt ein notify das eine Funktion aufruft:

sub sonoffReadings($) {
my ($NAME) = @_;   
my $json = ReadingsVal($NAME, "Energy", "{}");
my $decoded_json = decode_json( $json );
fhem("setreading $NAME Time $decoded_json->{'Time'}");
fhem("setreading $NAME Yesterday $decoded_json->{'Yesterday'}");
fhem("setreading $NAME Today $decoded_json->{'Today'}");
fhem("setreading $NAME Power $decoded_json->{'Power'}");
fhem("setreading $NAME Period $decoded_json->{'Period'}");
fhem("setreading $NAME Factor $decoded_json->{'Factor'}");
fhem("setreading $NAME Voltage $decoded_json->{'Voltage'}");
fhem("setreading $NAME Current $decoded_json->{'Current'}");
}


und das notify:

sonoff3884:.* {
sonoffReadings("sonoff3884");; 
}


Aber das ist nicht die schönste Lösung. Ich hoffe, dass ich den Fehler noch finde. Bislang schmeißt das 98_expandJSON.pm einfach keine Logfiles. Ich denke, dass das nicht richtig aktiviert ist.
Server: Gigabyte GB-BACE3160 | Ubuntu 20.04 LTS Server | aktuelles FHEM | CULUSB (busware) FS20/FHT/... | MySensors: seriell / esp8266 | ZigBee (Zigbee CC2531 / zigbee2mqtt) | homebridge / homebridge-config-ui

dev0

Ist Dein FHEM auf dem aktuellen Stand? Was zeigt der Befehl:
version fhem.pl

dirkcx

Ich habe die Version ist 5.8, schon eine Weile.
Ich habe zwischenzeitlich neu gebootet und weitere Dinge versucht. Hat alles nichts gebracht.
Außerdem habe ich das Modul mit Log3-Ausgaben an allen möglichen Stellen bestückt, aber das Modul wurde einfach nicht erkannt. Nicht einmal beim Initialisieren wurden Logs geschmissen.

Mittlerweile klappt es, letztendlich nachdem ich alle Readings gelöscht habe mit
deletereading sonoff3884 Voltage
deletereading sonoff3884 Current
usw.
Danach hat es auf wundersame Weise wieder geklappt. Bis jetzt läuft es stabil.
Ob es nur am Löschen der readings lag oder an allem, keine Ahnung.
Server: Gigabyte GB-BACE3160 | Ubuntu 20.04 LTS Server | aktuelles FHEM | CULUSB (busware) FS20/FHT/... | MySensors: seriell / esp8266 | ZigBee (Zigbee CC2531 / zigbee2mqtt) | homebridge / homebridge-config-ui

dev0

Zitat von: dirkcx am 25 März 2017, 12:05:22
Ob es nur am Löschen der readings lag oder an allem, keine Ahnung.

Das Löschen der Readings kann damit nichts zu tun haben, der Ursache warum es nicht funktionierte muss eine andere Ursache haben...
Egal, jetzt tut es ja ;)

dirkcx

#67
... und gerade bemerke ich, dass seit heute nachmittag wieder keine Daten ankommen :-(
Ich war nicht mal in der Nähe ...

Update: Fehler gefunden!
Wenn ich 'event-on-change-reading' aktiviere mit einzelnen Readings, dann "empfängt" das Device nichts mehr. Lösche ich 'event-on-change-reading', funktioniert es wieder.
Allerdings nutze ich 'event-on-change-reading' gerne, damit die Logfiles kleiner bleiben.
Was kann ich denn da machen?
Server: Gigabyte GB-BACE3160 | Ubuntu 20.04 LTS Server | aktuelles FHEM | CULUSB (busware) FS20/FHT/... | MySensors: seriell / esp8266 | ZigBee (Zigbee CC2531 / zigbee2mqtt) | homebridge / homebridge-config-ui

dev0

Zitat von: dirkcx am 24 März 2017, 03:12:18

Attributes:
   event-on-change-reading Yesterday,Today,Power,Current,Voltage,Light

Zumidest in deinem list fehlt das Reading Energy in dem event-on-change-reading Attribut. So werden niemals Events für Energy erzeugt und somit auch keine Notifies etc. getriggert.

dirkcx

das war nur ein Beispiel, Energy war drin, aber es funktioniert trotzdem nicht
Server: Gigabyte GB-BACE3160 | Ubuntu 20.04 LTS Server | aktuelles FHEM | CULUSB (busware) FS20/FHT/... | MySensors: seriell / esp8266 | ZigBee (Zigbee CC2531 / zigbee2mqtt) | homebridge / homebridge-config-ui

dev0

Kann ich leider nicht reproduzieren:


define dummy dummy
attr dummy event-on-change-reading .*
define ej expandJSON dummy:json:.*
setreading dummy json {"Time":"2017-03-24T03:06:52", "Yesterday":2.943, "Today":0.131, "Period":118, "Power":1424, "Factor":1.00, "Voltage":222, "Current":6.017}

list dummy

Internals:
   CFGFN     
   NAME       dummy
   NR         241
   STATE      ???
   TYPE       dummy
   Readings:
     2017-03-26 12:00:11   Current         6.017
     2017-03-26 12:00:11   Factor          1
     2017-03-26 12:00:11   Period          118
     2017-03-26 12:00:11   Power           1424
     2017-03-26 12:00:11   Time            2017-03-24T03:06:52
     2017-03-26 12:00:11   Today           0.131
     2017-03-26 12:00:11   Voltage         222
     2017-03-26 12:00:11   Yesterday       2.943
     2017-03-26 12:00:11   json            {"Time":"2017-03-24T03:06:52", "Yesterday":2.943, "Today":0.131, "Period":118, "Power":1424, "Factor":1.00, "Voltage":222, "Current":6.017}
Attributes:
   event-on-change-reading .*


Für weitere Tests solltest Du Deine FHEM Installation auf den aktuellen Stand bringen, ob der Stand 5.8 ausreicht weiss ich nicht.

Dlay

#71
Hallo,

ich habe das gleiche Problem.

Sobald ich ein event-on-change-reading auf mein Sonoff Device setze welches mit Tasmota und JSON läuft bekomme ich keine Daten mehr.
Es scheint mir so als wenn die von ej erstellten Readings keine "echten" Readings sind.

Sobald ich das e-o-c-r wieder entferne läuft alles wunderbar.

Gruß

dev0

Zeig ein list vom expandJSON Device und vom betroffenen Device, wenn eocr gesetzt ist.

Dlay

Sehr gern..

DEF        mqtt_sonoffsc
   IODev      MQTTBroker
   NAME       mqtt_sonoffsc
   NOTIFYDEV  mqtt_sonoffsc
   NR         76
   STATE      incoming publish received
   TYPE       MQTT_DEVICE
   qos        0
   retain     0
   Readings:
     2017-06-18 22:27:17   AirQuality      90
     2017-06-18 22:27:17   Humidity        19
     2017-06-18 22:27:17   Light           10
     2017-06-18 22:27:17   Noise           20
     2017-06-18 22:27:17   Sensor          {"Time":"2017-06-18T22:27:17", "Temperature":24.0, "Humidity":19.0, "Light":10, "Noise":20, "AirQuality":90, "TempUnit":"C"}
     2017-06-18 22:27:17   TempUnit        C
     2017-06-18 22:27:17   Temperature     24
     2017-06-18 22:27:17   Time            2017-06-18T22:27:17
     2017-06-18 22:27:17   transmission-state incoming publish received
   Message_ids:
   Sets:
   subscribe:
     /zuhause/mqtt_sonoffsc/SENSOR
   subscribeExpr:
     ^\/zuhause\/mqtt_sonoffsc\/SENSOR$
   Subscribereadings:
     /zuhause/mqtt_sonoffsc/SENSOR Sensor
Attributes:
   IODev      MQTTBroker
   event-on-change-reading AirQuality,Humidity,Light,Noise,Temperature
   stateFormat transmission-state
   subscribeReading_Sensor /zuhause/mqtt_sonoffsc/SENSOR


Internals:
   DEF        mqtt_.*:.*:.{.*}
   NAME       ej3
   NOTIFYDEV  mqtt_.*
   NR         103
   NTFY_ORDER 50-ej3
   STATE      2017-06-18 22:28:22
   TYPE       expandJSON
   s_regexp   mqtt_.*:.*:.{.*}
   t_regexp   .*
   version    1.10
   Readings:
     2017-06-18 22:10:35   state           active
   Helper:
Attributes:

dev0

Das Reading Sensor fehlt im eocr Attribut.