ENC28J60 Ethernet Shield HA reporting !GWT:TSA:ETH FAIL
-
Hi there,
Recently I tried building a RF24 MySensors Ethernet Gateway using a ENC28J60 Nano shield. I had to remap all of the SPI pins of the NRF24L01 (unlike this guide) as the ENC28J60 shield was not playing nice while sharing the MOSI,MISO and SCK pins of the RF24.
RF24 Pins:
Pin | From IO | To IO
CE 9 5
CS 10 6
MOSI 11 9
MISO 12 8
SCK 13 3
IRQ 2 2 (no change)
This was based off this guide which stated that only D10,11,12 & 13 were used for these ENC28J60 nano ethernet shields.However now the issue is that although the Ethernet Shield can connect to the network (I can see it's IP on my router dashboard and successfully ping that IP), MY_DEBUG keeps throwing !GWT:TSA:ETH FAIL errors and adding the Gateway to HA has been unsuccessful:
Here is my Gateway Arduino Sketch:
/** * 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-2015 Sensnology AB * Full contributor list: https://github.com/mysensors/Arduino/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 WITH_LEDS_BLINKING in MyConfig.h * - RX (green) - blink fast on radio message recieved. In inclusion mode will blink fast only on presentation recieved * - TX (yellow) - blink fast on radio message transmitted. In inclusion mode will blink slowly * - ERR (red) - fast blink on error during transmission error or recieve 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_RFM69 // When ENC28J60 is connected we have to move CE/CSN pins for NRF radio #define MY_SOFTSPI #define MY_SOFT_SPI_SCK_PIN 3 #define MY_SOFT_SPI_MISO_PIN 8 #define MY_SOFT_SPI_MOSI_PIN 9 #define MY_RF24_CE_PIN 5 #define MY_RF24_CS_PIN 6 // Enable gateway ethernet module type #define MY_GATEWAY_ENC28J60 // Gateway IP address #define MY_IP_ADDRESS 192,168,0,167 // 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,0,153 // 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, 0xFE, 0xED // Set blinking period #define MY_DEFAULT_LED_BLINK_PERIOD 300 // 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 #define MY_DEFAULT_ERR_LED_PIN 7 // Error led pin #define MY_DEFAULT_RX_LED_PIN 4 // Receive led pin //#define MY_DEFAULT_TX_LED_PIN 3 // the PCB, on board LED #include <SPI.h> #include <UIPEthernet.h> #include <MySensors.h> void setup() { } void presentation() { // Present locally attached sensors } void loop() { }
A snippet from my config.yaml:
mysensors: gateways: - device: '/dev/ttyUSB0' persistence_file: 'mysensors/mysensors.json' baud_rate: 115200 - device: '192.168.0.167' persistence_file: 'mysensors/mysensors1.json' tcp_port: 5003 optimistic: false persistence: true version: 2.3.2
And the MY_DEBUG logs:
0 MCO:BGN:INIT GW,CP=RNNGA---,FQ=16,REL=255,VER=2.3.2 4 TSM:INIT 5 TSF:WUR:MS=0 12 TSM:INIT:TSP OK 13 TSM:INIT:GW MODE 15 TSM:READY:ID=0,PAR=0,DIS=0 18 MCO:REG:NOT NEEDED 71 GWT:TIN:IP=192.168.0.167 1576 !GWT:TIN:ETH FAIL 1579 MCO:BGN:STP 1581 MCO:BGN:INIT OK,TSP=1 2077 !GWT:TSA:ETH FAIL 2079 TSM:READY:NWD REQ 2084 ?TSF:MSG:SEND,0-0-255-255,s=255,c=3,t=20,pt=0,l=0,sg=0,ft=0,st=OK: 2576 !GWT:TSA:ETH FAIL 3077 !GWT:TSA:ETH FAIL 3079 TSF:MSG:READ,1-1-0,s=255,c=3,t=21,pt=1,l=1,sg=0:0 3576 !GWT:TPS:ETH FAIL 3578 TSF:MSG:READ,0-1-255,s=255,c=3,t=20,pt=0,l=0,sg=0: 3584 TSF:MSG:BC 4077 !GWT:TSA:ETH FAIL 4576 !GWT:TSA:ETH FAIL 5076 !GWT:TSA:ETH FAIL 5577 !GWT:TSA:ETH FAIL 6076 !GWT:TSA:ETH FAIL 6577 !GWT:TSA:ETH FAIL 7076 !GWT:TSA:ETH FAIL 7579 !GWT:TSA:ETH FAIL 8076 !GWT:TSA:ETH FAIL 8577 !GWT:TSA:ETH FAIL
Other things I have tried:
- Swapping out RF24 boards (but from the MY_DEBUG logs it seems the RF24 is not the problem)
- Downgrading the AVR Boards to 1.6.11 as per this guide but failed as the sketch failed to compile. Error: multiple libraries found for SPI.h.
- Powering the board via a external power supply
- Tried both UIPEthernet Libraries (the one from MySensorsArduinoExamples and the one from ntruchsess
Perhaps it could be that the sketch occupies 80% of storage (with MY_DEBUG)? I am on the verge of just giving up with this problematic setup and use ESP8266 MQTT instead.
I would like to hear from anyone who has tried a similar setup! Thanks!
-
After seeing this thread I think I will just give up on this ENC28J60 and get a W5500 instead.
-
@Ethan-Chua I have never used Home Assistant, but it looks like the configuration tells HA to connect to a MySensors gateway server at 192.168.0.167 while the gateway is configured to start as a client and connect to a server at 192.168.0.153. So there are 2 clients, each trying to connect to a server that doesn't exist.
If that's the case, removing this part should make the connection work:
// 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,0,153
-
@mfalkvidd said in ENC28J60 Ethernet Shield HA reporting !GWT:TSA:ETH FAIL:
@Ethan-Chua I have never used Home Assistant, but it looks like the configuration tells HA to connect to a MySensors gateway server at 192.168.0.167 while the gateway is configured to start as a client and connect to a server at 192.168.0.153. So there are 2 clients, each trying to connect to a server that doesn't exist.
If that's the case, removing this part should make the connection work:
// 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,0,153
Ok I must have misunderstood the meaning of MY_CONTROLLER_IP_ADDRESS. Will try and see how it goes.
Thanks!
UPDATE: It works now thanks @mfalkvidd for your help!
-
Great work @Ethan-Chua, thanks for reporting back.