Im letzten Kapitel haben Sie gelernt, Daten an den Broker zu verschicken.
Im nächsten Schritt soll das IoT-Device Daten empfangen können, um aus der Ferne gesteuert werden zu können.
Dazu muss eine „Callback“-Funktion ergänzt werden. Diese Callback-Funktion wird automatisch vom System aufgerufen, sobald ein Broker einen Steuerbefehl gibt. Damit des IoT-Device die Befehle empfangen kann, muss sich das Device bei dem Broker für die Benachrichtigung anmelden (subscribe).
[...]
void setupMQTT() {
mqttClient.setServer(mqttServer, 1883);
mqttClient.setCallback(mqttCallback);
}
void mqttCallback(char* topic, byte* payload, unsigned int length) {
Serial.print("Command is: ");
Serial.println(topic);
int p = (char)payload[0] - '0';
if(("CRBK/"+HOST_NAME+"/ActivateFan")==String(topic)) {
activateFan = p!=0;
}
Serial.println();
} //end callback
void connectMQTT() {
// Loop until we're reconnected
while (!mqttClient.connected())
{
Serial.print("Try to connect MQTT ...");
// random/unique mqttClient ID
String mqttClientId = String("CRBK_")+String(HOST_NAME);
// for authentification use username and password like: mqttClient.connect(mqttClientId,userName,passWord))
if (mqttClient.connect(mqttClientId.c_str()))
{
Serial.println("connected");
//once connected to MQTT broker, subscribe command
mqttClient.subscribe(("CRBK/"+HOST_NAME+"/ActivateFan").c_str());
} else {
Serial.print("failed, errorcode=");
Serial.print(mqttClient.state());
Serial.println(" try again in 5 seconds");
delay(5000);
}
}
} //end connectMQTT()
[...]
Auftrag 1
Übernehmen Sie die Änderungen zur Reaktion auf externe Steuerbefehle. Nutzen Sie eine MQTT App, um den Lüfter zu steuern.
Auftrag 2
Ergänzen Sie das Programm, um auch die Heizung über die Variable „ActivateHeating“ steuern zu können.
