NEWS
Durchfluss von Bier messen
-
Für einen Joke möchte ich ein Durchflussmesser an einer Bierzapfanlage anschliessen und so den Bierkonsum visualisieren.
Da ich schon mit ioBroker arbeite. bin ich auf die Idee gekommen, ob dies möglich wäre.
Git es einen Adapter, der mir die Impulse von meinem Durchflussmesser in Liter wandelt wo ich das aktuelle Total anzeigen kann, und wo möglich mit Flot eine Kurve wann welcher Anstieg stad gefunden hat, um zu sehen zu welcher Zeit am meisten konsumiert wurde. 8-)
Ich habe mir gedacht, dass ich folgenden Durchflussmesser einsetzen möchte.
https://www.wish.com/product/5798a5c0a3b3070933689a66
Oder missbrauche ich da ioBroker etwa für meine Anwendung.
Besten Dank schon jetzt für euer Feedback
-
Hallo Phips,
eine coole Idee.
Falls du eine Raspberry Pi mit ioBroker in der Nähe der Zapfanlage laufen hast, könntest du die Raspberry Pi zum zählen der Impulse verwenden.
http://kampis-elektroecke.de/?page_id=3740.
Wenn die Zapfanlage weiter weg ist du aber WLAN dort hast, bieten sich ESP8266 oder ESP32 Module mit NodeMCU an.
In beiden Fällen bekommst du den Zählerstand am einfachsten mittels MQTT in den ioBroker.
Gruß
Marco
-
Ich bin da flexibel und kann den Raspberry Pi neben dem Zapfhahn anbringen.
Die Impulse sehe ich ja dann im ioBroker an den GPIO.
sind diese denn auch schnell genug? wie kann ich diese denn als gesamtmenge und Kurve darstellen? ich müsste die Impulse ja zählen.
-
Die Impulse sehe ich ja dann im ioBroker an den GPIO. `
Da bin ich überfragt ob die GPIOs der Raspberry im ioBroker abgefragt werden können, falls dem so ist dann sollte das mit Javascript recht einfach umzusetzen sein.
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.
Meine Idee war eher mittels Phyton oder einer anderen Programmiersprache die Impulse zu zählen und in Liter/Min umzurechnen. Den errechneten Wert dann mittels MQTT an den ioBroker senden und dort dann den Datenpunkt loggen, dann kannst du dir mit Flot einen Graphen bauen.
EDIT:
Gerade den Thread gefunden der beschreibt wie man die GPIO in ioBroker nutzt. viewtopic.php?t=3927 werde ich die Tage wohl ein wenig mit rumspielen.
-
> 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.