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. Development
  3. Heartbeat signal

Heartbeat signal

Scheduled Pinned Locked Moved Development
11 Posts 6 Posters 8.1k 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.
  • T Offline
    T Offline
    tbowmo
    Admin
    wrote on last edited by
    #2

    I'm just sending the last state of the port and light, in my garage port opener, once every 60 minutes. In domoticz I can see when a sensor is seen the last time.. And this way I can check that it's alive.

    I admit, I have to look at it manually, no automation in warnings etc.

    /

    S 1 Reply Last reply
    0
    • T Offline
      T Offline
      TD22057
      Hardware Contributor
      wrote on last edited by
      #3

      I think the heartbeat is a reasonable way to do it. I'm designing my system to use an MQTT broker and I'm going to write a small client that listens to all the sensor messages as they come in. If no message is seen from a sensor in some elapsed time, the client will send out a "sensor down" message which can then be acted on.

      1 Reply Last reply
      0
      • B Offline
        B Offline
        BulldogLowell
        Contest Winner
        wrote on last edited by
        #4

        @Sparkman

        How about a Sensor Sensor?

        From the Sensor Sensor send a message to each node that you need to check communication and wait for a bounceback.

        You could use a motion sensor to indicate probem, and show the trouble node in a V_VAR ...

        something to try

        1 Reply Last reply
        0
        • S Offline
          S Offline
          sundberg84
          Hardware Contributor
          wrote on last edited by
          #5

          On my batterysensors i send batterlevel every 60min (4th sleep cycle) as a heartbeat.
          Probably a stupid question, but how do I code it in a node without sleep? It doesnt have a clock :)

          @tbowmo You probably knows, but using lua script you can let domoticz send you a notification (i really recommend notifymyandroid).
          Something like: (untested).

          -- script_time_garageport.lua
          -- Sends a warning if the garagedoor has been unseen more than 60 minutes.
          t1 = os.time()
          s = otherdevices_lastupdate['Garageport']
          -- returns a date time like 2013-07-11 17:23:12
           
          year = string.sub(s, 1, 4)
          month = string.sub(s, 6, 7)
          day = string.sub(s, 9, 10)
          hour = string.sub(s, 12, 13)
          minutes = string.sub(s, 15, 16)
          seconds = string.sub(s, 18, 19)
           
          commandArray = {}
           
          t2 = os.time{year=year, month=month, day=day, hour=hour, min=minutes, sec=seconds}
          difference = (os.difftime (t1, t2))
          if (difference > 3600 and difference < 3900) then
             commandArray['SendNotification']='Garage door alert#The garage door has been stolen??'
          end 
           
          return commandArray
          
          

          Controller: Proxmox VM - Home Assistant
          MySensors GW: Arduino Uno - W5100 Ethernet, Gw Shield Nrf24l01+ 2,4Ghz
          MySensors GW: Arduino Uno - Gw Shield RFM69, 433mhz
          RFLink GW - Arduino Mega + RFLink Shield, 433mhz

          1 Reply Last reply
          0
          • T Offline
            T Offline
            tbowmo
            Admin
            wrote on last edited by tbowmo
            #6

            @sundberg84

            Currently domoticz sends a private tweet to me, if it has any notifications, I chose twitter, as I don't have to pay for any license keys to use that.
            I just haven't come around to enable notifications, if sensors doesn't check in at a regular interval.

            If you want to ping your controller in a node that never sleeps, you could always use millis():

            unsigned long lastHeartbeat = 0;
            #define HEARTBEAT_INTERVAL 3600000
            
            void loop() {
              if (millis() - lastHeartbeat > HEARTBEAT_INTERVAL) {
                  ... PING ....
                  lastHeartbeat = millis();
              }
            }
            

            This will send a ping every 3600 seconds (once a hour). The first heartbeat will be 1 hour after startup.

            1 Reply Last reply
            1
            • T tbowmo

              I'm just sending the last state of the port and light, in my garage port opener, once every 60 minutes. In domoticz I can see when a sensor is seen the last time.. And this way I can check that it's alive.

              I admit, I have to look at it manually, no automation in warnings etc.

              /

              S Offline
              S Offline
              Sparkman
              Hero Member
              wrote on last edited by Sparkman
              #7

              @tbowmo @TD22057 @BulldogLowell @sundberg84

              Thanks for the replies everyone. The HS3 MySensors plugin will only update the "last change time/date" if the value sent by the sensor actually changes, so I need to make sure what I send is different than before which is why I alternate 0's and 1's. I would like a common solution for both mains and battery powered devices, and therefore polling sensors won't work for sleeping battery powered sensors. Using the V_TRIPPED sensor type is a bit of a kludge, but seems to be working ok. Maybe a V_HEARTBEAT sensor type should be added to the protocol. @hek, any thoughts?

              Cheers
              Al

              1 Reply Last reply
              0
              • H Offline
                H Offline
                hek
                Admin
                wrote on last edited by
                #8

                Hmm. if this is something the community would find useful we could add it as an INTERNAL variable type (which reports it on the node-device). And API something like:

                gw.sendHeartbeat(<optional destination node (defaults to gateway/controlle)r>)

                Sends an incremental integer payload.

                S 1 Reply Last reply
                0
                • H hek

                  Hmm. if this is something the community would find useful we could add it as an INTERNAL variable type (which reports it on the node-device). And API something like:

                  gw.sendHeartbeat(<optional destination node (defaults to gateway/controlle)r>)

                  Sends an incremental integer payload.

                  S Offline
                  S Offline
                  Sparkman
                  Hero Member
                  wrote on last edited by
                  #9

                  @hek That sounds great to me!

                  Thanks
                  Al

                  1 Reply Last reply
                  0
                  • H Offline
                    H Offline
                    hek
                    Admin
                    wrote on last edited by
                    #10

                    I skipped the destination argument...

                    https://github.com/mysensors/Arduino/commit/2343d8ae8fb72bdcab467b158eb77c09af6fda5d

                    S 1 Reply Last reply
                    0
                    • H hek

                      I skipped the destination argument...

                      https://github.com/mysensors/Arduino/commit/2343d8ae8fb72bdcab467b158eb77c09af6fda5d

                      S Offline
                      S Offline
                      Sparkman
                      Hero Member
                      wrote on last edited by
                      #11

                      @hek Thanks!

                      1 Reply Last reply
                      0

                      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


                      41

                      Online

                      12.1k

                      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