Skip to content

martinpihrt/OSPy

 
 

Repository files navigation

OSPy

Open Sprinkler Python

OSPy is a free Raspberry Pi based Python 3 program for controlling irrigation systems (sprinkler, drip, IoT, etc). This is my fork from Rimco/OSPy and Dan-in-CA/SIP with My modifications.

For first installation and other visit

Clean installation

Emergency administrator login recovery

If the administrator password is unknown or access to the configured two-factor method has been lost, run the local recovery script from the OSPy directory on the Raspberry Pi or another trusted local shell:

sudo service ospy stop
sudo python3 back_door.py
sudo service ospy start

Stop the service first so its settings database is not being written while recovery runs. The script requires typing RESET for confirmation and then generates a new one-time recovery password for the admin account. It disables passwordless access and two-factor authentication, removes the TOTP secret and backup codes, revokes remembered browser logins, and invalidates active web sessions after OSPy starts again. Irrigation programs, settings, plug-ins, and logs are not deleted. Open the login page, use the displayed recovery password, change it immediately, and configure two-factor authentication again if required. Use sudo python3 back_door.py --yes only in a trusted automated local recovery procedure. See Clean installation for more information.

Hardware relay board test before starting OSPy

The standalone relay_test.py script can verify the relay board and GPIO wiring before OSPy is started, or help diagnose a board fault. It switches all eight shift-register relay outputs and the additional main relay output on and off together every 1.5 seconds.

Warning: Disconnect pumps, valves, contactors, and any other equipment that must not start unexpectedly. The test energizes every relay. Do not run it while the OSPy service is controlling the same GPIO pins.

From the OSPy directory run:

sudo service ospy stop
sudo python3 relay_test.py

Watch or listen for every relay switching. Stop the test with Ctrl+C; the script disables the outputs and cleans up GPIO in its finally block. OSPy can then be started normally:

sudo service ospy start

More information visit

Pihrt.com and OpenSprinkler

YouTube OpenSprinkler channel

Hardware diagram

Multisensor ESP32 and Shelly.com



Sensors by Pihrt.com
Sensors by Shelly.com

For translate OSPy to other language

The OSPy system is currently available in multiple languages. For available languages and step by step, how to use is typed in MD file Any user who joins the "OSPy" project is welcome! Translation of strings into other languages is not demanding (using the Poedit)

Changelog and Issues

Help with to user web Interfaces

Communication with other systems

OSPy can be controlled and monitored using HTTP GET commands. With the addition of available plugins OSPy can communicate with other systems via MQTT. OSPy can also issue Linux shell commands when a station is turned on or off. This is useful for controlling wireless remote devices and for I²C relay hats and boards. The Blinker package that is shipped with OSPy sends messages to other Python modules such as plugins to report changes in status. See the signaling examples file in OSPy's plugins folder for examples. Homeassistant integration via MQTT plugin.

Sensors

OSPy allows to read data from wireless sensors (ESP32, ESP8266...) Docs Shelly sensors and periphery Sensors by Shelly.com

Remote Controller for OSPy based on M5stick-C

This controller allows you to select a program stored in the OSPy on the LCD display and start it with the button. The controller is connected to the home Wi-Fi network. We do not even need a mobile phone or a computer to quickly select programs. We will use this miniature controller. Docs

License

OpenSprinkler Py (OSPy) Interval Program Creative Commons Attribution-ShareAlike 3.0 license

Acknowledgements

Full credit goes to Dan for his generous contributions in porting the microcontroller firmware to Python.

  • The program makes use of web.py (http://webpy.org) for the web interface.
  • The program makes use of cmarkgfm (https://github.com/theacodes/cmarkgfm) to render the help pages written in GitHub flavored markdown (Python 3+).
  • The program makes use of OpenStreetMap (https://www.openstreetmap.org) to convert locations into coordinates.
  • Interactive weather location maps use Leaflet 1.9.4 (https://leafletjs.com), distributed locally under the BSD 2-Clause license, with map tiles and attribution from OpenStreetMap.
  • The program makes use of Stormglass API (https://stormglass.io/) for weather information.
  • The program makes use Blinker (https://pythonhosted.org/blinker/) package that is shipped with OSPy sends messages to other Python modules such as plugins to report changes in status.
  • The program makes use Arduino (https://arduino.cc) ESP32, Atmega328 and more HW boards pro OSPy aditional sensors, water tank monitor.

Packages

 
 
 

Contributors

Languages

  • G-code 69.1%
  • C++ 13.2%
  • Python 12.8%
  • HTML 2.2%
  • C 0.9%
  • JavaScript 0.9%
  • Other 0.9%