[SOLVED] Node receives relais activation even without active controler



  • Hi All,

    This is bugging me for days now and i cant find a source.

    This node measures temp and has a relais to reboot the connected device if it hangs or goes off-line.

    But the relais gets activated about every minute because the node receives a command to activate the relais.
    I can not figure out where that command is coming from.

    I even tried running without a active controler (Home-assistant) but still the relais gets activated.

    I use a MQTT gateway on a Arduino Uno with NRF24 radio and ethernet to the network.

    I use Mosquitto, in a docker on unraid, as the broker.

    below is the sketch i have build, tried several other sketches, same result. And the serial output from my gateway and node.

    I hope there is someone who can help me getting this node working right.

    /*
     * MySensors Custom Door/Window Sensor, with temperature sensor
     * and battery level reporting Version 2.2
     * 
     * D.B******* 7/13/2018
     * 
     * Version 1 - Initial concept code
     * Version 2 - adds Temp/humidity/ and battery monintoring
     * 
     * The Mysensors libraries will handle all the radio protocols 
     * and create the network.
     * 
     * DO NOT USE REPEATER MODE if this is battery powered
     * 
     * Connect one button or door/window reed switch between
     * digital I/O pin 3 (BUTTON_PIN below) and GND and the other
     * one in similar fashion on digital I/O pin 2.
     * This example is designed to fit Arduino Nano/Pro Mini
     */
    
    //Enble serial monitoring
    #define MY_DEBUG
    #define MY_MSG
    
     //Enable radio (Im using NRLF24A)
    #define MY_RADIO_NRF24
    
    // Set manual node ID
    #define MY_NODE_ID 23
    
     // 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_TX_LED_PIN 6  // tramsmit led pin
    
    #include <MyConfig.h>
    #include <MySensors.h>
    #include <OneWire.h>
    #include <DallasTemperature.h>
    
    #define SKETCH_NAME "Anova"
    #define SKETCH_VERSION "2.0"
    
    // Add child IDs
    #define CHILD_ID_TEMP 1
    #define CHILD_ID_RELAY 2
    
    
    //==================================================
    // RELAY - SETUP
    //==================================================
    #define RELAY_PIN 2                   // Digital I/O pin number for the relay
    #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
    #define RELAY_DELAY 3000              // Time relay stays ON
    
    //==================================================
    // TEMPERATURE SENSOR - SETUP
    //==================================================
    #define ONE_WIRE_BUS 5                // Pin where dallase sensor is connected 
    #define MAX_ATTACHED_DS18B20 16       // Maximun number of atachable temperature sensors
    #define NUM_TEMP_SENS 1               // Number of attached temperature sensors
    #define COMPARE_TEMP 1                // Send temperature only if changed? 1 = Yes 0 = No
    // Sensor 1
    float curTemp = 0;
    float lastTemp = 0;
    float OffsetTemp = 0;                 // allows for small corrections to sensor innacuracies
    
    OneWire oneWire(ONE_WIRE_BUS);        // Setup a oneWire instance to communicate with any OneWire devices
    DallasTemperature sensors(&oneWire);  // Pass the oneWire reference to Dallas Temperature.
    
    
    //==================================================
    // GENERAL PROCESSING SETTING
    //==================================================
    bool curState = false;
    bool newState = false;
    bool initialValueSent = false;
    
    unsigned long SLEEP_TIME = 15 * 1000;                      // Sleep time in sec
    
    const int audioOut = 3;        // (Digital 2) for using the peizo as an output device. (Thing that goes beep.)
    
    MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP);
    MyMessage msgRelay(CHILD_ID_RELAY, V_STATUS);
    
    void before()
    {
      // Startup up the OneWire library
      sensors.begin();
    }
    
    
    void setup() 
    {
      // requestTemperatures() will not block current thread
      sensors.setWaitForConversion(false);
      // Set relay pins in output mode, and turn relay OFF 
      pinMode(RELAY_PIN, OUTPUT);
      // Set relay to OFF)
      digitalWrite(RELAY_PIN, RELAY_OFF);
      curState = RELAY_OFF;
      initialValueSent = false;
    }
    
    
    void presentation()
    {
      sendSketchInfo(SKETCH_NAME, SKETCH_VERSION);
      present(CHILD_ID_TEMP, S_TEMP, "Temperature");
      present(CHILD_ID_RELAY, S_BINARY, "Relay");
    }
    
    
    void loop() 
    {
    /*
    *================================================== 
    * This is the MAIN program loop 
    *================================================== 
    */
      debugMsg("Loop - Start");
    
      if (!initialValueSent) {
        debugMsg("Sending initial value");
        send(msgRelay.set(curState?RELAY_ON:RELAY_OFF));
        debugMsg("Requesting initial value from controller");
        request(CHILD_ID_RELAY, V_STATUS);
        //wait(2000, C_SET, V_STATUS);
      }
    
      debugMsg("curState / newState - " + String(curState) + " / " + String(newState));
    
      if (newState != curState) {
        curState = RELAY_ON;
        digitalWrite(RELAY_PIN, curState);
        send(msgRelay.set(curState));
        wait(RELAY_DELAY);
        curState = RELAY_OFF;
        digitalWrite(RELAY_PIN, RELAY_OFF);
        send(msgRelay.set(curState));
        newState=curState;
      }
      
      //==================================================
      // Read temp sensor and send them to controller
      //==================================================
      sensors.requestTemperatures();
      // query conversion time and sleep until conversion completed
      int16_t conversionTime = sensors.millisToWaitForConversion(sensors.getResolution());
      //debugMsg("conversionTime: " + String(conversionTime) + " mSec");
      wait(conversionTime);
      // Fetch and round temperature to one decimal
      curTemp = static_cast<float>(static_cast<int>((sensors.getTempCByIndex(0)) * 10.)) / 10.;  
      // Only send data if temperature sensor has changed and no error
      if (curTemp!= lastTemp) {  
        debugMsg("Sending: Temerature: "+ String(curTemp));
        send(msgTemp.set(curTemp,1));
        lastTemp = curTemp;
      }
    
      //==================================================
      // Sleep until something happens with the sensor
      //==================================================
      debugMsg("Sleep - Start");
      wait(SLEEP_TIME);
    }
    
    
    void receive(const MyMessage &message) {
      debugMsg("Received: type / payload / ack : " + String(message.type) + " / " + String(message.getInt()) + " / " + String(message.isAck()));
      if (message.isAck()) {
         debugMsg("This is an ack from gateway");
      }
    
      if (message.type == V_STATUS) {
        if (!initialValueSent) {
          debugMsg("Receiving initial value from controller");
          initialValueSent = true;
          curState = (bool)message.getInt();
        }
        // Change relay state
        chirp(500, 1000);
        chirp(500, 1500);
        newState = (bool)message.getInt();
        if (newState == RELAY_ON) {
          debugMsg("Changing relay state to: ON");
        }
      }
    }
    
    
    
    
    /* 
    *==================================================
    *
    *  Room for various FUNCTIONS  
    *  
    *==================================================
    */
    
    //=========================
    // Send Debug message - FUNCTION
    //=========================
    void debugMsg(String message)
    {
      #ifdef MY_MSG
        Serial.println(message);
      #endif
    }
    
    //=========================
    // Plays a non-musical tone on the piezo.
    // playTime = milliseconds to play the tone
    // delayTime = time in microseconds between ticks. (smaller=higher pitch tone.)
    //=========================
    void chirp(int playTime, int delayTime)
    {
      long loopTime = (playTime * 1000L) / delayTime;
      pinMode(audioOut, OUTPUT);
      for(int i=0; i < loopTime; i++) {
        digitalWrite(audioOut, HIGH);
        delayMicroseconds(delayTime);
        digitalWrite(audioOut, LOW);
      }
      pinMode(audioOut, INPUT);
    }
    

    This is the serial output of my MQTT Gateway

    11:49:45.192 -> 0 MCO:BGN:INIT GW,CP=RNNGA---,FQ=16,REL=255,VER=2.3.2
    11:49:45.192 -> 4 MCO:BGN:BFR
    11:49:45.192 -> 6 TSM:INIT
    11:49:45.192 -> 7 TSF:WUR:MS=0
    11:49:45.192 -> 13 TSM:INIT:TSP OK
    11:49:45.192 -> 15 TSM:INIT:GW MODE
    11:49:45.192 -> 16 TSM:READY:ID=0,PAR=0,DIS=0
    11:49:45.230 -> 19 MCO:REG:NOT NEEDED
    11:49:49.894 -> 4698 GWT:TPC:IP=192.168.28.111
    11:49:50.921 -> 5701 MCO:BGN:STP
    11:49:50.921 -> 5702 MCO:BGN:INIT OK,TSP=1
    11:49:51.029 -> 5814 GWT:TPC:IP=192.168.28.111
    11:49:52.021 -> 6816 GWT:RMQ:CONNECTING...
    11:49:52.021 -> 6821 GWT:RMQ:OK
    11:49:52.021 -> 6823 GWT:TPS:TOPIC=mysgw-out/0/255/0/0/18,MSG SENT
    11:49:52.021 -> 6829 TSM:READY:NWD REQ
    11:49:52.021 -> 6834 ?TSF:MSG:SEND,0-0-255-255,s=255,c=3,t=20,pt=0,l=0,sg=0,ft=0,st=OK:
    11:49:52.054 -> 6841 TSF:MSG:READ,23-23-0,s=2,c=1,t=2,pt=1,l=1,sg=0:0
    11:49:52.054 -> 6846 GWT:TPS:TOPIC=mysgw-out/23/2/1/0/2,MSG SENT
    11:49:52.054 -> 6852 GWT:IMQ:TOPIC=mysgw-in/23/255/3/0/6, MSG RECEIVED
    11:49:52.054 -> 6859 TSF:MSG:SEND,0-0-23-23,s=255,c=3,t=6,pt=0,l=1,sg=0,ft=0,st=OK:M
    11:49:52.054 -> 6866 GWT:IMQ:TOPIC=mysgw-in/23/2/1/0/2, MSG RECEIVED
    11:49:52.089 -> 6874 TSF:MSG:SEND,0-0-23-23,s=2,c=1,t=2,pt=0,l=1,sg=0,ft=0,st=OK:0
    11:49:52.089 -> 6881 GWT:IMQ:TOPIC=mysgw-in/23/2/1/1/2, MSG RECEIVED
    11:49:52.089 -> 6887 TSF:MSG:SEND,0-0-23-23,s=2,c=1,t=2,pt=0,l=1,sg=0,ft=0,st=OK:1
    11:49:52.089 -> 6895 GWT:IMQ:TOPIC=mysgw-in/31/255/3/0/6, MSG RECEIVED
    11:49:52.122 -> 6935 !TSF:MSG:SEND,0-0-31-31,s=255,c=3,t=6,pt=0,l=1,sg=0,ft=0,st=NACK:M
    11:49:52.158 -> 6943 GWT:IMQ:TOPIC=mysgw-in/31/2/1/1/2, MSG RECEIVED
    11:49:52.192 -> 6983 !TSF:MSG:SEND,0-0-31-31,s=2,c=1,t=2,pt=0,l=1,sg=0,ft=0,st=NACK:1
    11:49:53.123 -> 7914 TSF:MSG:READ,23-23-0,s=2,c=1,t=2,pt=0,l=1,sg=0:1
    11:49:53.123 -> 7919 TSF:MSG:ECHO
    11:49:53.123 -> 7921 GWT:TPS:TOPIC=mysgw-out/23/2/1/1/2,MSG SENT
    11:50:02.263 -> 17032 TSF:MSG:READ,23-23-0,s=2,c=1,t=2,pt=1,l=1,sg=0:1
    11:50:02.263 -> 17037 GWT:TPS:TOPIC=mysgw-out/23/2/1/0/2,MSG SENT
    11:50:05.254 -> 20047 TSF:MSG:READ,23-23-0,s=2,c=1,t=2,pt=1,l=1,sg=0:0
    11:50:05.287 -> 20052 GWT:TPS:TOPIC=mysgw-out/23/2/1/0/2,MSG SENT
    11:50:11.877 -> 26659 TSF:MSG:READ,23-23-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
    11:50:11.915 -> 26665 TSF:MSG:BC
    11:50:11.915 -> 26667 TSF:MSG:FPAR REQ,ID=23
    11:50:11.915 -> 26670 TSF:PNG:SEND,TO=0
    11:50:11.915 -> 26672 TSF:CKU:OK
    11:50:11.915 -> 26674 TSF:MSG:GWL OK
    11:50:11.953 -> 26729 TSF:MSG:SEND,0-0-23-23,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=OK:0
    11:50:13.906 -> 28682 TSF:MSG:READ,23-23-0,s=255,c=3,t=24,pt=1,l=1,sg=0:1
    <<< I DID RESTART NODE 23 HERE >>>
    11:50:13.906 -> 28687 TSF:MSG:PINGED,ID=23,HP=1
    11:50:13.939 -> 28692 TSF:MSG:SEND,0-0-23-23,s=255,c=3,t=25,pt=1,l=1,sg=0,ft=0,st=OK:1
    11:50:13.939 -> 28707 TSF:MSG:READ,23-23-0,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
    11:50:13.939 -> 28715 TSF:MSG:SEND,0-0-23-23,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
    11:50:13.972 -> 28724 TSF:MSG:READ,23-23-0,s=255,c=0,t=17,pt=0,l=5,sg=0:2.3.2
    11:50:13.972 -> 28730 GWT:TPS:TOPIC=mysgw-out/23/255/0/0/17,MSG SENT
    11:50:13.972 -> 28735 TSF:MSG:READ,23-23-0,s=255,c=3,t=6,pt=1,l=1,sg=0:0
    11:50:13.972 -> 28741 GWT:TPS:TOPIC=mysgw-out/23/255/3/0/6,MSG SENT
    11:50:15.969 -> 30748 TSF:MSG:READ,23-23-0,s=255,c=3,t=11,pt=0,l=5,sg=0:Anova
    11:50:16.005 -> 30754 GWT:TPS:TOPIC=mysgw-out/23/255/3/0/11,MSG SENT
    11:50:16.005 -> 30759 TSF:MSG:READ,23-23-0,s=255,c=3,t=12,pt=0,l=3,sg=0:2.0
    11:50:16.005 -> 30766 GWT:TPS:TOPIC=mysgw-out/23/255/3/0/12,MSG SENT
    11:50:16.005 -> 30771 TSF:MSG:READ,23-23-0,s=1,c=0,t=6,pt=0,l=11,sg=0:Temperature
    11:50:16.005 -> 30777 GWT:TPS:TOPIC=mysgw-out/23/1/0/0/6,MSG SENT
    11:50:16.005 -> 30782 TSF:MSG:READ,23-23-0,s=2,c=0,t=3,pt=0,l=5,sg=0:Relay
    11:50:16.043 -> 30788 GWT:TPS:TOPIC=mysgw-out/23/2/0/0/3,MSG SENT
    11:50:16.043 -> 30793 TSF:MSG:READ,23-23-0,s=255,c=3,t=26,pt=1,l=1,sg=0:2
    11:50:16.043 -> 30800 TSF:MSG:SEND,0-0-23-23,s=255,c=3,t=27,pt=1,l=1,sg=0,ft=0,st=OK:1
    11:50:16.043 -> 30816 TSF:MSG:READ,23-23-0,s=2,c=1,t=2,pt=2,l=2,sg=0:0
    11:50:16.043 -> 30821 GWT:TPS:TOPIC=mysgw-out/23/2/1/0/2,MSG SENT
    11:50:16.081 -> 30826 TSF:MSG:READ,23-23-0,s=2,c=2,t=2,pt=0,l=0,sg=0:
    11:50:16.081 -> 30831 GWT:TPS:TOPIC=mysgw-out/23/2/2/0/2,MSG SENT
    11:50:16.188 -> 30936 TSF:MSG:READ,23-23-0,s=1,c=1,t=0,pt=7,l=5,sg=0:-127.0
    11:50:16.188 -> 30941 GWT:TPS:TOPIC=mysgw-out/23/1/1/0/0,MSG SENT
    11:50:31.227 -> 45982 TSF:MSG:READ,23-23-0,s=2,c=1,t=2,pt=2,l=2,sg=0:0
    11:50:31.264 -> 45988 GWT:TPS:TOPIC=mysgw-out/23/2/1/0/2,MSG SENT
    11:50:31.264 -> 45992 TSF:MSG:READ,23-23-0,s=2,c=2,t=2,pt=0,l=0,sg=0:
    11:50:31.264 -> 45998 GWT:TPS:TOPIC=mysgw-out/23/2/2/0/2,MSG SENT
    11:51:10.160 -> 84851 GWT:TPC:IP=192.168.28.111
    11:51:11.161 -> 85855 GWT:RMQ:CONNECTING...
    11:51:11.199 -> 85860 GWT:RMQ:OK
    11:51:11.199 -> 85862 GWT:TPS:TOPIC=mysgw-out/0/255/0/0/18,MSG SENT
    11:51:11.199 -> 85867 TSF:MSG:READ,23-23-0,s=2,c=1,t=2,pt=2,l=2,sg=0:0
    11:51:11.199 -> 85872 GWT:TPS:TOPIC=mysgw-out/23/2/1/0/2,MSG SENT
    11:51:11.199 -> 85877 TSF:MSG:READ,23-23-0,s=2,c=2,t=2,pt=0,l=0,sg=0:
    11:51:11.199 -> 85882 GWT:TPS:TOPIC=mysgw-out/23/2/2/0/2,MSG SENT
    11:51:11.199 -> 85888 TSF:MSG:READ,23-23-0,s=2,c=1,t=2,pt=2,l=2,sg=0:0
    11:51:11.199 -> 85893 GWT:TPS:TOPIC=mysgw-out/23/2/1/0/2,MSG SENT
    11:51:11.235 -> 85900 GWT:IMQ:TOPIC=mysgw-in/23/255/3/0/6, MSG RECEIVED
    11:51:11.235 -> 85906 TSF:MSG:SEND,0-0-23-23,s=255,c=3,t=6,pt=0,l=1,sg=0,ft=0,st=OK:M
    11:51:11.235 -> 85914 GWT:IMQ:TOPIC=mysgw-in/23/2/1/0/2, MSG RECEIVED
    11:51:11.235 -> 85920 TSF:MSG:SEND,0-0-23-23,s=2,c=1,t=2,pt=0,l=1,sg=0,ft=0,st=OK:0
    11:51:11.235 -> 85928 GWT:IMQ:TOPIC=mysgw-in/23/2/1/1/2, MSG RECEIVED
    11:51:11.272 -> 85935 TSF:MSG:SEND,0-0-23-23,s=2,c=1,t=2,pt=0,l=1,sg=0,ft=0,st=OK:1
    11:51:11.272 -> 85942 GWT:IMQ:TOPIC=mysgw-in/31/255/3/0/6, MSG RECEIVED
    11:51:11.307 -> 85983 !TSF:MSG:SEND,0-0-31-31,s=255,c=3,t=6,pt=0,l=1,sg=0,ft=0,st=NACK:M
    11:51:11.307 -> 85991 GWT:IMQ:TOPIC=mysgw-in/31/2/1/1/2, MSG RECEIVED
    11:51:11.342 -> 86032 !TSF:MSG:SEND,0-0-31-31,s=2,c=1,t=2,pt=0,l=1,sg=0,ft=0,st=NACK:1
    11:51:12.294 -> 86963 TSF:MSG:READ,23-23-0,s=2,c=1,t=2,pt=0,l=1,sg=0:1
    11:51:12.294 -> 86968 TSF:MSG:ECHO
    11:51:12.294 -> 86970 GWT:TPS:TOPIC=mysgw-out/23/2/1/1/2,MSG SENT
    11:51:16.807 -> 91473 TSF:MSG:READ,23-23-0,s=2,c=1,t=2,pt=1,l=1,sg=0:1
    11:51:16.807 -> 91479 GWT:TPS:TOPIC=mysgw-out/23/2/1/0/2,MSG SENT
    11:51:19.821 -> 94490 TSF:MSG:READ,23-23-0,s=2,c=1,t=2,pt=1,l=1,sg=0:0
    11:51:19.821 -> 94495 GWT:TPS:TOPIC=mysgw-out/23/2/1/0/2,MSG SENT
    11:52:38.781 -> 163580 GWT:TPC:IP=192.168.28.111
    11:52:38.781 -> 164583 GWT:RMQ:CONNECTING...
    11:52:38.781 -> 164588 GWT:RMQ:OK
    11:52:38.781 -> 164590 GWT:TPS:TOPIC=mysgw-out/0/255/0/0/18,MSG SENT
    11:52:38.781 -> 164598 GWT:IMQ:TOPIC=mysgw-in/23/255/3/0/6, MSG RECEIVED
    11:52:38.781 -> 164605 TSF:MSG:SEND,0-0-23-23,s=255,c=3,t=6,pt=0,l=1,sg=0,ft=0,st=OK:M
    11:52:38.781 -> 164614 GWT:IMQ:TOPIC=mysgw-in/23/2/1/0/2, MSG RECEIVED
    11:52:38.781 -> 164620 TSF:MSG:SEND,0-0-23-23,s=2,c=1,t=2,pt=0,l=1,sg=0,ft=0,st=OK:0
    11:52:38.781 -> 164628 GWT:IMQ:TOPIC=mysgw-in/23/2/1/1/2, MSG RECEIVED
    11:52:38.781 -> 164634 TSF:MSG:SEND,0-0-23-23,s=2,c=1,t=2,pt=0,l=1,sg=0,ft=0,st=OK:1
    11:52:38.781 -> 164642 GWT:IMQ:TOPIC=mysgw-in/31/255/3/0/6, MSG RECEIVED
    11:52:38.781 -> 164683 !TSF:MSG:SEND,0-0-31-31,s=255,c=3,t=6,pt=0,l=1,sg=0,ft=0,st=NACK:M
    11:52:38.781 -> 164691 GWT:IMQ:TOPIC=mysgw-in/31/2/1/1/2, MSG RECEIVED
    11:52:38.781 -> 164731 !TSF:MSG:SEND,0-0-31-31,s=2,c=1,t=2,pt=0,l=1,sg=0,ft=0,st=NACK:1
    11:52:38.781 -> 165661 TSF:MSG:READ,23-23-0,s=2,c=1,t=2,pt=0,l=1,sg=0:1
    11:52:38.781 -> 165666 TSF:MSG:ECHO
    11:52:38.781 -> 165668 GWT:TPS:TOPIC=mysgw-out/23/2/1/1/2,MSG SENT
    11:52:38.781 -> 170158 TSF:MSG:READ,23-23-0,s=2,c=1,t=2,pt=1,l=1,sg=0:1
    11:52:38.781 -> 170163 GWT:TPS:TOPIC=mysgw-out/23/2/1/0/2,MSG SENT
    11:52:38.781 -> 173173 TSF:MSG:READ,23-23-0,s=2,c=1,t=2,pt=1,l=1,sg=0:0
    11:52:38.814 -> 173178 GWT:TPS:TOPIC=mysgw-out/23/2/1/0/2,MSG SENT
    11:53:48.684 -> 242311 GWT:TPC:IP=192.168.28.111
    11:53:48.861 -> 243313 GWT:RMQ:CONNECTING...
    11:53:48.861 -> 243318 GWT:RMQ:OK
    11:53:48.897 -> 243320 GWT:TPS:TOPIC=mysgw-out/0/255/0/0/18,MSG SENT
    11:53:48.897 -> 243329 GWT:IMQ:TOPIC=mysgw-in/23/255/3/0/6, MSG RECEIVED
    11:53:48.897 -> 243338 TSF:MSG:SEND,0-0-23-23,s=255,c=3,t=6,pt=0,l=1,sg=0,ft=0,st=OK:M
    11:53:48.897 -> 243345 GWT:IMQ:TOPIC=mysgw-in/23/2/1/0/2, MSG RECEIVED
    11:53:48.897 -> 243352 TSF:MSG:SEND,0-0-23-23,s=2,c=1,t=2,pt=0,l=1,sg=0,ft=0,st=OK:0
    11:53:48.932 -> 243359 GWT:IMQ:TOPIC=mysgw-in/23/2/1/1/2, MSG RECEIVED
    11:53:48.932 -> 243373 TSF:MSG:SEND,0-0-23-23,s=2,c=1,t=2,pt=0,l=1,sg=0,ft=0,st=OK:1
    11:53:48.932 -> 243381 GWT:IMQ:TOPIC=mysgw-in/31/255/3/0/6, MSG RECEIVED
    11:53:48.968 -> 243422 !TSF:MSG:SEND,0-0-31-31,s=255,c=3,t=6,pt=0,l=1,sg=0,ft=0,st=NACK:M
    11:53:49.003 -> 243430 GWT:IMQ:TOPIC=mysgw-in/31/2/1/1/2, MSG RECEIVED
    11:53:49.040 -> 243470 !TSF:MSG:SEND,0-0-31-31,s=2,c=1,t=2,pt=0,l=1,sg=0,ft=0,st=NACK:1
    11:53:49.966 -> 244392 TSF:MSG:READ,23-23-0,s=2,c=1,t=2,pt=0,l=1,sg=0:1
    11:53:49.966 -> 244398 TSF:MSG:ECHO
    11:53:49.966 -> 244400 GWT:TPS:TOPIC=mysgw-out/23/2/1/1/2,MSG SENT
    11:53:54.413 -> 248843 TSF:MSG:READ,23-23-0,s=2,c=1,t=2,pt=1,l=1,sg=0:1
    11:53:54.413 -> 248848 GWT:TPS:TOPIC=mysgw-out/23/2/1/0/2,MSG SENT
    11:53:57.431 -> 251873 TSF:MSG:READ,23-23-0,s=2,c=1,t=2,pt=1,l=1,sg=0:0
    11:53:57.465 -> 251878 GWT:TPS:TOPIC=mysgw-out/23/2/1/0/2,MSG SENT
    

    This is the serial output of my node

    11:56:52.249 ->  
    11:56:52.249 ->  __  __       ____
    11:56:52.249 -> |  \/  |_   _/ ___|  ___ _ __  ___  ___  _ __ ___
    11:56:52.249 -> | |\/| | | | \___ \ / _ \ `_ \/ __|/ _ \| `__/ __|
    11:56:52.249 -> | |  | | |_| |___| |  __/ | | \__ \  _  | |  \__ \
    11:56:52.249 -> |_|  |_|\__, |____/ \___|_| |_|___/\___/|_|  |___/
    11:56:52.249 ->         |___/                      2.3.2
    11:56:52.249 -> 
    11:56:52.249 -> 16 MCO:BGN:INIT NODE,CP=RNNNA---,FQ=8,REL=255,VER=2.3.2
    11:56:52.285 -> 28 MCO:BGN:BFR
    11:56:52.285 -> 30 TSM:INIT
    11:56:52.285 -> 32 TSF:WUR:MS=0
    11:56:52.285 -> 38 TSM:INIT:TSP OK
    11:56:52.285 -> 40 TSM:INIT:STATID=23
    11:56:52.285 -> 43 TSF:SID:OK,ID=23
    11:56:52.285 -> 45 TSM:FPAR
    11:56:52.285 -> 49 ?TSF:MSG:SEND,23-23-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    11:56:54.288 -> 2058 !TSM:FPAR:NO REPLY
    11:56:54.288 -> 2060 TSM:FPAR
    11:56:54.324 -> 2064 ?TSF:MSG:SEND,23-23-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
    11:56:54.776 -> 2533 TSF:MSG:READ,0-0-23,s=255,c=3,t=8,pt=1,l=1,sg=0:0
    11:56:54.776 -> 2539 TSF:MSG:FPAR OK,ID=0,D=1
    11:56:56.331 -> 4073 TSM:FPAR:OK
    11:56:56.331 -> 4073 TSM:ID
    11:56:56.331 -> 4075 TSM:ID:OK
    11:56:56.331 -> 4077 TSM:UPL
    11:56:56.331 -> 4081 TSF:MSG:SEND,23-23-0-0,s=255,c=3,t=24,pt=1,l=1,sg=0,ft=0,st=OK:1
    11:56:56.331 -> 4089 TSF:MSG:READ,0-0-23,s=255,c=3,t=25,pt=1,l=1,sg=0:1
    11:56:56.331 -> 4096 TSF:MSG:PONG RECV,HP=1
    11:56:56.364 -> 4100 TSM:UPL:OK
    11:56:56.364 -> 4102 TSM:READY:ID=23,PAR=0,DIS=1
    11:56:56.364 -> 4106 TSF:MSG:SEND,23-23-0-0,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100
    11:56:56.364 -> 4114 TSF:MSG:READ,0-0-23,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
    11:56:56.364 -> 4122 TSF:MSG:SEND,23-23-0-0,s=255,c=0,t=17,pt=0,l=5,sg=0,ft=0,st=OK:2.3.2
    11:56:56.399 -> 4132 TSF:MSG:SEND,23-23-0-0,s=255,c=3,t=6,pt=1,l=1,sg=0,ft=0,st=OK:0
    11:56:58.414 -> 6141 TSF:MSG:SEND,23-23-0-0,s=255,c=3,t=11,pt=0,l=5,sg=0,ft=0,st=OK:Anova
    11:56:58.414 -> 6152 TSF:MSG:SEND,23-23-0-0,s=255,c=3,t=12,pt=0,l=3,sg=0,ft=0,st=OK:2.0
    11:56:58.414 -> 6162 TSF:MSG:SEND,23-23-0-0,s=1,c=0,t=6,pt=0,l=11,sg=0,ft=0,st=OK:Temperature
    11:56:58.451 -> 6174 TSF:MSG:SEND,23-23-0-0,s=2,c=0,t=3,pt=0,l=5,sg=0,ft=0,st=OK:Relay
    11:56:58.451 -> 6180 MCO:REG:REQ
    11:56:58.451 -> 6184 TSF:MSG:SEND,23-23-0-0,s=255,c=3,t=26,pt=1,l=1,sg=0,ft=0,st=OK:2
    11:56:58.451 -> 6195 TSF:MSG:READ,0-0-23,s=255,c=3,t=27,pt=1,l=1,sg=0:1
    11:56:58.451 -> 6201 MCO:PIM:NODE REG=1
    11:56:58.451 -> 6203 MCO:BGN:STP
    11:56:58.451 -> 6205 MCO:BGN:INIT OK,TSP=1
    11:56:58.489 -> Loop - Start
    11:56:58.489 -> Sending initial value
    11:56:58.489 -> 6211 TSF:MSG:SEND,23-23-0-0,s=2,c=1,t=2,pt=2,l=2,sg=0,ft=0,st=OK:0
    11:56:58.489 -> Requesting initial value from controller
    11:56:58.489 -> 6221 TSF:MSG:SEND,23-23-0-0,s=2,c=2,t=2,pt=0,l=0,sg=0,ft=0,st=OK:
    11:56:58.489 -> curState / newState - 0 / 0
    11:56:58.589 -> Sending: Temerature: -127.00
    11:56:58.589 -> 6330 TSF:MSG:SEND,23-23-0-0,s=1,c=1,t=0,pt=7,l=5,sg=0,ft=0,st=OK:-127.0
    11:56:58.589 -> Sleep - Start
    11:57:13.672 -> Loop - Start
    11:57:13.672 -> Sending initial value
    11:57:13.672 -> 21340 TSF:MSG:SEND,23-23-0-0,s=2,c=1,t=2,pt=2,l=2,sg=0,ft=0,st=OK:0
    11:57:13.672 -> Requesting initial value from controller
    11:57:13.672 -> 21350 TSF:MSG:SEND,23-23-0-0,s=2,c=2,t=2,pt=0,l=0,sg=0,ft=0,st=OK:
    11:57:13.672 -> curState / newState - 0 / 0
    11:57:13.781 -> Sleep - Start
    11:57:28.841 -> Loop - Start
    11:57:28.841 -> Sending initial value
    11:57:28.841 -> 36456 TSF:MSG:SEND,23-23-0-0,s=2,c=1,t=2,pt=2,l=2,sg=0,ft=0,st=OK:0
    11:57:28.841 -> Requesting initial value from controller
    11:57:28.841 -> 36466 TSF:MSG:SEND,23-23-0-0,s=2,c=2,t=2,pt=0,l=0,sg=0,ft=0,st=OK:
    11:57:28.877 -> curState / newState - 0 / 0
    11:57:28.948 -> Sleep - Start
    11:57:44.011 -> Loop - Start
    11:57:44.011 -> Sending initial value
    11:57:44.011 -> 51574 TSF:MSG:SEND,23-23-0-0,s=2,c=1,t=2,pt=2,l=2,sg=0,ft=0,st=OK:0
    11:57:44.011 -> Requesting initial value from controller
    11:57:44.049 -> 51617 !TSF:MSG:SEND,23-23-0-0,s=2,c=2,t=2,pt=0,l=0,sg=0,ft=0,st=NACK:
    11:57:44.086 -> curState / newState - 0 / 0
    11:57:44.155 -> Sleep - Start
    11:57:48.013 -> 55564 TSF:MSG:READ,0-0-23,s=255,c=3,t=6,pt=0,l=1,sg=0:M
    11:57:48.013 -> 55580 TSF:MSG:READ,0-0-23,s=2,c=1,t=2,pt=0,l=1,sg=0:0
    11:57:48.046 -> Received: type / payload / ack : 2 / 0 / 0
    11:57:48.046 -> Receiving initial value from controller
    11:57:49.049 -> 56608 TSF:MSG:READ,0-0-23,s=2,c=1,t=2,pt=0,l=1,sg=0:1
    11:57:49.049 -> 56614 TSF:MSG:ECHO REQ
    11:57:49.086 -> 56619 TSF:MSG:SEND,23-23-0-0,s=2,c=1,t=2,pt=0,l=1,sg=0,ft=1,st=OK:1
    11:57:49.086 -> Received: type / payload / ack : 2 / 1 / 0
    11:57:50.107 -> Changing relay state to: ON
    11:57:59.204 -> Loop - Start
    11:57:59.204 -> curState / newState - 0 / 1
    11:57:59.204 -> 66727 TSF:MSG:SEND,23-23-0-0,s=2,c=1,t=2,pt=1,l=1,sg=0,ft=0,st=OK:1
    11:58:02.235 -> 69736 TSF:MSG:SEND,23-23-0-0,s=2,c=1,t=2,pt=1,l=1,sg=0,ft=0,st=OK:0
    11:58:02.344 -> Sleep - Start
    11:58:17.408 -> Loop - Start
    11:58:17.408 -> curState / newState - 0 / 0
    11:58:17.511 -> Sleep - Start
    11:58:32.565 -> Loop - Start
    11:58:32.565 -> curState / newState - 0 / 0
    11:58:32.672 -> Sleep - Start
    11:58:47.726 -> Loop - Start
    11:58:47.726 -> curState / newState - 0 / 0
    11:58:47.831 -> Sleep - Start
    11:59:02.870 -> Loop - Start
    11:59:02.870 -> curState / newState - 0 / 0
    11:59:02.975 -> Sleep - Start
    11:59:06.834 -> 134098 TSF:MSG:READ,0-0-23,s=255,c=3,t=6,pt=0,l=1,sg=0:M
    11:59:06.872 -> 134113 TSF:MSG:READ,0-0-23,s=2,c=1,t=2,pt=0,l=1,sg=0:0
    11:59:06.872 -> Received: type / payload / ack : 2 / 0 / 0
    11:59:07.891 -> 135141 TSF:MSG:READ,0-0-23,s=2,c=1,t=2,pt=0,l=1,sg=0:1
    11:59:07.891 -> 135147 TSF:MSG:ECHO REQ
    11:59:07.891 -> 135151 TSF:MSG:SEND,23-23-0-0,s=2,c=1,t=2,pt=0,l=1,sg=0,ft=0,st=OK:1
    11:59:07.926 -> Received: type / payload / ack : 2 / 1 / 0
    11:59:08.946 -> Changing relay state to: ON
    11:59:18.033 -> Loop - Start
    11:59:18.033 -> curState / newState - 0 / 1
    11:59:18.033 -> 145229 TSF:MSG:SEND,23-23-0-0,s=2,c=1,t=2,pt=1,l=1,sg=0,ft=0,st=OK:1
    11:59:21.052 -> 148238 TSF:MSG:SEND,23-23-0-0,s=2,c=1,t=2,pt=1,l=1,sg=0,ft=0,st=OK:0
    11:59:21.160 -> Sleep - Start
    

  • Mod

    @thedutch your mqtt gateway seems to reconnect roughly once a minute to the mqtt broker. Any persistent topics on the broker will cause their values to be sent again on a reconnect by the client, which i expect is what's happening.
    Either solve the cause of the reconnects, or don't publish the relay state persistently, or make your node robust so it only acts on pulses instead of levels for the relay triggers.



  • Solved the re-connection problem by giving the MQTT broker a different and seperate IP-address, it was running on unraid´s main IP-address.

    Now testing for repeating relay activation, keeping fingers crossed.

    @Yveaux thx for your help.


Log in to reply
 

Suggested Topics

  • 2
  • 1
  • 14
  • 9
  • 4
  • 9
  • 7
  • 4

264
Online

9.8k
Users

10.3k
Topics

106.7k
Posts