NEWS
Durchfluss von Bier messen
-
> Beim Flankenwechsel des Impulses (Achtung nur eine Flanke nutzen) ein Javascript auslösen welches in einem Datenpunkt einen Wert hochzählt, ein weiteres Javascript welches regelmässig z.B. jede Minute den Wert aus dem 1\. Datenpunkt liest, umrechnet und in einen 2\. Datenpunkt schreibt und anschliessend den 1\. Datenpunkt zurücksetzt. Den 2\. Datenopukt kannst du loggen und später mit Flot einen Graphen daraus bauen.
Kannst du mir dabei behilflich sein, wie ich das in Java machen muss. Habe bis jetzt noch nichts mit Java gemacht. oder geht allenfalls auch mit Blockly?
-
Ich weiss grad nicht wie ich da weiter komme.
Wie muss das Blocky oder Java-Skript aussehen, damit ich die Impulse vom Durchflussmesser zählen kann und in Liter anzeigen kann.
Wie viele impulse ich für einen Liter habe kann ich noch nicht sagen.
Besten Dank schon jetzt
-
Nur nochmal als Zwischenfrage: Die Impulse vom Durchflussmesser siehst du bereits im ioBroker am entsprechenden GPIO des RPi-Adapters? Wenn ja, dann ist das ja schon mehr als die halbe Miete. Da mach ich dir heute Abend wenn ich am System bin mal ein Beispielscript"chen"…
-
Nur nochmal als Zwischenfrage: Die Impulse vom Durchflussmesser siehst du bereits im ioBroker am entsprechenden GPIO des RPi-Adapters? `
Die Impulse so habe ich noch nicht geprüft.
Habe aber mal mit einem Datenlogger geschaut und die Impulse gesehen. Müsst also gehen.
Die Impulse kommen ja von einem Hallsensor.
-
Naja - der Sensor wird schon funktionieren… Die Frage ist, ob die Signale auch bereits im ioBroker ankommen? Das müsste dann in den Objekten ungefähr so aussehen:
Wobei sich dann der eingerahmte Wert im Rhythmus der Impulse ändern müsste.Wenn du das hast dann ist der Rest relativ einfach, wenn nicht gibt's noch bisschen was zu tun…
-
Ich befürchte, dass mein Durchflussmesser nicht mehr funktioniert. denn ich sehe das Signal nicht. Werde morgen mal schauen ob ich das SIgnal mit einem Datenlogger noch sehe.
-
Wie befürchtet, hat mein Durchflussmesser aus China den Geist aufgegeben.
Nun hab ich mir ein neues bestellt.
Nur die schnellen Impulse lassen sich nicht anzeigen. da sie zu schnell für das System sind.
Ich habe nun eine Siemens Logo eingesetzt, wo ich die Impulse sehen kann. Da setze ich nach einer gewissen azahl Impulse einen Merker oder einen Ausgang, den ich in ioBroker sehen kann.
Wenn ja, dann ist das ja schon mehr als die halbe Miete. Da mach ich dir heute Abend wenn ich am System bin mal ein Beispielscript"chen"… `
Darf ich auf dein Angebot zurückkommen? nun möchte ich einfach die Impulse des Merkers zählen. Ich denke ein Impuls entspricht 0.1Liter Bier. die Skalierung werde ich im Logoprogramm machen.
Besten Dank schon jetzt
Gruss
Philipp
-
Ich habe nun eine Siemens Logo eingesetzt, wo ich die Impulse sehen kann. Da setze ich nach einer gewissen azahl Impulse einen Merker oder einen Ausgang, den ich in ioBroker sehen kann. `
Klingt ja soweit schon ganz gut. Kannst du mal nen Screenshot davon machen was du jetzt im ioBroker siehst?
-
Bei Merker 0 steht dann true
-
Ich habe mit Blockly mal etwas versucht. allerdings nicht sehr erfolgreich.
Was mache ich falsch?
-
Hallo Phips_CH,
hab's gestern abend nicht mehr geschafft - hab z.Z. paar zu viele Baustellen;-)
Mit Blockly hab ich's gar nicht so, aber wenn dir das lieber ist als Javascript dann versuchs ruhig damit. Ist ja sowieso besser wenn du zum Schluss was gelernt hast dabei;-)
Was mir an deinem Blockly auffällt ist:
"ist größer als letztes" - das wird so nicht klappen da ein "true" ja nicht zwingend größer ist als ein "false". Ich weiß jetzt nicht was Blockly alles für Auswahlen anbietet… Versuchs mal mit "ist gleich true" oder so ähnlich
-
Kein Problem
Für mich ist Blockly etwas verständlicher. (auf den ersten Blick)
Ich habe mal auf "true" gewechselt
Hier mal den Java-Skript aus dem Blockly.
var Biermeter; on({id: 's7.0.Inputs.0.4', val: true, ack: true}, function (obj) { var value = obj.state.val; var oldValue = obj.oldState.val; while (Biermeter < 1000000000) { Biermeter = (typeof Biermeter == 'number' ? Biermeter : 0) + 1; } });
-
Und - tut sich was?
Falls nicht würde ich als erstes mal das "Wiederhole solange Biermeter < 1000000000" weglassen. Weiterhin würde ich "anerkannt ist" erstmal auf "egal" stellen… Und - bitte zuerst mal eine Loggingausgabe mit einbauen (sollte doch in Blockly auch gehen -oder?) die dir jeweils den Wert der Variablen "Biermeter" anzeigt. So wie's jetzt ist kannst du ja gar nicht mitbekommen ob das Script was tut. Später musst du den Wert dann natürlich noch in einen Datenpunkt schreiben...
-
Wie mache ich eine Logikausgabe?
Wenn der Merker aktive ist, schaltet in den Objekten der Skript auf rot. Das heisst doch das der Skript gestartet wird.
Aber was er macht, oder wieso er nicht Zählt sehe ich nicht.
Ich habe bei Objekte einen Datenpunkz erstellt. dieser habe ich Biermenge genannt.
-
Ich habe bei Objekte einen Datenpunkz erstellt. dieser habe ich Biermenge genannt. `
Das ist schon mal sehr gut
Nur kann ich dir leider nicht so aus dem Hut sagen wie du den in Blockly mit dem neuen Wert beschreiben musst… Ich mach's deshalb mal als Javascript:
var dpBiermeter = "s7.0.Biermenge" //hier musst du deinen Datenpunkt eintragen on({id: 's7.0.Inputs.0.4', val: true}, function (obj) { setState(dpBiermeter,getState(dpBiermeter).val + 1,true); //log("Biermenge um 1 hochgezählt"); //wenn die Zeile ins Log geschrieben werden soll kannst du die vorderen beiden // löschen });
-
Hab es hinbekommen.
Ich hatte den Überlegungsfehler drin. dass wenn der Merker true ist. ich eine Schlaufe starte. Das geht natürlich nicht. Bis ich dann geschnallt habe, das ich nur 1 hochzählen muss.
Ist es möglich, die History zu löschen resp. zu leeren?
ich habe jetzt durch das Probieren in Flot schon Werte drin, die ich geleert haben möchte.
-
Klingt doch gut. Dann kannst du ja jetzt mal den Durchfluss ein wenig pushen
History leeren geht nur über Umwege. Der einfachste wäre m.E. die "Aufbewahrungszeit" auf den kürzesten Zeitraum (1 Tag??) zu stellen und halt so lange zu warten…