JBWOPR
Loading...
Searching...
No Matches
jbwoprha.h
Go to the documentation of this file.
1
9#ifndef ARDUINO_WOPR_JBWOPRHA_H
10#define ARDUINO_WOPR_JBWOPRHA_H
11
12#include "jbwoprmqtt.h"
13#include "WiFiManager.h"
14#include <jblogger.h>
15
16// ====================================================================
17//
18// W.O.P.R. with WiFiManager, MQTT and Home Assistant support
19//
20// ====================================================================
23 bool useHomeAssistant;
24 std::string homeAssistantDiscoveryPrefix;
25};
26
30public:
31 // ====================================================================
32 // General
33 //
36
42 bool begin(JBWoprBoardVariant variant) override;
43
49 bool begin(JBWoprBoardVariant variant, JBWoprBoardPins pins) override;
50
53 void loop() override;
54
55 // ====================================================================
56 // Logger
57 //
62 void setLogLevel(LogLevel level) override;
63
67 LogLevel getLogLevel() override;
68
69protected:
70 // ====================================================================
71 // Configuration
72 //
74
75 const char* JSON_KEY_HA_USE_HOME_ASSISTANT = "useHomeAssistant";
76 const char* JSON_KEY_HA_DISCOVERY_PREFIX = "discoveryPrefix";
77
80 void _setConfigFromJsonDocument(const JsonDocument &jsonDoc) override;
81
84 void _setJsonDocumentFromConfig(JsonDocument &jsonDoc) override;
85
89 void _dumpConfig() override;
90
91 // ====================================================================
92 // Wifi
93 //
94 const char* HTML_HOME_ASSISTANT_TITLE = "<h2>Home Assistant settings</h2>";
95 const char* HTML_CHECKBOX_TRUE = "type=\"checkbox\" checked";
96 const char* HTML_CHECKBOX_FALSE = "type=\"checkbox\"";
97
98 WiFiManagerParameter* _homeAssistantTitleParam;
99 WiFiManagerParameter* _useHomeAssistantParam;
101 WiFiManagerParameter* _break3Param;
102
103 void _setupWiFiManager() override;
104 void _saveParamsCallback() override;
105
106 // ====================================================================
107 // MQTT
108 //
109 const char* ENTITY_NAME_DIAGNOSTIC = "diagnostic";
110 const char* ENTITY_NAME_CONFIG = "config";
111
115 bool _onMqttConnect() override;
116
117 // ====================================================================
118 // Home Assistant
119 //
120 const char* HA_DIAG_PREFIX = "diagnostic";
121 const char* HA_CONFIG_PREFIX = "config";
122
123 const char* HA_COMPONENT_LIGHT = "light";
124 const char* HA_COMPONENT_NUMBER = "number";
125 const char* HA_COMPONENT_SELECT = "select";
126 const char* HA_COMPONENT_SENSOR = "sensor";
127 const char* HA_COMPONENT_SWITCH = "switch";
128 const char* HA_COMPONENT_BUTTON = "button";
129
130 const char* HA_DIAG_ENTITY_IP = "ip";
131 const char* HA_DIAG_ENTITY_RSSI = "rssi";
132 const char* HA_DIAG_ENTITY_RAM = "ram";
133 const char* HA_CONF_ENTITY_DATE_FORMAT = "date_format";
134 const char* HA_CONF_ENTITY_TIME_FORMAT = "time_format";
135 const char* HA_CONF_ENTITY_DISPLAY_BRIGHTNESS = "display_brightness";
136 const char* HA_CONF_ENTITY_DEFCON_BRIGHTNESS = "defcon_brightness";
137 const char* HA_CONF_ENTITY_EFFECTS_TIMEOUT = "effects_timeout";
138 const char* HA_CONF_ENTITY_WIFI_USE_WEB_PORTAL = "use_web_portal";
139 const char* HA_CONF_ENTITY_RESTART = "restart";
140
141 const char* JSON_KEY_HA_DIAG_ENTITY_IP = "ipAddress";
142 const char* JSON_KEY_HA_DIAG_ENTITY_RSSI = "rssi";
143 const char* JSON_KEY_HA_DIAG_ENTITY_RAM = "ram";
144 const char* JSON_KEY_HA_DIAG_ENTITY_VERSION = "version";
145
146 const std::vector<std::string> _defconNames { "None", "DEFCON 5", "DEFCON 4", "DEFCON 3", "DEFCON 2", "DEFCON 1" };
147
150
153
156
159
164 std::string _getDiscoveryTopic(const std::string& component,
165 const std::string& prefix,
166 const std::string& entity);
167
176 void _addDiscoveryPayload(JsonDocument &jsonDoc,
177 const std::string& name,
178 const std::string& prefix,
179 const std::string& entity,
180 const std::string& templateValue,
181 const std::string& icon,
182 const std::string& unitOfMeasurement = "");
183
186 void _addDeviceData(JsonDocument &jsonDoc);
187
190 void _addAvailabilityData(JsonDocument &jsonDoc);
191
192private:
193 // ====================================================================
194 // Logger
195 //
196 JBLogger* _log;
197};
198
199
200#endif //ARDUINO_WOPR_JBWOPRHA_H
W.O.P.R. WiFi, MQTT and HomeAssistant device class.
Definition jbwoprha.h:29
const char * JSON_KEY_HA_DIAG_ENTITY_RSSI
RSSI entity key name.
Definition jbwoprha.h:142
const char * HA_CONF_ENTITY_TIME_FORMAT
Time format entity name.
Definition jbwoprha.h:134
const char * HA_CONF_ENTITY_DEFCON_BRIGHTNESS
DEFCON brightness entity name.
Definition jbwoprha.h:136
const char * HTML_CHECKBOX_FALSE
HTML checkbox false.
Definition jbwoprha.h:96
const char * HA_CONF_ENTITY_EFFECTS_TIMEOUT
Effects timeout entity name.
Definition jbwoprha.h:137
bool _homeAssistantPublishConfig()
Publish Home Assistant configuration.
Definition jbwoprha.cpp:443
const char * ENTITY_NAME_CONFIG
Config entity name.
Definition jbwoprha.h:110
const char * HA_CONF_ENTITY_WIFI_USE_WEB_PORTAL
Use web portal entity name.
Definition jbwoprha.h:138
void _dumpConfig() override
Dump configuration to logger.
Definition jbwoprha.cpp:80
const char * HA_DIAG_PREFIX
Diagnostic discovery prefix.
Definition jbwoprha.h:120
const char * HA_CONF_ENTITY_DATE_FORMAT
Date format entity name.
Definition jbwoprha.h:133
const char * JSON_KEY_HA_DIAG_ENTITY_IP
IP entity key name.
Definition jbwoprha.h:141
const char * HA_COMPONENT_LIGHT
Light component.
Definition jbwoprha.h:123
WiFiManagerParameter * _homeAssistantDiscoveryPrefixParam
Home Assistant discovery prefix.
Definition jbwoprha.h:100
const char * HTML_HOME_ASSISTANT_TITLE
MQTT title.
Definition jbwoprha.h:94
const char * HA_COMPONENT_BUTTON
Button component.
Definition jbwoprha.h:128
const char * HA_CONF_ENTITY_RESTART
Restart entity name.
Definition jbwoprha.h:139
bool _homeAssistantSendDiscovery()
Send Home Assistant discovery.
Definition jbwoprha.cpp:136
bool begin(JBWoprBoardVariant variant) override
Initialize JBWoprHADevice.
Definition jbwoprha.cpp:25
void _setJsonDocumentFromConfig(JsonDocument &jsonDoc) override
Set JSON document from configuration.
Definition jbwoprha.cpp:74
WiFiManagerParameter * _break3Param
Break.
Definition jbwoprha.h:101
void _addAvailabilityData(JsonDocument &jsonDoc)
Add availability data to Home Assistant discovery message.
Definition jbwoprha.cpp:515
const char * HA_COMPONENT_SENSOR
Sensor component.
Definition jbwoprha.h:126
void loop() override
JBWoprHADevice loop.
Definition jbwoprha.cpp:42
const char * JSON_KEY_HA_DIAG_ENTITY_VERSION
Version entity key name.
Definition jbwoprha.h:144
LogLevel getLogLevel() override
Get log level.
Definition jbwoprha.cpp:56
void setLogLevel(LogLevel level) override
Set log level.
Definition jbwoprha.cpp:51
const char * JSON_KEY_HA_DISCOVERY_PREFIX
Home Assistant discovery prefix key name.
Definition jbwoprha.h:76
bool _onMqttConnect() override
Called when MQTT client get connected.
Definition jbwoprha.cpp:115
const char * HA_COMPONENT_NUMBER
Number component.
Definition jbwoprha.h:124
const std::vector< std::string > _defconNames
DEFCON names.
Definition jbwoprha.h:146
const char * HA_DIAG_ENTITY_RAM
RAM entity name.
Definition jbwoprha.h:132
const char * HA_CONFIG_PREFIX
Config discovery prefix.
Definition jbwoprha.h:121
bool _homeAssistantPublishDiagnostics()
Publish Home Assistant diagnostics.
Definition jbwoprha.cpp:423
void _saveParamsCallback() override
Save parameters callback.
Definition jbwoprha.cpp:106
const char * HA_CONF_ENTITY_DISPLAY_BRIGHTNESS
Display brightness entity name.
Definition jbwoprha.h:135
const char * HA_DIAG_ENTITY_RSSI
RSSI entity name.
Definition jbwoprha.h:131
JBWoprHAConfig _haConfig
Home Assistant configuration.
Definition jbwoprha.h:73
JBWoprHADevice()
JBWoprHADevice constructor.
Definition jbwoprha.cpp:16
std::string _getDiscoveryTopic(const std::string &component, const std::string &prefix, const std::string &entity)
Get Home Assistant discovery topic.
Definition jbwoprha.cpp:473
const char * HA_COMPONENT_SELECT
Select component.
Definition jbwoprha.h:125
const char * ENTITY_NAME_DIAGNOSTIC
Diagnostics entity name.
Definition jbwoprha.h:109
const char * JSON_KEY_HA_DIAG_ENTITY_RAM
RAM entity key name.
Definition jbwoprha.h:143
const char * HA_DIAG_ENTITY_IP
IP entity name.
Definition jbwoprha.h:130
const char * JSON_KEY_HA_USE_HOME_ASSISTANT
Use Home Assistant key name.
Definition jbwoprha.h:75
void _setConfigFromJsonDocument(const JsonDocument &jsonDoc) override
Set configuration from JSON document.
Definition jbwoprha.cpp:63
WiFiManagerParameter * _homeAssistantTitleParam
Home Assistant title.
Definition jbwoprha.h:98
bool _homeAssistantPublishState()
Publish Home Assistant state.
Definition jbwoprha.cpp:453
void _addDeviceData(JsonDocument &jsonDoc)
Add device data to Home Assistant discovery message.
Definition jbwoprha.cpp:502
WiFiManagerParameter * _useHomeAssistantParam
Use Home Assistant.
Definition jbwoprha.h:99
const char * HA_COMPONENT_SWITCH
Switch component.
Definition jbwoprha.h:127
void _addDiscoveryPayload(JsonDocument &jsonDoc, const std::string &name, const std::string &prefix, const std::string &entity, const std::string &templateValue, const std::string &icon, const std::string &unitOfMeasurement="")
Generate basic discovery message.
Definition jbwoprha.cpp:477
void _setupWiFiManager() override
Setup WiFiManager.
Definition jbwoprha.cpp:89
const char * HTML_CHECKBOX_TRUE
HTML checkbox true.
Definition jbwoprha.h:95
W.O.P.R. WiFi and MQTT device class.
Definition jbwoprmqtt.h:38
JBWoprBoardVariant
W.O.P.R. board version.
Definition jbwopr.h:28
Main source file for the JBWopr library.
W.O.P.R. board pin assignments.
Definition jbwopr.h:44
JBWoprHADevice configuration.
Definition jbwoprha.h:22