•  
  •  
  •  
  •  
  •  
  •  

 

 

 

 

# Topic
 
# Payload
 

 

{
  "value": 34.5,
  "unit": "C"
}

 

 

 

#include <PubSubClient.h>
#include <WiFi.h>

const char* ssid = "YOUR_WIFI_SSID";
const char* wifi_pass = "YOUR_WIFI_PASSWORD";
const char* mqtt_server = "YOUR_BROKER_HOST";
const char* mqtt_user = "YOUR_USERNAME";
const char* mqtt_pass = "YOUR_API_KEY";
const char* hive_key = "YOUR_HIVE_KEY";

WiFiClient espClient;
PubSubClient client(espClient);

void publishData(float temp, float humid) {
  String tempTopic = "etwan/hive/" + String(hive_key) + "/temperature";
  String humTopic  = "etwan/hive/" + String(hive_key) + "/humidity";
  client.publish(tempTopic.c_str(), String(temp).c_str());
  client.publish(humTopic.c_str(),  String(humid).c_str());
}

void setup() {
  WiFi.begin(ssid, wifi_pass);
  while (WiFi.status() != WL_CONNECTED) delay(500);
  client.setServer(mqtt_server, 1883);
}

void loop() {
  if (!client.connected()) {
    client.connect("etwan-diy-gateway", mqtt_user, mqtt_pass);
  }
  client.loop();
  // call publishData(temperature, humidity) on your interval
}

 

 

 

import paho.mqtt.client as mqtt

BROKER_HOST = "YOUR_BROKER_HOST"
USERNAME    = "YOUR_USERNAME"
API_KEY     = "YOUR_API_KEY"
HIVE_KEY    = "YOUR_HIVE_KEY"

client = mqtt.Client(client_id="etwan-diy-gateway")
client.username_pw_set(USERNAME, API_KEY)
client.connect(BROKER_HOST, 1883, keepalive=60)

def publish_reading(metric: str, value: float) -> None:
    topic = f"etwan/hive/{HIVE_KEY}/{metric}"
    client.publish(topic, str(value))

publish_reading("temperature", 34.5)
publish_reading("humidity",    65.2)
publish_reading("weight",      42.1)

client.disconnect()

 

 

 

  •  
  •  
  •  
  •  
  •  
  •