New ethernet gateway errors out on Home Assistant



  • Hardware: Arduino Nano + HR91105A Ethernet shield

    I am taking a stab at setting up a new ethernet gateway via the following sketch (build tutorial). I pick up an IP and can ping but HA displays errors (below the sketch) and does not complete setup (as my wireless only gateway does). Ideas where to look?

    * The MySensors Arduino library handles the wireless radio link and protocol
    * between your home built sensors/actuators and HA controller of choice.
    * The sensors forms a self healing radio network with optional repeaters. Each
    * repeater and gateway builds a routing tables in EEPROM which keeps track of the
    * network topology allowing messages to be routed to nodes.
    *
    * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
    * Copyright (C) 2013-2019 Sensnology AB
    * Full contributor list: https://github.com/mysensors/MySensors/graphs/contributors
    *
    * Documentation: http://www.mysensors.org
    * Support Forum: http://forum.mysensors.org
    *
    * This program is free software; you can redistribute it and/or
    * modify it under the terms of the GNU General Public License
    * version 2 as published by the Free Software Foundation.
    *
    *******************************
    *
    * REVISION HISTORY
    * Version 1.0 - Henrik Ekblad
    * Contribution by a-lurker and Anticimex
    * Contribution by Norbert Truchsess <norbert.truchsess@t-online.de>
    * Contribution by Tomas Hozza <thozza@gmail.com>
    *
    *
    * DESCRIPTION
    * The EthernetGateway sends data received from sensors to the ethernet link.
    * The gateway also accepts input on ethernet interface, which is then sent out to the radio network.
    *
    * The GW code is designed for Arduino 328p / 16MHz.  ATmega168 does not have enough memory to run this program.
    *
    * LED purposes:
    * - To use the feature, uncomment MY_DEFAULT_xxx_LED_PIN in the sketch below
    * - RX (green) - blink fast on radio message received. In inclusion mode will blink fast only on presentation received
    * - TX (yellow) - blink fast on radio message transmitted. In inclusion mode will blink slowly
    * - ERR (red) - fast blink on error during transmission error or receive crc error
    *
    * See http://www.mysensors.org/build/ethernet_gateway for wiring instructions.
    *
    */
    
    // Enable debug prints to serial monitor
    #define MY_DEBUG
    
    // Enable and select radio type attached
    #define MY_RADIO_RF24
    //#define MY_RADIO_NRF5_ESB
    //#define MY_RADIO_RFM69
    //#define MY_RADIO_RFM95
    
    // Enable gateway ethernet module type
    #define MY_GATEWAY_W5100
    
    // W5100 Ethernet module SPI enable (optional if using a shield/module that manages SPI_EN signal)
    //#define MY_W5100_SPI_EN 4
    
    // Enable Soft SPI for NRF radio (note different radio wiring is required)
    // The W5100 ethernet module seems to have a hard time co-operate with
    // radio on the same spi bus.
    #if !defined(MY_W5100_SPI_EN) && !defined(ARDUINO_ARCH_SAMD)
    #define MY_SOFTSPI
    #define MY_SOFT_SPI_SCK_PIN 14
    #define MY_SOFT_SPI_MISO_PIN 16
    #define MY_SOFT_SPI_MOSI_PIN 15
    #endif
    
    // When W5100 is connected we have to move CE/CSN pins for NRF radio
    #ifndef MY_RF24_CE_PIN
    #define MY_RF24_CE_PIN 5
    #endif
    #ifndef MY_RF24_CS_PIN
    #define MY_RF24_CS_PIN 6
    #endif
    
    // Enable UDP communication
    //#define MY_USE_UDP  // If using UDP you need to set MY_CONTROLLER_IP_ADDRESS or MY_CONTROLLER_URL_ADDRESS below
    
    // Enable MY_IP_ADDRESS here if you want a static ip address (no DHCP)
    //#define MY_IP_ADDRESS 192,168,178,66
    
    // If using static ip you can define Gateway and Subnet address as well
    //#define MY_IP_GATEWAY_ADDRESS 192,168,178,1
    //#define MY_IP_SUBNET_ADDRESS 255,255,255,0
    
    // Renewal period if using DHCP
    //#define MY_IP_RENEWAL_INTERVAL 60000
    
    // The port to keep open on node server mode / or port to contact in client mode
    #define MY_PORT 5003
    
    // Controller ip address. Enables client mode (default is "server" mode).
    // Also enable this if MY_USE_UDP is used and you want sensor data sent somewhere.
    //#define MY_CONTROLLER_IP_ADDRESS 192, 168, 178, 254
    //#define MY_CONTROLLER_URL_ADDRESS "my.controller.org"
    
    // The MAC address can be anything you want but should be unique on your network.
    // Newer boards have a MAC address printed on the underside of the PCB, which you can (optionally) use.
    // Note that most of the Arduino examples use  "DEAD BEEF FEED" for the MAC address.
    #define MY_MAC_ADDRESS 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED
    
    
    // Enable inclusion mode
    #define MY_INCLUSION_MODE_FEATURE
    // Enable Inclusion mode button on gateway
    //#define MY_INCLUSION_BUTTON_FEATURE
    // Set inclusion mode duration (in seconds)
    #define MY_INCLUSION_MODE_DURATION 60
    // Digital pin used for inclusion mode button
    //#define MY_INCLUSION_MODE_BUTTON_PIN  3
    
    // Set blinking period
    #define MY_DEFAULT_LED_BLINK_PERIOD 300
    
    // Flash leds on rx/tx/err
    // Uncomment to override default HW configurations
    //#define MY_DEFAULT_ERR_LED_PIN 7  // Error led pin
    //#define MY_DEFAULT_RX_LED_PIN  8  // Receive led pin
    //#define MY_DEFAULT_TX_LED_PIN  9  // Transmit led pin
    
    #if defined(MY_USE_UDP)
    #include <EthernetUdp.h>
    #endif
    #include <Ethernet.h>
    #include <MySensors.h>
    
    void setup()
    {
       // Setup locally attached sensors
    }
    
    void presentation()
    {
       // Present locally attached sensors here
    }
    
    void loop()
    {
       // Send locally attached sensors data here
    }
    

    Error Logs:

    2020-07-28 11:22:02 WARNING (MainThread) [mysensors.message] Error decoding message from gateway, bad data received: 0 MCO:BGN:INIT GW,CP=RNNGA---,REL=255,VER=2.3.1
    2020-07-28 11:22:02 WARNING (MainThread) [mysensors] Not a valid message: not enough values to unpack (expected 5, got 0)
    2020-07-28 11:22:02 WARNING (MainThread) [mysensors.message] Error decoding message from gateway, bad data received: 4 TSM:INIT
    2020-07-28 11:22:02 WARNING (MainThread) [mysensors] Not a valid message: not enough values to unpack (expected 5, got 0)
    2020-07-28 11:22:02 WARNING (MainThread) [mysensors.message] Error decoding message from gateway, bad data received: 5 TSF:WUR:MS=0
    2020-07-28 11:22:02 WARNING (MainThread) [mysensors] Not a valid message: not enough values to unpack (expected 5, got 0)
    2020-07-28 11:22:02 WARNING (MainThread) [mysensors.message] Error decoding message from gateway, bad data received: 11 TSM:INIT:TSP OK
    2020-07-28 11:22:02 WARNING (MainThread) [mysensors] Not a valid message: not enough values to unpack (expected 5, got 0)
    2020-07-28 11:22:02 WARNING (MainThread) [mysensors.message] Error decoding message from gateway, bad data received: 13 TSM:INIT:GW MODE
    2020-07-28 11:22:02 WARNING (MainThread) [mysensors] Not a valid message: not enough values to unpack (expected 5, got 0)
    2020-07-28 11:22:02 WARNING (MainThread) [mysensors.message] Error decoding message from gateway, bad data received: 15 TSM:READY:ID=0,PAR=0,DIS=0
    2020-07-28 11:22:02 WARNING (MainThread) [mysensors] Not a valid message: not enough values to unpack (expected 5, got 0)
    2020-07-28 11:22:02 WARNING (MainThread) [mysensors.message] Error decoding message from gateway, bad data received: 17 MCO:REG:NOT NEEDED
    2020-07-28 11:22:02 WARNING (MainThread) [mysensors] Not a valid message: not enough values to unpack (expected 5, got 0)
    


  • To me the errors look like you have connected the gateway to your home assistant controller, and that home assistant is configured for a serial gateway.
    Home assistant is processing the debug output as the data it is expecting.
    I think you should check your configuration



  • Thank you for pointing me in the right direction. I working on figuring that out via the home assistant mysensors gateway doc but getting errors. Will follow-up if I can't figure it out.


  • Hardware Contributor

    @mrhutchinsonmn - i dont know if this can help you but this is my homeassistant configuration with ethernet gateway:

    mysensors:
      gateways:
        - device: '192.168.X.X'
          persistence_file: 'mysensors/mysensors.json'
          tcp_port: 5003 
      optimistic: false
      persistence: true
      version: '2.3'
    

    and here is my ethernet gateway:

    // Enable debug prints to serial monitor
    #define MY_DEBUG
    
    // Enable and select radio type attached
    #define MY_RADIO_NRF24
    #define MY_RF24_PA_LEVEL RF24_PA_MAX
    
    // Enable gateway ethernet module type
    #define MY_GATEWAY_W5100
    
    // Enable Soft SPI for NRF radio (note different radio wiring is required)
    // The W5100 ethernet module seems to have a hard time co-operate with
    // radio on the same spi bus.
    #if !defined(MY_W5100_SPI_EN) && !defined(ARDUINO_ARCH_SAMD)
    #define MY_SOFTSPI
    #define MY_SOFT_SPI_SCK_PIN 14
    #define MY_SOFT_SPI_MISO_PIN 16
    #define MY_SOFT_SPI_MOSI_PIN 15
    #endif
    
    // When W5100 is connected we have to move CE/CSN pins for NRF radio
    #ifndef MY_RF24_CE_PIN
    #define MY_RF24_CE_PIN 5
    #endif
    #ifndef MY_RF24_CS_PIN
    #define MY_RF24_CS_PIN 6
    #endif
    
    #define MY_IP_ADDRESS 192,168,1,8   // If this is disabled, DHCP is used to retrieve address
    // Renewal period if using DHCP
    //#define MY_IP_RENEWAL_INTERVAL 60000
    // The port to keep open on node server mode / or port to contact in client mode
    #define MY_PORT 5003
    
    // Controller ip address. Enables client mode (default is "server" mode).
    // Also enable this if MY_USE_UDP is used and you want sensor data sent somewhere.
    //#define MY_CONTROLLER_IP_ADDRESS 192, 168, 178, 254
    
    // The MAC address can be anything you want but should be unique on your network.
    // Newer boards have a MAC address printed on the underside of the PCB, which you can (optionally) use.
    // Note that most of the Ardunio examples use  "DEAD BEEF FEED" for the MAC address.
    #define MY_MAC_ADDRESS 0xDE, 0xAD, 0xBE, 0xEF, 0x01, 0x08 //AF-A0-F2-15-3B-1C
    
    // Set blinking period
    #define MY_DEFAULT_LED_BLINK_PERIOD 300
    
    #include <SPI.h>
    
    #if defined(MY_USE_UDP)
    #include <EthernetUdp.h>
    #endif
    #include <Ethernet.h>
    #include <MySensors.h>
    
    void presentation(){
    }
    
    void setup(){
    }
    
    void loop() {
    }
    


  • Much appreciated!

    This is what I ended up with for a working config:

    automation: !include 'automations.yaml'
    default_config: ~
    group: !include 'groups.yaml'
    scene:  !include 'scenes.yaml'
    script: !include 'scripts.yaml'
    mysensors:
      gateways:
        - device: '/dev/ttyUSB0'
          persistence_file: 'mysensors1.pickle'
        - device: '10.10.1.69'
          persistence_file: 'mysensors2.pickle'
          tcp_port: 5003
      optimistic: false
      persistence: true
      retain: true
      version: '2.3'
    
    

Log in to reply
 

Suggested Topics

  • 6
  • 6
  • 3
  • 5
  • 3
  • 2
  • 9
  • 2

122
Online

9.5k
Users

10.2k
Topics

105.6k
Posts