Steuerbefehle empfangen

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.

Schreibe einen Kommentar