NEWS
Test Adapter oekofen-json v0.2.x GitHub
-
Hallo @chaozmc,
(ich bin auf github der gttrmnn) und habe gerade die 0.1.0 installiert. Egal ob ich utf8 oder latin1, wird immer das ?-Zeichen angezeigt.
Ich habe in FHEM eine Anbindung (selbst programmiert) schon länger laufen. Dort allerdings ohne Einheiten. Sonst wäre mir schon viel länger das da auch aufgefallen, denn ich sehe eben auch andere Sonderzeichen (ß und ö) werden dort als ?-Zeichen empfangen. Ich tippe daher klar auf ein Sendeproblem / Bug in der Touch Version 3.x
-
Im Moment wird das (info) Log recht intentiv mit solchen Meldungen geflutet:
State value to set for "oekofen-json.0.pe1.L_runtime" has to be type "string" but received type "number"
Alle Typen scheinen bei dir bisher ein String zu sein. Bei werden im JSON auch keine Typen mitgeliefert. Ist vermutlich bei dir auch so, oder?
Da es vermutlich sinnvoller ist die Typen zu ermitteln statt alle einzeln konfigurierbar zu machen, habe anhand meines JSON mal versucht bestimmte Logiken abzuleiten:
1 wenn "factor" und/oder "unit" enthalten sind -> number
2 wenn "format" enthalten ist -> String mit Ersetzung durch die Werte aus dem mitgeliefertem Enum
3 Rest ist StringBeispiel 1:
"L_temp_set":{"val":"650", "unit":"?C", "factor":"0.1", "min":"-32768", "max":"32767"},
Beispiel 2:
"mode_auto":{"val":"1", "format":"0:Aus|1:Auto|2:Heizen|3:Absenken"},
Beispiel 3:
"L_statetext":"Betriebsart Aus",
Die Daten im JSON sind aber mMn in sich nicht an allen Stellen konsistent.
Beispiel F1
Hier ist der Wert -1 nicht in der Liste. Mir scheint es sowas wie "nicht relevant" zu bedeuten, denn in diesem Fall kommt diese Einstellung nicht zum tragen, da die übergeordnete Einstellung "oekomode" aus ist."autocomfort":{"val":"-1", "format":"0:Aus|1:Ein|2:Morgens|3:Abends"},
Beispiel F2
Hier wird nicht wie erwartet 0 und 1 geliefert, sondern false und true. Im Grundegenommen wäre dann vielleicht sogar eher eine grundsätzliche Regel zum mappen auf einen boolean, also sowas wie
wenn format enthalten und val ist false oder true (evtl. noch zusätzliche Prüfung, dass false und true nicht in der format Liste) -> boolean"L_pump":{"val":"false", "format":"0:Aus|1:Ein"},
So ich hoffe es war verständlich und hilft dir evtl. sogar bei der Adapter Programmierung. Ein wenig Programmierkenntnisse habe ich auch - ich weiß bloß nicht, ob du es willst wenn ich auf meine Art daran mitprogrammiere
PS: ich hab einfach mal mein JSON als Beispiel angefügt. Hilft ja bestimmt mal zu sehen wie es bei anderen so aussieht.
-
Hi @wilbur,
danke für dein Input! Es sieht tatsächlich nach einem Thema in der älteren Software Version aus.
Dass der Adapter bei dir überall Strings generiert dürfte daran liegen, dass in deinem all-JSON die Werte (auch wenn sie Zahlen sind) als Strings gesendet werden (erkennbar am " ")
Hier zum Vergleich ein Ausschnitt aus meiner all-JSON:
Im Falle der ENUM Felder sollte es eine Zahl mit states sein, hier ein Beispiel wie er die Datenpunkte bei mir anlegt wenn States definiert sind:
ioBroker verlangt soweit ich es vom Datenmodell verstanden habe in diesem Fall ein Number Field und mittels states werden dann spezielle Werte (oder alle Werte) für die Anzeige aufgehübscht. Ein Replace wäre fatal, aber auch nicht notwendig wenn die Datenpunkte korrekt angelegt werden würden.
Vermutlich müsste man für jedes Feld einen convert mit Number() durchführen und zusätzlich checken ob NaN rauskommt, damit man sicher weiß, dass es ein String ist der erzeugt werden soll. Derzeit habe ich mich darauf verlassen mit typeof zu arbeiten (siehe main.js, Zeile 189) da ich mich auf mein jsonfile gestützt habe, das hier die Datentypen korrekt sendet (Number/ String)
Bei mir sendet er auch keine -1 Werte hab ich grade nachgesehen und die diskrepanz mit true/false 0/1 hab ich auch nicht.
Gibt deine Steuerung wenn du die /all ohne ? aufrufst dann wenigstens konsistent auch Zahlen als String aus, oder schickt er dann dort doch wieder "echte" Zahlen ohne die anführungszeichen drumherum?
Hier mal zum vergleich meine vollständige /all? Datei:
Scheint so, als hätten die Entwickler der ÖkoFEN-Software erst mit der Zeit ein "echtes" JSON interface kreiert
-
@chaozmc said in Test Adapter oekofen-json v0.1.x GitHub:
Scheint so, als hätten die Entwickler der ÖkoFEN-Software erst mit der Zeit ein "echtes" JSON interface kreiert
Genau der Gedanke kam mir schon beim "Durcharbeiten" meiner JSON Struktur.
/all ohne ? liefert bei mir auch die gleichen Werte, auch inkl. der Anführungszeichen.
Für den Adapter ist das eine gute Erkenntnis. Ich denke der arbeitet richtig. Auch die Einstellmöglichkeit mit der Codierung ist wahrscheinlich nicht nötig.
Für mich heißt es wohl, dass der Adapter (aktuell) nicht nutzbar ist. Ich musste sogar von der Version 4.x auf 3.x wieder runter gehen, weil die Heizung sich mit der 4.x mehrmals am Tag aufhängte. -
@wilbur sagte in Test Adapter oekofen-json v0.1.x GitHub:
Für mich heißt es wohl, dass der Adapter (aktuell) nicht nutzbar ist. Ich musste sogar von der Version 4.x auf 3.x wieder runter gehen, weil die Heizung sich mit der 4.x mehrmals am Tag aufhängte.
Vermutlich wirst du nicht der Einzige sein der noch eine ältere Version am Laufen hat...? Ich kann ja' probieren ob ich das in den bestehenden Code dazu packen kann in Form von extra Prüfungen und dann, beim Anlegen der Objekte bzw. beim Befüllen der Daten, jedes Mal einen cast auf number dazu packen. Dann wären zumindest die Objekte in ioBroker korrekt. Beim zurück-schreiben an den Ofen sollte der Datentyp zumindest egal sein, da es am Ende ein URL Aufruf wird und die URL in jedem Fall ein String ist. Lediglich bei true/false 0/1 frag ich mich ob die Steuerung dann wie im Format angegeben "0" oder "1" erwartet, oder doch wie im val ausgegeben "true" und "false". Auch wenn es hauptsächlich Read-Only Werte sind, zumindest der heat_once Datenpunkt bei ww1 wäre dann gesondert zu behandeln da ioBroker dann 0 oder 1 in den Objekten hätte, und das in "true" / "false" beim Aufruf übersetzt werden muss. Keinen Plan ob's dann noch irgendwelche Stolperfallen gibt die mir momentan nicht einfallen bzw. ob das zu neuen/anderen Problemen führt
Weißt du, ob man in ioBroker gezielt einen Branch eines repo's auch installieren kann? Weil dann würde ich das in einem neuen Branch ausprobieren und bei Erfolg in den master übernehmen
-
Eine Möglichkeit einen Schalter zu aktivieren, so unter dem Motto "ich hab die alte buggy V3-Schnittstelle" würde ich natürlich sehr begrüßen.
Ich habe das zurückschreiben mit heat_one über Postman getestet. Und siehe da: schreiben mit 1 und mit true wird angenommen und jeweils beides ignoriert.
Schreiben anderer Werte z.B. ww1.name (Text) und hk1.temp_vacation (Zahl) geht, weshalb ich hier auf einen Bug tippe.
Ich konnte den Adapter über die Branch-URL (https://github.com/chaozmc/ioBroker.oekofen-json/tree/touch-v3-compatibility) installieren. Sollte eigentlich geklappt haben, dass es der "richtige" ist. Kann ich das irgendwo dran feststellen?
-
@wilbur ok gut zu wissen, dass das geht - also Branches installieren. Ich hab in dem Branch jedoch noch keine änderungen. Der einzige Branch der bis jetzt eine änderung und einen Commit hat ist der von dem Issue das ich dafür angelegt hab um das Thema zu tracken. Ich bin heut aber nicht dazu gekommen einen Testwebserver einzurichten um dein JSON damit zu delivern und zu schauen wie sich die Änderung des Codes verhält. Wenn ich recht habe mit meiner Idee, ist kein "Schalter" nötig sondern der gleiche Code ist für beide Varianten anwendbar. Mein Plan war den Workaround dann in dem v3-Branch den du Verlinkt hast zu mergen und den dann gegen V3.10d und weitere Versionen zu testen (sofern sich noch andere Testern hier melden) und wenn das funktioniert das in den Masterbranch einfach zu übernehmen.
Auf die Art kann ich die das Parallel pflegen (da wir wissen, dass der Code im master bei 2 Leuten mit neueren Versionen stabil funktionieren dürfte).
Ich hoffe ich komm morgen zwischendurch mal dazu den Code aus dem Issue-Branch gegen einen simplen webserver mit deinem JSON File zu testen. Du kannst natürlich den Code auch testen, jedoch sag ich gleich dazu, ich hab ihn noch nicht laufen lassen und weiß nicht ob er startet bzw Fehler produziert beim einlesen oder setzen der Werte.
@wilbur sagte in Test Adapter oekofen-json v0.1.x GitHub:
Ich habe das zurückschreiben mit heat_one über Postman getestet. Und siehe da: schreiben mit 1 und mit true wird angenommen und jeweils beides ignoriert.
Das ist natürlich ganz doof, sie bieten den Datenpunkt an und nehmen dann kein Set mehr an. Auch eine Möglichkeit...
-
@chaozmc Hab gerade die 0.2.0 vom Branch installiert und mich gefreut, dass das mit dem Anzeigen der Einheit bei "°C" funktioniert. Top!
-
Gestern habe ich den Adapter installiert.
Auf github habe ich ein Issue erzeugt.Nach einigen Änderungen läuft der Adapter ohne Probleme.
Ich habe diese Version: V3.00a 01052019.In main.js steht als query-Parameter /all??.
Das bedeutet bei mir Ignorieren. Als reponse kommt dann die Ausgabe wie ohne query-Parameter.
Änderung: "/all?"
Damit wird dann der richtige object tree erstellt.Mit der Version gibt es dann noch das Umlautproblem.
in parseDataOnStartupAndCreateObjects
const cleanInput = input.replace(/#./g, "|")
.replace(/St?rung/g,'Störung')
.replace(/?kologisch/g,'Ökologisch');
in parseDataAndSetValues
tNewVal = String(jsonData[key][innerKey])
.replace(/Sch?nwetterprognose/g,'Schönwetterprognose')
.replace(/?kologisch/g,'Ökologisch')
.replace(/au?erhalb/g,'außerhalb')
.replace(/St?rung/g,'Störung');
liefert dann korrekte deutsche Texte.
Die Korrektur kann man natürlich auch in eine Funktion legen und dort dann versuchen, die Sprache zu erkennen. Geht aber auch ohne Erkennung, da die diversen replace sich ja unterscheiden zwischen den Sprachen. -
Hallo,
ich bin gerade dabei mich in ioBroker (v6.3.5) einzuarbeiten.
Daher möchte ich auch meine Ökofen Pellematic (Touch V3.00b) mit einbinden.
Der Abruf über Modbus funktioniert, bzw. setzte ich aktuell Edomi ein und rufe dort die Daten der Pellematic ab.Den Adapter in der Version 0.2.0 habe ich installiert und alle notwendigen Daten eigetragen.
Der Adapter startet auch und alle Verbindungen gehen auf grün. Nach einer gewissen Zeit (ca. 30s) werden mir jedoch folgende Fehlermeldungen ausgegeben (Auszug da sich die Fehlermeldungen wiederholen) und der Adapter startet neu.
Wie gesagt arbeite ich mich gerade in ioBroker ein und hab aktuell keine Ahnung wo ich hier angreifen soll.
Danke. -
@chaozmc
Hallo habe den Adapter ebenfalls getestet.
Der Adapter schließt sich immer wieder.
Alle Details unter diesem Vorgang ganz unten beschrieben:
https://forum.iobroker.net/topic/63120/oekofen/12?_=1684751834380