Autor Thema: JSON -> Readings  (Gelesen 4723 mal)

Offline dev0

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2551
    • _.:|:._
Antw:JSON -> Readings
« Antwort #30 am: 23 Februar 2017, 09:17:07 »
Da dies indirekt mit Json zu tun hat, möchte ich dich fragen ob sich da eventuell irgendwas in die Quere kommt?

Unwahrscheinlich. Sieht für mich nach einer nicht berücksichtigen Fehlersituation im netatmo Modul aus, wenn "internal_error" zurückgeliefert wird. Frag mal den netatmo Autor.

Offline Reinhart

  • Sr. Member
  • ****
  • Beiträge: 949
Antw:JSON -> Readings
« Antwort #31 am: 23 Februar 2017, 10:53:14 »
OK, Danke!

Dann sehe ich es spätestens morgen ob es das Netatmo Modul ist.
Es ist immer unsicher, wenn man mehrere Änderungen an FHEM gleichzeitig macht und das waren in diesem Fall doch sehr viele.

LG
Reinhart
FHEM auf Raspberry mit FS20, Homematic, ESP8266, Sonoff, eBus, RPi mit COC,NanoCUL, HM-CFG-LAN Adapter, MQTT, ESPEasy Bridge, Alexa + Custom Skills

Offline dev0

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2551
    • _.:|:._
Antw:JSON -> Readings
« Antwort #32 am: 23 Februar 2017, 11:34:20 »
Zitat
Can't use string ("internal_error") as a HASH ref while "strict refs" in use at ./FHEM/38_netatmo.pm line 2027.
Ist in diesem Fall aber recht eindeutig.

Offline Reinhart

  • Sr. Member
  • ****
  • Beiträge: 949
Antw:JSON -> Readings
« Antwort #33 am: 23 Februar 2017, 12:44:52 »
Ja, habe es Markus schon gemeldet und er hat eine neue Version gepostet. Ich teste bereits ob es stabil läuft, hat dann sicher nichts mit deinem JSON Reader zu tun.

LG
FHEM auf Raspberry mit FS20, Homematic, ESP8266, Sonoff, eBus, RPi mit COC,NanoCUL, HM-CFG-LAN Adapter, MQTT, ESPEasy Bridge, Alexa + Custom Skills

Offline jdear75

  • Newbie
  • Beiträge: 2
Antw:JSON -> Readings
« Antwort #34 am: 03 März 2017, 20:19:29 »
Hallo,

erstmal vielen Dank für die tolle Arbeit.
Ich kann leider das Modul "98_expandJSON.pm" nicht in Fhem laden.

Unrecognized character \xC2; marked by <-- HERE after at master <-- HERE near column 48 at ./FHEM/98_expandJSON.pm line 23.

Kommt als Fehlermeldung, wenn ich reload 98_expandJSON.pm eingebe.
Das libjson-perl Paket ist installiert.
Ich nutze einen Raspberry Pi2 mit RASPBIAN JESSIE.

Hat jemand eine Idee?
Viele grüße
Max

Offline dev0

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2551
    • _.:|:._
Antw:JSON -> Readings
« Antwort #35 am: 03 März 2017, 20:31:50 »
Vmtl. hast Du das Modul nicht korrekt von Github runter geladen.

Offline jdear75

  • Newbie
  • Beiträge: 2
Antw:JSON -> Readings
« Antwort #36 am: 03 März 2017, 20:40:55 »
Bingo,

Danke für die schnelle Antwort und Hilfe. Ich habe es jetzt direkt per Git Clone gezogen und es funktioniert.

Grüße
Max

Offline AutomationBaer

  • New Member
  • *
  • Beiträge: 11
JSON -> Readings - Wie nutzen?
« Antwort #37 am: 06 März 2017, 06:46:06 »
Ich würde gerne die die JSON-Ausgabe meines DIY-Sensors 'zerlegen'. Auf der Suche nach dem richtigen Weg JSON in Readings zu überführen bin ich zu erst über j2r gestolpert und haben dann diesen Thread und expandJSON entdeckt. Allerdings waren meine Versuche bisher von keinerlei Erfolg gekrönt. Ich habe wohl die prinzipielle Vorgehensweise noch nicht verstanden und würde mich über entsprechende Guidance sehr freuen ;)

Mein Sensor liefert über MQTT - das wiederum eine eigene Baustelle ist (https://forum.fhem.de/index.php/topic,32528.msg598480.html#msg598480) - zyklisch seine Meßwerte:
{ "Timestamp" : "2017-03-06 05:26:57", "Temperature" : { "Value" : 26.600, "Fractional" : 26, "Decimal" : 600 }, "Humidity" : { "Value" : 37.300, "Fractional" : 37, "Decimal" : 300 }, "Light" : { "Value" : 1024 } }

Das entsprechende Reading ist Environment und das Device heißt environment_Treppenhaus. Für eine erste Zerlegung habe ich ein expandJSON definiert:
environment_Treppenhaus:Environment:.{.*}
Beim Empfang wird die Regel entsprechend 'gezogen'
2017.03.06 06:11:58 5: Starting notify loop for environment_Treppenhaus, 1 event(s), first is Environment: {\n\t"Timestamp" : "2017-03-06 05:11:57",\n\t"Temperature" : {\n\t\t"Value" : 25.200,\n\t\t"Fractional" : 25,\n\t\t"Decimal" : 200\n\t},\n\t"Humidity" : {\n\t\t"Value" : 36.899,\n\t\t"Fractional" : 36,\n\t\t"Decimal" : 899\n\t},\n\t"Light" : {\n\t\t"Value" : 1024\n\t}\n}
2017.03.06 06:11:58 5: End notify loop for environment_Treppenhaus

allerdings ohne das ich in einem der Devices entsprechende Readings finden könnte. Nach den Beispielen aus diesem Thread habe ich erwartet, daß zumindest ein Reading Namens Timestamp mit dem UTC-Timestamp-String als Inhalt generiert würde...

Muß ich j2r und expandJSON kombinieren? Wenn ja, wie? Oder wo liegt mein Fehler?


Vielen Dank,
thomas

Offline dev0

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2551
    • _.:|:._
Antw:JSON -> Readings - Wie nutzen?
« Antwort #38 am: 06 März 2017, 08:52:57 »
Muß ich j2r und expandJSON kombinieren? Wenn ja, wie? Oder wo liegt mein Fehler?

Nein j2r ist obsolet, expandJSON ist das aktuelle Modul.

Ich vermute aber, dass Du die eigentliche Fehlermeldung im Log verschwiegen hast. Auf Github findest Du die aktualisierte Version 1.04, in der ich einen Bug gefixed habe, der dazu führte, dass ein Teil vom JSON String, unter bestimmten Bedingungen, abgeschnitten wurde.

Sollte die Version bei Dir auch nicht funktionieren, dann bitte ein list vom Device environment_Treppenhaus hier, in Code-Tags, zeigen.

Offline dev0

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2551
    • _.:|:._
Antw:JSON -> Readings
« Antwort #39 am: 06 März 2017, 10:36:41 »
Nochmals aktualisiert (v1.05), da ich vergessen hatte eine Zeile mit Debugausgaben ins Log zu löschen...

Offline AutomationBaer

  • New Member
  • *
  • Beiträge: 11
JSON -> Readings - Probleme mit expandJSON
« Antwort #40 am: 06 März 2017, 19:54:59 »
Vielen Dank für die rasche Reaktion. Ich hatte die Version 1.04 aus GIThub installiert und es gab keine weiteren Meldungen im Log. Jatzt habe ich die aktualisierte Version 'gezogen'. Den Versuch des Modul Re-Loads wird allerdings mit einer Fehlermeldung quittiert:
Too many arguments for main::expandJSON_do at ./FHEM/98_expandJSON.pm line 151, near "$value) "
Hier die Definition meines Devices dessen Reading ich umwandeln möchte:
# Messwerte Treppenhaus EG
define environment_Treppenhaus MQTT_DEVICE
attr environment_Treppenhaus IODev vertxMQTT
attr environment_Treppenhaus icon weather_light_meter
attr environment_Treppenhaus room Treppenhaus
attr environment_Treppenhaus stateFormat transmission-state
attr environment_Treppenhaus subscribeReading_Environment sensor/indoor/treppenhaus/eg/environment

define ej1 expandJSON environment_Treppenhaus:Environment:.{.*}


Offline dev0

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2551
    • _.:|:._
Antw:JSON -> Readings
« Antwort #41 am: 06 März 2017, 20:42:54 »
FHEM bitte einmal neu starten, danach sollte der Meldung verschwinden.
Bitte ein list vom Device zeigen und kein Auszug aus der .cfg:
list environment_Treppenhaus

Offline AutomationBaer

  • New Member
  • *
  • Beiträge: 11
Antw:JSON -> Readings
« Antwort #42 am: 07 März 2017, 18:48:08 »
Aktuelles Modul aus dem GIThub und Neustart: Verhalten unverändert  :-\

Hier die Ausgabe von list environment_Treppenhaus
Internals:
   IODev      vertxMQTT
   NAME       environment_Treppenhaus
   NR         203
   STATE      incoming publish received
   TYPE       MQTT_DEVICE
   qos        0
   retain     0
   Readings:
     2017-03-07 18:41:58   Environment     {
"Timestamp" : "2017-03-07 17:41:57",
"Temperature" : {
"Value" : 27.800,
"Fractional" : 27,
"Decimal" : 800
},
"Humidity" : {
"Value" : 34.600,
"Fractional" : 34,
"Decimal" : 600
},
"Light" : {
"Value" : 1004
}
}
     2017-03-07 18:41:58   transmission-state incoming publish received
   Message_ids:
   Sets:
   subscribe:
     sensor/indoor/treppenhaus/eg/environment
   subscribeExpr:
     ^sensor\/indoor\/treppenhaus\/eg\/environment$
   Subscribereadings:
     sensor/indoor/treppenhaus/eg/environment Environment
Attributes:
   IODev      vertxMQTT
   icon       weather_light_meter
   room       Treppenhaus
   stateFormat transmission-state
   subscribeReading_Environment sensor/indoor/treppenhaus/eg/environment

Im Log sieht es unverändert aus;
2017.03.07 18:41:58 5: calling readingsSingleUpdate(environment_Treppenhaus,Environment,{
"Timestamp" : "2017-03-07 17:41:57",
"Temperature" : {
"Value" : 27.800,
"Fractional" : 27,
"Decimal" : 800
},
"Humidity" : {
"Value" : 34.600,
"Fractional" : 34,
"Decimal" : 600
},
"Light" : {
"Value" : 1004
}
},1
2017.03.07 18:41:58 5: Starting notify loop for environment_Treppenhaus, 1 event(s), first is Environment: {\n\t"Timestamp" : "2017-03-07 17:41:57",\n\t"Temperature" : {\n\t\t"Value" : 27.800,\n\t\t"Fractional" : 27,\n\t\t"Decimal" : 800\n\t},\n\t"Humidity" : {\n\t\t"Value" : 34.600,\n\t\t"Fractional" : 34,\n\t\t"Decimal" : 600\n\t},\n\t"Light" : {\n\t\t"Value" : 1004\n\t}\n}
2017.03.07 18:41:58 5: End notify loop for environment_Treppenhaus

Und auch im Event Monitor gibt es nichts zu entdecken:
2017-03-07 18:41:47 MQTT vertxMQTT connection: active
2017-03-07 18:41:58 MQTT_DEVICE environment_Treppenhaus transmission-state: incoming publish received
2017-03-07 18:41:58 MQTT_DEVICE environment_Treppenhaus Environment: { "Timestamp" : "2017-03-07 17:41:57", "Temperature" : { "Value" : 27.800, "Fractional" : 27, "Decimal" : 800 },  "Humidity" : { "Value" : 34.600, "Fractional" : 34, "Decimal" : 600 }, "Light" : { "Value" : 1004 } }
2017-03-07 18:42:47 MQTT vertxMQTT connection: active

Was kann ich noch zur weiteren Eingrenzung eruieren?


Vielen Dank,
thomas

Offline dev0

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2551
    • _.:|:._
Antw:JSON -> Readings
« Antwort #43 am: 07 März 2017, 18:52:48 »
Was heißt "Verhalten unverändert"? Wird das Modul nicht geladen oder werden nur keine Readings erzeugt?

Offline AutomationBaer

  • New Member
  • *
  • Beiträge: 11
Antw:JSON -> Readings
« Antwort #44 am: 07 März 2017, 21:43:41 »
Da ich FHEM neu gestartet habe und keine Fehlermeldung im Log entdecken kann gehe ich davon aus, daß das Modul geladen wurde. Läßt sich das irgendwie direkt verifizieren? Ich habe das expandJSON Device entfernt und nochmal angelegt. Auch hier keinerlei Fehlermeldung. In der GIThub Version ist im Sourcecode nach wie vor die Version 1.04 annotiert...

Und ja, mit unverändert meine ich das Fehlen zusätzlicher Readings im Device...

 

decade-submarginal