Hello everyone, I would need a Sketch with 4 magnetic door sensors, 2 relays and 1 ds18b20.
arduino_89_89
@arduino_89_89
0
Reputation
14
Posts
441
Profile views
0
Followers
2
Following
Best posts made by arduino_89_89
This user hasn't posted anything yet.
Latest posts made by arduino_89_89
-
Multiple Sketch
-
Relay actuator with button and sensor air humidity?
relay with button and without gateway, and sensor air and humidity.
How do I insert the temperature sensor skech, within this:#define MY_DEBUG // Enable debug prints to serial monitor #define MY_RADIO_NRF24 // Enable and select radio type attached #define MY_NODE_ID 8 #define MY_TRANSPORT_WAIT_READY_MS 5000 //set how long to wait for transport ready in milliseconds #include <MySensors.h> #include <Bounce2.h> #define RELAY_PIN 4 // Arduino Digital I/O pin number for relay #define BUTTON_PIN 3 // Arduino Digital I/O pin number for button #define CHILD_ID 1 // Id of the sensor child #define RELAY_ON 0 #define RELAY_OFF 1 Bounce debouncer = Bounce(); int oldValue = 0; bool uplinkAvailable = true; bool state = false; bool requestState; bool firstStart = true; unsigned long uplinkCheckTime ; // holder for uplink checks unsigned long uplinkCheckPeriod = 30*1000; // time between checks for uplink in milliseconds unsigned long returnWait = 1500; // how long to wait for return from controller in milliseconds MyMessage msg(CHILD_ID, V_STATUS); void setup(){ pinMode(BUTTON_PIN, INPUT_PULLUP); // Setup the button pin, Activate internal pull-up debouncer.attach(BUTTON_PIN); // After setting up the button, setup debouncer debouncer.interval(5); pinMode(RELAY_PIN, OUTPUT); // set relay pin in output mode digitalWrite(RELAY_PIN, RELAY_OFF); // Make sure relay is off when starting up } void presentation() { // Send the sketch version information to the gateway and Controller sendSketchInfo("Relay & Button", "1.0"); // Register all sensors to gw (they will be created as child devices) present(CHILD_ID, S_BINARY); } void loop(){ if (firstStart) { // this code is only run once at startup Serial.println("First run started"); if (request( CHILD_ID, V_STATUS)) { // request the current state of the switch on the controller and check that an ack was received Serial.println("uplink available"); wait (returnWait); //wait needed to allow request to return from controller Serial.print("controller state --- "); Serial.println(requestState); if (requestState != state) { // check that controller is corectly showing the current relay state send(msg.set(state), false); // notify controller of current state } } else { Serial.println("uplink not available"); uplinkAvailable = false; // no uplink established uplinkCheckTime = millis(); } firstStart = false; // set firstStart flag false to prevent code from running again } debouncer.update(); int value = debouncer.read(); // Get the update value if (value != oldValue && value == 0) { // check for new button push state = !state; // Toggle the state digitalWrite(RELAY_PIN, state ? RELAY_ON : RELAY_OFF); // switch the relay to the new state if (!send(msg.set(state), true)) { //Attempt to notify controller of changed state Serial.println("uplink not available"); uplinkAvailable = false; // no uplink available uplinkCheckTime = millis(); } } oldValue = value; if (!uplinkAvailable && (millis() - uplinkCheckTime > uplinkCheckPeriod) ) { // test to see if function should be called uplinkCheck(); // call uplink checking function } } /*-------------------start of functions--------------------------*/ void receive(const MyMessage &message) { if (message.type == V_STATUS) { // check to see if incoming message is for a switch switch (message.getCommand()) { // message.getCommand will give us the command type of the incomming message case C_SET: //message is a set command from controller to update relay state state = message.getBool(); // get the new state digitalWrite(RELAY_PIN, state ? RELAY_ON : RELAY_OFF); // switch relay to new state uplinkAvailable = true; // uplink established /*---- Write some debug info----*/ Serial.print("Incoming change for sensor:"); Serial.print(message.sensor); Serial.print(", New status: "); Serial.println(message.getBool()); break; case C_REQ: // message is a returning request from controller requestState = message.getBool(); // update requestState with returning state break; } } } void uplinkCheck() { if (request( CHILD_ID, V_STATUS)) { // request the current state of the switch on the controller and check that the request was succsessful Serial.println("uplink re-established"); wait (returnWait); //wait needed to allow request to return from controller if (requestState != state) { // check that controller is corectly showing the current relay state send(msg.set(state), false); // notify controller of current state no ack uplinkAvailable = true; // uplink established } } uplinkCheckTime = millis(); // reset the checktime Serial.println("uplinkchecktime reset"); }
-
RE: Problem with Domoticz
But should I use watchdog? To reset nodes automatically every day?
-
RE: Problem with Domoticz
I understand, but the only sensors that connect are: The temperature sensor and the gas sensor, which send periodic signals. My system is structured on 3 floors. The first floor has the Gateway, and off the first floor has a Node Repeater. Then the second floor has another Node Repeater and has 2 Relay Nodes. And finally the Third Floor with another repeater and 2 sensors, Gas and Temp / Hum.