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

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

Vorheriges Thema - Nächstes Thema

delMar

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 ;)
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

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

hausbau_toel

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

rudolfkoenig

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.

delMar

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

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

delMar

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
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

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

GrazPi

Hallo Martin,
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
FHEM prod auf RazBerry 3, Dev auf virtuellem RasPi

hausbau_toel

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

TeleDet

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

tremichl

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
Wir haben keine Ahnung davon, was wir nicht wissen

delMar

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
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

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

tremichl

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
Wir haben keine Ahnung davon, was wir nicht wissen

delMar

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?
Maintainer von: ZoneMinder, TA_CMI_JSON, ONKYO_AVR, DENON_AVR, CanOverEthernet, IPCAM.

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

dreitakter

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.

delMar

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

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

tobi01001

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 Funktion spendieren um die Werte der Attribute zu prüfen?

Sorry, das war jetzt vielleicht etwas viel auf einmal. ;-)

Danke und Gruß,
Tobias
FHEM@UbuntuServer on Lenovo ThinkCentre M900 [i5-6500T / 8GB RAM] MySQL-DbLog, Grafana, FTUI3 / HmIP incl. CCU3 / LGESS / Wärempumpe über TA CMI und CANoE / Shellies u.v.m.