Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. My Project
  3. Multi sensor node - Rc433MHz, 2xRelay, DHT11

Multi sensor node - Rc433MHz, 2xRelay, DHT11

Scheduled Pinned Locked Moved My Project
1 Posts 1 Posters 1.3k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • marekdM Offline
    marekdM Offline
    marekd
    wrote on last edited by
    #1

    Hi!

    This is my last fast project.
    With this I can control 3x Rc433 MHz wall plugs, 2 relays and to measure room temperature and humidity with a single node.
    This is very simple to make for almost everyone, with some small, like me, soldering skills!
    This is how it looks like:
    0_1489863953729_2017-03-18 11.52.33.bmp
    0_1489864033560_22.bmp
    The box was drilled to use motion sensor as well - but i change my mind ;)
    0_1489864142333_33.bmp

    Below you can find sketch:

    /**
     * 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.
     *
     *******************************
     *
     * REVISION HISTORY
     * Version 1.0 - Henrik Ekblad
     * Version 2.0 - Marek Dajnowicz (Rc433, DHT11 upgrade)
     *
     * DESCRIPTION
     * Example sketch showing how to control physical relays.
     * How to control Rc433 MHz wall plugs and usage of DHT11
     
     */
    
    // Enable debug prints to serial monitor
    #define MY_DEBUG
    
    //#define MY_NODE_ID 16
    // Enable and select radio type attached
    #define MY_RADIO_NRF24
    
    
    #define CHILD_ID_HUM 1 // DHT11
    #define CHILD_ID_TEMP 2 // DHT11
    #define HUMIDITY_SENSOR_DIGITAL_PIN 3 // where DHT is coneccted
    #define RELAY_1 4
    #define RELAY_2 5
    #define CHILD_ID_L1 6 // for Rc433 PLUG 1
    #define CHILD_ID_L2 7 // for Rc433 PLUG 2
    #define CHILD_ID_L3 8 // for Rc433 PLUG 3
    
    #define RELAY_ON 0  // GPIO value to write to turn on attached relay
    #define RELAY_OFF 1 // GPIO value to write to turn off attached relay
    #define NUMBER_OF_RELAYS 2 // Total number of attached relays
    
    
    #include <SPI.h>
    #include <MySensors.h>
    #include <DHT.h>
    #include <NewRemoteTransmitter.h>
    
    DHT dht;
    float Temp;
    float Hum;
    boolean metric = true;
    
    MyMessage msgHum(CHILD_ID_HUM, V_HUM);
    MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
    MyMessage msgL1(CHILD_ID_L1, V_STATUS);
    MyMessage msgL2(CHILD_ID_L2, V_STATUS);
    MyMessage msgL3(CHILD_ID_L3, V_STATUS);
    MyMessage msgR1(RELAY_1, V_STATUS);
    MyMessage msgR2(RELAY_2, V_STATUS);
    
    // Create a transmitter on address xxxxxxxx, using digital pin 6 to transmit, 
    // with a period duration of 260ms (default), repeating the transmitted
    // code 2^3=8 times.
    NewRemoteTransmitter transmitter(60548078, 6, 260, 3); // address got by ShowReceivedCode.ino from Arduino IDE  
    
    boolean receivedConfig = false;
    const unsigned long tUpdate = 60000; // update interval 60sec
    unsigned long t0;
    
    void setup() {
    
      dht.setup(HUMIDITY_SENSOR_DIGITAL_PIN);
      t0 = millis();
      ServerUpdate();
    }
    
    void ServerUpdate() {
      dht.readSensor(true);
      Hum = dht.getHumidity(); 
      delay(20);
      Temp = dht.getTemperature(); 
      delay(20);
      send(msgTemp.set(Temp, 1));
      delay(20);
      send(msgHum.set(Hum, 1)); 
      delay(20);
      t0 = millis();
    }
    
    void presentation() {
      // Present locally attached sensors
      sendSketchInfo("Multi Node", "2.0.0");
      present(CHILD_ID_HUM, S_HUM, "HUM");
      present(CHILD_ID_TEMP, S_TEMP, "TEMP");
      present(CHILD_ID_L1, S_LIGHT, "PLUG_1");
      present(CHILD_ID_L2, S_LIGHT, "PLUG_2");
      present(CHILD_ID_L3, S_LIGHT, "PLUG_3");
      present(RELAY_1, S_BINARY, "Relay 1");
      present(RELAY_2, S_BINARY, "Relay 2");
    
    }
    
    void before()
    {
      for (int sensor=1, pin=RELAY_1; sensor<=NUMBER_OF_RELAYS; sensor++, pin++) {
        // Then set relay pins in output mode
        pinMode(pin, OUTPUT);
        digitalWrite(pin, RELAY_OFF);
      }
    
    }
    
    void loop()
      {
      if ((millis() - t0) > tUpdate) ServerUpdate();
      }
    
    
    void receive(const MyMessage &message) {
    
      if (message.type == V_STATUS) {
        int incomingLightState =  message.getBool();
        int incomingOutlet = message.sensor;
    
        Serial.print("Outlet #: ");
        Serial.println(message.sensor);
        Serial.print("Command: ");
        Serial.println(message.getBool());
    
    // Rc433 Plugs
        if ((incomingOutlet == 6) && (incomingLightState == 1))
        {
          transmitter.sendUnit(15, true);
        }
        if ((incomingOutlet == 6) && (incomingLightState == 0))
        {
          transmitter.sendUnit(15, false);
        }
    
        if ((incomingOutlet == 7) && (incomingLightState == 1))
        {
          transmitter.sendUnit(14, true);
        }
        if ((incomingOutlet == 7) && (incomingLightState == 0 ))
        {
          transmitter.sendUnit(14, false);
        }
    
        if ((incomingOutlet == 8) && (incomingLightState == 1))
        {
          transmitter.sendUnit(13, true);
        }
        if ((incomingOutlet == 8) && (incomingLightState == 0))
        {
          transmitter.sendUnit(13, false);
        }
    // RELAYS
    if (incomingOutlet == 4) {
          if (incomingLightState == 1) {
            // Turn on  Relay 1
            digitalWrite(incomingOutlet, RELAY_ON);}
            
          if (incomingLightState == 0)  {
            // Turn off Relay 1
            Serial.println("Turn off Relay 1");
            digitalWrite(incomingOutlet, RELAY_OFF);}}
            
        if (incomingOutlet == 5) {
          if (incomingLightState == 1) {
            // Turn on  Relay 2
            digitalWrite(incomingOutlet, RELAY_ON);}
            
          if (incomingLightState == 0)  {
            // Turn off Relay 2
            Serial.println("Turn off Relay 2");
            digitalWrite(incomingOutlet, RELAY_OFF);}}
           
       
    
      }
    }
    
    
    
    1 Reply Last reply
    4

    Hello! It looks like you're interested in this conversation, but you don't have an account yet.

    Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

    With your input, this post could be even better 💗

    Register Login
    Reply
    • Reply as topic
    Log in to reply
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes


    21

    Online

    12.0k

    Users

    11.2k

    Topics

    113.4k

    Posts


    Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
    • Login

    • Don't have an account? Register

    • Login or register to search.
    • First post
      Last post
    0
    • MySensors
    • OpenHardware.io
    • Categories
    • Recent
    • Tags
    • Popular