NEWS
Ekey Adapterfehler
-
Ich arbeite an der Einbindung einer Ekey-Multi-Zentrale über CV-Lan (192.168.2.250) in ioBroker (192.168.2.223).
Ekey Adapter Version 1.0.0.
Nach Rücksprache mit dem Ekey-Support <u>muss</u> für die Multi-Zentrale das Datenformat <u>zwingend</u> MULTI sein. Raw/Rare geht nicht.
Im MULTI Format werden die Daten als String mit Separator übertragen. Den voreingestellten Separator _ habe ich beibehalten.
Gem. der Doku darf der in der Zentrale hinterlegte User-Name max. 10-stellig sein.
Wird ein User-Name direkt von Separatoren eingeschlossen, dann werden die Datenpunkte richtig versorgt.
Wird an dem Namen ein Leerzeichen angefügt, dann werden die Datenpunkte verschoben und unvollständig zugeordnet.
Ich weiß nicht, ob ich damals den Namen (irrtümlich) mit blank am Ende eingegeben habe oder ob der Konverter das blank hinzufügt, auf jeden Fall ist die Änderung des Namens in der Zentrale nachträglich nicht mehr möglich. D.h. löschen und neu anlegen mit Finger-Anlernen wäre sehr aufwändig.
M.E. sollte daher der Adapter ein Leerzeichen hinter dem User Namen richtig verarbeiten können.
Die Bilder im Anhang zeigen die unterschiedlichen Datenpunktzuordnungen.
Den Fehler habe ich eingegrenzt, indem ich mit der Windows Software Packet-Sender (192.168.2.118) UDP-Datenstrings erzeugt habe und auch die Datenstrings vom CV Lan habe anzeigen lassen.
Bitte um Unterstützung.
PS: Terminierung bei RS485 ist an beiden Strangenden notwendig. CV Lan Konverter hat fest eingebaute Terminierung, muss also immer an einem Ende des Strangs sein. Zentrale und Fingerprint-Sender haben Dip-Schalter. Ist im Strang CV-Lan - Zentrale - FP-Leser die Zentrale terminiert, dann gibt es keine UDP-Daten!
5453_log-fp.jpg
5453_log-packet.jpg
5453_packet.jpg
5453_obj-packet-fp.jpg -
Dann leg doch mal ein GitHub issue mit den Details bzw dem link hierher an.
Gesendet vom Handy …
-
-
In welchem Pfad finde ich das ekey adapter main.js in meiner Raspberry-Installation?
-
\opt\iobroker\node_modules
Sent from my iPhone using Tapatalk
-
Offensichtlich ist der Fehler in den Attributen der split-Funktion:
const values = message.toString('ascii').split(/[\s_?]/);
Der message-String vom Konverter wird durch split in ein values-Array aufgeteilt. Als Trennzeichen werden im regulären Ausdruck space, underline und Fragezeichen angegeben.
Da der Vorname am Ende ein Leerzeichen hat, wird das Leerzeichen in ein values-Feld kopiert und die folgenden Werte verschieben sich in hintere Arrays.
Ich denke, folgender String ist korrekt:
const values = message.toString('ascii').split(/[_]/);
oder ohne den regulären Ausdruck
const values = message.toString('ascii').split("_");
Nun muss ich schauen, wie ich die Quelle in meiner ioBroker Installation korrigiere.
Frage an die ioBroker-Programmierer: Wie kommt so eine Änderung in den Auslieferungsstand (Prozess, Versionsnummer, etc.)?
-
Also der Split oben sollte bedeuten: SPlitte an
-
jedem Whitespace character (\s)
-
jedem underscore (_)
-
jedem Fragezeichen (?)
Also an einem dieser drei zeichen wenn es vorkommt. Da das "_" auch dabei ist sollte es gleichbedeutend sein mit deinem Split - es sei denn eins der anderen zeichen kommt vor darf aber nicht zum Splitten genutzt werden
-
-
Genau!
Das ist gerade mein Problem. Der Vorname hat am Ende ein Leerzeichen abbekommen, das zur Verschiebung der Werte in den Variablen führt. Das Handling der Dateneingabe in der Ekey-Multi-Zentrale ist sehr unbequem, Korrekturen nicht möglich. Display, Cursor und Buchstaben sind sehr klein.
Wenn also ein Name (versehentlich) mit Leerzeichen eingegeben wurde, dann kommt es zu Problemen.
Wenn z.B. ein Adelstitel vorhanden ist (von Richthofen), dann läuft es ebenfalls schief.
Am besten das Leerzeichen als Separator im Adapter rausnehmen und in der Hilfe zum Adapter erwähnen, dass als Separator für Home und Multi ausschließlich _ und Fragezeichen zulässig sind. Ggf. macht auch ; Sinn.
_ als Separator ist ja im Konverter bereits voreingestellt.
-
Der fix wäre einfach. Mach doch mal einen pull request
Geh auf GitHub, wähle das file aus. Oben rechts auf den Stift klicken, wirf das \s raus beschrieb unten was und warum und schicke es ab
Gesendet vom Handy …
-
Wie heißt der genaue Dateiname des Ekey Adapter main.js im \opt\iobroker\node_modules Verzeichnis?
… in meiner Windows 10 Installation ist es dann eher C:\iobroker\node_modules - nehme ich an.
-
Wie kann ich mit geringstem Aufwand das Ekey main.js ändern (ggf. direkt im System patchen)?
Oder wie kann ich die von mir modifizierte Quelle als Adapter in meine vorhandene ioBroker Installation integrieren?
-
Ich habe jetzt den Ekey Adapter aus github geclont und in meinem eigenen Repository mit der Änderung \s >> ; gepushed.
Wie bekomme ich jetzt diese Quellen als aktualisierten Ekey-Adapter in meine laufende ioBroker Installation runtergeladen?
-
Ok, hab den Pfad für einen Patch gefunden:
C:\ioBroker\node_modules\iobroker.ekey\main.js
-
Die Änderung ist gemerged und man kann von github die Version ausprobieren.
-
Danke
Kann ich die Version direkt in ioBroker laden (alten Adapter löschen, neuen installieren) oder muss ich besonders vorgehen?
-
Brauchst nichts deinstallieren. EInfach "drüber" Installieren per Admin
-
Super! Danke