Noob : Cant get Sensor talking to gateway
-
Hey all,
This is my first Mysensors adventure and I cant seem to get things working..
I have a trivially simple sketch, just to test its working but the arduino doesnt event get to my "loop".. Im baffled.. i think im doing something wrong software wise but... bafled.. Oh I know the arduino is on 2.1.1 and the Pi on 2.2.0-rc.1 but I cant work out how to burn the same version to the arduino....
thanks in advance
Angelo#include <SPI.h> #define MY_DEBUG #define CHILD_ID_TEMP 1 #define MY_RADIO_NRF24 #include <MyConfig.h> #include <MySensors.h> MyMessage msgTemp(CHILD_ID_TEMP, V_TEMP); void presentation() { // Send the sketch version information to the gateway sendSketchInfo("AngelosTesting", "1.1"); present(CHILD_ID_TEMP, S_TEMP); } void setup() { Serial.println("Init"); } void loop() { Serial.println("Sending data"); send(msgTemp.set("42!")); sleep (5000); }
However the sensor just says "fail",.. what is interesting that when the sensor says its failure message the gateway does receive something but.. the sensor doesnt like it..
Arduino Mini Pro sensor
0 MCO:BGN:INIT NODE,CP=RNNNA--,VER=2.1.1 4 TSM:INIT 4 TSF:WUR:MS=0 12 TSM:INIT:TSP OK 14 TSM:FPAR 16 TSF:MSG:SEND,255-255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 2025 !TSM:FPAR:NO REPLY 2027 TSM:FPAR 2029 TSF:MSG:SEND,255-255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 4038 !TSM:FPAR:NO REPLY 4040 TSM:FPAR 4042 TSF:MSG:SEND,255-255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK: 4636 TSF:MSG:READ,0-0-255,s=255,c=3,t=8,pt=1,l=1,sg=0:0 4642 TSF:MSG:FPAR OK,ID=0,D=1 6051 TSM:FPAR:OK 6051 TSM:ID 6053 TSM:ID:REQ 6057 TSF:MSG:SEND,255-255-0-0,s=255,c=3,t=3,pt=0,l=0,sg=0,ft=0,st=OK: 8065 TSM:ID 8065 TSM:ID:REQ 8069 TSF:MSG:SEND,255-255-0-0,s=255,c=3,t=3,pt=0,l=0,sg=0,ft=0,st=OK: 10076 TSM:ID 10076 TSM:ID:REQ 10080 TSF:MSG:SEND,255-255-0-0,s=255,c=3,t=3,pt=0,l=0,sg=0,ft=0,st=OK: 12089 TSM:ID 12089 TSM:ID:REQ 12093 TSF:MSG:SEND,255-255-0-0,s=255,c=3,t=3,pt=0,l=0,sg=0,ft=0,st=OK: 14102 !TSM:ID:FAIL 14104 TSM:FAIL:CNT=1 14106 TSM:FAIL:PDT
Raspberry Pi Gateway
mysgw: Starting gateway... mysgw: Protocol version - 2.2.0-rc.1 mysgw: MCO:BGN:INIT GW,CP=RNNGL---,VER=2.2.0-rc.1 mysgw: TSF:LRT:OK mysgw: TSM:INIT mysgw: TSF:WUR:MS=0 mysgw: TSM:INIT:TSP OK mysgw: TSM:INIT:GW MODE mysgw: TSM:READY:ID=0,PAR=0,DIS=0 mysgw: MCO:REG:NOT NEEDED mysgw: Listening for connections on 0.0.0.0:5003 mysgw: MCO:BGN:STP mysgw: MCO:BGN:INIT OK,TSP=1 mysgw: TSF:MSG:READ,255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0: mysgw: TSF:MSG:BC mysgw: TSF:MSG:FPAR REQ,ID=255 mysgw: TSF:CKU:OK,FCTRL mysgw: TSF:MSG:GWL OK mysgw: TSF:MSG:SEND,0-0-255-255,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=OK:0 mysgw: TSF:MSG:READ,255-255-0,s=255,c=3,t=3,pt=0,l=0,sg=0: mysgw: TSF:MSG:READ,255-255-0,s=255,c=3,t=3,pt=0,l=0,sg=0: mysgw: TSF:MSG:READ,255-255-0,s=255,c=3,t=3,pt=0,l=0,sg=0: mysgw: TSF:MSG:READ,255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0: mysgw: TSF:MSG:BC mysgw: TSF:MSG:FPAR REQ,ID=255 mysgw: TSF:PNG:SEND,TO=0 mysgw: TSF:CKU:OK mysgw: TSF:MSG:GWL OK mysgw: TSF:MSG:SEND,0-0-255-255,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=OK:0 mysgw: TSF:MSG:READ,255-255-0,s=255,c=3,t=3,pt=0,l=0,sg=0:
-
You need to assign a node ID on your sensor node
-
@Angelo-Santagata the log parser is useful in these situations.
https://www.mysensors.org/build/parserlink text
In your case, it calls my attention that the gw seems to be answering the requests for an ID from the node with an empty payload. I would start the investigation here.
For a check, assign an static node Id to the node and try see what happens.
-
thanks for the pointer guys, I'll check this out when I get home..
-
If you have used this same sensors as a test in the past you may need to clear the eeprom data also.
Just a guess...
-
@manutremo thanks, I have used the parselink text utility but I should have paid more attention
mm Ive used the same hardware but never got it working. .. your right maybe its stored a dud nodeID.. Looking at the docs https://www.mysensors.org/download/sensor_api_20 I can set a nodeID manually.. I'll give that a go
-
Here's the clear eeprom sketch if you need it.
https://github.com/mysensors/MySensors/blob/master/examples/ClearEepromConfig/ClearEepromConfig.ino
-
@r-nox AWESOME! thank you!
Nice to see this OS library is well supported... cool
-
@manutremo , you hit it bang on.. The NODE_ID wasnt being sent, setting a node id to a number using
#define MY_NODE_ID 42
worked.Curious, so I can debug this myself in the future, which line indicated the NODE_ID was blank?
was it this line?
mysgw: TSF:MSG:READ,255-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
-
@Angelo-Santagata happy to know that you got it working. Yes I think that's the line which in the log parser showed an empty payload. It would be interesting to know why the gw is returning an empty payload when an ID is requested, though, since that's not usual behavior with the default settings. Let us know what you find out!
-
If there is no controller assigning an ID, the gw can't make up one out of nothing.
-
That's certainly the most probable cause, Angelo didn't mention any controller so I assumed there is one... which controller are you using (if any) Angelo?
-
There could be a controller but if it is not assigning any ID is it just as it wasn't any
-
Yes, the fact that it works with a static node id seems to point in that direction - should that not be the case, i sincerely wouldn't have a clue on where to look at.
-
Hi all,
ok this is the embarrassing bit, no the controller wasnt attached.. Im using home assistant and what I didnt realise that was that a) the controller sends the IDs and b) the controller couldnt talk to the Gateway..
BTW Why do we need a controller to assign the unique sensor IDs? I thought the Gateway would do this?
-
@Angelo-Santagata the gateways are designed to be stateless. The stateless design makes it easy to implement a gateway on low-power hardware. It also makes it easier to correctly implement and verify the gateway functionality, and to troubleshoot if there are problems. If gateways had to remember which ids had been assigned, they would no longer be stateless.
-
@mfalkvidd thanks, very impressive this mySensors stuff BTW
-
@angeloS thanks. I agree. I can't take credit for it though, most of the stuff was designed before I found the project
-
Mistery solved
-
Does anyone have suggestions on a clearer log message? One that would make it easy to understand what is happening? If we could make the log clearer, other people could understand the reason quicker, saving time and frustration.
-
@mfalkvidd In my case I think if the log had said, No Controller provided SensorID, that would have been my first clue
-
@angeloS Fully agree - a warning instead of just sending a message with an empty payload would have been easier to spot. Maybe something to propose in Github?
-
@manutremo which message are you referring to?
-
We could add a sample message, in the troubleshooting guide, when the node has no Node ID and the gateway is responding an empty message, so a Node ID must be defined in the sketch
-
@mfalkvidd Without being an specialist in the MySensors protocol, it could be something like
-
a debug message at some point in the gateway log when a node ID is requested and there is no ID to provide (no controller available),
-
something similar in the node log when an empty ID is provided form the gw
-
additionally, a warning in the log parser to check the controller when the payload is empty.
-
-
@gohan and @manutremo when does the gateway respond with an empty message? I am not able to find that in the logs posted earlier in this thread.
-
@mfalkvidd Just reviewed the gw log and you're right, the gw just doesn't answer... I guess in this case it's just not possible to separate the cases when the gateway doesn't have a controller, or is off, or communication didn't arrive, or... in all cases, the node seems to end up with a ID=255.
As I said, not familiar with the protocol...
-
@manutremo the gateway is just a dumb forwarder. When the ID request is received from the sensor node, the gateway forwards that message to it's configured interface (mqtt, ethernet, serial, ...). If the controller responds, the gateway will forward the response.
To do your suggested no 1, the gateway would have to keep track of all ID requests and set some time to know when the response from the controller is deemed too slow. That could probably be done, but would require quite a lot of work to get right and to keep compact enough to still fit the gateway in popular constrained devices like the atmega328.
The message in no 2 doesn't exist, as we have agreed on, so this is unfortunately not viable either.
Your suggestion no 3 sounds promising I think. Whenever the node prints !TSM:ID:FAIL, the log parser should spell out that the most likely cause is that no controller is present. I'm not sure how to update the log parser, but maybe @hek can chip in here? At the moment, the log parser seems unable to parse that message at all.
https://www.mysensors.org/apidocs/group__MyTransportgrp.html#details should be updated to mention the controller on the line where TSM ID FAIL is mentioned.
It would also be nice if the !TSM:ID:FAIL message was more verbose (for people who don't immediately use the log parser), but the log messages need to be kept very short to keep the binary size small.
-
A suggestion for updating the documentation is available at https://github.com/mysensors/MySensors/pull/984
Feedback is welcome.
-
Updated documentation is available here: https://ci.mysensors.org/job/MySensors/job/MySensors/job/PR-984/2/Doxygen_HTML/group__MyTransportgrp.html
-
I have been facing the same problem all day today. Actually as far as I remember my old nodes used to setup the node assignation to AUTO by default.
Was that changed during the last month ? because I was busy at that period.
-
@ahmedadelhosni auto id has been default since inception, as far as I know. It was default 2.5 years ago when I first learned about MySensors. So nothing has changed.
-
It defaults to Auto if no manual define is set, but it still needs a controller or just myscontroller application that keeps track of the IDs and assign new unused ones.
-
@mfalkvidd That's what I know but as I have said, I have been facing the same error to assign an ID for my node and it was solved when I change it to static ID... strange !
-
i was thinking about this, perhaps as part of a welcome tutorial we connect the GW to a gateway (pick one , an easy one). And whilst doing this we simply explain why the Controller is needed.. this would help newbies like me from the start..
Which controller.. well Ive been looking at openhab but settled on Homeassistant, appears more active that OH
Angelo
-
@angeloS do you mean to add information to this page? https://www.mysensors.org/build/select_gateway
The getting started guide already mentions (twice actually) that the controller is responsible for handling automatic node id assignment.
If people don't read the getting started guide, will they really read the Select gateway page?
-
I have the same situation - mysensors relay node can not find parent. I cleared eeprom and entered manually MY_NODE_ID, but it seems that gateway and node communicate, but fail to make final arrengement.
Gateway log:
22:54:33.173 [DEBUG] [orsAbstractConnection$MySensorsReader] - Message from gateway received: 0;255;3;0;9;Will not sign message for destination 102 as it does not require it
22:54:33.216 [DEBUG] [orsAbstractConnection$MySensorsReader] - Message from gateway received: 0;255;3;0;9;!TSF:MSG:SEND,0-0-102-102,s=255,c=3,t=8,pt=1,l=1,sg=0,ft=0,st=NACK:0
22:54:34.691 [DEBUG] [orsAbstractConnection$MySensorsReader] - Message from gateway received: 0;255;3;0;9;TSF:MSG:READ,102-102-255,s=255,c=3,t=7,pt=0,l=0,sg=0:
22:54:34.692 [DEBUG] [orsAbstractConnection$MySensorsReader] - Message from gateway received: 0;255;3;0;9;TSF:MSG:BC
22:54:34.694 [DEBUG] [orsAbstractConnection$MySensorsReader] - Message from gateway received: 0;255;3;0;9;TSF:MSG:FPAR REQ,ID=102
22:54:34.697 [DEBUG] [orsAbstractConnection$MySensorsReader] - Message from gateway received: 0;255;3;0;9;TSF:CKU:OK,FCTRL
22:54:34.701 [DEBUG] [orsAbstractConnection$MySensorsReader] - Message from gateway received: 0;255;3;0;9;TSF:MSG:GWL OKMySensors node log:
91296 TSM:INIT
791303 TSM:INIT:TSP OK
791305 TSM:INIT:STATID=102
791308 TSF:SID:OK,ID=102
791310 TSM:FPAR
791347 TSF:MSG:SEND,102-102-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
793354 !TSM:FPAR:NO REPLY
793356 TSM:FPAR
793393 TSF:MSG:SEND,102-102-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
795400 !TSM:FPAR:NO REPLY
795402 TSM:FPAR
795439 TSF:MSG:SEND,102-102-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
797446 !TSM:FPAR:NO REPLY
797448 TSM:FPAR
797485 TSF:MSG:SEND,102-102-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
799492 !TSM:FPAR:FAIL
799494 TSM:FAIL:CNT=7
799496 TSM:FAIL:PDT
859499 TSM:FAIL:RE-INIT
859501 TSM:INIT
859508 TSM:INIT:TSP OK
859510 TSM:INIT:STATID=102
859513 TSF:SID:OK,ID=102
859515 TSM:FPAR
859552 TSF:MSG:SEND,102-102-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
861559 !TSM:FPAR:NO REPLY
861561 TSM:FPAR
861598 TSF:MSG:SEND,102-102-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
863605 !TSM:FPAR:NO REPLY
863607 TSM:FPAR
863644 TSF:MSG:SEND,102-102-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
865651 !TSM:FPAR:NO REPLY
865653 TSM:FPAR
865690 TSF:MSG:SEND,102-102-255-255,s=255,c=3,t=7,pt=0,l=0,sg=0,ft=0,st=OK:
867697 !TSM:FPAR:FAIL
867699 TSM:FAIL:CNT=7
867701 TSM:FAIL:PDTany ideas what I have to check?
regards,
rimantas
-
There is a problem with messages sent by gateway or received by node: you either have bad power supply for radio on gateway or bad antenna or antenna alignment or too much distance; could also be interference near the node