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. Announcements
  3. 2.0 Discussion: Units, sensor types and protocol

2.0 Discussion: Units, sensor types and protocol

Scheduled Pinned Locked Moved Announcements
170 Posts 23 Posters 83.8k Views 7 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.
  • hekH Offline
    hekH Offline
    hek
    Admin
    wrote on last edited by
    #116

    First post updated.

    1 Reply Last reply
    0
    • tbowmoT Offline
      tbowmoT Offline
      tbowmo
      Admin
      wrote on last edited by
      #117

      what about a "RS232" sensor?

      The TV in my living room has a serial port to control it (Can do everything I can with the remote) and also request status from the TV (eg. powerstate, channel being watched etc). Could be cool to include that into some kind of domotica solution

      / Thomas

      1 Reply Last reply
      0
      • hekH Offline
        hekH Offline
        hek
        Admin
        wrote on last edited by
        #118

        This would probably qualify for a special command-type as it's not a "normal" sensor.

        Today I've squeezed in scene controller and ir-commands among the "sensors" but they should probably also have their own commands. Thanks for the input!

        1 Reply Last reply
        0
        • AnticimexA Offline
          AnticimexA Offline
          Anticimex
          Contest Winner
          wrote on last edited by
          #119

          Perhaps rs232 and ir can be fused together as one type? Both are by definition serial protocols. Each with a protocol and symbol rate specific to the appliance at hand.

          Do you feel secure today? No? Start requiring some signatures and feel better tomorrow ;)

          1 Reply Last reply
          0
          • hekH Offline
            hekH Offline
            hek
            Admin
            wrote on last edited by
            #120

            I know too little about rs332 and IR to make a suitable command structure at the moment.

            1 Reply Last reply
            0
            • AnticimexA Offline
              AnticimexA Offline
              Anticimex
              Contest Winner
              wrote on last edited by
              #121

              Think "uart" :)

              Do you feel secure today? No? Start requiring some signatures and feel better tomorrow ;)

              1 Reply Last reply
              0
              • tbowmoT Offline
                tbowmoT Offline
                tbowmo
                Admin
                wrote on last edited by
                #122

                Think that, for UART it should be enough to send characters (or strings) to the sensor, and send back replies to the master (If anything comes in at the serial port)

                I asume that if one needs to use serial to communicate with some remote device, one will setup baudrate etc. for that particular device in the arduino sketch. So no need to use initialisation commands for the serial stuff.

                For IR it's a bit more complicated, because there is no single protocol definition like serial. for IR it could be RC5, RC6, something else, it can be different carrier frequences etc. for each brand. And it can be send to multiple devices, using the same IR "blaster"

                / Thomas

                AnticimexA 1 Reply Last reply
                0
                • tbowmoT tbowmo

                  Think that, for UART it should be enough to send characters (or strings) to the sensor, and send back replies to the master (If anything comes in at the serial port)

                  I asume that if one needs to use serial to communicate with some remote device, one will setup baudrate etc. for that particular device in the arduino sketch. So no need to use initialisation commands for the serial stuff.

                  For IR it's a bit more complicated, because there is no single protocol definition like serial. for IR it could be RC5, RC6, something else, it can be different carrier frequences etc. for each brand. And it can be send to multiple devices, using the same IR "blaster"

                  / Thomas

                  AnticimexA Offline
                  AnticimexA Offline
                  Anticimex
                  Contest Winner
                  wrote on last edited by
                  #123

                  @Thomas-Bowman-Mørch well, yes. But I am more thinking a "protocol". No matter what serial interface the sensor has externally, any serial interface implement some form of protocol for managing handshaking, flow control, etc. And considering the limitation in the data packets in RF24, we cannot expect to be able to implement a "stream".
                  By having a protocol, the sensor node can ensure it collects enough data to be able to satisfy it's external device, i.e. caching data packets for making a larger continuous serial transmission. Or reading a larger continuous transmission and caching it from the device, before starting to transmitting it to the controller. If transmission starts too early, data sent from the device, could be lost (depending on HW/SW solution) as serial protocols do not have to implement flow control (and rarely does).
                  Both IR and UART share the same caveats so in that respect, I think it makes good sense to figure out a command type that can satisfy both types as the needs are similar. And then it potentially can also be applied to other serial protocols (CAN for instance).

                  Do you feel secure today? No? Start requiring some signatures and feel better tomorrow ;)

                  1 Reply Last reply
                  0
                  • L Offline
                    L Offline
                    lunarok
                    wrote on last edited by
                    #124

                    Hi,

                    Not very usefull post for you here, but I want to say I'm very pleased to see this discussion and the news I can read here or what appears in dev on the github.

                    About the presentation of sub-type accepted. After getting an almost complete controller for Jeedom, we have difficulties to "predict" things to automate and make it very simple for user to use the plugin. Like for exemple, create commands. For relays and dimmer it was easy, but after when we look for servo or some extra type it's impossible to know for now what we can create.
                    So reading, the sensor will tell it in presentation it's just perfect.

                    Same for the presentation during node of lib used, that's just better than during the sensors, make sense.

                    I read also on the protocol page, that there is a way for a node to request data from gateway/controller. Can this point be clarified, maybe it needs also the sensor/node to say what it can request ? That's also for automation of autolink. For us (Jeedom plugin) and I think for other, if we know the sensor is able to request some data, we can automaticly create the information item and the user will have only to map it to the equipment it wants to point. I don't know if this is still included/planned as I'm aware many of the "smart" part must be on the controller side, but with beautiful things like Scene Controller and LCD display, I can imagine there is a need ?

                    I read also the OTA process will change a lot. So, is it better waiting 2.0 to include it on our side ? I mean, for the controller part, will this change a lot of things ?

                    And last point, there is actually a internal message type Reboot. This one is indicated only working for OTA bootloader. Is that true ?
                    If so, is it possible in 2.0 to include a way to request a complete presentation of an already started sensor. (that's why I ask for the Reboot message, simpler to request a reboot so the node will present itself at the same type)
                    Sometimes it's easier when migrating for exemple or reinstall, and we know the ID of sensor to ask it for presentating itself than going there to unplug it.

                    That's my thoughs after getting a little more in deep of protocol for the controler/plugin :)

                    Cédric

                    hekH T 2 Replies Last reply
                    0
                    • A Offline
                      A Offline
                      aliasdoc
                      wrote on last edited by
                      #125

                      Hi, I think we could integrate an uuid system in protocol, like this one https://code.google.com/p/tinkerit/wiki/TrueRandom .

                      1 Reply Last reply
                      0
                      • L lunarok

                        Hi,

                        Not very usefull post for you here, but I want to say I'm very pleased to see this discussion and the news I can read here or what appears in dev on the github.

                        About the presentation of sub-type accepted. After getting an almost complete controller for Jeedom, we have difficulties to "predict" things to automate and make it very simple for user to use the plugin. Like for exemple, create commands. For relays and dimmer it was easy, but after when we look for servo or some extra type it's impossible to know for now what we can create.
                        So reading, the sensor will tell it in presentation it's just perfect.

                        Same for the presentation during node of lib used, that's just better than during the sensors, make sense.

                        I read also on the protocol page, that there is a way for a node to request data from gateway/controller. Can this point be clarified, maybe it needs also the sensor/node to say what it can request ? That's also for automation of autolink. For us (Jeedom plugin) and I think for other, if we know the sensor is able to request some data, we can automaticly create the information item and the user will have only to map it to the equipment it wants to point. I don't know if this is still included/planned as I'm aware many of the "smart" part must be on the controller side, but with beautiful things like Scene Controller and LCD display, I can imagine there is a need ?

                        I read also the OTA process will change a lot. So, is it better waiting 2.0 to include it on our side ? I mean, for the controller part, will this change a lot of things ?

                        And last point, there is actually a internal message type Reboot. This one is indicated only working for OTA bootloader. Is that true ?
                        If so, is it possible in 2.0 to include a way to request a complete presentation of an already started sensor. (that's why I ask for the Reboot message, simpler to request a reboot so the node will present itself at the same type)
                        Sometimes it's easier when migrating for exemple or reinstall, and we know the ID of sensor to ask it for presentating itself than going there to unplug it.

                        That's my thoughs after getting a little more in deep of protocol for the controler/plugin :)

                        Cédric

                        hekH Offline
                        hekH Offline
                        hek
                        Admin
                        wrote on last edited by
                        #126

                        @lunarok said:

                        If so, is it possible in 2.0 to include a way to request a complete presentation of an already started sensor. (that's why I ask for the Reboot message, simpler to request a reboot so the node will present itself at the same type)
                        Sometimes it's easier when migrating for exemple or reinstall, and we know the ID of sensor to ask it for presentating itself than going there to unplug it.

                        True, reboot would send presentation again. But another option is to save the presentations in the api. Still a bit unclear which option I will choose.

                        @aliasdoc
                        What do you mean the random number should be used for?

                        1 Reply Last reply
                        0
                        • nneeooN Offline
                          nneeooN Offline
                          nneeoo
                          wrote on last edited by
                          #127

                          Hi. I would like my nodes measuring various values (temperature, humidity, ...) to send those values at specific times. I don't want to include the RTC on the node, so would like the node to request a sleep period from the controller. I can see there is no such possibility with the version 1.4 of the protocol. What do you think about including such thing?

                          1 Reply Last reply
                          0
                          • hekH Offline
                            hekH Offline
                            hek
                            Admin
                            wrote on last edited by
                            #128

                            You can use VAR1-5 for this in 1.4.

                            2.0 will have both VAR (used mostly for pushing custom data) and CONFIG (for custom node configuration).

                            nneeooN 1 Reply Last reply
                            0
                            • BulldogLowellB Offline
                              BulldogLowellB Offline
                              BulldogLowell
                              Contest Winner
                              wrote on last edited by BulldogLowell
                              #129

                              Right now you can use the Time.h library and you don't need an RTC.

                              Just sync the time with MySensors call...

                              gw.requestTime(receiveTime);
                              

                              with the function:

                              void receiveTime(unsigned long controllerTime) 
                              {
                                Serial.print("Time value received: ");
                                Serial.println(controllerTime);
                                RTC.set(controllerTime);
                              }
                              
                              nneeooN 1 Reply Last reply
                              0
                              • hekH hek

                                You can use VAR1-5 for this in 1.4.

                                2.0 will have both VAR (used mostly for pushing custom data) and CONFIG (for custom node configuration).

                                nneeooN Offline
                                nneeooN Offline
                                nneeoo
                                wrote on last edited by
                                #130

                                @hek said:

                                You can use VAR1-5 for this in 1.4.

                                2.0 will have both VAR (used mostly for pushing custom data) and CONFIG (for custom node configuration).

                                Yeah, good point. I somehow missed these general purpose variables. It might be good to add a dedicated type for it if you'll find it useful. If not I can live with the VAR for sure ;). Thanks.

                                1 Reply Last reply
                                0
                                • BulldogLowellB BulldogLowell

                                  Right now you can use the Time.h library and you don't need an RTC.

                                  Just sync the time with MySensors call...

                                  gw.requestTime(receiveTime);
                                  

                                  with the function:

                                  void receiveTime(unsigned long controllerTime) 
                                  {
                                    Serial.print("Time value received: ");
                                    Serial.println(controllerTime);
                                    RTC.set(controllerTime);
                                  }
                                  
                                  nneeooN Offline
                                  nneeooN Offline
                                  nneeoo
                                  wrote on last edited by
                                  #131

                                  @BulldogLowell said:

                                  Right now you can use the Time.h library and you don't need an RTC.

                                  Just sync the time with MySensors call...

                                  gw.requestTime(receiveTime);
                                  

                                  with the function:

                                  void receiveTime(unsigned long controllerTime) 
                                  {
                                    Serial.print("Time value received: ");
                                    Serial.println(controllerTime);
                                    RTC.set(controllerTime);
                                  }
                                  

                                  Thanks for pointing out this library. However I don't want to track the time on the node, but would like just request the time for which the node should sleep from the controller. I think it makes more sense to have the logic in controller.

                                  BulldogLowellB 1 Reply Last reply
                                  0
                                  • nneeooN nneeoo

                                    @BulldogLowell said:

                                    Right now you can use the Time.h library and you don't need an RTC.

                                    Just sync the time with MySensors call...

                                    gw.requestTime(receiveTime);
                                    

                                    with the function:

                                    void receiveTime(unsigned long controllerTime) 
                                    {
                                      Serial.print("Time value received: ");
                                      Serial.println(controllerTime);
                                      RTC.set(controllerTime);
                                    }
                                    

                                    Thanks for pointing out this library. However I don't want to track the time on the node, but would like just request the time for which the node should sleep from the controller. I think it makes more sense to have the logic in controller.

                                    BulldogLowellB Offline
                                    BulldogLowellB Offline
                                    BulldogLowell
                                    Contest Winner
                                    wrote on last edited by
                                    #132

                                    @nneeoo

                                    Oh, you are requesting the duration of the sleep... not the moment at which you wish it to sleep.

                                    I thought you were wanting it to transmit data at certain times...

                                    nneeooN 1 Reply Last reply
                                    0
                                    • BulldogLowellB BulldogLowell

                                      @nneeoo

                                      Oh, you are requesting the duration of the sleep... not the moment at which you wish it to sleep.

                                      I thought you were wanting it to transmit data at certain times...

                                      nneeooN Offline
                                      nneeooN Offline
                                      nneeoo
                                      wrote on last edited by
                                      #133

                                      @BulldogLowell said:

                                      @nneeoo

                                      Oh, you are requesting the duration of the sleep... not the moment at which you wish it to sleep.

                                      I thought you were wanting it to transmit data at certain times...

                                      Well, yes. I want the node to transmit at certain time. Since the controller should know when that time is, it has to be able to calculate for how long should the node sleep, when the node asks the controller. I hope you get my point.

                                      BulldogLowellB 1 Reply Last reply
                                      0
                                      • nneeooN nneeoo

                                        @BulldogLowell said:

                                        @nneeoo

                                        Oh, you are requesting the duration of the sleep... not the moment at which you wish it to sleep.

                                        I thought you were wanting it to transmit data at certain times...

                                        Well, yes. I want the node to transmit at certain time. Since the controller should know when that time is, it has to be able to calculate for how long should the node sleep, when the node asks the controller. I hope you get my point.

                                        BulldogLowellB Offline
                                        BulldogLowellB Offline
                                        BulldogLowell
                                        Contest Winner
                                        wrote on last edited by BulldogLowell
                                        #134

                                        @nneeoo

                                        yes, so you can use Henrik's advice and store a variable which is the time interval in seconds, minutes or even milliseconds.

                                        pass that variable into a function that uses that time as the interval to transmit your data from the sensor.

                                        something like this... pseudo code

                                        int intervalFromController; //in minutes
                                        
                                        void setup()
                                        {
                                        
                                        }
                                        
                                        void loop()
                                        {
                                          gw.begin(getVariables, RADIO_ID, false);
                                          //your other stuff
                                          updateSensorData(intervalFromController);
                                        }
                                        
                                        void getVariables(const MyMessage &message) //
                                        {
                                          if (message.sensor == CHILD_ID)
                                          {
                                            if (message.type == V_VAR1)
                                            {
                                              // get your V_VAR1
                                            }
                                          }
                                        }
                                        updateSensorData(int interval)
                                        {
                                          static unsigned long lastTransmitTime;
                                          if (millis() - lastTransmitTime >= interval *60000UL)
                                          {
                                            //collect and transmit sensor data
                                           //request sensor interval
                                          lastTransmitTime += interval * 60000UL;
                                          }  
                                        }
                                        
                                        1 Reply Last reply
                                        0
                                        • L lunarok

                                          Hi,

                                          Not very usefull post for you here, but I want to say I'm very pleased to see this discussion and the news I can read here or what appears in dev on the github.

                                          About the presentation of sub-type accepted. After getting an almost complete controller for Jeedom, we have difficulties to "predict" things to automate and make it very simple for user to use the plugin. Like for exemple, create commands. For relays and dimmer it was easy, but after when we look for servo or some extra type it's impossible to know for now what we can create.
                                          So reading, the sensor will tell it in presentation it's just perfect.

                                          Same for the presentation during node of lib used, that's just better than during the sensors, make sense.

                                          I read also on the protocol page, that there is a way for a node to request data from gateway/controller. Can this point be clarified, maybe it needs also the sensor/node to say what it can request ? That's also for automation of autolink. For us (Jeedom plugin) and I think for other, if we know the sensor is able to request some data, we can automaticly create the information item and the user will have only to map it to the equipment it wants to point. I don't know if this is still included/planned as I'm aware many of the "smart" part must be on the controller side, but with beautiful things like Scene Controller and LCD display, I can imagine there is a need ?

                                          I read also the OTA process will change a lot. So, is it better waiting 2.0 to include it on our side ? I mean, for the controller part, will this change a lot of things ?

                                          And last point, there is actually a internal message type Reboot. This one is indicated only working for OTA bootloader. Is that true ?
                                          If so, is it possible in 2.0 to include a way to request a complete presentation of an already started sensor. (that's why I ask for the Reboot message, simpler to request a reboot so the node will present itself at the same type)
                                          Sometimes it's easier when migrating for exemple or reinstall, and we know the ID of sensor to ask it for presentating itself than going there to unplug it.

                                          That's my thoughs after getting a little more in deep of protocol for the controler/plugin :)

                                          Cédric

                                          T Offline
                                          T Offline
                                          ToSa
                                          Code Contributor
                                          wrote on last edited by
                                          #135

                                          @lunarok said:

                                          And last point, there is actually a internal message type Reboot. This one is indicated only working for OTA bootloader. Is that true ?

                                          Reset and OTA bootloader are independent - but you need to set the fuse bits of the MCU to enable the watchdog for the software reset to work. This is done automatically when flashing the OTA bootloader but you can do that as well in a separate step keeping the existing bootloader (e.g. optiboot).

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


                                          14

                                          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