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. Controllers
  3. Domoticz
  4. Domoticz data timeout

Domoticz data timeout

Scheduled Pinned Locked Moved Domoticz
24 Posts 5 Posters 6.5k Views 5 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.
  • gbuicoG Offline
    gbuicoG Offline
    gbuico
    wrote on last edited by
    #14

    @kimot , I have to confess that I'm still a bit lost when I have to understand which language I'm using in each environment, but this is because I keep jumping from something to something else. Your explanation was very clear and allowed me to solve the "timing problem" if a few minutes.
    At the same time... you gave me enough reason to test ESPeasy... and to say it all I have already installed another NodeMCU on the breadboard and starting right now to play :)
    Thanks again

    K 1 Reply Last reply
    1
    • gbuicoG gbuico

      @kimot , I have to confess that I'm still a bit lost when I have to understand which language I'm using in each environment, but this is because I keep jumping from something to something else. Your explanation was very clear and allowed me to solve the "timing problem" if a few minutes.
      At the same time... you gave me enough reason to test ESPeasy... and to say it all I have already installed another NodeMCU on the breadboard and starting right now to play :)
      Thanks again

      K Offline
      K Offline
      kimot
      wrote on last edited by
      #15

      @gbuico
      Ok.
      Only do not forget, that ESPeasy webpage is mainly for setting, so it is not refreshed automatically like Domoticz. You must manually refresh it when check, if sensor value changed, for example.
      video

      gbuicoG 1 Reply Last reply
      1
      • K kimot

        @gbuico
        Ok.
        Only do not forget, that ESPeasy webpage is mainly for setting, so it is not refreshed automatically like Domoticz. You must manually refresh it when check, if sensor value changed, for example.
        video

        gbuicoG Offline
        gbuicoG Offline
        gbuico
        wrote on last edited by
        #16

        My tests with ESPeasy stopped before beginning because I realized that I need a USB to TTL converter that I don't have a t moment... Delayed...

        This gave me time to implement the change in NodeMCU sketch which addresses and solves the original problem of this topic.
        I'm attaching here the second part of the modified sketch omitting the WiFi part.
        In short, I defined a fake "switch" sensor in NodeMCU and I'm sending its modified status to Domoticz every 45 seconds (data timeout in Domoticz is 1 minute).
        Important to underline that the new "fake sensor" can remain in the list of "not used" devices in Domoticz.
        Here is the code:

        // Start of the sensor specific code
        
        #include <SPI.h>
        #include <MySensors.h>
        #include <pins_arduino.h>
        #include <Bounce2.h>
        #define CHILD_ID0 0
        #define CHILD_ID1 1
        #define CHILD_ID2 2
        Bounce debouncer1 = Bounce();
        Bounce debouncer2 = Bounce(); 
        int oldValue1=-1;
        int oldValue2=-1;
        int tempo=millis();
        int ultimo=0;
        MyMessage msg1(CHILD_ID0, V_TRIPPED);
        MyMessage msg2(CHILD_ID1, V_TRIPPED);
        MyMessage msg3(CHILD_ID2, V_TRIPPED);
        void setup()
        {
          // Setup magnetic contact on D0 with pull-up
          pinMode(D0,INPUT_PULLUP);
          // After setting up reed switch, setup debouncer
          debouncer1.attach(D0);
          debouncer1.interval(5);
          // Setup magnetic contact on D1 with pull-up
          pinMode(D1,INPUT_PULLUP);
          // After setting up reed switch, setup debouncer
          debouncer2.attach(D1);
          debouncer2.interval(5);
        }
        
        void presentation()
        {
        	// Present locally attached sensors here
        	present(CHILD_ID0, S_DOOR);
          present(CHILD_ID1, S_DOOR);
          present(CHILD_ID2, S_DOOR);
        }
        
        
        //  Check if digital input has changed and send in new value
        void loop() 
        {
          debouncer1.update();
          debouncer2.update();
          // Get the update value
          int value1 = debouncer1.read();
          int value2 = debouncer2.read();
          if (millis() > tempo + 45000)
          {
             Serial.print (millis());
             Serial.print (ultimo);
             tempo = millis();
             send(msg3.set(ultimo));
             ultimo = ultimo + 1;
             if (ultimo > 1)
             {
                ultimo = 0; 
             }
          }
          
          if (value1 != oldValue1)
        	{
             // Send in the new value
             send(msg1.set(value1==HIGH ? 1 : 0));
             oldValue1 = value1;
        	}
          if (value2 != oldValue2)
          {
             // Send in the new value
             send(msg2.set(value2==HIGH ? 1 : 0));
             oldValue2 = value2;
          }
        }```
        K 1 Reply Last reply
        1
        • gbuicoG Offline
          gbuicoG Offline
          gbuico
          wrote on last edited by
          #17

          Domoticz log changed from this:

          2018-01-05 14:19:04.819 MySensors: Gateway Ready...
          2018-01-05 14:19:05.820 MySensors: Gateway Version: 2.1.1
          2018-01-05 14:19:05.820 MySensors: Gateway Version: 2.1.1
          2018-01-05 14:20:00.270 dzVents: Debug: Dumping domoticz data to /home/pi/domoticz/scripts/dzVents//domoticzData.lua
          2018-01-05 14:20:00.293 dzVents: Debug: Event trigger type: time
          2018-01-05 14:20:30.855 Error: MySensors1 hardware (7) nothing received for more than 1 Minute!....
          2018-01-05 14:20:31.856 Error: Restarting: MySensors1
          2018-01-05 14:20:32.829 MySensors: TCP/IP Worker stopped...
          2018-01-05 14:20:33.831 MySensors: trying to connect to: 192.168.1.7:5003
          2018-01-05 14:20:34.831 MySensors: connected to: 192.168.1.7:5003
          2018-01-05 14:20:34.831 MySensors: Gateway Ready...
          2018-01-05 14:20:35.832 MySensors: Gateway Version: 2.1.1
          2018-01-05 14:20:35.832 MySensors: Gateway Version: 2.1.1
          2018-01-05 14:21:00.379 dzVents: Debug: Dumping domoticz data to /home/pi/domoticz/scripts/dzVents//domoticzData.lua
          2018-01-05 14:21:00.402 dzVents: Debug: Event trigger type: time
          2018-01-05 14:22:00.486 dzVents: Debug: Dumping domoticz data to /home/pi/domoticz/scripts/dzVents//domoticzData.lua
          2018-01-05 14:22:00.510 dzVents: Debug: Event trigger type: time
          2018-01-05 14:22:00.846 Error: MySensors1 hardware (7) nothing received for more than 1 Minute!....
          2018-01-05 14:22:01.847 Error: Restarting: MySensors1
          2018-01-05 14:22:02.841 MySensors: TCP/IP Worker stopped...
          2018-01-05 14:22:03.842 MySensors: trying to connect to: 192.168.1.7:5003
          2018-01-05 14:22:04.843 MySensors: connected to: 192.168.1.7:5003

          To this:

          2018-01-05 14:55:00.413 dzVents: Debug: Dumping domoticz data to /home/pi/domoticz/scripts/dzVents//domoticzData.lua
          2018-01-05 14:55:00.436 dzVents: Debug: Event trigger type: time
          2018-01-05 14:55:35.108 (MySensors1) Light/Switch (Security Sensor)
          2018-01-05 14:56:00.520 dzVents: Debug: Dumping domoticz data to /home/pi/domoticz/scripts/dzVents//domoticzData.lua
          2018-01-05 14:56:00.543 dzVents: Debug: Event trigger type: time
          2018-01-05 14:56:20.113 (MySensors1) Light/Switch (Security Sensor)
          2018-01-05 14:57:00.127 dzVents: Debug: Dumping domoticz data to /home/pi/domoticz/scripts/dzVents//domoticzData.lua
          2018-01-05 14:57:00.151 dzVents: Debug: Event trigger type: time
          2018-01-05 14:57:05.120 (MySensors1) Light/Switch (Security Sensor)
          2018-01-05 14:57:50.124 (MySensors1) Light/Switch (Security Sensor)
          2018-01-05 14:58:00.235 dzVents: Debug: Dumping domoticz data to /home/pi/domoticz/scripts/dzVents//domoticzData.lua
          2018-01-05 14:58:00.259 dzVents: Debug: Event trigger type: time
          2018-01-05 14:58:35.129 (MySensors1) Light/Switch (Security Sensor)
          2018-01-05 14:59:00.344 dzVents: Debug: Dumping domoticz data to /home/pi/domoticz/scripts/dzVents//domoticzData.lua
          2018-01-05 14:59:00.367 dzVents: Debug: Event trigger type: time
          2018-01-05 14:59:20.134 (MySensors1) Light/Switch (Security Sensor)

          1 Reply Last reply
          0
          • gbuicoG gbuico

            My tests with ESPeasy stopped before beginning because I realized that I need a USB to TTL converter that I don't have a t moment... Delayed...

            This gave me time to implement the change in NodeMCU sketch which addresses and solves the original problem of this topic.
            I'm attaching here the second part of the modified sketch omitting the WiFi part.
            In short, I defined a fake "switch" sensor in NodeMCU and I'm sending its modified status to Domoticz every 45 seconds (data timeout in Domoticz is 1 minute).
            Important to underline that the new "fake sensor" can remain in the list of "not used" devices in Domoticz.
            Here is the code:

            // Start of the sensor specific code
            
            #include <SPI.h>
            #include <MySensors.h>
            #include <pins_arduino.h>
            #include <Bounce2.h>
            #define CHILD_ID0 0
            #define CHILD_ID1 1
            #define CHILD_ID2 2
            Bounce debouncer1 = Bounce();
            Bounce debouncer2 = Bounce(); 
            int oldValue1=-1;
            int oldValue2=-1;
            int tempo=millis();
            int ultimo=0;
            MyMessage msg1(CHILD_ID0, V_TRIPPED);
            MyMessage msg2(CHILD_ID1, V_TRIPPED);
            MyMessage msg3(CHILD_ID2, V_TRIPPED);
            void setup()
            {
              // Setup magnetic contact on D0 with pull-up
              pinMode(D0,INPUT_PULLUP);
              // After setting up reed switch, setup debouncer
              debouncer1.attach(D0);
              debouncer1.interval(5);
              // Setup magnetic contact on D1 with pull-up
              pinMode(D1,INPUT_PULLUP);
              // After setting up reed switch, setup debouncer
              debouncer2.attach(D1);
              debouncer2.interval(5);
            }
            
            void presentation()
            {
            	// Present locally attached sensors here
            	present(CHILD_ID0, S_DOOR);
              present(CHILD_ID1, S_DOOR);
              present(CHILD_ID2, S_DOOR);
            }
            
            
            //  Check if digital input has changed and send in new value
            void loop() 
            {
              debouncer1.update();
              debouncer2.update();
              // Get the update value
              int value1 = debouncer1.read();
              int value2 = debouncer2.read();
              if (millis() > tempo + 45000)
              {
                 Serial.print (millis());
                 Serial.print (ultimo);
                 tempo = millis();
                 send(msg3.set(ultimo));
                 ultimo = ultimo + 1;
                 if (ultimo > 1)
                 {
                    ultimo = 0; 
                 }
              }
              
              if (value1 != oldValue1)
            	{
                 // Send in the new value
                 send(msg1.set(value1==HIGH ? 1 : 0));
                 oldValue1 = value1;
            	}
              if (value2 != oldValue2)
              {
                 // Send in the new value
                 send(msg2.set(value2==HIGH ? 1 : 0));
                 oldValue2 = value2;
              }
            }```
            K Offline
            K Offline
            kimot
            wrote on last edited by
            #18

            @gbuico
            "and to say it all I have already installed another NodeMCU on the breadboard and starting right now to play"

            "My tests with ESPeasy stopped before beginning because I realized that I need a USB to TTL converter that I don't have a t moment... Delayed..."

            NodeMCU is with USB to TTL converter onboard.
            Or how you programme it now?

            1 Reply Last reply
            0
            • P Offline
              P Offline
              pjr
              wrote on last edited by pjr
              #19

              I think with domoticz its might be enough to call sendHeartbeat() from your gateway every 30 seconds.
              It should update the m_LastHeartbeatReceive of the HW and thats what mainworker uses when it defines if the HW should be "rebooted".

              Here is a example(NOT TESTED):

              #define HEARTBEAT_SEND_FREQUENCY 30000
              unsigned long lastHeartBeatSend;
              ....
              void setup()
              {
                lastHeartBeatSend  = 0;
              }
              ...
              void loop()
              {
                unsigned long now = millis();
                if(now - lastHeartBeatSend > HEARTBEAT_SEND_FREQUENCY)
                {
                  sendHeartbeat();
                  lastHeartBeatSend = now;
                }
              }
              

              See:
              https://github.com/domoticz/domoticz/blob/8bb0420c3ba4a10bbacd6f2e2f9b40b06ff0c7ac/main/mainworker.cpp#L12864
              https://github.com/domoticz/domoticz/blob/8bb0420c3ba4a10bbacd6f2e2f9b40b06ff0c7ac/hardware/MySensorsBase.cpp#L487
              https://www.mysensors.org/download/sensor_api_20

              gbuicoG 1 Reply Last reply
              1
              • gbuicoG Offline
                gbuicoG Offline
                gbuico
                wrote on last edited by
                #20

                @kimot , right now I'm using the Arduino IDE application which allows me to upload to NodeMCU just using the USB cable.
                Reading the ESPeasy documentation I understand that this type of connection is not an option and you must have a USB to TTL interface.
                I'd be very happy to hear that I don't need it... otherwise I'm going to get one on monday...

                K 1 Reply Last reply
                0
                • P pjr

                  I think with domoticz its might be enough to call sendHeartbeat() from your gateway every 30 seconds.
                  It should update the m_LastHeartbeatReceive of the HW and thats what mainworker uses when it defines if the HW should be "rebooted".

                  Here is a example(NOT TESTED):

                  #define HEARTBEAT_SEND_FREQUENCY 30000
                  unsigned long lastHeartBeatSend;
                  ....
                  void setup()
                  {
                    lastHeartBeatSend  = 0;
                  }
                  ...
                  void loop()
                  {
                    unsigned long now = millis();
                    if(now - lastHeartBeatSend > HEARTBEAT_SEND_FREQUENCY)
                    {
                      sendHeartbeat();
                      lastHeartBeatSend = now;
                    }
                  }
                  

                  See:
                  https://github.com/domoticz/domoticz/blob/8bb0420c3ba4a10bbacd6f2e2f9b40b06ff0c7ac/main/mainworker.cpp#L12864
                  https://github.com/domoticz/domoticz/blob/8bb0420c3ba4a10bbacd6f2e2f9b40b06ff0c7ac/hardware/MySensorsBase.cpp#L487
                  https://www.mysensors.org/download/sensor_api_20

                  gbuicoG Offline
                  gbuicoG Offline
                  gbuico
                  wrote on last edited by
                  #21

                  @pjr , what you are suggesting is exactly what I wanted at the beginning..... but... my understanding from the first answer I got and for this https://www.domoticz.com/forum/viewtopic.php?f=42&t=9775&sid=1fea4af7b12f84f656ca4aa825eb6115
                  is that the sendHeartbeat() function is basically accepted but disregarded in Domoticz, meaning, would not create problems but not fixing the issues.
                  Of course this is my understanding and would be glad to have additional opinions/tests

                  1 Reply Last reply
                  0
                  • P Offline
                    P Offline
                    pjr
                    wrote on last edited by pjr
                    #22

                    @gbuico That thread is pretty old.

                    The current(and most likely working) functionality is implemented here:
                    https://github.com/domoticz/domoticz/commit/2d4e690c82b166ff8597a7deb44be17f3ad2560f#diff-a9f78798ba1bded6b56b3909b2a42848

                    1 Reply Last reply
                    0
                    • gbuicoG Offline
                      gbuicoG Offline
                      gbuico
                      wrote on last edited by
                      #23

                      @pjr, thanks for your update. I went to check the solution proposed in the link you attached... and let me confess... got the concept, but it's complexity is currently not something at my reach.
                      Meaning.. as my solution is very small and working, for the time been I'll stick to it and spend my time for further function implementation.
                      My only worry... your example was just a few lines... understandable... how did they end up with 1700 lines of code or this?
                      Whatever.. I'l go back to it when I have some more time as I prefer an official implementation to a patch like mine...

                      1 Reply Last reply
                      0
                      • gbuicoG gbuico

                        @kimot , right now I'm using the Arduino IDE application which allows me to upload to NodeMCU just using the USB cable.
                        Reading the ESPeasy documentation I understand that this type of connection is not an option and you must have a USB to TTL interface.
                        I'd be very happy to hear that I don't need it... otherwise I'm going to get one on monday...

                        K Offline
                        K Offline
                        kimot
                        wrote on last edited by kimot
                        #24

                        @gbuico
                        USB to TTL serial is on board on NodeMCU and Wemos.

                        Download
                        ESPEasy mega dev.13

                        Upload to your NodeMCU using "FlashESP8266.exe" from .zip
                        Upload to NodeMCU

                        Use "....._normal_4096.bin" file

                        Power off - on !!! your NodeMCU ( reconnect USB cable )

                        Make basic setup:
                        With smart phone or notebook connect to your NodeMCU, which works like wifi acces point now ( name like "ESP_Easy_0" )
                        If password required - "configesp"
                        Type in browser address 192.168.4.1
                        wifi setup
                        Set your home wifi access info in config page.
                        You will see actual IP your NodeMCU in your wifi network.
                        Connect to this IP and make basic setup.
                        ( you can set Fixed IP, IP of your Domoticz, etc )
                        ESPEasy setup

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


                        25

                        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