Neues Modul: 72_TA_CMI_JSON (Technische Alternative UVR16x2, UVR1611, CMI, ...)

Begonnen von delMar, 02 November 2018, 10:38:08

Vorheriges Thema - Nächstes Thema

rudolfkoenig

Will zum Protokoll geben, dass ich mit der letzten Version keine Probleme sehe.

delMar

Zitat von: rudolfkoenig am 06 Februar 2022, 14:15:48
Will zum Protokoll geben, dass ich mit der letzten Version keine Probleme sehe.
Ja, das glaub ich dir  ;D

Ich werde weitertüfteln...

Danke trotzdem hier schon mal für deine Zeit
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

delMar

Zitat von: rudolfkoenig am 06 Februar 2022, 14:15:48
Will zum Protokoll geben, dass ich mit der letzten Version keine Probleme sehe.
Ja, das glaub ich dir  ;D

Ich werde weitertüfteln...

Danke trotzdem hier schon mal für deine Zeit

Frage an alle:
auf welcher Version läuft das CMI bei euch?

Das steht auf der Seite "Home" rechts unten.
Bei mir läuft 1.38.1 und wurde auch schon seit längerem nicht aktualisiert.

Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

delMar

So, ich hab das Problem jetzt isolieren können.

Manchmal kommt ein ungültiges JSON von der CMI.
Und zwar dieses:


{"Header":{"Version":5,"Device":"87","Timestamp":1644159514},"Data":{]},"Status":"OK","Status code":0}


Im Feld "Data" wird als Wert {]} geliefert, was aber eigentlich {[]} heißen sollte.
Davon abgesehen ist aber auch die Frage, warum Data überhaupt leer ist.

Und mit diesem JSON liefert auch Rudis Tip, dass man doch mal json2nameValueErrorText auslesen könnte, den richtigen Hinweis.

Dort steht nämlich error parsing ']' drin.

Warum das genau jetzt gehäuft aufzutreten scheint, weiß ich nicht.
Vielleicht hats früher einfach niemand gemeldet.
Sehr böse Fügung, dass das mit einem Update von json2nameValue zusammengefallen ist, und dass das Zurücknehmen des selben der Fehler zu verschwinden scheint.

Ich werd jetzt mal die Prüfung dafür einbauen, und dann sehen wir, wohin uns das führt.


schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

delMar

Fix ist eingecheckt.

Im Fehlerfall werden entsprechende Readings mit Errortext geschrieben.
Log-Einträge werden auf Verbose 1 gemacht.

Ich gehe davon aus, dass dieses Problem immer dann auftritt, wenn die CMI etwas zu viel zu tun hat.
Hab schon öfter gelesen, dass das Gerät eher empfindlich reagiert, wenn in einem Netzwerk viel los ist.

Vielleicht hat json2nameValue diesen spezifischen Fehler im JSON früher einfach ignoriert, erkennt es jetzt aber korrekterweise.
Könnte eine Erklärung sein, warum das Problem erst jetzt sichtbar wird.

Sollte ab morgen früh mit dem Update mitkommen.

schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

TeleDet

Hallo Martin,

Super Arbeit und toller Suport!!!
Nur, im Moment müllt mir das Modul mein Log mit dem Fehler zu  ::) Hatte vorhin erst das Update mit fhem gemacht.  :o

Ich würde das Update gern händisch einspielen um nicht bis Morgen warten zu müssen.
Wo kann ich es downloaden?

Gruß Detlef

delMar

Zitat von: TeleDet am 06 Februar 2022, 17:03:58
Ich würde das Update gern händisch einspielen um nicht bis Morgen warten zu müssen.
Wo kann ich es downloaden?
Hier: https://svn.fhem.de/trac/export/25642/trunk/fhem/FHEM/72_TA_CMI_JSON.pm

Es gäbe auch direkt von FHEM aus die Möglichkeit, ein Update aus dem SVN zu holen.
Die hab ich aber gerade nicht parat.

Wär nett, wenn du kurz Bescheid gibst, obs dann bei dir läuft.

schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

mr-fuchs

Hallo Martin

Zitat von: delMar am 06 Februar 2022, 14:36:48
Frage an alle:
auf welcher Version läuft das CMI bei euch?

Ich hatte V1.35.1 habe aber dann auf die aktuellste Version V1.38.3 upgedatet hat aber nichts geändert.

Was aber komisch ist in der CMI_JSON_API_V6.pdf steht bei 6.1.1.
Version of the API
| 6 | 1.38.1 | 2021-02-04

Aber in meinem json Header steht immer noch 5

{
"Header":{
"Version":5,
"Device":"80",
"Timestamp":1644165146

Werde morgen gleich das Modul updaten und testen  :)

Gruß
Andi

delMar

Danke für die Info, Andi.

Zitat von: mr-fuchs am 06 Februar 2022, 17:11:46
Aber in meinem json Header steht immer noch 5

Ja, ich denke, dass das Changelog in der Doku wahrscheinlich eher am seltensten Korrekturgelesen wird :)
Ich glaube, von v4 auf v5 war da auch schon mal so was ähnliches

schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

TeleDet

Hallo Martin,

habe deine Version gerade eingespielt und nach "shutdown restart" kam dan das  ::) :

im Logfile (verbose 3):
2022.02.06 19:28:46 1: TA_CMI_JSON (cmi) - JSON problem: error parsing '5,
"Device":"80",
"Timestamp":1644175725
'. Skipping. Can be ignored if not occurring too often.


List vom CMI:

Internals:
   CFGFN      /opt/fhem/FHEM/0020_uvr1611.cfg
   CMIURL     192.168.x.x
   DEF        192.168.0.8 1 I,O
   FUUID      5e497f92-f33f-8794-4d63-xxxxxxxxxxxx
   INTERVAL   180
   NAME       cmi
   NODEID     1
   NODEID_HEX 01
   NR         424
   NTFY_ORDER 50-cmi
   QUERYPARAM I,O
   STATE      ERROR
   TYPE       TA_CMI_JSON
   READINGS:
     2022-02-06 16:34:42   TFussbo-Bad     26.0
     2022-02-06 16:34:42   TGaskess_VL     52.3
     2022-02-06 16:25:39   THeizkr_VL1     46.6
     2022-02-06 16:28:40   THzkrFB_VL      47.6
     2022-02-06 16:34:42   TKessel-VL      55.1
     2022-02-06 16:34:42   TKollektor      7.3
     2022-02-06 16:34:42   TPuffer_mitte   47.6
     2022-02-06 16:34:42   TPuffer_oben    62.6
     2022-02-06 16:22:38   TPuffer_unten   40.0
     2022-02-06 16:16:36   TSolar-VL       25.7
     2022-02-06 16:34:42   TWW_Puffer      64.2
     2022-02-06 16:34:42   TZirku_RL       34.0
     2022-02-06 16:34:42   TZirku_VL       62.7
     2022-02-06 16:31:41   Temp_Aussen     5.5
     2022-02-06 19:28:46   error           error parsing '5,
"Device":"80",
"Timestamp":1644175725
'
     2022-02-06 19:28:46   state           ERROR
Attributes:
   interval   180
   password   xxxxxxxxxxxxxxxxxx
   readingNamesInputs 1:TKollektor 2:TWW_Puffer 3:TPuffer_oben 4:TPuffer_mitte 5:TPuffer_unten 6:TGaskess_VL 9:Temp_Aussen 10:TSolar-VL 11:TKessel-VL 12:THeizkr_VL1 13:TZirku_VL 14:TZirku_RL 15:THzkrFB_VL 16:TFussbo-Bad
   room       CMI
   username   xxxxx


CMI steht auf ERROR und aktualisiert nicht mehr wie du an den Uhrzeiten der Readings siehst.
CMI Firmware ist die Version V1.38.3

Gruß Detlef


delMar

Zitat von: TeleDet am 06 Februar 2022, 19:40:56
habe deine Version gerade eingespielt und nach "shutdown restart" kam dan das  ::) :

Grundsätzlich passt das, weil eben ein nicht vollständiges JSON angekommen ist.

In diesem Fall würde das aber heißen, dass nur unvollständige JSONs kommen... was natürlich schlecht ist.

Vielleicht muss ich die Fehlermeldung manuell aus dem Hash löschen...
Ich mach das gleich noch
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

delMar

So:  das Hash wird ja jedesmal neu angelegt, also meine Vermutung, dass ich da manuell was löschen muss, war blödsinn.

Vorerst fällt mir leider nur ein, das Logging mit mehr Details zu versorgen.

Du solltest zusätzlich zu der schon bekannten Log-Zeile noch eine weitere dazukriegen:

"TA_CMI_JSON ($name) - JSON: ...

Wo das JSON angezeigt wird, das der Parser verarbeitet hat.

Kannst du die bitte mal ausprobieren?
Da würden wir jetzt klar erkennen, ob wirklich ständig ein kaputtes JSON kommt, was sonderbar wäre, weil früher war das ja auch nicht.

Hmm... trotzdem die Frage:
Fragst du jetzt das CMI evtl öfter ab als früher?
zb mit mehreren Geräten parallel?

schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

TeleDet

@Martin,

Nach Restart:

Logfile:
2022.02.06 19:54:11 1: TA_CMI_JSON (cmi) - JSON problem: error parsing '5,
"Device":"80",
"Timestamp":1644177251
'. Skipping. Can be ignored if not occurring too often.
2022.02.06 19:54:11 1: TA_CMI_JSON (cmi) - JSON: {
"Header":{
"Version":5,
"Device":"80",
"Timestamp":1644177251
},
"Data":{
"Inputs":[
{
"Number":1,
"AD":"A",
"Value":{
"Value":3.9,
"Unit":"1"
}
}
,
{
"Number":2,
"AD":"A",
"Value":{
"Value":64.7,
"Unit":"1"
}
}
,
{
"Number":3,
"AD":"A",
"Value":{
"Value":51.0,
"Unit":"1"
}
}
,
{
"Number":4,
"AD":"A",
"Value":{
"Value":45.6,
"Unit":"1"
}
}
,
{
"Number":5,
"AD":"A",
"Value":{
"Value":41.3,
"Unit":"1"
}
}
,
{
"Number":6,
"AD":"A",
"Value":{
"Value":48.0,
"Unit":"1"
}
}
,
{
"Number":7,
"AD":"D",
"Value":{
"Value":0,
"Unit":"43"
}
}
,
{
"Number":8,
"AD":"D",
"Value":{
"Value":0,
"Unit":"43"
}
}
,
{
"Number":9,
"AD":"A",
"Value":{
"Value":4.0,
"Unit":"1"
}
}
,
{
"Number":10,
"AD":"A",
"Value":{
"Value":25.8,
"Unit":"1"
}
}
,
{
"Number":11,
"AD":"A",
"Value":{
"Value":53.7,
"Unit":"1"
}
}
,
{
"Number":12,
"AD":"A",
"Value":{
"Value":46.5,
"Unit":"1"
}
}
,
{
"Number":13,
"AD":"A",
"Value":{
"Value":63.3,
"Unit":"1"
}
}
,
{
"Number":14,
"AD":"A",
"Value":{
"Value":35.4,
"Unit":"1"
}
}
,
{
"Number":15,
"AD":"A",
"Value":{
"Value":47.3,
"Unit":"1"
}
}
,
{
"Number":16,
"AD":"A",
"Value":{
"Value":26.0,
"Unit":"1"
}
}
],
"Outputs":[
{
"Number":1,
"AD":"A",
"Value":{
"State":0,"Value":0,
"Unit":"0"
}
}
,
{
"Number":2,
"AD":"A",
"Value":{
"State":0,"Value":0,
"Unit":"0"
}
}
,
{
"Number":3,
"AD":"D",
"Value":{
"Value":0,
"Unit":"0"
}
}
,
{
"Number":4,
"AD":"D",
"Value":{
"Value":1,
"Unit":"0"
}
}
,
{
"Number":5,
"AD":"D",
"Value":{
"Value":0,
"Unit":"0"
}
}
,
{
"Number":6,
"AD":"A",
"Value":{
"State":1,"Value":30,
"Unit":"0"
}
}
,
{
"Number":7,
"AD":"A",
"Value":{
"State":0,"Value":0,
"Unit":"0"
}
}
,
{
"Number":8,
"AD":"D",
"Value":{
"Value":0,
"Unit":"0"
}
}
,
{
"Number":9,
"AD":"D",
"Value":{
"Value":0,
"Unit":"0"
}
}
,
{
"Number":10,
"AD":"D",
"Value":{
"Value":0,
"Unit":"0"
}
}
,
{
"Number":11,
"AD":"D",
"Value":{
"Value":0,
"Unit":"0"
}
}
,
{
"Number":12,
"AD":"D",
"Value":{
"Value":0,
"Unit":"0"
}
}
,
{
"Number":13,
"AD":"D",
"Value":{
"Value":0,
"Unit":"0"
}
}
]},
"Status":"OK",
"Status code":0
}


und List cmi:
Internals:
   CFGFN      /opt/fhem/FHEM/0020_uvr1611.cfg
   CMIURL     192.168.0.8
   DEF        192.168.0.8 1 I,O
   FUUID      5e497f92-f33f-8794-4d63-
   INTERVAL   180
   NAME       cmi
   NODEID     1
   NODEID_HEX 01
   NR         424
   NTFY_ORDER 50-cmi
   QUERYPARAM I,O
   STATE      ERROR
   TYPE       TA_CMI_JSON
   READINGS:
     2022-02-06 16:34:42   TFussbo-Bad     26.0
     2022-02-06 16:34:42   TGaskess_VL     52.3
     2022-02-06 16:25:39   THeizkr_VL1     46.6
     2022-02-06 16:28:40   THzkrFB_VL      47.6
     2022-02-06 16:34:42   TKessel-VL      55.1
     2022-02-06 16:34:42   TKollektor      7.3
     2022-02-06 16:34:42   TPuffer_mitte   47.6
     2022-02-06 16:34:42   TPuffer_oben    62.6
     2022-02-06 16:22:38   TPuffer_unten   40.0
     2022-02-06 16:16:36   TSolar-VL       25.7
     2022-02-06 16:34:42   TWW_Puffer      64.2
     2022-02-06 16:34:42   TZirku_RL       34.0
     2022-02-06 16:34:42   TZirku_VL       62.7
     2022-02-06 16:31:41   Temp_Aussen     5.5
     2022-02-06 19:54:11   error           error parsing '5,
"Device":"80",
"Timestamp":1644177251
'
     2022-02-06 19:54:11   state           ERROR
Attributes:
   interval   180
   password   
   readingNamesInputs 1:TKollektor 2:TWW_Puffer 3:TPuffer_oben 4:TPuffer_mitte 5:TPuffer_unten 6:TGaskess_VL 9:Temp_Aussen 10:TSolar-VL 11:TKessel-VL 12:THeizkr_VL1 13:TZirku_VL 14:TZirku_RL 15:THzkrFB_VL 16:TFussbo-Bad
   room       CMI
   username   


ZitatHmm... trotzdem die Frage:
Fragst du jetzt das CMI evtl öfter ab als früher?
zb mit mehreren Geräten parallel?

Parallel zum Modul TA_CMI_JSON frage ich das CMI noch per HTTPMOD (über eine Schema-Seite) ab.
Das war der Weg an die Daten zu kommen befor das per JSON und deinem Mudul ging.
Die Daten bekomme ich ich auch nach wie vor.

Gruß Detlef


delMar

Das ist jetzt seltsam.
Das JSON is valide, aber trotzdem kommt die Fehlermeldung beim Parsen.

@Rudi, falls du hier noch mitliest: der folgende Code prüft auf Parsing Fehler:

     my $keyValues = json2nameValue($data);
     my $j2nvErr = $keyValues->{json2nameValueErrorText};
     if (defined $j2nvErr) {
       my $j2nvInput = $keyValues->{json2nameValueInput};
       Log3 $name, 1, "TA_CMI_JSON ($name) - JSON problem: $j2nvErr. Skipping. Can be ignored if not occurring too often.";
       Log3 $name, 1, "TA_CMI_JSON ($name) - JSON: $j2nvInput";


Doch auch wenn gültiges JSON kommt, ist der Fehler immer noch in json2nameValueErrorText drin...
Was mach ich da denn nun wieder falsch?

Danke
schöne Grüße
Martin
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

Vielgenutzte Module sind die größte Motivation für Entwickler.
Bitte zumindest 'attr global sendStatistics onUpdate' setzen.
Denn: ohne 'sendStatistics' keine Zahlen.

TeleDet

@Martin,

noch mal absolut Hut ab für dein Engagement !!!

Mach aber auch Sonntag und ganz in Ruhe !!!  :)  ;)

Das Modul steht und macht nix , also auch keine mehr
oder weniger verzweifelt Sinnlosen Fehlermeldungen im Log.

Von daher also kein Grund für Hektik ! Du kriegst das auf jedenfall hin !  ;)

Gruß Detlef