# 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()
- •
- •
- •
- •
- •
- •