Move functions
-
I have merged two sketches together.
The first one was on switches and the second one was if/else if
So the first sketch was something likeSwitch case1 case2 End switch Sendcommand(); Send status();And after moving in the second sketch it became
Switch case1 case2 newcase3 newcase4 End switch Sendcommand(); Send status();So now - everytime i issue commands that satisfy newcase3 and 4 - these two functions get executed. So i wonder how i can git rid of that... Can i just move them to the end of switch1 and 2 code?
-
I have merged two sketches together.
The first one was on switches and the second one was if/else if
So the first sketch was something likeSwitch case1 case2 End switch Sendcommand(); Send status();And after moving in the second sketch it became
Switch case1 case2 newcase3 newcase4 End switch Sendcommand(); Send status();So now - everytime i issue commands that satisfy newcase3 and 4 - these two functions get executed. So i wonder how i can git rid of that... Can i just move them to the end of switch1 and 2 code?
-
I have merged two sketches together.
The first one was on switches and the second one was if/else if
So the first sketch was something likeSwitch case1 case2 End switch Sendcommand(); Send status();And after moving in the second sketch it became
Switch case1 case2 newcase3 newcase4 End switch Sendcommand(); Send status();So now - everytime i issue commands that satisfy newcase3 and 4 - these two functions get executed. So i wonder how i can git rid of that... Can i just move them to the end of switch1 and 2 code?
@moskovskiy82 I am a bit confused on your question. Can you post your whole sketch and explain more of what you want/don't want to happen?
-
Ok this is the part of sketch in question.
You can see there are two functions in the end
sendHeatpumpCommand();
sendNewStateToGateway();
They only concern HVAC and send an update to the AC. But they get called each time i change for example brightness for the RGB stripvoid receive(const MyMessage &message) { if (message.isAck()) { Serial.println("This is an ack from gateway"); //return; } Serial.print("Incoming message for: "); Serial.print(message.sensor); int val; //RGB VAR String recvData = message.data; recvData.trim(); Serial.print(", New status: "); Serial.println(recvData); switch (message.type) { case V_HVAC_SPEED: Serial.println("V_HVAC_SPEED"); if(recvData.equalsIgnoreCase("auto")) { FAN_STATE = 0; HA_FAN_STATE = "Auto"; } else if(recvData.equalsIgnoreCase("min")) { FAN_STATE = 1; HA_FAN_STATE = "Min"; } else if(recvData.equalsIgnoreCase("normal")) { FAN_STATE = 2; HA_FAN_STATE = "Normal"; } else if(recvData.equalsIgnoreCase("max")) { FAN_STATE = 3; HA_FAN_STATE = "Max"; } break; case V_HVAC_SETPOINT_COOL: Serial.println("V_HVAC_SETPOINT_COOL"); TEMP_STATE = message.getFloat(); Serial.println(TEMP_STATE); break; case V_HVAC_FLOW_STATE: Serial.println("V_HVAC_FLOW_STATE"); if (recvData.equalsIgnoreCase("coolon")) { POWER_STATE = 1; MODE_STATE = MODE_COOL; HA_MODE_STATE = "CoolOn"; } else if (recvData.equalsIgnoreCase("heaton")) { POWER_STATE = 1; MODE_STATE = MODE_HEAT; HA_MODE_STATE = "HeatOn"; } else if (recvData.equalsIgnoreCase("autochangeover")) { POWER_STATE = 1; MODE_STATE = MODE_AUTO; HA_MODE_STATE = "AutoChangeOver"; } else if (recvData.equalsIgnoreCase("off")) { POWER_STATE = 0; HA_MODE_STATE = "Off"; } initialValueSent = true; break; case V_RGB: { Serial.println( "V_RGB command: " ); Serial.println(message.data); long number = (long) strtol( message.data, NULL, 16); // Save old value strcpy(rgbstring, message.data); // Split it up into r, g, b values red = number >> 16; green = number >> 8 & 0xFF; blue = number & 0xFF; send_status(); set_hw_status(); } break; case V_LIGHT: { Serial.println( "V_LIGHT command: " ); Serial.println(message.data); val = atoi(message.data); if (val == 0 or val == 1) { on_off_status = val; send_status(); set_hw_status(); } } break; case V_DIMMER: { Serial.print( "V_DIMMER command: " ); Serial.println(message.data); val = atoi(message.data); if (val >= 0 and val <=100) { dimmerlevel = val; send_status(); set_hw_status(); } } break; case V_VAR1: { Serial.print( "V_VAR1 command: " ); Serial.println(message.data); val = atoi(message.data); if (val >= 0 and val <= 2000) { fadespeed = val; } } break; } sendHeatpumpCommand(); sendNewStateToGateway(); } -
Ok this is the part of sketch in question.
You can see there are two functions in the end
sendHeatpumpCommand();
sendNewStateToGateway();
They only concern HVAC and send an update to the AC. But they get called each time i change for example brightness for the RGB stripvoid receive(const MyMessage &message) { if (message.isAck()) { Serial.println("This is an ack from gateway"); //return; } Serial.print("Incoming message for: "); Serial.print(message.sensor); int val; //RGB VAR String recvData = message.data; recvData.trim(); Serial.print(", New status: "); Serial.println(recvData); switch (message.type) { case V_HVAC_SPEED: Serial.println("V_HVAC_SPEED"); if(recvData.equalsIgnoreCase("auto")) { FAN_STATE = 0; HA_FAN_STATE = "Auto"; } else if(recvData.equalsIgnoreCase("min")) { FAN_STATE = 1; HA_FAN_STATE = "Min"; } else if(recvData.equalsIgnoreCase("normal")) { FAN_STATE = 2; HA_FAN_STATE = "Normal"; } else if(recvData.equalsIgnoreCase("max")) { FAN_STATE = 3; HA_FAN_STATE = "Max"; } break; case V_HVAC_SETPOINT_COOL: Serial.println("V_HVAC_SETPOINT_COOL"); TEMP_STATE = message.getFloat(); Serial.println(TEMP_STATE); break; case V_HVAC_FLOW_STATE: Serial.println("V_HVAC_FLOW_STATE"); if (recvData.equalsIgnoreCase("coolon")) { POWER_STATE = 1; MODE_STATE = MODE_COOL; HA_MODE_STATE = "CoolOn"; } else if (recvData.equalsIgnoreCase("heaton")) { POWER_STATE = 1; MODE_STATE = MODE_HEAT; HA_MODE_STATE = "HeatOn"; } else if (recvData.equalsIgnoreCase("autochangeover")) { POWER_STATE = 1; MODE_STATE = MODE_AUTO; HA_MODE_STATE = "AutoChangeOver"; } else if (recvData.equalsIgnoreCase("off")) { POWER_STATE = 0; HA_MODE_STATE = "Off"; } initialValueSent = true; break; case V_RGB: { Serial.println( "V_RGB command: " ); Serial.println(message.data); long number = (long) strtol( message.data, NULL, 16); // Save old value strcpy(rgbstring, message.data); // Split it up into r, g, b values red = number >> 16; green = number >> 8 & 0xFF; blue = number & 0xFF; send_status(); set_hw_status(); } break; case V_LIGHT: { Serial.println( "V_LIGHT command: " ); Serial.println(message.data); val = atoi(message.data); if (val == 0 or val == 1) { on_off_status = val; send_status(); set_hw_status(); } } break; case V_DIMMER: { Serial.print( "V_DIMMER command: " ); Serial.println(message.data); val = atoi(message.data); if (val >= 0 and val <=100) { dimmerlevel = val; send_status(); set_hw_status(); } } break; case V_VAR1: { Serial.print( "V_VAR1 command: " ); Serial.println(message.data); val = atoi(message.data); if (val >= 0 and val <= 2000) { fadespeed = val; } } break; } sendHeatpumpCommand(); sendNewStateToGateway(); } -
Thank you. Will do so and report back
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