OpenDTU-old/include/JsyMk.h
2024-04-28 09:55:35 +02:00

63 lines
1.4 KiB
C++

// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include <JSY_MK.h>
#include <TaskSchedulerDeclarations.h>
class JsyMkClass {
public:
enum class Field_t : size_t {
// Device informations
ADDRESS,
MANUFACTURER,
MODEL,
VERSION,
VOLTAGE_RANGE,
CURRENT_RANGE,
// Measures
VOLTAGE,
CURRENT,
POWER,
POWER_FACTOR,
FREQUENCY,
NEGATIVE,
TOTAL_POSITIVE_ENERGY,
TOTAL_NEGATIVE_ENERGY,
TODAY_POSITIVE_ENERGY,
TODAY_NEGATIVE_ENERGY
};
JsyMkClass();
void init(Scheduler& scheduler);
uint32_t getLastUpdate() const;
bool isInitialised() const;
uint32_t getPollInterval() const;
void setPollInterval(const uint32_t interval);
size_t getChannelNumber() const;
String getFieldName(size_t channel, Field_t fieldId) const;
String getFieldString(size_t channel, Field_t fieldId) const;
float getFieldValue(size_t channel, Field_t fieldId) const;
size_t getFieldDigits(Field_t fieldId) const;
String getFieldUnit(Field_t fieldId) const;
String getFieldDeviceClass(Field_t fieldId) const;
String getFieldStatusClass(Field_t fieldId) const;
void reset();
private:
void loop();
JSY_MK _jsymk;
Task _loopTask;
bool _initialised = false;
uint32_t _lastUpdate = 0;
float _todayPositiveRef = 0;
float _todayNegativeRef = 0;
};
extern JsyMkClass JsyMk;