Message Payload type
-
I'm sending a message from node to node but when the message gets there it's the wrong type.
I need to send as P_STRING but it's showing as P_INT16This is my send
void sendToReceiver(boolean reed_tripped) { char percent; Serial.print(" Light Status "); Serial.println(reed_tripped); switch (reed_tripped) { case 0: percent = "0"; send(msgDimmer_to_5.setDestination(5).setSensor(0).set(percent).setType(V_PERCENTAGE)); //send(msgDimmer_to_5.setDestination(5).setSensor(0).set(percent)); //send(msgDimmer_to_5.set(percent, 0)); break; case 1: percent = "30"; send(msgDimmer_to_5.setDestination(5).setSensor(0).set(percent).setType(V_PERCENTAGE)); //send(msgDimmer_to_5.setDestination(5).setSensor(0).set(percent)); //send(msgDimmer_to_5.set(percent, 0)); break; } }and the message
2836 !TSF:MSG:SEND,8-8-5-5,s=0,c=1,t=3,pt=2,l=2,sg=0,ft=0,st=NACK:4 2842 !TSF:RTE:N2N FAIL 2846 TSF:MSG:SEND,8-8-0-5,s=0,c=1,t=3,pt=2,l=2,sg=0,ft=0,st=OK:4 2854 MCO:SLP:MS=360000,SMS=0,I1=0,M1=1,I2=255,M2=255 2861 TSF:TDI:TSLWhat the heck am I doing wrong?
-
I'm sending a message from node to node but when the message gets there it's the wrong type.
I need to send as P_STRING but it's showing as P_INT16This is my send
void sendToReceiver(boolean reed_tripped) { char percent; Serial.print(" Light Status "); Serial.println(reed_tripped); switch (reed_tripped) { case 0: percent = "0"; send(msgDimmer_to_5.setDestination(5).setSensor(0).set(percent).setType(V_PERCENTAGE)); //send(msgDimmer_to_5.setDestination(5).setSensor(0).set(percent)); //send(msgDimmer_to_5.set(percent, 0)); break; case 1: percent = "30"; send(msgDimmer_to_5.setDestination(5).setSensor(0).set(percent).setType(V_PERCENTAGE)); //send(msgDimmer_to_5.setDestination(5).setSensor(0).set(percent)); //send(msgDimmer_to_5.set(percent, 0)); break; } }and the message
2836 !TSF:MSG:SEND,8-8-5-5,s=0,c=1,t=3,pt=2,l=2,sg=0,ft=0,st=NACK:4 2842 !TSF:RTE:N2N FAIL 2846 TSF:MSG:SEND,8-8-0-5,s=0,c=1,t=3,pt=2,l=2,sg=0,ft=0,st=OK:4 2854 MCO:SLP:MS=360000,SMS=0,I1=0,M1=1,I2=255,M2=255 2861 TSF:TDI:TSLWhat the heck am I doing wrong?
-
@r-nox said in Message Payload type:
char percent;
Your data is of type char. Make it char *. Something like
char buf[MAX_PAYLOAD_SIZE+1]; strcpy ( buf, "30" ); send(msgDimmer_to_5.setDestination(5).setSensor(0).set(buf).setType(V_TEXT));I tried this. Here's the results. They are close but payload looks corrupted.
char buf[MAX_PAYLOAD_SIZE+1]; strcpy ( buf, percent ); void sendToReceiver(boolean reed_tripped) { char percent; Serial.print(" Light Status "); Serial.println(reed_tripped); switch (reed_tripped) { case 0: percent = "0"; Serial.print(" Select case is "); Serial.println("0"); char buf[MAX_PAYLOAD_SIZE+1]; strcpy ( buf, percent ); send(msgDimmer_to_5.setDestination(5).setSensor(0).set(buf).setType(V_TEXT)); break; case 1: percent = "30"; Serial.print(" Select case is "); Serial.println("30"); char buf2[MAX_PAYLOAD_SIZE+1]; strcpy ( buf, percent ); send(msgDimmer_to_5.setDestination(5).setSensor(0).set(buf2).setType(V_TEXT)); break; }My results have had their molecules mixed during transport. I expected "30" but received :⸮
4870 TSF:MSG:SEND,8-8-0-5,s=0,c=1,t=47,pt=0,l=3,sg=0,ft=0,st=OK:⸮Any further advice?
-
@r-nox you are setting the message type to V_PERCENTAGE. You probably want to use V_TEXT.
Sending as V_TEXT did not have the effect needed.
void sendToReceiver(boolean reed_tripped) { char percent; Serial.print(" Light Status "); Serial.println(reed_tripped); switch (reed_tripped) { case 0: percent = "0"; Serial.print(" Select case is "); Serial.println("0"); send(msgDimmer_to_5.setDestination(5).setSensor(0).set(percent).setType(V_TEXT)); //send(msgDimmer_to_5.setDestination(5).setSensor(0).set(percent)); //send(msgDimmer_to_5.set(percent, 0)); break; case 1: percent = "30"; Serial.print(" Select case is "); Serial.println("30"); send(msgDimmer_to_5.setDestination(5).setSensor(0).set(percent).setType(V_TEXT)); //send(msgDimmer_to_5.setDestination(5).setSensor(0).set(percent)); //send(msgDimmer_to_5.set(percent, 0)); break; } }and the results
3201 TSF:MSG:SEND,8-8-0-5,s=0,c=1,t=47,pt=2,l=2,sg=0,ft=0,st=OK:4Payload still shows as P_INT16 and payload is 4 but in fact should be 30
This should be simple. I don't understand what's going wrong.
-
@r-nox said in Message Payload type:
char buf2[MAX_PAYLOAD_SIZE+1];
strcpy ( buf, percent );
send(msgDimmer_to_5.setDestination(5).setSensor(0).set(buf2).setType(V_TEXT));You copied to buf, but sent buf2 ;-)
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