Array in send message command
-
Hi there,
I am currently working on a node with openEnergy Monitor.
I'm measuring a total of 6 SCT013 current transformer and wondering how in the mySensor code to include everything in a for loop.
For example, to send the message, I hope to do:MyMessage msgInA0(CHILD_ID_V_A0, V_WATT); MyMessage msgInA1(CHILD_ID_V_A1, V_WATT); MyMessage msgInA2(CHILD_ID_V_A2, V_WATT); MyMessage msgInA3(CHILD_ID_V_A3, V_WATT); MyMessage msgInA4(CHILD_ID_V_A4, V_WATT); MyMessage msgInA5(CHILD_ID_V_A5, V_WATT); #define NSENSORS 6 [...] //Read values and send to gateway for (int i=0; i<NSENSORS; i++) { watt[i] = (emon[i].calcIrms(1480))*230*0.9; send(msgInA[i].set(watt[i], 1)); //Error: not working }But it doesn't work.
Do you have a trick to avoid writing the same code X times?
Thank you, -
Hi there,
I am currently working on a node with openEnergy Monitor.
I'm measuring a total of 6 SCT013 current transformer and wondering how in the mySensor code to include everything in a for loop.
For example, to send the message, I hope to do:MyMessage msgInA0(CHILD_ID_V_A0, V_WATT); MyMessage msgInA1(CHILD_ID_V_A1, V_WATT); MyMessage msgInA2(CHILD_ID_V_A2, V_WATT); MyMessage msgInA3(CHILD_ID_V_A3, V_WATT); MyMessage msgInA4(CHILD_ID_V_A4, V_WATT); MyMessage msgInA5(CHILD_ID_V_A5, V_WATT); #define NSENSORS 6 [...] //Read values and send to gateway for (int i=0; i<NSENSORS; i++) { watt[i] = (emon[i].calcIrms(1480))*230*0.9; send(msgInA[i].set(watt[i], 1)); //Error: not working }But it doesn't work.
Do you have a trick to avoid writing the same code X times?
Thank you,@yourry for an example of array usage see Temperature Sensors build page.
MyMessage msgInA(0, V_WATT); // only one message required #define NSENSORS 6 //Read values and send to gateway for (int i=0; i<NSENSORS; i++) { watt[i] = (emon[i].calcIrms(1480))*230*0.9; send(msgInA.setSensor(i).set(watt[i], 1)); //setSensor(i) is the magic } -
Great, thanks for your reply and help.
I was able to do what I wanted, I give you some code snippets to make several messages via a for loop,
I'm not a code proffesional but this works:// Initialize messages MyMessage msgInA(0,V_CURRENT); MyMessage msgWhA(0,V_WATT); #define NSENSORS 6 //used current sensors void setup() { //initialize energy monitor CurrentSensor for (int i=0; i<NSENSORS; i++) { wh[i] = { 0.0 }; //initialize wh lwhtime[i] = {0}; //initialize time present(i, S_MULTIMETER); } for (int i=0; i<NSENSORS; i++) { present(i, S_POWER); } } void loop() { for (int i=0; i<NSENSORS; i++) { send(msgInA.setSensor(i).set(Irms[i], 1)); send(msgWhA.setSensor(i).set(wh[i], 1)); } }Thanks
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