NEWS
[gelöst] VIS oder Skripting Frage
-
Es geht um das Vorausfüllen von Eingabefeldern (Habe das schon hier https://forum.iobroker.net/topic/71112/indukt-näherungsschalter-und-gaszählerauswertung/51?_=1703959489221 erwähnt, aber hier noch einmal die isolierte Frage)
Ich habe ein Eingabefeld, in das ich einen ellenlangen Wert eintippen muss, der zur Berechnung einer Korrektur gebraucht wird
Meine Auswerteelektronik erzeugt gelegentlich Fehl-Impulse, sodass die Rechnung Nullpunktstand in m³ + Pulse * 0,01 m³/Puls = Zählerstand in m³ nicht mehr mit dem übereinstimmt, was der Gaszähler anzeigt...
In dieser Situation tippe ich den realen Zählerstand in das Eingabefeld (typ: jqui - ctrl - Input + Set-Butt) ein, und nach Betätigen des Set-Buttons wird der Nullpunktstand so korrigiert, dass die Rechnung wieder passt.
Meistens unterscheiden sich der über Pulse und den Nullpunkt errechnete und der vorliegende Zählerstand nur in den Nachkommastellen.
Deshalb wäre es sehr bequem, wenn der letzte errechnete Zählerstand beim Aufruf der "Korrektur" Seite schon vorausgefüllt im Eingabefeld vorliegen würde.Das Eingabefeld braucht dazu noch einen Dezimalpunkt, und kein Komma, was auch eine gewisse Unbequemlichkeit darstellt ...
Hat jemand einen Hinweis, wie man das Vor-Ausfüllen des Eingabefeldes, und das Problem des Dezimalpunktes lösen kann?
-
@martinp sagte in VIS oder Skripting Frage:
Deshalb wäre es sehr bequem, wenn der letzte errechnete Zählerstand beim Aufruf der "Korrektur" Seite schon vorausgefüllt im Eingabefeld vorliegen würde.
so ganz habe ich es nicht verstanden:
wo liegt der berechnet wert den vor?
in einem anderen datenpunkt?
warum schreibst du den berechneten wert dann nicht immer in den datenpunkt für dieses eingabefeld?dann kannst du auf basis des angezeigten wertes korrigieren und bei set wird dann wie üblich was auch immer berechnet und gesetzt
-
@oliverio Hier der Userdata - Block für den Gaszähler
- PulsZaehler wird von einem Blockly-Skript inkrementiert. Das Skript zählt die Pulse, die von einem am Gaszähler montierten induktiven Näherungssensor über einen NodeMCU mit Tasmota kommen. Der Gaszähler liefert einen Impuls / 0,01 m³
- NullKubikmeter war anfangs eine Konstante im Blockly-Skript... das musste ich ändern, als ich feststellte, dass der Näherungsschalter zu Fehlimpulsen neigt. (3...5 Pulse pro Tag) VerbrauchTotal = NullKubikmeter + PulsZaehler * 0,01
- Der über den VIS-View eingegebene Wert landet in LastKubikmeter, und dadurch wird ein Blockly Skript gestartet, was einen neuen NullKubikmeter Wert ermittelt, und nebenbei auch den VerbrauchTotal Wert korrigiert, der ansonsten erst bei nächsten Puls aktualisiert würde ...
Mit dem neuen NullKubikmeter Wert stimmt dann die Formel wieder.
VerbrauchTotal = NullKubikmeter + PulsZaehler * 0,01
Ich stelle mich da alle paar Tage vor den Zähler und muss alle Ziffern aus dem Gaszähler in das Eingabefeld im Vis View eintippen, bevor das aus den Pulsen inklusive den Fehl-Pulsen errechnete Ergebnis zu weit dem Zählerstand vorauseilt....
Wenn da der letzte VerbrauchTotal Wert im Eingabefeld vorliegen würde, müsste ich meist nur die letzten 2...3 Ziffern korrigieren ...
Ich hatte vorher mit Controls ohne "Set" Button experimentiert - da wurde bei jeder Tastenbetätigung in den Userdata-Datenpunkt geschrieben, was ziemliches Chaos ausgelöst hat ...
Falls es da keine VIS Lösung gibt, muss ich wahrscheinlich doch noch ein wenig mehr Userdata Datenpunkte bauen, und mit separaten "Get" und "Set" Buttons arbeiten...
-
Habe jetzt selber eine Lösung gefunden. Weiß aber nicht ob diese besonders elegant ist ...
Dreifach-Auswahl Follow/Set/Confirm (= 0,1,2)
Gekoppelt an einen Userdata - Datenpunkt "NullKubikSet"
Das Eingabefeld ist an einen Ud-DP "NullKubikWork"Status-Werte von "NullKubikSet"
- 0/Follow: NullKubikWork wird u.A. durch das Blockly, was von den Pulsen getriggert wird mit dem errechneten Zählerstand gefüllt.
- 1/Set: NullKubikWork kann Editiert werden - kein schreibender oder lesender Zugriff aus Blockly
- 2/Confirm: Aus NullKubikWork wird durch ein Blockly Skript der neue passende Nullpunkt zum aktuellen PulsCount errechnet.