Dosierpumpe ansteuern, benötige Hilfe

Begonnen von FireFlyer, 13 Februar 2014, 21:49:30

Vorheriges Thema - Nächstes Thema

FireFlyer

Hallo,

ich möchte mit einem Raspberry Pi eine Dosierpumpe für flüssige Mikronährstoffe steuern. Es gibt eine Fütterung, die stündlich zwei Fermenter einer Biogasanlage füttert. Ein mal am Tag soll soll je Fermenter z.B. 0,3 l Mikronährstoff zudosiert werden. Die Pumpe soll über die Laufzeit gesteuert werden. Wann welcher Fermenter gefüttert wird, zeigen je zwei Sensoren an.
So weit so gut. Ich habe nur keine Ahnung, ob Fhem so etwas hin bekommt. Die GPIOs vom Raspi kann ich unter Fhem ansprechen, aber dann hört es auch bald auf.
Auf dem Webinterface muss man eingeben können, wie viele Liter die Pumpe pro Minute fördert -> Kalibrieren. Außerdem soll eingesellt werden können, wieviel Mikronährstoff zudosiert werden soll. Daraus wird dann die Laufzeit der Pumpe errechnet.
Außerdem soll muss man die Uhrzeit einstellen, wann dosiert werden soll. Wenn die Zeit gekommen ist, soll bei nächster Gelegenheit dosiert werden -> wenn die beiden Signale korrekt anliegen. Vielleicht kann ich auch mit zwei Zeiten arbeiten, eine für jeden Fermenter.
Schön wäre noch eine Füllstandsanzeige, wie viel Rest noch im Mikronährstoffbehälter vorhanden ist. Dafür habe ich keine Idee, wie ich das mache.
Für Fhem spricht das Webinterface und dass man eventuell E-Mails verschicken kann (Mikronährstoff leer...). Mit Pascal hätte ich eine Programmiersprache, die ich kann, aber kein schönes Interface, dass sich zur Not per Smartphone bedienen lässt. Ach ja, der Raspi hängt am Netz und ist per VPN (Fritzbox) von außen zugänglich.

Ich hoffe, hier kann mir jemand weiter helfen, bin leider noch ziemlich am Anfang von Fhem...
Grüße
FireFlyer

fidel

Hallo,

ich denke das was du beschreibst ist schon möglich... Mit den nötigen Ein- und Ausgängen.
Eine Zeitsteuerung stelle ich zum Beispiel bei mir mit einem Dummy ein und gehe dann per notify und einer Funktion weiter...

abgeänderter Auszug aus meiner config:

define Zeit dummy                                     #hiermit wird ein dummy erzeugt mit dem man über Slider die Zeit einstellen kann, jeweils ein Slider für Stunden und einer
attr Zeit fp_Groundfloor 300,1550,2          #für Minuten
attr Zeit room dein_Raum
attr Zeit setList state:time
attr Zeit webCmd state

define n_Zeit notify Zeit {fhem("modify Zeit_ein *%");;}
#Das notify dient dem Ändern deiner eigentlichen Zeit, und ändert bei Umstellung die nachfolgende Standardzeit von "Zeit_ein"

define Zeit_ein at *09:00 {deineSub()}
#Diese Definition enthält die Standardzeit und wird durch den Dummy, mit dem nachfolgenden notify abgeändert. Wird diese Zeit erreicht wird eine Funktion #aufgerufen. In dieser Funktion sind dann alle weiteren Abläufe definiert die geschehen sollen.

Versuche mal deinen Text zu vereinfachen und auf das wesentliche, vielleicht auch nur aufs technische zu reduzieren...
Ich denke zum Beispiel die Pumpe liefert eine konstante Menge pro Minute oder liege ich da falsch und es soll auch noch etwas geregelt werden?
Wenn dem so ist muss hier ein Ausgang gesteuert werden für eine bestimmte Zeit. Ob du hier die Zeit angibst oder dies von der Zeit aus in Liter/Minute umrechnest ist dir überlassen...

Gruß
Fidel
Fhem 5.6 auf Cubietruck,CUL,CUL_TCM97001,FritzBox7390,HMLAN,CUL_HM_HM_OU-16LED,CUL_HM_HM_SEC_SC,CUL_HM_HM_LC_SW4,CUL_HM_HM_RT_DN,HUEBridge,HUEDevice,Panstick,Panstamp (binouts,rgddriver mit dht22),PHTV,Yamaha-AVR,Withings,ELV-IPS, etc...

FireFlyer

Alles mal rein technisch:

Die Pumpe liefert einen konstanten Volumenstom.
Ich messe aus z.b. 100 ml/min
Ich will 300 ml dosieren -> Pumpe muss 3 min laufen.

Wenn die Zeit gekommen warten bis Eingang 1 auf 1 und Eingang 2 auf 1 dann Ausgang 4 3 min auf 1
warten bis Eingang 1 auf 1 und Eingang 3 auf 1 dann nochmal 3 min dosieren.

Sollten die Eingänge zwischendurch auf 0 fallen, dann Dosieren unterbrechen.

So weit so gut.
Die Mikronährstoffe werden in 20 Kanistern geliefert. Kann ich irgendwie mitloggen wie viel Rest noch drin ist? Das muss irgendwie in eine Datei abgespeichert werden, sonst sind die Daten bei einem Neustart weg. Dazu auch Ideen?