January 3, 2021 at 1:49 pm #68991
Let me start by emphasising how awesome the OpenSprinkler project is, after you fixed the server.h Server.h issue.
I’m doing this for my balcony and (I guess lol) for my bachelors thesis about “how to ecologically grow and consume plants in an urban environment”.
I’m planning on gathering lots of data via the OS I2C with MQTT and sending it to a RaspberryPi with IOTstack and NodeRed, Mosquitto, Grafana and InfluxDB.
At the moment it is a test rig. Ultimateley it is supposed to be a portable and modular (stackable) container with small pump and solar panel, protecting flowers in need from the screaming sun!
For that I hacked two “1$ moisture sensors”, an LM358 (thanks for the hint Ray), and two 2N2222 transistors into an AND gate, so that the pump only runs, if water is in the lower container AND NOT (at the sensor) in the upper container. This is done by one OS and the second OS is still waiting for soldering as I just finished integrating all the I2C libraries and MQTT handling thereof today. Maybe I’ll hack the I2C ADC data in for some more elaborate moisture sensing, but I have to present on 11th of January.
I have many more ideas and also some questions:
“Remote zone” -> plant dies if no WiFi, or clever backup strategy? Was thinking about putting all OS in OSPi as “remote zone”…
Anyway, have fun with the pictures and I look forward to your input! (The Github repo will be announced on 25.1. as I have to submit it as MY work till then (unfortunately).
(For future installations I’m going to order the PCB, as I do not want to solder anymore 😛 Hopefully you make the I2C and 5V easily accessible from the outside.)
Attachments:January 7, 2021 at 10:57 am #69025
more pictures to come!
Any ideas where to init the sensors? I circumvented the problems I was having by flashing with vanilla OS first and then uploading my custom OS. ATM I just check if STAtion or AccessPoint mode to fix this bug but ultimately only want to call init (and set a flag) at the right point (mqtt.init()?)
still love this weird pile of foreign language 😀
Attachments:January 9, 2021 at 9:17 am #69042
First, thanks for sharing your project. Regarding the question “Any ideas where to init the sensors” — can you be more specific? Did you mean where in the firmware code to init the sensors? Generally initialization code can go to OpenSprinkler.cpp, look for the
function. But if your code requires network to be ready, then it should go to main.cpp, look for the
function. There you will see mqtt.init.February 1, 2021 at 11:27 am #69167
Let me start by thanking you again, Ray! The project you set out to develop is awesome!
Atm I have holidays and take a break from my project.
When I come back, I want to further develop OS and wonder how to go about it, to ultimately merge and not only develop another exotic branch.
I’d like to structure pull requests like this and apprechiate feedback:
- add MQTT_pushmessage case Custom Sensor
- add support for 8 binary soil moisture sensors, corresponding to the 8 ports
- add support for air humidity control (SHT31-I2C)
Ofc these PR will be without sensor initialisation, to not bloat the Firmware.
When thinking about it, some kind of firmware customiser GUI for all the possible I2C attachments would be wise. This GUI would then paste the class definitions in opensprinkler.h and opensprinkler.cpp and put the init code there + sets up mqtt sending of the measured values.
For my thesis I’ll be referencing what I put where to get it to work and it will be in the public domain.
What I managed to develop until now (doesn’t work if you don’t have 2xADS1117 plugged in):
https://github.com/StohanzlMart/OpenSprinkler-Firmware/commits/master more to come later this month 🙂
The presentation I gave: https://cloud.technikum-wien.at/s/AQdEjb5fmX9FfMnFebruary 2, 2021 at 11:40 am #69175
Very interesting. Coincidentally, a user recently contacted me about extending the capability of OpenSprinkler, such as support for 1-wire devices, and in the middle of thinking about this, I decided to make an extension module which make use of the existing zone expander connector to hook up various I2C devices. Because OpenSprinkler 3.0 zone expander uses I2C, the connector has all the necessary pins. So I am thinking of making a variant of the zone expander called 1-Wire / Analog extension module, which plugs into the zone expander connector, and it will serve as a 1-wire device master, and also will have ADS1015 / 1115 to provide analog reading capability. The nice thing about this is that just like the zone expander, it will have a incoming 2×5 connector and outgoing 2×5 connector, so existing zone expanders can still be plugged into this module. So some part of this plan happen to coincide with your idea!February 2, 2021 at 2:55 pm #69176
Thank you Ray, for replying and sharing!
That definately sounds like a smart idea! What a funny coincidence. (I’d imagine the user being Stefan Schmaltz from openspinklershop.de ^^)
About what time horizon do you think for the extension module?
(And yes, I ment ADS1115.)
I’m somewhat stumped by the “Expander Detection” but have 10 PCA9555 soldered up on SSOP24-breakouts and am ready to rumble further, starting mid feb!
Attached just some pictures how I butchered your OS-HW-3.0 :3. Maybe, just maybe I’ll learn to redesign with TH-MOS-FETs, although the SMD sample booklet arrived 😛
NinjaEdit: Do you think current driven pump shutoff (last picture) would ever fit into OpenSprinkler?
Attachments:February 2, 2021 at 3:02 pm #69182
Haha, I found a bug in the matrix, how to upload more pictures 😛
Please ignore/delete the doublicates if you can!
- You must be logged in to reply to this topic.