1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #pragma once
- #include "BaseModule.h"
- #include "libaray_symbols.h"
- #include "LockFreeQueue.h"
- #include <QtCore/QDateTime>
- #include <QtCore/QReadWriteLock>
- // 数据越限报警:测试脚本,由td触发,报警结果推送到mqtt
- // CREATE TABLE IF NOT EXISTS lanpengdb.mokuai99(ts timestamp, dim1 double);
- // create topic mokuai99 as select * from lanpengdb.mokuai99;
- // delete from lanpengdb.mokuai99;
- // insert into lanpengdb.mokuai99 values(NOW,12.345);
- // 报警规则1:满足条件报警
- // - : -∞ +∞ 默认范围
- // > : max +∞ 介于中间报警
- // < : -∞ min 介于中间报警
- // []: min max 介于中间报警
- // 报警规则2:系统中仅存在一条活跃报警;新报警产生后,应该将历史报警恢复。
- // 报警关键字:object,新报警产生时,与本模块alarmRuleId不相符的活跃报警,应当恢复
- // update相关代码,在mysql触发器中执行
- class ALARMRECOGNITION_EXPORT Module : public BaseModule
- {
- public:
- Module();
- private:
- struct tagRange{
- QString szName; // data name
- double dbMax = __DBL_MAX__;
- double dbMin = __DBL_MIN__;
- uint uWinSize = 5;
- int nStatus = 0;
- std::string szOperator; // 操作符
- std::string alarmRuleId; // 节点-标识码
- int alarmRuleVersion;
- int level;
- int status;
- std::string object;
- tagRange()
- {
- szName.clear();
- dbMax = __DBL_MAX__;
- dbMin = __DBL_MIN__;
- uWinSize = 5;
- nStatus = 0;
- }
- };
- struct tagKeyValue{
- std::string name = "";
- double value = 0;
- QDateTime tm;
- tagKeyValue()
- {
- tm = QDateTime::currentDateTime();
- }
- tagKeyValue(std::string n,double v)
- {
- name = n;
- value = v;
- tm = QDateTime::currentDateTime();
- }
- };
- private:
- DataConsumer* m_pDataConsumer = nullptr;
- std::vector<std::string> m_szOutputs; // 输出名称
- std::map<std::string,tagRange> m_mpRangeConfig; // 数据范围:data name - confit
- private:
- std::map<std::string,std::list<tagKeyValue>>
- m_mpDataValue; // 测量数据:data name - list
- QReadWriteLock m_objDataLock;
- public:
- virtual void Setup(ModuleInfo mi);
- virtual void regConsumer(DataConsumer* pDC) ;
- virtual bool isInheritedFrom(std::string tp);
- virtual void OnSubData(std::string name,std::string val);
- };
- extern "C" {//一定要添加上
- ALARMRECOGNITION_EXPORT BaseModule* instance();
- ALARMRECOGNITION_EXPORT void destroy(BaseModule*);
- }
|