diff --git a/inro/integrationplugininro.cpp b/inro/integrationplugininro.cpp index 7dc2d11..daa5c7d 100644 --- a/inro/integrationplugininro.cpp +++ b/inro/integrationplugininro.cpp @@ -277,6 +277,8 @@ void IntegrationPluginInro::thingRemoved(Thing *thing) connection->deleteLater(); } + m_initReadRequired.remove(thing); + // Unregister related hardware resources if (m_monitors.contains(thing)) hardwareManager()->networkDeviceDiscovery()->unregisterMonitor(m_monitors.take(thing)); @@ -325,13 +327,14 @@ void IntegrationPluginInro::setupConnection(ThingSetupInfo *info) } }); - connect(connection, &Pantabox::initializationFinished, thing, [thing, connection](bool success){ + connect(connection, &Pantabox::initializationFinished, thing, [this, thing, connection](bool success){ if (success) { thing->setStateValue(pantaboxModbusTcpVersionStateTypeId, Pantabox::modbusVersionToString(connection->modbusTcpVersion())); + m_initReadRequired[thing] = true; } }); - connect(connection, &Pantabox::updateFinished, thing, [thing, connection](){ + connect(connection, &Pantabox::updateFinished, thing, [this, thing, connection](){ qCDebug(dcInro()) << "Update finished for" << thing; qCDebug(dcInro()) << connection; @@ -381,6 +384,15 @@ void IntegrationPluginInro::setupConnection(ThingSetupInfo *info) thing->setStateValue(pantaboxFirmwareVersionStateTypeId, connection->firmwareVersion()); thing->setStateValue(pantaboxTotalEnergyConsumedStateTypeId, connection->absoluteEnergy() / 1000.0); // Wh + // Sync states only right after the connection + if (m_initReadRequired.value(thing, false)) { + qCDebug(dcInro()) << "Set initial charging current and charging enabled values."; + m_initReadRequired.remove(thing); + if (connection->maxChargingCurrent() > 0) { + thing->setStateValue(pantaboxMaxChargingCurrentStateTypeId, connection->maxChargingCurrent()); + } + thing->setStateValue(pantaboxPowerStateTypeId, connection->chargingEnabled()); + } }); m_connections.insert(thing, connection); diff --git a/inro/integrationplugininro.h b/inro/integrationplugininro.h index 58aa8e2..17bb5a0 100644 --- a/inro/integrationplugininro.h +++ b/inro/integrationplugininro.h @@ -58,6 +58,8 @@ private: PluginTimer *m_refreshTimer = nullptr; QHash m_connections; QHash m_monitors; + QHash m_initReadRequired; + void setupConnection(ThingSetupInfo *info); };