I'm trying to get multiple feed values inside the Arduino loop function like it's shown below by calling the SerialPrint (defined at the bottom of the code), which contains some 'Serial.print()' commands.
But I still not getting in the Serial Monitor the values of all feeds, only the 'relay' feed is being updated after the Setup function:
Somebody can help me?⸮⸮......
Adafruit IO connected.
Updating relay state..
Setup completed!
Received Command <- ON
Activating Relay
11511
Relay Status: ON
Schedule hour: AM
Top Shelf Time: seconds
Middle Shelf Time: seconds
Bottom Shelf Time: seconds
Code: Select all
// LIBRARIES
#include "config.h"
// DEFINITIONS
#define UpdatingTime 10000
#define TurnON LOW
#define TurnOFF HIGH
AdafruitIO_Feed *relay = io.feed( "relay");
AdafruitIO_Feed *timer = io.feed( "timer");
AdafruitIO_Feed *ScheduleTime = io.feed("ScheduleTime");
AdafruitIO_Feed *TopShelf = io.feed( "TopShelf");
AdafruitIO_Feed *MiddleShelf = io.feed( "MiddleShelf");
AdafruitIO_Feed *BottomShelf = io.feed( "BottomShelf");
// FUNCTIONS DECLARATION
void MQTT_setup();
void returnRelay (AdafruitIO_Data *data);
void returnScheduleTime (AdafruitIO_Data *data);
void returnTopShelf (AdafruitIO_Data *data);
void returnMiddleShelf (AdafruitIO_Data *data);
void returnBottomShelf (AdafruitIO_Data *data);
// VARIABLES DECLARATION
unsigned long TimeController = 0;
String Relay_State;
String Schedule_Time;
String Top_Shelf;
String Middle_Shelf;
String Bottom_Shelf;
void setup() {
Serial.begin(9600);
while (! Serial);
Serial.println("Connecting with Adafruit IO...");
io.connect();
relay->onMessage(returnRelay);
ScheduleTime->onMessage(returnScheduleTime);
TopShelf->onMessage(returnTopShelf);
MiddleShelf->onMessage(returnMiddleShelf);
BottomShelf->onMessage(returnBottomShelf);
while (io.status() < AIO_CONNECTED) {
Serial.print(".");
delay(500);
}
Serial.println();
Serial.println(io.statusText());
Serial.println("Updating relay state..");
relay->get();
ScheduleTime->get();
TopShelf->get();
MiddleShelf->get();
BottomShelf->get();
Serial.println("Setup completed!");
}
void loop() {
io.run();
if (millis() > TimeController + UpdatingTime) {
TimeController = millis();
timer->save(TimeController);
Serial.println(TimeController);
SerialPrint();
}
}
void returnRelay(AdafruitIO_Data *data) {
Serial.print("Received Command <- ");
Serial.println(data->value());
Relay_State = data->value();
if (Relay_State == "ON") {
Serial.println("Activating Relay");
} else if (Relay_State == "OFF") {
Serial.println("Deactivating Relay");
}
Serial.println(" ");
}
void returnScheduleTime(AdafruitIO_Data *data) {
Serial.print("Received Command <- ");
Serial.println(data->value());
Schedule_Time = data->value();
Serial.print("Schedule hour: "); Serial.print(Schedule_Time); Serial.println(" AM"); Serial.println(" ");
}
void returnTopShelf(AdafruitIO_Data *data) {
Serial.print("Received Command <- ");
Serial.println(data->value());
Top_Shelf = data->value();
Serial.print("Top Shelf Time: "); Serial.print(Top_Shelf); Serial.println(" seconds"); Serial.println(" ");
}
void returnMiddleShelf(AdafruitIO_Data *data) {
Serial.print("Received Command <- ");
Serial.println(data->value());
Middle_Shelf = data->value();
Serial.print("Middle Shelf Time: "); Serial.print(Middle_Shelf); Serial.println(" seconds"); Serial.println(" ");
}
void returnBottomShelf(AdafruitIO_Data *data) {
Serial.print("Received Command <- ");
Serial.println(data->value());
Bottom_Shelf = data->value();
Serial.print("Bottom Shelf Time: "); Serial.print(Bottom_Shelf); Serial.println(" seconds"); Serial.println(" ");
}
void SerialPrint(){
Serial.print("Relay Status: "); Serial.println(Relay_State);
Serial.print("Schedule hour: "); Serial.print(Schedule_Time); Serial.println(" AM");
Serial.print("Top Shelf Time: "); Serial.print(Top_Shelf); Serial.println(" seconds");
Serial.print("Middle Shelf Time: "); Serial.print(Middle_Shelf); Serial.println(" seconds");
Serial.print("Bottom Shelf Time: "); Serial.print(Bottom_Shelf); Serial.println(" seconds");
Serial.println(" ");
}