mirror of
https://github.com/lumapu/ahoy.git
synced 2025-06-10 06:31:39 +02:00
0.8.1030009
This commit is contained in:
parent
06b34b16c4
commit
3375d3c8a9
5 changed files with 82 additions and 53 deletions
|
@ -204,7 +204,7 @@ typedef struct {
|
|||
#if defined(PLUGIN_ZEROEXPORT)
|
||||
|
||||
#define ZEROEXPORT_MAX_QUEUE_ENTRIES 64
|
||||
#define ZEROEXPORT_MAX_GROUPS 6
|
||||
#define ZEROEXPORT_MAX_GROUPS 8
|
||||
#define ZEROEXPORT_GROUP_MAX_LEN_NAME 25
|
||||
#define ZEROEXPORT_GROUP_MAX_LEN_PM_URL 100
|
||||
#define ZEROEXPORT_GROUP_MAX_LEN_PM_JSONPATH 100
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
//-------------------------------------
|
||||
#define VERSION_MAJOR 0
|
||||
#define VERSION_MINOR 8
|
||||
#define VERSION_PATCH 1030008
|
||||
#define VERSION_PATCH 1030009
|
||||
//-------------------------------------
|
||||
typedef struct {
|
||||
uint8_t ch;
|
||||
|
|
|
@ -88,7 +88,8 @@ class powermeter {
|
|||
#endif
|
||||
#if defined(ZEROEXPORT_POWERMETER_MQTT)
|
||||
case zeroExportPowermeterType_t::Mqtt:
|
||||
power = getPowermeterWattsMqtt(*mLog, group);
|
||||
/// power = getPowermeterWattsMqtt(*mLog, group);
|
||||
continue;
|
||||
break;
|
||||
#endif
|
||||
#if defined(ZEROEXPORT_POWERMETER_HICHI)
|
||||
|
@ -114,6 +115,7 @@ class powermeter {
|
|||
bufferWrite(power, group);
|
||||
|
||||
// MQTT - Powermeter
|
||||
if (mCfg->debug) {
|
||||
if (mMqtt->isConnected()) {
|
||||
// P
|
||||
mqttObj["Sum"] = ah::round1(power.P);
|
||||
|
@ -127,6 +129,7 @@ class powermeter {
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** groupGetPowermeter
|
||||
* Holt die Daten vom Powermeter
|
||||
|
@ -159,10 +162,13 @@ class powermeter {
|
|||
#if defined(ZEROEXPORT_POWERMETER_MQTT)
|
||||
|
||||
for (uint8_t group = 0; group < ZEROEXPORT_MAX_GROUPS; group++) {
|
||||
if (mCfg->groups[group].pm_type == zeroExportPowermeterType_t::Mqtt) {
|
||||
// if (String(mCfg->groups[group].pm_jsonPath) == "") return;
|
||||
if (!strcmp(mCfg->groups[group].pm_jsonPath, "")) continue;
|
||||
|
||||
mMqtt->subscribe(String(mCfg->groups[group].pm_jsonPath).c_str(), QOS_2);
|
||||
if (!mCfg->groups[group].enabled) continue;
|
||||
|
||||
if (mCfg->groups[group].pm_type == zeroExportPowermeterType_t::Mqtt) {
|
||||
|
||||
mMqtt->subscribeExtern(String(mCfg->groups[group].pm_jsonPath).c_str(), QOS_2);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -429,26 +435,26 @@ class powermeter {
|
|||
}
|
||||
#endif
|
||||
|
||||
#if defined(ZEROEXPORT_POWERMETER_MQTT)
|
||||
/** getPowermeterWattsMqtt
|
||||
* ...
|
||||
* @param logObj
|
||||
* @param group
|
||||
* @returns true/false
|
||||
*/
|
||||
PowermeterBuffer_t getPowermeterWattsMqtt(JsonObject logObj, uint8_t group) {
|
||||
PowermeterBuffer_t result;
|
||||
result.P = result.P1 = result.P2 = result.P3 = 0;
|
||||
|
||||
logObj["mod"] = "getPowermeterWattsMqtt";
|
||||
|
||||
// topic for powermeter?
|
||||
result.P = mCfg->groups[group].pm_P;
|
||||
result.P1 = result.P2 = result.P3 = mCfg->groups[group].pm_P / 3;
|
||||
|
||||
return result;
|
||||
}
|
||||
#endif
|
||||
///#if defined(ZEROEXPORT_POWERMETER_MQTT)
|
||||
/// /** getPowermeterWattsMqtt
|
||||
/// * ...
|
||||
/// * @param logObj
|
||||
/// * @param group
|
||||
/// * @returns true/false
|
||||
/// */
|
||||
/// PowermeterBuffer_t getPowermeterWattsMqtt(JsonObject logObj, uint8_t group) {
|
||||
/// PowermeterBuffer_t result;
|
||||
/// result.P = result.P1 = result.P2 = result.P3 = 0;
|
||||
///
|
||||
/// logObj["mod"] = "getPowermeterWattsMqtt";
|
||||
///
|
||||
/// // topic for powermeter?
|
||||
/// result.P = mCfg->groups[group].pm_P;
|
||||
/// result.P1 = result.P2 = result.P3 = mCfg->groups[group].pm_P / 3;
|
||||
///
|
||||
/// return result;
|
||||
/// }
|
||||
///#endif
|
||||
|
||||
#if defined(ZEROEXPORT_POWERMETER_HICHI)
|
||||
/** getPowermeterWattsHichi
|
||||
|
|
|
@ -597,12 +597,16 @@ if ((delta > 10) && (CfgGroupInv->power > 0)) {
|
|||
* @returns void
|
||||
*/
|
||||
void onMqttConnect(void) {
|
||||
if (!mCfg->enabled) return;
|
||||
|
||||
mPowermeter.onMqttConnect();
|
||||
|
||||
for (uint8_t group = 0; group < ZEROEXPORT_MAX_GROUPS; group++) {
|
||||
// if (String(mCfg->groups[group].battSoC) == "") return;
|
||||
if (!mCfg->groups [group].enabled) continue;
|
||||
|
||||
mMqtt->subscribe(String(mCfg->groups[group].battSoC).c_str(), QOS_2);
|
||||
if(!strcmp(mCfg->groups[group].battSoC, "")) continue;
|
||||
|
||||
mMqtt->subscribeExtern(String(mCfg->groups[group].battSoC).c_str(), QOS_2);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -614,12 +618,17 @@ if ((delta > 10) && (CfgGroupInv->power > 0)) {
|
|||
void onMqttMessage(JsonObject obj) {
|
||||
if (!mIsInitialized) return;
|
||||
|
||||
if (mCfg->debug) mLog["d"] = obj;
|
||||
sendLog();
|
||||
clearLog();
|
||||
mPowermeter.onMqttMessage(obj);
|
||||
|
||||
String topic = String(obj["topic"]);
|
||||
|
||||
/// TODO: Receive Message für SoC
|
||||
// if ((topicGroup >= 0) && (topicGroup < ZEROEXPORT_MAX_GROUPS)) {
|
||||
// if (topic.indexOf("xxx") != -1) {
|
||||
|
||||
// }
|
||||
// }
|
||||
|
||||
if (topic.indexOf("ctrl/zero") == -1) return;
|
||||
|
||||
if (mCfg->debug) mLog["d"] = obj;
|
||||
|
@ -661,19 +670,27 @@ if ((delta > 10) && (CfgGroupInv->power > 0)) {
|
|||
mLog["v"] = mCfg->groups[topicGroup].sleep;
|
||||
}
|
||||
|
||||
// "topic":"ctrl/zero/groups/+/pm_ip"
|
||||
if (topic.indexOf("ctrl/zero/groups/" + String(topicGroup) + "/pm_ip") != -1) {
|
||||
// snprintf(mCfg->groups[topicGroup].pm_url, ZEROEXPORT_GROUP_MAX_LEN_PM_URL, "%s", obj[F("val")].as<const char *>());
|
||||
// mLog["g_powermeter_pm_ip"] = mCfg->groups[topicGroup].pm_url;
|
||||
// snprintf(mCfg->groups[5].pm_url, ZEROEXPORT_GROUP_MAX_LEN_PM_URL, "%s", obj[F("val")].as<const char *>());
|
||||
// mLog["g_powermeter_pm_ip"] = mCfg->groups[5].pm_url;
|
||||
}
|
||||
|
||||
// "topic":"ctrl/zero/groups/+/pm_jsonPath"
|
||||
if (topic.indexOf("ctrl/zero/groups/" + String(topicGroup) + "/pm_jsonPath") != -1) {
|
||||
// snprintf(mCfg->groups[topicGroup].pm_jsonPath, ZEROEXPORT_GROUP_MAX_LEN_PM_JSONPATH, "%s", obj[F("val")].as<const char *>());
|
||||
// mLog["g_powermeter_pm_jsonPath"] = mCfg->groups[topicGroup].pm_jsonPath;
|
||||
}
|
||||
// Auf Eis gelegt, dafür 2 Gruppen mehr
|
||||
// 0.8.103008.2
|
||||
// // "topic":"ctrl/zero/groups/+/pm_ip"
|
||||
// if (topic.indexOf("ctrl/zero/groups/" + String(topicGroup) + "/pm_ip") != -1) {
|
||||
// snprintf(mCfg->groups[topicGroup].pm_url, ZEROEXPORT_GROUP_MAX_LEN_PM_URL, "%s", obj[F("val")].as<const char *>());
|
||||
/// TODO:
|
||||
// snprintf(mCfg->groups[topicGroup].pm_url, ZEROEXPORT_GROUP_MAX_LEN_PM_URL, "%s", obj[F("val")].as<const char *>());
|
||||
// strncpy(mCfg->groups[topicGroup].pm_url, obj[F("val")], ZEROEXPORT_GROUP_MAX_LEN_PM_URL);
|
||||
// strncpy(mCfg->groups[topicGroup].pm_url, String(obj[F("val")]).c_str(), ZEROEXPORT_GROUP_MAX_LEN_PM_URL);
|
||||
// snprintf(mCfg->groups[topicGroup].pm_url, ZEROEXPORT_GROUP_MAX_LEN_PM_URL, "%s", String(obj[F("val")]).c_str());
|
||||
// mLog["k"] = "ctrl/zero/groups/" + String(topicGroup) + "/pm_ip";
|
||||
// mLog["v"] = mCfg->groups[topicGroup].pm_url;
|
||||
// }
|
||||
//
|
||||
// // "topic":"ctrl/zero/groups/+/pm_jsonPath"
|
||||
// if (topic.indexOf("ctrl/zero/groups/" + String(topicGroup) + "/pm_jsonPath") != -1) {
|
||||
/// TODO:
|
||||
// snprintf(mCfg->groups[topicGroup].pm_jsonPath, ZEROEXPORT_GROUP_MAX_LEN_PM_JSONPATH, "%s", obj[F("val")].as<const char *>());
|
||||
// mLog["k"] = "ctrl/zero/groups/" + String(topicGroup) + "/pm_jsonPath";
|
||||
// mLog["v"] = mCfg->groups[topicGroup].pm_jsonPath;
|
||||
// }
|
||||
|
||||
// "topic":"ctrl/zero/groups/+/battery/switch"
|
||||
if (topic.indexOf("ctrl/zero/groups/" + String(topicGroup) + "/battery/switch") != -1) {
|
||||
|
|
|
@ -217,6 +217,12 @@ class PubMqtt {
|
|||
mClient.subscribe(topic, qos);
|
||||
}
|
||||
|
||||
void subscribeExtern(const char *subTopic, uint8_t qos = QOS_0) {
|
||||
char topic[MQTT_TOPIC_LEN + 20];
|
||||
snprintf(topic, (MQTT_TOPIC_LEN + 20), "%s", subTopic);
|
||||
mClient.subscribe(topic, qos);
|
||||
}
|
||||
|
||||
void setConnectionCb(connectionCb cb) {
|
||||
mConnectionCb = cb;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue