OpenSprinkler › Forums › Hardware Questions › OpenSprinkler Pi (OSPi) › Python Interval Program now has "Ignore rain" option
- This topic is empty.
-
AuthorPosts
-
September 10, 2013 at 7:51 pm #22634
Dan in CAParticipantHi All,
The September 10 2013 update to the Python Interval Program is now available on GitHub.
The big news is that a new option has been added to the Stations page which allows selected stations to continue operating during a rain delay or when a rain sensor would stop scheduled programs. This is useful in situations where a zone irrigates plants in sheltered areas or if the station is used for another purpose such as controlling lights a garage door etc.
[attachment=0:1n9x4pty]Ignore-rain.jpg[/attachment:1n9x4pty]
Note: The program also now uses the HTTP port setting from the Options page of the native web interface. New installations will default to port 8080.EDIT:
If you are running another server on your pi that is using port 80, for example if you are using Samer’s mobile web ap with Apache, you will need to edit the file OSPi/data/sd.json.
From a terminal window and in the Pi home directory (pi@raspberrypi ~ $):sudo nano OSPi/data/sd.json
Use the cursor keys (arrow keys) to move to “htp”: 80 and change 80 to the port number you have been using for the program, e.g. 8080.
Then use control+o to save the file and control+x to exit the editor.
Restart the pi with:sudo reboot
and things should be working again.
This is due to an old default of port 80 which is stored in the file /data/sd.json as “htp”: 80,.
This new setting overrides any setting you may have in an rc.local or init.d start up script so you can leave your script as is.See the Wiki for update instructions:
http://rayshobby.net/mediawiki/index.php?title=Python_Interval_Program_for_OSPi#Updating_the_programFrom the README:
Additions, bug fixes:1. Added a per-station “Ignore rain” option that allows a station to operate during rain delay or if a rain sensor detects rain.
2. Modified the program to use the HTTP port setting from the Options page.
3. Improved the way the program tracks current time. This simplified the code and should eliminate some timing bugs.
4. Edited Denny’s init.d start up script to remove IP address and port settings no longer needed.Files that were changed or added in this update:
ospi.py
OSPi/static/scripts/java/svc1.8.3/home.js
OSPi/static/scripts/java/svc1.8.3/progmode.js
OSPi/static/scripts/java/svc1.8.3/viewstations.js
sd_reference.txt
README.md
ospi.sh (used as /etc/init.d/ospi)Dan
September 11, 2013 at 7:22 am #25525
declanslaterParticipantFantastic! Thanks for doing that!!
One little thing I’m running into, I was already running on 8080 for OSPi. The git update said something about dependencies so I did a git stash then git pull. Now the OSPi webpage is not availible, and Samer’s program says system disabled.. help?
Here is what I get:
pi@opensprinkler ~/OSPi/OSPi $ sudo python ospi.py
Starting main loophttp://0.0.0.0:80/
Traceback (most recent call last):
File “ospi.py”, line 1008, in
app.run()
File “ospi.py”, line 1003, in run
return web.httpserver.runsimple(func, (‘0.0.0.0’, port))
File “/home/pi/demos/OpenSprinkler Pi/software/demos/interval_program/OSPi/web/httpserver.py”, line 157, in runsimple
server.start()
File “/home/pi/demos/OpenSprinkler Pi/software/demos/interval_program/OSPi/web/wsgiserver/__init__.py”, line 1753, in start
raise socket.error(msg)
socket.error: No socket could be created
pi@opensprinkler ~/OSPi/OSPi $September 11, 2013 at 12:11 pm #25526
djagerifParticipantLook in /data/sd.json and check to see if “htp” is what you intend it to be. Mine pointed to the wrong port and once I set it manually it worked. I run mine on 8080.
pi@raspberrypi:~/OSPi/data$ cat sd.json
{“en”: 1, “seq”: 0, “mnp”: 32, “rsn”: 0, “htp”: 8080, “nst”: 32, “rdst”: 0, “loc”: “Irene,ZA”, “tz”: 56, “rs”: 0, “tu”: “C”, “rd”: 0, “mton”: 0, “lr”: “100”, “sdt”: 0, “mas”: 8, “bsy”: 1, “lg”: “checked”, “wl”: 100, “nopts”: 13, “pwd”: “b3BlbmRvb3I=”, “ipas”: 0, “urs”: 1, “rst”: 1, “mm”: 0, “mo”: [255, 255, 255, 255], “rbt”: 0, “mtoff”: 0, “nprogs”: 4, “nbrd”: 4}
pi@raspberrypi:~/OSPi/data$Ingo
September 11, 2013 at 4:12 pm #25527
Dan in CAParticipantI was hoping the change in the port setting wouldn’t cause too many progamems.
@ declanslater
The “socket.error: No socket could be created” line in the error message indicates that something is already running on port 80. If you are using Samer’s mobile web app and have a server like Apache running that would produce that result.You will need to manually edit the /data/sd.json file as suggested by Ingo in the previous post*.
*I have edited the instructions in the original post to include instructions for this.
I tested things here but I don’t have Apache running on my test system so I missed that possibility. Sorry about that.
I will be adding Apache and Samer’s app to my test system to avoid this sort of problem in the future.
Dan
September 12, 2013 at 3:07 am #25528
declanslaterParticipantThanks for all the help. That got it fixed…
Sorry to be a bother, but whenever I tick one of the boxes to enable the skip rain thing, I get this…
It does leave the boxes checked when I go back into the page, I haven’t checked it yet to see if works, just wanted to run it by you. Thanks!at /cs list assignment index out of range
Python /home/pi/demos/OpenSprinkler
Pi/software/demos/interval_program/OSPi/ospi.py in GET, line 700Web GET http://192.168.1.66:8080/cs
Traceback (innermost first)
/home/pi/demos/OpenSprinkler
Pi/software/demos/interval_program/OSPi/ospi.py in GETgv.sd = 0 …
▶ Local vars
/home/pi/demos/OpenSprinkler
Pi/software/demos/interval_program/OSPi/web/application.py in handle_classreturn tocall(*args) …
▶ Local vars
/home/pi/demos/OpenSprinkler
Pi/software/demos/interval_program/OSPi/web/application.py in _delegatereturn handle_class(cls) …
▶ Local vars
/home/pi/demos/OpenSprinkler
Pi/software/demos/interval_program/OSPi/web/application.py in handlereturn self._delegate(fn, self.fvars, args) …
▶ Local vars
/home/pi/demos/OpenSprinkler
Pi/software/demos/interval_program/OSPi/web/application.py in processreturn self.handle() …
▶ Local vars
Request information
INPUT
Variable Value
i0 ’14’
i1 ‘0’
m0 ”
m1 ”
pw ‘opendoor’
s0 ‘S01’
s1 ‘S02’
s10 ‘S11’
s11 ‘S12’
s12 ‘S13’
s13 ‘S14’
s14 ‘S15’
s15 ‘S16’
s2 ‘S03’
s3 ‘S04’
s4 ‘S05’
s5 ‘S06’
s6 ‘S07’
s7 ‘S08’
s8 ‘S09’
s9 ‘S10’
COOKIES No data.
META
Variable Value
app_stack [<__main__.OSPi_app instance at
0xb887d8>]fullpath
u’/cs?s0=S01&s1=S02&s2=S03&s3=S04&s4=S05&s5=S06&s6=S07&s7=S08&s8=S09&s9=S10&
s10=S11&s11=S12&s12=S13&s13=S14&s14=S15&s15=S16&pw=opendoor&m0=&i0=14&m1=&i1
=0′headers []
home u’http://192.168.1.66:8080′
homedomain u’http://192.168.1.66:8080′
homepath u”
host u’192.168.1.66:8080′
ip u’192.168.1.196′
method u’GET’
output u”
path u’/cs’
protocol u’http’
query
u’?s0=S01&s1=S02&s2=S03&s3=S04&s4=S05&s5=S06&s6=S07&s7=S08&s8=S09&s9=S10&s10
=S11&s11=S12&s12=S13&s13=S14&s14=S15&s15=S16&pw=opendoor&m0=&i0=14&m1=&i1=0′realhome u’http://192.168.1.66:8080′
status ‘200 OK’
ENVIRONMENT
Variable Value
ACTUAL_SERVER_PROTOCOL ‘HTTP/1.1’
HTTP_ACCEPT
‘text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8’HTTP_ACCEPT_ENCODING ‘gzip, deflate’
HTTP_ACCEPT_LANGUAGE ‘en-US,en;q=0.5’
HTTP_CONNECTION ‘keep-alive’
HTTP_DNT ‘1’
HTTP_HOST ‘192.168.1.66:8080’
HTTP_REFERER ‘http://192.168.1.66:8080/vs’
HTTP_USER_AGENT ‘Mozilla/5.0 (Windows NT 6.1; WOW64;
rv:23.0) Gecko/20100101 Firefox/23.0′PATH_INFO ‘/cs’
QUERY_STRING
‘s0=S01&s1=S02&s2=S03&s3=S04&s4=S05&s5=S06&s6=S07&s7=S08&s8=S09&s9=S10&s10=S
11&s11=S12&s12=S13&s13=S14&s14=S15&s15=S16&pw=opendoor&m0=&i0=14&m1=&i1=0′REMOTE_ADDR ‘192.168.1.196’
REMOTE_PORT ‘62614’
REQUEST_METHOD ‘GET’
REQUEST_URI
‘/cs?s0=S01&s1=S02&s2=S03&s3=S04&s4=S05&s5=S06&s6=S07&s7=S08&s8=S09&s9=S10&s
10=S11&s11=S12&s12=S13&s13=S14&s14=S15&s15=S16&pw=opendoor&m0=&i0=14&m1=&i1=
0′SCRIPT_NAME ”
SERVER_NAME ‘localhost’
SERVER_PORT ‘8080’
SERVER_PROTOCOL ‘HTTP/1.1’
SERVER_SOFTWARE ‘CherryPy/3.2.0 Server’
wsgi.errors
‘,
mode ‘w’ at 0xb6c940d0>wsgi.input
wsgi.multiprocess False
wsgi.multithread True
wsgi.run_once False
wsgi.url_scheme ‘http’
wsgi.version (1, 0)
September 12, 2013 at 4:02 pm #25529
Dan in CAParticipantNo bother.
If there is a problem, please let me know.I just pushed a fix to GitHub.
If you run the update now the problem should be taken care of.The Ignore rain feature didn’t properly take into account expansion boards.
Dan
-
AuthorPosts
- You must be logged in to reply to this topic.
OpenSprinkler › Forums › Hardware Questions › OpenSprinkler Pi (OSPi) › Python Interval Program now has "Ignore rain" option