// SPDX-License-Identifier: GPL-3.0-or-later /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright (C) 2013 - 2024, nymea GmbH * Copyright (C) 2024 - 2025, chargebyte austria GmbH * * This file is part of nymea-energy-plugin-nymea. * * nymea-energy-plugin-nymea.s free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * nymea-energy-plugin-nymea.s distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with nymea-energy-plugin-nymea. If not, see . * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ #include "energypluginnymea.h" #include "smartchargingmanager.h" #include "nymeaenergyjsonhandler.h" #include "energymanagerconfiguration.h" #include "spotmarket/spotmarketmanager.h" // [ETM] BEGIN — EnergyArbitrator flip. Remove block to revert to upstream SmartChargingManager. #ifdef ETM_ARBITRATOR #include "etm/energyarbitrator.h" #include "etm/adapters/ecsrelayadapter.h" #include "etm/adapters/sgreadyadapter.h" #endif // [ETM] END #include "plugininfo.h" EnergyPluginNymea::EnergyPluginNymea(QObject *parent) : EnergyPlugin(parent) { qCDebug(dcNymeaEnergy()) << "Loading nymea.energy plugin"; } void EnergyPluginNymea::init() { qCDebug(dcNymeaEnergy()) << "Initializing nymea.energy plugin"; EnergyManagerConfiguration *configuration = new EnergyManagerConfiguration(this); QNetworkAccessManager *networkManager = new QNetworkAccessManager(this); SpotMarketManager *spotMarketManager = new SpotMarketManager(networkManager, this); #ifdef ETM_ARBITRATOR qCDebug(dcNymeaEnergy()) << "ETM_ARBITRATOR actif — EnergyArbitrator chargé."; EnergyArbitrator *chargingManager = new EnergyArbitrator(energyManager(), thingManager(), spotMarketManager, configuration, this); // §1.d — Banc hems : adaptateurs ECS 3 relais + SG-Ready PAC (ThingIds briefing terrain). { ThingManager *tm = thingManager(); const QString R500 = "{8538782f-2c8c-4a30-bfce-c8140f791c9b}"; const QString R1000 = "{2ebe6bef-829b-4695-9d11-ddb4c16c5448}"; const QString R2000 = "{b033b212-1adb-4df0-ba2b-8fa477de52a2}"; auto *ecs = new EcsRelayAdapter( tm, "ecs-terrain", "ECS banc", QList({0, 500, 1000, 1500, 2000, 2500, 3000, 3500}), QList>({ {}, {R500}, {R1000}, {R500,R1000}, {R2000}, {R500,R2000}, {R1000,R2000}, {R500,R1000,R2000} }), 60, 60, 1, chargingManager); chargingManager->registerEcsAdapter(ecs); const QString K1 = "{beaf92e1-aedc-4b84-9ce4-e423648638cc}"; const QString K2 = "{bf236e64-5ae7-4bf1-82a6-4ede03de75a6}"; auto *pac = new SgReadyAdapter( tm, "pac-terrain", "PAC banc", QHash>({ {1,{K1}}, {2,{}}, {3,{K2}}, {4,{K1,K2}} }), QHash({ {1,0.0}, {2,0.0}, {3,1500.0}, {4,3000.0} }), 300, 2, chargingManager); chargingManager->registerSgReadyAdapter(pac); } #else SmartChargingManager *chargingManager = new SmartChargingManager(energyManager(), thingManager(), spotMarketManager, configuration, this); #endif jsonRpcServer()->registerExperienceHandler(new NymeaEnergyJsonHandler(spotMarketManager, chargingManager, this), 0, 8); }