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

delMar

Zitat von: Markus am 22 Januar 2020, 22:43:24
{ "Header":{ "Version":5, "Device":"87", "Timestamp":1579732926 }, "Data":{ }, "Status":"TOO MANY REQUESTS", "Status code":4 }
Bitte eine Minute warten, damit Daten reinkommen. Evtl. FHEM in dieser Zeit stoppen, man kann in Summe nur 1x pro Minute abfragen.

Zitat von: Markus am 22 Januar 2020, 22:43:24
aber Funktioniert schon Danke
Das Problem ist gelöst?
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.

Markus

ja scheint zu Funktionieren nur Raum_1_RAS habe ich nie definiert und ist einfach da keine Ahnung woher...

Zitat{ "Header":{ "Version":5, "Device":"87", "Timestamp":1579733335 }, "Data":{ "Inputs":[ { "Number":1, "AD":"A", "Value":{ "Value":64.0, "Unit":"1" } }, { "Number":2, "AD":"A", "Value":{ "Value":23.6, "Unit":"1" } }, { "Number":3, "AD":"A", "Value":{ "Value":54.0, "Unit":"1" } }, { "Number":4, "AD":"A", "Value":{ "Value":9999.9, "Unit":"1" } }, { "Number":5, "AD":"A", "Value":{ "Value":34.2, "Unit":"1" } }, { "Number":6, "AD":"A", "Value":{ "Value":33.1, "Unit":"1" } }, { "Number":7, "AD":"A", "Value":{ "Value":41.2, "Unit":"1" } }, { "Number":8, "AD":"A", "Value":{ "Value":9999.9, "Unit":"1" } }, { "Number":9, "AD":"A", "Value":{ "Value":51.1, "Unit":"46", "RAS":"3" } }, { "Number":10, "AD":"A", "Value":{ "Value":26.0, "Unit":"1" } }, { "Number":11, "AD":"A", "Value":{ "Value":9999.9, "Unit":"1" } }, { "Number":12, "AD":"A", "Value":{ "Value":9999.9, "Unit":"1" } }, { "Number":13, "AD":"A", "Value":{ "Value":9999.9, "Unit":"1" } }, { "Number":14, "AD":"A", "Value":{ "Value":9999.9, "Unit":"1" } }, { "Number":15, "AD":"A", "Value":{ "Value":9999.9, "Unit":"1" } }, { "Number":16, "AD":"A", "Value":{ "Value":60.5, "Unit":"1" } }], "Outputs":[ { "Number":1, "AD":"D", "Value":{ "Value":1, "Unit":"43" } }, { "Number":2, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":3, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":4, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":5, "AD":"D", "Value":{ "Value":1, "Unit":"43" } }, { "Number":6, "AD":"D", "Value":{ "Value":1, "Unit":"43" } }, { "Number":7, "AD":"D", "Value":{ "Value":1, "Unit":"43" } }, { "Number":8, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":9, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":10, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":11, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":12, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":13, "AD":"A", "Value":{ "State":1, "Value":60.0, "Unit":"8" } }, { "Number":14, "AD":"A", "Value":{ "State":1, "Value":100.0, "Unit":"8" } }, { "Number":15, "AD":"A", "Value":{ "State":0, "Value":0.0, "Unit":"8" } }, { "Number":16, "AD":"A", "Value":{ "State":0, "Value":0.0, "Unit":"8" } }], "DL-Bus":[ ]}, "Status":"OK", "Status code":0 }
Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

delMar

Zitat von: Markus am 22 Januar 2020, 22:49:19
ja scheint zu Funktionieren nur Raum_1_RAS habe ich nie definiert und ist einfach da keine Ahnung woher...
Das wird automatisch erzeugt, wenn es sich um den entsprechenden Datentyp handelt.
In deinem Fall ist wahrscheinlich der Raumsensor mit einem verstellbaren Temperaturfühler kombiniert.
Der Wert 3 steht für Standby/Frost pr.
Somit kannst du nicht nur die Temperatur auslesen, sondern auch, wie der Schalter steht.

Achja: und es könnte ausreichen, wenn du in der Definition nur I,O angibst (anstatt I,O,D), weil Daten vom DL-Bus sind ohnehin nicht vorhanden. Und laut deiner Config erwartest du auch garkeine.

Kannst du für andere, die vielleicht über das selbe Problem stolpern, noch hier reinschreiben, woran das Problem gelegen hat?

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.

Markus

keine Ahnung woran es lag ich hab die 16x2 neu gestartet und dann hat alles gestimt seltsam aber jetzt Funktioniert es
Danke!!

Gruß Markus
Raspberry Pi2 als FHEM-Plattform
HM, FS20, 1-Wire, PanStamp,LW12,Intertechno,ESPEasy,Alexa

mkwi

Hallo zusammen,

ich experimentiere aktuell auch mit dem Modul, mein TA-Bus ist allerdings etwas umfangreicher. Ich betreibe eine UVR16x2 und 2x RSM610 am CAN-Bus. Die UVR lässt sich auch problemlos auslesen, bei den RSM bekomme ich aber nur die Ausgangs-Stati. Interessant wären für mich aber auch die DL-Bus- und Analogwerte.

Im Modul hab ich testweise die Zeile 192 erweitert:

if ($canDevice eq 'UVR16x2' or 'RSM610') {

Dann bekomme ich auch die DL-Bus Werte. Ich habe dann noch das Problem, dass ich durch die 3 Devices, die ich für die UVR und die beiden RSM angelegt habe immer wieder die 1min Hürde und somit häufig TOO MANY REQUESTS bekomme. Alle drei CAN-Bus Teilnehmer kann man vermutlich nicht in einem Rutsch aufrufen, oder?

Beste Grüße

Michael

delMar

Hallo Michael,

Dieses Modul basiert im Grunde auf der API, die hier dokumentiert ist: https://wiki.ta.co.at/C.M.I._JSON-API

Diese Doku sagt zB, dass DL-Bus Werte nur für x2 Devices ausgegeben werden.
Wenns bei dir für die RSM610 auch funktioniert, dann werd ich deine Erweiterung natürlich gern mit reinnehmen.

Du kannst im Prinzip auch im Browser selber experimentieren, was die API hergibt.
Der Aufruf wäre http://cmi/INCLUDE/api.cgi?jsonnode=1&jsonparam=I,O, ist aber auch in der API Doku genauer beschrieben.

Eine gleichzeitige Abfrage mehrerer Devices ist in der Doku ebenfalls nicht extra behandelt, alle Beispiele geben nur einen Node an.
Aber auch hier: Falls du rausfindest, dass auch mehrere möglich wären, gern Bescheid geben.

Ich habe auch festgestellt, dass der Support von Technische Alternative eigentlich alle Fragen beantwortet.
Wenn du von dort noch Input kriegst, der hier ins Modul mit rein sollte, bitte auch gern Bescheid geben.

Das Update werd ich heute noch ins SVN geben, sollte morgen dann mit dem FHEM Update ganz normal 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.

mkwi

Hallo Martin,

zur x2 Serie gehört auch u.a. der RSM610:

https://www.ta.co.at/x2-frei-programmierbare-regler/

Daher müssten die alles können, was die UVR16x2 kann. Da ich nen guten Draht zu TA habe, hab ich die Frage der mehreren Nodes mal an den Support gegeben. Wenn da was zurück kommt, meld ich mich wieder.

Beste Grüße

Michael

delMar

Zitat von: mkwi am 20 März 2020, 10:48:01
zur x2 Serie gehört auch u.a. der RSM610:
Sehr wertvolle Info, dank dir!
Dh ich sollte auch diese anderen Modelle noch ins IF mit reinnehmen.
Die Änderung von dir hab ich jedenfalls soeben gepusht, die ist ab morgen drin.

Als Alternative gibts auch noch das CanOverEthernet Modul von mir, ist halt vom Konfigurationsaufwand etwas höher.
Dafür kannst du zB aber auch Werte an den CAN-Bus schicken; nicht nur empfangen.

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

Hallo zusammen,

da ich annehme, dass hier viele versammelt sind, die das Modul aktiv benutzen, gibts hier den Hinweis auf ein Update:

Wie im Wiki (https://wiki.fhem.de/wiki/TA_CMI_UVR16x2_UVR1611) beschrieben, kann FHEM nun über dieses Modul auch den Status der Ausgänge anzeigen (Hand-Ein, etc.)

Dieses Feature ist nicht Teil der offiziellen API, sondern wurde aus dem CMI Webinterface "geklaut".
Am Spannendsten daran ist wohl, dass die Abfrage nicht auf einmal pro Minute beschränkt ist, sondern auch im Abstand weniger Sekunden funktioniert.

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

Update:
nun (ab morgen, um genau zu sein) wird auch das Setzen von Fixwerten mit diesem Modul unterstützt.
Genaue Doku findet sich im Wiki und auch in der Commandref.

Ich hatte das selber schon lange über das HTTP-Mod Modul gelöst.
Bin aber nun zu dem Schluss gekommen, dass das Setzen von Fixwerten für alle sinnvoll sein kann und in diesem Modul gut aufgehoben ist.
Ausgänge direkt zu setzen werde ich aber nicht unterstützen. Erläuterung dazu ebenfalls im Wiki.

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.

GrazPi

Hallo Martin,
eines der letzten FHEM-Updates hat dein Modul lahmgelegt, ich kann leider nicht feststellen welches genau. Nach dem Restart zeigt das Log

2022.01.31 09:44:22.639 1: PERL WARNING: Use of uninitialized value $input in hash element at ./FHEM/72_TA_CMI_JSON.pm line 332.
2022.01.31 09:44:22.640 1: PERL WARNING: Use of uninitialized value $input in concatenation (.) or string at ./FHEM/72_TA_CMI_JSON.pm line 332.
2022.01.31 09:44:22.641 1: PERL WARNING: Use of uninitialized value $input in hash element at ./FHEM/72_TA_CMI_JSON.pm line 337.
2022.01.31 09:44:22.641 1: PERL WARNING: Use of uninitialized value $input in concatenation (.) or string at ./FHEM/72_TA_CMI_JSON.pm line 337.
2022.01.31 09:44:22.641 1: PERL WARNING: Use of uninitialized value $value in string eq at fhem.pl line 4929.
2022.01.31 09:44:22.642 1: PERL WARNING: Use of uninitialized value in string eq at ./FHEM/72_TA_CMI_JSON.pm line 284.


und das Device verbleibt im Status "DEFINE".
Offenbar werden schon die Header-Daten nicht mehr "verstanden":

Internals:
   CAN_DEVICE unknown:
   CFGFN     
   CMIURL     <IP>
   CMI_API_VERSION unknown:
   DEF        <IP> 2 La,Ld,D
   FUUID      xxxx
   INTERVAL   180
   NAME       cmi
   NODEID     2
   NODEID_HEX 02
   NR         36
   NTFY_ORDER 50-cmi
   QUERYPARAM La,Ld,D
   STATE      ERROR
   TYPE       TA_CMI_JSON
   model      unknown:
   OLDREADINGS:
   READINGS:


Ein verbose 5 verrät auch nichts über das Problem, im Log steht nur

http://<IP>/INCLUDE/api.cgi?jsonnode=2&jsonparam=La,Ld,D&_=123.456: HTTP response code 200

Ein Test auf einer ganz anderen FHEM-Instanz zeigt genau dasselbe Verhalten - nach Installation vom fhem-6.1 (Version vom 07.11.21) funktioniert es, nach einem Update nicht mehr. In der Infrastruktur unterhalb des cmi-Moduls muß sich was geändert haben - kannst du das nachvollziehen?

Vielen Dank für deine Hilfe,
Lutz

FHEM prod auf RazBerry 3, Dev auf virtuellem RasPi

delMar

Zitat von: GrazPi am 31 Januar 2022, 11:18:44
eines der letzten FHEM-Updates hat dein Modul lahmgelegt, ich kann leider nicht feststellen welches genau. Nach dem Restart zeigt das Log

Sorry, werd ich umgehend prüfen
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

Ich hab jetzt bei mir auf die aktuellste FHEM Version aktualisiert (via 'fhem update').
Bei mir funktioniert das Modul noch - und auch die Fehlermeldungen die du anführst kommen bei mir nicht (danke übrigens für die ausführliche Erläuterung)

Ich will das deswegen aber nicht zu den Akten legen.
Es kann trotzdem sein, dass bei mir irgendein Detail dafür sorgt, dass es bei mir trotzdem funktioniert, es kann aber auch ein Detail bei dir sein, weswegen es nicht mehr funktioniert.

Das Modul selber wurde seit März 2021 nicht mehr aktualisiert, ich würde also deine Vermutung teilen, dass etwas hinter den Kulissen dafür Verantwortlich ist.

Falls noch jemand Probleme hat, bitte Bescheid geben :-)

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.

GrazPi

Könnte es an den empfangenen Daten liegen?
Auf den Request
http://<IP>/INCLUDE/api.cgi?jsonnode=2&jsonparam=La,Ld,D

folgt hier die Antwort
{ "Header":{ "Version":5, "Device":"87", "Timestamp":1643628508 }, "Data":{ "Logging Analog":[ { "Number":1, "AD":"A", "Value":{ "Value":16.4, "Unit":"1" } }, { "Number":2, "AD":"A", "Value":{ "Value":18.8, "Unit":"1" } }, { "Number":3, "AD":"A", "Value":{ "Value":20.9, "Unit":"1" } }, { "Number":4, "AD":"A", "Value":{ "Value":19.2, "Unit":"1" } }, { "Number":5, "AD":"A", "Value":{ "Value":14.1, "Unit":"1" } }, { "Number":6, "AD":"A", "Value":{ "Value":3.2, "Unit":"1" } }, { "Number":7, "AD":"A", "Value":{ "Value":42.4, "Unit":"1" } }, { "Number":8, "AD":"A", "Value":{ "Value":50.11, "Unit":"21" } }, { "Number":9, "AD":"A", "Value":{ "Value":39.2, "Unit":"1" } }, { "Number":10, "AD":"A", "Value":{ "Value":26.5, "Unit":"1" } }, { "Number":11, "AD":"A", "Value":{ "Value":20.8, "Unit":"46", "RAS":"0" } }, { "Number":12, "AD":"A", "Value":{ "Value":28.4, "Unit":"1" } }, { "Number":13, "AD":"A", "Value":{ "Value":27.8, "Unit":"1" } }, { "Number":14, "AD":"A", "Value":{ "Value":27.7, "Unit":"1" } }, { "Number":15, "AD":"A", "Value":{ "Value":0.0, "Unit":"8" } }, { "Number":16, "AD":"A", "Value":{ "Value":0.0, "Unit":"8" } }, { "Number":17, "AD":"A", "Value":{ "Value":278, "Unit":"3" } }, { "Number":18, "AD":"A", "Value":{ "Value":164080, "Unit":"19" } }, { "Number":21, "AD":"A", "Value":{ "Value":0.00, "Unit":"10" } }, { "Number":22, "AD":"A", "Value":{ "Value":4959.3, "Unit":"11" } }, { "Number":23, "AD":"A", "Value":{ "Value":0.00, "Unit":"10" } }, { "Number":24, "AD":"A", "Value":{ "Value":15457.5, "Unit":"11" } }, { "Number":25, "AD":"A", "Value":{ "Value":0.66, "Unit":"13" } }, { "Number":26, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":27, "AD":"A", "Value":{ "Value":42.2, "Unit":"1" } }, { "Number":28, "AD":"A", "Value":{ "Value":28.5, "Unit":"1" } }, { "Number":29, "AD":"A", "Value":{ "Value":46.6, "Unit":"1" } }], "Logging Digital":[ { "Number":1, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":2, "AD":"D", "Value":{ "Value":0, "Unit":"44" } }, { "Number":3, "AD":"D", "Value":{ "Value":1, "Unit":"43" } }, { "Number":4, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":5, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":6, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":7, "AD":"D", "Value":{ "Value":1, "Unit":"43" } }, { "Number":8, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":9, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":10, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":11, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":12, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":13, "AD":"D", "Value":{ "Value":1, "Unit":"43" } }, { "Number":14, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":15, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }], "DL-Bus":[ { "Number":1, "AD":"A", "Value":{ "Value":18.2, "Unit":"1" } }, { "Number":2, "AD":"A", "Value":{ "Value":18.9, "Unit":"1" } }, { "Number":3, "AD":"A", "Value":{ "Value":0, "Unit":"3" } }, { "Number":4, "AD":"A", "Value":{ "Value":1.26, "Unit":"23" } }]}, "Status":"OK", "Status code":0 }

Benimmt sich mein CMI eventuell anders als deines?

Vielen Dank für die unglaublich schnelle Reaktion!!
Lutz
FHEM prod auf RazBerry 3, Dev auf virtuellem RasPi

delMar

Hm, ich kann an deinen Daten kein Problem erkennen...

Wenn du dich damit auskennst, kannst du in Zeile 274 mal ein Log-Statement reingeben, um zu prüfen, was als Response von der API beim Modul ankommt:

Log3 $name, 4, "TA_CMI_JSON ($name) - Response $data";

Das würde dann auf Verbose 4 das JSON ins Log file schreiben.
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.