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.