Office plant monitoring
-
If I use more than one sensor for this. It still will only monitor one plant right? Or can I say monitor 3-4 plants with one node?
-
I have an arduino pro mini, connected to 2-3 flowers using A0+A1, A2+A3, A4+A5.. unfortunately, I'm seeing some weird effects between the plants.. if I water one plant, another can change a bunch at the same time (or not, depending on stuff).. Also if I disconnect one flower, another flower can get way different values too..
I haven't figured out yet if I'm getting a capacitor effect in the flowers, sending back power through the output signals or what's happening..

Here I added water to the "green" flower, then the values for the gray one dropped. The gray one was physically untouched while watering.
Code is based on mfalkvidd, with all Ax being set to output=0 and then input+pullup for one while reading..
-
I have an arduino pro mini, connected to 2-3 flowers using A0+A1, A2+A3, A4+A5.. unfortunately, I'm seeing some weird effects between the plants.. if I water one plant, another can change a bunch at the same time (or not, depending on stuff).. Also if I disconnect one flower, another flower can get way different values too..
I haven't figured out yet if I'm getting a capacitor effect in the flowers, sending back power through the output signals or what's happening..

Here I added water to the "green" flower, then the values for the gray one dropped. The gray one was physically untouched while watering.
Code is based on mfalkvidd, with all Ax being set to output=0 and then input+pullup for one while reading..
-
Hi,
in last MySensors lib version 2.1.0, I see a new sensor type : S_MOISTURE
It's more logicial to use this new type instead of S_HUM ?and so use V_LEVEL instead of V_HUM ?
Thanks for respons
@Tetnobic i tried this and Ended up with a soil sensor that didn't display % but something called cb?
But yeah it works.
-
I made a node with 1 fork and it works great!
Any tips on how i can use more than one fork to monitor say 3-4 plants?
-
@Stric interesting (and strange) effect. I wonder what causes it. Maybe the wait time beween turning on the pin and doing the measurement is too short so the level doesn't settle completely?
@mfalkvidd I'm going to do some tests with changing the sampling time and sleep time, but I'm not so hopeful since the effect is seen hours/days after an "unrelated" change.. I got stuck yesterday playing with ESPEasy, but I'll get back to debugging this..
-
I made a node with 1 fork and it works great!
Any tips on how i can use more than one fork to monitor say 3-4 plants?
@meanmrgreen See my post a few up, I'm seeing some weird effects when connecting to more than one plant..
-
@meanmrgreen See my post a few up, I'm seeing some weird effects when connecting to more than one plant..
Does reverse polarity really help with corrosion then? Maybe it has something to do with that.
-
Small problem with my plant sensor. Used only the fork and the reverse polarity.
But the sensor is reporting around 80-70% all the time, alltho the plant is pretty dry.
When i remove the sensor from pot it shows 0% ?
Can you calibrate the fork somehow?
-
Small problem with my plant sensor. Used only the fork and the reverse polarity.
But the sensor is reporting around 80-70% all the time, alltho the plant is pretty dry.
When i remove the sensor from pot it shows 0% ?
Can you calibrate the fork somehow?
-
@meanmrgreen I calibrate by putting my finger in the soil. When the soil is too dry I note the current value and set a notification to trigger next time it reaches that level.
Ok :)
But Its normal just to lower by a few percent in a few days time? -
Ok :)
But Its normal just to lower by a few percent in a few days time? -
I need to check my node. It Constantly shows 80-90%. Have switched forks and plant same number. If I pull it out of the dirt it gets to 0%
Using only the fork no board in the middle with the alternate current sketch.
-
Re: Office plant monitoring
Hello, i have build the sensor from the building page. I directly connect the fork to pin D6,D7. When i show the measurement i see strange values. anyone an idea what i did wrong?09.02.2017 19:22:23 Multi Sensor (multi2) SoilMoistPercentageSensor 3 % 09.02.2017 19:16:51 Multi Sensor (multi2) SoilMoistPercentageSensor 0 % 09.02.2017 19:11:20 Multi Sensor (multi2) SoilMoistPercentageSensor 3 % 09.02.2017 19:05:48 Multi Sensor (multi2) SoilMoistPercentageSensor 5 % 09.02.2017 19:00:17 Multi Sensor (multi2) SoilMoistPercentageSensor -1 % 09.02.2017 18:54:46 Multi Sensor (multi2) SoilMoistPercentageSensor 8 % 09.02.2017 18:48:41 Multi Sensor (multi2) SoilMoistPercentageSensor 5 % 09.02.2017 18:43:10 Multi Sensor (multi2) SoilMoistPercentageSensor 6 % 09.02.2017 18:37:38 Multi Sensor (multi2) SoilMoistPercentageSensor 1 % 09.02.2017 18:32:07 Multi Sensor (multi2) SoilMoistPercentageSensor -1 % 09.02.2017 18:26:36 Multi Sensor (multi2) SoilMoistPercentageSensor -1 % 09.02.2017 18:21:04 Multi Sensor (multi2) SoilMoistPercentageSensor 4 % 09.02.2017 18:15:33 Multi Sensor (multi2) SoilMoistPercentageSensor 4 % 09.02.2017 18:10:02 Multi Sensor (multi2) SoilMoistPercentageSensor 6 % 09.02.2017 18:03:57 Multi Sensor (multi2) SoilMoistPercentageSensor 6 % 09.02.2017 17:58:26 Multi Sensor (multi2) SoilMoistPercentageSensor 0 % 09.02.2017 17:52:54 Multi Sensor (multi2) SoilMoistPercentageSensor 6 % 09.02.2017 17:46:50 Multi Sensor (multi2) SoilMoistPercentageSensor 5 % 09.02.2017 17:41:19 Multi Sensor (multi2) SoilMoistPercentageSensor -1 % 09.02.2017 17:34:41 Multi Sensor (multi2) SoilMoistPercentageSensor 6 % 09.02.2017 17:29:10 Multi Sensor (multi2) SoilMoistPercentageSensor -3 % 09.02.2017 17:23:39 Multi Sensor (multi2) SoilMoistPercentageSensor -11 % -
Re: Office plant monitoring
Hello, i have build the sensor from the building page. I directly connect the fork to pin D6,D7. When i show the measurement i see strange values. anyone an idea what i did wrong?09.02.2017 19:22:23 Multi Sensor (multi2) SoilMoistPercentageSensor 3 % 09.02.2017 19:16:51 Multi Sensor (multi2) SoilMoistPercentageSensor 0 % 09.02.2017 19:11:20 Multi Sensor (multi2) SoilMoistPercentageSensor 3 % 09.02.2017 19:05:48 Multi Sensor (multi2) SoilMoistPercentageSensor 5 % 09.02.2017 19:00:17 Multi Sensor (multi2) SoilMoistPercentageSensor -1 % 09.02.2017 18:54:46 Multi Sensor (multi2) SoilMoistPercentageSensor 8 % 09.02.2017 18:48:41 Multi Sensor (multi2) SoilMoistPercentageSensor 5 % 09.02.2017 18:43:10 Multi Sensor (multi2) SoilMoistPercentageSensor 6 % 09.02.2017 18:37:38 Multi Sensor (multi2) SoilMoistPercentageSensor 1 % 09.02.2017 18:32:07 Multi Sensor (multi2) SoilMoistPercentageSensor -1 % 09.02.2017 18:26:36 Multi Sensor (multi2) SoilMoistPercentageSensor -1 % 09.02.2017 18:21:04 Multi Sensor (multi2) SoilMoistPercentageSensor 4 % 09.02.2017 18:15:33 Multi Sensor (multi2) SoilMoistPercentageSensor 4 % 09.02.2017 18:10:02 Multi Sensor (multi2) SoilMoistPercentageSensor 6 % 09.02.2017 18:03:57 Multi Sensor (multi2) SoilMoistPercentageSensor 6 % 09.02.2017 17:58:26 Multi Sensor (multi2) SoilMoistPercentageSensor 0 % 09.02.2017 17:52:54 Multi Sensor (multi2) SoilMoistPercentageSensor 6 % 09.02.2017 17:46:50 Multi Sensor (multi2) SoilMoistPercentageSensor 5 % 09.02.2017 17:41:19 Multi Sensor (multi2) SoilMoistPercentageSensor -1 % 09.02.2017 17:34:41 Multi Sensor (multi2) SoilMoistPercentageSensor 6 % 09.02.2017 17:29:10 Multi Sensor (multi2) SoilMoistPercentageSensor -3 % 09.02.2017 17:23:39 Multi Sensor (multi2) SoilMoistPercentageSensor -11 %Which sketch did you use? The one from this page needs the fork connected to analog input pins Ax.
-
Which sketch did you use? The one from this page needs the fork connected to analog input pins Ax.
@Jan-Gatzke I have connected the fork to A0 and A1 of mine arduino nano. Now i have this result:
10.02.2017 12:17:35 Multi Sensor (multi2) SoilMoistPercentageSensor -182 % 10.02.2017 12:12:04 Multi Sensor (multi2) SoilMoistPercentageSensor -455 % 10.02.2017 12:06:33 Multi Sensor (multi2) SoilMoistPercentageSensor -317 % 10.02.2017 12:01:02 Multi Sensor (multi2) SoilMoistPercentageSensor 255 % 10.02.2017 11:55:31 Multi Sensor (multi2) SoilMoistPercentageSensor -547 % 10.02.2017 11:49:26 Multi Sensor (multi2) SoilMoistPercentageSensor 1169 % 10.02.2017 11:43:55 Multi Sensor (multi2) SoilMoistPercentageSensor 40 % 10.02.2017 11:38:24 Multi Sensor (multi2) SoilMoistPercentageSensor -250 %This is the sketch i use:
/* * The MySensors Arduino library handles the wireless radio link and protocol * between your home built sensors/actuators and HA controller of choice. * The sensors forms a self healing radio network with optional repeaters. Each * repeater and gateway builds a routing tables in EEPROM which keeps track of the * network topology allowing messages to be routed to nodes. * * Created by Henrik Ekblad <henrik.ekblad@mysensors.org> * Copyright (C) 2013-2015 Sensnology AB * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors * * Documentation: http://www.mysensors.org * Support Forum: http://forum.mysensors.org * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * version 2 as published by the Free Software Foundation. * ******************************* * * DESCRIPTION * * Arduino soil moisture based on gypsum sensor/resistive sensor to avoid electric catalyse in soil * Required to interface the sensor: 2 * 4.7kOhm + 2 * 1N4148 * * Gypsum sensor and calibration: * DIY: See http://vanderleevineyard.com/1/category/vinduino/1.html * Built: Davis / Watermark 200SS * http://www.cooking-hacks.com/watermark-soil-moisture-sensor?_bksrc=item2item&_bkloc=product * http://www.irrometer.com/pdf/supportmaterial/sensors/voltage-WM-chart.pdf * cb (centibar) http://www.irrometer.com/basics.html * 0-10 Saturated Soil. Occurs for a day or two after irrigation * 10-20 Soil is adequately wet (except coarse sands which are drying out at this range) * 30-60 Usual range to irrigate or water (except heavy clay soils). * 60-100 Usual range to irrigate heavy clay soils * 100-200 Soil is becoming dangerously dry for maximum production. Proceed with caution. * * Connection: * D6, D7: alternative powering to avoid sensor degradation * A0, A1: alternative resistance mesuring * * Based on: * "Vinduino" portable soil moisture sensor code V3.00 * Date December 31, 2012 * Reinier van der Lee and Theodore Kaskalis * www.vanderleevineyard.com * Contributor: epierre */ // Copyright (C) 2015, Reinier van der Lee // www.vanderleevineyard.com // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // any later version. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // Enable debug prints to serial monitor #define MY_DEBUG // Enable and select radio type attached #define MY_RADIO_NRF24 //#define MY_RADIO_RFM69 #include <math.h> // Conversion equation from resistance to % #include <MySensors.h> // Setting up format for reading 3 soil sensors #define NUM_READS 10 // Number of sensor reads for filtering #define CHILD_ID 0 MyMessage msg(CHILD_ID, V_LEVEL); unsigned long SLEEP_TIME = 30000; // Sleep time between reads (in milliseconds) long buffer[NUM_READS]; int index; /// @brief Structure to be used in percentage and resistance values matrix to be filtered (have to be in pairs) typedef struct { int moisture; //!< Moisture long resistance; //!< Resistance } values; const long knownResistor = 4700; // Constant value of known resistor in Ohms int supplyVoltage; // Measured supply voltage int sensorVoltage; // Measured sensor voltage values valueOf[NUM_READS]; // Calculated moisture percentages and resistances to be sorted and filtered int i; // Simple index variable void setup() { // initialize the digital pins as an output. // Pin 6,7 is for sensor 1 // initialize the digital pin as an output. // Pin 6 is sense resistor voltage supply 1 pinMode(6, OUTPUT); // initialize the digital pin as an output. // Pin 7 is sense resistor voltage supply 2 pinMode(7, OUTPUT); } void presentation() { sendSketchInfo("Soil Moisture Sensor Reverse Polarity", "1.0"); present(CHILD_ID, S_MOISTURE); } void loop() { measure(6,7,1); Serial.print ("\t"); Serial.println (average()); long read1 = average(); measure(7,6,0); Serial.print ("\t"); Serial.println (average()); long read2= average(); long sensor1 = (read1 + read2)/2; Serial.print ("resistance bias =" ); Serial.println (read1-read2); Serial.print ("sensor bias compensated value = "); Serial.println (sensor1); Serial.println (); //send back the values send(msg.set((long int)ceil(sensor1))); // delay until next measurement (msec) sleep(SLEEP_TIME); } void measure (int phase_b, int phase_a, int analog_input) { // read sensor, filter, and calculate resistance value // Noise filter: median filter for (i=0; i<NUM_READS; i++) { // Read 1 pair of voltage values digitalWrite(phase_a, HIGH); // set the voltage supply on delayMicroseconds(25); supplyVoltage = analogRead(analog_input); // read the supply voltage delayMicroseconds(25); digitalWrite(phase_a, LOW); // set the voltage supply off delay(1); digitalWrite(phase_b, HIGH); // set the voltage supply on delayMicroseconds(25); sensorVoltage = analogRead(analog_input); // read the sensor voltage delayMicroseconds(25); digitalWrite(phase_b, LOW); // set the voltage supply off // Calculate resistance // the 0.5 add-term is used to round to the nearest integer // Tip: no need to transform 0-1023 voltage value to 0-5 range, due to following fraction long resistance = (knownResistor * (supplyVoltage - sensorVoltage ) / sensorVoltage) ; delay(1); addReading(resistance); Serial.print (resistance); Serial.print ("\t"); } } // Averaging algorithm void addReading(long resistance) { buffer[index] = resistance; index++; if (index >= NUM_READS) { index = 0; } } long average() { long sum = 0; for (int i = 0; i < NUM_READS; i++) { sum += buffer[i]; } return (long)(sum / NUM_READS); } -
Thanks for this great solution @mfalkvidd! It works great when my Arduino Pro Mini is connected to the computer, but not when I try to run it off a battery pack.
I have a Pro Mini 3.3v connected to a 0.8-3.3v step up from a battery pack (2xAA; 3v). And then I have connected the radio and sensor to VCC on the Pro Mini. When the Pro Mini is connected to my iMac, Domoticz receives everything as it should. However, when I disconnect it from the computer and connect the battery source, all LEDs light as they should, indicitating that they have power, but it won't connect to Domoticz over NRF24.
I have used a multimeter to check the voltage and if the radio receives enough power, and it does. All power/ground pins show around 3.3v. Any ideas to debug what's wrong?
-
@mfalkvidd, @Nicklas-Starkel
similar problem here. I have a bare ATMega 328P, running @ 8 MHz internal oszillator. no LED, bod disabled, (if enabled, the ADC is running also during sleep, so this means additional power consumption), nothing else connected that could draw additional power.
I use mfalkvidd's sketch (BTW, thanks a lot for it !), but converted to mysensors 2.0. I see a voltage drop way higher than mfalkvidd, although I don't use a china clone ;-).
So it seems, that the higher power consumption may be due to mysensors V2 ? I cannot imagine a reason for that, because why should relatively low level functions like power save routines be different in 2.0 ?
Perhaps hek can comment ? -
Thanks for this great solution @mfalkvidd! It works great when my Arduino Pro Mini is connected to the computer, but not when I try to run it off a battery pack.
I have a Pro Mini 3.3v connected to a 0.8-3.3v step up from a battery pack (2xAA; 3v). And then I have connected the radio and sensor to VCC on the Pro Mini. When the Pro Mini is connected to my iMac, Domoticz receives everything as it should. However, when I disconnect it from the computer and connect the battery source, all LEDs light as they should, indicitating that they have power, but it won't connect to Domoticz over NRF24.
I have used a multimeter to check the voltage and if the radio receives enough power, and it does. All power/ground pins show around 3.3v. Any ideas to debug what's wrong?
@ronnyandre a multimeter is unfortunately not sensitive enough to display if there is enough power during the short bursts when the radio is active.
Most step-ups don't deliver power that is stable enough. You could try adding more/larger capacitors, but from what I have seen in the forum, people seldom get thing working reliably with a step-up. I have never tried using step-up myself, I use power directly from the batteries.
If you haven't checked already, see the troubleshooting chart at https://forum.mysensors.org/topic/666/debug-faq-and-how-ask-for-help/