Hallo,
das Modul für das CMI der Firma Technische Alternative ist nun offizieller Bestandteil des SVN.
72_TA_CMI_JSON
Danke an alle Tester und Feedback Geber!
Bisherige Diskussionen zu dem Thema gab es hier https://forum.fhem.de/index.php/topic,41439.0.html und hier https://forum.fhem.de/index.php/topic,13534.0.html.
Allfällige Fragen sollten im Wiki beantwortet sein: https://wiki.fhem.de/wiki/TA_CMI_UVR16x2_UVR1611
Alle weiteren Fragen zum Modul künftig bitte hier rein.
Danke!
schöne Grüße
Martin
Hallo Martin,
vielen Dank für das Modul, funktioniert sehr gut!
Ich habe eine UVR16x2 als Node 2, die über die Query-Parameter La und Ld (Logging Analog und Digital) deutlich mehr Daten bereitstellt.
Gemäss der von dir genutzten API-Doku von TA habe ich mal einen direkten Aufruf jeweils für La und Ld gestartet:
http://ip/INCLUDE/api.cgi?jsonnode=2&jsonparam=La
{ "Header":{ "Version":3, "Device":"87", "Timestamp":1541181091 }, "Data":{ "Logging Analog":[
{ "Number":1, "AD":"A", "Value":{ "Value":21.8, "Unit":"1" } },
{ "Number":2, "AD":"A", "Value":{ "Value":24.6, "Unit":"1" } },
{ "Number":3, "AD":"A", "Value":{ "Value":28.5, "Unit":"1" } },
{ "Number":4, "AD":"A", "Value":{ "Value":24.6, "Unit":"1" } },
{ "Number":5, "AD":"A", "Value":{ "Value":30.2, "Unit":"1" } },
{ "Number":6, "AD":"A", "Value":{ "Value":11.5, "Unit":"1" } },
{ "Number":7, "AD":"A", "Value":{ "Value":42.1, "Unit":"1" } },
{ "Number":8, "AD":"A", "Value":{ "Value":229.7, "Unit":"1" } },
{ "Number":9, "AD":"A", "Value":{ "Value":55.2, "Unit":"1" } },
{ "Number":10, "AD":"A", "Value":{ "Value":30.6, "Unit":"1" } },
{ "Number":11, "AD":"A", "Value":{ "Value":20.8, "Unit":"46", "RAS":"0" } },
{ "Number":12, "AD":"A", "Value":{ "Value":29.3, "Unit":"1" } },
{ "Number":13, "AD":"A", "Value":{ "Value":31.9, "Unit":"1" } },
{ "Number":14, "AD":"A", "Value":{ "Value":32.0, "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":0, "Unit":"0" } },
{ "Number":21, "AD":"A", "Value":{ "Value":0.00, "Unit":"10" } },
{ "Number":22, "AD":"A", "Value":{ "Value":2513.6, "Unit":"11" } },
{ "Number":23, "AD":"A", "Value":{ "Value":0.00, "Unit":"10" } },
{ "Number":24, "AD":"A", "Value":{ "Value":7729.2, "Unit":"11" } },
{ "Number":25, "AD":"A", "Value":{ "Value":0.22, "Unit":"13" } },
{ "Number":26, "AD":"D", "Value":{ "Value":0, "Unit":"43" } },
{ "Number":27, "AD":"A", "Value":{ "Value":39.4, "Unit":"1" } },
{ "Number":28, "AD":"A", "Value":{ "Value":29.0, "Unit":"1" } },
{ "Number":29, "AD":"A", "Value":{ "Value":35.9, "Unit":"1" } }
]}, "Status":"OK", "Status code":0 }
http://ip/INCLUDE/api.cgi?jsonnode=2&jsonparam=Ld
{ "Header":{ "Version":3, "Device":"87", "Timestamp":1541188144 }, "Data":{ "Logging Digital":[
{ "Number":1, "AD":"D", "Value":{ "Value":0, "Unit":"43" } },
{ "Number":2, "AD":"D", "Value":{ "Value":0, "Unit":"43" } },
{ "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":0, "Unit":"43" } },
{ "Number":14, "AD":"D", "Value":{ "Value":0, "Unit":"43" } },
{ "Number":15, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }
]}, "Status":"OK", "Status code":0 }
Es müsste dafür also die Readings readingNamesLa readingnamesLd geben - kannst du das einbauen? Ich teste auch sehr gerne!
Nur eine Nice-to-have-Frage: Alle Werte schicken auch ihre Maßeinheit als Unit-Kodierung mit die in der TA-Doku aufgeschlüsselt sind - kann man das auch irgendwie in dem Modul auswerten? Das ist sicher komplexer da für jeden Schlüssel zwei Werte Value und UoM zurückgeliefert werden müssen - ist das machbar?
Nochmals vielen Dank für deine Arbeit!
Beste Grüsse, Lutz
Hi Lutz
danke für dein Feedback!
Zitat von: GrazPi am 02 November 2018, 22:38:09
Es müsste dafür also die Readings readingNamesLa readingnamesLd geben - kannst du das einbauen? Ich teste auch sehr gerne!
Ja, das werd ich machen.
Zitat von: GrazPi am 02 November 2018, 22:38:09
Nur eine Nice-to-have-Frage: Alle Werte schicken auch ihre Maßeinheit als Unit-Kodierung mit die in der TA-Doku aufgeschlüsselt sind - kann man das auch irgendwie in dem Modul auswerten? Das ist sicher komplexer da für jeden Schlüssel zwei Werte Value und UoM zurückgeliefert werden müssen - ist das machbar?
Ich hab schon daran gedacht, wollte aber nix bauen was keiner brauchen kann. Ist somit widerlegt. :)
Ich kann ein zusätzliches Reading mit der Einheit machen (zb Reading_Name_Unit).
Und noch eine vollständige Variante zb in Reading_Name_Pretty.
Und damit das niemand stört, der es gerne aufgeräumt hat, beides noch per Attribut konfigurierbar.
Sollte sich einfach machen lassen.
Schöne Grüße
Martin
Hallo Lutz,
ich hab auf die Schnelle jetzt mal die readingNames Attribute für Logging Analog und Digital reingegeben.
Bitte mal von GitHub holen und testen, ob das so funktioniert.
https://raw.githubusercontent.com/delMar43/FHEM/master/72_TA_CMI_JSON.pm
Wenn ich etwas mehr Zeit habe, werde ich auch noch das mit den Einheiten einbauen.
Außerdem hab ich gesehen, dass gut dokumentiert ist, welche Werte auf welchen Geräten verfügbar sind (es kam in einem der vorigen Threads die Frage auf , warum auf einer 1611 keine DL-Bus Werte kommen --> weil das laut Doku auch nicht unterstützt ist).
Falls also jemand Readings konfiguriert, die auf diesem Gerät nicht unterstützt werden, kann ich eine entsprechende Log Message ausgeben.
Benötigst du RAS auch? (nur für Readings mit Unit 46 verfügbar)
Den Wert würde ich dann als Reading_Name_RAS ausgeben.
Wenn jemand weitere Werte, zB für die UVR1611 benötigt, mach ich das gern. Ich brauche aber die JSON Struktur, damit ich weiß, unter welchem JSON-Knoten die Werte abgelegt sind (zB "Logging Analog").
Danke hier für die gute Vorarbeit, Lutz.
schöne Grüße
Martin
Hallo Martin,
vielen Dank für deine schnelle Reaktion! Ich habe mir das Modul direkt von deinem Link heruntergeladen und konfiguriert - es zeigt aber keine Parameter an.
Das Modul zeigt $Id: 72_TA_CMI_JSON.pm 17662 2018-11-02 14:40:28Z delmar $ - ist das das richtige - da von gestern?
Die von mir gestern eingefügten direkten API-Abfragen hatte ich vorher mit einigen <CRLF> besser lesbar gemacht, raw sehen sie so aus (Nur falls das zur Formatverwirrung geführt hat):
http://ip/INCLUDE/api.cgi?jsonnode=2&jsonparam=La
{ "Header":{ "Version":3, "Device":"87", "Timestamp":1541266759 }, "Data":{ "Logging Analog":[ { "Number":1, "AD":"A", "Value":{ "Value":18.4, "Unit":"1" } }, { "Number":2, "AD":"A", "Value":{ "Value":23.2, "Unit":"1" } }, { "Number":3, "AD":"A", "Value":{ "Value":26.2, "Unit":"1" } }, { "Number":4, "AD":"A", "Value":{ "Value":23.6, "Unit":"1" } }, { "Number":5, "AD":"A", "Value":{ "Value":28.4, "Unit":"1" } }, { "Number":6, "AD":"A", "Value":{ "Value":9.8, "Unit":"1" } }, { "Number":7, "AD":"A", "Value":{ "Value":42.1, "Unit":"1" } }, { "Number":8, "AD":"A", "Value":{ "Value":227.0, "Unit":"1" } }, { "Number":9, "AD":"A", "Value":{ "Value":55.1, "Unit":"1" } }, { "Number":10, "AD":"A", "Value":{ "Value":29.3, "Unit":"1" } }, { "Number":11, "AD":"A", "Value":{ "Value":20.8, "Unit":"46", "RAS":"0" } }, { "Number":12, "AD":"A", "Value":{ "Value":30.6, "Unit":"1" } }, { "Number":13, "AD":"A", "Value":{ "Value":30.5, "Unit":"1" } }, { "Number":14, "AD":"A", "Value":{ "Value":30.4, "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":0, "Unit":"0" } }, { "Number":21, "AD":"A", "Value":{ "Value":0.00, "Unit":"10" } }, { "Number":22, "AD":"A", "Value":{ "Value":2514.2, "Unit":"11" } }, { "Number":23, "AD":"A", "Value":{ "Value":0.00, "Unit":"10" } }, { "Number":24, "AD":"A", "Value":{ "Value":7729.7, "Unit":"11" } }, { "Number":25, "AD":"A", "Value":{ "Value":0.22, "Unit":"13" } }, { "Number":26, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":27, "AD":"A", "Value":{ "Value":41.6, "Unit":"1" } }, { "Number":28, "AD":"A", "Value":{ "Value":29.8, "Unit":"1" } }, { "Number":29, "AD":"A", "Value":{ "Value":38.3, "Unit":"1" } }]}, "Status":"OK", "Status code":0 }
http://groeschner/INCLUDE/api.cgi?jsonnode=2&jsonparam=Ld
{ "Header":{ "Version":3, "Device":"87", "Timestamp":1541267152 }, "Data":{ "Logging Digital":[ { "Number":1, "AD":"D", "Value":{ "Value":0, "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":0, "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":"D", "Value":{ "Value":1, "Unit":"43" } }, { "Number":14, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":15, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }]}, "Status":"OK", "Status code":0 }
Das RAS ("Raumtemperaturabhängige Steuerung") eigentlich die Stellung des Drehschalters am der kleinen Bedieneinheit an - die Info kann sehr helfen falls dort jemand das ganze Haus auf "Frostschutz" abgesenkt hat ;-)
Die Maßeinheiten wären gut zu haben - um die Werte sicher korrekt zu verstehen und auch um zu erkennen ob man tatsächlich im Wert 9 Einte Temperatur und keine Drehzahl liest.
Kannst du nochmal schauen was genau unter https://raw.githubusercontent.com/delMar43/FHEM/master/72_TA_CMI_JSON.pm liegt?
Vielen Dank,
Lutz
Hallo Martin,
sehe gerade daß das Modul von FHEM nicht geladen wird. Nach dem shutown restart zeigte das Logfile
PERL WARNING: Use of uninitialized value $readingValue in concatenation (.) or string at ./FHEM/72_TA_CMI_JSON.pm line 235.
Ein "reload 72_TA_CMI_JSON" zeigt:
ZitatToo many arguments for main::TA_CMI_JSON_extractReadings at ./FHEM/72_TA_CMI_JSON.pm line 160, near "'Inputs') "
Too many arguments for main::TA_CMI_JSON_extractReadings at ./FHEM/72_TA_CMI_JSON.pm line 161, near "'Outputs') "
Too many arguments for main::TA_CMI_JSON_extractReadings at ./FHEM/72_TA_CMI_JSON.pm line 162, near "'DL-Bus') "
Too many arguments for main::TA_CMI_JSON_extractReadings at ./FHEM/72_TA_CMI_JSON.pm line 163, near "'Logging Analog') "
Too many arguments for main::TA_CMI_JSON_extractReadings at ./FHEM/72_TA_CMI_JSON.pm line 164, near "'Logging Digital') "
Ich hatte zur Kontrolle noch ein Input-Reading T_KOLL konfiguriert, das funktioniert seltsamerweise
Hier das Device-Listing:
Internals:
CAN_DEVICE UVR16x2
CMIURL <ip>
CMI_API_VERSION 1.28.0 2017-11-09
DEF <ip> 2 La,Ld,I1
INTERVAL 120
NAME cmitest
NODEID 2
NR 67
QUERYPARAM La,Ld,I1
STATE OK
TYPE TA_CMI_JSON
OLDREADINGS:
READINGS:
2018-11-03 18:39:01 T_KOLL 16.3
2018-11-03 18:36:59 state OK
Attributes:
interval 120
password xxxxxxx
readingNamesInputs 1:T_KOLL
readingNamesLoggingAnalog 1:T_Kollektor 2:T_NachSolWTausch 3:T_600_Unten 4:T_SolPrimNachWT_Zu100 5:T_100Unten 6:T_Aussen 7:T_VomBrenner 8:T_ZumBrenner 9:T_600_Oben 10:T_600_Mitte 11:T_WoZi 12:T_ZurFBHzg 13:T_NachHzg 14:T_NachHzgRLAnheb 15:Proz_PumpeSolPrim 16:Proz_PumpeSolSekndr 17:AnfordBrennerHzg 18:WZ-Tag100 19:WZ-Gesamt100 20:WZ_Tag600 21:WZ_Gesamt600 22:AnfordBrenner_WW 23:T_ZuHeizkoerper 24:T_ZuFBHzg 25:HzgVeriegelung
readingNamesLoggingDigital 1:O_Brenner 2:PumpeFBHzg 3:Ventil_Zum100 4:UmschVentil_Hzg_WW 5:AnfordKessel 6:Misch_HzgOGAuf 7:Misch_HzgOGAb 8:Misch_RLAnhebAuf 9:Misch_RLAnhebAb 10:Wartung 11:OAnfordBrenner 12:Schornsteinf
room Testbude
username yyyyyyy
Beste Grüße,
Lutz
ah sorry.
perl ist noch nicht so meine stärke.
ich seh was das problem ist. werde versuchen heute noch ein update einzuspielen
gruß
Martin
sub TA_CMI_JSON_extractDeviceName($) {
my ($input) = @_;
my $result;
if ($input eq '80') {
$result = 'UVR1611';
} elsif ($input eq '87') {
$result = 'UVR16x2';
} elsif ($input eq '88') {
$result = 'RSM610';
} elsif ($input eq '89') {
$result = 'CAN-I/O45';
} elsif ($input eq '8B') {
$result = 'CAN-EZ2';
} elsif ($input eq '8C') {
$result = 'CAN-MTx2';
} elsif ($input eq '8D') {
$result = 'CAN-BC2';
} else {
$result = "Unknown: $input";
}
return $result;
}
sub TA_CMI_JSON_extractVersion($) {
my ($input) = @_;
my $result;
if ($input == 1) {
$result = '1.25.2 2016-12-12';
} elsif ($input == 2) {
$result = '1.26.1 2017-02-24';
} elsif ($input == 3) {
$result = '1.28.0 2017-11-09';
} else {
$result = "unknown: $input";
}
return $result;
}
Übersichtlicher und flexibler ;)
my %deviceNames = (
'80' => 'UVR1611',
'87' => 'UVR16x2',
'88' => 'RSM610',
'89' => 'CAN-I/O45',
'8B' => 'CAN-EZ2',
'8C' => 'CAN-MTx2',
'8D' => 'CAN-BC2'
);
my %versions = (
1 => '1.25.2 2016-12-12',
2 => '1.26.1 2017-02-24',
3 => '1.28.0 2017-11-09'
);
sub TA_CMI_JSON_extractDeviceName($) {
my ($input) = @_;
return (defined($deviceNames{$input}) ? $deviceNames{$input} : 'unknown: ' . $input);
}
sub TA_CMI_JSON_extractVersion($) {
my ($input) = @_;
return (defined($versions{$input}) ? $versions{$input} : 'unknown: ' . $input);
}
Grüße
Zitat von: CoolTux am 03 November 2018, 19:40:57
Übersichtlicher und flexibler ;)
Danke CoolTux!
Ich mach seit 15 Jahren Java und habe kiloweise Java-code gesehen, der von C Entwicklern geschrieben wurde. Genauso muss sich mein Perl-Code für euch anfühlen :-)
Es sind aber genau Hinweise wie dieser, die diese feinen Unterschiede herausarbeiten. Danke, werd ich beim nächsten SVN-update berücksichtigen.
Zitat von: GrazPi am 03 November 2018, 18:42:20
Ein "reload 72_TA_CMI_JSON" zeigt:
Ich mach immer ein komplettes restart von FHEM, wenn ich ein neues Modul hinzufüge.
Ist vielleicht auf einem Produktiven System nicht immer so lustig, beseitigt aber so manchen Zweifel
A propos Zweifel: ich hab das bei mir Lokal natürlich auch getestet und hab die Meldung von wegen "too many arguments" nicht bekommen. Sonst hätte ich dir diesen Schrott nicht zugemutet.
Wer weiß, woran das hängt? Perl version?
Zitat von: GrazPi am 03 November 2018, 18:42:20
Das Modul zeigt $Id: 72_TA_CMI_JSON.pm 17662 2018-11-02 14:40:28Z delmar $ - ist das das richtige - da von gestern?
Diese ID hängt am SVN commit. Wir sind hier aber im Git-Niemandsland, deshalb ist das kein verlässlicher Indikator. Am verlässlichsten ist tatsächlich der Code-vergleich mit Git im Browser.
In diesem Fall muss zB Logging_Analog im Code vorkommen. Dann bist du up-to-date.
Zitat von: GrazPi am 03 November 2018, 18:42:20
Das RAS ("Raumtemperaturabhängige Steuerung") eigentlich die Stellung des Drehschalters am der kleinen Bedieneinheit an - die Info kann sehr helfen falls dort jemand das ganze Haus auf "Frostschutz" abgesenkt hat ;-)
Alles klar, dann kommt das mit rein.
Zitat von: GrazPi am 03 November 2018, 18:42:20
Die Maßeinheiten wären gut zu haben - um die Werte sicher korrekt zu verstehen und auch um zu erkennen ob man tatsächlich im Wert 9 Einte Temperatur und keine Drehzahl liest.
Ja, kommt auch rein. Schritt 1 für mich ist aber, dass du überhaupt mal Werte rauskriegst.
Ich arbeite hier an den Updates nur 30 Minuten am Stück (1:0 für Perl vs Java :-) ), da muss ich haushalten mit den Features pro Update
Lutz, ich hatte hier noch so manchen Fehler. Du hattest bestimmt die letzte Version (zumindest wenn readingNamesLoggingAnalog drin war). Bitte nochmal Update von Git holen. Pfad sollte gleich bleiben (die letzte Version vom Master).
schöne Grüße
Martin
Zitat von: delmar am 03 November 2018, 20:50:59
Danke CoolTux!
Ich mach seit 15 Jahren Java und habe kiloweise Java-code gesehen, der von C Entwicklern geschrieben wurde. Genauso muss sich mein Perl-Code für euch anfühlen :-)
Es sind aber genau Hinweise wie dieser, die diese feinen Unterschiede herausarbeiten. Danke, werd ich beim nächsten SVN-update berücksichtigen.
Eigentlich ist es ja fast egal wie so lange es klappt, es stach mir nur sehr ins Auge und wollte kurz zeigen das es kleiner geht. :)
Zitat von: delmar am 03 November 2018, 20:50:59
Ich mach immer ein komplettes restart von FHEM, wenn ich ein neues Modul hinzufüge.
Ist vielleicht auf einem Produktiven System nicht immer so lustig, beseitigt aber so manchen Zweifel
A propos Zweifel: ich hab das bei mir Lokal natürlich auch getestet und hab die Meldung von wegen "too many arguments" nicht bekommen. Sonst hätte ich dir diesen Schrott nicht zugemutet.
Wer weiß, woran das hängt? Perl version?
Beider erwähnten Routine hast Du die Anzahl der Argumente für die Übergabe oder den Aufruf geändert. Das ist nicht schlimm so lange man alles komplett neu läd, aber genau das hat der User nicht gemacht.
Es ist also kein Fehler bei Dir oder Deinem Code sondern der User darf kein reload machen sondern muss einen kompletten FHEM neustart machen.
Hallo Martin,
danke, die neue Version funktioniert und zeigt nun alle Loggingwerte an!
Habe natürlich einen richtigen FHEM-Neustart gemacht 8)
Schönes Rest-WE!
Zitat von: GrazPi am 03 November 2018, 21:13:36
Hallo Martin,
danke, die neue Version funktioniert und zeigt nun alle Loggingwerte an!
Habe natürlich einen richtigen FHEM-Neustart gemacht 8)
Schönes Rest-WE!
Super, freut mich dass es läuft (der fehlende Underscore wars)
Dir auch ein schönes Wochenende und happy charting :)
So, auf GitHub nochmal eine neue Version zum Testen.
Neuerungen: eigenlich alles, was vorher so besprochen wurde.
* Attribute für includeUnitReadings und includePrettyReadings. Per default beide deaktiviert
* RAS Werte werden nun auch gelesen und als _RAS geschrieben. Konnte ich leider nicht testen - ich hab keine. (ich sollte das mal so umbauen, dass man auch statische JSONs als Datenquelle verwenden kann)
* code-improvements von CoolTux
Ich glaub, das wars.
Bei mir läufts soweit, sobald ich ein- oder zwei positive Rückmeldungen habe (oder in den nächsten Tagen bei mir selber nix schief geht), werd ichs auch ins SVN geben.
schöne Grüße
Martin
Hallo Martin
Aktuell versuchen wir bei FHEM an zu fangen mit package zu arbeiten. Leider gibt es hier noch nichts zu im Wiki.
Package ist das selbe wie Klassen. Halt ein Namensraum. Eigentlich sehr einfach unter Perl.
https://forum.fhem.de/index.php/topic,92007.msg845225.html#msg845225
Hier findest du ein kleines Beispiel und einen weiterführenden Link zur Diskussion. Würde mich total freuen wenn Du Lust hast das bei Deinem Modul um zu setzen. Muss ja auch nicht gleich heut oder morgen sein
Grüße
Leon
Zitat von: CoolTux am 03 November 2018, 23:24:36
Aktuell versuchen wir bei FHEM an zu fangen mit package zu arbeiten. Leider gibt es hier noch nichts zu im Wiki.
Package ist das selbe wie Klassen. Halt ein Namensraum. Eigentlich sehr einfach unter Perl.
https://forum.fhem.de/index.php/topic,92007.msg845225.html#msg845225
Hier findest du ein kleines Beispiel und einen weiterführenden Link zur Diskussion. Würde mich total freuen wenn Du Lust hast das bei Deinem Modul um zu setzen. Muss ja auch nicht gleich heut oder morgen sein
Sehr gern.
Ich hab jetzt mal etwas herum experimentiert und hab auch lokal eine lauffähige Version, die ein eigenes Package nutzt.
Dazu noch einige Fragen:
Wenn ich im Package des Moduls ein 'use HttpUtils' habe, muss ich zB HttpUtils_NonblockingGet trotzdem mit Referenz aufs Package aufrufen, was in 'main::HttpUtils_NonblockingGet' resultiert. Muss das tatsächlich so sein, oder mach ich noch was falsch?
Die Imports auf fhem.pl sind natürlich nötig, war aber in meinem Fall auch ein ziemliches Trial-and-error, bis ich endlich alle durch hatte. Gibts da einen sichereren Ansatz? ZB eine IDE, die diese Imports automatisch ermittelt und schreibt. (Träumen wird man ja wohl dürfen, hihi)
Und - rein interesse halber - haben die Packages auch performancetechnisch eine Auswirkung in FHEM (zB bessere Laufzeitoptimierung von Speicher oder was weiß ich), oder dient es im großen und ganzen "nur" dazu, dass sich die einzelnen Module gegenseitig nicht auf die Füße treten?
Ahja: muss ich 'use POSIX' machen? Was macht das eigentlich? (Doku hab ich versucht zu lesen, aber nicht verstanden)
Irgendwo hab ich auch gelesen, dass man das in dieser Form nicht machen soll, sondern eher 'use POSIX ()'.
Danke!
Schöne Grüße
Martin
Das POSIX Modul bietet Perlschnittstellen zum IEEE-Standard 1003.1
Sie hält Funktionen bereit für Standard ein und Ausgabe Kanäle des Betriebssystems oder für Signalhändling
Ob Du Posix nun brauchst kann ich Dir nicht sagen. Da musst Du mal schauen.
Selbst nach einem use HttpUtils muss man die Funktionen welche man verwenden möchte in GP_Import einfügen.
Performancegründe gibt es für package nicht soweit mir bekannt. Es hat mehr den Zweck der Namensraumabgrenzung, so das man bei selbigen Funktionsnamen die Funktion des einen oder anderen Modules nicht überschrieben wird.
Wenn man Opjektorientiert Programmieren möchte mit Perl muß man eh mit Packages arbeiten.
Aktuell versuche ich eine Möglichkeit zu schaffen das man auf die FHEM Funktionen aus fhem.pl ohne das GP_Import zugreifen kann. Hierfür werde ich ein object erstellen lassen welches dann die Möglichkeit eines Funktionsaufrufes über das Object bietet.
Zitat von: CoolTux am 04 November 2018, 13:54:24
Das POSIX Modul bietet Perlschnittstellen zum IEEE-Standard 1003.1
Sie hält Funktionen bereit für Standard ein und Ausgabe Kanäle des Betriebssystems oder für Signalhändling
Ob Du Posix nun brauchst kann ich Dir nicht sagen. Da musst Du mal schauen.
Alles klar, für die Packages brauch ich Posix also nicht. Mehr wollte ich garnicht wissen, danke.
Zitat von: CoolTux am 04 November 2018, 13:54:24
Selbst nach einem use HttpUtils muss man die Funktionen welche man verwenden möchte in GP_Import einfügen.
Ok, ich habs vermutet. Weil HttpUtils selber auch im 'main' Package liegt, richtig?
Gibts hier auch Bestrebungen, das zu ändern? DevIo wäre dann wohl der nächste wichtige Kandidat...
Zitat von: CoolTux am 04 November 2018, 13:54:24
Aktuell versuche ich eine Möglichkeit zu schaffen das man auf die FHEM Funktionen aus fhem.pl ohne das GP_Import zugreifen kann. Hierfür werde ich ein object erstellen lassen welches dann die Möglichkeit eines Funktionsaufrufes über das Object bietet.
Ja, das wäre spitze. Ich würde viel lieber einfach zB fhem.readingsBulkUpdate(...) aufrufen (oder fhem::readingsBulkUpdate(...)), als alle diese Imports machen zu müssen.
Wenns für dich ok ist, würde ich lieber abwarten, bis diese neuen Strukturen verfügbar sind. Dann werde ich den Code sehr gerne umbauen. Derzeit hab ich noch nicht das Gefühl, dass die Packages etwas zur wartbarkeit oder lesbarkeit des Codes beitragen - weil noch sehr viel Boilerplate.
Halt mich hier aber bitte unbedingt auf dem Laufenden
Danke!
Schöne Grüße
Martin
Hallo Martin,
vielen Dank, die _unit und _Pretty-Readings funktionieren!
Einzig das _RAS kommt noch nicht durch, es wird als Nr. 11 vom Logging Analog mitgeschickt { "Number":11, "AD":"A", "Value":{ "Value":20.9, "Unit":"46", "RAS":"0" } },
aber im entsprechenden Reading (Hier in allen Varianten) erscheint es noch nicht:
T_WoZi 20.9 2018-11-04 20:39:56
T_WoZi_Pretty 20.9 °C 2018-11-04 20:39:56
T_WoZi_Unit °C 2018-11-04 18:07:54
Vielen Dank für deine klasse Arbeit,
Lutz
Zitat von: GrazPi am 04 November 2018, 21:34:49
Einzig das _RAS kommt noch nicht durch
Potentielles update auf GitHub, bitte bei Gelegenheit mal ausprobieren
Danke, nun ist auch _RAS verfügbar!
T_WoZi 21.0 2018-11-04 21:37:42
T_WoZi_Pretty 21.0 °C 2018-11-04 21:37:42
T_WoZi_RAS Time/auto 2018-11-04 22:45:22
T_WoZi_Unit °C 2018-11-04 18:07:54
Zitat von: GrazPi am 04 November 2018, 22:50:23
Danke, nun ist auch _RAS verfügbar!
T_WoZi 21.0 2018-11-04 21:37:42
T_WoZi_Pretty 21.0 °C 2018-11-04 21:37:42
T_WoZi_RAS Time/auto 2018-11-04 22:45:22
T_WoZi_Unit °C 2018-11-04 18:07:54
Cool, danke.
Der tatsächliche RAS-Wert (0 in diesem Fall) wäre für Auswertungen (notify, doif) wahrscheinlich sinnvoller, als der Text - welcher wiederum was fürs Auge bietet.
Ich tendiere dazu, _RAS für den tatsächlichen Wert zu verwenden, und ebenfalls ein _RAS_Pretty für den Text einzuführen.
Deine Meinung?
schöne grüße
Martin
Hallo Martin,
gute Idee! Dann wären Alarme wie "Heizung ist aus UND Wohnzimmer hat nur noch 16 °C" sehr leicht realisierbar.
Der/Das RAS (Bild: https://www.ta.co.at/fileadmin/_processed_/4/b/csm_RASPT_34d07cbc27.png (https://www.ta.co.at/fileadmin/_processed_/4/b/csm_RASPT_34d07cbc27.png)) ist übrigens nur ein verstellbarer Temperaturfühler mit zusätzlichem Schiebeschalter - deshalb kommen nur bei diesem Sensor zwei Werte, Temperatur und Schalterposition.
Beste Grüße,
Lutz
Hallo Lutz,
Zitat von: GrazPi am 05 November 2018, 16:15:42
gute Idee! Dann wären Alarme wie "Heizung ist aus UND Wohnzimmer hat nur noch 16 °C" sehr leicht realisierbar.
Alles klar, Update liegt auf GitHub zum Ausprobieren.
Was bisher _RAS war, ist jetzt _RAS_Pretty und wird dem Namen entsprechend auch nur dann geschrieben, wenn includePrettyReadings aktiviert ist.
Unter _RAS wird nun der Wert von 0-3 geschrieben, wie in der Doku angegeben.
Wenn du das erfolgreich getestet hast, geb ich's ins SVN.
Danke, dass du so ein williges Test-Opfer bist :-)
Und danke für das Bild vom RAS, das Teil kannte ich tatsächlich noch nicht.
schöne Grüße
Martin
Hallo Martin,
kann leider erst am Freitag wieder testen.
Vielen Dank und beste Grüße,
Lutz
Hallo Martin
Super Modul von dir, vielen Dank für deine Arbeit daran. Ich habe soeben mein CMI und UVR16x2 innerhalb einer halben Stunde eingebunden. Da ich vorläufig keine Schaltbefehle ausführen will genügt mir das absolut so.
Nochmals vielen Dank
Gruss Andi
Zitat von: Haus-Andi am 19 November 2018, 21:40:25
Hallo Martin
Super Modul von dir, vielen Dank für deine Arbeit daran. Ich habe soeben mein CMI und UVR16x2 innerhalb einer halben Stunde eingebunden. Da ich vorläufig keine Schaltbefehle ausführen will genügt mir das absolut so.
Nochmals vielen Dank
Gruss Andi
Hallo Andi
Freut mich, dass das so problemlos lief
Danke für das Feedback
Schöne Grüße
Martin
Hallo Martin,
vielen Dank für das Modul und die tolle Arbeit! Habe bisher viel Zeit gebraucht um mittels Schema und HTTPMOD an die Werte der UVR1611 heran zu kommen. Mit deinem Modul war das eine Angelegenheit von einigen Minuten. Super!
Noch eine Frage: Die 1611 hat ja 16 Eingänge und Ausgänge. Ich habe alle gemäß deiner Anleitung definiert. Als readings sehe ich aber die Ausgänge 14, 15, 16 nicht. Hat das einen bestimmten Grund?
Nochmals Danke!
LG Michael
Hallo Martin
Also das mit den Ausgängen funktioniert bei mir nicht. Mein Heizungsmonteur hat die beiden Ausgänge 3 und 4 irgendwie verbunden. So das ich auf der Tabelle eigentlich nur 1,2,3,5,6,7 sehe.
Wobei 1:unbenutzt 2:Rücklaufhochhaltung 3+4:Kesselventil 5:Brennerfreigabe ist. Wenn ich jetzt das Wicki und Beschreibung richtig verstehe müsste jetzt eigentlich auf dem TA_Output_Reading dann die Position 3 eigentlich die Brennerfreigabe sein. Nur bekomme ich, damit gleich die Meldung "Abfrage überlauf".
Ich gehe mal davon aus, das ich da was falsch gemacht habe. (bin im Büro und habe kein Fernzugriff aufs fhem zuhause, darum kein Code).
Mein Ziel ist es eigentlich mit der Meldung "Brennerfreigabe" die Betriebsstunden zusätzlich anzeigbar zu machen und vor allem auch den Pelletsvorrat im Griff zu haben. Irgendwo gabe es mal eine Forumseintrag mit einem schönen solchen Modul. Ich hatte das auch bereits mal eingerichtet, danach konnte aber die SD-Karte nicht mehr gelesen werden. Folglich muss ich es nochmals einrichten.
Ich weiss mein UVR16x2 zeigt mir das auf dem Display auch an, aber nur zum anschauen in den Keller gehen, wenn in der Küche bereits ein Tablett hängt das den Speicher anzeigt, ist auch etwas doof.
Gruss Andi
Zitat von: Haus-Andi am 21 November 2018, 13:13:24
Nur bekomme ich, damit gleich die Meldung "Abfrage überlauf".
Interessant, diese Meldung kannte ich noch nicht.
Kannst du mir dieses Response-JSON bitte mal hier reinkopieren, sobald du wieder drauf Zugriff hast?
Falls es wirklich daran liegt, dass zu viele Daten zurückkommen, kannst du mal versuchen, nicht alle Daten zu holen.
Du kannst zB als <queryParams> auch nur O nehmen und versuchen, ob das klappt. Oder zB auch mal nur O1,O2,O3
Wenn ja, musst du dir leider mehrere Devices anlegen. zb eines nur mit I, das andere nur mit O.
Allerdings wirds dann auch mit der Abstimmung der Abfragen etwas finkelig... man darf ja nur 1x pro Minute.
Zitat von: tremichl am 21 November 2018, 12:48:34
Noch eine Frage: Die 1611 hat ja 16 Eingänge und Ausgänge. Ich habe alle gemäß deiner Anleitung definiert. Als readings sehe ich aber die Ausgänge 14, 15, 16 nicht. Hat das einen bestimmten Grund?
Dazu kann ich ohne Daten leider auch nix sagen.
Kannst du hier auch mal so ein Response-JSON posten?
Und bitte auch die Ausgabe von 'list <devicename>'
schöne Grüße
Martin
Michael, stell bitte mal verbose auf 5. Dann solltest du im Log pro Abfrage sämtliche Werte gelistet kriegen.
Wäre interessant, ob deine Vermissten dort auch fehlen
Martin
Also mit der Meldung meinte ich eigentlich schon die von dir in der Doku beschriebe "too many request" Ausgabe
define Atmos TA_CMI_JSON 192.168.169.45 2 I,O
attr Atmos DbLogExclude .*
attr Atmos interval 60
attr Atmos password x.x.x.x.x.
attr Atmos readingNamesInputs 1:T_Pufferoben 2:T_Puffermitte 3:T_Pufferunten 4:T_HeizkreisVL 5:T_Aussen 6:T_KesselVL 7:T_KesselRL 8:T_Abgas 9:T_Kesselthermostat 10:K_Pelletmangel
attr Atmos readingNamesOutputs 1:Ladeomat 2:Mischer 3:Brenner
attr Atmos room Heizung
attr Atmos username x.x.x.x.x.
sobald ich im define das ",O" mache bekomme ich die Meldung mit "too many....", wenn ich es wieder entferne, scheint er sich zu erholen und wieder richtig zu gehen. irgendwa stimmt da sowieso nicht. CMI sagt "Brenner Aus" und der CAN Knoten sagt "Anforderung Ein". Kann man die Abfrage eingrenzung auch beim "I" machen, so das ich weniger Werte abfragen würde und so dann weniger Daten versendet werden müssten?
Zum anderen habe ich mich gerade gefragt, ob ich nicht besser gleich ein 1-Wire Modul mit 2x DE230V verbauen soll, dann hätte ich die Daten sicher schneller als nur 1min. Zumal meine Temperaturfühler und Wasserzähler schon alle mit 1-Wire im gleichen Raum erfasst werden.
schönen Abend
Andi
Hi Andi,
das Define war zwar nicht ganz das, was ich gebraucht hätte, trotzdem danke dafür.
Wie's ausschaut, beantwortet sich die Frage auch so.
Zitat von: Haus-Andi am 21 November 2018, 21:29:44
Also mit der Meldung meinte ich eigentlich schon die von dir in der Doku beschriebe "too many request" Ausgabe
Dann musst du "nur" 1 Minute warten, bevor der nächste Request abgesetzt wird.
Wenn er sich mit "nur O" wieder erholt, liegt das daran, dass - bis zu mit deiner Änderung fertig bist - die Minute wieder um war.
Zitat von: Haus-Andi am 21 November 2018, 21:29:44
Kann man die Abfrage eingrenzung auch beim "I" machen, so das ich weniger Werte abfragen würde und so dann weniger Daten versendet werden müssten?
Ja, kannst du natürlich. Die Datenmenge ist aber sicher nicht das Problem, du musst nur etwas (1 Minute) Geduld haben.
Die Minute zählt vom CMI aus, wenn du also von mehreren Geräten parallel abfrägst, muss aus CMI Sicht trotzdem immer 1 Minuten dazwischen liegen - auch von verschiedenen Geräten aus.
Zitat von: Haus-Andi am 21 November 2018, 21:29:44
CMI sagt "Brenner Aus" und der CAN Knoten sagt "Anforderung Ein".
Dazu kann ich natürlich auch nichts sagen.
Zitat von: Haus-Andi am 21 November 2018, 21:29:44
Zum anderen habe ich mich gerade gefragt, ob ich nicht besser gleich ein 1-Wire Modul mit 2x DE230V verbauen soll, dann hätte ich die Daten sicher schneller als nur 1min. Zumal meine Temperaturfühler und Wasserzähler schon alle mit 1-Wire im gleichen Raum erfasst werden.
Kannst du natürlich machen.
Ich hab auch noch ein anderes Modul in Arbeit, welches Daten-Broadcasts von der CMI empfängt. Das ist dann zwar nicht auf 1 Minute beschränkt, erfordert aber einiges an Konfiguration an der CMI.
Das läuft zwar grundsätzlich, dauert aber noch etwas, bis dann auch wirklich alles funktioniert.
Hallo Delmar
Endlich ist Urlaub und ich habe etwas mehr Zeit fürs fhem. Ich möchte ein Prinzipbild von meiner Heizungsanlage als "png" im Hintergrund eines Floorplanes haben, und darauf die Readings aus dem JSON-Interface ablegen. Jetzt habe ich aber gemerkt das die Readings gar nicht verfügbar sind? Beim Modul werden alle angezeigt und auch als einzelne Datensätze in die Datenbank geschrieben. Auch in einem Plot sind die Werte aus der Datenbank verfügbar, aber wenn ich direkt auf dem Floorplan einfügen will, ist nur das Modul TA_CMI verfügbar. Klar kann ich dann mittels "Reading" einen Wert anzeigen aber danach kann ich die Schnittstelle kein 2. mal verwenden.
hier mal das define:
define Atmos TA_CMI_JSON 192.168.169.45 2 I
attr Atmos fp_Bild_Heizung 277,503,3,T_HeizkreisVL
attr Atmos includePrettyReadings 1
attr Atmos includeUnitReadings 0
attr Atmos interval 300
attr Atmos password xxxxxx
attr Atmos readingNamesInputs 1:T_Pufferoben 2:T_Puffermitte 3:T_Pufferunten 4:T_HeizkreisVL 5:T_Aussen 6:T_KesselVL 7:T_KesselRL 8:T_Abgas 9:T_Kesselthermostat 10:K_Pelletmangel
attr Atmos room Heizung
attr Atmos username xxxx
Wieso ich damit keine "echten" Readings bekomme, ist mir im Moment etwas schleierhaft, vieleicht habe ich ja was falsch gemacht?
Gruss Andi
Zitat von: Haus-Andi am 20 Dezember 2018, 15:10:55
Endlich ist Urlaub
Nein!
Ich hab noch einen Tag vor mir :-|
Zitat von: Haus-Andi am 20 Dezember 2018, 15:10:55
vieleicht habe ich ja was falsch gemacht?
Sorry, mit Floorplan hab ich keine Erfahrung.
Wenn aber Charts funktionieren, im Device selber die Readings auch drin stehen, dann bin ich ratlos...
Im Code, den du geteilt hast, heißt das Device Atmos. Im Text schreibst du, dass Floorplan nur das TA_CMI zeigt (was aber weder Atmos ist, noch TA_CMI_JSON, was der Modulname wäre)?
Hast du das Wiki bezüglich Floorplan schon konsultiert?
schöne Grüße
Martin
Hallo Martin
dann wünsche ich dir noch viel Spass am letzten Arbeitstag.
2018-12-20 16:14:07 TA_CMI_JSON Atmos T_Puffermitte: 75.2
2018-12-20 16:14:07 TA_CMI_JSON Atmos T_Puffermitte_Pretty: 75.2 °C
2018-12-20 16:14:07 TA_CMI_JSON Atmos T_Pufferunten: 45.9
2018-12-20 16:14:07 TA_CMI_JSON Atmos T_Pufferunten_Pretty: 45.9 °C
2018-12-20 16:14:07 TA_CMI_JSON Atmos T_KesselRL: 61.6
2018-12-20 16:14:07 TA_CMI_JSON Atmos T_KesselRL_Pretty: 61.6 °C
2018-12-20 16:14:07 TA_CMI_JSON Atmos T_Kesselthermostat: 72.6
2018-12-20 16:14:07 TA_CMI_JSON Atmos T_Kesselthermostat_Pretty: 72.6 °C
2018-12-20 16:15:08 TA_CMI_JSON Atmos T_Puffermitte: 75.3
2018-12-20 16:15:08 TA_CMI_JSON Atmos T_Puffermitte_Pretty: 75.3 °C
2018-12-20 16:15:08 TA_CMI_JSON Atmos T_KesselVL: 74.8
2018-12-20 16:15:08 TA_CMI_JSON Atmos T_KesselVL_Pretty: 74.8 °C
2018-12-20 16:15:08 TA_CMI_JSON Atmos T_KesselRL: 61.4
2018-12-20 16:15:08 TA_CMI_JSON Atmos T_KesselRL_Pretty: 61.4 °C
...
das ist der log wenn ich ein "get update" auslöse. Aus meiner Sicht absolut einwandfrei. Diese Daten werden auch in die Datenbank geschrieben, jedes Reading bekommt eine eigene Zeile. Interresant ist auch, dass wenn ich mit "attr userReading......." ein eigenes Reading mache erscheint das auch nicht.
Was auch immer da falsch geht ist mir noch ein Rätsel. Ich werde das ganze mal mittels readingsProxy versuchen. Zusätzlich werde ich mich mit dem TabletUI näher beschäftigen.
Gruss Andi
Hallo zusammen,
parallel zu diesem Modul habe ich nun auch eine erste Version des CanOverEthernet Moduls online gestellt.
Pro/Con TA_CMI_JSON:
+ sehr einfach zu konfigurieren
- Abfrage max 1x pro Minute
- Beschränkt auf "Daten"
Pro/Con CanOverEthernet:
+ Beinahe Echtzeit (Daten werden an FHEM gepusht)
+ Mehr Daten verfügbar (zB auch Fixwerte, ...)
- Sehr aufwändige konfiguration an der Steuerung und am CMI (jede metrik muss 3x konfiguriert werden: Steuerung->CMI, CMI-CAN, CAN-COE)
Genaue Infos hier:
https://forum.fhem.de/index.php/topic,96170.0.html
schöne Grüße
Martin
Hallo
Ich spiele auch geade damit und kann die readings nicht mehr ändern wenn ich sie lösche "deletereading" und neu anlege oder das ganze device lösche funktioniert auch nicht auch ein start von fhem bringt nichts.
somit stimmen die werte mit den readings nicht überein.
wo wird das gespeichert?
Internals:
CAN_DEVICE UVR16x2
CFGFN
CMIURL 192.168.147.124
CMI_API_VERSION unknown: 5
DEF 192.168.1.43 1 I,O,D
FUUID 5e289e0b-f33f-3a96-e86c-cedd01c7d784591f
INTERVAL 60
NAME cmi
NODEID 1
NR 1489
QUERYPARAM I,O,D
STATE OK
TYPE TA_CMI_JSON
model UVR16x2
READINGS:
2020-01-22 20:13:14 Anforderung_Pellets_Kessel 0
2020-01-22 20:13:14 Aussentemperatur 9999.9
2020-01-22 20:18:32 Heizkreis_1_vl 28.9
2020-01-22 20:13:14 Heizkreis_2_vl 29.7
2020-01-22 20:13:14 Holz_Kessel 24.2
2020-01-22 20:13:14 Holzkessel_RL 26.5
2020-01-22 20:13:14 Kollektor 9999.9
2020-01-22 20:13:14 PWM_Holzkessel 0.0
2020-01-22 20:17:30 Pellets_Kessel 80.0
2020-01-22 20:18:32 Puffer_1_Mitte 50.6
2020-01-22 20:17:30 Puffer_1_Oben 55.3
2020-01-22 20:17:30 Puffer_1_Unten 31.4
2020-01-22 20:13:14 Puffer_2_Mitte 9999.9
2020-01-22 20:13:14 Puffer_2_Oben 9999.9
2020-01-22 20:13:14 Pufferladewasser 9999.9
2020-01-22 20:13:14 Pumpe_Holzkessel 0
2020-01-22 20:13:14 Pumpe_Pelletskessel 1
2020-01-22 20:13:14 Pumpe_Pufferladewasser 0
2020-01-22 20:13:14 Pumpe_Solar 0
2020-01-22 20:13:14 Raum_1 51.1
2020-01-22 20:13:14 Raum_1_RAS 3
2020-01-22 20:13:14 Schichtventiel_3 1
2020-01-22 20:13:14 Schichtventiel_4 1
2020-01-22 20:13:14 Schichtventiel_5 0
2020-01-22 20:13:14 Schichtventiel_6 0
2020-01-22 20:13:14 Schichtventiel_7 60.0
2020-01-22 20:13:14 Schichtventiel_8 0.0
2020-01-22 20:13:14 Schichtventiel_9 0.0
2020-01-22 20:13:14 Solar_RL 9999.9
2020-01-22 20:18:32 VL_Puffer_Pellers 57.9
2020-01-22 20:17:30 state OK
Attributes:
readingNamesInputs 1:Pellets_Kessel 2:Holz_Kessel 3:Puffer_1_Oben 4:Aussentemperatur 5:Puffer_1_Mitte 6:Puffer_1_Unten 7:Heizkreis_1_vl 8:Heizkreis_2_vl 9:Raum_1 10:Holzkessel_RL 11:Kollektor 12:Pufferladewasser 13:Solar_RL 14:Puffer_2_Oben 15:Puffer_2_Mitte 16:VL_Puffer_Pellers
readingNamesOutputs 1:Pumpe_Pelletskessel 2:Pumpe_Holzkessel 3:Pumpe_Solar 4:Pumpe_Pufferladewasser 5:Anforderung_Pellets_Kessel 6:Schichtventiel_3 7:Schichtventiel_4 8:Schichtventiel_5 9:Schichtventiel_6 10:Schichtventiel_7 11:Schichtventiel_8 12:Schichtventiel_9 13:PWM_Holzkessel 14:PWM_Pellets_Kessel 15:PWM_Pufferladen 16:PWM_Solar
room System
Hallo Markus,
tut mir leid, dass es nicht wie erwartet funktioniert.
Allerdings ist mir das Problem noch nicht ganz klar.
Danke, dass du das List gleich angehängt hast.
Mir fällt auf, dass bei CMI_API_VERSION unknown:5 steht.
Zitat von: Markus am 22 Januar 2020, 21:22:08
Ich spiele auch geade damit und kann die readings nicht mehr ändern wenn ich sie lösche "deletereading" und neu anlege oder das ganze device lösche funktioniert auch nicht auch ein start von fhem bringt nichts.
somit stimmen die werte mit den readings nicht überein.
Kannst du die Frage bitte nochmal in mehreren Sätzen formulieren?
Ich hab nur verstanden, dass die Werte nicht mehr mit den Readings übereinstimmen. Was das mit löschen und ändern auf sich hat, aber nicht.
Zitat von: Markus am 22 Januar 2020, 21:22:08
wo wird das gespeichert?
Wo wird was gespeichert?
Meine Vermutung ist, dass die API neuer ist, als jene, die ich gerade laufen habe und dass sich etwas am Format geändert hat.
Kannst du bitte verbose mal auf 5 stellen und das Log hier reinstellen?
Danke
schöne Grüße
Martin
Danke für die schnelle Antwort
ich habe Readings zum Testen erstellt und die kann ich nicht mehr Löschen auch wenn ich das attr readingNamesOutputs ändere oder lösche oder gleich neu erzeuge die readings bleiben gleich auch ein neu anlegen des devices ändert daran nichts.
das bedeutet das jetzt falsche werte in den readings stehen da die alten readings mit den werten der neuen vermischt wurden.
Zitat von: Markus am 22 Januar 2020, 21:40:30
Danke für die schnelle Antwort
Das war Zufall ;D
Zitat von: Markus am 22 Januar 2020, 21:40:30
ich habe Readings zum Testen erstellt und die kann ich nicht mehr Löschen
Sehr seltsam.
Readings löschen ist ja grundsätzliche FHEM Funktionalität, da gibts in diesem Modul nichts spezielles dazu.
Ich hab mal alle Readings mit deiner Config verglichen. Das einzige Reading, dass eigentlich nicht konfiguriert ist, ist Raum_1_RAS.
Wenn du also folgendes Kommando ausführst, ist das Reading immer noch da? Auch, nachdem du die Seite neu geladen hast?
deletereading cmi Raum_1_RAS
Zitat von: Markus am 22 Januar 2020, 21:40:30
auch wenn ich das attr readingNamesOutputs ändere oder lösche oder gleich neu erzeuge die readings bleiben gleich
Nur das Attribut Löschen oder Ändern hat keinen sofortigen Einfluss auf die Readings, sondern erst beim nächsten Leseintervall (jede Minute, laut dem 'list')
Zitat von: Markus am 22 Januar 2020, 21:40:30
auch ein neu anlegen des devices ändert daran nichts.
Wenn du das Device löschst und dann neu anlegst, sind sofort wieder alle alten Readings da?
Das kann ich mir nicht vorstellen.
Zitat von: Markus am 22 Januar 2020, 21:40:30
das bedeutet das jetzt falsche werte in den readings stehen da die alten readings mit den werten der neuen vermischt wurden.
Welche Readings in deinem 'list' von vorhin wären denn die Veralteten?
schöne Grüße
Martin
ZitatSehr seltsam.
Readings löschen ist ja grundsätzliche FHEM Funktionalität, da gibts in diesem Modul nichts spezielles dazu.
Ich hab mal alle Readings mit deiner Config verglichen. Das einzige Reading, dass eigentlich nicht konfiguriert ist, ist Raum_1_RAS.
Wenn du also folgendes Kommando ausführst, ist das Reading immer noch da? Auch, nachdem du die Seite neu geladen hast?
Code: [Auswählen]
deletereading cmi Raum_1_RAS
ja
ZitatZitat von: Markus am Heute um 21:40:30
auch wenn ich das attr readingNamesOutputs ändere oder lösche oder gleich neu erzeuge die readings bleiben gleich
Nur das Attribut Löschen oder Ändern hat keinen sofortigen Einfluss auf die Readings, sondern erst beim nächsten Leseintervall (jede Minute, laut dem 'list')
ich weis und auch ein deletereading cmi Raum_1_RAS und neustart von fhem ändert nichts
ZitatWenn du das Device löschst und dann neu anlegst, sind sofort wieder alle alten Readings da?
Das kann ich mir nicht vorstellen.
nein kein einziges aber wenn ich meine attr anlege sind sie falsch gereit
1:Pumpe_Pelletskessel 2:Pumpe_Holzkessel 3:Pumpe_Solar 4:Pumpe_Pufferladewasser 5:Anforderung_Pellets_Kessel 6:Schichtventiel_3 7:Schichtventiel_4 8:Schichtventiel_5 9:Schichtventiel_6 10:Schichtventiel_7 11:Schichtventiel_8 12:Schichtventiel_9 13:PWM_Holzkessel 14:PWM_Pellets_Kessel 15:PWM_Pufferladen 16:PWM_Solar
zb.
schichtladeventil_7 ist 60 die 60 solten aber bei PWM_Holzkessel stehen
schichtladeventil_8 ist 100 die 100 solten aber bei PWM_Pelletsl stehen
2020.01.22 22:04:50 5: readingNamesInputs: 1:Pellets_Kessel 2:Holz_Kessel 3:Puffer_1_Oben 4:Aussentemperatur 5:Puffer_1_Mitte 6:Puffer_1_Unten 7:Heizkreis_1_vl 8:Heizkreis_2_vl 9:Raum_1 10:Holzkessel_RL 11:Kollektor 12:Pufferladewasser 13:Solar_RL 14:Puffer_2_Oben 15:Puffer_2_Mitte 16:VL_Puffer_Pellers
2020.01.22 22:04:50 5: readingName: Pellets_Kessel, key: Data_Inputs_1_Value_Value, value: 64.6
2020.01.22 22:04:50 5: readingName: Holz_Kessel, key: Data_Inputs_2_Value_Value, value: 23.7
2020.01.22 22:04:50 5: readingName: Puffer_1_Oben, key: Data_Inputs_3_Value_Value, value: 39.0
2020.01.22 22:04:50 5: readingName: Aussentemperatur, key: Data_Inputs_4_Value_Value, value: 9999.9
2020.01.22 22:04:50 5: readingName: Puffer_1_Mitte, key: Data_Inputs_5_Value_Value, value: 34.1
2020.01.22 22:04:50 5: readingName: Puffer_1_Unten, key: Data_Inputs_6_Value_Value, value: 32.1
2020.01.22 22:04:50 5: readingName: Heizkreis_1_vl, key: Data_Inputs_7_Value_Value, value: 38.8
2020.01.22 22:04:50 5: readingName: Heizkreis_2_vl, key: Data_Inputs_8_Value_Value, value: 9999.9
2020.01.22 22:04:50 5: readingName: Raum_1, key: Data_Inputs_9_Value_Value, value: 51.1
2020.01.22 22:04:50 5: readingName: Holzkessel_RL, key: Data_Inputs_10_Value_Value, value: 25.8
2020.01.22 22:04:50 5: readingName: Kollektor, key: Data_Inputs_11_Value_Value, value: 9999.9
2020.01.22 22:04:50 5: readingName: Pufferladewasser, key: Data_Inputs_12_Value_Value, value: 9999.9
2020.01.22 22:04:50 5: readingName: UNDEFINED, key: Data_Inputs__Value_Value, value:
2020.01.22 22:04:50 5: readingName: Solar_RL, key: Data_Inputs_13_Value_Value, value: 9999.9
2020.01.22 22:04:50 5: readingName: Puffer_2_Oben, key: Data_Inputs_14_Value_Value, value: 9999.9
2020.01.22 22:04:50 5: readingName: Puffer_2_Mitte, key: Data_Inputs_15_Value_Value, value: 9999.9
2020.01.22 22:04:50 5: readingName: VL_Puffer_Pellers, key: Data_Inputs_16_Value_Value, value: 44.9
2020.01.22 22:04:50 5: readingNamesOutputs: 1:Pumpe_Pelletskessel 2:Pumpe_Holzkessel 3:Pumpe_Solar 4:Pumpe_Pufferladewasser 5:Anforderung_Pellets_Kessel 6:Schichtventiel_3 7:Schichtventiel_4 8:Schichtventiel_5 9:Schichtventiel_6 10:Schichtventiel_7 11:Schichtventiel_8 12:Schichtventiel_9 13:PWM_Holzkessel 14:PWM_Pellets_Kessel 15:PWM_Pufferladen 16:PWM_Solar
2020.01.22 22:04:50 5: readingName: Pumpe_Pelletskessel, key: Data_Outputs_1_Value_Value, value: 1
2020.01.22 22:04:50 5: readingName: Pumpe_Holzkessel, key: Data_Outputs_2_Value_Value, value: 0
2020.01.22 22:04:50 5: readingName: Pumpe_Solar, key: Data_Outputs_3_Value_Value, value: 0
2020.01.22 22:04:50 5: readingName: Pumpe_Pufferladewasser, key: Data_Outputs_4_Value_Value, value: 0
2020.01.22 22:04:50 5: readingName: Anforderung_Pellets_Kessel, key: Data_Outputs_5_Value_Value, value: 1
2020.01.22 22:04:50 5: readingName: Schichtventiel_3, key: Data_Outputs_6_Value_Value, value: 1
2020.01.22 22:04:50 5: readingName: Schichtventiel_4, key: Data_Outputs_7_Value_Value, value: 1
2020.01.22 22:04:50 5: readingName: Schichtventiel_5, key: Data_Outputs_8_Value_Value, value: 0
2020.01.22 22:04:50 5: readingName: Schichtventiel_6, key: Data_Outputs_9_Value_Value, value: 0
2020.01.22 22:04:50 5: readingName: Schichtventiel_7, key: Data_Outputs_10_Value_Value, value: 60.0
2020.01.22 22:04:50 5: readingName: Schichtventiel_8, key: Data_Outputs_11_Value_Value, value: 100.0
2020.01.22 22:04:50 5: readingName: Schichtventiel_9, key: Data_Outputs_12_Value_Value, value: 0.0
2020.01.22 22:04:50 5: readingName: PWM_Holzkessel, key: Data_Outputs_13_Value_Value, value: 0.0
2020.01.22 22:04:50 5: readingName: PWM_Pellets_Kessel, key: Data_Outputs_14_Value_Value, value:
2020.01.22 22:04:50 5: readingName: PWM_Pufferladen, key: Data_Outputs_15_Value_Value, value:
2020.01.22 22:04:50 5: readingName: PWM_Solar, key: Data_Outputs_16_Value_Value, value:
2020.01.22 22:04:50 5: readingNamesDL-Bus:
2020.01.22 22:05:56 5: readingNamesInputs: 1:Pellets_Kessel 2:Holz_Kessel 3:Puffer_1_Oben 4:Aussentemperatur 5:Puffer_1_Mitte 6:Puffer_1_Unten 7:Heizkreis_1_vl 8:Heizkreis_2_vl 9:Raum_1 10:Holzkessel_RL 11:Kollektor 12:Pufferladewasser 13:Solar_RL 14:Puffer_2_Oben 15:Puffer_2_Mitte 16:VL_Puffer_Pellers
2020.01.22 22:05:56 5: readingName: Pellets_Kessel, key: Data_Inputs_1_Value_Value, value: 66.9
2020.01.22 22:05:56 5: readingName: Holz_Kessel, key: Data_Inputs_2_Value_Value, value: 23.8
2020.01.22 22:05:56 5: readingName: Puffer_1_Oben, key: Data_Inputs_3_Value_Value, value: 39.1
2020.01.22 22:05:56 5: readingName: Aussentemperatur, key: Data_Inputs_4_Value_Value, value: 9999.9
2020.01.22 22:05:56 5: readingName: Puffer_1_Mitte, key: Data_Inputs_5_Value_Value, value: 34.1
2020.01.22 22:05:56 5: readingName: Puffer_1_Unten, key: Data_Inputs_6_Value_Value, value: 32.1
2020.01.22 22:05:56 5: readingName: Heizkreis_1_vl, key: Data_Inputs_7_Value_Value, value: 37.8
2020.01.22 22:05:56 5: readingName: Heizkreis_2_vl, key: Data_Inputs_8_Value_Value, value: 9999.9
2020.01.22 22:05:56 5: readingName: Raum_1, key: Data_Inputs_9_Value_Value, value: 51.1
2020.01.22 22:05:56 5: readingName: Holzkessel_RL, key: Data_Inputs_10_Value_Value, value: 25.8
2020.01.22 22:05:56 5: readingName: Kollektor, key: Data_Inputs_11_Value_Value, value: 9999.9
2020.01.22 22:05:56 5: readingName: Pufferladewasser, key: Data_Inputs_12_Value_Value, value: 9999.9
2020.01.22 22:05:56 5: readingName: UNDEFINED, key: Data_Inputs__Value_Value, value:
2020.01.22 22:05:56 5: readingName: Solar_RL, key: Data_Inputs_13_Value_Value, value: 9999.9
2020.01.22 22:05:56 5: readingName: Puffer_2_Oben, key: Data_Inputs_14_Value_Value, value: 9999.9
2020.01.22 22:05:56 5: readingName: Puffer_2_Mitte, key: Data_Inputs_15_Value_Value, value: 9999.9
2020.01.22 22:05:56 5: readingName: VL_Puffer_Pellers, key: Data_Inputs_16_Value_Value, value: 53.8
2020.01.22 22:05:56 5: readingNamesOutputs: 1:Pumpe_Pelletskessel 2:Pumpe_Holzkessel 3:Pumpe_Solar 4:Pumpe_Pufferladewasser 5:Anforderung_Pellets_Kessel 6:Schichtventiel_3 7:Schichtventiel_4 8:Schichtventiel_5 9:Schichtventiel_6 10:Schichtventiel_7 11:Schichtventiel_8 12:Schichtventiel_9 13:PWM_Holzkessel 14:PWM_Pellets_Kessel 15:PWM_Pufferladen 16:PWM_Solar
2020.01.22 22:05:56 5: readingName: Pumpe_Pelletskessel, key: Data_Outputs_1_Value_Value, value: 1
2020.01.22 22:05:56 5: readingName: Pumpe_Holzkessel, key: Data_Outputs_2_Value_Value, value: 0
2020.01.22 22:05:56 5: readingName: Pumpe_Solar, key: Data_Outputs_3_Value_Value, value: 0
2020.01.22 22:05:56 5: readingName: Pumpe_Pufferladewasser, key: Data_Outputs_4_Value_Value, value: 0
2020.01.22 22:05:56 5: readingName: Anforderung_Pellets_Kessel, key: Data_Outputs_5_Value_Value, value: 1
2020.01.22 22:05:56 5: readingName: Schichtventiel_3, key: Data_Outputs_6_Value_Value, value: 1
2020.01.22 22:05:56 5: readingName: Schichtventiel_4, key: Data_Outputs_7_Value_Value, value: 1
2020.01.22 22:05:56 5: readingName: Schichtventiel_5, key: Data_Outputs_8_Value_Value, value: 0
2020.01.22 22:05:56 5: readingName: Schichtventiel_6, key: Data_Outputs_9_Value_Value, value: 0
2020.01.22 22:05:56 5: readingName: Schichtventiel_7, key: Data_Outputs_10_Value_Value, value: 60.0
2020.01.22 22:05:56 5: readingName: Schichtventiel_8, key: Data_Outputs_11_Value_Value, value: 100.0
2020.01.22 22:05:56 5: readingName: Schichtventiel_9, key: Data_Outputs_12_Value_Value, value: 0.0
2020.01.22 22:05:56 5: readingName: PWM_Holzkessel, key: Data_Outputs_13_Value_Value, value: 0.0
2020.01.22 22:05:56 5: readingName: PWM_Pellets_Kessel, key: Data_Outputs_14_Value_Value, value:
2020.01.22 22:05:56 5: readingName: PWM_Pufferladen, key: Data_Outputs_15_Value_Value, value:
2020.01.22 22:05:56 5: readingName: PWM_Solar, key: Data_Outputs_16_Value_Value, value:
2020.01.22 22:05:56 5: readingNamesDL-Bus:
Ok Danke Funktioniert jetzt ich hab die 16x2 neu gestartet und dann hat alles gestimt seltsam aber jetzt Funktioniert es
Danke!!
Gruß Markus
Ok, das mit der API-Version unknown:5 ist kein Problem, mit dem nächsten Update (morgen) wird das richtig gestellt.
Die Wiki-Seite https://wiki.fhem.de/wiki/TA_CMI_UVR16x2_UVR1611 kennst du, oder?
Da erwähne ich auch etwas zur Reihenfolge der Readings.
Könntest du mal folgendes im Browser aufrufen?
http://192.168.1.43/INCLUDE/api.cgi?jsonnode=1&jsonparam=I,O,D
Und das Resultat hier reinstellen?
Dann kann ich die Werte mal ganz konkret mit den Readings vergleichen.
Danke
{ "Header":{ "Version":5, "Device":"87", "Timestamp":1579732926 }, "Data":{ }, "Status":"TOO MANY REQUESTS", "Status code":4 }
aber Funktioniert schon Danke
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?
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 }
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
keine Ahnung woran es lag ich hab die 16x2 neu gestartet und dann hat alles gestimt seltsam aber jetzt Funktioniert es
Danke!!
Gruß Markus
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
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
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
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
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 (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
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
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
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
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
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
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.
Hallo Martin,
ich habe auch das gleiche Problem nach dem Update von FHEM
Latest Revision: 25573
File Rev Last Change
fhem.pl 25563 2022-01-26 10:04:13Z rudolfkoenig
Gruß
Andi
Danke für den Tip!
Das Resultat:
2022.01.31 14:33:44 4: TA_CMI_JSON (cmi) - Response {
"Header":{
"Version":5,
"Device":"87",
"Timestamp":1643639621
},
"Data":{
"Logging Analog":[
{
"Number":1,
"AD":"A",
"Value":{
"Value":22.0,
"Unit":"1"
}
},
{
"Number":2,
"AD":"A",
"Value":{
"Value":18.9,
"Unit":"1"
}
},
{
"Number":3,
"AD":"A",
"Value":{
"Value":20.8,
"Unit":"1"
}
},
{
"Number":4,
"AD":"A",
"Value":{
"Value":19.1,
"Unit":"1"
}
},
{
"Number":5,
"AD":"A",
"Value":{
"Value":12.9,
"Unit":"1"
}
},
{
"Number":6,
"AD":"A",
"Value":{
"Value":5.2,
"Unit":"1"
}
},
{
"Number":7,
"AD":"A",
"Value":{
"Value":41.4,
"Unit":"1"
}
},
{
"Number":8,
"AD":"A",
"Value":{
"Value":50.34,
"Unit":"21"
}
},
{
"Number":9,
"AD":"A",
"Value":{
"Value":38.0,
"Unit":"1"
}
},
{
"Number":10,
"AD":"A",
"Value":{
"Value":26.7,
"Unit":"1"
}
},
{
"Number":11,
"AD":"A",
"Value":{
"Value":20.7,
"Unit":"46",
"RAS":"0"
}
},
{
"Number":12,
"AD":"A",
"Value":{
"Value":24.4,
"Unit":"1"
}
},
{
"Number":13,
"AD":"A",
"Value":{
"Value":26.5,
"Unit":"1"
}
},
{
"Number":14,
"AD":"A",
"Value":{
"Value":26.3,
"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":289,
"Unit":"3"
}
},
{
"Number":18,
"AD":"A",
"Value":{
"Value":164710,
"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.22,
"Unit":"13"
}
},
{
"Number":26,
"AD":"D",
"Value":{
"Value":0,
"Unit":"43"
}
},
{
"Number":27,
"AD":"A",
"Value":{
"Value":39.7,
"Unit":"1"
}
},
{
"Number":28,
"AD":"A",
"Value":{
"Value":5.0,
"Unit":"1"
}
},
{
"Number":29,
"AD":"A",
"Value":{
"Value":44.3,
"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":0,
"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.3,
"Unit":"1"
}
},
{
"Number":2,
"AD":"A",
"Value":{
"Value":18.5,
"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
}
2022.01.31 14:34:06 4: WEB_127.0.0.1_62242 GET /fhem/FileLog_logWrapper?dev=Logfile&type=text&file=fhem-2022-01.log; BUFLEN:0
Das aktuelle Device-Listing hierzu:
Internals:
CAN_DEVICE unknown:
CMIURL <IP>
CMI_API_VERSION unknown:
DEF <IP> 2 La,Ld,D
FUUID xxx
INTERVAL 180
NAME cmi
NODEID 2
NODEID_HEX 02
NR 14
NTFY_ORDER 50-cmi
QUERYPARAM La,Ld,D
STATE defined
TYPE TA_CMI_JSON
model unknown:
OLDREADINGS:
READINGS:
Attributes:
interval 180
password yyy
readingNamesDL-Bus 1:Solar_VL_T 2:Solar_RL_T 3:Solar_Durchfluss_l 4:Solar_Systemdruck_bar
username xxx
verbose 4
"Oben" kommt irgendwie nix an.
Vielen Dank für deine schnelle Hilfe - auch im Homeoffice? ;)
Lutz
Danke für euren Input. Ich werd versuchen, nach Feierabend ( ;) )rauszufinden, was da los ist
Ich konnte das das Problem nun reproduzieren und eingrenzen. Es ist aber noch nicht gelöst.
Wenn ich diese Änderung, die vor einigen Tagen in FHEM gemacht wurde, rückgängig mache, funktioniert es wieder:
https://svn.fhem.de/trac/changeset/25544/trunk
Kann das jemand bestätigen?
LG
Hallo Martin,
ich habe die Änderungen in meiner Installation ebenfalls geändert und ja, nun funktioniert das Modul wieder!
LG Lutz
Hallo,
ich kann nach Rücknahme der Änderungen in fhem.pl auch bestätigen, dass das CMI-Modul nun wieder Daten liefert.
SG
Hallo,
hatte ebenfalls seit ein paar Tagen das Problem, daß keine Daten vom CMI mehr gekommen sind. Eben die "Lösung"/ Workaround von DelMar mit den 3 Änderungen in der fhem.pl durchgeführt und jetzt läuft es wieder wie vorher.
Danke
SR
ZitatEben die "Lösung"/ Workaround von DelMar mit den 3 Änderungen in der fhem.pl durchgeführt und jetzt läuft es wieder wie vorher.
Das ist doch keine Loesung.
Ich habe gerade die JSONs aus Beitrag #58 und #61 mit
define d dummy
{ json2reading( $defs{d}, '{ "Header": ... }') }
verarbeitet, und das "Verdaute" schaut meiner Ansicht nach perfekt aus.
Kann jemand sagen, was fehlt oder nicht passt?
Die Abfrage aus dem Hash liefert nur Uninitialized Values.
Warum, weiß ich noch nicht.
Ich wollte heute versuchen eine statische Version des Moduls zu bauen, um es nachszellen zu können, ohne das echte Hardware Setup zu besitzen
Werde aber erst am Abend zu Hause sein.
Zitat von: rudolfkoenig am 05 Februar 2022, 10:43:21
Ich habe gerade die JSONs aus Beitrag #58 und #61 mit
define d dummy
{ json2reading( $defs{d}, '{ "Header": ... }') }
verarbeitet, und das "Verdaute" schaut meiner Ansicht nach perfekt aus.
Kann jemand sagen, was fehlt oder nicht passt?
Hallo,
das "json2reading" liefert bei mir mit der "alten" und der "neuen" fhem.pl die gleichen und richtigen Readings u. Werte.
Falls zur Fehlersuche beiträgt, hier ein list meines Moduls TA_CMI_JSON mit der alten fhem.pl-Version (bei der das Modul normal läuft):
Internals:
.attreocr-thresholdTAussen 2.6
.attreocr-thresholdTHeizkr.VL1 35.1
.attreocr-thresholdTHeizkr.VL2 30.6
.attreocr-thresholdTKessel-VL 16.9
.attreocr-thresholdTPuffer.m 56.3
.attreocr-thresholdTPuffer.o 57.9
.attreocr-thresholdTSolar-RL1 58.3
.attreocr-thresholdTWW.Puffer 57.9
.attreocr-thresholdWW_Gesamtenergie_kWh 22.84
.attreocr-thresholdWW_Momentanleistung 0.00
.attreocr-thresholdWW_Pumpenleistung 0.0
.attreocr-thresholdWW_T_Kaltwasser 24.9
.attreocr-thresholdWW_T_Primaer 33.1
.attreocr-thresholdWW_T_Warmwasser_Ist 31.4
.attreocr-thresholdWW_Ventilsteuerung 0.0
.attreocr-thresholdWW_Volumenstrom 0
.lastTimeTAussen 1644056348.94867
.lastTimeTHeizkr.VL1 1644056472.61765
.lastTimeTHeizkr.VL2 1644056033.4285
.lastTimeTKessel-VL 1644056656.86037
.lastTimeTPuffer.m 1644055787.69546
.lastTimeTPuffer.o 1644055787.69546
.lastTimeTSolar-RL1 1644055664.71902
.lastTimeTWW.Puffer 1644056033.4285
.lastTimeWW_Gesamtenergie_kWh 1644053951.98304
.lastTimeWW_Momentanleistung 1644053951.98304
.lastTimeWW_Pumpenleistung 1644053951.98304
.lastTimeWW_T_Kaltwasser 1644056094.81968
.lastTimeWW_T_Primaer 1644056348.94867
.lastTimeWW_T_Warmwasser_Ist 1644056411.17547
.lastTimeWW_Ventilsteuerung 1644053951.98304
.lastTimeWW_Volumenstrom 1644054013.44868
CAN_DEVICE UVR16x2
CMIURL admin:XXXXXXXX@192.168.2.8
CMI_API_VERSION 1.35.1 2019-07-02
DEF admin:XXXXXXXX@192.168.2.8 1 I,O,D
FUUID 6113f798-f33f-42a6-f5b3-fdd72ca9e393cc7f
INTERVAL 60
NAME CMI_UVR16x2
NODEID 1
NODEID_HEX 01
NR 524
NTFY_ORDER 50-CMI_UVR16x2
QUERYPARAM I,O,D
STATE defined
TYPE TA_CMI_JSON
model UVR16x2
.attraggr:
.attreocr:
TAussen:1.0
THeizkr.VL1:1.0
THeizkr.VL2:1.0
TKessel-VL:1.0
TKollektor:2.0
TPuffer.m:1.0
TPuffer.o:1.0
TSolar-RL1:1.0
TSolar-RL2:1.0
TWW.Puffer:1.0
TZirku.RL:1.0
WW_Gesamtenergie_MWh:0.1
WW_Gesamtenergie_kWh:0.1
WW_Momentanleistung:0.1
WW_Pumpenleistung:1.0
WW_T_Kaltwasser:2.0
WW_T_Primaer:2.0
WW_T_Solltemperatur:2.0
WW_T_Warmwasser_Ist:2.0
WW_T_Zirkulation:2.0
WW_Ventilsteuerung:2.0
WW_Volumenstrom:2.0
.attrminint:
TAussen:900
THeizkr.VL1:900
THeizkr.VL2:900
TKessel-VL:900
TKollektor:900
TPuffer.m:900
TPuffer.o:900
TSolar-RL1:900
TSolar-RL2:900
TWW.Puffer:900
TZirku.RL:900
WW_Gesamtenergie_MWh:900
WW_Gesamtenergie_kWh:900
WW_Momentanleistung:900
WW_Pumpenleistung:900
WW_T_Kaltwasser:900
WW_T_Primaer:900
WW_T_Solltemperatur:900
WW_T_Warmwasser_Ist:900
WW_T_Zirkulation:900
WW_Ventilsteuerung:900
WW_Volumenstrom:900
OLDREADINGS:
READINGS:
2022-02-05 04:01:06 0.05
2022-02-05 11:19:08 TAussen 3.5
2022-02-05 11:19:09 TAussen_avg_day 3.7
2022-02-05 11:19:09 TAussen_avg_month 5.7
2022-02-05 11:19:09 TAussen_cum_day 150841.4
2022-02-05 11:19:09 TAussen_cum_month 2699641.4
2022-02-05 00:37:55 TAussen_max_day 5.9
2022-02-05 00:37:55 TAussen_max_month 5.9
2022-02-05 08:20:45 TAussen_min_day 2.3
2022-02-05 08:20:45 TAussen_min_month 2.3
2022-02-05 11:24:16 THeizkr.VL1 35.4
2022-02-05 11:24:16 THeizkr.VL2 31.1
2022-02-05 11:24:16 TKessel-VL 17.7
2021-10-16 03:57:41 TKollektor 9999.9
2022-02-05 11:21:12 TPuffer.m 56.1
2022-02-05 11:23:15 TPuffer.o 57.1
2022-02-05 11:15:56 TSolar-RL1 57.5
2021-10-16 03:57:41 TSolar-RL2 9999.9
2022-02-05 11:13:53 TWW.Puffer 57.9
2021-10-16 03:57:41 TZirku.RL 9999.9
2021-11-02 20:53:52 WW_Gesamtenergie_MWh 0.00
2022-02-05 10:39:11 WW_Gesamtenergie_kWh 22.87
2022-02-05 10:39:11 WW_Momentanleistung 0.00
2022-02-05 10:39:11 WW_Pumpenleistung 0.0
2022-02-05 11:23:15 WW_T_Kaltwasser 25.8
2022-02-05 11:24:16 WW_T_Primaer 32.6
2021-12-05 17:08:16 WW_T_Solltemperatur 48.0
2022-02-05 11:24:16 WW_T_Warmwasser_Ist 31.1
2021-11-01 14:11:38 WW_T_Zirkulation 9999.9
2022-02-05 10:39:11 WW_Ventilsteuerung 0.0
2022-02-05 10:40:13 WW_Volumenstrom 0
Attributes:
event-min-interval TAussen:900,THeizkr.VL1:900,THeizkr.VL2:900,TKessel-VL:900,TKollektor:900,TPuffer.m:900,TPuffer.o:900,TSolar-RL1:900,TSolar-RL2:900,TWW.Puffer:900,TZirku.RL:900,WW_Gesamtenergie_MWh:900,WW_Gesamtenergie_kWh:900,WW_Momentanleistung:900,WW_Pumpenleistung:900,WW_T_Kaltwasser:900,WW_T_Primaer:900,WW_T_Solltemperatur:900,WW_T_Warmwasser_Ist:900,WW_T_Zirkulation:900,WW_Ventilsteuerung:900,WW_Volumenstrom:900
event-on-change-reading TAussen:1.0,THeizkr.VL1:1.0,THeizkr.VL2:1.0,TKessel-VL:1.0,TKollektor:2.0,TPuffer.m:1.0,TPuffer.o:1.0,TSolar-RL1:1.0,TSolar-RL2:1.0,TWW.Puffer:1.0,TZirku.RL:1.0,WW_Gesamtenergie_MWh:0.1,WW_Gesamtenergie_kWh:0.1,WW_Momentanleistung:0.1,WW_Pumpenleistung:1.0,WW_T_Kaltwasser:2.0,WW_T_Primaer:2.0,WW_T_Solltemperatur:2.0,WW_T_Warmwasser_Ist:2.0,WW_T_Zirkulation:2.0,WW_Ventilsteuerung:2.0,WW_Volumenstrom:2.0
password XXXXXX
readingNamesDL-Bus 1:WW_T_Warmwasser_Ist 2:WW_T_Kaltwasser 3:WW_Volumenstrom 4:WW_T_Primär 5:WW_T_Zirkulation 6:WW_T_Solltemperatur 7:WW_Pumpenleistung 8:WW_Ventilsteuerung 9:WW_Momentanleistung 10:WW_Gesamtenergie_kWh 11:WW_Gesamtenergie_MWh 12: WW_Wasserzähler_m3 14:WW_Status
readingNamesInputs 1:TKollektor 2:TWW.Puffer 3:TSolar-RL1 4:TSolar-RL2 5:TZirku.RL 6:TPuffer.m 7:TPuffer.o 8:TKessel-VL 9:THeizkr.VL1 10:THeizkr.VL2 11:TAussen
room Z_UVR16x2,Z_Heizung,Z_UVR1611
suppressReading state
username admin
und hier mit der neuen fhem.pl Version mit der das Modul nicht läuft und keine Werte mehr liefert (hier ist z. Bsp. CAN_EVICE unknown, CMI_API_VERSION unknown, model unknown usw.):
Internals:
CAN_DEVICE unknown:
CMIURL admin:XXXXXXXX@192.168.2.8
CMI_API_VERSION unknown:
DEF admin:XXXXXXXX@192.168.2.8 1 I,O,D
FUUID 6113f798-f33f-42a6-f5b3-fdd72ca9e393cc7f
INTERVAL 60
NAME CMI_UVR16x2
NODEID 1
NODEID_HEX 01
NR 524
NTFY_ORDER 50-CMI_UVR16x2
QUERYPARAM I,O,D
STATE defined
TYPE TA_CMI_JSON
model unknown:
.attraggr:
.attreocr:
TAussen:1.0
THeizkr.VL1:1.0
THeizkr.VL2:1.0
TKessel-VL:1.0
TKollektor:2.0
TPuffer.m:1.0
TPuffer.o:1.0
TSolar-RL1:1.0
TSolar-RL2:1.0
TWW.Puffer:1.0
TZirku.RL:1.0
WW_Gesamtenergie_MWh:0.1
WW_Gesamtenergie_kWh:0.1
WW_Momentanleistung:0.1
WW_Pumpenleistung:1.0
WW_T_Kaltwasser:2.0
WW_T_Primaer:2.0
WW_T_Solltemperatur:2.0
WW_T_Warmwasser_Ist:2.0
WW_T_Zirkulation:2.0
WW_Ventilsteuerung:2.0
WW_Volumenstrom:2.0
.attrminint:
TAussen:900
THeizkr.VL1:900
THeizkr.VL2:900
TKessel-VL:900
TKollektor:900
TPuffer.m:900
TPuffer.o:900
TSolar-RL1:900
TSolar-RL2:900
TWW.Puffer:900
TZirku.RL:900
WW_Gesamtenergie_MWh:900
WW_Gesamtenergie_kWh:900
WW_Momentanleistung:900
WW_Pumpenleistung:900
WW_T_Kaltwasser:900
WW_T_Primaer:900
WW_T_Solltemperatur:900
WW_T_Warmwasser_Ist:900
WW_T_Zirkulation:900
WW_Ventilsteuerung:900
WW_Volumenstrom:900
OLDREADINGS:
READINGS:
2022-02-05 04:01:06 0.05
2022-02-05 11:28:22 TAussen 3.4
2022-02-05 11:19:09 TAussen_avg_day 3.7
2022-02-05 11:19:09 TAussen_avg_month 5.7
2022-02-05 11:19:09 TAussen_cum_day 150841.4
2022-02-05 11:19:09 TAussen_cum_month 2699641.4
2022-02-05 00:37:55 TAussen_max_day 5.9
2022-02-05 00:37:55 TAussen_max_month 5.9
2022-02-05 08:20:45 TAussen_min_day 2.3
2022-02-05 08:20:45 TAussen_min_month 2.3
2022-02-05 11:24:16 THeizkr.VL1 35.4
2022-02-05 11:25:18 THeizkr.VL2 31.0
2022-02-05 11:24:16 TKessel-VL 17.7
2021-10-16 03:57:41 TKollektor 9999.9
2022-02-05 11:33:38 TPuffer.m 55.6
2022-02-05 11:25:18 TPuffer.o 57.2
2022-02-05 11:15:56 TSolar-RL1 57.5
2021-10-16 03:57:41 TSolar-RL2 9999.9
2022-02-05 11:33:38 TWW.Puffer 57.8
2021-10-16 03:57:41 TZirku.RL 9999.9
2021-11-02 20:53:52 WW_Gesamtenergie_MWh 0.00
2022-02-05 10:39:11 WW_Gesamtenergie_kWh 22.87
2022-02-05 10:39:11 WW_Momentanleistung 0.00
2022-02-05 10:39:11 WW_Pumpenleistung 0.0
2022-02-05 11:33:38 WW_T_Kaltwasser 22.1
2022-02-05 11:33:38 WW_T_Primaer 37.8
2021-12-05 17:08:16 WW_T_Solltemperatur 48.0
2022-02-05 11:33:38 WW_T_Warmwasser_Ist 37.0
2021-11-01 14:11:38 WW_T_Zirkulation 9999.9
2022-02-05 10:39:11 WW_Ventilsteuerung 0.0
2022-02-05 11:26:19 WW_Volumenstrom 0
Attributes:
event-min-interval TAussen:900,THeizkr.VL1:900,THeizkr.VL2:900,TKessel-VL:900,TKollektor:900,TPuffer.m:900,TPuffer.o:900,TSolar-RL1:900,TSolar-RL2:900,TWW.Puffer:900,TZirku.RL:900,WW_Gesamtenergie_MWh:900,WW_Gesamtenergie_kWh:900,WW_Momentanleistung:900,WW_Pumpenleistung:900,WW_T_Kaltwasser:900,WW_T_Primaer:900,WW_T_Solltemperatur:900,WW_T_Warmwasser_Ist:900,WW_T_Zirkulation:900,WW_Ventilsteuerung:900,WW_Volumenstrom:900
event-on-change-reading TAussen:1.0,THeizkr.VL1:1.0,THeizkr.VL2:1.0,TKessel-VL:1.0,TKollektor:2.0,TPuffer.m:1.0,TPuffer.o:1.0,TSolar-RL1:1.0,TSolar-RL2:1.0,TWW.Puffer:1.0,TZirku.RL:1.0,WW_Gesamtenergie_MWh:0.1,WW_Gesamtenergie_kWh:0.1,WW_Momentanleistung:0.1,WW_Pumpenleistung:1.0,WW_T_Kaltwasser:2.0,WW_T_Primaer:2.0,WW_T_Solltemperatur:2.0,WW_T_Warmwasser_Ist:2.0,WW_T_Zirkulation:2.0,WW_Ventilsteuerung:2.0,WW_Volumenstrom:2.0
password XXXXXXX
readingNamesDL-Bus 1:WW_T_Warmwasser_Ist 2:WW_T_Kaltwasser 3:WW_Volumenstrom 4:WW_T_Primär 5:WW_T_Zirkulation 6:WW_T_Solltemperatur 7:WW_Pumpenleistung 8:WW_Ventilsteuerung 9:WW_Momentanleistung 10:WW_Gesamtenergie_kWh 11:WW_Gesamtenergie_MWh 12: WW_Wasserzähler_m3 14:WW_Status
readingNamesInputs 1:TKollektor 2:TWW.Puffer 3:TSolar-RL1 4:TSolar-RL2 5:TZirku.RL 6:TPuffer.m 7:TPuffer.o 8:TKessel-VL 9:THeizkr.VL1 10:THeizkr.VL2 11:TAussen
room Z_UVR16x2,Z_Heizung,Z_UVR1611
suppressReading state
username admin
ZitatFalls zur Fehlersuche beiträgt, hier ein list meines Moduls [...]
Tut mir Leid, ich kenne das Modul nicht, um zu helfen muesste mir jemand schon genau sagen, was "faul" an dem aktuellen json2nameValue ist.
Zitat von: rudolfkoenig am 05 Februar 2022, 17:56:49
Tut mir Leid, ich kenne das Modul nicht, um zu helfen muesste mir jemand schon genau sagen, was "faul" an dem aktuellen json2nameValue ist.
Das Modul empfängt ein JSON file und legt dieses via json2nameValue in einem Hash ab.
Wird nun aus diesem Hash ein Wert ausgelesen (zb so:
$keyValues->{Header_Device}), dann führt die Verwendung dieses Wertes zu folgender Fehlermeldung:
2022.02.05 17:26:07 1: PERL WARNING: Use of uninitialized value $input in hash element at ./FHEM/72_TA_CMI_JSON.pm line 332.
Macht man das letzte Update zu json2NameValue rückgängig, verschwinden diese Fehlermeldungen wieder (und das Modul funktioniert wieder).
Was seltsam ist:
das Beispiel von dir aus dem anderen Thread, den ich eröffnet habe, funktioniert trotzdem.
Dieses Verhalten tritt auch nicht auf allen FHEM Installationen auf.
Kann es sein, dass es nur im Zusammenhang mit einer speziellen Perl-Version auftritt?
Mein "problemloses" System hat 5.28.1. Damit konnte ich den Fehler zuerst nicht nachstellen.
Nach Aufsetzen eines neuen Systems (dieses hat 5.32.1) konnte ich den Fehler reproduzieren.
Hilft das weiter?
Ich werde jetzt eine Version vom Modul bauen, dass die Daten nicht per Netzwerk kriegt, sondern direkt ein JSON eingebettet hat.
Die Version vom Modul im Anhang hat JSONs direkt eingebettet.
Über Aufruf von einem der get Befehle sollte man das Problem nachvollziehen können.
Hier die definition
defmod cmi_uvr16x2 TA_CMI_JSON 192.168.4.250 16
attr cmi_uvr16x2 readingNamesOutputs 1:Solar_VL_T 2:Solar_RL_T 3:Solar_Durchfluss_l 4:Solar_Systemdruck_bar
attr cmi_uvr16x2 verbose 5
Die Parameter müssen natürlich mit rein, ich hab den initialize Code nicht geändert. Sie werden aber nicht verwendet
Das angehaengte Modul schreit auch bei mir, ich vermute das Problem aber weniger im json2nameValue, sondern bei dem hinzugefuegten ParseHttpResponse Aufruf: ich meine der erste Parameter soll $param sein und nicht $hash.
Wenn ich das entsprechend austausche, dann sehe ich keine Fehler bei mir (perl 5.34).
Oh, sorry.
Das hatte ich bei mir lokal noch repariert, dann aber trotzdem die falsche Version hochgeladen.
Mea culpa
Ich hänge hier nochmal die Datei an, nun sollte die aber richtig sein.
Wie gesagt, es ist nicht auf allen Systemen reproduzierbar und ich weiß auch nicht, warum.
Das Modul hat sich seit März 2021 nicht mehr verändert.
Kann vielleicht von den anderen betroffenen die Datei aus dem Anhang mal ausprobieren?
Danke!
schöne Grüße
Martin
Will zum Protokoll geben, dass ich mit der letzten Version keine Probleme sehe.
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
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.
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
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
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
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
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
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
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
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
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
@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
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
@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
Danke Detlef :D
Keine Sorge, das stresst mich nicht.
Wär nur schön, wenn das Problem gelöst wäre.
Und wenn andere Reality-Soaps auf RTL2 schauen, mach ich eben Reality-Coding auf FHEM ;D
Ich fühl mich also wohl ;)
Hallo Martin,
falls es hilft, ich bekomme genau die gleiche Fehlermeldung wie Dethlef mit "verbose 5" im Logfile:
2022.02.06 20:15:46 1: TA_CMI_JSON (CMI_UVR16x2) - JSON problem: error parsing '5,
"Device":"87",
"Timestamp":1644178547
'. Skipping. Can be ignored if not occurring too often.
2022.02.06 20:15:46 5: TA_CMI_JSON (CMI_UVR16x2) - Set: CMI_UVR16x2 ?
2022.02.06 20:15:46 5: TA_CMI_JSON (CMI_UVR16x2) - Set: CMI_UVR16x2 ?
2022.02.06 20:15:46 5: TA_CMI_JSON (CMI_UVR16x2) - Set: CMI_UVR16x2 ?
2022.02.06 20:15:46 5: TA_CMI_JSON (CMI_UVR16x2) - Set: CMI_UVR16x2 ?
2022.02.06 20:15:53 5: TA_CMI_JSON (CMI_UVR16x2) - Set: CMI_UVR16x2 ?
2022.02.06 20:15:55 5: TA_CMI_JSON (CMI_UVR16x2) - Set: CMI_UVR16x2 ?
2022.02.06 20:15:55 5: TA_CMI_JSON (CMI_UVR16x2) - Set: CMI_UVR16x2 ?
2022.02.06 20:16:34 5: TA_CMI_JSON (CMI_UVR16x2) - Set: CMI_UVR16x2 ?
2022.02.06 20:16:36 5: TA_CMI_JSON (CMI_UVR16x2) - Set: CMI_UVR16x2 ?
2022.02.06 20:16:36 5: TA_CMI_JSON (CMI_UVR16x2) - Set: CMI_UVR16x2 ?
Die Antwort auf direkte JSON abfrage des CMI ist bei mir:
{ "Header":{ "Version":5, "Device":"87", "Timestamp":1644178925 }, "Data":{ "Inputs":[ { "Number":1, "AD":"A", "Value":{ "Value":9999.9, "Unit":"1" } }, { "Number":2, "AD":"A", "Value":{ "Value":57.6, "Unit":"1" } }, { "Number":3, "AD":"A", "Value":{ "Value":57.5, "Unit":"1" } }, { "Number":4, "AD":"A", "Value":{ "Value":9999.9, "Unit":"1" } }, { "Number":5, "AD":"A", "Value":{ "Value":9999.9, "Unit":"1" } }, { "Number":6, "AD":"A", "Value":{ "Value":57.0, "Unit":"1" } }, { "Number":7, "AD":"A", "Value":{ "Value":57.3, "Unit":"1" } }, { "Number":9, "AD":"A", "Value":{ "Value":18.4, "Unit":"1" } }, { "Number":10, "AD":"A", "Value":{ "Value":35.4, "Unit":"1" } }, { "Number":11, "AD":"A", "Value":{ "Value":27.1, "Unit":"1" } }, { "Number":12, "AD":"A", "Value":{ "Value":6.9, "Unit":"1" } }], "Outputs":[ { "Number":1, "AD":"A", "Value":{ "State":0, "Value":0, "Unit":"0" } }, { "Number":2, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":3, "AD":"D", "Value":{ "Value":1, "Unit":"43" } }, { "Number":4, "AD":"D", "Value":{ "Value":1, "Unit":"43" } }, { "Number":5, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":6, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":12, "AD":"A", "Value":{ "State":0, "Value":0.0, "Unit":"8" } }], "DL-Bus":[ { "Number":1, "AD":"A", "Value":{ "Value":28.3, "Unit":"1" } }, { "Number":2, "AD":"A", "Value":{ "Value":26.0, "Unit":"1" } }, { "Number":3, "AD":"A", "Value":{ "Value":0, "Unit":"3" } }, { "Number":4, "AD":"A", "Value":{ "Value":28.0, "Unit":"1" } }, { "Number":5, "AD":"A", "Value":{ "Value":9999.9, "Unit":"1" } }, { "Number":6, "AD":"A", "Value":{ "Value":48.0, "Unit":"1" } }, { "Number":7, "AD":"A", "Value":{ "Value":0.0, "Unit":"8" } }, { "Number":8, "AD":"A", "Value":{ "Value":0.0, "Unit":"8" } }, { "Number":9, "AD":"A", "Value":{ "Value":0.00, "Unit":"10" } }, { "Number":10, "AD":"A", "Value":{ "Value":23.84, "Unit":"10" } }, { "Number":11, "AD":"A", "Value":{ "Value":0.00, "Unit":"10" } }, { "Number":12, "AD":"A", "Value":{ "Value":0.06, "Unit":"70" } }, { "Number":13, "AD":"A", "Value":{ "Value":16, "Unit":"0" } }]}, "Status":"OK", "Status code":0 }
Grüße
Stephan
ZitatWas mach ich da denn nun wieder falsch?
Du nichts.
Ich habe bei der letzen Aenderung dem Regexp das "Mehrzeilige" unbeabsichtigt aberkannt.
Anders gesagt: falls in einem JSON auf eine Zahl ein Newline folgte, hat der Parser versagt.
Habs gefixt.
Dank dir!
Dann warten wir mal gespannt auf das morgige Update
Bei mir funktioniert heute alles wieder.
Invalide JSONs tauchen jetzt mit Logmeldung auf.
Wäre nett, wenn der Eine oder Andere mal ein Auge drauf wirft, und berichtet, wie häufig die so auftreten.
Ich werde das natürlch auch tun.
Derzeit wird die Meldung noch auf Verbose 1 geschrieben, wenns nervt kann ich das gern erhöhen.
schöne Grüße
Martin
Hallo Martin,
mit meiner CMI V1.38.3 und FHEM auf Raspi 3, Kernel 5.10.17 und Perl 5.28.1 läuft seit dem Update heute morgen wieder alles rund!
Vielen Dank für deine Wochenend-Arbeit, auch an Rudi!!
Mit besten Grüßen,
Lutz
Hallo Martin, hallo Rudi,
ich kann das auch bestätigen. Seit dem "update all" heute morgen läuft das Einlesen des CMI wieder einwandfrei.
Danke.
Stephan
Hallo Martin, hallo Rudi,
auch bei mir ist alles wieder bestens !
Vielen Dank das ihr so schnell bemüht wart das Problem zu lösen !
Das erinnert mich immer daran warum ich mich vor Jahren für fhem entschieden habe. ;) :D
Gruß Detlef
Hallo Martin,
seit Jahren habe ich das Modul erfolgreich in Verwendung. Seit einiger Zeit habe ich diese Einträge im log:2022.10.24 12:13:37 4: TA_CMI_JSON (UVR1611) - RequestOutputStates http://10.152.52.204/INCLUDE/agx2.cgi?nodex2=01&_=1666606417.99738
[Mon Oct 24 12:13:38 2022] fhem.pl: Use of uninitialized value $value in string eq at fhem.pl line 4992.
[Mon Oct 24 12:13:38 2022] fhem.pl: Use of uninitialized value $readingValue in hash element at ./FHEM/72_TA_CMI_JSON.pm line 580.
[Mon Oct 24 12:13:38 2022] fhem.pl: Use of uninitialized value $readingValue in concatenation (.) or string at ./FHEM/72_TA_CMI_JSON.pm line 580.
[Mon Oct 24 12:13:38 2022] fhem.pl: Use of uninitialized value $readingValue in concatenation (.) or string at ./FHEM/72_TA_CMI_JSON.pm line 583.
2022.10.24 12:13:38 5: TA_CMI_JSON (UVR1611) - readingName: A01_Pumpe_Heizkreislauf, readingNameIndex: 1, valueIndex: 2, value:
[Mon Oct 24 12:13:38 2022] fhem.pl: Use of uninitialized value $value in string eq at fhem.pl line 4992.
[Mon Oct 24 12:13:38 2022] fhem.pl: Use of uninitialized value $readingValue in hash element at ./FHEM/72_TA_CMI_JSON.pm line 580.
[Mon Oct 24 12:13:38 2022] fhem.pl: Use of uninitialized value $readingValue in concatenation (.) or string at ./FHEM/72_TA_CMI_JSON.pm line 580.
[Mon Oct 24 12:13:38 2022] fhem.pl: Use of uninitialized value $readingValue in concatenation (.) or string at ./FHEM/72_TA_CMI_JSON.pm line 583.
2022.10.24 12:13:38 5: TA_CMI_JSON (UVR1611) - readingName: A03_Mischer_Heizkreislauf_AUF, readingNameIndex: 2, valueIndex: 3, value:
[Mon Oct 24 12:13:38 2022] fhem.pl: Use of uninitialized value $value in string eq at fhem.pl line 4992.
[Mon Oct 24 12:13:38 2022] fhem.pl: Use of uninitialized value $readingValue in hash element at ./FHEM/72_TA_CMI_JSON.pm line 580.
[Mon Oct 24 12:13:38 2022] fhem.pl: Use of uninitialized value $readingValue in concatenation (.) or string at ./FHEM/72_TA_CMI_JSON.pm line 580.
[Mon Oct 24 12:13:38 2022] fhem.pl: Use of uninitialized value $readingValue in concatenation (.) or string at ./FHEM/72_TA_CMI_JSON.pm line 583.
2022.10.24 12:13:38 5: TA_CMI_JSON (UVR1611) - readingName: A04_Mischer_Heizkreislauf_ZU, readingNameIndex: 3, valueIndex: 4, value:
[Mon Oct 24 12:13:38 2022] fhem.pl: Use of uninitialized value $value in string eq at fhem.pl line 4992.
[Mon Oct 24 12:13:38 2022] fhem.pl: Use of uninitialized value $readingValue in hash element at ./FHEM/72_TA_CMI_JSON.pm line 580.
[Mon Oct 24 12:13:38 2022] fhem.pl: Use of uninitialized value $readingValue in concatenation (.) or string at ./FHEM/72_TA_CMI_JSON.pm line 580.
[Mon Oct 24 12:13:38 2022] fhem.pl: Use of uninitialized value $readingValue in concatenation (.) or string at ./FHEM/72_TA_CMI_JSON.pm line 583.
2022.10.24 12:13:38 5: TA_CMI_JSON (UVR1611) - readingName: A05_Anforderung_Kessel, readingNameIndex: 4, valueIndex: 5, value:
[Mon Oct 24 12:13:38 2022] fhem.pl: Use of uninitialized value $value in string eq at fhem.pl line 4992.
[Mon Oct 24 12:13:38 2022] fhem.pl: Use of uninitialized value $readingValue in hash element at ./FHEM/72_TA_CMI_JSON.pm line 580.
[Mon Oct 24 12:13:38 2022] fhem.pl: Use of uninitialized value $readingValue in concatenation (.) or string at ./FHEM/72_TA_CMI_JSON.pm line 580.
[Mon Oct 24 12:13:38 2022] fhem.pl: Use of uninitialized value $readingValue in concatenation (.) or string at ./FHEM/72_TA_CMI_JSON.pm line 583.
2022.10.24 12:13:38 5: TA_CMI_JSON (UVR1611) - readingName: A06_Pumpe_Ventil_Poolkreislauf, readingNameIndex: 5, valueIndex: 6, value:
2022.10.24 12:13:38 5: TA_CMI_JSON (UVR1611) - Output Data -2: ;;;
2022.10.24 12:13:38 5: TA_CMI_JSON (UVR1611) - outputStatesInterval 10
Das ist die Konfiguration:defmod UVR1611 TA_CMI_JSON 10.152.52.204 1 I,O
attr UVR1611 group Anlagen
attr UVR1611 icon sani_boiler_temp
attr UVR1611 interval 90
attr UVR1611 outputStatesInterval 10
attr UVR1611 prettyOutputStates 1
attr UVR1611 readingNamesInputs 1:S01 2:S02_Temperatur_Puffer_Warmwasser_oben 3:S03_Temperatur_Puffer_oben 4:S04_Temperatur_Puffer_Warmasser_unten 5:S05_Temperatur_Puffer_unten 6:S06_Temperatur_Solar_VL 7:S07_Temperatur_Solar_RL 8:S08_TKessel_VL 9:S09 10:S10_Heizkreis_VL 11:S11_Poolkreis_RL 12:S12_Temperatur_Aussen 13:S13_Temperatur_Vorraum 14:S14_Poolcontroller_Relais8_PoolHeizung_Anforderung 15:S15_Poolcontroller_nc 16:S16
attr UVR1611 readingNamesOutputs 1:A01_Pumpe_Heizkreislauf 2:A03_Mischer_Heizkreislauf_AUF 3:A04_Mischer_Heizkreislauf_ZU 4:A05_Anforderung_Kessel 5:A06_Pumpe_Ventil_Poolkreislauf
attr UVR1611 room Heizraum,Keller
attr UVR1611 verbose 5
setstate UVR1611 OK
setstate UVR1611 2022-10-24 07:18:34 A01_Pumpe_Heizkreislauf 30
setstate UVR1611 2022-10-23 21:56:44 A01_Pumpe_Heizkreislauf_State_Pretty ?:
setstate UVR1611 2022-10-23 21:23:41 A03_Mischer_Heizkreislauf_AUF 0
setstate UVR1611 2022-10-23 21:56:44 A03_Mischer_Heizkreislauf_AUF_State_Pretty ?:
setstate UVR1611 2022-10-24 08:51:16 A04_Mischer_Heizkreislauf_ZU 0
setstate UVR1611 2022-10-23 21:56:44 A04_Mischer_Heizkreislauf_ZU_State_Pretty ?:
setstate UVR1611 2022-10-24 08:39:06 A05_Anforderung_Kessel 0
setstate UVR1611 2022-10-23 21:56:44 A05_Anforderung_Kessel_State_Pretty ?:
setstate UVR1611 2022-10-24 12:11:01 A06_Pumpe_Ventil_Poolkreislauf 0
setstate UVR1611 2022-10-23 21:56:44 A06_Pumpe_Ventil_Poolkreislauf_State_Pretty ?:
setstate UVR1611 2022-10-23 10:19:41 S01 0
setstate UVR1611 2022-10-24 12:11:01 S02_Temperatur_Puffer_Warmwasser_oben 49.9
setstate UVR1611 2022-10-24 12:11:01 S03_Temperatur_Puffer_oben 46.8
setstate UVR1611 2022-10-24 12:11:01 S04_Temperatur_Puffer_Warmasser_unten 44.3
setstate UVR1611 2022-10-24 12:07:58 S05_Temperatur_Puffer_unten 34.2
setstate UVR1611 2022-10-24 12:11:01 S06_Temperatur_Solar_VL 57.2
setstate UVR1611 2022-10-24 12:11:01 S07_Temperatur_Solar_RL 30.2
setstate UVR1611 2022-10-24 12:11:01 S08_TKessel_VL 42.2
setstate UVR1611 2018-11-21 10:42:47 S09 0
setstate UVR1611 2022-10-24 12:11:01 S10_Heizkreis_VL 41.7
setstate UVR1611 2022-10-24 12:01:05 S11_Poolkreis_RL 25.0
setstate UVR1611 2022-10-24 12:11:01 S12_Temperatur_Aussen 17.2
setstate UVR1611 2022-10-24 12:11:01 S13_Temperatur_Vorraum 21.3
setstate UVR1611 2022-10-23 16:18:48 S14_Poolcontroller_Relais8_PoolHeizung_Anforderung 0
setstate UVR1611 2018-11-21 10:42:47 S15_Poolcontroller_nc 0
setstate UVR1611 2018-11-21 12:39:28 S16 0
Hast du eine Idee wie ich diese Einträge loswerden kann?
Vielen Dank!
Michael
Hallo Michael,
das kommt daher, weil in den Output States keine Werte geliefert werden.
Kannst du mal reinkopieren, was die URL, die bei RequestOutputStates im Log gezeigt wird, im Browser zurück liefert?
Du musst allerdings das 60 Sekunden Zeitfenster einhalten, sonst steht da nur TOO MANY REQUESTS, was uns hier nix hilft :-)
schöne Grüße
Martin
Wenn ich z.B. http://10.152.52.204/INCLUDE/agx2.cgi?nodex2=01&_=1666706911.5599 in Chrome eingebe kommt gar nichts.
Allerdings, der letzte Output in der Liste befüllt das Reading A06_Pumpe_Ventil_Poolkreislauf ???
[Tue Oct 25 16:08:32 2022] fhem.pl: Use of uninitialized value $value in string eq at fhem.pl line 4992.
[Tue Oct 25 16:08:32 2022] fhem.pl: Use of uninitialized value $readingValue in hash element at ./FHEM/72_TA_CMI_JSON.pm line 580.
[Tue Oct 25 16:08:32 2022] fhem.pl: Use of uninitialized value $readingValue in concatenation (.) or string at ./FHEM/72_TA_CMI_JSON.pm line 580.
[Tue Oct 25 16:08:32 2022] fhem.pl: Use of uninitialized value $readingValue in concatenation (.) or string at ./FHEM/72_TA_CMI_JSON.pm line 583.
2022.10.25 16:08:32 5: TA_CMI_JSON (UVR1611) - readingName: A01_Pumpe_Heizkreislauf, readingNameIndex: 1, valueIndex: 2, value:
[Tue Oct 25 16:08:32 2022] fhem.pl: Use of uninitialized value $value in string eq at fhem.pl line 4992.
[Tue Oct 25 16:08:32 2022] fhem.pl: Use of uninitialized value $readingValue in hash element at ./FHEM/72_TA_CMI_JSON.pm line 580.
[Tue Oct 25 16:08:32 2022] fhem.pl: Use of uninitialized value $readingValue in concatenation (.) or string at ./FHEM/72_TA_CMI_JSON.pm line 580.
[Tue Oct 25 16:08:32 2022] fhem.pl: Use of uninitialized value $readingValue in concatenation (.) or string at ./FHEM/72_TA_CMI_JSON.pm line 583.
2022.10.25 16:08:32 5: TA_CMI_JSON (UVR1611) - readingName: A03_Mischer_Heizkreislauf_AUF, readingNameIndex: 2, valueIndex: 3, value:
[Tue Oct 25 16:08:32 2022] fhem.pl: Use of uninitialized value $value in string eq at fhem.pl line 4992.
[Tue Oct 25 16:08:32 2022] fhem.pl: Use of uninitialized value $readingValue in hash element at ./FHEM/72_TA_CMI_JSON.pm line 580.
[Tue Oct 25 16:08:32 2022] fhem.pl: Use of uninitialized value $readingValue in concatenation (.) or string at ./FHEM/72_TA_CMI_JSON.pm line 580.
[Tue Oct 25 16:08:32 2022] fhem.pl: Use of uninitialized value $readingValue in concatenation (.) or string at ./FHEM/72_TA_CMI_JSON.pm line 583.
2022.10.25 16:08:32 5: TA_CMI_JSON (UVR1611) - readingName: A04_Mischer_Heizkreislauf_ZU, readingNameIndex: 3, valueIndex: 4, value:
[Tue Oct 25 16:08:32 2022] fhem.pl: Use of uninitialized value $value in string eq at fhem.pl line 4992.
[Tue Oct 25 16:08:32 2022] fhem.pl: Use of uninitialized value $readingValue in hash element at ./FHEM/72_TA_CMI_JSON.pm line 580.
[Tue Oct 25 16:08:32 2022] fhem.pl: Use of uninitialized value $readingValue in concatenation (.) or string at ./FHEM/72_TA_CMI_JSON.pm line 580.
[Tue Oct 25 16:08:32 2022] fhem.pl: Use of uninitialized value $readingValue in concatenation (.) or string at ./FHEM/72_TA_CMI_JSON.pm line 583.
2022.10.25 16:08:32 5: TA_CMI_JSON (UVR1611) - readingName: A05_Anforderung_Kessel, readingNameIndex: 4, valueIndex: 5, value:
[Tue Oct 25 16:08:32 2022] fhem.pl: Use of uninitialized value $value in string eq at fhem.pl line 4992.
[Tue Oct 25 16:08:32 2022] fhem.pl: Use of uninitialized value $readingValue in hash element at ./FHEM/72_TA_CMI_JSON.pm line 580.
[Tue Oct 25 16:08:32 2022] fhem.pl: Use of uninitialized value $readingValue in concatenation (.) or string at ./FHEM/72_TA_CMI_JSON.pm line 580.
[Tue Oct 25 16:08:32 2022] fhem.pl: Use of uninitialized value $readingValue in concatenation (.) or string at ./FHEM/72_TA_CMI_JSON.pm line 583.
2022.10.25 16:08:32 5: TA_CMI_JSON (UVR1611) - readingName: A06_Pumpe_Ventil_Poolkreislauf, readingNameIndex: 5, valueIndex: 6, value:
2022.10.25 16:08:32 5: TA_CMI_JSON (UVR1611) - Output Data -2: ;;;
2022.10.25 16:08:32 5: TA_CMI_JSON (UVR1611) - outputStatesInterval 10
Sorry ich hatte keine Email gekriegt, dass hier ein neuer Beitrag gekommen ist.
Dass da garnix kommt im Chrome ist zwar doof, würde aber erklären, warum auch in FHEM nix kommt.
Kennst du dich mit F12 und den Dev-Tools in Chrome aus?
Hallo,
ich habe dein Modul im Einsatz und kann erfolgreich Fixwerte ändern.
Leider kommen bei mir keine Readings an, da ich mit den Parametern AM lesen muss.
Ich habe eine CMI mit CAN-BC2 und hier sind alle Werte die für mich interessant sind unter Modbus hinterlegt und nicht als CAN Input oder Output.
Kann das Modul dementsprechend erweitert werden?
Folgendes kommt zurück mit den Parametern AM:
{ "Header":{ "Version":6, "Device":"8D", "Timestamp":1672830232 }, "Data":{ "Modbus":[ { "Number":1, "AD":"A", "Value":{ "Value":6.7, "Unit":"58" } }, { "Number":2, "AD":"A", "Value":{ "Value":18.1, "Unit":"58" } }, { "Number":3, "AD":"A", "Value":{ "Value":56.5, "Unit":"1" } }, { "Number":4, "AD":"A", "Value":{ "Value":8.3, "Unit":"58" } }, { "Number":5, "AD":"A", "Value":{ "Value":7.4, "Unit":"58" } }, { "Number":6, "AD":"A", "Value":{ "Value":5.0, "Unit":"58" } }, { "Number":7, "AD":"A", "Value":{ "Value":30.6, "Unit":"1" } }, { "Number":8, "AD":"A", "Value":{ "Value":-1.2, "Unit":"1" } }, { "Number":9, "AD":"A", "Value":{ "Value":19, "Unit":"0" } }, { "Number":10, "AD":"A", "Value":{ "Value":31, "Unit":"0" } }, { "Number":11, "AD":"A", "Value":{ "Value":201, "Unit":"0" } }, { "Number":12, "AD":"A", "Value":{ "Value":9.5, "Unit":"58" } }, { "Number":13, "AD":"A", "Value":{ "Value":56.4, "Unit":"1" } }, { "Number":14, "AD":"A", "Value":{ "Value":50, "Unit":"0" } }, { "Number":15, "AD":"A", "Value":{ "Value":42.6, "Unit":"1" } }, { "Number":16, "AD":"A", "Value":{ "Value":42.6, "Unit":"1" } }, { "Number":17, "AD":"A", "Value":{ "Value":0, "Unit":"0" } }, { "Number":18, "AD":"A", "Value":{ "Value":40.6, "Unit":"1" } }, { "Number":19, "AD":"A", "Value":{ "Value":0.0, "Unit":"8" } }, { "Number":20, "AD":"A", "Value":{ "Value":0, "Unit":"0" } }, { "Number":21, "AD":"A", "Value":{ "Value":0, "Unit":"0" } }, { "Number":22, "AD":"A", "Value":{ "Value":1, "Unit":"0" } }, { "Number":23, "AD":"D", "Value":{ "Value":1, "Unit":"43" } }, { "Number":24, "AD":"A", "Value":{ "Value":93.5, "Unit":"8" } }, { "Number":25, "AD":"A", "Value":{ "Value":28.2, "Unit":"1" } }, { "Number":26, "AD":"A", "Value":{ "Value":25.9, "Unit":"1" } }, { "Number":27, "AD":"A", "Value":{ "Value":28.4, "Unit":"1" } }, { "Number":28, "AD":"A", "Value":{ "Value":3.7, "Unit":"1" } }, { "Number":29, "AD":"A", "Value":{ "Value":2, "Unit":"0" } }, { "Number":30, "AD":"A", "Value":{ "Value":2, "Unit":"0" } }, { "Number":31, "AD":"A", "Value":{ "Value":43.0, "Unit":"1" } }, { "Number":32, "AD":"A", "Value":{ "Value":-3276.7, "Unit":"1" } }, { "Number":33, "AD":"A", "Value":{ "Value":-3276.7, "Unit":"1" } }, { "Number":34, "AD":"D", "Value":{ "Value":1, "Unit":"43" } }, { "Number":35, "AD":"A", "Value":{ "Value":0.45, "Unit":"10" } }, { "Number":36, "AD":"A", "Value":{ "Value":0, "Unit":"0" } }, { "Number":37, "AD":"A", "Value":{ "Value":46.0, "Unit":"58" } }, { "Number":38, "AD":"A", "Value":{ "Value":43.0, "Unit":"58" } }, { "Number":39, "AD":"A", "Value":{ "Value":1, "Unit":"0" } }, { "Number":40, "AD":"A", "Value":{ "Value":120, "Unit":"0" } }, { "Number":41, "AD":"A", "Value":{ "Value":240, "Unit":"0" } }, { "Number":42, "AD":"A", "Value":{ "Value":1, "Unit":"0" } }, { "Number":43, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":44, "AD":"A", "Value":{ "Value":0.0, "Unit":"8" } }, { "Number":45, "AD":"A", "Value":{ "Value":6.6, "Unit":"58" } }, { "Number":46, "AD":"A", "Value":{ "Value":3, "Unit":"0" } }, { "Number":47, "AD":"A", "Value":{ "Value":1, "Unit":"0" } }, { "Number":48, "AD":"A", "Value":{ "Value":-1, "Unit":"0" } }, { "Number":49, "AD":"A", "Value":{ "Value":2, "Unit":"0" } }, { "Number":50, "AD":"A", "Value":{ "Value":0, "Unit":"0" } }, { "Number":51, "AD":"A", "Value":{ "Value":0, "Unit":"0" } }, { "Number":52, "AD":"A", "Value":{ "Value":0, "Unit":"0" } }, { "Number":53, "AD":"A", "Value":{ "Value":3, "Unit":"0" } }, { "Number":54, "AD":"A", "Value":{ "Value":0, "Unit":"0" } }, { "Number":55, "AD":"A", "Value":{ "Value":10100000, "Unit":"0" } }, { "Number":56, "AD":"A", "Value":{ "Value":3115, "Unit":"0" } }, { "Number":57, "AD":"A", "Value":{ "Value":5.1, "Unit":"58" } }, { "Number":58, "AD":"A", "Value":{ "Value":20.0, "Unit":"1" } }, { "Number":59, "AD":"A", "Value":{ "Value":7536, "Unit":"0" } }, { "Number":60, "AD":"A", "Value":{ "Value":867, "Unit":"0" } }, { "Number":61, "AD":"D", "Value":{ "Value":0, "Unit":"43" } }, { "Number":62, "AD":"A", "Value":{ "Value":202, "Unit":"0" } }, { "Number":63, "AD":"A", "Value":{ "Value":0.86, "Unit":"10" } }, { "Number":64, "AD":"A", "Value":{ "Value":12604, "Unit":"0" } }]}, "Status":"OK", "Status code":0 }
Lese die Werte momentan über web-scraping aus.
Hallo dreitakter,
Werd ich mir morgen ansehen
Lg
Hallo @delMar,
ich häng mich mit meiner Frage bzw. meinem Problemchen mal hier dran - in den Beiträgen hatte ich dazu nichts konkretes gefunden (was nicht heißt, dass es bereits irgendwo steht):
Ich habe das Modul mit meinem C.M.I. erfolgreich aktiviert und bekomme darüber auch die eingestellten Werte (Readings).
Allerdings habe ich neben der Hauptsteuerung (UVR16x2 als Node 1) noch eine Warmwasserstation die über ein CAN-I/O45 (als Node 10) angebunden ist.
Ich habe auch für beide ein Device angelegt, aber eines von beiden wird dann wegen "TOO MANY REQUESTS" nicht aktualisiert.
Das kann man ein wenig über das "interval" Attribut steuern, funktioniert aber nur in solange wie die Requests beider Geräte > 60 Sekunden auseinander sind, was irgendwann nicht mehr der Fall ist...
Behelfsmäßig wollte ich mir dann mit einem zeitgesteuerten manuellen update behelfen (also abwechselnd das eine oder das andere device mittels
get CMI_xy update
behelfen. Allerdings müsste man dafür in der Lage sein, den Timer gänzlich auszuschalten...
Dabei sind mir folgende Dinge aufgefallen:
- Das Attribut Interval wird "nur" bei definition und den global events initialized bzw. rereadcfg im hash aktualisiert...
- Das Interval lässt sich nicht mit Wert 0 komplett deaktivieren (wie das bei HTTPMOD der Fall wäre).
Den ersten Punkt habe ich bei mir lokal quick&dirty gefixt indem ich for Neudefinition des timers ein
$hash->{INTERVAL} = AttrVal( $name, "interval", "60" );
in
sub ParseHttpResponse($$$)
spendiert habe. Den zweiten Punkt kann ich da theoretisch auch so einbauen.
Man müsste die Timerdefinition bei "0" lediglich "verhindern":
if ( defined $hash->{QUERYPARAM} ) {
my $functionName = "TA_CMI_JSON::GetStatus";
RemoveInternalTimer($hash, $functionName);
$hash->{INTERVAL} = AttrVal( $name, "interval", "60" );
if($hash->{INTERVAL} > 0) {
InternalTimer( gettimeofday() + $hash->{INTERVAL}, $functionName, $hash, 0 );
}
}
return undef;
Das löst zwischenzeitlich mein Problem "gleichzeitiger" bzw zumindest kollidierender Abfragen und ich kann mir eine eigene Logik überlegen - was nicht so kompliziert sein sollte.
Frage bzw Vorschläge (bin leider was Modulentwicklung angeht relativ unwissend):
- Könntest du eine Korrektur einbauen um das interval zur Laufzeit ändern zu können bzw die Änderung zur Laufzeit auch anzuwenden? Eventuell braucht man den Wert gar nicht im Hash zu speichern sondern liest ihn bei Bedarf mittels AttrVal?
- Könntest du die Option mit Interval 0 einbauen bzw. eine option die automatischen Intervalle zu deaktivieren?
- Gibt es eine Möglichkeit die InternalTimer von 2 Nodes am gleichen CMI aufeinander abzustimmen oder braucht es dafür ein "Zweistufiges Modulkonzept"? Eines was den Datenaustausch (kollisionsfrei) über die JSON-API des CMI vornimmt und ein anderes, für die Werte der jeweiligen Devices? Wahrscheinlich ist das für die Anzahl Leute die sowas betrifft zu viel Aufwand... Und es gibt ja noch "Can over Ethernet".
- Sollte man dem Modul eine attr (https://wiki.fhem.de/wiki/DevelopmentModuleIntro#X_Attr) Funktion spendieren um die Werte der Attribute zu prüfen?
Sorry, das war jetzt vielleicht etwas viel auf einmal. ;-)
Danke und Gruß,
Tobias
Hallo zusammen,
ich habe unserer Heizungssteuereung mit einem CMI ausgestattet und wollte diese nun mit dem Modul TA_CMI_JSON in mein FHEM einbinden. Leider ohne Erfolg. Ich habe das Forum schon einmal durchsucht, bin aber auf keine Lösung gestoßen. Ich hoffe es kann mir jemand weiterhelfen.
Konfiguration:
- UVR16x2 (Version 1.57) CAN Bus Koten 2
- CMI-S (Version 1.41.3-B0.00-H1S) CAN Bus Koten 56
Über die Web-Oberfläche des CMI kann ich auf die UVR zugreifen.
Ich habe folgende Konfiguration:
defmod cmi TA_CMI_JSON 192.168.20.30 2 O
attr cmi password admin
attr cmi username admin
-> Fehlermeldung: error read from http://192.168.20.30:80 timed out
Ich habe versucht, den Fehler ein bisschen einzugrenzen. Scheinbar klappt das Anmelden mit Username / Passwort nicht richtig. Evtl ist dies kein Problem vom Modul TA_CMI_JSON sondern ein Grundsätzlichen.
Folgendes habe ich getestet:
- Anlegen eines HTTPMOD:
defmod cmi_Test HTTPMOD http://192.168.20.30/SD/lan_settings.txt 60
bzw.
defmod cmi_Test HTTPMOD http://192.168.20.30/INCLUDE/api.cgi?jsonnode=2&jsonparam=I,O 90
attr cmi_Test showBody 1
-> Fehlermeldung: error read from http://192.168.20.30:80 timed out
- Eingabe in Chrome:
http://192.168.20.30/INCLUDE/api.cgi?jsonnode=2&jsonparam=I,O
http://192.168.20.30/SD/lan_settings.txt
hier bekomme ich nach Eingabe der Anmelde-Daten (admin/admin) gültige Werte.
-> funktioniert prinzipiell
- Eingabe in de Linux Console auf dem FHEM Server:
curl http://192.168.20.30/SD/lan_settings.txt
curl http://192.168.20.30/INCLUDE/api.cgi?jsonnode=2&jsonparam=I,O
Antwort:
<head><title>CMI Server Error</title></head><body><h2>Error 401 - Unauthorized Access</h2>You are not authorized to access this server.<hr><br><a title="www.ta.co.at"
target="_blank" href="http://www.ta.co.at">www.ta.co.at</a>| © Technische Alternative RT GmbH, Amaliendorf </body>
Die gleiche Meldung bekomme ich auch in Chrome, wenn ich keine Anmeldedaten angebe
- Nächster Versuch mit PW Übergabe:
Chrome: http://admin:admin@192.168.20.30/SD/lan_settings.txt
Chrome: http://admin:admin@192.168.20.30/INCLUDE/api.cgi?jsonnode=2&jsonparam=I,O
Console: curl http://admin:admin@192.168.20.30/SD/lan_settings.txt
-> Richtige Rückgabe (Text file bzw JSON)
Aber:
HTTPMOD: http://admin:admin@192.168.20.30/SD/lan_settings.txt 60
HTTPMOD: http://admin:admin@192.168.20.30/INCLUDE/api.cgi?jsonnode=2&jsonparam=I,O 60
-> Fehlermeldung: Timeout
Console: curl http://admin:admin@192.168.20.30/INCLUDE/api.cgi?jsonnode=2&jsonparam=I,O
- Rückgabe:
{"Header":{"Version":6,"Device":"87","Timestamp":1699102686},"Data":{},"Status":"TOO FEW ARGUMENTS","Status code":6}Der Befehl "jsonparam" ist entweder
falsch geschrieben oderkonnte nicht gefunden werden.
Nun bin ich mit meinem Wissen am Ende. Irgendwie wird das PW von FHEM nicht richtig übermittelt, oder das CMI akzeptiert das nicht.
Für weitere Anregungen zur Fehlereingrenzung bin ich Dankbar.
Viele Grüße
Joachim
Hier noch ein Update:
Zitat von: Jo_mit_FHEM am 04 November 2023, 13:52:31Console: curl http://admin:admin@192.168.20.30/INCLUDE/api.cgi?jsonnode=2&jsonparam=I,O
- Rückgabe:
{"Header":{"Version":6,"Device":"87","Timestamp":1699102686},"Data":{},"Status":"TOO FEW ARGUMENTS","Status code":6}Der Befehl "jsonparam" ist entweder
falsch geschrieben oderkonnte nicht gefunden werden.
Funktioniert doch. Man muss es nur richtig machen:
curl "http://admin:admin@192.168.20.30/INCLUDE/api.cgi?jsonnode=2&jsonparam=I,O"
Zitat von: Jo_mit_FHEM am 04 November 2023, 14:09:00Funktioniert doch. Man muss es nur richtig machen:
curl "http://admin:admin@192.168.20.30/INCLUDE/api.cgi?jsonnode=2&jsonparam=I,O"
Was ist denn der Unterschied zwischen der funktionierenden und nicht funktionierenden Zeile?
Hallo delMar
Zitat von: delMar am 04 November 2023, 14:39:05Was ist denn der Unterschied zwischen der funktionierenden und nicht funktionierenden Zeile?
Die Anführungszeichen um die Adresse
Hallo,
kurze Frage, wie mache ich es damit man mehrere CAN Knoten auslesen kann, sobald ich zwei oder drei CMI-Knoten X=1..3 mit "define cmi1 TA_CMI_JSON 192.168.1.110 X I,O,D" definiere bekomme ich an einen oder zweien "TOO MANY REQUESTS".
Danke
Zitat von: Maxl am 30 November 2023, 12:19:40sobald ich zwei oder drei CMI-Knoten X=1..3 mit "define cmi1 TA_CMI_JSON 192.168.1.110 X I,O,D" definiere bekomme ich an einen oder zweien "TOO MANY REQUESTS".
Hallo,
Too Many Requests kriegst du dann, wenn du das öfter als 1x pro Minute machst.
Bei mehreren Geräten ist das leider tatsächlich ein Problem; liegt aber an der JSON-API, nicht am Modul.
Je nachdem, welche Daten du benötigst, gibts aber evtl Ausweichmöglichkeiten.
Wie zB hier im Wiki https://wiki.fhem.de/wiki/TA_CMI_UVR16x2_UVR1611 unter "Anzeige des Status der Ausgänge" beschrieben
Hallo,
ok habe es so gelöst, das ich zyklisch alle paar min die Adressen hintereinander abfrage, funktioniert, alle Werte sind nun in FHEM.
Wie kann ich aber nun einen Eingang aus FHEM stimulieren, finde hierzu nur das "fixwertDigital" bzw. "fixwertAnalog".
Bedeutet das Eingänge können nicht überschrieben werden? Wie kann ich dann zum Beispiel in der UVR16xx einen beliebigen Fixwert
in CMI bekanngeben (Veroderung mit Eingang in TAPPS) um auf diese zugreifen zu können, das verstehe ich gerade noch nicht ganz.
Viele Grüße
Hallo Maxl,
dazu benötigst du das das CanOverEthernet Modul, denk ich:
https://wiki.fhem.de/wiki/CanOverEthernet
schöne Grüße
Martin
Hallo,
ich habe ein Problem mit diesem Modul seitdem ich gestern mein CMI auf die Firmware 1.42.1 upgedatet habe. Die Werte werden nicht mehr aktualisiert und ich bekomme "read from http://X.X.X.X:80 timed out".
Hat schon jemand die Firmware auf dem CMI und auch diese Probleme?
EDIT: Achso, wenn ich von der Linux Konsole aus mit wget und den Login Daten den entsprechenden API Aufruf starte dann bekomme ich die Daten geliefert. Ich kann in den Daten auch keinen Unterschied zu vorher feststellen. Ich nutze den "offiziellen" FHEM Docker Container.
Grüße
Rolf
Hallo Rolf,
"Timed out" ist eindeutig ein Netzwerkproblem.
Ist die Linux-Konsole auf dem Gerät, wo auch FHEM läuft?
schöne Grüße
Martin
Hallo Martin,
ja ich mache das auf der Konsole aus dem Container heraus. Die Kommunikation hat auch genau bis zum Firmware Update funktioniert und ab da nicht mehr.
Ich bin selbst IT-Admin allerdings ohne Programmierkenntnisse und habe ein bisschen versucht zu Diagnostizieren. Ich habe zum Test bei Versions den neuen API Level hinzugefügt und auch die neuen Einheiten. Geholfen hat es nicht. Erklären kann ich es mir auch nicht.
Edit: COE und auch Modbus over Ethernet zum gleichen CMI funktionieren auch noch.
Grüße
Rolf
Ok,
kennst du die Wiki-Seite vom Modul?
https://wiki.fhem.de/wiki/TA_CMI_UVR16x2_UVR1611
Auf der einen Seite wird die offizielle JSON-API verwendet.
Auf der anderen Seite greife ich auch Daten über eine API ab, die nicht "offiziell" ist, sondern nur vom Web-UI des CMI verwendet werden.
Kanns sein, dass genau diese Daten nicht mehr funktionieren, die von der offiziellen API aber schon?
Würde mit Firmware-Update und einer Änderung des UI zusammenpassen.
Ich kanns aktuell leider nicht testen, weil mein FHEM-Setup gerade tot ist.
Selber schuld, wenn man einen Raspberry Pi dafür verwendet....
Ich kenne die Wiki Seite. Ich rufe nur die Inputs und Outputs vom CMI ab. Ich habe diesen Verdacht aber auch schon gehabt und mal ausschließlich die Inputs abgerufen, das Resultat war das gleiche. Ich schaue nochmal ob ich noch was heraus finde was ich versuchen kann.
Einen Rollback der Firmware kann ich leider nicht machen weil ich dummerweise keine Datensicherung von der alten Firmware habe und mein CMI schon recht aufwändig konfiguriert ist.
Im Log steht auch der Aufruf der fehlschlägt, es ist der normale API Aufruf
TA_CMI_JSON (cmi) - error while requesting http://X.X.X.X/INCLUDE/api.cgi?jsonnode=2&jsonparam=I,O&_=1702234144.11837 - read from http://X.X.X.X:80 timed out
Es gibt auch keine Firewall dazwischen, FHEM läuft im gleichen IP Netz wie das CMI. Ich habe 2 CMIs mit der UVR Steuerung verbunden weil mir die 32 ModbusTCP Eingäge nicht gereicht haben. Das Problem tritt mit beiden auf, ich Dussel habe natürlich vorschnell beide aktualisiert.
Mir ist gerade aufgefallen das Jo_mit_FHEM im ersten Beitrag auf dieser Seite das gleiche Problem beschreibt, wenn auch mit einer 1.41.3 Firmware
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
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
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.
Window.jpg
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
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.
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!
Super, so funktioniert es bei mir auch.
Danke für die Info!
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"
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. :)
Hallo,
ich würde gerne fragen, ob es ein offizielles Update über die FHEM-Update-Funktion geben wird.
Danke und sG
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
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
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?
Hallo,
ich habe jetzt die oben aufgeführten Codeschnippsel zusammengeführt in einen Patch.
Außerdem habe ich die Eigenschaften erweitert um die Jsonparameter Na und Nd für die UVR1611 (siehe Bild im Anhang). Damit lassen sich bei mir die Datenleitungswerte der UVR1611 anzeigen.
Die Attribute habe ich erweitert um readingNamesNetworkAnalog und readingNamesNetworkDigital
@delMar kannst du das bitte prüfen und vielleicht in SVN einchecken?
Irgendwie sind die Anhänge verschwunden. Dann halt nochmal.
[url="https://forum.fhem.de/index.php?action=dlattach;attach=178621;type=preview;file"]patch_72_TA_CMI_Json.diff[/url]
2024-06-25_18-30.png
Hallo Martin,
ich bekomme mit dem Modul CMI einen Timeout. Die JSON Abfrage vom gleichen Rechner auf dem FHEM läuft ist o.k. also vermutlich kein Netzwerkproblem.
Hier meine Konfig:
Internals:
CMIURL 192.168.10.251
DEF 192.168.10.251 10 I,O,Na,Nd
FUUID 68110bfd-f33f-c0e9-56eb-044b8cb57cef125a
INTERVAL 60
NAME cmi
NODEID 10
NODEID_HEX 0a
NR 77
NTFY_ORDER 50-cmi
QUERYPARAM I,O,Na,Nd
STATE ERROR
TYPE TA_CMI_JSON
eventCount 106
READINGS:
2025-04-29 21:51:00 error read from http://192.168.10.251:80 timed out
2025-04-29 21:51:00 state ERROR
Attributes:
readingNamesInputs 1:WW_Oben 2:WW_Min 3:HZ_Oben 4:HZ_Min 5:SP_Unten
readingNamesOutputs 2:Pumpe_Zirkulation 7:Pumpe_WW
room Heizungsraum
verbose 5
Ich benutze eine UVR1611 deßhald auch Na und Nd, auch wenn ich Na und Nd weglasse bekomme ich den alle 5 Sekunden diesen Timeout:
2025-04-29_20:52:29 cmi ERROR
2025-04-29_20:52:29 cmi error: read from http://192.168.10.251:80 timed out
2025-04-29_20:53:34 cmi ERROR
2025-04-29_20:53:34 cmi error: read from http://192.168.10.251:80 timed out
2025-04-29_20:54:39 cmi ERROR
2025-04-29_20:54:39 cmi error: read from http://192.168.10.251:80 timed out
Ich habe es auch mit username und passwort versucht immer Timeout.
Bitte wie kann ich diesen Timeoutfehler eingrenzen?
Viele Grüße
Wollik