send status of all windows
This commit is contained in:
+2
-28
@@ -62,7 +62,7 @@ bool MyMqttClient::ensureConnected()
|
||||
{
|
||||
Serial.println("[MQTT] Connected");
|
||||
mqttClient.publish(MQTT_TOPIC_STATUS,
|
||||
"{\"event\":\"hello\",\"client\":\"" MQTT_CLIENT_ID VERSION_STR "\"}");
|
||||
"{\"e\":\"hello\",\"client\":\"" MQTT_CLIENT_ID VERSION_STR "\"}");
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -72,32 +72,6 @@ bool MyMqttClient::ensureConnected()
|
||||
return ok;
|
||||
}
|
||||
|
||||
/**
|
||||
* Publishes a window open/close event to MQTT_TOPIC_FENSTER.
|
||||
* Payload: {"fenster":"<name>","event":"open"|"close"}
|
||||
*/
|
||||
void MyMqttClient::publishFensterEvent(const char* name, bool bOpen)
|
||||
{
|
||||
if (!ensureConnected())
|
||||
{
|
||||
Serial.println("[MQTT] Cannot publish – not connected");
|
||||
return;
|
||||
}
|
||||
|
||||
char payload[64];
|
||||
snprintf(payload, sizeof(payload),
|
||||
"{\"fenster\":\"%s\",\"event\":\"%s\"}", name, bOpen ? "open" : "close");
|
||||
|
||||
if (mqttClient.publish(MQTT_TOPIC_FENSTER, payload))
|
||||
{
|
||||
Serial.printf("[MQTT] Published: %s\n", payload);
|
||||
}
|
||||
else
|
||||
{
|
||||
Serial.println("[MQTT] Publish failed");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Publishes an arbitrary status payload to MQTT_TOPIC_STATUS.
|
||||
*/
|
||||
@@ -140,7 +114,7 @@ void MyMqttClient::onLoop()
|
||||
{
|
||||
char payload[48];
|
||||
snprintf(payload, sizeof(payload),
|
||||
"{\"rssi\":%d, \"variant\": \"" PROJECT_VARIANT "\" }", (int)WiFi.RSSI());
|
||||
"{\"rssi\":%d }", (int)WiFi.RSSI());
|
||||
mqttClient.publish(MQTT_TOPIC_RSSI, payload);
|
||||
}
|
||||
}
|
||||
|
||||
+2
-4
@@ -16,9 +16,8 @@
|
||||
#define MQTT_BROKER_IP "flokke.de"
|
||||
#define MQTT_BROKER_PORT 1883
|
||||
#define MQTT_CLIENT_ID "Fensterpiepser" PROJECT_VARIANT
|
||||
#define MQTT_TOPIC_FENSTER "fenster/events"
|
||||
#define MQTT_TOPIC_STATUS "fenster/status"
|
||||
#define MQTT_TOPIC_RSSI "fenster/rssi"
|
||||
#define MQTT_TOPIC_STATUS "fenster/status/" PROJECT_VARIANT
|
||||
#define MQTT_TOPIC_RSSI "fenster/rssi/" PROJECT_VARIANT
|
||||
// Optional: set to "" if no authentication required
|
||||
#define MQTT_USER "lightcontrol"
|
||||
#define MQTT_PASSWORD "mR9o3OYpAzUZvS"
|
||||
@@ -38,7 +37,6 @@ private:
|
||||
public:
|
||||
MyMqttClient();
|
||||
|
||||
void publishFensterEvent(const char* name, bool bOpen);
|
||||
void onLoop();
|
||||
void publishStatus(const char* payload);
|
||||
};
|
||||
|
||||
+4
-4
@@ -11,13 +11,13 @@
|
||||
#include "main.h"
|
||||
|
||||
#if VERSION_DG_ONLY
|
||||
#define PROJECT_VARIANT "_DG"
|
||||
#define PROJECT_VARIANT "DG"
|
||||
#else
|
||||
#define PROJECT_VARIANT "_EG"
|
||||
#define PROJECT_VARIANT "EG"
|
||||
#endif
|
||||
|
||||
#define PROJECT_NAME "FENSTER_PIEPSER_NODEMCU_32_S" PROJECT_VARIANT
|
||||
#define VERSION_STR "v2.0.1"
|
||||
#define PROJECT_NAME "FENSTER_PIEPSER_NODEMCU_32_S_" PROJECT_VARIANT
|
||||
#define VERSION_STR "_v2.0.3"
|
||||
|
||||
|
||||
#endif /* VERSION_H_ */
|
||||
|
||||
@@ -147,6 +147,7 @@ static uint32_t tBeepingStartWithoutWindowClose = 0u;
|
||||
|
||||
static void handleManualInputRequest();
|
||||
static void updateWaittime(void);
|
||||
static void publishAllFensterStatus(const char *event);
|
||||
static void xcpLoop(void);
|
||||
#ifdef TEST_WAITTIME
|
||||
static void testWaitTime(void);
|
||||
@@ -461,8 +462,7 @@ static void handleKeyReceived(void)
|
||||
bUpdateDisp = true;
|
||||
dataSender.requestSend();
|
||||
bRequestShortBeep = true;
|
||||
myMqttClient.publishFensterEvent(alleFenster[i]->name,
|
||||
lastKeyDirection == DIRECTION_OPEN);
|
||||
publishAllFensterStatus("move");
|
||||
if (lastKeyDirection == DIRECTION_CLOSE)
|
||||
{
|
||||
tBeepingStartWithoutWindowClose = 0u;
|
||||
@@ -488,10 +488,7 @@ static void handleKeyReceived(void)
|
||||
tBeepingStartWithoutWindowClose = Seconds::Get();
|
||||
piepPattern->Start(DOUT_PIEP_PWM);
|
||||
bUpdateDisp = true;
|
||||
|
||||
char payload[64];
|
||||
snprintf(payload, sizeof(payload), "{\"event\":\"start_beep\", \"variant\": \"" PROJECT_VARIANT "\" }");
|
||||
myMqttClient.publishStatus(payload);
|
||||
publishAllFensterStatus("beep");
|
||||
}
|
||||
shallPiepPrevious = shallPiepNew;
|
||||
numberWindowsOpen = numberWindowsOpenNew;
|
||||
@@ -520,6 +517,34 @@ static void testWaitTime()
|
||||
}
|
||||
#endif
|
||||
|
||||
static void publishAllFensterStatus(const char *event)
|
||||
{
|
||||
char payload[256];
|
||||
sprintf(payload, "{ \"e\": \"%s\", \"n\": %d, \"f\": [", event, NUM_FENSTER);
|
||||
for (uint8_t i = 0; i < NUM_FENSTER; i++)
|
||||
{
|
||||
if (i>0) strcat(payload, ",");
|
||||
strcat(payload, "\"");
|
||||
strcat(payload, alleFenster[i]->name);
|
||||
strcat(payload, "\"");
|
||||
}
|
||||
strcat(payload, "], \"o\" : [");
|
||||
for (uint8_t i = 0; i < NUM_FENSTER; i++)
|
||||
{
|
||||
if (i>0) strcat(payload, ",");
|
||||
strcat(payload, alleFenster[i]->IsOpen() ? "1" : "0");
|
||||
}
|
||||
strcat(payload, "], \"b\" : [");
|
||||
for (uint8_t i = 0; i < NUM_FENSTER; i++)
|
||||
{
|
||||
if (i>0) strcat(payload, ",");
|
||||
strcat(payload, alleFenster[i]->ShallPiep() ? "1" : "0");
|
||||
}
|
||||
strcat(payload, "] }");
|
||||
|
||||
myMqttClient.publishStatus(payload);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user