-
-
Notifications
You must be signed in to change notification settings - Fork 12
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Verbesserung der Behandlung von Leerzeichen mit MQTT #185
Comments
Noch ein paar Kommentare von mir zu den einzelnen Punkten:
Das Template auf Gültigkeit zu prüfen, ist sehr schwierig und damit aufwändig.
Das ist nun angepasst worden.
Die Fehlermeldung stimmt schon. Die Fehlermeldung von ParseFloat ist immer die selbe (invalid syntax), sodass sie nicht mit ausgegeben wird. Im Fehlerfall ist fval immer 0,0, sodass eine Ausgabe auch nicht sinnvoll ist.
Die vom Template generierte Zeichenfolge ist nun von
In einem Template können beliebig viele (bzw. auch gar keine) |
Okay, es mag schwierig sein, das Template zu prüfen. Ich habe mich zu dem Thema ein wenig aufgeschlaut. Soweit habe ich das schon verstanden, dass es einen String erzeugt, der vom Extractor in ein Float umgewandelt wird. Bezüglich der Funktion
Vielen Dank für die schnelle Umsetzung!
Meiner Ansicht nach sollte es bezogen auf den Eingabe-String dann lauten: "Template returned invalid number literal for payload"
Klasse. Damit sollten ungültige Zeichen schneller aufzufinden sein. Was passiert denn, wenn eine Einheit hinter der Zahl steht? |
Im JSON-Format ist dies nicht zulässig. Bei EXTRACTOR=BEFORE oder AFTER wird die Einheit ignoriert. |
Wie in #173 (comment) bereits gezeigt kann es im Zusammenhang mit den Funktionen
parseJSON
undParseFloat
zu unerwünschtem Verhalten kommen. Folgende Verbesserungen schlage ich daher vor:parseJSON
muss gewährleistet sein, insbesondere bei Verwendung in Benutzereingaben alsTEMPLATE
(vgl. MQTT-Dimmer und -Analogwertempfänger: Mehr Möglichkeiten um den Wert zu extrahieren #70).ParseFloat
übergebenen String darf keine vorangestellten oder nachfolgenden Leerzeichen enthalten (sog. Trim Whitespace), um weitere ähnliche Probleme mit anderen Extraktoren zu vermeiden.fval
nicht berücksichtigt wird.Zu 1. möchte ich hinzufügen, dass ich mit der etwas ungewöhnlichen Syntax nicht vertraut bin, aber ich denke, dass die doppelt geschweiften Klammern um den Ausdruck (z.B.
{{(parseJSON .).a_act_power}}
) herum erzwungen werden müssen. Sofern sie nicht vom Benutzer eingegeben wurden, sollten sie einfach programmatisch hinzugefügt werden, um die "Typsicherheit" zu erhalten. Ich verstehe aber nicht genügend Golang, um diese Vermutung bewerten zu können.The text was updated successfully, but these errors were encountered: