[lib 2.3.0, IDE 1.8.8] [UNO + 5100 shield] gateway hangs
-
Hello everyone,
I really appreciate hard work for everyone who is involved in MySensors project.
I am having the following issue:After upgrading Arduino IDE (1.8.8 MAC) and MySensors library (2.3.0) I am having difficulties with my Arduino UNO + W5100 shield gateway.
Generally it works randomly, sometimes it is working without any issues, sometimes crashing after 5-10 minutes.To makes things simple I disconnected all other nodes and this time it is running only on gateway with 1 node (in close range).
I tried to catch some logs, as you can see below, my node 98 is sending temperature update every 10 seconds.
From what I have observed. When I power off node 98 and power on again, in Domoticz logs I see the node is not reporting data anymore. To add more, when I was troubleshooting it previously I observed that even data from other nodes was not updated in Domoticz after powercycle of one node).
However, checking further in Arduino IDE serial monitor logs I indeed see that after node reboot, gateway IS reading data from rebooted node - it is really confusing, sounds like issue between gateway and controller. But, sometimes, when I power cycle node, I see that even gateway itself is rebooting - this reset is visible in domoticz logs as "gateway reset".I really appreciate any hints & advise ! :)
Thank you,
MaciekFYI: Timestamps are almost synchronised (Arduino IDE <-> Domoticz).
Domoticz logs:
2019-01-23 13:28:12.705 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:28:24.683 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:28:36.662 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:28:48.639 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:29:00.618 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:29:12.597 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:29:24.575 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:29:36.552 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:29:48.531 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:30:00.505 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:30:12.486 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:30:24.463 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:30:36.441 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:30:41.866 (Xiaomi GW) Temp (Biuro) 2019-01-23 13:30:41.868 (Xiaomi GW) Humidity (Xiaomi Humidity) 2019-01-23 13:30:41.875 (Xiaomi GW) General/Pressure (Xiaomi Pressure) 2019-01-23 13:30:41.896 (Xiaomi GW) Temp (Biuro) 2019-01-23 13:30:41.898 (Xiaomi GW) Humidity (Xiaomi Humidity) 2019-01-23 13:30:41.899 (Xiaomi GW) General/Pressure (Xiaomi Pressure) ## LAST UPDATE FROM NODE 98 - 2019-01-23 13:30:48.434 2019-01-23 13:30:48.434 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:31:37.959 (Z-Wave GW) Lux (Hol Jasność) 2019-01-23 13:31:37.977 (Z-Wave GW) Temp (Hol) 2019-01-23 13:33:05.179 (Xiaomi GW) Temp (Salon) 2019-01-23 13:33:05.181 (Xiaomi GW) Humidity (Xiaomi Humidity) 2019-01-23 13:33:05.240 (Xiaomi GW) General/Pressure (Xiaomi Pressure)Arduino Serial Monitor logs:
13:28:02.708 -> 291276 GWT:TSA:ETH OK 13:28:02.708 -> 291281 GWT:RFC:MSG=0;0;3;0;2; 13:28:02.708 -> 291287 GWT:RFC:MSG=0;0;3;0;2;Get Version 13:28:11.683 -> 300228 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:28:12.720 -> 301272 GWT:RFC:MSG=0;0;3;0;18;PING 13:28:22.698 -> 311266 GWT:RFC:MSG=0;0;3;0;18;PING 13:28:23.635 -> 312200 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:28:32.710 -> 321261 GWT:RFC:MSG=0;0;3;0;18;PING 13:28:35.640 -> 324170 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:28:42.718 -> 331255 GWT:RFC:MSG=0;0;3;0;18;PING 13:28:47.596 -> 336141 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:28:52.709 -> 341250 GWT:RFC:MSG=0;0;3;0;18;PING 13:28:59.563 -> 348111 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:29:02.719 -> 351245 GWT:RFC:MSG=0;0;3;0;18;PING 13:29:11.546 -> 360082 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:29:12.734 -> 361239 GWT:RFC:MSG=0;0;3;0;18;PING 13:29:22.726 -> 371233 GWT:RFC:MSG=0;0;3;0;18;PING 13:29:23.538 -> 372052 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:29:32.704 -> 381229 GWT:RFC:MSG=0;0;3;0;18;PING 13:29:35.532 -> 384022 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.3 13:29:42.738 -> 391223 GWT:RFC:MSG=0;0;3;0;18;PING 13:29:47.504 -> 395994 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:29:52.732 -> 401217 GWT:RFC:MSG=0;0;3;0;18;PING 13:29:59.469 -> 407964 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.3 13:30:02.738 -> 411211 GWT:RFC:MSG=0;0;3;0;18;PING 13:30:11.441 -> 419934 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.3 13:30:12.729 -> 421207 GWT:RFC:MSG=0;0;3;0;18;PING 13:30:22.715 -> 431201 GWT:RFC:MSG=0;0;3;0;18;PING 13:30:23.428 -> 431903 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.3 13:30:32.717 -> 441195 GWT:RFC:MSG=0;0;3;0;18;PING 13:30:35.416 -> 443874 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.3 13:30:42.723 -> 451190 GWT:RFC:MSG=0;0;3;0;18;PING 13:30:47.408 -> 455860 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:30:52.721 -> 461185 GWT:RFC:MSG=0;0;3;0;18;PING ##(Around this time I plug off / plug in temperature sensor node 98, and Gateway W5100 hangs) 13:30:58.753 -> 467210 TSF:MSG:READ,98-98-255,s=255,c=3,t=7,pt=0,l=0,sg=0: 13:30:58.753 -> 467215 TSF:MSG:BC 13:30:58.753 -> 467217 TSF:MSG:FPAR REQ,ID=98 13:30:58.753 -> 467219 TSF:PNG:SEND,TO=0 13:30:58.753 -> 467222 TSF:CKU:OK 13:30:58.753 -> 467223 TSF:MSG:GWL OK 13:31:00.880 -> 469321 !TSF:MSG:SEND,0-0-98-98,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=NACK:0 13:31:00.880 -> 469327 TSF:MSG:READ,98-98-255,s=255,c=3,t=7,pt=0,l=0,sg=0: 13:31:00.880 -> 469334 !TSF:MSG:LEN,0!=7 13:31:00.880 -> 469336 TSF:MSG:READ,98-98-255,s=255,c=3,t=7,pt=0,l=0,sg=0: 13:31:00.880 -> 469341 !TSF:MSG:LEN,0!=7 13:31:00.880 -> 469344 TSF:MSG:READ,98-98-255,s=255,c=3,t=7,pt=0,l=0,sg=0: 13:31:00.880 -> 469349 !TSF:MSG:LEN,0!=7 13:31:00.880 -> 469351 TSF:MSG:READ,98-98-255,s=255,c=3,t=7,pt=0,l=0,sg=0: 13:31:00.915 -> 469357 !TSF:MSG:LEN,0!=7 13:31:02.730 -> 471179 GWT:RFC:MSG=0;0;3;0;18;PING 13:31:02.839 -> 471306 TSF:MSG:READ,98-98-0,s=255,c=3,t=24,pt=1,l=1,sg=0:1 13:31:02.877 -> 471311 TSF:MSG:PINGED,ID=98,HP=1 13:31:02.877 -> 471318 TSF:MSG:SEND,0-0-98-98,s=255,c=3,t=25,pt=1,l=1,sg=0,ft=0,st=OK:1 13:31:02.877 -> 471331 TSF:MSG:READ,98-98-0,s=255,c=3,t=15,pt=6,l=2,sg=0:0100 13:31:02.877 -> 471339 TSF:MSG:SEND,0-0-98-98,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100 13:31:02.877 -> 471348 TSF:MSG:READ,98-98-0,s=255,c=0,t=17,pt=0,l=5,sg=0:2.3.0 13:31:02.913 -> 471358 TSF:MSG:READ,98-98-0,s=255,c=3,t=6,pt=1,l=1,sg=0:0 13:31:04.908 -> 473368 TSF:MSG:READ,98-98-0,s=255,c=3,t=11,pt=0,l=11,sg=0:Szafa Media 13:31:04.942 -> 473380 TSF:MSG:READ,98-98-0,s=255,c=3,t=12,pt=0,l=5,sg=0:2.3.0 13:31:04.942 -> 473391 TSF:MSG:READ,98-98-0,s=0,c=0,t=6,pt=0,l=0,sg=0: 13:31:04.942 -> 473401 TSF:MSG:READ,98-98-0,s=255,c=3,t=26,pt=1,l=1,sg=0:2 13:31:04.978 -> 473417 TSF:MSG:SEND,0-0-98-98,s=255,c=3,t=27,pt=1,l=1,sg=0,ft=0,st=OK:1 13:31:05.849 -> 474311 TSF:MSG:READ,98-98-0,s=255,c=3,t=0,pt=1,l=1,sg=0:83 13:31:05.884 -> 474320 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:31:12.721 -> 481174 GWT:RFC:MSG=0;0;3;0;18;PING 13:31:17.854 -> 486290 TSF:MSG:READ,98-98-0,s=255,c=3,t=0,pt=1,l=1,sg=0:79 13:31:17.854 -> 486299 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:31:22.743 -> 491168 GWT:RFC:MSG=0;0;3;0;18;PING 13:31:29.822 -> 498269 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:31:32.727 -> 501163 GWT:RFC:MSG=0;0;3;0;18;PING 13:31:41.814 -> 510238 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:31:42.717 -> 511157 GWT:RFC:MSG=0;0;3;0;18;PING 13:31:52.739 -> 521152 GWT:RFC:MSG=0;0;3;0;18;PING 13:31:53.803 -> 522208 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.3 13:32:02.714 -> 531146 GWT:RFC:MSG=0;0;3;0;18;PING 13:32:05.779 -> 534176 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4Gateway sketch (almost the same as default)
/** * 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 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_NRF24 #define MY_RF24_PA_LEVEL RF24_PA_MAX // 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 #define MY_IP_ADDRESS 192,168,0,6 #define MY_IP_GATEWAY_ADDRESS 192,168,0,1 #define MY_IP_SUBNET_ADDRESS 255,255,255,0 #define MY_PORT 5006 #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 8 // Error led pin #define MY_DEFAULT_RX_LED_PIN 9 // Receive led pin #define MY_DEFAULT_TX_LED_PIN 10 // 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 }Node 98 sketch (It is Arduino Pro Mini 3.3v on sundberg84 PCB (big appreciate for author work on this project :) )
// Enable debug prints to serial monitor #define MY_DEBUG #define MY_NODE_ID 98 #define MY_RF24_PA_LEVEL RF24_PA_LOW // Enable and select radio type attached #define MY_RADIO_NRF24 #include <SPI.h> #include <MySensors.h> #include <DallasTemperature.h> #include <OneWire.h> #define COMPARE_TEMP 0 // Send temperature only if changed? 1 = Yes 0 = No #define ONE_WIRE_BUS 4 // Pin where dallase sensor is connected #define MAX_ATTACHED_DS18B20 1 unsigned long SLEEP_TIME = 10000; // Sleep time between reads (in milliseconds) OneWire oneWire(ONE_WIRE_BUS); // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs) DallasTemperature sensors(&oneWire); // Pass the oneWire reference to Dallas Temperature. float lastTemperature[MAX_ATTACHED_DS18B20]; float currentTemperature[MAX_ATTACHED_DS18B20]; int numSensors=0; bool receivedConfig = false; bool metric = true; // Initialize temperature message MyMessage msg(0,V_TEMP); int BATTERY_SENSE_PIN = A0; // select the input pin for the battery sense point int oldBatteryPcnt = 0; void before() { // Startup up the OneWire library sensors.begin(); } void setup() { // use the 1.1 V internal reference #if defined(__AVR_ATmega2560__) analogReference(INTERNAL1V1); #else analogReference(INTERNAL); #endif // requestTemperatures() will not block current thread sensors.setWaitForConversion(false); } void presentation() { // Send the sketch version information to the gateway and Controller sendSketchInfo("Szafa Media", "2.3.0"); // Fetch the number of attached temperature sensors numSensors = sensors.getDeviceCount(); // Present all sensors to controller for (int i=0; i<numSensors && i<MAX_ATTACHED_DS18B20; i++) { present(i, S_TEMP); } } void loop() { // get the battery Voltage int sensorValue = analogRead(BATTERY_SENSE_PIN); #ifdef MY_DEBUG Serial.println(sensorValue); #endif // 1M, 470K divider across battery and using internal ADC ref of 1.1V // Sense point is bypassed with 0.1 uF cap to reduce noise at that point // ((1e6+470e3)/470e3)*1.1 = Vmax = 3.44 Volts // 3.44/1023 = Volts per bit = 0.003363075 int batteryPcnt = sensorValue / 10; #ifdef MY_DEBUG float batteryV = sensorValue * 0.003363075; Serial.print("Battery Voltage: "); Serial.print(batteryV); Serial.println(" V"); Serial.print("Battery percent: "); Serial.print(batteryPcnt); Serial.println(" %"); #endif // Fetch temperatures from Dallas sensors sensors.requestTemperatures(); // query conversion time and sleep until conversion completed int16_t conversionTime = sensors.millisToWaitForConversion(sensors.getResolution()); // sleep() call can be replaced by wait() call if node need to process incoming messages (or if node is repeater) sleep(conversionTime); // Read temperatures and send them to controller for (int i=0; i<numSensors && i<MAX_ATTACHED_DS18B20; i++) { // Fetch and round temperature to one decimal sensors.getTempCByIndex(i) //currentTemperature[i] = static_cast<float>(static_cast<int>((getControllerConfig().isMetric?sensors.getTempCByIndex(i):sensors.getTempFByIndex(i)) * 10.)) / 10.; currentTemperature[i] = sensors.getTempCByIndex(i); lastTemperature[i]=currentTemperature[i]; } if (oldBatteryPcnt != batteryPcnt) { // Power up radio after sleep sendBatteryLevel(batteryPcnt); oldBatteryPcnt = batteryPcnt; } for (int i=0; i<numSensors && i<MAX_ATTACHED_DS18B20; i++) { // Only send data if temperature has changed and no error #if COMPARE_TEMP == 1 if (lastTemperature[i] != currentTemperature[i] && currentTemperature[i] != -127.00 && currentTemperature[i] != 85.00) { #else if (currentTemperature[i] != -127.00 && currentTemperature[i] != 85.00) { #endif // Send in the new temperature send(msg.setSensor(i).set(currentTemperature[i],1)); // Save new temperatures for next compare } } sleep(SLEEP_TIME); } -
Hello everyone,
I really appreciate hard work for everyone who is involved in MySensors project.
I am having the following issue:After upgrading Arduino IDE (1.8.8 MAC) and MySensors library (2.3.0) I am having difficulties with my Arduino UNO + W5100 shield gateway.
Generally it works randomly, sometimes it is working without any issues, sometimes crashing after 5-10 minutes.To makes things simple I disconnected all other nodes and this time it is running only on gateway with 1 node (in close range).
I tried to catch some logs, as you can see below, my node 98 is sending temperature update every 10 seconds.
From what I have observed. When I power off node 98 and power on again, in Domoticz logs I see the node is not reporting data anymore. To add more, when I was troubleshooting it previously I observed that even data from other nodes was not updated in Domoticz after powercycle of one node).
However, checking further in Arduino IDE serial monitor logs I indeed see that after node reboot, gateway IS reading data from rebooted node - it is really confusing, sounds like issue between gateway and controller. But, sometimes, when I power cycle node, I see that even gateway itself is rebooting - this reset is visible in domoticz logs as "gateway reset".I really appreciate any hints & advise ! :)
Thank you,
MaciekFYI: Timestamps are almost synchronised (Arduino IDE <-> Domoticz).
Domoticz logs:
2019-01-23 13:28:12.705 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:28:24.683 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:28:36.662 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:28:48.639 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:29:00.618 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:29:12.597 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:29:24.575 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:29:36.552 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:29:48.531 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:30:00.505 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:30:12.486 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:30:24.463 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:30:36.441 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:30:41.866 (Xiaomi GW) Temp (Biuro) 2019-01-23 13:30:41.868 (Xiaomi GW) Humidity (Xiaomi Humidity) 2019-01-23 13:30:41.875 (Xiaomi GW) General/Pressure (Xiaomi Pressure) 2019-01-23 13:30:41.896 (Xiaomi GW) Temp (Biuro) 2019-01-23 13:30:41.898 (Xiaomi GW) Humidity (Xiaomi Humidity) 2019-01-23 13:30:41.899 (Xiaomi GW) General/Pressure (Xiaomi Pressure) ## LAST UPDATE FROM NODE 98 - 2019-01-23 13:30:48.434 2019-01-23 13:30:48.434 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:31:37.959 (Z-Wave GW) Lux (Hol Jasność) 2019-01-23 13:31:37.977 (Z-Wave GW) Temp (Hol) 2019-01-23 13:33:05.179 (Xiaomi GW) Temp (Salon) 2019-01-23 13:33:05.181 (Xiaomi GW) Humidity (Xiaomi Humidity) 2019-01-23 13:33:05.240 (Xiaomi GW) General/Pressure (Xiaomi Pressure)Arduino Serial Monitor logs:
13:28:02.708 -> 291276 GWT:TSA:ETH OK 13:28:02.708 -> 291281 GWT:RFC:MSG=0;0;3;0;2; 13:28:02.708 -> 291287 GWT:RFC:MSG=0;0;3;0;2;Get Version 13:28:11.683 -> 300228 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:28:12.720 -> 301272 GWT:RFC:MSG=0;0;3;0;18;PING 13:28:22.698 -> 311266 GWT:RFC:MSG=0;0;3;0;18;PING 13:28:23.635 -> 312200 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:28:32.710 -> 321261 GWT:RFC:MSG=0;0;3;0;18;PING 13:28:35.640 -> 324170 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:28:42.718 -> 331255 GWT:RFC:MSG=0;0;3;0;18;PING 13:28:47.596 -> 336141 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:28:52.709 -> 341250 GWT:RFC:MSG=0;0;3;0;18;PING 13:28:59.563 -> 348111 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:29:02.719 -> 351245 GWT:RFC:MSG=0;0;3;0;18;PING 13:29:11.546 -> 360082 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:29:12.734 -> 361239 GWT:RFC:MSG=0;0;3;0;18;PING 13:29:22.726 -> 371233 GWT:RFC:MSG=0;0;3;0;18;PING 13:29:23.538 -> 372052 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:29:32.704 -> 381229 GWT:RFC:MSG=0;0;3;0;18;PING 13:29:35.532 -> 384022 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.3 13:29:42.738 -> 391223 GWT:RFC:MSG=0;0;3;0;18;PING 13:29:47.504 -> 395994 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:29:52.732 -> 401217 GWT:RFC:MSG=0;0;3;0;18;PING 13:29:59.469 -> 407964 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.3 13:30:02.738 -> 411211 GWT:RFC:MSG=0;0;3;0;18;PING 13:30:11.441 -> 419934 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.3 13:30:12.729 -> 421207 GWT:RFC:MSG=0;0;3;0;18;PING 13:30:22.715 -> 431201 GWT:RFC:MSG=0;0;3;0;18;PING 13:30:23.428 -> 431903 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.3 13:30:32.717 -> 441195 GWT:RFC:MSG=0;0;3;0;18;PING 13:30:35.416 -> 443874 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.3 13:30:42.723 -> 451190 GWT:RFC:MSG=0;0;3;0;18;PING 13:30:47.408 -> 455860 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:30:52.721 -> 461185 GWT:RFC:MSG=0;0;3;0;18;PING ##(Around this time I plug off / plug in temperature sensor node 98, and Gateway W5100 hangs) 13:30:58.753 -> 467210 TSF:MSG:READ,98-98-255,s=255,c=3,t=7,pt=0,l=0,sg=0: 13:30:58.753 -> 467215 TSF:MSG:BC 13:30:58.753 -> 467217 TSF:MSG:FPAR REQ,ID=98 13:30:58.753 -> 467219 TSF:PNG:SEND,TO=0 13:30:58.753 -> 467222 TSF:CKU:OK 13:30:58.753 -> 467223 TSF:MSG:GWL OK 13:31:00.880 -> 469321 !TSF:MSG:SEND,0-0-98-98,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=NACK:0 13:31:00.880 -> 469327 TSF:MSG:READ,98-98-255,s=255,c=3,t=7,pt=0,l=0,sg=0: 13:31:00.880 -> 469334 !TSF:MSG:LEN,0!=7 13:31:00.880 -> 469336 TSF:MSG:READ,98-98-255,s=255,c=3,t=7,pt=0,l=0,sg=0: 13:31:00.880 -> 469341 !TSF:MSG:LEN,0!=7 13:31:00.880 -> 469344 TSF:MSG:READ,98-98-255,s=255,c=3,t=7,pt=0,l=0,sg=0: 13:31:00.880 -> 469349 !TSF:MSG:LEN,0!=7 13:31:00.880 -> 469351 TSF:MSG:READ,98-98-255,s=255,c=3,t=7,pt=0,l=0,sg=0: 13:31:00.915 -> 469357 !TSF:MSG:LEN,0!=7 13:31:02.730 -> 471179 GWT:RFC:MSG=0;0;3;0;18;PING 13:31:02.839 -> 471306 TSF:MSG:READ,98-98-0,s=255,c=3,t=24,pt=1,l=1,sg=0:1 13:31:02.877 -> 471311 TSF:MSG:PINGED,ID=98,HP=1 13:31:02.877 -> 471318 TSF:MSG:SEND,0-0-98-98,s=255,c=3,t=25,pt=1,l=1,sg=0,ft=0,st=OK:1 13:31:02.877 -> 471331 TSF:MSG:READ,98-98-0,s=255,c=3,t=15,pt=6,l=2,sg=0:0100 13:31:02.877 -> 471339 TSF:MSG:SEND,0-0-98-98,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100 13:31:02.877 -> 471348 TSF:MSG:READ,98-98-0,s=255,c=0,t=17,pt=0,l=5,sg=0:2.3.0 13:31:02.913 -> 471358 TSF:MSG:READ,98-98-0,s=255,c=3,t=6,pt=1,l=1,sg=0:0 13:31:04.908 -> 473368 TSF:MSG:READ,98-98-0,s=255,c=3,t=11,pt=0,l=11,sg=0:Szafa Media 13:31:04.942 -> 473380 TSF:MSG:READ,98-98-0,s=255,c=3,t=12,pt=0,l=5,sg=0:2.3.0 13:31:04.942 -> 473391 TSF:MSG:READ,98-98-0,s=0,c=0,t=6,pt=0,l=0,sg=0: 13:31:04.942 -> 473401 TSF:MSG:READ,98-98-0,s=255,c=3,t=26,pt=1,l=1,sg=0:2 13:31:04.978 -> 473417 TSF:MSG:SEND,0-0-98-98,s=255,c=3,t=27,pt=1,l=1,sg=0,ft=0,st=OK:1 13:31:05.849 -> 474311 TSF:MSG:READ,98-98-0,s=255,c=3,t=0,pt=1,l=1,sg=0:83 13:31:05.884 -> 474320 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:31:12.721 -> 481174 GWT:RFC:MSG=0;0;3;0;18;PING 13:31:17.854 -> 486290 TSF:MSG:READ,98-98-0,s=255,c=3,t=0,pt=1,l=1,sg=0:79 13:31:17.854 -> 486299 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:31:22.743 -> 491168 GWT:RFC:MSG=0;0;3;0;18;PING 13:31:29.822 -> 498269 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:31:32.727 -> 501163 GWT:RFC:MSG=0;0;3;0;18;PING 13:31:41.814 -> 510238 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:31:42.717 -> 511157 GWT:RFC:MSG=0;0;3;0;18;PING 13:31:52.739 -> 521152 GWT:RFC:MSG=0;0;3;0;18;PING 13:31:53.803 -> 522208 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.3 13:32:02.714 -> 531146 GWT:RFC:MSG=0;0;3;0;18;PING 13:32:05.779 -> 534176 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4Gateway sketch (almost the same as default)
/** * 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 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_NRF24 #define MY_RF24_PA_LEVEL RF24_PA_MAX // 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 #define MY_IP_ADDRESS 192,168,0,6 #define MY_IP_GATEWAY_ADDRESS 192,168,0,1 #define MY_IP_SUBNET_ADDRESS 255,255,255,0 #define MY_PORT 5006 #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 8 // Error led pin #define MY_DEFAULT_RX_LED_PIN 9 // Receive led pin #define MY_DEFAULT_TX_LED_PIN 10 // 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 }Node 98 sketch (It is Arduino Pro Mini 3.3v on sundberg84 PCB (big appreciate for author work on this project :) )
// Enable debug prints to serial monitor #define MY_DEBUG #define MY_NODE_ID 98 #define MY_RF24_PA_LEVEL RF24_PA_LOW // Enable and select radio type attached #define MY_RADIO_NRF24 #include <SPI.h> #include <MySensors.h> #include <DallasTemperature.h> #include <OneWire.h> #define COMPARE_TEMP 0 // Send temperature only if changed? 1 = Yes 0 = No #define ONE_WIRE_BUS 4 // Pin where dallase sensor is connected #define MAX_ATTACHED_DS18B20 1 unsigned long SLEEP_TIME = 10000; // Sleep time between reads (in milliseconds) OneWire oneWire(ONE_WIRE_BUS); // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs) DallasTemperature sensors(&oneWire); // Pass the oneWire reference to Dallas Temperature. float lastTemperature[MAX_ATTACHED_DS18B20]; float currentTemperature[MAX_ATTACHED_DS18B20]; int numSensors=0; bool receivedConfig = false; bool metric = true; // Initialize temperature message MyMessage msg(0,V_TEMP); int BATTERY_SENSE_PIN = A0; // select the input pin for the battery sense point int oldBatteryPcnt = 0; void before() { // Startup up the OneWire library sensors.begin(); } void setup() { // use the 1.1 V internal reference #if defined(__AVR_ATmega2560__) analogReference(INTERNAL1V1); #else analogReference(INTERNAL); #endif // requestTemperatures() will not block current thread sensors.setWaitForConversion(false); } void presentation() { // Send the sketch version information to the gateway and Controller sendSketchInfo("Szafa Media", "2.3.0"); // Fetch the number of attached temperature sensors numSensors = sensors.getDeviceCount(); // Present all sensors to controller for (int i=0; i<numSensors && i<MAX_ATTACHED_DS18B20; i++) { present(i, S_TEMP); } } void loop() { // get the battery Voltage int sensorValue = analogRead(BATTERY_SENSE_PIN); #ifdef MY_DEBUG Serial.println(sensorValue); #endif // 1M, 470K divider across battery and using internal ADC ref of 1.1V // Sense point is bypassed with 0.1 uF cap to reduce noise at that point // ((1e6+470e3)/470e3)*1.1 = Vmax = 3.44 Volts // 3.44/1023 = Volts per bit = 0.003363075 int batteryPcnt = sensorValue / 10; #ifdef MY_DEBUG float batteryV = sensorValue * 0.003363075; Serial.print("Battery Voltage: "); Serial.print(batteryV); Serial.println(" V"); Serial.print("Battery percent: "); Serial.print(batteryPcnt); Serial.println(" %"); #endif // Fetch temperatures from Dallas sensors sensors.requestTemperatures(); // query conversion time and sleep until conversion completed int16_t conversionTime = sensors.millisToWaitForConversion(sensors.getResolution()); // sleep() call can be replaced by wait() call if node need to process incoming messages (or if node is repeater) sleep(conversionTime); // Read temperatures and send them to controller for (int i=0; i<numSensors && i<MAX_ATTACHED_DS18B20; i++) { // Fetch and round temperature to one decimal sensors.getTempCByIndex(i) //currentTemperature[i] = static_cast<float>(static_cast<int>((getControllerConfig().isMetric?sensors.getTempCByIndex(i):sensors.getTempFByIndex(i)) * 10.)) / 10.; currentTemperature[i] = sensors.getTempCByIndex(i); lastTemperature[i]=currentTemperature[i]; } if (oldBatteryPcnt != batteryPcnt) { // Power up radio after sleep sendBatteryLevel(batteryPcnt); oldBatteryPcnt = batteryPcnt; } for (int i=0; i<numSensors && i<MAX_ATTACHED_DS18B20; i++) { // Only send data if temperature has changed and no error #if COMPARE_TEMP == 1 if (lastTemperature[i] != currentTemperature[i] && currentTemperature[i] != -127.00 && currentTemperature[i] != 85.00) { #else if (currentTemperature[i] != -127.00 && currentTemperature[i] != 85.00) { #endif // Send in the new temperature send(msg.setSensor(i).set(currentTemperature[i],1)); // Save new temperatures for next compare } } sleep(SLEEP_TIME); }@macieiks Hi!
How are you powering the node?
I had a lot of trouble with heat with mine. The 1117 regulator on the arduino uno wasn't coping with the w5100 power requirements.
It was triggering the thermal cut on it (100+ ºC!!!)
Is your Uno hot?
-
Hello everyone,
I really appreciate hard work for everyone who is involved in MySensors project.
I am having the following issue:After upgrading Arduino IDE (1.8.8 MAC) and MySensors library (2.3.0) I am having difficulties with my Arduino UNO + W5100 shield gateway.
Generally it works randomly, sometimes it is working without any issues, sometimes crashing after 5-10 minutes.To makes things simple I disconnected all other nodes and this time it is running only on gateway with 1 node (in close range).
I tried to catch some logs, as you can see below, my node 98 is sending temperature update every 10 seconds.
From what I have observed. When I power off node 98 and power on again, in Domoticz logs I see the node is not reporting data anymore. To add more, when I was troubleshooting it previously I observed that even data from other nodes was not updated in Domoticz after powercycle of one node).
However, checking further in Arduino IDE serial monitor logs I indeed see that after node reboot, gateway IS reading data from rebooted node - it is really confusing, sounds like issue between gateway and controller. But, sometimes, when I power cycle node, I see that even gateway itself is rebooting - this reset is visible in domoticz logs as "gateway reset".I really appreciate any hints & advise ! :)
Thank you,
MaciekFYI: Timestamps are almost synchronised (Arduino IDE <-> Domoticz).
Domoticz logs:
2019-01-23 13:28:12.705 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:28:24.683 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:28:36.662 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:28:48.639 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:29:00.618 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:29:12.597 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:29:24.575 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:29:36.552 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:29:48.531 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:30:00.505 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:30:12.486 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:30:24.463 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:30:36.441 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:30:41.866 (Xiaomi GW) Temp (Biuro) 2019-01-23 13:30:41.868 (Xiaomi GW) Humidity (Xiaomi Humidity) 2019-01-23 13:30:41.875 (Xiaomi GW) General/Pressure (Xiaomi Pressure) 2019-01-23 13:30:41.896 (Xiaomi GW) Temp (Biuro) 2019-01-23 13:30:41.898 (Xiaomi GW) Humidity (Xiaomi Humidity) 2019-01-23 13:30:41.899 (Xiaomi GW) General/Pressure (Xiaomi Pressure) ## LAST UPDATE FROM NODE 98 - 2019-01-23 13:30:48.434 2019-01-23 13:30:48.434 (MySensors GW) Temp (Dallas TEST) 2019-01-23 13:31:37.959 (Z-Wave GW) Lux (Hol Jasność) 2019-01-23 13:31:37.977 (Z-Wave GW) Temp (Hol) 2019-01-23 13:33:05.179 (Xiaomi GW) Temp (Salon) 2019-01-23 13:33:05.181 (Xiaomi GW) Humidity (Xiaomi Humidity) 2019-01-23 13:33:05.240 (Xiaomi GW) General/Pressure (Xiaomi Pressure)Arduino Serial Monitor logs:
13:28:02.708 -> 291276 GWT:TSA:ETH OK 13:28:02.708 -> 291281 GWT:RFC:MSG=0;0;3;0;2; 13:28:02.708 -> 291287 GWT:RFC:MSG=0;0;3;0;2;Get Version 13:28:11.683 -> 300228 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:28:12.720 -> 301272 GWT:RFC:MSG=0;0;3;0;18;PING 13:28:22.698 -> 311266 GWT:RFC:MSG=0;0;3;0;18;PING 13:28:23.635 -> 312200 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:28:32.710 -> 321261 GWT:RFC:MSG=0;0;3;0;18;PING 13:28:35.640 -> 324170 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:28:42.718 -> 331255 GWT:RFC:MSG=0;0;3;0;18;PING 13:28:47.596 -> 336141 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:28:52.709 -> 341250 GWT:RFC:MSG=0;0;3;0;18;PING 13:28:59.563 -> 348111 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:29:02.719 -> 351245 GWT:RFC:MSG=0;0;3;0;18;PING 13:29:11.546 -> 360082 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:29:12.734 -> 361239 GWT:RFC:MSG=0;0;3;0;18;PING 13:29:22.726 -> 371233 GWT:RFC:MSG=0;0;3;0;18;PING 13:29:23.538 -> 372052 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:29:32.704 -> 381229 GWT:RFC:MSG=0;0;3;0;18;PING 13:29:35.532 -> 384022 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.3 13:29:42.738 -> 391223 GWT:RFC:MSG=0;0;3;0;18;PING 13:29:47.504 -> 395994 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:29:52.732 -> 401217 GWT:RFC:MSG=0;0;3;0;18;PING 13:29:59.469 -> 407964 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.3 13:30:02.738 -> 411211 GWT:RFC:MSG=0;0;3;0;18;PING 13:30:11.441 -> 419934 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.3 13:30:12.729 -> 421207 GWT:RFC:MSG=0;0;3;0;18;PING 13:30:22.715 -> 431201 GWT:RFC:MSG=0;0;3;0;18;PING 13:30:23.428 -> 431903 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.3 13:30:32.717 -> 441195 GWT:RFC:MSG=0;0;3;0;18;PING 13:30:35.416 -> 443874 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.3 13:30:42.723 -> 451190 GWT:RFC:MSG=0;0;3;0;18;PING 13:30:47.408 -> 455860 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:30:52.721 -> 461185 GWT:RFC:MSG=0;0;3;0;18;PING ##(Around this time I plug off / plug in temperature sensor node 98, and Gateway W5100 hangs) 13:30:58.753 -> 467210 TSF:MSG:READ,98-98-255,s=255,c=3,t=7,pt=0,l=0,sg=0: 13:30:58.753 -> 467215 TSF:MSG:BC 13:30:58.753 -> 467217 TSF:MSG:FPAR REQ,ID=98 13:30:58.753 -> 467219 TSF:PNG:SEND,TO=0 13:30:58.753 -> 467222 TSF:CKU:OK 13:30:58.753 -> 467223 TSF:MSG:GWL OK 13:31:00.880 -> 469321 !TSF:MSG:SEND,0-0-98-98,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=NACK:0 13:31:00.880 -> 469327 TSF:MSG:READ,98-98-255,s=255,c=3,t=7,pt=0,l=0,sg=0: 13:31:00.880 -> 469334 !TSF:MSG:LEN,0!=7 13:31:00.880 -> 469336 TSF:MSG:READ,98-98-255,s=255,c=3,t=7,pt=0,l=0,sg=0: 13:31:00.880 -> 469341 !TSF:MSG:LEN,0!=7 13:31:00.880 -> 469344 TSF:MSG:READ,98-98-255,s=255,c=3,t=7,pt=0,l=0,sg=0: 13:31:00.880 -> 469349 !TSF:MSG:LEN,0!=7 13:31:00.880 -> 469351 TSF:MSG:READ,98-98-255,s=255,c=3,t=7,pt=0,l=0,sg=0: 13:31:00.915 -> 469357 !TSF:MSG:LEN,0!=7 13:31:02.730 -> 471179 GWT:RFC:MSG=0;0;3;0;18;PING 13:31:02.839 -> 471306 TSF:MSG:READ,98-98-0,s=255,c=3,t=24,pt=1,l=1,sg=0:1 13:31:02.877 -> 471311 TSF:MSG:PINGED,ID=98,HP=1 13:31:02.877 -> 471318 TSF:MSG:SEND,0-0-98-98,s=255,c=3,t=25,pt=1,l=1,sg=0,ft=0,st=OK:1 13:31:02.877 -> 471331 TSF:MSG:READ,98-98-0,s=255,c=3,t=15,pt=6,l=2,sg=0:0100 13:31:02.877 -> 471339 TSF:MSG:SEND,0-0-98-98,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=OK:0100 13:31:02.877 -> 471348 TSF:MSG:READ,98-98-0,s=255,c=0,t=17,pt=0,l=5,sg=0:2.3.0 13:31:02.913 -> 471358 TSF:MSG:READ,98-98-0,s=255,c=3,t=6,pt=1,l=1,sg=0:0 13:31:04.908 -> 473368 TSF:MSG:READ,98-98-0,s=255,c=3,t=11,pt=0,l=11,sg=0:Szafa Media 13:31:04.942 -> 473380 TSF:MSG:READ,98-98-0,s=255,c=3,t=12,pt=0,l=5,sg=0:2.3.0 13:31:04.942 -> 473391 TSF:MSG:READ,98-98-0,s=0,c=0,t=6,pt=0,l=0,sg=0: 13:31:04.942 -> 473401 TSF:MSG:READ,98-98-0,s=255,c=3,t=26,pt=1,l=1,sg=0:2 13:31:04.978 -> 473417 TSF:MSG:SEND,0-0-98-98,s=255,c=3,t=27,pt=1,l=1,sg=0,ft=0,st=OK:1 13:31:05.849 -> 474311 TSF:MSG:READ,98-98-0,s=255,c=3,t=0,pt=1,l=1,sg=0:83 13:31:05.884 -> 474320 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:31:12.721 -> 481174 GWT:RFC:MSG=0;0;3;0;18;PING 13:31:17.854 -> 486290 TSF:MSG:READ,98-98-0,s=255,c=3,t=0,pt=1,l=1,sg=0:79 13:31:17.854 -> 486299 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:31:22.743 -> 491168 GWT:RFC:MSG=0;0;3;0;18;PING 13:31:29.822 -> 498269 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:31:32.727 -> 501163 GWT:RFC:MSG=0;0;3;0;18;PING 13:31:41.814 -> 510238 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4 13:31:42.717 -> 511157 GWT:RFC:MSG=0;0;3;0;18;PING 13:31:52.739 -> 521152 GWT:RFC:MSG=0;0;3;0;18;PING 13:31:53.803 -> 522208 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.3 13:32:02.714 -> 531146 GWT:RFC:MSG=0;0;3;0;18;PING 13:32:05.779 -> 534176 TSF:MSG:READ,98-98-0,s=0,c=1,t=0,pt=7,l=5,sg=0:21.4Gateway sketch (almost the same as default)
/** * 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 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_NRF24 #define MY_RF24_PA_LEVEL RF24_PA_MAX // 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 #define MY_IP_ADDRESS 192,168,0,6 #define MY_IP_GATEWAY_ADDRESS 192,168,0,1 #define MY_IP_SUBNET_ADDRESS 255,255,255,0 #define MY_PORT 5006 #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 8 // Error led pin #define MY_DEFAULT_RX_LED_PIN 9 // Receive led pin #define MY_DEFAULT_TX_LED_PIN 10 // 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 }Node 98 sketch (It is Arduino Pro Mini 3.3v on sundberg84 PCB (big appreciate for author work on this project :) )
// Enable debug prints to serial monitor #define MY_DEBUG #define MY_NODE_ID 98 #define MY_RF24_PA_LEVEL RF24_PA_LOW // Enable and select radio type attached #define MY_RADIO_NRF24 #include <SPI.h> #include <MySensors.h> #include <DallasTemperature.h> #include <OneWire.h> #define COMPARE_TEMP 0 // Send temperature only if changed? 1 = Yes 0 = No #define ONE_WIRE_BUS 4 // Pin where dallase sensor is connected #define MAX_ATTACHED_DS18B20 1 unsigned long SLEEP_TIME = 10000; // Sleep time between reads (in milliseconds) OneWire oneWire(ONE_WIRE_BUS); // Setup a oneWire instance to communicate with any OneWire devices (not just Maxim/Dallas temperature ICs) DallasTemperature sensors(&oneWire); // Pass the oneWire reference to Dallas Temperature. float lastTemperature[MAX_ATTACHED_DS18B20]; float currentTemperature[MAX_ATTACHED_DS18B20]; int numSensors=0; bool receivedConfig = false; bool metric = true; // Initialize temperature message MyMessage msg(0,V_TEMP); int BATTERY_SENSE_PIN = A0; // select the input pin for the battery sense point int oldBatteryPcnt = 0; void before() { // Startup up the OneWire library sensors.begin(); } void setup() { // use the 1.1 V internal reference #if defined(__AVR_ATmega2560__) analogReference(INTERNAL1V1); #else analogReference(INTERNAL); #endif // requestTemperatures() will not block current thread sensors.setWaitForConversion(false); } void presentation() { // Send the sketch version information to the gateway and Controller sendSketchInfo("Szafa Media", "2.3.0"); // Fetch the number of attached temperature sensors numSensors = sensors.getDeviceCount(); // Present all sensors to controller for (int i=0; i<numSensors && i<MAX_ATTACHED_DS18B20; i++) { present(i, S_TEMP); } } void loop() { // get the battery Voltage int sensorValue = analogRead(BATTERY_SENSE_PIN); #ifdef MY_DEBUG Serial.println(sensorValue); #endif // 1M, 470K divider across battery and using internal ADC ref of 1.1V // Sense point is bypassed with 0.1 uF cap to reduce noise at that point // ((1e6+470e3)/470e3)*1.1 = Vmax = 3.44 Volts // 3.44/1023 = Volts per bit = 0.003363075 int batteryPcnt = sensorValue / 10; #ifdef MY_DEBUG float batteryV = sensorValue * 0.003363075; Serial.print("Battery Voltage: "); Serial.print(batteryV); Serial.println(" V"); Serial.print("Battery percent: "); Serial.print(batteryPcnt); Serial.println(" %"); #endif // Fetch temperatures from Dallas sensors sensors.requestTemperatures(); // query conversion time and sleep until conversion completed int16_t conversionTime = sensors.millisToWaitForConversion(sensors.getResolution()); // sleep() call can be replaced by wait() call if node need to process incoming messages (or if node is repeater) sleep(conversionTime); // Read temperatures and send them to controller for (int i=0; i<numSensors && i<MAX_ATTACHED_DS18B20; i++) { // Fetch and round temperature to one decimal sensors.getTempCByIndex(i) //currentTemperature[i] = static_cast<float>(static_cast<int>((getControllerConfig().isMetric?sensors.getTempCByIndex(i):sensors.getTempFByIndex(i)) * 10.)) / 10.; currentTemperature[i] = sensors.getTempCByIndex(i); lastTemperature[i]=currentTemperature[i]; } if (oldBatteryPcnt != batteryPcnt) { // Power up radio after sleep sendBatteryLevel(batteryPcnt); oldBatteryPcnt = batteryPcnt; } for (int i=0; i<numSensors && i<MAX_ATTACHED_DS18B20; i++) { // Only send data if temperature has changed and no error #if COMPARE_TEMP == 1 if (lastTemperature[i] != currentTemperature[i] && currentTemperature[i] != -127.00 && currentTemperature[i] != 85.00) { #else if (currentTemperature[i] != -127.00 && currentTemperature[i] != 85.00) { #endif // Send in the new temperature send(msg.setSensor(i).set(currentTemperature[i],1)); // Save new temperatures for next compare } } sleep(SLEEP_TIME); } -
@macieiks Hi!
How are you powering the node?
I had a lot of trouble with heat with mine. The 1117 regulator on the arduino uno wasn't coping with the w5100 power requirements.
It was triggering the thermal cut on it (100+ ºC!!!)
Is your Uno hot?
I think it is not a case. It has normal temperature. It was running fine before ;)
I have AMS1117-3.3V pcb adapter soldered directly to UNO (under USB TypeB) connection. It is feeding 5V directly from 2A usb charger and converting to 3.3V. I am installing always 4,7uF capacitor near NRF antenna pins across all my nodes / gateway.
I tried before adjusting to "LOW" settings. Powering from built-in Uno's 3.3V socket - unfortunately it is the same.
I think this is somehow related with other thing, because I am receiving "reads" from the node 98.
But I do not give up :D This is excellent project ;)
Checking further, please see attached Domoticz log.
After 14:58:00 I have powercycled node 98. As you can see it did not came up after, but in Serial Monitor (on Gateway) I could see reads from it. I have 5 min timeout configured in Domoticz hardware tab. After 5 minutes, Domoticz restarted MySensors service. After that it came up and updates were visible in the domoticz system.2019-01-23 14:57:36.335 (MySensors GW) Temp (Dallas TEST) 2019-01-23 14:57:48.316 (MySensors GW) Temp (Dallas TEST) 2019-01-23 14:58:00.297 (MySensors GW) Temp (Dallas TEST) 2019-01-23 15:01:11.563 (Z-Wave GW) Lux (Hol Jasność) 2019-01-23 15:01:11.581 (Z-Wave GW) Temp (Hol) 2019-01-23 15:04:17.440 (Xiaomi GW) Temp (Zewnętrzny) 2019-01-23 15:04:17.457 (Xiaomi GW) Humidity (Xiaomi Humidity) 2019-01-23 15:04:17.481 (Xiaomi GW) General/Pressure (Xiaomi Pressure) 2019-01-23 15:04:19.500 Error: MySensors GW hardware (7) nothing received for more than 5 Minutes!.... 2019-01-23 15:04:20.501 Status: MySensors: TCP/IP Worker stopped... 2019-01-23 15:04:20.504 Status: MySensors: trying to connect to: 192.168.0.6:5006 2019-01-23 15:04:20.505 Status: MySensors: connected to: 192.168.0.6:5006 2019-01-23 15:04:20.501 Error: Restarting: MySensors GW 2019-01-23 15:06:10.013 (Z-Wave GW) Lux (Hol Jasność) 2019-01-23 15:06:10.031 (Z-Wave GW) Temp (Hol) 2019-01-23 15:09:27.956 Error: MySensors GW hardware (7) nothing received for more than 5 Minutes!.... 2019-01-23 15:09:28.966 MySensors: Gateway Ready... 2019-01-23 15:09:28.972 MySensors: Gateway Version: 2.3.0 2019-01-23 15:09:28.978 MySensors: Gateway Version: 2.3.0 2019-01-23 15:09:28.958 Status: MySensors: TCP/IP Worker stopped... 2019-01-23 15:09:28.961 Status: MySensors: trying to connect to: 192.168.0.6:5006 2019-01-23 15:09:28.962 Status: MySensors: connected to: 192.168.0.6:5006 2019-01-23 15:09:28.957 Error: Restarting: MySensors GW 2019-01-23 15:09:37.743 (MySensors GW) Temp (Dallas TEST) 2019-01-23 15:09:49.721 (MySensors GW) Temp (Dallas TEST) 2019-01-23 15:10:01.698 (MySensors GW) Temp (Dallas TEST) 2019-01-23 15:10:13.678 (MySensors GW) Temp (Dallas TEST) 2019-01-23 15:10:25.656 (MySensors GW) Temp (Dallas TEST) 2019-01-23 15:10:37.634 (MySensors GW) Temp (Dallas TEST) 2019-01-23 15:10:49.612 (MySensors GW) Temp (Dallas TEST) 2019-01-23 15:11:01.589 (MySensors GW) Temp (Dallas TEST) 2019-01-23 15:11:08.538 (Z-Wave GW) Lux (Hol Jasność) 2019-01-23 15:11:08.556 (Z-Wave GW) Temp (Hol) 2019-01-23 15:11:13.570 (MySensors GW) Temp (Dallas TEST) 2019-01-23 15:11:25.548 (MySensors GW) Temp (Dallas TEST) 2019-01-23 15:11:37.526 (MySensors GW) Temp (Dallas TEST) 2019-01-23 15:11:49.505 (MySensors GW) Temp (Dallas TEST) 2019-01-23 15:12:01.481 (MySensors GW) Temp (Dallas TEST) 2019-01-23 15:12:13.461 (MySensors GW) Temp (Dallas TEST) 2019-01-23 15:12:25.439 (MySensors GW) Temp (Dallas TEST) 2019-01-23 15:12:37.418 (MySensors GW) Temp (Dallas TEST)``` -
[UPDATE]
I have tried in several way with no luck - even formatting Raspberry Pi card with fresh Domoticz. I did workaround and changed gateway to Raspberry Pi + NRF24 option. It is working perfectly and I have got ability to check and investigate MySensors debug logs remotely thanks to logging to pipe :)
Regards,
Maciek
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login