This commit is contained in:
2025-11-18 10:14:45 +01:00
parent c07db58a7e
commit ca5e6b479e
3 changed files with 287 additions and 273 deletions
+43 -30
View File
@@ -155,11 +155,13 @@ void Pws2mqtt::parseData(QList<std::pair<QString, QString>> queryList)
QStringList priorityList {"", "min", "low", "default", "High", "urgent"}; QStringList priorityList {"", "min", "low", "default", "High", "urgent"};
QString attachment = ""; QString attachment = "";
QString tag = ""; QString tag = "";
quint8 priority = 2;
double propertyValue = 0; double propertyValue = 0;
bool propertyFlag = false; bool propertyFlag = false;
bool deviceFlag = false; bool deviceFlag = false;
static QDateTime timer = QDateTime::currentDateTime().addSecs(-2000); static QDateTime timer = QDateTime::currentDateTime().addSecs(-2000);
static QHash <QByteArray, quint8> priority = {};
static QHash <QByteArray, quint8> announced = {};
static bool start = false;
debug(DEBUGMACRO, "looping list of query", DEBUG); debug(DEBUGMACRO, "looping list of query", DEBUG);
@@ -206,6 +208,13 @@ void Pws2mqtt::parseData(QList<std::pair<QString, QString>> queryList)
timeTemp = timeTemp.currentDateTime().addSecs(300); timeTemp = timeTemp.currentDateTime().addSecs(300);
propertyList[name] = formatNotifString(propertyName[name].first, propertyName[name].second, QByteArray::number(propertyValue)); propertyList[name] = formatNotifString(propertyName[name].first, propertyName[name].second, QByteArray::number(propertyValue));
propertiesValue[name] = propertyValue; propertiesValue[name] = propertyValue;
if (propertyValue > 35)
{
priority[name] = 4;
}else if (propertyValue > 27)
{
priority[name] = 3;
}
} }
}else if (name == "humidity") }else if (name == "humidity")
{ {
@@ -255,9 +264,9 @@ void Pws2mqtt::parseData(QList<std::pair<QString, QString>> queryList)
if (propertiesValue["forcevent"] != i) if (propertiesValue["forcevent"] != i)
{ {
priority = qMax(priority, windPriority); priority[name] = qMax(priority[name], windPriority);
} }
debug (DEBUGMACRO, "priority = " + QString::number(priority), DEBUG); debug (DEBUGMACRO, "priority = " + QString::number(priority[name]), DEBUG);
}else if (name == "windgustmph") }else if (name == "windgustmph")
{ {
QString msg = ""; QString msg = "";
@@ -271,9 +280,9 @@ void Pws2mqtt::parseData(QList<std::pair<QString, QString>> queryList)
if (propertiesValue[name] > 50) if (propertiesValue[name] > 50)
{ {
priority = qMax(priority, (quint8)4); priority[name] = qMax(priority[name], (quint8)4);
} }
debug (DEBUGMACRO, "priority = " + QString::number(priority), DEBUG); debug (DEBUGMACRO, "priority = " + QString::number(priority[name]), DEBUG);
}else if (name == "rainin") }else if (name == "rainin")
{ {
static double ecart; static double ecart;
@@ -290,12 +299,12 @@ void Pws2mqtt::parseData(QList<std::pair<QString, QString>> queryList)
if (compare (propertiesValue[name], propertyValue, ecart)) if (compare (propertiesValue[name], propertyValue, ecart))
{ {
QString pluviosite = getPluviosite(propertyValue, raininPriority); QString pluviosite = getPluviosite(propertyValue, raininPriority);
priority = setPriority (priority, raininPriority); priority[name] = setPriority (priority[name], raininPriority);
//debug (DEBUGMACRO, "Notif = #" + notif + "#", DEBUG); //debug (DEBUGMACRO, "Notif = #" + notif + "#", DEBUG);
propertyList[name] = formatNotifString(pluviosite, propertyName[name].second, QByteArray::number(propertyValue)); propertyList[name] = formatNotifString(pluviosite, propertyName[name].second, QByteArray::number(propertyValue));
propertiesValue[name] = propertyValue; propertiesValue[name] = propertyValue;
} }
debug (DEBUGMACRO, "priority = " + QString::number(priority), DEBUG); debug (DEBUGMACRO, "priority = " + QString::number(priority[name]), DEBUG);
}else if (name == "dailyrainin") }else if (name == "dailyrainin")
{ {
static double ecart; static double ecart;
@@ -310,12 +319,12 @@ void Pws2mqtt::parseData(QList<std::pair<QString, QString>> queryList)
debug (DEBUGMACRO, name + " : " + QByteArray::number(propertyValue), DEBUG); debug (DEBUGMACRO, name + " : " + QByteArray::number(propertyValue), DEBUG);
if (compare (propertiesValue[name], propertyValue, ecart)) if (compare (propertiesValue[name], propertyValue, ecart))
{ {
//priority = setPriority (priority, 3); //priority[name] = setPriority (priority[name], 3);
//debug (DEBUGMACRO, "Notif = #" + notif + "#", DEBUG); //debug (DEBUGMACRO, "Notif = #" + notif + "#", DEBUG);
propertyList[name] = formatNotifString(propertyName[name].first, propertyName[name].second, QByteArray::number(propertyValue)); propertyList[name] = formatNotifString(propertyName[name].first, propertyName[name].second, QByteArray::number(propertyValue));
propertiesValue[name] = propertyValue; propertiesValue[name] = propertyValue;
} }
debug (DEBUGMACRO, "priority = " + QString::number(priority), DEBUG); debug (DEBUGMACRO, "priority = " + QString::number(priority[name]), DEBUG);
}else if (name == "baromin") }else if (name == "baromin")
{ {
//static QDateTime timePrevision = QDateTime::currentDateTime().addSecs(-1000); //static QDateTime timePrevision = QDateTime::currentDateTime().addSecs(-1000);
@@ -332,11 +341,11 @@ void Pws2mqtt::parseData(QList<std::pair<QString, QString>> queryList)
prevision = ret.message; prevision = ret.message;
//if (prevision != newPrevision) //if (prevision != newPrevision)
//{ //{
priority = setPriority(priority, ret.urgency); priority[name] = setPriority(priority[name], ret.urgency);
tag += ret.icons; tag += ret.icons;
propertyList["prevision"] = prevision; propertyList["prevision"] = prevision;
debug (DEBUGMACRO, "priority = " + QString::number(priority), DEBUG); debug (DEBUGMACRO, "priority = " + QString::number(priority[name]), DEBUG);
}else if (name == "UV") }else if (name == "UV")
{ {
static QDateTime timeUV = QDateTime::currentDateTime().addSecs(-600); static QDateTime timeUV = QDateTime::currentDateTime().addSecs(-600);
@@ -347,15 +356,15 @@ void Pws2mqtt::parseData(QList<std::pair<QString, QString>> queryList)
{ {
//notif += formatNotifString (propertyName[name].first, propertyName[name].second , value); //notif += formatNotifString (propertyName[name].first, propertyName[name].second , value);
if (propertyValue == 5 ) if (propertyValue == 5 )
priority = setPriority (priority, 4); priority[name] = setPriority (priority[name], 4);
if (propertyValue >= 6 ) if (propertyValue >= 6 )
priority = setPriority (priority, 5); priority[name] = setPriority (priority[name], 5);
timeUV = timeUV.currentDateTime().addSecs(300); timeUV = timeUV.currentDateTime().addSecs(300);
propertiesValue[name] = propertyValue; propertiesValue[name] = propertyValue;
debug (DEBUGMACRO, "Notif = #" + notif + "#", DEBUG); debug (DEBUGMACRO, "Notif = #" + notif + "#", DEBUG);
propertyList[name] = formatNotifString(propertyName[name].first, "", QByteArray::number(propertyValue)); propertyList[name] = formatNotifString(propertyName[name].first, "", QByteArray::number(propertyValue));
} }
debug (DEBUGMACRO, "priority = " + QString::number(priority), DEBUG); debug (DEBUGMACRO, "priority = " + QString::number(priority[name]), DEBUG);
}else if (name == "solarradiation") }else if (name == "solarradiation")
{ {
@@ -380,43 +389,47 @@ void Pws2mqtt::parseData(QList<std::pair<QString, QString>> queryList)
debug(DEBUGMACRO, "current datetime : " + QDateTime::currentDateTime().toString() + ", timer = " + timer.toString(), DEBUG); debug(DEBUGMACRO, "current datetime : " + QDateTime::currentDateTime().toString() + ", timer = " + timer.toString(), DEBUG);
if (priority > 3 or QDateTime::currentDateTime() > timer.addSecs(1800))
{
bool changed = false;
timer = QDateTime::currentDateTime();
debug(DEBUGMACRO, "looping to fill notif, priority = " + QString::number(priority), DEBUG);
if (precPropertyList.size() == 0) //bool changed = false;
{ quint8 aPriority= 0;
changed = true;
} debug(DEBUGMACRO, "looping to fill notif", DEBUG);
for (auto [name, value]: propertyList.asKeyValueRange()) for (auto [name, value]: propertyList.asKeyValueRange())
{ {
if (precPropertyList.contains(name)) if (precPropertyList.contains(name))
{ {
if (precPropertyList[name] != propertyList[name]) if (precPropertyList[name] != propertyList[name])
{
if (announced.contains(name) and priority.contains(name))
{
if (announced[name] != priority[name])
{ {
debug(DEBUGMACRO, "changed = true", DEBUG); debug(DEBUGMACRO, "changed = true", DEBUG);
changed = true; announced[name] = priority[name];
//changed = true;
aPriority = qMax(aPriority, priority[name]);
}
}
} }
} }
debug(DEBUGMACRO, "Name = " + name + ", value = " + value, DEBUG); debug(DEBUGMACRO, "Name = " + name + ", value = " + value, DEBUG);
if (! (name == "prevision")) if (name != "prevision")
{ {
notif += propertyList[name]; notif += propertyList[name];
} }
} }
if (changed) if (QDateTime::currentDateTime() > timer.addSecs(3600) or start == false or aPriority >= 3)
{ {
notify (notif, priorityList[priority], attachment, tag); timer = QDateTime::currentDateTime();
start = true;
notify (notif, priorityList[aPriority], attachment, tag);
precPropertyList = propertyList; precPropertyList = propertyList;
}
notif = "**Prévisions à 12/24h**\n" + propertyList["prevision"]; notif = "**Prévisions à 12/24h**\n" + propertyList["prevision"];
notify (notif, priorityList[priority], "", tag); notify (notif, priorityList[aPriority], "", tag);
debug(DEBUGMACRO, "calling notify with notif = #" + notif + "#", DEBUG); debug(DEBUGMACRO, "calling notify with notif = #" + notif + "#", DEBUG);
} }
debug(DEBUGMACRO, "parseData: Returning", DEBUG); debug(DEBUGMACRO, "parseData: Returning", DEBUG);
} }
+1
View File
@@ -5,6 +5,7 @@
#include <QObject> #include <QObject>
#include <QtMqtt> #include <QtMqtt>
#include <QtMqtt/QMqttClient> #include <QtMqtt/QMqttClient>
#include <cstdint>
#define RED "\e[31m" #define RED "\e[31m"
#define GREEN "\e[32m" #define GREEN "\e[32m"