Signing changes presentation message?



  • Hi all,

    I upgraded a working HomeAssistant setup from version 1.5.4 without signing to use signing.
    Although I can still see message being exchanged, HomeAssistant stopped from autodiscovering the nodes.
    Watching the protocol exchange for a new powered up node reveal a small difference:

    This is what the serial gateway sees with signing disabled:

    0;0;3;0;14;Gateway startup complete.
    97;255;0;0;17;1.5.4
    97;255;3;0;6;0
    97;255;3;0;11;Sensebender Motion
    97;255;3;0;12;1.3.1
    97;1;0;0;6;onboard
    97;2;0;0;7;onboard
    97;3;0;0;1;PIR
    97;1;1;0;0;24.5
    97;2;1;0;1;37
    97;255;3;0;0;101
    97;3;1;0;16;1
    97;3;1;0;16;0

    And this is with signing:

    0;0;3;0;14;Gateway startup complete.
    97;255;3;0;6;0
    97;255;3;0;11;Sensebender Motion
    97;255;3;0;12;1.3.1
    97;1;0;0;6;onboard
    97;2;0;0;7;onboard
    97;3;0;0;1;PIR
    97;1;1;0;0;23.9
    97;2;1;0;1;38
    97;255;3;0;0;101
    97;3;1;0;16;1
    97;3;1;0;16;0

    The signed version is missing the message where the protocol version used to be. I am quite new to MySensors, so question is if that is an intended behaviour?


  • Plugin Developer

    Hi!

    Have you confirmed that all sent messages were received by the gateway? Signing maximizes the strain on the radio comms. Signing will expose a not perfect radio environment.



  • @martinhjelmare

    Yes, the two are sitting next to each other. It is consistant that the message with the release (1.5.4) is missing.
    May be my init sub is not correct? I am using this:

    void setup() {
      
      pinMode(LED_PIN, OUTPUT);
      digitalWrite(LED_PIN, LOW);
    
      pinMode(PIR_SENSOR_DIGITAL, INPUT);
      // Activate internal pull-ups
      digitalWrite(PIR_SENSOR_DIGITAL, HIGH);
      
      Serial.begin(115200);
      Serial.print(F("Sensebender Motion FW "));
      Serial.print(RELEASE);
      Serial.flush();
    
    ...
    
      // Make sure that ATSHA204 is not floating
      pinMode(ATSHA204_PIN, INPUT);
      digitalWrite(ATSHA204_PIN, HIGH);
      
      digitalWrite(TEST_PIN,LOW);
      digitalWrite(OTA_ENABLE, LOW); // remove pullup, save some power.
      
      digitalWrite(LED_PIN, HIGH); 
    
      gw.begin(NULL, NODE_ADDRESS, false);
    
      humiditySensor.begin();
    
      digitalWrite(LED_PIN, LOW);
    
      Serial.flush();
      Serial.println(F(" - Online!"));
      gw.sendSketchInfo("Sensebender Motion", RELEASE, REQ_ACK);
      
      gw.present(CHILD_ID_TEMP,S_TEMP,"onboard", REQ_ACK);
      gw.present(CHILD_ID_HUM,S_HUM,"onboard", REQ_ACK);
      gw.present(CHILD_ID_PIR, S_MOTION, "PIR", REQ_ACK);
      
      isMetric = gw.getConfig().isMetric;
      Serial.print(F("isMetric: ")); Serial.println(isMetric);
      raHum.clear();
      sendTempHumidityMeasurements(false);
      sendBattLevel(false);
      if (ota_enabled) Serial.println("OTA FW update enabled");
    
    }
    

  • Plugin Developer

    Having the nodes next to eachother doesn't guarantee good radio comms. You have to verify by connecting a serial monitor to the node, looking at that output, and look at the log from the controller/gateway. Then compare these two lists of sent vs received messages.



  • This is output from Serial Gateway with Debug turned on:

    0;0;3;0;9;gateway started, id=0, parent=0, distance=0
    0;0;3;0;14;Gateway startup complete.
    0;0;3;0;9;read: 97-97-0 s=255,c=3,t=15,pt=2,l=2,sg=0:1
    0;0;3;0;9;send: 0-0-97-97 s=255,c=3,t=15,pt=2,l=2,sg=0,st=ok:1
    0;0;3;0;9;read: 97-97-0 s=255,c=3,t=16,pt=0,l=0,sg=0:
    0;0;3;0;9;send: 0-0-97-97 s=255,c=3,t=17,pt=6,l=25,sg=0,st=ok:0171638
    0;0;3;0;9;verify fail
    0;0;3;0;9;read: 97-97-0 s=255,c=3,t=16,pt=0,l=0,sg=0:
    0;0;3;0;9;send: 0-0-97-97 s=255,c=3,t=17,pt=6,l=25,sg=0,st=ok:01C94B5
    0;0;3;0;9;read: 97-97-0 s=255,c=3,t=6,pt=1,l=1,sg=1:0
    97;255;3;0;6;0
    0;0;3;0;9;read: 97-97-0 s=255,c=3,t=16,pt=0,l=0,sg=0:
    0;0;3;0;9;send: 0-0-97-97 s=255,c=3,t=17,pt=6,l=25,sg=0,st=ok:01E5044
    0;0;3;0;9;read: 97-97-0 s=255,c=3,t=11,pt=0,l=18,sg=1:Sensebender Mot
    97;255;3;0;11;Sensebender Motion
    0;0;3;0;9;read: 97-97-0 s=255,c=3,t=16,pt=0,l=0,sg=0:
    0;0;3;0;9;send: 0-0-97-97 s=255,c=3,t=17,pt=6,l=25,sg=0,st=ok:0127A06
    0;0;3;0;9;read: 97-97-0 s=255,c=3,t=12,pt=0,l=5,sg=1:1.3.1
    97;255;3;0;12;1.3.1
    

    And this is with DEBUG and DEBUG_SIGNING turned on:

    0;0;3;0;9;gateway started, id=0, parent=0, distance=0
    0;0;3;0;14;Gateway startup complete.
    0;0;3;0;9;read: 97-97-0 s=255,c=3,t=15,pt=2,l=2,sg=0:1
    0;0;3;0;9;send: 0-0-97-97 s=255,c=3,t=15,pt=2,l=2,sg=0,st=ok:1
    0;0;3;0;9;read: 97-97-0 s=255,c=3,t=16,pt=0,l=0,sg=0:
    0;0;3;0;9;send: 0-0-97-97 s=255,c=3,t=17,pt=6,l=25,sg=0,st=ok:01B45E7
    SIM:
    015F593B6382705C14D1165A91896D854A8336D1
    MSG:
    61002E0011FF312E352E34
    CNC:
    01B45E76EEFF4F7F35A50615EBA02F23ECA22B336B6008C39BAAAAAAAAAAAAAA
    HMAC:
    CA16F9C17D683DE7074FEE542CF8B26F41200DCB4AA70072BF96CB6DAE78C5D1
    SNOK:
    0116F9C17D683DE7074FEE542CF8B26F41200DCB
    0;0;3;0;9;verify fail
    0;0;3;0;9;read: 97-97-0 s=255,c=3,t=16,pt=0,l=0,sg=0:
    0;0;3;0;9;send: 0-0-97-97 s=255,c=3,t=17,pt=6,l=25,sg=0,st=ok:01E7FED
    SIM:
    010D119CDCF58D40871D2BE7F9DF050CF2D10F956E3D5C69
    MSG:
    61000E2306FF00
    CNC:
    01E7FED0F1F7A2BFC3B8CF302DF6077DA5BC74DF6388C54F8EAAAAAAAAAAAAAA
    HMAC:
    670D119CDCF58D40871D2BE7F9DF050CF2D10F956E3D5C6967D5DA168E46CEAC
    SOK
    0;0;3;0;9;read: 97-97-0 s=255,c=3,t=6,pt=1,l=1,sg=1:0
    97;255;3;0;6;0
    0;0;3;0;9;read: 97-97-0 s=255,c=3,t=16,pt=0,l=0,sg=0:
    0;0;3;0;9;send: 0-0-97-97 s=255,c=3,t=17,pt=6,l=25,sg=0,st=ok:01E5A12
    SIM:
    01B22062689F9E
    MSG:
    610096030BFF53656E736562656E646572204D6F74696F6E
    CNC:
    01E5A122848F72F8A4D2D18F979904FDB389DC6980BD8493AAAAAAAAAAAAAAAA
    HMAC:
    28B22062689F9E3ECC79E3E5CAD58827D1DA38C88C4DE87974C1E05CE8C8068D
    SOK
    0;0;3;0;9;read: 97-97-0 s=255,c=3,t=11,pt=0,l=18,sg=1:Sensebender Mot
    97;255;3;0;11;Sensebender Motion
    0;0;3;0;9;read: 97-97-0 s=255,c=3,t=16,pt=0,l=0,sg=0:
    0;0;3;0;9;send: 0-0-97-97 s=255,c=3,t=17,pt=6,l=25,sg=0,st=ok:011B6BD
    SIM:
    017ABA174BDC2555F1A4BB1E2CFE844937C86442
    MSG:
    61002E030CFF312E332E31
    CNC:
    011B6BD4E168AD907C4F8596A93D78FFF19A39E39144BB3DE6AAAAAAAAAAAAAA
    HMAC:
    E67ABA174BDC2555F1A4BB1E2CFE844937C864424509AF34FA335C677A953BE7
    SOK
    0;0;3;0;9;read: 97-97-0 s=255,c=3,t=12,pt=0,l=5,sg=1:1.3.1
    

    The verify fail message is consistent always there which I hardly believe can be from transmission errors?


 

349
Online

7.9k
Users

8.7k
Topics

93.6k
Posts