fixed on modbus RTU master removed lambda
parent
ce9a98b91e
commit
7dded817c9
|
|
@ -47,6 +47,11 @@ bool EnergyMeter::init()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QUuid EnergyMeter::modbusRtuMasterUuid()
|
||||||
|
{
|
||||||
|
return m_modbusRtuMaster->modbusUuid();
|
||||||
|
}
|
||||||
|
|
||||||
bool EnergyMeter::connected()
|
bool EnergyMeter::connected()
|
||||||
{
|
{
|
||||||
return m_connected;
|
return m_connected;
|
||||||
|
|
|
||||||
|
|
@ -32,6 +32,7 @@
|
||||||
#define ENERGYMETER_H
|
#define ENERGYMETER_H
|
||||||
|
|
||||||
#include <QObject>
|
#include <QObject>
|
||||||
|
#include <QUuid>
|
||||||
|
|
||||||
#include "registerdescriptor.h"
|
#include "registerdescriptor.h"
|
||||||
#include "hardware/modbus/modbusrtumaster.h"
|
#include "hardware/modbus/modbusrtumaster.h"
|
||||||
|
|
@ -43,6 +44,7 @@ public:
|
||||||
explicit EnergyMeter(ModbusRtuMaster *modbusMaster, int slaveAddress, const QHash<ModbusRegisterType, ModbusRegisterDescriptor> &modbusRegisters, QObject *parent = nullptr);
|
explicit EnergyMeter(ModbusRtuMaster *modbusMaster, int slaveAddress, const QHash<ModbusRegisterType, ModbusRegisterDescriptor> &modbusRegisters, QObject *parent = nullptr);
|
||||||
bool init();
|
bool init();
|
||||||
|
|
||||||
|
QUuid modbusRtuMasterUuid();
|
||||||
bool connected();
|
bool connected();
|
||||||
bool getVoltage();
|
bool getVoltage();
|
||||||
bool getCurrent();
|
bool getCurrent();
|
||||||
|
|
|
||||||
|
|
@ -68,26 +68,22 @@ IntegrationPluginEnergyMeters::IntegrationPluginEnergyMeters()
|
||||||
m_discoverySlaveAddressParamTypeIds.insert(pro380ThingClassId, pro380DiscoverySlaveAddressParamTypeId);
|
m_discoverySlaveAddressParamTypeIds.insert(pro380ThingClassId, pro380DiscoverySlaveAddressParamTypeId);
|
||||||
m_discoverySlaveAddressParamTypeIds.insert(sdm630ThingClassId, sdm630DiscoverySlaveAddressParamTypeId);
|
m_discoverySlaveAddressParamTypeIds.insert(sdm630ThingClassId, sdm630DiscoverySlaveAddressParamTypeId);
|
||||||
|
|
||||||
m_registerMaps.insert(pro380ThingClassId, &pro380RegisterMap);
|
m_registerMaps.insert(pro380ThingClassId, pro380RegisterMap);
|
||||||
m_registerMaps.insert(sdm630ThingClassId, &sdm630RegisterMap);
|
m_registerMaps.insert(sdm630ThingClassId, sdm630RegisterMap);
|
||||||
|
|
||||||
// Modbus RTU hardware resource
|
// Modbus RTU hardware resource
|
||||||
connect(hardwareManager()->modbusRtuResource(), &ModbusRtuHardwareResource::modbusRtuMasterRemoved, this, [=](const QUuid &modbusUuid){
|
connect(hardwareManager()->modbusRtuResource(), &ModbusRtuHardwareResource::modbusRtuMasterRemoved, this, [=](const QUuid &modbusUuid){
|
||||||
qCDebug(dcEnergyMeters()) << "Modbus RTU master has been removed" << modbusUuid.toString();
|
qCDebug(dcEnergyMeters()) << "Modbus RTU master has been removed" << modbusUuid.toString();
|
||||||
|
|
||||||
// Check if there is any device using this resource
|
// Check if there is any device using this resource
|
||||||
foreach (Thing *thing, m_modbusRtuMasters.keys()) {
|
foreach (EnergyMeter * meter, m_energyMeters) {
|
||||||
if (m_modbusRtuMasters.value(thing)->modbusUuid() == modbusUuid) {
|
if (meter->modbusRtuMasterUuid() == modbusUuid) {
|
||||||
qCWarning(dcEnergyMeters()) << "Hardware resource removed for" << thing << ". The thing will not be functional any more until a new resource has been configured for it.";
|
Thing *thing = m_energyMeters.key(meter);
|
||||||
m_modbusRtuMasters.remove(thing);
|
if (!thing)
|
||||||
thing->setStateValue(m_connectionStateTypeIds[thing->thingClassId()], false);
|
return;
|
||||||
|
|
||||||
// Set all child things disconnected
|
qCWarning(dcEnergyMeters()) << "Modbus RTU hardware resource removed for" << thing << ". The thing will not be functional any more until a new resource has been configured for it.";
|
||||||
foreach (Thing *childThing, myThings()) {
|
thing->setStateValue(m_connectionStateTypeIds[thing->thingClassId()], false);
|
||||||
if (childThing->parentId() == thing->id()) {
|
|
||||||
thing->setStateValue(m_connectionStateTypeIds[childThing->thingClassId()], false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
@ -152,7 +148,7 @@ void IntegrationPluginEnergyMeters::setupThing(ThingSetupInfo *info)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
EnergyMeter *meter = new EnergyMeter(hardwareManager()->modbusRtuResource()->getModbusRtuMaster(uuid), address, *m_registerMaps.value(thing->thingClassId()), this);
|
EnergyMeter *meter = new EnergyMeter(hardwareManager()->modbusRtuResource()->getModbusRtuMaster(uuid), address, m_registerMaps.value(thing->thingClassId()), this);
|
||||||
connect(info, &ThingSetupInfo::aborted, meter, &EnergyMeter::deleteLater);
|
connect(info, &ThingSetupInfo::aborted, meter, &EnergyMeter::deleteLater);
|
||||||
connect(meter, &EnergyMeter::consumedEnergyReceived, info, [this, info, meter] {
|
connect(meter, &EnergyMeter::consumedEnergyReceived, info, [this, info, meter] {
|
||||||
qCDebug(dcEnergyMeters()) << "Reply received, setup finished";
|
qCDebug(dcEnergyMeters()) << "Reply received, setup finished";
|
||||||
|
|
|
||||||
|
|
@ -70,12 +70,10 @@ private:
|
||||||
QHash<ThingClassId, ParamTypeId> m_slaveIdParamTypeIds;
|
QHash<ThingClassId, ParamTypeId> m_slaveIdParamTypeIds;
|
||||||
QHash<ThingClassId, ParamTypeId> m_modbusUuidParamTypeIds;
|
QHash<ThingClassId, ParamTypeId> m_modbusUuidParamTypeIds;
|
||||||
|
|
||||||
QHash<ThingClassId, const QHash<ModbusRegisterType, ModbusRegisterDescriptor> *> m_registerMaps;
|
QHash<ThingClassId, QHash<ModbusRegisterType, ModbusRegisterDescriptor>> m_registerMaps;
|
||||||
|
|
||||||
QHash<Thing *, EnergyMeter *> m_energyMeters;
|
QHash<Thing *, EnergyMeter *> m_energyMeters;
|
||||||
QHash<Thing *, ModbusRtuMaster *> m_modbusRtuMasters;
|
|
||||||
PluginTimer *m_pluginTimer = nullptr;
|
PluginTimer *m_pluginTimer = nullptr;
|
||||||
QHash<QUuid, ThingActionInfo *> m_asyncActions;
|
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void onConnectionStateChanged(bool status);
|
void onConnectionStateChanged(bool status);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue