// SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include #include #include #include #include "Configuration.h" #include "PowerMeterSml.h" class PowerMeterHttpSml : public PowerMeterSml { public: ~PowerMeterHttpSml(); bool init() final { return true; } void loop() final; bool updateValues(); char tibberPowerMeterError[256]; bool query(HttpRequestConfig const& config); private: uint32_t _lastPoll = 0; std::unique_ptr wifiClient; std::unique_ptr httpClient; String httpResponse; bool httpRequest(const String& host, uint16_t port, const String& uri, bool https, HttpRequestConfig const& config); bool extractUrlComponents(String url, String& _protocol, String& _hostname, String& _uri, uint16_t& uint16_t, String& _base64Authorization); void prepareRequest(uint32_t timeout); };