Flowmeter auf RasPi mit GPIO korrekt einbinden

Begonnen von Bond246, 20 Mai 2015, 15:16:28

Vorheriges Thema - Nächstes Thema

duke-f

 :)
Da hab' ich auch wieder was neues gelernt: Zustandsautomat. War mir so nicht bekannt, scheint aber für so manches Problem ein recht zielführender Ansatz zu sein.

Als "Hobbyprogrammierer" fehlen einfach da und dort die Grundlagen...
Cubietruck, 3 Raspberry Pis,
CUL868, RFXtrx433, CUL433, SCC868, HM-USB,
IRTrans, EZcontrol XS1, IguanaWorks USB IR Transceiver
ESPEasy, Fritz!Box, Samsung TV+BD, LMS, Squeezelite

Bond246

#16
Muss der Zustand vom Anfang nur noch abgespeichert werden. Später lässt er sich dann vergleichen mit einer
IF readingsVal > ...

Ich weiß nur nicht, wie ich speichere. Daran ändert auch ein aufgeschriebener Zustandsautomat nichts.

frank

ZitatIch weiß nur nicht, wie ich speichere.
entweder in einem reading mit "setreading my_device my_reading xy", oder in einem dummy mit "set my_dummy xy".

ausserdem heisst es "ReadingsVal". commandref ist dein freund.  :)
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

JoWiemann

Und ich würde mir mal den Watchdog von Fhem ansehen. Benutze ich um festzustellen, ob meine Schwiegermutter die Tür in einem definierten Zeitraum nach einem Klingeln öffnet und auch wieder schließt.



Grüße Jörg

Gesendet von iPhone mit Tapatalk
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

JoWiemann

Ach ja, wer soll eigentlich das ganze System installieren? Mit Sanitärinstallateur kommen da sicher Euros im dreistelligen Bereich zusammen.


Grüße Jörg

Gesendet von iPhone mit Tapatalk
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM

duke-f

Cubietruck, 3 Raspberry Pis,
CUL868, RFXtrx433, CUL433, SCC868, HM-USB,
IRTrans, EZcontrol XS1, IguanaWorks USB IR Transceiver
ESPEasy, Fritz!Box, Samsung TV+BD, LMS, Squeezelite

Bond246

Danke für den Watchdog Hinweis. Ich glaube das könnte genau das richtige für mich sein.

Prof. Dr. Peter Henning

Na, dann schaut mal bezgl. eines Zustandsautomaten auf das hier:

http://www.fhemwiki.de/wiki/1W-WPump

Ich bin derzeit in verschiedenen Forschungsaktivitäten zum Ambient Assisted Living zu Gange.
Eine Erkenntnis darau: es gibt eigentlich keinen besseren Weg als Zustandsautomaten, um das Verhalten von Maschinen auf das von Menschen abzustimmen.

LG

pah



Bond246

#23
Ich hab eben die Idee mit watchdog getestet, bin jedoch an ein paar Grenzen für meinen Fall gestoßen. Zuerst wollte ich die Watchdog Trigger mit ReadingsVal setzen. Als das nicht funktioniert hat, hab ich rausgefunden, dass ich scheinbar nur Binärwerte auswerten lassen? Also sowas wie lamp on

Außerdem kann ich wohl den Watchdog nicht zeitgesteuert aktivieren. Also z.B.
at 15:00 watchdog ReadingsVal(x,y,0) 00:00:30 {ReadingsVal(x,y,0)+5)

Um das zumindest theoretisch zu löschen und anderen Werte zu testen, hab ich folgenden Code gebastelt
define test dummy
define test2 at *16:06:40 set test on

define flowwecker watchdog test:on 00:00:10 flowmeter:on set St_schalter on;; setstate flowwecker defined;; set test off


Das funktioniert auch. Allerdings will ich sicherstellen, dass ein on-Befehl nicht zufällig kommt, sondern eben mehr als einer. Deswegen im ersten Code-Beispiel das "+5".

Jetzt hätte ich noch die Idee, mit setreading ein den aktuellen Wasserstand in mein flowwecker zu schreiben.
Allerdings funktioniert folgendes Codebeispiel nicht, weswegen ich da noch nicht weiter bin als überhaupt erstmal zu testen, ob ein setreading so funktioniert wie ich es mir vorstelle.

define flowwecker at 15:00 setreading flowwecker abfrage ReadingsVal(wasserstand,stats,0)


Er schreibt einfach den gesamten Befehl in das Reading, statt das Ergebnis aus der Funktion ReadingsVal.

Bond246

Hallo zusammen,

gibt es hier noch Ideen zu meinem letzten Stand?