#ifndef INTEGRATIONPLUGINABBTERRA_H #define INTEGRATIONPLUGINABBTERRA_H #include #include "integrations/integrationplugin.h" #include #include "extern-plugininfo.h" #include "abbterramodbusrtuconnection.h" #include "abbterramodbustcpconnection.h" class IntegrationPluginAbbterra : public IntegrationPlugin { Q_OBJECT Q_PLUGIN_METADATA(IID "io.nymea.IntegrationPlugin" FILE "integrationpluginabbterra.json") Q_INTERFACES(IntegrationPlugin) public: explicit IntegrationPluginAbbterra(); void discoverThings(ThingDiscoveryInfo *info) override; void setupThing(ThingSetupInfo *info) override; void postSetupThing(Thing *thing) override; void thingRemoved(Thing *thing) override; public slots: void executeAction(ThingActionInfo *info) override; private: void setupTcpThing(ThingSetupInfo *info); void setupRtuThing(ThingSetupInfo *info); void updateThing(Thing *thing, AbbTerraModbusTcpConnection *connection); void updateThing(Thing *thing, AbbTerraModbusRtuConnection *connection); void setDisconnectedState(Thing *thing); private: PluginTimer *m_pluginTimer = nullptr; QHash m_tcpConnections; QHash m_rtuConnections; QHash m_monitors; }; #endif // INTEGRATIONPLUGINABBTERRA_H