User Tools

Site Tools


latinet:unicaes:workshops:communication-23

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
latinet:unicaes:workshops:communication-23 [2023/08/30 20:35] jan.sonntaglatinet:unicaes:workshops:communication-23 [2023/10/22 22:19] – [3. Our first MQTT Publish] rolf.becker
Line 84: Line 84:
 ===== 3. Our first MQTT Publish ===== ===== 3. Our first MQTT Publish =====
 Stepping ahead, you'll have the chance to implement your first MQTT publish from the ESP8266. While the following example provides a static demonstration, we encourage you to take it a step further by incorporating one of the sensors available to you. Stepping ahead, you'll have the chance to implement your first MQTT publish from the ESP8266. While the following example provides a static demonstration, we encourage you to take it a step further by incorporating one of the sensors available to you.
 +
 +PubSubClient Library: [[https://github.com/knolleary/pubsubclient|PubSubClient by knolleary]]
 +
 +<file c++ mqtt-publish.ino>
 +/*
 + Basic ESP8266 MQTT example
 + This sketch demonstrates the capabilities of the pubsub library in combination
 + with the ESP8266 board/library.
 + It connects to an MQTT server then:
 +  - publishes "hello world" to the topic defined as outTopic every two seconds
 + It will reconnect to the server if the connection is lost using a blocking
 + reconnect function. See the 'mqtt_reconnect_nonblocking' example for how to
 + achieve the same result without blocking the main loop.
 +*/
 +
 +#include <ESP8266WiFi.h>
 +#include <PubSubClient.h>
 +
 +#define MSG_BUFFER_SIZE (50)
 +
 +// Update these with values suitable for your network and mqtt broker
 +
 +const char* ssid = "";
 +const char* password = "";
 +const char* mqtt_server = "broker.hivemq.com";
 +
 +const char* outTopic = "unicaes/workshop/2023/jan";
 +const char* inTopic = "unicaes/workshop/2023/to-jan";
 +
 +// Set up of some needed variables
 +
 +WiFiClient espClient;
 +PubSubClient client(espClient);
 +unsigned long lastMsg = 0;
 +char msg[MSG_BUFFER_SIZE];
 +int value = 0;
 +
 +void setup_wifi() {
 +
 +  delay(10);
 +  // We start by connecting to a WiFi network
 +  Serial.println();
 +  Serial.print("Connecting to ");
 +  Serial.println(ssid);
 +
 +  WiFi.mode(WIFI_STA);
 +  WiFi.begin(ssid, password);
 +
 +  while (WiFi.status() != WL_CONNECTED) {
 +    delay(500);
 +    Serial.print(".");
 +  }
 +
 +  randomSeed(micros());
 +
 +  Serial.println("");
 +  Serial.println("WiFi connected");
 +  Serial.println("IP address: ");
 +  Serial.println(WiFi.localIP());
 +}
 +
 +void reconnect() {
 +  // Loop until we're reconnected
 +  while (!client.connected()) {
 +    Serial.print("Attempting MQTT connection...");
 +    // Create a random client ID
 +    String clientId = "ESP8266Client-";
 +    clientId += String(random(0xffff), HEX);
 +    // Attempt to connect
 +    if (client.connect(clientId.c_str())) {
 +      Serial.println("connected");
 +      // Once connected, publish an announcement...
 +      client.publish(outTopic, "hello world");
 +    } else {
 +      Serial.print("failed, rc=");
 +      Serial.print(client.state());
 +      Serial.println(" try again in 5 seconds");
 +      // Wait 5 seconds before retrying
 +      delay(5000);
 +    }
 +  }
 +}
 +
 +void setup() {
 +  pinMode(BUILTIN_LED, OUTPUT);     // Initialize the BUILTIN_LED pin as an output
 +  Serial.begin(115200);
 +  setup_wifi();
 +  client.setServer(mqtt_server, 1883);
 +}
 +
 +void loop() {
 +
 +  if (!client.connected()) {
 +    reconnect();
 +  }
 +  client.loop();
 +
 +  unsigned long now = millis();
 +  if (now - lastMsg > 2000) {
 +    lastMsg = now;
 +    ++value;
 +    snprintf (msg, MSG_BUFFER_SIZE, "hello world #%ld", value);
 +    Serial.print("Publish message: ");
 +    Serial.println(msg);
 +    client.publish(outTopic, msg);
 +  }
 +}
 +</file>
  
 ===== 4. Subscribe ===== ===== 4. Subscribe =====
Line 109: Line 217:
 // Update these with values suitable for your network and mqtt broker // Update these with values suitable for your network and mqtt broker
  
-const char* ssid = "iotlab"; +const char* ssid = ""; 
-const char* password = "iotlab18";+const char* password = "";
 const char* mqtt_server = "broker.hivemq.com"; const char* mqtt_server = "broker.hivemq.com";
  
latinet/unicaes/workshops/communication-23.txt · Last modified: 2024/03/23 19:02 by 47.128.112.114