Differences

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

Link to this comparison view

iothings:laboratoare:2025:lab3_code2 [2025/10/11 12:37]
dan.tudose created
— (current)
Line 1: Line 1:
-<code C main.cpp>​ 
-#include <​Arduino.h>​ 
-#include <​WiFi.h>​ 
-#include <​MQTT.h> ​             // 256dpi MQTT library 
-#include <​ArduinoJson.h>​ 
-#include <​Adafruit_NeoPixel.h>​ 
  
-////////////////​ EDIT THESE ////////////////​ 
-const char* WIFI_SSID ​    = "​YOUR_SSID";​ 
-const char* WIFI_PASSWORD = "​YOUR_PASSWORD";​ 
-const char* MQTT_HOST ​    = "​test.mosquitto.org"; ​  // or your lab broker 
-const uint16_t MQTT_PORT ​ = 1883; 
-const char* BASE_TOPIC ​   = "​iot/​studentname"; ​       // change per student 
-////////////////////////////////////////////​ 
- 
-#define NEOPIXEL_PIN 3 
-Adafruit_NeoPixel pixel(1, NEOPIXEL_PIN,​ NEO_GRB + NEO_KHZ800);​ 
- 
-WiFiClient net; 
-MQTTClient mqtt(1024); ​        // 1KB message buffer 
- 
-// ---------- Wi-Fi ---------- 
-void ensureWiFi() { 
-  if (WiFi.status() == WL_CONNECTED) return; 
-  WiFi.mode(WIFI_STA);​ 
-  WiFi.begin(WIFI_SSID,​ WIFI_PASSWORD);​ 
-  Serial.print("​WiFi connecting"​);​ 
-  while (WiFi.status() != WL_CONNECTED) { 
-    delay(400); 
-    Serial.print("​."​);​ 
-  } 
-  Serial.printf("​\nIP:​ %s\n", WiFi.localIP().toString().c_str());​ 
-} 
- 
-// ---------- MQTT message handler (256dpi signature) ---------- 
-void onMessage(String &topic, String &​payload) { 
-  Serial.printf("​MQTT msg on %s: %s\n", topic.c_str(),​ payload.c_str());​ 
- 
-  // Create a dynamic document on the stack with a defined capacity 
-  JsonDocument doc;  ​ 
-  DeserializationError err = deserializeJson(doc,​ payload); 
-  if (err) { 
-    Serial.printf("​JSON parse error: %s\n", err.c_str());​ 
-    return; 
-  } 
- 
-  int r = doc["​r"​] | 0; 
-  int g = doc["​g"​] | 0; 
-  int b = doc["​b"​] | 0; 
-  int brightness = doc["​brightness"​] | 50; 
- 
-  pixel.setPixelColor(0,​ pixel.Color(r,​ g, b)); 
-  pixel.setBrightness(brightness);​ 
-  pixel.show();​ 
- 
-  // Acknowledge 
-  String ackTopic = String(BASE_TOPIC) + "/​led/​ack";​ 
-  JsonDocument ack;  // also replace StaticJsonDocument here 
-  ack["​ok"​] = true; 
-  ack["​r"​] = r; 
-  ack["​g"​] = g; 
-  ack["​b"​] = b; 
-  ack["​brightness"​] = brightness; 
- 
-  char buf[96]; 
-  size_t n = serializeJson(ack,​ buf, sizeof(buf));​ 
-  mqtt.publish(ackTopic,​ String(buf, n)); 
-} 
- 
- 
-// ---------- MQTT connect / subscribe ---------- 
-void ensureMQTT() { 
-  if (mqtt.connected()) return; 
- 
-  String clientId = "​sparrow-c6-led-"​ + String((uint32_t)ESP.getEfuseMac(),​ HEX); 
- 
-  Serial.println("​MQTT connecting..."​);​ 
-  while (!mqtt.connect(clientId.c_str())) { 
-    Serial.print("​."​);​ 
-    delay(1000);​ 
-  } 
-  Serial.println("​\nMQTT connected"​);​ 
- 
-  String sub = String(BASE_TOPIC) + "/​led";​ 
-  mqtt.subscribe(sub);​ 
-  Serial.printf("​Subscribed:​ %s\n", sub.c_str());​ 
-} 
- 
-void setup() { 
-  Serial.begin(115200);​ 
-  delay(200); 
- 
-  pixel.begin();​ 
-  pixel.clear();​ 
-  pixel.show();​ 
- 
-  // Broker + transport setup and callback 
-  mqtt.begin(MQTT_HOST,​ MQTT_PORT, net); 
-  mqtt.onMessage(onMessage);​ 
-} 
- 
-void loop() { 
-  ensureWiFi();​ 
-  ensureMQTT();​ 
- 
-  // Process incoming packets and keepalive 
-  mqtt.loop();​ 
-  delay(10); 
-} 
- 
-</​code>​ 
iothings/laboratoare/2025/lab3_code2.1760175427.txt.gz · Last modified: 2025/10/11 12:37 by dan.tudose
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0