How to send updated V_TEXT/S_INFO to controller?
-
I'm working on an alarm clock... my controller is Domotiocz. I'm using a text sensor to send the alarm time to my arduino.... the following post helped me get it all working properly -> lcd-clock-and-text-sensor-node-with-new-v_text
My clock also has buttons (like a traditional alarm clock), I've written all the code to change the alarm using the buttons.
Now I want to send the new alarm time set on the arduino to the controller (Domoticz), and have the text sensor updated. I thought this would simply be a send(....) command, but I can't get it working.
Here is a sub-set sample code of what I thought I needed to do to send the update (I'm on mysensors 2.0.*)
#define MY_DEBUG #define MY_RADIO_NRF24 #define MY_NODE_ID 9 #include <SPI.h> #include <MySensors.h> #define cID_ALARM_TIME 1 MyMessage MySensors_MSG_Alarm1_Time(cID_ALARM_TIME, V_TEXT); void setup() { Serial.begin(115200); request(cID_ALARM_TIME, V_TEXT); } void presentation() { sendSketchInfo("WakeUp Clock", "0.0.1"); present(cID_ALARM_TIME, S_INFO, "Alarm Time", true); } void loop() { int newHour = 12; int newMinute = 45; String val = String(newHour) + "." + String(newMinute); send(MySensors_MSG_Alarm1_Time.set(val), true); } void receive(const MyMessage &message) { if (message.type==V_TEXT) { if (message.sensor == cID_ALARM_TIME){ // Here is where the return value comes from Domoticz when requesting the V_TEXT } } }
When I run it I get the following console message....
35287 TSF:MSG:SEND,9-9-0-0,s=1,c=1,t=47,pt=1,l=1,sg=0,ft=0,st=OK:1 35297 TSF:MSG:READ,0-0-9,s=1,c=1,t=47,pt=1,l=1,sg=0:1 35302 TSF:MSG:ACK
and then my controller (Domoticz) updates the text sensor to the value of 1
I'm very confused, please help
-
You should not use the String class in a Arduino environment (google why).
The send function takes a char buffer. If you need to append/copy things into it, use strcpy or memcpy.
-
@hek not strncpy? http://www.cplusplus.com/reference/cstring/strncpy/
-
@mfalkvidd
Sure, if you'd like some more control over things
-
@hek otherwise you might end up in this thread https://forum.mysensors.org/topic/5212/why-ioyt-matters
Edit: well not centrally bricked but owned and part of a botnet
-
@hek
Ok, I think I understand what you are saying, but I can't figure out the implementation.This didn't work
char temp_Msg[3]; strcpy (temp_Msg, char("1")); strcpy (temp_Msg, char(".")); strcpy (temp_Msg, char("1")); send(MySensors_MSG_Alarm1_Time.set(temp_Msg), true);
or this
char temp_Msg[3]; strcpy (temp_Msg, "1"); strcpy (temp_Msg, "."); strcpy (temp_Msg, "1"); send(MySensors_MSG_Alarm1_Time.set(temp_Msg), true);
or this
char temp_Msg[3]; strcpy (temp_Msg, '1'); strcpy (temp_Msg, '.'); strcpy (temp_Msg, '1'); send(MySensors_MSG_Alarm1_Time.set(temp_Msg), true);
But this does work (message is sent and loaded into Domoticz)
send(MySensors_MSG_Alarm1_Time.set("1.1"), true);
What am I not understanding?
-
char buf[20]; strcpy (buf,"Hello "); strcat (buf,"world"); strcat (buf,"!");
-
Oh, I didn't know I needed to use both.
Well I tried a million combinations after seemingly reading everything on the subject, and I still couldn't get {int + char + int} converted into a char[] using strcpy and strcat
for some reason my brain is just not wrapping itself around the concept today... maybe I'll come back to it tomorrow.
In the mean time, I tried the following and it worked.
char buf[20]; sprintf(buf, "%d.%d", Alarm1_Time_Local[0], Alarm1_Time_Local[1]); send(MySensors_MSG_Alarm1_Time.set(buf), true);
I've read that using sprintf increases the size of your sketch... but for now I'm fine with it, since it works and I can move on to being creative and productive.. lol
Suggested Topics
-
Max. Number of Children?
Domoticz • 3 Aug 2017, 20:50 • hyla 4 Aug 2017, 11:55 -
💬 Smart(ish) LED Strip [Non-Addressable]
OpenHardware.io • 3 Nov 2016, 21:25 • openhardware.io 18 Aug 2017, 00:43 -
Double watermeter on NodeMCU
My Project • 5 Jun 2018, 13:38 • marsault6 5 Jun 2018, 13:38 -
💬 Smart Alarm Clock
OpenHardware.io • 3 Nov 2016, 19:37 • openhardware.io 3 Dec 2018, 07:51 -
One for All
Domoticz • 6 Sept 2015, 21:22 • fets 22 Sept 2015, 10:54 -
Ultrasonic Sensor+1 Relay node does not work
Domoticz • 26 May 2015, 01:59 • Suresh Mali 18 Oct 2015, 09:02 -
Node are not receiving messages from domoticz
Domoticz • 17 May 2016, 20:35 • davy39 19 May 2016, 09:35 -
💬 Raspberry Pi gateway interface
OpenHardware.io • 14 Apr 2017, 08:53 • openhardware.io 17 Jul 2022, 22:45