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. Requesting for help building traffic light led module node

Requesting for help building traffic light led module node

Scheduled Pinned Locked Moved Troubleshooting
5 Posts 3 Posters 46 Views 3 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.
  • A Offline
    A Offline
    airmedic79
    wrote on last edited by
    #1

    Hi!
    I'm trying to build a traffic light led module node on a arduino pro mini 5v. I am currently using a temperature/humidity node without a problem with raspberry pi ethernet gateway.

    Below is the sketch I'm working on. Its function is only to toggle in home assistant. When uploaded, it seems to be communicating with the gateway but doesn't show up in home assistant.

    I'd like to know if there's something wrong with the sketch.
    Thanks in advance!

    --sketch--
    #define MY_DEBUG
    #define MY_RADIO_RF24
    #define MY_NODE_ID 16
    #define MY_RF24_PA_LEVEL RF24_PA_LOW

    #include <MySensors.h>

    #define CHILD_ID_GREEN 1
    #define CHILD_ID_YELLOW 2
    #define CHILD_ID_RED 3

    #define GREEN_PIN 3
    #define YELLOW_PIN 4
    #define RED_PIN 5

    bool greenState = false;
    bool yellowState = false;
    bool redState = false;

    MyMessage msgGreen(CHILD_ID_GREEN, V_LIGHT);
    MyMessage msgYellow(CHILD_ID_YELLOW, V_LIGHT);
    MyMessage msgRed(CHILD_ID_RED, V_LIGHT);

    void setup() {
    Serial.begin(115200);
    pinMode(GREEN_PIN, OUTPUT);
    pinMode(YELLOW_PIN, OUTPUT);
    pinMode(RED_PIN, OUTPUT);
    wait(200);
    }

    void presentation() {
    // Initialize the MySensors communication
    sendSketchInfo("Traffic Light Node", "1.0");
    present(CHILD_ID_GREEN, S_LIGHT);
    present(CHILD_ID_YELLOW, S_LIGHT);
    present(CHILD_ID_RED, S_LIGHT);
    }

    void loop() {

    }

    void receive(const MyMessage &message) {
    // Check which LED to control based on the message received
    if (message.sensor == CHILD_ID_GREEN && message.type == V_LIGHT) {
    greenState = !greenState; // Toggle the state
    digitalWrite(GREEN_PIN, greenState ? HIGH : LOW); // Set the pin accordingly
    send(msgGreen.set(greenState ? 1 : 0)); // Report back the new state
    } else if (message.sensor == CHILD_ID_YELLOW && message.type == V_LIGHT) {
    yellowState = !yellowState;
    digitalWrite(YELLOW_PIN, yellowState ? HIGH : LOW);
    send(msgYellow.set(yellowState ? 1 : 0));
    } else if (message.sensor == CHILD_ID_RED && message.type == V_LIGHT) {
    redState = !redState;
    digitalWrite(RED_PIN, redState ? HIGH : LOW);
    send(msgRed.set(redState ? 1 : 0));
    }
    }

    --serial communication--
    2158 TSF:MSG:FPAR OK,ID=0,D=1
    4065 TSM:FPAR:OK
    4066 TSM:ID
    4067 TSM:ID:OK
    4069 TSM:UPL
    4072 TSF:MSG:SEND,16-16-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
    4078 TSF:MSG:READ,0-0-16,s=255,c=3,t=25,pt=1,l=1,sg=0:1
    4083 TSF:MSG:PONG RECV,HP=1
    4086 TSM:UPL:OK
    4087 TSM:READY:ID=16,PAR=0,DIS=1
    4092 TSF:MSG:SEND,16-16-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
    4100 TSF:MSG:READ,0-0-16,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
    4107 TSF:MSG:SEND,16-16-0-0,s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=OK:2.3.2
    4117 TSF:MSG:SEND,16-16-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=OK:0
    4132 TSF:MSG:READ,0-0-16,s=255,c=3,t=6,pt=0,l=1,sg=0:M
    4143 TSF:MSG:SEND,16-16-0-0,s=255,c=3,t=11,pt=0,l=18,sg=0,ft=0,st=OK:Traffic Light Node
    4152 TSF:MSG:SEND,16-16-0-0,s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=OK:1.0
    4160 TSF:MSG:SEND,16-16-0-0,s=1,c=0,t=3,pt=0,l=0,sg=0,ft=0,st=OK:
    4170 TSF:MSG:SEND,16-16-0-0,s=2,c=0,t=3,pt=0,l=0,sg=0,ft=0,st=OK:
    4178 TSF:MSG:SEND,16-16-0-0,s=3,c=0,t=3,pt=0,l=0,sg=0,ft=0,st=OK:
    4185 MCO:REG:REQ
    4188 TSF:MSG:SEND,16-16-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=OK:2
    4197 TSF:MSG:READ,0-0-16,s=255,c=3,t=27,pt=1,l=1,sg=0:1
    4202 MCO:PIM:NODE REG=1
    4204 MCO:BGN:STP
    4406 MCO:BGN:INIT OK,TSP=1
    519129 TSF:MSG:READ,0-0-255,s=255,c=3,t=20,pt=0,l=0,sg=0:
    519134 TSF:MSG:BC
    520131 TSF:MSG:SEND,16-16-0-0,s=255,c=3,t=21,pt=1,l=1,sg=0,ft=0,st=OK:0

    1 Reply Last reply
    0
    • electrikE Offline
      electrikE Offline
      electrik
      wrote on last edited by
      #2

      You need to send the initial state of the sensor
      https://www.home-assistant.io/integrations/mysensors/

      A 1 Reply Last reply
      0
      • electrikE electrik

        You need to send the initial state of the sensor
        https://www.home-assistant.io/integrations/mysensors/

        A Offline
        A Offline
        airmedic79
        wrote on last edited by
        #3

        @electrik Wow! You gave me a clue! Thanks!!

        1 Reply Last reply
        0
        • Jalina HeJ Offline
          Jalina HeJ Offline
          Jalina He
          Banned
          wrote on last edited by
          #4

          Hi airmedic79,

          I think it should be temperature/humidity node design connection issue lead to not show up in home assistant,
          do you have compressed files?maybe you I could do your favor for this item design,tks.

          BR
          Jalina

          1 Reply Last reply
          0
          • A Offline
            A Offline
            airmedic79
            wrote on last edited by
            #5

            I am sharing my sketch. Based on the sketch below, I am using this led light to show air quality status (good for green, normal for yellow and bad for red). This sketch is just a switch so you should make some automation in HA.

            https://www.amazon.com/Traffic-Display-Module-Arduino-Mini-Traffic/dp/B07SZMRSDN


            #define MY_DEBUG
            #define MY_RADIO_RF24
            #define MY_NODE_ID 16
            #define MY_RF24_PA_LEVEL RF24_PA_LOW

            #include <MySensors.h>

            #define CHILD_ID_GREEN 1
            #define CHILD_ID_YELLOW 2
            #define CHILD_ID_RED 3

            #define GREEN_PIN 3
            #define YELLOW_PIN 4
            #define RED_PIN 5

            bool greenState = false;
            bool yellowState = false;
            bool redState = false;

            MyMessage msgGreen(CHILD_ID_GREEN, V_LIGHT);
            MyMessage msgYellow(CHILD_ID_YELLOW, V_LIGHT);
            MyMessage msgRed(CHILD_ID_RED, V_LIGHT);

            void setup() {
            Serial.begin(115200);
            pinMode(GREEN_PIN, OUTPUT);
            pinMode(YELLOW_PIN, OUTPUT);
            pinMode(RED_PIN, OUTPUT);
            wait(200);
            }

            void presentation() {
            // Initialize the MySensors communication
            sendSketchInfo("Traffic Light Node", "1.0");
            present(CHILD_ID_GREEN, S_LIGHT);
            present(CHILD_ID_YELLOW, S_LIGHT);
            present(CHILD_ID_RED, S_LIGHT);
            }

            void loop() {
            // Send initial values of the LEDs to the controller
            send(msgGreen.set(greenState ? 1 : 0));
            send(msgYellow.set(yellowState ? 1 : 0));
            send(msgRed.set(redState ? 1 : 0));

            // Other tasks in the loop if needed
            // ...

            // Add a delay to control how often the initial values are sent
            delay(5000); // Send initial values every 5 seconds (adjust as needed)
            }

            void receive(const MyMessage &message) {
            // Check which LED to control based on the message received
            if (message.sensor == CHILD_ID_GREEN && message.type == V_LIGHT) {
            greenState = !greenState; // Toggle the state
            digitalWrite(GREEN_PIN, greenState ? HIGH : LOW); // Set the pin accordingly
            send(msgGreen.set(greenState ? 1 : 0)); // Report back the new state
            } else if (message.sensor == CHILD_ID_YELLOW && message.type == V_LIGHT) {
            yellowState = !yellowState;
            digitalWrite(YELLOW_PIN, yellowState ? HIGH : LOW);
            send(msgYellow.set(yellowState ? 1 : 0));
            } else if (message.sensor == CHILD_ID_RED && message.type == V_LIGHT) {
            redState = !redState;
            digitalWrite(RED_PIN, redState ? HIGH : LOW);
            send(msgRed.set(redState ? 1 : 0));
            }
            }

            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