MySensors: trying to add Things in WebThings Gateway
-
I need to keep better track of what software is running on a given cpu/sensor, sorry about that but I didn't think of it at the time! I 'think' this is what is running on the office sensor. I should probably build a new sensor using this code and make sure it works the same, (log files match what I've been giving you):
// Enable debug prints to serial monitor
//#define MY_DEBUG// Enable and select radio type attached
#include <MyConfig.h>#define MY_RADIO_NRF24
//#define MY_RADIO_RFM69
#include <SPI.h>
#include <MySensors.h>
#include <DallasTemperature.h>
#include <OneWire.h>#define COMPARE_TEMP 1 // Send temperature only if changed? 1 = Yes 0 = No
#define ONE_WIRE_BUS 3 // Pin where dallase sensor is connected
#define MAX_ATTACHED_DS18B20 16
unsigned long SLEEP_TIME = 30000; // 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];
int numSensors = 0;
bool receivedConfig = false;
bool metric = true;
// Initialize temperature message
MyMessage msg(0, V_TEMP);void before()
{
// Startup up the OneWire library
sensors.begin();
}void setup()
{
// requestTemperatures() will not block current thread
sensors.setWaitForConversion(false);
}void presentation() {
// Send the sketch version information to the gateway and Controller
sendSketchInfo("Temperature Sensor", "1.1");// 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()
{
// 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 float temperature = static_cast<float>(static_cast<int>((getControllerConfig().isMetric ? sensors.getTempCByIndex(i) : sensors.getTempFByIndex(i)) * 10.)) / 10.; // Only send data if temperature has changed and no error#if COMPARE_TEMP == 1
if (lastTemperature[i] != temperature && temperature != -127.00 && temperature != 85.00) {
#else
if (temperature != -127.00 && temperature != 85.00) {
#endif// Send in the new temperature send(msg.setSensor(i).set(temperature, 1)); // Save new temperatures for next compare lastTemperature[i] = temperature; } } sleep(SLEEP_TIME); } -
When you create a new post, click on the 'code' button when you want to insert code.
Back on topic, I don't think that's the actual code, since the log showed that no sketch name was sent. Receiving the sketch name is what triggers the creation of the thing, so it's kind of important.
For example, here's a node presentation from my own logs:
2019-06-20 10:20:03.441 ERROR : mysensors: DEBUG:mysensors:Receiving 33;255;3;0;11;Fireplace 2019-06-20 10:20:03.446 ERROR : mysensors: DEBUG:mysensors:Receiving 33;255;3;0;12;1.2...Yet I don't see "Temperature Sensor" anywhere in your logs.
Also in your errors I can see this strange situation where the add-on keeps requesting node 0 to present itself.
2019-06-19 15:34:00.801 ERROR : mysensors: DEBUG:mysensors:Sending 0;255;3;0;2; 2019-06-19 15:34:00.875 ERROR : mysensors: DEBUG:mysensors:Receiving 0;255;3;0;2;2.2.0Node 0 should theoretically be the MySensors gateway. It only responds with it's version, and not a name. Perhaps that's also an issue (although theoretically it shouldn't be, since node 0 is never turned into a thing).
Come to think of it, I don't see any messages being handled by the add-on other than the initial two messages from the Gateway.
You should see all kinds of things with
>>like:2019-06-20 10:30:34.498 INFO : mysensors: << Requesting presentation from 35 2019-06-20 10:30:34.500 INFO : mysensors: >> incoming message > presentation > id: 35; child: 255; subtype: 17; payload: 2.3.1 2019-06-20 10:30:34.501 INFO : mysensors: >> incoming message > internal > id: 35; child: 255; subtype: 11; payload: Anemone 2019-06-20 10:30:34.503 INFO : mysensors: >> incoming message > internal > id: 35; child: 255; subtype: 12; payload: 1.0 2019-06-20 10:30:34.505 INFO : mysensors: >> incoming message > set > id: 35; child: 1; subtype: 2; payload: 1 -
Ok, I'll look at this and probably just start rebuilding my sensor's and gateway making sure I get those names in there. When I built this over a year ago I was playing with different boards and different sensors and once I got things working in Domoticz I moved on. That's why I have so much program source code out there. This time I'll put a unique, my version number in there so I can keep better track. I think I'll even physically label the sensors this time! Thanks for all your time on this, I really like the looks of the WebThings GW and it's really a good fit for the stuff I'm doing/trying to do. Oh, thanks for that about the code button, didn't know about that.
-
@rmalbers Wait one second. I've been playing with the code and I have a suspicion about what's going on. I'm uploading a new version of the add-on, try that first.
-
Version 0.1.0 has been accepted. Try it and let me know how it goes?
-
Ok ,updated addon and rebooted GW. This test was in Ethernet mode. No luck but the log sure looks different:
2019-06-21 14:32:15.079 INFO : Opened a new things socket
2019-06-21 14:32:15.185 INFO : About to call startPairing on MySensorsAdapter
2019-06-21 14:32:15.197 INFO : mysensors: -Connection status is present in the config data.
2019-06-21 14:32:15.199 INFO : mysensors: RECREATING DEVICES FROM PERSISTENCE
2019-06-21 14:32:15.200 INFO : mysensors:
2019-06-21 14:32:15.202 INFO : mysensors: #0
2019-06-21 14:32:15.203 INFO : mysensors: -Gateway choice: Ethernet gateway
2019-06-21 14:32:15.205 INFO : mysensors: Selected IP address and port: 192.168.1.98
2019-06-21 14:32:15.206 INFO : mysensors:
2019-06-21 14:32:15.208 INFO : mysensors: >> incoming message > internal > id: 0; child: 255; subtype: 14; payload: Gateway startup complete.
2019-06-21 14:32:15.209 INFO : mysensors: Re-requesting presentation of all nodes on the network
2019-06-21 14:32:15.211 INFO : mysensors: Re-request thread created
2019-06-21 14:32:15.218 INFO : mysensors:
2019-06-21 14:32:15.220 INFO : mysensors: >> incoming message > presentation > id: 0; child: 255; subtype: 18; payload: 2.2.0
2019-06-21 14:32:15.221 INFO : mysensors:
2019-06-21 14:32:15.222 INFO : mysensors: >> incoming message > internal > id: 0; child: 255; subtype: 14; payload: Gateway startup complete.
2019-06-21 14:32:15.224 INFO : mysensors:
2019-06-21 14:32:15.225 INFO : mysensors: >> incoming message > presentation > id: 0; child: 255; subtype: 18; payload: 2.2.0
2019-06-21 14:32:15.227 INFO : mysensors: AddonMangerProxy: recv: b'{"messageType":"startPairing","data":{"timeout":60,"adapterId":"mysensors-adapter","pluginId":"mysensors-adapter"}}'
2019-06-21 14:32:15.465 ERROR : mysensors: Node 2 is unknown
2019-06-21 14:32:36.851 ERROR : mysensors: Node 1 is unknown
2019-06-21 14:32:50.254 ERROR : mysensors: Node 2 is unknown
2019-06-21 14:33:09.496 ERROR : mysensors: Node 1 is unknown
2019-06-21 14:33:15.190 INFO : Pairing timeout
2019-06-21 14:33:15.196 ERROR : Thing was not added
2019-06-21 14:33:15.198 ERROR : addNewThing cancelled
2019-06-21 14:33:15.201 INFO : mysensors: PAIRING INITIATED
2019-06-21 14:33:15.204 INFO : mysensors: Thread already existed
2019-06-21 14:33:15.205 INFO : mysensors: Re-requesting presentation of all nodes on the network
2019-06-21 14:33:15.207 INFO : mysensors: Re-request of node presentation restarted
2019-06-21 14:33:15.208 INFO : mysensors: AddonMangerProxy: recv: b'{"messageType":"cancelPairing","data":{"adapterId":"mysensors-adapter","pluginId":"mysensors-adapter"}}'
2019-06-21 14:33:25.022 ERROR : mysensors: Node 2 is unknown -
Ok ,updated addon and rebooted GW. This test was in Ethernet mode. No luck but the log sure looks different:
2019-06-21 14:32:15.079 INFO : Opened a new things socket
2019-06-21 14:32:15.185 INFO : About to call startPairing on MySensorsAdapter
2019-06-21 14:32:15.197 INFO : mysensors: -Connection status is present in the config data.
2019-06-21 14:32:15.199 INFO : mysensors: RECREATING DEVICES FROM PERSISTENCE
2019-06-21 14:32:15.200 INFO : mysensors:
2019-06-21 14:32:15.202 INFO : mysensors: #0
2019-06-21 14:32:15.203 INFO : mysensors: -Gateway choice: Ethernet gateway
2019-06-21 14:32:15.205 INFO : mysensors: Selected IP address and port: 192.168.1.98
2019-06-21 14:32:15.206 INFO : mysensors:
2019-06-21 14:32:15.208 INFO : mysensors: >> incoming message > internal > id: 0; child: 255; subtype: 14; payload: Gateway startup complete.
2019-06-21 14:32:15.209 INFO : mysensors: Re-requesting presentation of all nodes on the network
2019-06-21 14:32:15.211 INFO : mysensors: Re-request thread created
2019-06-21 14:32:15.218 INFO : mysensors:
2019-06-21 14:32:15.220 INFO : mysensors: >> incoming message > presentation > id: 0; child: 255; subtype: 18; payload: 2.2.0
2019-06-21 14:32:15.221 INFO : mysensors:
2019-06-21 14:32:15.222 INFO : mysensors: >> incoming message > internal > id: 0; child: 255; subtype: 14; payload: Gateway startup complete.
2019-06-21 14:32:15.224 INFO : mysensors:
2019-06-21 14:32:15.225 INFO : mysensors: >> incoming message > presentation > id: 0; child: 255; subtype: 18; payload: 2.2.0
2019-06-21 14:32:15.227 INFO : mysensors: AddonMangerProxy: recv: b'{"messageType":"startPairing","data":{"timeout":60,"adapterId":"mysensors-adapter","pluginId":"mysensors-adapter"}}'
2019-06-21 14:32:15.465 ERROR : mysensors: Node 2 is unknown
2019-06-21 14:32:36.851 ERROR : mysensors: Node 1 is unknown
2019-06-21 14:32:50.254 ERROR : mysensors: Node 2 is unknown
2019-06-21 14:33:09.496 ERROR : mysensors: Node 1 is unknown
2019-06-21 14:33:15.190 INFO : Pairing timeout
2019-06-21 14:33:15.196 ERROR : Thing was not added
2019-06-21 14:33:15.198 ERROR : addNewThing cancelled
2019-06-21 14:33:15.201 INFO : mysensors: PAIRING INITIATED
2019-06-21 14:33:15.204 INFO : mysensors: Thread already existed
2019-06-21 14:33:15.205 INFO : mysensors: Re-requesting presentation of all nodes on the network
2019-06-21 14:33:15.207 INFO : mysensors: Re-request of node presentation restarted
2019-06-21 14:33:15.208 INFO : mysensors: AddonMangerProxy: recv: b'{"messageType":"cancelPairing","data":{"adapterId":"mysensors-adapter","pluginId":"mysensors-adapter"}}'
2019-06-21 14:33:25.022 ERROR : mysensors: Node 2 is unknown@rmalbers Just to add, this a log using USB GW, it seems to looks slightly different:
2019-06-21 14:46:04.725 INFO : Unloading MySensorsAdapter
2019-06-21 14:46:04.729 INFO : mysensors: AddonMangerProxy: recv: b'{"messageType":"unloadAdapter","data":{"adapterId":"mysensors-adapter","pluginId":"mysensors-adapter"}}'
2019-06-21 14:46:04.734 INFO : mysensors: Shutting down MySensors adapter
2019-06-21 14:46:04.736 INFO : mysensors: MySensors adapter was unable to cleanly close PyMySensors loop. This is not a problem.
2019-06-21 14:46:04.737 INFO : mysensors: AddonMangerProxy: recv: b'{"messageType":"unloadPlugin","data":{"pluginId":"mysensors-adapter"}}'
2019-06-21 14:46:05.497 INFO : mysensors: MySensors add-on has succesfully loaded the configuration.
2019-06-21 14:46:08.255 INFO : Loading add-on: mysensors-adapter
2019-06-21 14:46:10.552 INFO : mysensors: initialising adapter from class
2019-06-21 14:46:10.555 INFO : mysensors: IpcClient: Connected to server, registering...
2019-06-21 14:46:10.559 INFO : mysensors: IpcClient: Received manager message: b'{"messageType":"registerPluginReply","data":{"pluginId":"mysensors-adapter","ipcBaseAddr":"gateway.plugin.mysensors-adapter"}}'
2019-06-21 14:46:10.561 INFO : mysensors: IpcClient: Registered with PluginServer
2019-06-21 14:46:10.564 INFO : mysensors: AddonManagerProxy: add_adapter: mysensors-adapter
2019-06-21 14:46:17.198 INFO : About to call startPairing on MySensorsAdapter
2019-06-21 14:46:17.205 INFO : mysensors: -Connection status is present in the config data.
2019-06-21 14:46:17.207 INFO : mysensors: RECREATING DEVICES FROM PERSISTENCE
2019-06-21 14:46:17.209 INFO : mysensors:
2019-06-21 14:46:17.210 INFO : mysensors: #0
2019-06-21 14:46:17.212 INFO : mysensors: -Gateway choice: USB Serial gateway
2019-06-21 14:46:17.214 INFO : mysensors: Selected USB device address: /dev/ttyUSB0
2019-06-21 14:46:17.215 INFO : mysensors:
2019-06-21 14:46:17.217 INFO : mysensors: >> incoming message > internal > id: 0; child: 255; subtype: 14; payload: Gateway startup complete.
2019-06-21 14:46:17.218 INFO : mysensors: Re-requesting presentation of all nodes on the network
2019-06-21 14:46:17.220 INFO : mysensors: Re-request thread created
2019-06-21 14:46:17.221 INFO : mysensors:
2019-06-21 14:46:17.223 INFO : mysensors: >> incoming message > presentation > id: 0; child: 255; subtype: 18; payload: 2.3.0
2019-06-21 14:46:17.225 INFO : mysensors: AddonMangerProxy: recv: b'{"messageType":"startPairing","data":{"timeout":60,"adapterId":"mysensors-adapter","pluginId":"mysensors-adapter"}}'
2019-06-21 14:46:17.245 INFO : Opened a new things socket
2019-06-21 14:46:44.848 ERROR : mysensors: Node 2 is unknown
2019-06-21 14:47:17.202 INFO : Pairing timeout
2019-06-21 14:47:17.206 ERROR : Thing was not added
2019-06-21 14:47:17.208 ERROR : addNewThing cancelled
2019-06-21 14:47:17.211 INFO : mysensors: PAIRING INITIATED
2019-06-21 14:47:17.213 INFO : mysensors: Thread already existed
2019-06-21 14:47:17.215 INFO : mysensors: Re-requesting presentation of all nodes on the network
2019-06-21 14:47:17.216 INFO : mysensors: Re-request of node presentation restarted
2019-06-21 14:47:17.218 INFO : mysensors: AddonMangerProxy: recv: b'{"messageType":"cancelPairing","data":{"adapterId":"mysensors-adapter","pluginId":"mysensors-adapter"}}'
2019-06-21 14:47:18.140 ERROR : mysensors: Node 1 is unknown -
Very strange.
I notice you press the pairing button immediately. You don't have to press the pairing button for it to scan for devices. But it shouldn't affect things either.
The only device in your persistence file seems to be your gateway (which it does not turn into a thing, but maybe it should. But that's another matter.)
Have you restarted your devices after starting the gateway? Otherwise they won't show up. Also make sure your devices send actual values when they boot or shortly after, otherwise those won't show up as properties.
I think it's time to have a look at your Arduino code.
-
Very strange.
I notice you press the pairing button immediately. You don't have to press the pairing button for it to scan for devices. But it shouldn't affect things either.
The only device in your persistence file seems to be your gateway (which it does not turn into a thing, but maybe it should. But that's another matter.)
Have you restarted your devices after starting the gateway? Otherwise they won't show up. Also make sure your devices send actual values when they boot or shortly after, otherwise those won't show up as properties.
I think it's time to have a look at your Arduino code.
@alowhum Sorry, I forgot about rebooting the sensor - SUCCESS! (Now I just have to find the other sensors to reboot them, LOL! This is with the ethernet gateway:
2019-06-21 15:03:33.639 INFO : Opened a new things socket
2019-06-21 15:04:08.145 ERROR : mysensors: Node 2 is unknown
2019-06-21 15:04:25.229 ERROR : mysensors: Child 0 is unknown
2019-06-21 15:04:33.108 INFO : Pairing timeout
2019-06-21 15:04:33.111 ERROR : Thing was not added
2019-06-21 15:04:33.113 ERROR : addNewThing cancelled
2019-06-21 15:04:33.117 INFO : mysensors: PAIRING INITIATED
2019-06-21 15:04:33.118 INFO : mysensors: Thread already existed
2019-06-21 15:04:33.120 INFO : mysensors: Re-requesting presentation of all nodes on the network
2019-06-21 15:04:33.121 INFO : mysensors: << Requesting presentation from 1
2019-06-21 15:04:33.123 INFO : mysensors: Re-request of node presentation restarted
2019-06-21 15:04:33.124 INFO : mysensors: AddonMangerProxy: recv: b'{"messageType":"cancelPairing","data":{"adapterId":"mysensors-adapter","pluginId":"mysensors-adapter"}}'
2019-06-21 15:04:35.520 INFO : Successfully created new thing MySensors_1
2019-06-21 15:04:42.920 ERROR : mysensors: Node 2 is unknown
2019-06-21 15:04:57.864 ERROR : mysensors: Child 0 is unknown -
@alowhum Sorry, I forgot about rebooting the sensor - SUCCESS! (Now I just have to find the other sensors to reboot them, LOL! This is with the ethernet gateway:
2019-06-21 15:03:33.639 INFO : Opened a new things socket
2019-06-21 15:04:08.145 ERROR : mysensors: Node 2 is unknown
2019-06-21 15:04:25.229 ERROR : mysensors: Child 0 is unknown
2019-06-21 15:04:33.108 INFO : Pairing timeout
2019-06-21 15:04:33.111 ERROR : Thing was not added
2019-06-21 15:04:33.113 ERROR : addNewThing cancelled
2019-06-21 15:04:33.117 INFO : mysensors: PAIRING INITIATED
2019-06-21 15:04:33.118 INFO : mysensors: Thread already existed
2019-06-21 15:04:33.120 INFO : mysensors: Re-requesting presentation of all nodes on the network
2019-06-21 15:04:33.121 INFO : mysensors: << Requesting presentation from 1
2019-06-21 15:04:33.123 INFO : mysensors: Re-request of node presentation restarted
2019-06-21 15:04:33.124 INFO : mysensors: AddonMangerProxy: recv: b'{"messageType":"cancelPairing","data":{"adapterId":"mysensors-adapter","pluginId":"mysensors-adapter"}}'
2019-06-21 15:04:35.520 INFO : Successfully created new thing MySensors_1
2019-06-21 15:04:42.920 ERROR : mysensors: Node 2 is unknown
2019-06-21 15:04:57.864 ERROR : mysensors: Child 0 is unknown@rmalbers Success with second sensor in garage: (Posting log for informational purposes only)
2019-06-21 15:11:18.780 INFO : Opened a new things socket
2019-06-21 15:11:22.651 INFO : Successfully created new thing Temperature Sensor
2019-06-21 15:11:24.864 ERROR : Thing was not added
2019-06-21 15:11:24.865 ERROR : addNewThing cancelled
2019-06-21 15:11:24.869 INFO : mysensors: PAIRING INITIATED
2019-06-21 15:11:24.871 INFO : mysensors: Thread already existed
2019-06-21 15:11:24.872 INFO : mysensors: Re-requesting presentation of all nodes on the network
2019-06-21 15:11:24.874 INFO : mysensors: << Requesting presentation from 1
2019-06-21 15:11:24.875 INFO : mysensors: Re-request of node presentation restarted
2019-06-21 15:11:24.877 INFO : mysensors: << Requesting presentation from 2
2019-06-21 15:11:24.878 INFO : mysensors: AddonMangerProxy: recv: b'{"messageType":"cancelPairing","data":{"adapterId":"mysensors-adapter","pluginId":"mysensors-adapter"}}'
2019-06-21 15:11:25.829 INFO : getValue for property 2-0-0 for: Temperature Sensor returning 24.1 -
Oh my god :-D
-
@alowhum I guess I should sum it up: I have V2.2 and V2.3 sensors running using the Ethernet GW addon config and using the MySensors original, not rebuilt gateway, so the MS gateway is running unchanged, yet does work with the addon and WebThings GW. (I do have to rebuild sensors again for the 'imperial' config setting. domoticz didn't care but it looks like the WebThings GW does use it. (I have mixtures of F degrees, C degrees, etc.)
-
I've updated the first post of the Gateway Addon thread to indicate that devices must be restarted to initially connect them.