2022-07-15 18:05:58 +02:00
|
|
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
2022-06-16 01:44:42 +02:00
|
|
|
#pragma once
|
|
|
|
|
|
2024-01-29 22:46:40 +01:00
|
|
|
#include "Configuration.h"
|
2022-12-14 22:13:03 +01:00
|
|
|
#include <ArduinoJson.h>
|
2022-06-16 01:44:42 +02:00
|
|
|
#include <ESPAsyncWebServer.h>
|
|
|
|
|
#include <Hoymiles.h>
|
2024-01-20 02:00:22 +01:00
|
|
|
#include <TaskSchedulerDeclarations.h>
|
2022-06-16 01:44:42 +02:00
|
|
|
|
|
|
|
|
class WebApiWsLiveClass {
|
|
|
|
|
public:
|
2022-07-20 19:36:07 +02:00
|
|
|
WebApiWsLiveClass();
|
2024-01-20 02:00:22 +01:00
|
|
|
void init(AsyncWebServer& server, Scheduler& scheduler);
|
2024-09-30 14:18:33 +02:00
|
|
|
void reload();
|
2022-06-16 01:44:42 +02:00
|
|
|
|
|
|
|
|
private:
|
2024-01-29 22:46:40 +01:00
|
|
|
static void generateInverterCommonJsonResponse(JsonObject& root, std::shared_ptr<InverterAbstract> inv);
|
|
|
|
|
static void generateInverterChannelJsonResponse(JsonObject& root, std::shared_ptr<InverterAbstract> inv);
|
|
|
|
|
static void generateCommonJsonResponse(JsonVariant& root);
|
|
|
|
|
|
|
|
|
|
static void addField(JsonObject& root, std::shared_ptr<InverterAbstract> inv, const ChannelType_t type, const ChannelNum_t channel, const FieldId_t fieldId, String topic = "");
|
|
|
|
|
static void addTotalField(JsonObject& root, const String& name, const float value, const String& unit, const uint8_t digits);
|
|
|
|
|
|
2022-07-20 20:54:57 +02:00
|
|
|
void onLivedataStatus(AsyncWebServerRequest* request);
|
2022-07-20 19:36:07 +02:00
|
|
|
void onWebsocketEvent(AsyncWebSocket* server, AsyncWebSocketClient* client, AwsEventType type, void* arg, uint8_t* data, size_t len);
|
|
|
|
|
|
|
|
|
|
AsyncWebSocket _ws;
|
2025-01-14 19:14:13 +01:00
|
|
|
AsyncAuthenticationMiddleware _simpleDigestAuth;
|
2022-06-17 13:29:21 +02:00
|
|
|
|
2024-01-29 22:46:40 +01:00
|
|
|
uint32_t _lastPublishStats[INV_MAX_COUNT] = { 0 };
|
2023-09-02 01:41:53 +02:00
|
|
|
|
|
|
|
|
std::mutex _mutex;
|
2024-01-20 02:00:22 +01:00
|
|
|
|
|
|
|
|
Task _wsCleanupTask;
|
|
|
|
|
void wsCleanupTaskCb();
|
|
|
|
|
|
|
|
|
|
Task _sendDataTask;
|
|
|
|
|
void sendDataTaskCb();
|
|
|
|
|
};
|