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. Troubleshooting
  3. Combination of gateway and relay code

Combination of gateway and relay code

Scheduled Pinned Locked Moved Troubleshooting
6 Posts 2 Posters 1.2k Views 2 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.
  • S Offline
    S Offline
    scalpel
    wrote on last edited by
    #1

    Hi. I am an amateur programmer. I connected the buzzer to the gate and added the alarm functionality. It works but if the gateway gets some data from other sensor, the alarm stops working.

    /**
    * 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
    * The ArduinoGateway prints data received from sensors on the serial link.
    * The gateway accepts input on seral which will be sent out on radio network.
    *
    * The GW code is designed for Arduino Nano 328p / 16MHz
    *
    * Wire connections (OPTIONAL):
    * - Inclusion button should be connected between digital pin 3 and GND
    * - RX/TX/ERR leds need to be connected between +5V (anode) and digital pin 6/5/4 with resistor 270-330R in a series
    *
    * LEDs (OPTIONAL):
    * - To use the feature, uncomment any of the MY_DEFAULT_xx_LED_PINs
    * - RX (green) - blink fast on radio message recieved. In inclusion mode will blink fast only on presentation recieved
    * - TX (yellow) - blink fast on radio message transmitted. In inclusion mode will blink slowly
    * - ERR (red) - fast blink on error during transmission error or recieve crc error
    *
    */
    
    // Enable debug prints to serial monitor
    #define MY_DEBUG
    
    
    // Enable and select radio type attached
    #define MY_RADIO_NRF24
    //#define MY_RADIO_RFM69
    
    // Set LOW transmit power level as default, if you have an amplified NRF-module and
    // power your radio separately with a good regulator you can turn up PA level.
    #define MY_RF24_PA_LEVEL RF24_PA_LOW
    
    // Enable serial gateway
    #define MY_GATEWAY_SERIAL
    
    // Define a lower baud rate for Arduino's running on 8 MHz (Arduino Pro Mini 3.3V & SenseBender)
    #if F_CPU == 8000000L
    #define MY_BAUD_RATE 38400
    #endif
    
    // Enable inclusion mode
    #define MY_INCLUSION_MODE_FEATURE
    // Enable Inclusion mode button on gateway
    //#define MY_INCLUSION_BUTTON_FEATURE
    
    // Inverses behavior of inclusion button (if using external pullup)
    //#define MY_INCLUSION_BUTTON_EXTERNAL_PULLUP
    
    // Set inclusion mode duration (in seconds)
    #define MY_INCLUSION_MODE_DURATION 60
    // Digital pin used for inclusion mode button
    //#define MY_INCLUSION_MODE_BUTTON_PIN  3
    
    // Set blinking period
    #define MY_DEFAULT_LED_BLINK_PERIOD 300
    
    // Inverses the behavior of leds
    //#define MY_WITH_LEDS_BLINKING_INVERSE
    
    // Flash leds on rx/tx/err
    // Uncomment to override default HW configurations
    //#define MY_DEFAULT_ERR_LED_PIN 4  // Error led pin
    //#define MY_DEFAULT_RX_LED_PIN  6  // Receive led pin
    //#define MY_DEFAULT_TX_LED_PIN  5  // the PCB, on board LED
    
    #include <MySensors.h>
    
    #define RELAY_1  3  // Arduino Digital I/O pin number for first relay (second on pin+1 etc)
    #define NUMBER_OF_RELAYS 1 // Total number of attached relays
    #define RELAY_ON 1  // GPIO value to write to turn on attached relay
    #define RELAY_OFF 0 // GPIO value to write to turn off attached relay
    
    void before()
    {
      
        pinMode(RELAY_1, OUTPUT);
        // Set relay to last known state (using eeprom storage)
        digitalWrite(RELAY_1, LOW);
      
    }
    void setup()
    {
    	// Setup locally attached sensors
     pinMode(A0, OUTPUT);
    }
    
    void presentation()
    {
    	// Send the sketch version information to the gateway and Controller
      sendSketchInfo("Relay", "1.0");
      present(1, S_BINARY);
      
    }
    
    void receive(const MyMessage &message)
    {
      // We only expect one type of message from controller. But we better check anyway.
       if (message.type==V_STATUS) {
      
        while (message.getBool() == 1){
        beep();
        }
       
        
        }
     
       
       
        // Write some debug info
        Serial.print("Incoming change for sensor:");
        Serial.print(message.sensor);
        Serial.print(", New status: ");
        Serial.println(message.getBool());
      }
    
    
    void loop()
    {
    	
    }
    
    
    void beep()
    {
        tone(A0, 4200); //Wygeneruj sygnał o częstotliwości 4000Hz na pinie A5  
        wait(100);  
        noTone(A0);
        wait(100);
        tone(A0, 4200); //Wygeneruj sygnał o częstotliwości 4000Hz na pinie A5  
        wait(100);  
        noTone(A0);
        wait(10000);
    
    }```
    mfalkviddM 1 Reply Last reply
    0
    • S scalpel

      Hi. I am an amateur programmer. I connected the buzzer to the gate and added the alarm functionality. It works but if the gateway gets some data from other sensor, the alarm stops working.

      /**
      * 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
      * The ArduinoGateway prints data received from sensors on the serial link.
      * The gateway accepts input on seral which will be sent out on radio network.
      *
      * The GW code is designed for Arduino Nano 328p / 16MHz
      *
      * Wire connections (OPTIONAL):
      * - Inclusion button should be connected between digital pin 3 and GND
      * - RX/TX/ERR leds need to be connected between +5V (anode) and digital pin 6/5/4 with resistor 270-330R in a series
      *
      * LEDs (OPTIONAL):
      * - To use the feature, uncomment any of the MY_DEFAULT_xx_LED_PINs
      * - RX (green) - blink fast on radio message recieved. In inclusion mode will blink fast only on presentation recieved
      * - TX (yellow) - blink fast on radio message transmitted. In inclusion mode will blink slowly
      * - ERR (red) - fast blink on error during transmission error or recieve crc error
      *
      */
      
      // Enable debug prints to serial monitor
      #define MY_DEBUG
      
      
      // Enable and select radio type attached
      #define MY_RADIO_NRF24
      //#define MY_RADIO_RFM69
      
      // Set LOW transmit power level as default, if you have an amplified NRF-module and
      // power your radio separately with a good regulator you can turn up PA level.
      #define MY_RF24_PA_LEVEL RF24_PA_LOW
      
      // Enable serial gateway
      #define MY_GATEWAY_SERIAL
      
      // Define a lower baud rate for Arduino's running on 8 MHz (Arduino Pro Mini 3.3V & SenseBender)
      #if F_CPU == 8000000L
      #define MY_BAUD_RATE 38400
      #endif
      
      // Enable inclusion mode
      #define MY_INCLUSION_MODE_FEATURE
      // Enable Inclusion mode button on gateway
      //#define MY_INCLUSION_BUTTON_FEATURE
      
      // Inverses behavior of inclusion button (if using external pullup)
      //#define MY_INCLUSION_BUTTON_EXTERNAL_PULLUP
      
      // Set inclusion mode duration (in seconds)
      #define MY_INCLUSION_MODE_DURATION 60
      // Digital pin used for inclusion mode button
      //#define MY_INCLUSION_MODE_BUTTON_PIN  3
      
      // Set blinking period
      #define MY_DEFAULT_LED_BLINK_PERIOD 300
      
      // Inverses the behavior of leds
      //#define MY_WITH_LEDS_BLINKING_INVERSE
      
      // Flash leds on rx/tx/err
      // Uncomment to override default HW configurations
      //#define MY_DEFAULT_ERR_LED_PIN 4  // Error led pin
      //#define MY_DEFAULT_RX_LED_PIN  6  // Receive led pin
      //#define MY_DEFAULT_TX_LED_PIN  5  // the PCB, on board LED
      
      #include <MySensors.h>
      
      #define RELAY_1  3  // Arduino Digital I/O pin number for first relay (second on pin+1 etc)
      #define NUMBER_OF_RELAYS 1 // Total number of attached relays
      #define RELAY_ON 1  // GPIO value to write to turn on attached relay
      #define RELAY_OFF 0 // GPIO value to write to turn off attached relay
      
      void before()
      {
        
          pinMode(RELAY_1, OUTPUT);
          // Set relay to last known state (using eeprom storage)
          digitalWrite(RELAY_1, LOW);
        
      }
      void setup()
      {
      	// Setup locally attached sensors
       pinMode(A0, OUTPUT);
      }
      
      void presentation()
      {
      	// Send the sketch version information to the gateway and Controller
        sendSketchInfo("Relay", "1.0");
        present(1, S_BINARY);
        
      }
      
      void receive(const MyMessage &message)
      {
        // We only expect one type of message from controller. But we better check anyway.
         if (message.type==V_STATUS) {
        
          while (message.getBool() == 1){
          beep();
          }
         
          
          }
       
         
         
          // Write some debug info
          Serial.print("Incoming change for sensor:");
          Serial.print(message.sensor);
          Serial.print(", New status: ");
          Serial.println(message.getBool());
        }
      
      
      void loop()
      {
      	
      }
      
      
      void beep()
      {
          tone(A0, 4200); //Wygeneruj sygnał o częstotliwości 4000Hz na pinie A5  
          wait(100);  
          noTone(A0);
          wait(100);
          tone(A0, 4200); //Wygeneruj sygnał o częstotliwości 4000Hz na pinie A5  
          wait(100);  
          noTone(A0);
          wait(10000);
      
      }```
      mfalkviddM Offline
      mfalkviddM Offline
      mfalkvidd
      Mod
      wrote on last edited by mfalkvidd
      #2

      @scalpel this code

      while (message.getBool() == 1){
      beep();
      }
      

      instructs the gateway to beep forever. There is no code in beep() that will change message, it will always be the same message.

      1 Reply Last reply
      0
      • S Offline
        S Offline
        scalpel
        wrote on last edited by scalpel
        #3

        But if gateway receive some data from sensors, example temperature it stop beeping. Maybe while function should be in loop()?

        look

        2018-04-02 19:54:21.356 User: mietek initiated a switch command (771/Alarm/On) /<<---START BEEPING :+1:
        2018-04-02 19:54:21.465 (ArduinoOdbiornik) Lighting 2 (Alarm)
        2018-04-02 19:54:21.588 Error: OTGW: Error received!
        2018-04-02 19:54:34.675 (OpenTherm) Temp (Control Setpoint)
        2018-04-02 19:54:34.682 (OpenTherm) General/Percentage (Maximum Relative Modulation Level)
        2018-04-02 19:54:34.688 (OpenTherm) Thermostat (Zadana ogrzewania)
        2018-04-02 19:54:34.694 (OpenTherm) General/Percentage (Modulacja palnika)
        2018-04-02 19:54:34.700 (OpenTherm) Temp (Isense)
        2018-04-02 19:54:34.708 (OpenTherm) Temp (Boiler Water Temperature)
        2018-04-02 19:54:34.714 (OpenTherm) Temp (DHW Temperature)
        2018-04-02 19:54:34.720 (OpenTherm) Temp (Outside Temperature)
        2018-04-02 19:54:34.725 (OpenTherm) Temp (Return Water Temperature)
        2018-04-02 19:54:34.731 (OpenTherm) Thermostat (DHW Setpoint)
        2018-04-02 19:54:34.735 (OpenTherm) Thermostat (Max_CH Water Setpoint)
        2018-04-02 19:54:51.739 Error: OTGW: Error received!
        2018-04-02 19:55:20.879 Error: OTGW: Error received!
        2018-04-02 19:55:21.434 (rflink) Temp (Zewnątrz)
        2018-04-02 19:55:32.899 (ArduinoOdbiornik) Temp (Parter) // <<--- STOP BEEPING:-1:

        mfalkviddM 1 Reply Last reply
        0
        • S scalpel

          But if gateway receive some data from sensors, example temperature it stop beeping. Maybe while function should be in loop()?

          look

          2018-04-02 19:54:21.356 User: mietek initiated a switch command (771/Alarm/On) /<<---START BEEPING :+1:
          2018-04-02 19:54:21.465 (ArduinoOdbiornik) Lighting 2 (Alarm)
          2018-04-02 19:54:21.588 Error: OTGW: Error received!
          2018-04-02 19:54:34.675 (OpenTherm) Temp (Control Setpoint)
          2018-04-02 19:54:34.682 (OpenTherm) General/Percentage (Maximum Relative Modulation Level)
          2018-04-02 19:54:34.688 (OpenTherm) Thermostat (Zadana ogrzewania)
          2018-04-02 19:54:34.694 (OpenTherm) General/Percentage (Modulacja palnika)
          2018-04-02 19:54:34.700 (OpenTherm) Temp (Isense)
          2018-04-02 19:54:34.708 (OpenTherm) Temp (Boiler Water Temperature)
          2018-04-02 19:54:34.714 (OpenTherm) Temp (DHW Temperature)
          2018-04-02 19:54:34.720 (OpenTherm) Temp (Outside Temperature)
          2018-04-02 19:54:34.725 (OpenTherm) Temp (Return Water Temperature)
          2018-04-02 19:54:34.731 (OpenTherm) Thermostat (DHW Setpoint)
          2018-04-02 19:54:34.735 (OpenTherm) Thermostat (Max_CH Water Setpoint)
          2018-04-02 19:54:51.739 Error: OTGW: Error received!
          2018-04-02 19:55:20.879 Error: OTGW: Error received!
          2018-04-02 19:55:21.434 (rflink) Temp (Zewnątrz)
          2018-04-02 19:55:32.899 (ArduinoOdbiornik) Temp (Parter) // <<--- STOP BEEPING:-1:

          mfalkviddM Offline
          mfalkviddM Offline
          mfalkvidd
          Mod
          wrote on last edited by
          #4

          @scalpel could you move the debug info prints in receive() to the beginning of receive() instead of the end, and re-run your test and post the result?

          1 Reply Last reply
          0
          • S Offline
            S Offline
            scalpel
            wrote on last edited by
            #5

            I will try tomorrow. Thanks

            1 Reply Last reply
            1
            • S Offline
              S Offline
              scalpel
              wrote on last edited by
              #6

              Need more tests, but looks like it works. Thanks

              1 Reply Last reply
              0
              Reply
              • Reply as topic
              Log in to reply
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes


              23

              Online

              11.7k

              Users

              11.2k

              Topics

              113.1k

              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