Hallo,
ich möchte hiermal mein Projekt zur Gartenbewässerung Vorstellen was ich letztes Jahr abgeschlossen habe. Da ich von diesem Projekt noch nicht einmal was hier im Forum gelesen habe, wollte ich mal darüber berichten...
Gesteuert werden bei mir Hunter Ventile die mit 24V betrieben werden. Auch andere Ventile sind natürlich möglich. Die Steuerung erfolgt über einen OSPI (Opensprinkler Pi). Diesen habe ich aus Amerika importieren lassen und kostet umgerechnet 70€. Auf diesem Gerät wird dann der Raspberry pi aufgesteckt der über den OSPI mit Strom versorgt wird. Für den OSPI gibt es bereits eine deutschsprachige App /Weboberfläche die das Bewässern zum einem Automatisch ermöglicht (je nach Wetterdaten von der Wetterstation aus der Umgebung / Feuchtigkeitssensor) oder Manuelle Steuerung sowie Zeitsteuerung ist von überall aus möglich.
Das ganze habe ich dann auch noch zusätzlich in FHEM über http request eingebunden. So kann jedes Ventil von dort aus nochmal angesteuert werden. Auch ein Modul könnte ich mir dazu Vorstellen. Ich habe mich im Vorfeld über Zahlreiche Steuerungsvarianten informiert und find dieses System einfach Unschlagbar im Vergleich zu den Produkten die man hier so erwerben kann. Und bezahlbar ist das ganze auch noch ;-)
Informieren könnt ihr euch dann auch auf https://opensprinkler.com (https://opensprinkler.com)
Hallo!
Das Ganze klingt prima und ich habe gerade auch einen "Opensprinkler" bestellt.
Könntest Du vielleicht noch den Code für die Steuerung aus FHEM mittels httpmod bereitstellen? Das würde mir viel erleichtern.
Danke und Grüße
Phil
Na mit deiner Wahl zum OSPI hast du nix verkehr gemacht ! ;D
Möchtest du das ganze mit einem seperaten Pi betreiben oder wilst du den nehmen worauf bereits denn FEHM läuft?
Als erstes habe ich einen Dummy erstellt:
define Wasserschlauch dummy
Als nächstes habe ich jeweils für On / Off ein DOIF erstellt wo bei der jeweiligen Schalterstellung eine py Datei ausgeführt wird:
define Wasserschlauch_On DOIF ([Wasserschlauch] eq "on")({system('sudo python /home/pi/wasser/wasserschlauch30min.py&');;})DOELSE ()
Die Py Datei liegt dann bei mir in /home/pi/wasser/wasserschlauch30min.py und sieht wie folgt aus:
import urllib2
url_response = urllib2.urlopen('http://192.xxx.xxx.xxx:8080/.........')
Man kann das ganze bestimmt noch anders lösen, aber es erfüllt seinen zweck ;) Anstelle der Adresse musst du die jeweilige ip zu dem http get command eingeben den du an der Stelle ausführen möchtest. Die Commands dafür findest du auf http://rayshobby.net/wordpress/wp-content/uploads/2011/10/Firmware1.8HTTPGETcommands.pdf (http://rayshobby.net/wordpress/wp-content/uploads/2011/10/Firmware1.8HTTPGETcommands.pdf)
Hallo!
Ich möchte dafür einen separaten Pi einsetzen. FHEM läuft bei mir auf einem NUC. Der Pi kommt dann ins Gartenhaus.
Auf den Opensprinkler DC bin ich echt gespannt, ob er wirklich mit meinen Rainbird-Ventilen gut arbeitet.
Hast Du sonst irgendwelche "Schnittstellen" genutzt, um auch den Status von Opensprinkler in FHEM abzubilden?
Viele Grüße
Phil
Ich denke das wird alles problemlos funktionieren!
Leider habe mich noch nicht damit befasst den Status in FHEM dazustellen. Ein Modul wäre da sicherlich sehr Hilfreich aber da bin ich noch ziemlich Ahnungslos.
Du kannst ja mal berichten wenn du den OSPI in Betrieb nimmst!
Hallo!
Ich habe am Wochenende den Opensprinkler DC in Betrieb genommen und bin ziemlich begeistert.
Das Gerät funktioniert einfach. Hingeschraubt, Ventile angeklemmt, läuft.
Über die API wähle ich das aktuelle Programm und lese die Ventilstati aus. In FHEM klappt das ganz gut:
define OSPi_Status_WaterLevel HTTPMOD http://10.10.9.155/jo?pw=HASH 1200
attr OSPi_Status_WaterLevel userattr reading01Name reading01Regex
attr OSPi_Status_WaterLevel reading01Name WaterLevel
attr OSPi_Status_WaterLevel reading01Regex .*"wl":([0-9]{1,4})
define OSPi_Status_Ventile HTTPMOD http://10.10.9.155/js?pw=HASH 12
attr OSPi_Status_Ventile userattr reading01Name reading01Regex reading02Name reading02Regex reading03Name reading03Regex reading04Name reading04Regex reading05Name reading05Regex
attr OSPi_Status_Ventile event-on-change-reading .*
attr OSPi_Status_Ventile reading01Name Zone0
attr OSPi_Status_Ventile reading01Regex .*sn":\[([0-9])
attr OSPi_Status_Ventile reading02Name Zone1
attr OSPi_Status_Ventile reading02Regex .*sn":\[[0-9],([0-9])
attr OSPi_Status_Ventile reading03Name Zone2
attr OSPi_Status_Ventile reading03Regex .*sn":\[[0-9],[0-9],([0-9])
attr OSPi_Status_Ventile reading04Name Zone3
attr OSPi_Status_Ventile reading04Regex .*sn":\[[0-9],[0-9],[0-9],([0-9])
attr OSPi_Status_Ventile reading05Name Zone4
attr OSPi_Status_Ventile reading05Regex .*sn":\[[0-9],[0-9],[0-9],[0-9],([0-9])
bzw. ein Bash-Script zum Wählen des Programms (nicht hübsch, aber selten):
#!/bin/bash
if [ -z $1 ]; then
AKTIVESPROGRAMM='999'
else
AKTIVESPROGRAMM=$1
fi
PWHASH="HASH"
BASEURL="http://10.10.9.150"
GETDATA=$(wget "$BASEURL/jp?pw=$PWHASH" -qO-)
PROGCOUNT=$(echo $GETDATA| grep -oP '(?<="nprogs":){1,3}[0-9]')
MAXINDEX=$(($PROGCOUNT -1 ))
echo $MAXINDEX
for((i=1; i<=$PROGCOUNT; i++))
do
INDEX=$(($i -1 ))
echo Index: $INDEX
ENTRY=$(echo $GETDATA | grep -oP '(?<="pd":).*' | grep -oP '\[[0-9].*?"\]' | head -n $i | tail -n 1)
echo $ENTRY
FLAG=$(echo $ENTRY | grep -oP '(?<=^\[)[0-9]{1,3}' )
echo $FLAG | head -n 1
NAME=$(echo $ENTRY | grep -oP '(?<=").*(?=\")')
if [ $INDEX -eq $AKTIVESPROGRAMM ]; then
if [ $(($FLAG % 2)) -eq 0 ]; then
echo "Profil inaktiv - aktiviere"
FLAGNEW=$(($FLAG + 1))
STRINGREST=$(echo $ENTRY | grep -oP '(?<=[0-9],).*')
NEWENTRY=$(echo [$FLAGNEW,$STRINGREST)
wget "$BASEURL/cp?pw=$PWHASH&pid=$INDEX&v=$NEWENTRY&name=$(perl -MURI::Escape -e 'print uri_escape shift, , q{^A-Za-z0-9\-._~/:}' -- "$NAME")" -qO-
else
echo "Profil aktiv, nichts zu tun"
NEWENTRY=$ENTRY
fi
else
if [ $(($FLAG % 2)) -eq 0 ]; then
echo "Profil inaktiv - nichts zu tun"
NEWENTRY=$ENTRY
else
echo "Profil aktiv - deaktiviere"
FLAGNEW=$(($FLAG - 1))
STRINGREST=$(echo $ENTRY | grep -oP '(?<=[0-9],).*')
NEWENTRY=$(echo [$FLAGNEW,$STRINGREST)
wget "$BASEURL/cp?pw=$PWHASH&pid=$INDEX&v=$NEWENTRY&name=$(perl -MURI::Escape -e 'print uri_escape shift, , q{^A-Za-z0-9\-._~/:}' -- "$NAME")" -qO-
fi
fi
Moin
ich habe auch Opensprinkler-Pi bei mir am laufen und möchte gerne die einzelnen Kreise über FHEM an/ausschalten.
Über die URL
http://192.168.100.60:8080/cm?pw=a6d82bced638de3def1e9bbb4983225c&sid=0&en=1&t=360
kann ich auch die Kreise ansteuern.
Habe die Scriptbeispiele von Kalle genommen und die URL natürlich angepasst.
Wie kann ich nun an und aus schalten? Wie kann ich nun ein Toggle-Button erstellen, bzw. wie ist nun der FHEM Befehl um den Kreis zu aktivieren?
@Stril
wo muss ich das Bash script ablegen ?
Gruß
Kobi
Hallo!
Wo das Skript liegt, ist egal. Hauptsache lesbar und ausführbar für den User fhem.
Wenn du das Skript anpasst, kannst du auch leicht einen Kreis für ein paar Minuten anmachen
Ich sehe in deinem Script bzw. FHEM Script keine Pfadangabe für das Bash script, deswegen meine Frage.
Ach so! Der FHEM-Code ist nur für das Auslesen der Stati.
Das Setzen der Stati passiert mit dem Skript. Dafür kannst Du z.B. über ein DOIF arbeiten:
([0:30] and [s_Bodenfeuchte] > 85) ({system('/opt/fhem/scripts/OpenSprinkler_SetRaindelay.bash 6')}) DOELSEIF ([0:30] and [s_Wetterstion_RegenmengeLast24Hours] > 1) ({system('/opt/fhem/scripts/OpenSprinkler_SetRaindelay.bash 6')})
--> Bei mir liegt z.B. in /opt/fhem/scripts/... ein Skript, das den Raindelay per http-get setzt.
Das Skript sieht dann so aus:
#!/bin/bash
DELAY=$1
PWHASH="XXXXXXXX"
BASEURL="http://10.10.9.155"
GETDATA=$(wget "$BASEURL/cv?pw=$PWHASH&rd=$DELAY" -qO-)
echo $GETDATA
Grüße