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

Maxl

Hallo,

habe ein Problem mit zwei unterschiedlichen CMI / CMI-S, die JSON-Abfrage funktioniert in FHEM bei dem Standard CMI einwandfrei, es kommen alle Werte an, sobald ich das CMI-S verwende bekomme ich nur untere Einträge im LOGFILE. Eigentlich benutze ich die gleichen Abfragen, das CMI-S will aber nicht. Gibt es einen Unterschied zwischen den beiden CMI?

Habe nun beide CMIs auf die neuste Firmware gebracht V1.41.2, nun geht gar nichts mehr, kann es sein das die Schnittstelle in dieser Firmware nicht mehr vorhanden ist?

Beim Aufruf über die Kommandozeile des Browsers funktionierts, es kommt eine Antwort, nur in FHEM erscheint kein Reading.

http://192.168.1.110/INCLUDE/api.cgi?jsonnode=2&jsonparam=I,O,D
http://192.168.1.110/INCLUDE/api.cgi?jsonnode=1&jsonparam=I,O,D&_=1702559016.42765

{ "Header":{ "Version":7, "Device":"80", "Timestamp":1702562937 }, "Data":{ "Inputs":[ { "Number":1, "AD":"A", "Value":{ "Value":12.7, "Unit":"1" } } , { "Number":2, "AD":"A", "Value":{ "Value":19.1, "Unit":"1" } } , { "Number":3, "AD":"A", "Value":{ "Value":24.4, "Unit":"1" } } , { "Number":4, "AD":"A", "Value":{ "Value":52.3, "Unit":"1" } } , { "Number":5, "AD":"A", "Value":{ "Value":27.6, "Unit":"1" } } , { "Number":6, "AD":"A", "Value":{ "Value":25.7, "Unit":"1" } } , { "Number":7, "AD":"D", "Value":{ "Value":0, "Unit":"43" } } , { "Number":8, "AD":"A", "Value":{ "Value":4.9, "Unit":"1" } } , { "Number":9, "AD":"A", "Value":{ "Value":42.6, "Unit":"1" } } , { "Number":10, "AD":"A", "Value":{ "Value":28.2, "Unit":"1" } } , { "Number":11, "AD":"D", "Value":{ "Value":0, "Unit":"43" } } , { "Number":12, "AD":"A", "Value":{ "Value":71.5, "Unit":"1" } } , { "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" } } , { "Number":16, "AD":"D", "Value":{ "Value":0, "Unit":"43" } } ], "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":0, "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":1, "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 }

define cmi1 TA_CMI_JSON 192.168.1.42 3 I,O,D
attr cmi1 password admin
attr cmi1 readingNamesInputs 16:Fixwert1 17:Fixwert2 18:Fixwert3 19:Fixwert4
attr cmi1 room Heizung
attr cmi1 username admin
#   CMIURL     192.168.1.42
#   DEF        192.168.1.42 3 I,O,D
#   FUUID      657abb80-f33f-7117-839d-0ef80625adfd5fd2
#   INTERVAL   60
#   NAME       cmi1
#   NODEID     3
#   NODEID_HEX 03
#   NR         64
#   NTFY_ORDER 50-cmi1
#   QUERYPARAM I,O,D
#   STATE      ERROR
#   TYPE       TA_CMI_JSON
#   eventCount 41
#   READINGS:
#     2023-12-14 10:37:26   error           read from http://192.168.1.42:80 timed out
#     2023-12-14 10:37:26   state           ERROR
#
setstate cmi1 ERROR
setstate cmi1 2023-12-14 10:37:26 error read from http://192.168.1.42:80 timed out
setstate cmi1 2023-12-14 10:37:26 state ERROR

User-Agent: FHEM

Accept: application/json


2023.12.14 10:24:26.280 0: TA_CMI_JSON (cmi1) - error while requesting http://192.168.1.42/INCLUDE/api.cgi?jsonnode=3&jsonparam=I,O,D&_=1702545861.26307 - read from http://192.168.1.42:80 timed out
2023.12.14 10:24:26.281 5: Starting notify loop for cmi1, 2 event(s), first is ERROR
2023.12.14 10:24:26.282 5: TA_CMI_JSON (cmi1) - Set: cmi1 ?
2023.12.14 10:24:26.283 5: End notify loop for cmi1
2023.12.14 10:25:26.298 4: TA_CMI_JSON (cmi1) - PerformHttpRequest http://192.168.1.42/INCLUDE/api.cgi?jsonnode=3&jsonparam=I,O,D&_=1702545926.29862
2023.12.14 10:25:26.299 5: HttpUtils url=http://192.168.1.42/INCLUDE/api.cgi?jsonnode=3&jsonparam=I,O,D&_=1702545926.29862 NonBlocking via http
2023.12.14 10:25:26.299 4: IP: 192.168.1.42 -> 192.168.1.42
2023.12.14 10:25:26.308 5: HttpUtils request header:
GET /INCLUDE/api.cgi?jsonnode=3&jsonparam=I,O,D&_=1702545926.29862 HTTP/1.0

Host: 192.168.1.42

Accept-Encoding: gzip,deflate

Authorization: Basic YWRtaW46YWRtaW4=

User-Agent: FHEM

Accept: application/json


2023.12.14 10:25:31.319 0: TA_CMI_JSON (cmi1) - error while requesting http://192.168.1.42/INCLUDE/api.cgi?jsonnode=3&jsonparam=I,O,D&_=1702545926.29862 - read from http://192.168.1.42:80 timed out
2023.12.14 10:25:31.320 5: Starting notify loop for cmi1, 2 event(s), first is ERROR
2023.12.14 10:25:31.320 5: TA_CMI_JSON (cmi1) - Set: cmi1 ?
2023.12.14 10:25:31.321 5: End notify loop for cmi1
2023.12.14 10:26:28.837 4: Connection closed for WEB_192.168.1.61_53150: EOF
2023.12.14 10:26:28.876 4: Connection accepted from WEB_192.168.1.61_53512
2023.12.14 10:26:28.876 5: GET /fhem/FileLog_logWrapper?dev=Logfile&type=text&file=fhem-2023-12.log HTTP/1.1

Host: 192.168.1.61:8083

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8

Accept-Language: de,en-US;q=0.7,en;q=0.3

Accept-Encoding: gzip, deflate

Connection: keep-alive

Referer: http://192.168.1.61:8083/fhem?detail=cmi1

Upgrade-Insecure-Requests: 1
2023.12.14 10:26:28.877 4: WEB_192.168.1.61_53512 GET /fhem/FileLog_logWrapper?dev=Logfile&type=text&file=fhem-2023-12.log; BUFLEN:0
FHEM auf Raspberry mit HM, HMC und AVR Netios.

Beko136

Hallo,

ich kann das hier schon mehrfach beschriebene Problem bestätigen. Mein CMI funktionierte mit TA_CMI_JSON perfekt, bis ich die neueste Firmware V1.41.3 installiert habe. Danach konnte TA_CMI_JSON keine Daten mehr auslesen, zeigte
error read from http://192.168.xxx.xxx:80 timed out
state ERROR
an und im Log stand:
2023.12.18 18:27:09.477 0: TA_CMI_JSON (UVR1611) - error while requesting http://192.168.xxx.xxx/INCLUDE/api.cgi?jsonnode=2&jsonparam=I&_=1702920424.46242 - read from http://192.168.xxx.xxx:80 timed out
Ein Rückstieg auf die vorige Firmware-Version V1.40.1 löste das Problem nach einstellen der richtigen Usernamen und Kennwörter sofort.

Schöne Grüße

Max_Meyer

Hallo,
Ich nutze zwar nicht das o.g. Modul - frage die gleichen Daten mit HTTPMOD ab und bekomme die gleiche Fehlermeldung.
Ich glaube zu wissen wo die Ursache liegt - wenn man in Firefox die 'Main-Url' also den Aufruf der TA-API eingibt kommt seit neuesten dieses Popup.
Du darfst diesen Dateianhang nicht ansehen.
Ich schreibe das hier mal rein - weil das zur Fehlersuche helfen könnte. Selber muss ich mich nach Weihnachten mal hinsetzen und in HTTPMOD die Anmeldung umbauen.
Viele Grüße

Tueddelkopp

Ich kann noch die von mir geänderten Bereiche für das neue API Level beitragen:

my %versions = (
  1 => '1.25.2 2016-12-12',
  2 => '1.26.1 2017-02-24',
  3 => '1.28.0 2017-11-09',
  4 => '1.34.2 2019-04-04',
  5 => '1.35.1 2019-07-02',
  6 => '1.38.1 2021-02-04',
  7 => '1.42.1 2023-12-05'
);

und

my %units = (
   0 => '', 1 => '°C', 2 => 'W/m²', 3 => 'l/h', 4 => 'Sek', 5 => 'Min', 6 => 'l/Imp',
   7 => 'K', 8 => '%', 10 => 'kW', 11 => 'kWh', 12 => 'MWh', 13 => 'V', 14 => 'mA',
  15 => 'Std', 16 => 'Tage', 17 => 'Imp', 18 => 'kΩ', 19 => 'l', 20 => 'km/h',
  21 => 'Hz', 22 => 'l/min', 23 => 'bar', 24 => '', 25 => 'km', 26 => 'm', 27 => 'mm',
  28 => 'm³', 35 => 'l/d', 36 => 'm/s', 37 => 'm³/min', 38 => 'm³/h', 39 => 'm³/d',
  40 => 'mm/min', 41 => 'mm/h', 42 => 'mm/d', 43 => 'Aus/Ein', 44 => 'Nein/Ja',
  46 => '°C', 50 => '€', 51 => '$', 52 => 'g/m³', 53 => '', 54 => '°', 56 => '°',
  57 => 'Sek', 58 => '', 59 => '%', 60 => 'Uhr', 63 => 'A', 65 => 'mbar', 66 => 'Pa',
  67 => 'ppm', 68 => '', 69 => 'W', 70 => 't', 71 => 'kg', 72 => 'g', 73 => 'cm',
  74 => 'K', 75 => 'lx', 76 => 'Bg/m³'
);

Für das timeout Problem habe ich aber keine Lösung.

hsteinbo

#124
Es liegt an der HTTP Version.
HttpUtils.pm scheint standardmäßig HTTP1.0 zu verwenden.

HTTP1.0 => Timeout
HTTP1.1 => es funktioniert

Die HTTP Version lässt sich wohl an HttpUtils übergeben mit dem Parameter httpversion.

Ich hab es für mich in 72_TA_CMI_JSON.pm geändert:
253,254c253
<                     callback   => \&ParseHttpResponse,
<                     httpversion   => "1.1"
---
>                     callback   => \&ParseHttpResponse
Edit: der diff Output oben ist so halb nützlich, weil ich die Reihenfolge von alter und neuer Version vertauscht hatte. Sorry dafür!

Tueddelkopp


hsteinbo

ich hab mal etwas weiter dilettiert und ein Patchfile für 72_TA_CMI_JSON.pm mit den Änderungen von Rolf (Tueddelkopp) und mir erzeugt.
Da ich meistens nicht weiß, was ich tue, rate ich zur Vorsicht und Backups :-)
Ich weiß nicht, ob die Änderungen eine gute Idee sind, wenn das CMI noch die ältere Firmware hat...Wahrscheinlich eher nicht.

92c92,93
<  6 => '1.38.1 2021-02-04'
---
>  6 => '1.38.1 2021-02-04',
>  7 => '1.42.1 2023-12-05'
104c105,106
<  67 => 'ppm'
---
>  67 => 'ppm', 68 => '', 69 => 'W', 70 => 't', 71 => 'kg', 72 => 'g', 73 => 'cm',
>  74 => 'K', 75 => 'lx', 76 => 'Bg/m³'
253c255,256
<                    callback  => \&ParseHttpResponse
---
>                    callback  => \&ParseHttpResponse,
>                    httpversion  => "1.1"
479c482,483
<                    callback  => \&FixwertChangeRequest_Callback
---
>                    callback  => \&FixwertChangeRequest_Callback,
>                    httpversion => "1.1"
536c540,541
<                    callback  => \&ParseOutputStateResponse
---
>                    callback  => \&ParseOutputStateResponse,
>                    httpversion => "1.1"

Tueddelkopp

Ich habe noch ein CMI mit Firmware 1.41.3 im Zugriff, also einer Firmware mit der die alte Version noch funktionierte. Ich habe es mit dem Patch dort getestet, es funktioniert dort auch mit dem Patch noch.  :)

Beko136

Hallo,

ich würde gerne fragen, ob es ein offizielles Update über die FHEM-Update-Funktion geben wird.

Danke und sG

cpl_ir

Zitat von: hsteinbo am 27 Dezember 2023, 17:43:20ich hab mal etwas weiter dilettiert und ein Patchfile für 72_TA_CMI_JSON.pm mit den Änderungen von Rolf (Tueddelkopp) und mir erzeugt.
Da ich meistens nicht weiß, was ich tue, rate ich zur Vorsicht und Backups :-)
Ich weiß nicht, ob die Änderungen eine gute Idee sind, wenn das CMI noch die ältere Firmware hat...Wahrscheinlich eher nicht.

92c92,93
<  6 => '1.38.1 2021-02-04'
---
>  6 => '1.38.1 2021-02-04',
>  7 => '1.42.1 2023-12-05'
104c105,106
<  67 => 'ppm'
---
>  67 => 'ppm', 68 => '', 69 => 'W', 70 => 't', 71 => 'kg', 72 => 'g', 73 => 'cm',
>  74 => 'K', 75 => 'lx', 76 => 'Bg/m³'
253c255,256
<                    callback  => \&ParseHttpResponse
---
>                    callback  => \&ParseHttpResponse,
>                    httpversion  => "1.1"
479c482,483
<                    callback  => \&FixwertChangeRequest_Callback
---
>                    callback  => \&FixwertChangeRequest_Callback,
>                    httpversion => "1.1"
536c540,541
<                    callback  => \&ParseOutputStateResponse
---
>                    callback  => \&ParseOutputStateResponse,
>                    httpversion => "1.1"


Nach Update auf CMI 1.42.1 am 5.1.24 habe ich auch keine Daten mehr bekommen. Mit den Änderungen läuft es jetzt wieder.


Vielen Dank an alle, die zur schnellen Lösung beigetragen haben - das ist das schöne an fhem.

Grüße

SR
RaspberryPi3,HMLAN,Homematic,Fritz!Box 7390,ESP8266, UVR1611

Miche01

Hi Fhem User,
hab ein neues TA-CMI mit Firmware 1.43.2 und bekomme dieses auch nicht eingebunden. Eure Code-Anpassungen hab ich durchgeführt. Leider bekomm ich immer die Fehlermeldung
"Keine Route zum Zielrechner (113)". Über den Browser bekomm ich sofort eine Verbindung und als Antwort den JSON String.

Könnt ihr mir helfen?

Gruß M

Tueddelkopp

Keine Route zum Zielrechner bedeutet er kann die IP vom CMI nicht erreichen. Sind CMI und FHEM im gleichen IP Netz? Kannst du von der Konsole des Fhem Servers aus das CMI per Ping erreichen?