diff --git a/libnymea-core/hardware/modbus/modbusrtuhardwareresourceimplementation.cpp b/libnymea-core/hardware/modbus/modbusrtuhardwareresourceimplementation.cpp index 96c9c19e..b2ac270a 100644 --- a/libnymea-core/hardware/modbus/modbusrtuhardwareresourceimplementation.cpp +++ b/libnymea-core/hardware/modbus/modbusrtuhardwareresourceimplementation.cpp @@ -41,7 +41,17 @@ ModbusRtuHardwareResourceImplementation::ModbusRtuHardwareResourceImplementation ModbusRtuHardwareResource(parent), m_modbusRtuManager(modbusRtuManager) { + connect(m_modbusRtuManager, &ModbusRtuManager::modbusRtuMasterAdded, this, [=](ModbusRtuMaster *modbusRtuMaster){ + emit modbusRtuMasterAdded(modbusRtuMaster->modbusUuid()); + }); + connect(m_modbusRtuManager, &ModbusRtuManager::modbusRtuMasterRemoved, this, [=](ModbusRtuMaster *modbusRtuMaster){ + emit modbusRtuMasterRemoved(modbusRtuMaster->modbusUuid()); + }); + + connect(m_modbusRtuManager, &ModbusRtuManager::modbusRtuMasterChanged, this, [=](ModbusRtuMaster *modbusRtuMaster){ + emit modbusRtuMasterChanged(modbusRtuMaster->modbusUuid()); + }); } QList ModbusRtuHardwareResourceImplementation::modbusRtuMasters() const @@ -61,7 +71,7 @@ ModbusRtuMaster *ModbusRtuHardwareResourceImplementation::getModbusRtuMaster(con bool ModbusRtuHardwareResourceImplementation::available() const { - return m_available; + return m_modbusRtuManager->supported(); } bool ModbusRtuHardwareResourceImplementation::enabled() const diff --git a/libnymea-core/modbus/modbusrtumanager.cpp b/libnymea-core/modbus/modbusrtumanager.cpp index 20de42c6..2fa405ea 100644 --- a/libnymea-core/modbus/modbusrtumanager.cpp +++ b/libnymea-core/modbus/modbusrtumanager.cpp @@ -58,7 +58,7 @@ ModbusRtuManager::ModbusRtuManager(SerialPortMonitor *serialPortMonitor, QObject if (!modbusMasterImpl->connectDevice()) { qCDebug(dcModbusRtu()) << "Reconnect" << modbusMaster << "failed."; } else { - qCDebug(dcModbusRtu()) << "Reconnected" << modbusMaster << "sucessfully."; + qCDebug(dcModbusRtu()) << "Reconnected" << modbusMaster << "successfully."; } } } diff --git a/libnymea-core/modbus/modbusrtumasterimpl.cpp b/libnymea-core/modbus/modbusrtumasterimpl.cpp index 27f2d773..0eaec754 100644 --- a/libnymea-core/modbus/modbusrtumasterimpl.cpp +++ b/libnymea-core/modbus/modbusrtumasterimpl.cpp @@ -60,11 +60,15 @@ ModbusRtuMasterImpl::ModbusRtuMasterImpl(const QUuid &modbusUuid, const QString connect(m_modbus, &QModbusTcpClient::stateChanged, this, [=](QModbusDevice::State state){ qCDebug(dcModbusRtu()) << "Connection state changed" << m_modbusUuid.toString() << m_serialPort << state; if (state == QModbusDevice::ConnectedState) { - m_connected = true; - emit connectedChanged(m_connected); + if (m_connected != true) { + m_connected = true; + emit connectedChanged(m_connected); + } } else { - m_connected = false; - emit connectedChanged(m_connected); + if (m_connected != false) { + m_connected = false; + emit connectedChanged(m_connected); + } } }); diff --git a/libnymea/hardware/modbus/modbusrtumaster.h b/libnymea/hardware/modbus/modbusrtumaster.h index 4d6740a5..df4fb94d 100644 --- a/libnymea/hardware/modbus/modbusrtumaster.h +++ b/libnymea/hardware/modbus/modbusrtumaster.h @@ -79,7 +79,7 @@ inline QDebug operator<<(QDebug debug, ModbusRtuMaster *modbusRtuMaster) { debug.nospace() << "ModbusRtuMaster(" << modbusRtuMaster->modbusUuid().toString(); debug.nospace() << ", " << modbusRtuMaster->serialPort(); debug.nospace() << ", BaudRate: " << modbusRtuMaster->baudrate() << ") "; - return debug; + return debug.space(); };