Hauptmenü

on-for-timer

Begonnen von FireFlyer, 20 Januar 2017, 19:17:13

Vorheriges Thema - Nächstes Thema

FireFlyer

Hallo,

ich möchte mit einer Pumpe 300 ml Flüssigkeit dosieren. Die Pumpe pumpt ca. 3,4 l/h. Da ich das nicht genau weiß, muss ich sie kalibrieren. Im ersten Schritt lasse ich sie 60 Sekunden laufen und messe die Menge: ca 57 ml/Minute. Das ergibt dann eine Laufzeit von 317 Sekunden oder 5:17 Minuten.
Ich würde gerne die Dosiermenge (57 ml/Min) und die 300 ml ins Webfrontend per Zahlenfeld eingeben und FHEM berechnet dann 317 Sekunden und startet dann mit "set Pumpe on-for-timer 317" die Pumpe.
Jetzt zu meinen beiden Problemen:
1. Wie definiere ich ein Dummy, in den in ich Zahlen per Webfrontend eingeben kann?
2. Wie kann ich einen on-for-timer mit Variable (Dummy) starten?
Die Suche hat mir leider nicht weiter geholfen, oder ich hatte die falschen Schlagworte?!

DeeSPe

Ist denn die Menge (300ml) immer variabel?
Wenn ja, woher kommt die Mengenangabe?

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Puschel74

Zitat1. Wie definiere ich ein Dummy, in den in ich Zahlen per Webfrontend eingeben kann?
Äh, versteh ich nicht ganz.
Du weisst nicht wie du einen Dumym definierst oder
du weisst nicht wie du an diesem Dummy Werte eingeben kannst?

Vorschlag: Versuch macht kluch  ;)
define Zeit dummy
Dann kannst du mit
set Zeit 300
schonmal 300 als Zahl in diesen Dummy "Zeit" eintragen.
Achtung! Das set gehört NICHT in die Konfig.
Wenn du den Dummy dann anklickst siehst du das du oben eine Zeile hast mit set Zeit <leeres Feld>
In dieses leere Feld kannst du dann 500 schreiben und auf set klicken ... et voila, der Dummy Zeit hat den Wert 500

So. 1 erledigt (hoffe ich).

Zu 2.
Wann soll den die Pumpe getartet werden?
Wenn du die Zeit im Dummy einstellst?
Zu einer bestimmten Uhrzeit?
Wenn eine andere Bedingung zutrifft?
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

FireFlyer

Also,
die Pumpe wird ein mal am Tag gestartet. Das funktioniert jetzt auch. (Siehe https://forum.fhem.de/index.php/topic,65285.0.html)

Klar kann ich die Laufzeit hart codieren, aber da auch andere, die keine Ahnung von FHEM haben, die Menge anpassen können müssen, will ich eine Schaltfläche/Eingabefeld ins Frontend einbauen. Ich habe es nur leider nicht mal geschafft eine Laufzeit variabel hin zu bekommen.

define Zeit dummy
set Zeit:state 317
set Pumpe on-for-timer Zeit


So funktioniert das jedenfalls nicht, aber wie dann?
Hat dies Problem sonst noch niemand gehabt?  :o
Die Suche spuckt jedenfalls nichts aus. Total komisch.

Puschel74

#4
define Zeit dummy
set Zeit:state 317
set Pumpe on-for-timer Zeit

Das alles hat so (bis auf das define) in der Konfig auch nichts verloren - oder generell, set-Befehle haben in der Konfig nichts zu suchen.

Wenn du bestimmte Zeitbereiche vorgeben willst zwischen denen der User auswählen können soll geht das mit slider recht komfortabel.
Hab ich z.B. für die Giessdauer meiner Bewässerung so gelöst:

define Giessdauer dummy
attr Giessdauer setList state:slider,0,1,30
attr Giessdauer webCmd state


Den Namen kannst du anpassen und das ganze einfach in dein FHEM übernehmen und schauen wie es aussieht.

Wenn die Pumpe einmal am Tag per at gestartet wird dann - ah, ich soll noch einen Beitrag lesen um dann hier zu helfen?
Klar mach ich glatt - ich hab ja Zeit.
Nein Scherz - kannst du die benötigten Infos nicht einfach in EINEM Beitrag zusammentragen (ist zwar für dich etwas mehr zu tun aber he, du willst ja Hilfe).

Edith: Ich vermute das mein angepinnter Beitrag hier im Anfängerbereich auch für dich einen unverständlichen Titel hatte?
ZitatBitte unbedingt vor Eurem ersten Post hier lesen.
Dann klär du mich wenigstens mal bitte auf wie ich den Titel besser wählen kann/soll damit Anfänger auch die benötigten Infos liefern - oder ist der Beitrag einfach nur zu lang/unverständlich/zu schwer geschrieben/was auch immer?
Auch die Helfer helfen in ihrer Freizeit (gratis) - so wie die Hilfesuchenden FHEM in ihrer Freizeit verwenden (wollen).
Daher sollte man als Hilfesuchender den Helfenden mal die benötigten Infos kurz und knapp in einem Beitrag (am besten im ersten Fragebeitrag) liefern damit auch die Helfer nach der Hilfe noch Zeit für ihre Familie haben.
Dafür war eigentlich mein angepinnter Beitrag gedacht.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

betateilchen

ich geh mal Popcorn holen und schaue zu, wie lange ihr noch aneinander vorbeiredet :)

set Zeit:state 317

das ist schlichtweg falsche Syntax. Weiter oben wurde das schon richtig gezeigt:

Zitat von: Puschel74
set Zeit 300

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Puschel74

Zitatich geh mal Popcorn holen
Ich werf ne Runde Erdnuss-Flips  ;D
Zitatund schaue zu, wie lange ihr noch aneinander vorbeiredet
Wieso aneinander vorbeireden?
Wenn der TE nicht lesen kann kann ich doch nichts dafür oder erklär ich falsch?
Ich bin ja lernfähig (hoffe ich zumindest) und wenn ich was besser machen/erklären kann dann bitte ich darum mich darauf hinzuweisen wie ich was besser machen kann.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

betateilchen

#7

define test dummy
attr test readingList sollmenge,durchfluss
attr test userReadings laufzeit {round(ReadingsVal("test","sollmenge",0)*60/ReadingsVal("test","durchfluss",1),0)}


jetzt kann man mit  "set test sollmenge 300"
und "set test durchfluss 57"

arbeiten und wird im reading "laufzeit" die notwendige Zeit finden.
Diese Laufzeit wird jedesmal aktualisiert, wenn die Sollmenge oder die Durchflussmenge neu gesetzt wird.

Soweit das Prinzip. Den Wert aus dem reading "laufzeit" kann man natürlich dann problemlos für das Setzen irgendeines on-for-timers verwenden.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

FireFlyer

#8
Ist mir klar, dass set alleine nicht funktioniert. Entweder set in die Kommandozeile oder in notify verpacken:

define Dosierzeit dummy
define <egal> notify <irgend ein Ereignis> set Dosierzeit 317 #hauptsache, es steht eine Zahl drin, wie und wo ist jetzt egal.
define Timer at *13:50:00 set Pumpe on-for-timer Dosierzeit


Ich bekomme immer "on-for-timer requires a number as argument"

Den Link auf meine erste Frage habe ich gesetzt, weil ich danach gefragt wurde. Das tut für mein set on-for-timer doch keine Rolle.


Mampf, weg ist das Popcorn. Hat gut geschmeckt  8)

betateilchen

#9
Angenommen, Du würdest mein obiges dummy-Device umsetzen, kannst Du beispielsweise so weitermachen:


define Timer at *13:50:00 { my $t = ReadingsVal("test","laufzeit",1); fhem("set Pumpe on-for-timer ".$t) }


Zitat von: FireFlyer am 20 Januar 2017, 20:53:46
Ist mir klar,

ich fürchte, Dir ist noch sehr viel unklar...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

FireFlyer

Ja, hast wohl recht betateilchen ;)
Darum hab ich das ja auch im Anfängerforum gepostet :D
Werd gleich mal alles ausprobieren.

Puschel74

ZitatWerd gleich mal alles ausprobieren.
Im Ernst?
Du hast die Vorschläge noch nichtmal versucht?
Noch nichtmal versucht auszuprobieren - vom verstehen ganz zu schweigen?
Krass - nunja, es wird ja niemand gezwungen zu helfen.
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

betateilchen

Zitat von: Puschel74 am 20 Januar 2017, 21:21:11
Im Ernst?
Du hast die Vorschläge noch nichtmal versucht?

Verstehst Du jetzt, was ich mit "aneinander vorbeireden" meinte?  :P
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

FireFlyer

#13
Ihr wollt mich doch falsch verstehen  :o

Jedenfalls funktioniert es.

define Testlauf dummy
attr Testlauf webCmd an
define Test notify Testlauf:an { my $t = ReadingsVal("Dosierzeit","state",1);; fhem("set Pumpe on-for-timer ".$t) }


Musste nur noch ein Leerzeichen hinter on-for-Timer einfügen  ;D

Für
attr Giessdauer setList state:slider,0,1,30
muss ich mir noch etwas besseres einfallen lassen. So gefällt mir das noch nicht.

PS: Wo finde ich die Perl-Geschichte einfach erklärt, damit ich verstehe, was das mit my dem $ und manchmal ! auf sich hat?

betateilchen

Zitat von: FireFlyer am 20 Januar 2017, 21:32:17
Ihr wollt mich doch falsch verstehen

Du verspielst langsam meinen Gutmütigkeitsvorrat...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!