Neues Modul zur Bewässerungssteuerung

Begonnen von Tobias, 03 April 2014, 15:57:09

Vorheriges Thema - Nächstes Thema

MichaS

Danke für das Beispiel des festen täglichen Timers, damit hat sich Problem 1 schonmal in Luft aufgelöst  :) . Ich habe das Wiki entsprechend erweitert, damit diese wichtige Info dort auch zur Verfügung steht.

Den Rest gehe ich bei Gelegenheit an. Momentan werde ich den Workaround nutzen, über DOIF die beeinflussenden Readings zu einem festen Zeitpunkt vor dem Sprinkle-Timer zu lesen und die Sprinkle Instanzen dann ggf. für den Tag zu Disablen.

Gruß
Micha

snickers2k

#61
Hey.
Ich könnte mir vorstellen, dass sich z.Z. nicht sehr viele Leute für Bewässerungssteuerung interessieren.
Da ich jedoch im Sommer nicht soviel Zeit haben - und auch oft nicht Zuhause sein werde, wollte ich meine Bewässerungssteuerung schon demnächst so weit in FHEM einbinden, dass ich im Sommer nur noch wieder die Pumpe anschließen muss.

Zitat von: Tobias am 06 Juli 2014, 13:28:43
Die Daten hab ich schon lokalisiert. Im weather und kostalpiko Modul :) aber noch nicht eingebaut.

Gibt es diesbezüglich schon irgendwelche Fortschritte? Oder ist die Motivation nicht vorhanden, weil du es mit Sensoren löst? :)
Würde sonst gerne etwas motivierendes Spenden :)

Zitat von: Tobias am 10 Januar 2015, 10:52:37
Mich würde mal interessieren wer das Modul überhaupt einsetzt und wie....

Ich würde mir wünschen es einsetzen zu können. Jedoch habe ich keine Sensoren - und plane auch nicht welche anzuschaffen. Bisher wurde pi mal Daumen gewässert - und unsere Pflanzen leben trotzdem noch :) Höchstens eine Homematic-Wetterstation ist für den nächsten Sommer geplant. Sofern die Zeit es erlaubt.
Desshalb wäre ich sehr daran interessiert, öffentliche Daten einzubeziehen. Über WeatherUnderground gibt es ja überall (private) Wetterstationen, direkt in der Nähe. Mit Aktuellen Daten wie: Druck, Sichtweite, Wolken, Windchill, Feuchtigkeit, Regen - und zusätzlich ein Durchschnitt aus diesen Daten in der Historie - sollte sich doch eine mehr als brauchbare Berechnung erzeugen lassen.

Zitat von: Tobias am 08 Juli 2014, 19:24:56
Bodenfeuchte vom DWD?? Davon halte ich nicht viel wenn es um die eigene Gartenbewässerung geht. Die Feuchte ist stark abhängig vom Boden.
Bei meinen Rhodedenren die in lockerem torfhaltigem Boden sind muss ich bei gutem Wetter alle Stunde für 10min die Tropfer einschalten. Bei den Gemüsepflanzen die auf fettigem Mutterboden wachsen reicht einmal morgens zu bewässern. Das muss man sich ausprobieren wenn man die Bodenfeuchtekurven ein paar Tage beobachtet.

Maximal die Regenwarscheinlichkeit und Sonnenscheindauer sehe ich als Gewinn für das Modul an.

Wie wäre es, wenn man für jeden Boden einen dummy anlegt, der dann jeden Morgen mit den aktuellen Bodefeuchte Werten gefüttert wird. In Abhängigkeit des Wetters wird dieser Wert dann gesenkt. Je nach Boden könnte man dann (blöd gesprochen) sagen: Normaler Boden "100% senken", Rhodedenren "200% senken". Die Rhodedenren würden im dummy schneller austrocknen und würden eher wieder gegossen werden. Dann wäre auch egal wann es zuletzt Geregnet hat. Denn das spiegelt sich dann ja in der Bodenfeuchte wieder.
Oder stehe ich da auf dem Schlauch?

Hier wird auch darüber Diskutiert ( http://forum.fhem.de/index.php/topic,38335.0.html )
sowie hier ein Blogbeitrag ( https://blog.moneybag.de/fhem-automatische-gartenbewaesserung-mit-fhem-und-gardena-laufendes-projekt-gastbeitrag/ ).
Anhand des Wetters zu steuern wäre also schon irgendwie eine Integration wert :)

Vielen Dank.

Tobias

die aktuellen Module sind im FHEM Repository die auch per UPdate geupdated werden.
Um es kurz zu machen, per Timer und per Sensor wird unterstützt. Für mich reicht es und werkelt schon seit 2 Jahren fast fehlerfrei :)
BodenfeuchteSensoren habe ich per Panstamp angebunden
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

wober

Hallo Tobias,

ich verwende das UniPi Board, habe die Relais für die Ventilsteuerung eingebunden - funktioniert. Die digitalen Eingänge für zwölf Sensoren (Gardena Bodenfeuchtesensor 1188). Der Status der Sensoren wird in FHEM richtig dargestellt (on/off) aber nicht von der SprinkleInstanz. Wie kann dieses Problem gelöst werden, welche Infos benötigst du?

Danke und viele Grüße,
Wolfgang

Tom71

#64
Hallo,
ich wollte nun dieses Modul für meine Gartenbewässerung verwenden. Es bockt aber etwas:
PERL WARNING: Use of uninitialized value $max in numeric lt (<) at ./FHEM/97_SprinkleControl.pm line 202.

Ist gesetzt:
attr MySprinkleControl SprinkleControl_MaxParallel 1;

Beim Starten kommt auch:
2017.05.18 09:27:20 1: PERL WARNING: Subroutine SprinkleControl_Initialize redefined at ./FHEM/97_SprinkleControl.pm line 35, <$fh> line 105.
2017.05.18 09:27:20 1: PERL WARNING: Subroutine SprinkleControl_Define redefined at ./FHEM/97_SprinkleControl.pm line 54, <$fh> line 105.
2017.05.18 09:27:20 1: PERL WARNING: Subroutine SprinkleControl_Undefine redefined at ./FHEM/97_SprinkleControl.pm line 85, <$fh> line 105.
2017.05.18 09:27:20 1: PERL WARNING: Subroutine SprinkleControl_Attr redefined at ./FHEM/97_SprinkleControl.pm line 95, <$fh> line 105.
2017.05.18 09:27:20 1: PERL WARNING: Subroutine SprinkleControl_Set redefined at ./FHEM/97_SprinkleControl.pm line 126, <$fh> line 105.
2017.05.18 09:27:20 1: PERL WARNING: Subroutine SprinkleControl_AllocateNewThread redefined at ./FHEM/97_SprinkleControl.pm line 175, <$fh> line 105.
2017.05.18 09:27:20 1: PERL WARNING: Subroutine SprinkleControl_DeallocateThread redefined at ./FHEM/97_SprinkleControl.pm line 233, <$fh> line 105.
2017.05.18 09:27:20 1: PERL WARNING: Subroutine UpdateSprinkleControlList redefined at ./FHEM/97_SprinkleControl.pm line 273, <$fh> line 105.


Ist der Modul noch aktuell? Oder sollte ich auf ein anders Modul ausweichen. Ich finde es eigentlich ganz gut und für mich passend.

Leider wird auch der Sprinkler1 nicht an geschaltet. Was mache ich falsch?
2017.05.18 10:29:03 4: MySprinkle1: InternalTimerDoIt: Lösche alle internen Timer
2017.05.18 10:29:03 4: MySprinkle1: DoIt: Mache etwas, Command: Auto
2017.05.18 10:29:03 4: MySprinkle1: DoIt: ermittelter Status des Aktors: off
2017.05.18 10:29:03 4: MySprinkle1: DoIt: ermittelter Wert des Sensors: 55.0
2017.05.18 10:29:03 4: MySprinkle1: DoIt: Im Automodus wurde Schwellwert unterschritten erkannt. Soll: 60 , Ist: 55.0
2017.05.18 10:29:03 4: MySprinkle1: DoIt: Setze im Automodus auf: wait
2017.05.18 10:29:03 4: MySprinkle1: DoIt: Setze neuen Status auf: Wait
2017.05.18 10:29:03 4: MySprinkle1: InternalTimerDoIt: Setze InternalTimer auf: 18.05.2017 10:39:13



2017.05.18 10:39:13 4: MySprinkle1: InternalTimerDoIt: Lösche alle internen Timer
2017.05.18 10:39:13 4: MySprinkle1: DoIt: Mache etwas, Command: Auto
2017.05.18 10:39:13 4: MySprinkle1: DoIt: ermittelter Status des Aktors: off
2017.05.18 10:39:13 4: MySprinkle1: DoIt: ermittelter Wert des Sensors: 54.9
2017.05.18 10:39:13 4: MySprinkle1: DoIt: Im Automodus wurde Schwellwert unterschritten erkannt. Soll: 60 , Ist: 54.9
2017.05.18 10:39:13 4: MySprinkle1: DoIt: Setze im Automodus auf: wait
2017.05.18 10:39:13 4: MySprinkle1: DoIt: Setze neuen Status auf: Wait
2017.05.18 10:39:13 4: MySprinkle1: InternalTimerDoIt: Setze InternalTimer auf: 18.05.2017 10:49:23


Schade, da schein noch mehr kaputt zu sein:
2017.05.18 10:57:59 4: MySprinkle1: DoIt: Setze neuen Status auf: Aus
2017.05.18 10:57:59 4: MySprinkle1: NotifyFn: Statusänderung des überwachten Aktors 'Bewaesserung_Ventil1' von 'set_off' nach 'off' festgestellt
2017.05.18 10:57:59 4: MySprinkle1: NotifyFn: überwachter Aktor Bewaesserung_Ventil1, Statuswechsel von 'set_off' nach 'off'
2017.05.18 10:57:59 4: MySprinkle1: NotifyFn: Gebe einen Thread frei im SprinkleControl: SprinkleControl
2017.05.18 10:57:59 1: ERROR: empty name in readingsBeginUpdate
2017.05.18 10:57:59 1: stacktrace:
2017.05.18 10:57:59 1:     main::readingsBeginUpdate           called by ./FHEM/97_SprinkleControl.pm (249)
2017.05.18 10:57:59 1:     main::SprinkleControl_DeallocateThread called by ./FHEM/98_Sprinkle.pm (271)
2017.05.18 10:57:59 1:     main::Sprinkle_Notify               called by fhem.pl (3398)
2017.05.18 10:57:59 1:     main::CallFn                        called by fhem.pl (3319)
2017.05.18 10:57:59 1:     main::DoTrigger                     called by fhem.pl (3676)
2017.05.18 10:57:59 1:     main::Dispatch                      called by ./FHEM/00_HMLAN.pm (779)
2017.05.18 10:57:59 1:     main::HMLAN_Parse                   called by ./FHEM/00_HMLAN.pm (604)
2017.05.18 10:57:59 1:     main::HMLAN_Read                    called by fhem.pl (3398)
2017.05.18 10:57:59 1:     main::CallFn                        called by fhem.pl (685)
2017.05.18 10:57:59 1: readingsUpdate(,CountThreads,0) missed to call readingsBeginUpdate first.
2017.05.18 10:57:59 1: stacktrace:
2017.05.18 10:57:59 1:     main::readingsBulkUpdate            called by ./FHEM/97_SprinkleControl.pm (250)
2017.05.18 10:57:59 1:     main::SprinkleControl_DeallocateThread called by ./FHEM/98_Sprinkle.pm (271)
2017.05.18 10:57:59 1:     main::Sprinkle_Notify               called by fhem.pl (3398)
2017.05.18 10:57:59 1:     main::CallFn                        called by fhem.pl (3319)
2017.05.18 10:57:59 1:     main::DoTrigger                     called by fhem.pl (3676)
2017.05.18 10:57:59 1:     main::Dispatch                      called by ./FHEM/00_HMLAN.pm (779)
2017.05.18 10:57:59 1:     main::HMLAN_Parse                   called by ./FHEM/00_HMLAN.pm (604)
2017.05.18 10:57:59 1:     main::HMLAN_Read                    called by fhem.pl (3398)
2017.05.18 10:57:59 1:     main::CallFn                        called by fhem.pl (685)
2017.05.18 10:57:59 1: readingsUpdate(,state,0/) missed to call readingsBeginUpdate first.
2017.05.18 10:57:59 1: stacktrace:
2017.05.18 10:57:59 1:     main::readingsBulkUpdate            called by ./FHEM/97_SprinkleControl.pm (251)
2017.05.18 10:57:59 1:     main::SprinkleControl_DeallocateThread called by ./FHEM/98_Sprinkle.pm (271)
2017.05.18 10:57:59 1:     main::Sprinkle_Notify               called by fhem.pl (3398)
2017.05.18 10:57:59 1:     main::CallFn                        called by fhem.pl (3319)
2017.05.18 10:57:59 1:     main::DoTrigger                     called by fhem.pl (3676)
2017.05.18 10:57:59 1:     main::Dispatch                      called by ./FHEM/00_HMLAN.pm (779)
2017.05.18 10:57:59 1:     main::HMLAN_Parse                   called by ./FHEM/00_HMLAN.pm (604)
2017.05.18 10:57:59 1:     main::HMLAN_Read                    called by fhem.pl (3398)
2017.05.18 10:57:59 1:     main::CallFn                        called by fhem.pl (685)
2017.05.18 10:57:59 4: MySprinkle1: NotifyFn: Setze neuen Status auf: Aus
Homematic | RaspberryMatic

Tobias

Hi,
also das Modul läuft bei mir im täglichen Einsatz, allerdings auf einem FHEM was einen Stand vor > einem Jahr hat.
(Es läuft nicht bei mir lokal, muss immer erst hinfahren wenn was kaputt ist, deshalb: never touch a running system)

Ich glaube das Modul setzen aber auch noch ein paar andere ein, es sollte also grundsätzlich laufen.

Ein WAIT Status kommt immer dann, wenn die maximale Anzahl an Threas im SprinkleControl erreicht ist. Dann wird der aktuelle Request in die Queue eingegliedert - muss also warten.
Der Status des Sprinklecontrol Devices müsste 1/1 anzeigen.

Vieleicht kommt es bei dir auch durcheinander weil du 2x off sendest, set_off und off. Probier es mal mit einem Dummy den du manuell auf on oder off schalten kannst - also ohne das set_? davor...
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

nils_

viele Wege in FHEM es gibt!

ulli

Irgendwie bin ich zu doof aber bei mir gibt es das Modul nicht..

Tobias

Gibt es Im contrib

Gesendet von meinem Leap mit Tapatalk

Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

wober

Hallo Tobias,

hast du schon eine Lösung für das Proplem das ich dir 2016 für deinem Programmcode beschrieben habe?

Hallo Tobias,

wenn ich mir so den Verlauf ansehe dürfte ich nun den eifrigster Tester sein. Zur Erklärung, ich habe hier eine Anlage mit 16 Ventilen und 12 Sensoren aufgebaut die das Gardena Tropfsystem versorgt. Folgende Problematik ist mir nun aufgefallen: die Ventile haben mehrere - derzeit bis zu vier Einschaltzeiten pro Tag. Wird nun aufgrund der Einschaltzeit ein Ventil geöffnet werden die anderen auch als aktiv angezeigt und die Funktion "SprinkleControll" zeigt dann auch zb. vier offene Ventile statt wirklich nur das eine. Eine Begrenzung ist hier nicht mehr möglich da statt 1 offener Schaltzustand die Anzahl aller möglicher Schaltzeiten in "SprinkleControll" angezeigt werden.

Der Grund warum ich das Begrenzen muss ist die Stromversorgung die über PoE läuft. Ein Ventil brauch bei 12V 2,5 Watt und ich kann maximal nur vier gleichzeitig laufen lassen.

Kannst du dieses Fehler korregieren? Ich würde gerne für dich die Test durchführen.

Im Anhang findest du nochmals die aktuelle Doku. In diesm Beispiel werden für ein aktives Ventil vier Instanzen belegt!

Viele Grüße,
Wolfgang

Michi1978

Hi, das Modul scheint genau das richtige zu sein was ich suche.

Jedoch habe ich ein kleines Problem, welches von den experten hier bestimmt schnell gelöst werden kann :).

Ich nutze ein Paar Relays die ich über einen Wemos D1 Mini ansteuere, und die kennen den befehl "on-for-timer" leider nicht, dieser befehl wird aber von Sprinkle benutzt.
Wie bekomme ich es hin das ich auch die Relays über den Wemos ansteuern kann?


fiedel

Prüfe doch mal, ob deine Relais die setExtensions können. Damit rüstest du on-for-timer quasi nach. Falls nicht, könntest du jedem Relais ein ReadingsProxy zuordnen. Dieser kann dann auch on-for-timer.
Ganz generell würde ich aber für eine Bewässerung nie ohne Not Relais ohne "echtes" on-for-timer nehmen. Hier schaltet nämlich die Elektronik eigenständig wieder aus, bei deinen Relais muss der aus- Befehl sicher ankommen - sonst läuft das Wasser weiter wie beim Zauberlehrling...  ;)
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

Michi1978

#72
Die Relais werden wie gesagt über den Wemos D1 Mini angesteuert. Was ich vergessen habe zu erwähnen ist, dass auf dem Teil ESPEasy läuft.Mit ReadingProxy habe ich keine erfahrung und bin erlich gesagt in Programieren nicht wirklich gut :D
Die Relays die an die GPIOs am WEMOS hängen, sind im FHEM eingerichtet.

define ESPEasy_ESP8266_3_Pumpe ESPEasy 10.0.0.153 80 espBridge ESP8266_3_Pumpe
attr ESPEasy_ESP8266_3_Pumpe IODev espBridge
attr ESPEasy_ESP8266_3_Pumpe Interval 300
attr ESPEasy_ESP8266_3_Pumpe devStateIcon devStateIcon on:sani_water_tap@blue:off off:sani_water_tap@grey:on absent:10px-kreis-rot:statusRequest .*:ios-NACK:check
attr ESPEasy_ESP8266_3_Pumpe eventMap /gpio 13 on:on/gpio 13 off:off/status gpio 12:check/
attr ESPEasy_ESP8266_3_Pumpe group Bewässerung
attr ESPEasy_ESP8266_3_Pumpe presenceCheck 1
attr ESPEasy_ESP8266_3_Pumpe readingSwitchText 1
attr ESPEasy_ESP8266_3_Pumpe room Gartenhaus
attr ESPEasy_ESP8266_3_Pumpe setState 3
attr ESPEasy_ESP8266_3_Pumpe sortby 19
attr ESPEasy_ESP8266_3_Pumpe stateFormat {ReadingsVal($name,"presence","") eq "absent" ? "absent" : ReadingsVal($name,"SW2","")}
attr ESPEasy_ESP8266_3_Pumpe webCmd on:off


Kannst du mir vielleicht ein Beispiel gegebn anhand des Codes wie ich so ein RP für ein Relay einrichte?

Der befehl für den ESPEasy GPIO on-for-timer lautet hier "longpulse 13(gpio) 1(on) 300(time in sek). also set xxx longpulse 13 1 300.

fiedel

Brauchst kein RP, nur das hier. Hab ich über die Suche nach "esp on-for-timer" gefunden.  8)
FeatureLevel: 6.1 auf Wyse N03D ; Deb. 11 ; Perl: v5.14.2 ; IO: HM-MOD-RPI-PCB + VCCU|CUL 868 V 1.66|LinkUSBi |TEK603
HM: SEC-SCO|SCI-3-FM|LC-SW4-PCB|ES-PMSW1-PL|RC-4-2|SEN-MDIR-O|SEC-WDS-2
CUL: HMS100TF|FS20 S4A-2 ; OWDevice: DS18S20|DS2401|DS2406|DS2423

gestein

Hallo,

ich habe zwar keinen Bodensensor, aber mit einem Dummy-Device funktioniert es anscheinend sehr gut.
Danke für das Modul. Das erleichtert mir mein Gärtnerdasein ,-)
Jetzt muss ich es noch etwas testen...

Ich würde gerne abhängig von der Temperatur mehrmals am Tag gießen lassen, aber immer um 6:30 in der Früh.
Wenn es dann heiß ist, zu Mittag und eventuell auch noch mal am Abend.

Wie muss ich das beim define des Sprinkle angeben?
Ich kann zwar z.B. alle 5min (+00:05:00) oder zu einer definierten Zeit (04:00:00), aber kann ich auch alle 8 Stunden (aber beginnend um 6:30) gießen lassen?

Danke im Voraus
liebe Grüße
Gerhard

p.s.: Übrigens ist da ein kleiner Fehler im wiki um die SprinkleControl im Sprinkle zu setzen: https://wiki.fhem.de/wiki/Bew%C3%A4sserungssteuerung
attr MySprinkle1 SprinkleControl SprinkleControl;

Muss heißen:
attr MySprinkle1 SprinkleControl MySprinkleControl;