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:TSL
What the heck am I doing wrong?
-
@r-nox you are setting the message type to V_PERCENTAGE. You probably want to use V_TEXT.
-
@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?
-
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:4
Payload 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
-
@frits Thank you for catching that. I was just reworking and now it's sending proper values.