ioBroker.wolf
ioBroker.wolf copied to clipboard
Can't parse DP : xxx, ... - length: 20
ISM8i V 1.80 Adapter V 1.7.0 mit Änderungen aus Issue #99 CHA 07
Fehler z.B. Can't parse DP : 345, type DPT_Unknown2 - data: 0620f080001404000000f0060159000101590300 - length: 20
Kommt mit verschiedenen Datenpunkten vor, besonders (ausschließlich?) den Unknown Allen Fehlermeldungen gemeinsam ist "lenght: 20"
Nach meiner Analyse des Protokollaufbaus in der Betriebsanleitung zum ISM8 bin ich darauf gestoßen, dass dieses Telegramm selbst eine Datenlänge von 0 Byte angibt. Ob diese Telegramme dann Sinn machen kann man natürlich fragen, aber sie werden vom ISM8i nun mal generiert. Der Code von main.js wertet dies nicht aus. Daher wird beim Setzen des DP ein Fehler generiert. Ich habe den Code modifiziert durch Einfügen einer Abfrage in function setState try { if ( data.length <= 20 ) { //ignorieren, da Fehler ausgelöst wird //dp == 353 || dp == 344 || dp == 345 } else {
Seit dieser Modifikation habe ich keine Warnings mehr Bei dem Code bin ich von der Modifikation laut Issue #99 ausgegangen. anbei die modifizierte Date
Modifiziertes File: main.js.txt
Cool danke, in welchem Feld der Nachricht steht denn die länger von 0?
Cool danke, in welchem Feld der Nachricht steht denn die länger von 0?
Protokollaufbau siehe Anlage Seite 20
in meinem Beispieltelegramm 0620 f080 0014 0400 0000 f0 06 0159 0001 0159 03 00 die letzten 8 Byte: 0159 First DP ID / Adresse DP 03 First DP command 00 First DP length / hier eben 00
Man kann es auch an der "Frame size" hier 0014 (3. Gruppe) erkennen, dass keine Daten (ab 20. Byte bei Zählung ab 0) folgen oder im Code: val = decode(datapoints[dp].type, data.slice(20), dp); Dieses slice(20) gibt's nicht mehr
ISM8i_-_eBus___Ethernet-Schnittstelle_Montageanleitung_und_Bedienungsanleitung_09_2022.pdf