how add watchdog to my sensors?
-
hi
how add watchdog to my sensors?
for example this code:// Enable debug prints // #define MY_DEBUG // Enable and select radio type attached #define MY_RADIO_NRF24 //#define MY_RADIO_RFM69 #include <SPI.h> #include <MySensors.h> unsigned long SLEEP_TIME = 120000; // Sleep time between reports (in milliseconds) #define DIGITAL_INPUT_SENSOR 3 // The digital input you attached your motion sensor. (Only 2 and 3 generates interrupt!) #define CHILD_ID 1 // Id of the sensor child // Initialize motion message MyMessage msg(CHILD_ID, V_TRIPPED); void setup() { pinMode(DIGITAL_INPUT_SENSOR, INPUT); // sets the motion sensor digital pin as input } void presentation() { // Send the sketch version information to the gateway and Controller sendSketchInfo("Motion Sensor", "1.0"); // Register all sensors to gw (they will be created as child devices) present(CHILD_ID, S_MOTION); } void loop() { // Read digital motion value boolean tripped = digitalRead(DIGITAL_INPUT_SENSOR) == HIGH; Serial.println(tripped); send(msg.set(tripped?"1":"0")); // Send tripped value to gw // Sleep until interrupt comes in on motion sensor. Send update every two minute. sleep(digitalPinToInterrupt(DIGITAL_INPUT_SENSOR), CHANGE, SLEEP_TIME); }
-
@Reza What would be the purpose of the watchdog? To keep the node alive or to make sure the node can make a connection to the gateway?
(btw Please enclose code in code marks to keep it readable. (I did it for you in your posting above)
-
@AWI
hi ok thank you.
yes watchdog to keep the node alive and to make sure the node can make a connection to the gateway
-
if (!isTransportReady()) wait(MY_RECONNECT);
your node just needs to be awake to reconnect to the gateway.
I've set MY_RECONNECT to 5000 (5sec).
So far this works for my sleeping battery node.isTransportReady could also be isTransportOK. depends on the version you are using.
-
@Hermann-Kaiser
hi thank you .
for this sketch , where put your code?#define MY_DEBUG #define MY_RADIO_NRF24 #define MY_REPEATER_FEATURE #include <SPI.h> #include <MySensors.h> #define CHILD_ID_LIGHT 0 #define LIGHT_SENSOR_ANALOG_PIN 0 unsigned long SLEEP_TIME = 30000; MyMessage msg(CHILD_ID_LIGHT, V_LIGHT_LEVEL); int lastLightLevel; void presentation() { sendSketchInfo("Light Sensor", "1.0"); present(CHILD_ID_LIGHT, S_LIGHT_LEVEL); } void loop() { int lightLevel = (1023-analogRead(LIGHT_SENSOR_ANALOG_PIN))/10.23; Serial.println(lightLevel); if (lightLevel != lastLightLevel) { send(msg.set(lightLevel)); lastLightLevel = lightLevel; } wait(SLEEP_TIME); }
also this is for radio , but for arduino and sensor , how add watchdog ?
-
-
@Hermann-Kaiser said:
isTransportOK
isTransportOK is true , but wait(MY_RECONNECT); have error !
-
thank you
-
@Reza this is a #define MY_RECONNECT 5000
just put a time in ms into the wait function.
-
@Hermann-Kaiser
ok .this is true .
so where i add this ? after sleep(SLEEP_TIME); ???
also this is for radio ? is this right ? so for sensor and arduino !! there are not any function in mysensors?