Add return status from AC

This commit is contained in:
2022-07-10 18:43:35 +03:00
parent f3221660ce
commit 96976bfaef
5 changed files with 101 additions and 15 deletions

View File

@@ -1,6 +1,10 @@
#include <Arduino.h>
#include <ESP8266WiFi.h>
#include <Ticker.h>
#include <ESP8266WiFi.h>
#include <ESPAsyncTCP.h>
#include <ESPAsyncWebServer.h>
#include <WebSerial.h>
#include <AsyncMqttClient.h>
//#include <ArduinoJson.h>
#include <HeatPump.h>
@@ -43,6 +47,7 @@ Ticker wifiReconnectTimer;
#ifdef RDEB
RemoteDebug Debug;
#endif
AsyncWebServer server(80);
void connectToWifi();
void connectToMqtt();
@@ -115,6 +120,8 @@ void setup(){
Serial.println(F("Connect WIFI"));
#endif
connectToWifi();
WebSerial.begin(&server);
server.begin();
}
void loop(){
@@ -179,19 +186,22 @@ void onMqttConnect(bool sessionPresent) {
#ifdef SDEB
Serial.println(F("Connected to MQTT..."));
#endif
// mqttClient.publish(MAIN_TOPIC "power_set", 1, false, "");
// mqttClient.publish(MAIN_TOPIC "mode_set", 1, false, "");
// mqttClient.publish(MAIN_TOPIC "temp_set", 1, false, "");
// mqttClient.publish(MAIN_TOPIC "fan_set", 1, false, "");
// mqttClient.publish(MAIN_TOPIC "vane_set", 1, false, "");
// mqttClient.publish(MAIN_TOPIC "widevane_set", 1, false, "");
mqttClient.publish(MAIN_TOPIC"power_set", 1, false, hp.getPowerSettingBool() ? "1" : "0");
//mqttClient.publish(MAIN_TOPIC"power", 1, false, hp.getPowerSettingBool() ? "1" : "0");
mqttClient.publish(MAIN_TOPIC "mode_set", 1, false, hp.getModeSetting());
//mqttClient.publish(MAIN_TOPIC "mode", 1, false, hp.getModeSetting());
mqttClient.publish(MAIN_TOPIC "temp_set", 1, false, String(hp.getTemperature()).c_str());
mqttClient.publish(MAIN_TOPIC "fan_set", 1, false, hp.getFanSpeed());
mqttClient.publish(MAIN_TOPIC "vane_set", 1, false, hp.getVaneSetting());
mqttClient.publish(MAIN_TOPIC "widevane_set", 1, false, hp.getWideVaneSetting());
//mqttClient.publish(MAIN_TOPIC DEBUG_TOPIC, 1, false, "");
mqttClient.subscribe(MAIN_TOPIC "power_set", 1);
mqttClient.subscribe(MAIN_TOPIC "mode_set", 1);
mqttClient.subscribe(MAIN_TOPIC "temp_set", 1);
mqttClient.subscribe(MAIN_TOPIC "fan_set", 1);
mqttClient.subscribe(MAIN_TOPIC "vane_set", 1);
mqttClient.subscribe(MAIN_TOPIC "widevane_set", 1);
mqttClient.subscribe(MAIN_TOPIC"power_set", 1);
mqttClient.subscribe(MAIN_TOPIC"mode_set", 1);
mqttClient.subscribe(MAIN_TOPIC"temp_set", 1);
mqttClient.subscribe(MAIN_TOPIC"fan_set", 1);
mqttClient.subscribe(MAIN_TOPIC"vane_set", 1);
mqttClient.subscribe(MAIN_TOPIC"widevane_set", 1);
#ifdef RDEB
debugD("MQTT Connect");
#endif
@@ -221,12 +231,17 @@ void hpSettingsChanged() {
// root["wideVane"] = currentSettings.wideVane;
mqttClient.publish(MAIN_TOPIC "power", 1, false, currentSettings.power);
mqttClient.publish(MAIN_TOPIC "mode", 1, false, currentSettings.mode);
mqttClient.publish(MAIN_TOPIC "mode_set", 1, false, currentSettings.mode);
char t[5];
dtostrf(currentSettings.temperature, 4, 1, t);
mqttClient.publish(MAIN_TOPIC "temp", 1, false, t);
mqttClient.publish(MAIN_TOPIC "fan", 1, false, currentSettings.fan);
mqttClient.publish(MAIN_TOPIC "vane", 1, false, currentSettings.vane);
mqttClient.publish(MAIN_TOPIC "wideVane", 1, false, currentSettings.wideVane);
mqttClient.publish(MAIN_TOPIC "temp_set", 1, false, t);
mqttClient.publish(MAIN_TOPIC "fan_set", 1, false, currentSettings.fan);
mqttClient.publish(MAIN_TOPIC "vane_set", 1, false, currentSettings.vane);
mqttClient.publish(MAIN_TOPIC "wideVane_set", 1, false, currentSettings.wideVane);
//root["iSee"] = currentSettings.iSee;
// char buffer[512];
@@ -263,9 +278,14 @@ void hpStatusChanged(heatpumpStatus currentStatus) {
// debugD("StatusSend %s", bufferInfo);
// #endif
char t[5];
static bool power_mode = currentStatus.operating;
dtostrf(currentStatus.roomTemperature, 4, 1, t);
mqttClient.publish(MAIN_TOPIC "temperature", 1, false, t);
mqttClient.publish(MAIN_TOPIC "operating", 1, false, currentStatus.operating == false ? "OFF" : "ON");
if(currentStatus.operating != power_mode){
power_mode = currentStatus.operating;
mqttClient.publish(MAIN_TOPIC "power_set", 1, false, currentStatus.operating ? "1" : "0");
}
//mqttClient.publish(MAIN_TOPIC STATUS_TOPIC, 1, false, bufferInfo);
// if (!mqtt_client.publish(heatpump_status_topic, bufferInfo, true)) {
// mqtt_client.publish(heatpump_debug_topic, "failed to publish to room temp and operation status to heatpump/status topic");
@@ -341,7 +361,10 @@ void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties
mqtt += topic;
mqtt += " Payload:";
mqtt += String(message);
mqttClient.publish(MAIN_TOPIC "debug_mqtt", 1, false, mqtt.c_str());
mqttClient.publish(MAIN_TOPIC"debug_mqtt", 1, false, mqtt.c_str());
WebSerial.print(payload);
WebSerial.print(" pl:");
WebSerial.println(message);
#ifdef SDEB
Serial.print(F("MQTT msg: "));
Serial.println(message);
@@ -351,7 +374,7 @@ void onMqttMessage(char* topic, char* payload, AsyncMqttClientMessageProperties
#endif
if (strcmp(topic, MAIN_TOPIC "power_set") == 0) {
mqttClient.publish(MAIN_TOPIC "debug", 1, false, (String("Power set:") + String(message)).c_str());
//mqttClient.publish(MAIN_TOPIC "debug", 1, false, (String("Power set:") + String(message)).c_str());
#ifdef SDEB
Serial.print(F("Setpower: "));
Serial.println(message);