All Projects → vacovsky → pirrigo

vacovsky / pirrigo

Licence: MIT license
Full-featured Raspberry Pi based irrigation controller and web application for scheduling.

Programming Languages

HTML
75241 projects
typescript
32286 projects
go
31211 projects - #10 most used programming language
javascript
184084 projects - #8 most used programming language
CSS
56736 projects
shell
77523 projects

Projects that are alternatives of or similar to pirrigo

raincloudy
RainCloudy is a library written in Python 3.x that manages the Melnor RainCloud Smart Garden Watering Irrigation Timer.
Stars: ✭ 22 (+22.22%)
Mutual labels:  irrigation, watering-plants
go-hd44780
Golang library to interact with liquid-crystal display driven by Hitachi HD44780 IC via I2C-bus driver from Raspberry PI.
Stars: ✭ 31 (+72.22%)
Mutual labels:  gpio
Gpio
Go library to do GPIO on systems with /sys/class/gpio (sysfs)
Stars: ✭ 120 (+566.67%)
Mutual labels:  gpio
Rpi gpio
Ruby conversion of RPi.GPIO Python module
Stars: ✭ 185 (+927.78%)
Mutual labels:  gpio
Raspberry Pi Safe Off Switch
A set of scripts that can be used to provide a "safe power off switch" for a Raspberry Pi.
Stars: ✭ 144 (+700%)
Mutual labels:  gpio
Mqtt Io
Expose GPIO modules (Raspberry Pi, Beaglebone, PCF8754, PiFace2 etc.) and digital sensors (LM75 etc.) to an MQTT server for remote control and monitoring.
Stars: ✭ 234 (+1200%)
Mutual labels:  gpio
Endbasic
BASIC environment with a REPL, a web interface, and RPi support written in Rust
Stars: ✭ 106 (+488.89%)
Mutual labels:  gpio
pihut-xmas-asyncio
Demonstration driving The Pi Hut Raspberry Pi 3D Xmas tree using Python Asyncio
Stars: ✭ 15 (-16.67%)
Mutual labels:  gpio
saklarku
Aplikasi mobile remote control untuk mengendalikan saklar/relay yang terhubung dengan port LED/GPIO di router berbasis OpenWRT
Stars: ✭ 20 (+11.11%)
Mutual labels:  gpio
Johnny Five
JavaScript Robotics and IoT programming framework, developed at Bocoup.
Stars: ✭ 12,498 (+69333.33%)
Mutual labels:  gpio
Diozero
Java Device I/O library that is portable across Single Board Computers. Tested with Raspberry Pi, Odroid C2, BeagleBone Black, Next Thing CHIP, Asus Tinker Board and Arduinos. Supports GPIO, I2C, SPI as well as Serial communication. Also known to work with Udoo Quad.
Stars: ✭ 167 (+827.78%)
Mutual labels:  gpio
Gpiod
A native Go library for Linux GPIO
Stars: ✭ 142 (+688.89%)
Mutual labels:  gpio
Drivers
TinyGo drivers for sensors and other devices that use I2C, SPI, GPIO, ADC, and UART interfaces.
Stars: ✭ 250 (+1288.89%)
Mutual labels:  gpio
Periph
Go·Hardware·Lean
Stars: ✭ 1,700 (+9344.44%)
Mutual labels:  gpio
rss2hook
POST to webhook(s) when new feed-items appear.
Stars: ✭ 33 (+83.33%)
Mutual labels:  golang-application
Powershell Iot
Interact with I2C, SPI & GPIO devices using PowerShell Core!
Stars: ✭ 106 (+488.89%)
Mutual labels:  gpio
Nf Interpreter
⚙️ nanoFramework Interpreter, CLR, HAL, PAL and reference target boards
Stars: ✭ 168 (+833.33%)
Mutual labels:  gpio
Rpi Rgb Led Matrix
Controlling up to three chains of 64x64, 32x32, 16x32 or similar RGB LED displays using Raspberry Pi GPIO
Stars: ✭ 2,544 (+14033.33%)
Mutual labels:  gpio
powerplant
Optimize and assist planning your garden
Stars: ✭ 75 (+316.67%)
Mutual labels:  garden
awesome-embedded-swift
⚡️🛠🧰 A curated list for Embedded and Low-Level development in the Swift programming language.
Stars: ✭ 57 (+216.67%)
Mutual labels:  gpio

PirriGo

Irrigation and garden management application, in Go and Angular 13. Based on Pirri.

Screenshots

Zones

Stations

Calendar

Calendar

Station Scheduler

Scheduler

History of Activity

History

Charted Run Stats

Run Stats

Hardware

Hardware

Features

  • Activate irrigation zones on a schedule, or manually
  • Track total seconds spent watering by zone, day of the week, and other metrics
  • Estimate monthly costs to operate your irrigation system
  • Using WeatherUnderground, leverage current weather data to automatically regulate watering (increase in heat waves, reduce when rain will do the job for you)

Setup

Clone repository to your Pi

git clone https://github.com/vacoj/pirrigo.git

Installing Go in Raspbian

wget https://storage.googleapis.com/golang/go1.7.linux-armv6l.tar.gz
sudo tar -C /usr/local -xzf go1.7.linux-armv6l.tar.gz
export PATH=/usr/local/go/bin:$PATH

Install required Go packages

go get "github.com/davecgh/go-spew/spew"
go get "github.com/jinzhu/gorm"
go get "github.com/jinzhu/gorm/dialects/mysql"
go get "github.com/newrelic/go-agent"
go get "github.com/stianeikeland/go-rpio"
go get "github.com/streadway/amqp"
go get "go.uber.org/zap"

Install javascript libraries for web

cd pirrigo/src/pirri-spa
npm install

Setting up SQL for testing

This application no longer supports MySQL.  Now it uses SQLite3

Configuration file (example)

{
    "pirri": {
        "welcome_message":"L/P is demo/demo",
        "utc_offset": -8,
        "monitor_interval": 60,
        "rain_skip": true,
        "use_rabbit": false,
        "date_format": "2006-01-02 15:04:05"
    },
    "rabbitmq": {
        "server": "192.168.111.50",
        "port": "5672",
        "user": "rabbit",
        "secret": "bunnyrabbit!!",
        "task_queue": "pirri_go_work_dev"
    },
    "sql": {
        "dbtype": "mysql",
        "server": "localhost",
        "user": "pirritesting",
        "secret": "pirritesting",
        "db": "pirritesting",
        "port": "3306"
    },
    "newrelic": {
        "active": false,
        "license_path": "../../../nr_key"
    },
    "redis": {
        "host": "localhost",
        "port": "6379"
    },
    "web": {
        "port": "8001",
        "user": "demo",
        "secret": "demo"
    },
    "weather": {
        "wunderground_key": "",
        "state_abbreviation": "CA",
        "city": "Atascadero",
        "units": "imperial",
        "station": "KCAATASC69"
    },
    "debug": {
        "pirri": true,
        "gorm": false,
        "settings": false,
        "simulate_gpio": true,
        "log_path": "pirrigo.log"
    }
}

Running app

cd pirrigo/src/pirri
./pirri /path/to/config.json

Notes

TODO

  • Provide hardware assembly instructions
  • Better automate initial stand-up and configuration of service.
  • Finish making the front end less offensive.
  • Make the calendar interactive (like in the original version, but prettier and more functional)

Manual submission of a station run with curl

(when not using authentication)

curl -X POST -d "{\"StationID\": 2, \"Duration\": 60}" http://localhost:8001/station/run
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].