Skip to content

Commit

Permalink
UI Config updates
Browse files Browse the repository at this point in the history
  • Loading branch information
mathieucarbou committed Jun 3, 2024
1 parent c16ba62 commit 63b66c6
Show file tree
Hide file tree
Showing 3 changed files with 103 additions and 95 deletions.
164 changes: 84 additions & 80 deletions data/config.html
Original file line number Diff line number Diff line change
Expand Up @@ -61,104 +61,108 @@ <h1>YaSolR Configuration</h1>

<script>
const supportedConfig = {
Pinout: "TITLE",

"Output 1 Control": "TITLE",
o1_dim_limit: ["Dimmer Limiter (limit dimmer level 0-100)", "percent"],
o1_ad_enable: ["Dimmer Automatic Control", "switch"],
o1_ab_enable: ["Bypass Automatic Control", "switch"],
o1_days: ["Bypass Week Days", "string"],
o1_time_start: ["Bypass Start Time (HH:mm)", "time"],
o1_time_stop: ["Bypass Stop Time (HH:mm)", "time"],
o1_temp_start: ["Bypass Start Temperature (C)", "uint"],
o1_temp_stop: ["Bypass Stop Temperature (C)", "uint"],

"Output 2 Control": "TITLE",
o2_dim_limit: ["Dimmer Limiter (limit dimmer level 0-100)", "percent"],
o2_ad_enable: ["Dimmer Automatic Control", "switch"],
o2_ab_enable: ["Bypass Automatic Control", "switch"],
o2_days: ["Bypass Week Days", "string"],
o2_time_start: ["Bypass Start Time (HH:mm)", "time"],
o2_time_stop: ["Bypass Stop Time (HH:mm)", "time"],
o2_temp_start: ["Bypass Start Temperature (C)", "uint"],
o2_temp_stop: ["Bypass Stop Temperature (C)", "uint"],

"Relays": "TITLE",
relay1_load: ["Relay 1 Automatic Control: Connected Load (Watts)", "uint"],
relay2_load: ["Relay 2 Automatic Control: Connected Load (Watts)", "uint"],

"Management": "TITLE",
debug_enable: ["Enable Debug Logging", "switch"],

"GPIO (config)": "TITLE",
pin_o1_dim: ["Dimmer for Output 1", "pin"],
pin_o2_dim: ["Dimmer for Output 2", "pin"],
pin_disp_scl: ["Display SCL (CLOCK)", "pin"],
pin_disp_sda: ["Display SDA (DATA)", "pin"],
pin_ds18: ["DS18 of router", "pin"],
pin_jsy_rx: ["Serial RX connected to JSY TX", "pin"],
pin_jsy_tx: ["Serial TX connected to JSY RX", "pin"],
pin_o1_ds18: ["DS18 for Output 1", "pin"],
pin_o2_ds18: ["DS18 for Output 2", "pin"],
pin_ds18: ["DS18 for Router", "pin"],
pin_jsy_rx: ["Serial RX for JSY TX", "pin"],
pin_jsy_tx: ["Serial TX for JSY RX", "pin"],
pin_lights_g: ["LED Green", "pin"],
pin_lights_r: ["LED Red", "pin"],
pin_lights_y: ["LED Yellow", "pin"],
pin_o1_dim: ["Output 1 Dimmer", "pin"],
pin_o1_ds18: ["Output 1 DS18", "pin"],
pin_o1_relay: ["Output 1 Bypass Relay", "pin"],
pin_o2_dim: ["Dimmer", "pin"],
pin_o2_ds18: ["Output 2 DS18", "pin"],
pin_o2_relay: ["Output 2 Bypass Relay", "pin"],
pin_pzem_rx: ["Serial RX connected to PZEM TX", "pin"],
pin_pzem_tx: ["Serial TX connected to PZEM RX", "pin"],
pin_pzem_rx: ["Serial RX for PZEM TX", "pin"],
pin_pzem_tx: ["Serial TX for PZEM RX", "pin"],
pin_relay1: ["Relay 1", "pin"],
pin_relay2: ["Relay 2", "pin"],
pin_relay2: ["Relay 2", "pin"],
pin_o1_relay: ["Relay for Output 1 Bypass", "pin"],
pin_o2_relay: ["Relay for Output 2 Bypass", "pin"],
pin_zcd: ["Zero-Cross Detection", "pin"],

"Enable / Disable": "TITLE",
ap_mode_enable: ["Enable Access Point Mode", "switch"],
debug_enable: ["Enable Debug Logging", "switch"],
disp_enable: ["Enable Display (display is connected)", "switch"],
ds18_sys_enable: ["Enable DS18 for Router (DS18 sensor is connected)", "switch"],
ha_disco_enable: ["Enable Home Assistant Integration", "switch"],
jsy_enable: ["Enable JSY (JSY board is connected)", "switch"],
lights_enable: ["Enable LEDs (Traffic Light LEDs are connected)", "switch"],
mqtt_enable: ["Enable MQTT", "switch"],
o1_ab_enable: ["Enable Output 1 automatic bypass based on temperature, days and hours", "switch"],
o1_ad_enable: ["Enable Output 1 automatic routing based on grid power", "switch"],
o1_ds18_enable: ["Enable Output 1 temperature (DS18 sensor is connected)", "switch"],
o1_dim_enable: ["Enable Output 1 (dimmer is connected)", "switch"],
o1_pzem_enable: ["Enable Output 1 PZEM (PZEM is connected)", "switch"],
o1_relay_enable: ["Enable Output 1 Bypass Relay (relay is connected)", "switch"],
o2_ab_enable: ["Enable Output 2 automatic bypass based on temperature, days and hours", "switch"],
o2_ad_enable: ["Enable Output 2 automatic routing based on grid power", "switch"],
o2_ds18_enable: ["Enable Output 2 temperature (DS18 sensor is connected)", "switch"],
o2_dim_enable: ["Enable Output 2 (dimmer is connected)", "switch"],
o2_pzem_enable: ["Enable Output 2 PZEM (PZEM is connected)", "switch"],
o2_relay_enable: ["Enable Output 2 Bypass Relay (relay is connected)", "switch"],
"Hardware (activation)": "TITLE",
disp_enable: ["Display", "switch"],
jsy_enable: ["JSY", "switch"],
lights_enable: ["LEDs", "switch"],
mqtt_enable: ["MQTT", "switch"],
o1_dim_enable: ["Output 1 Dimmer", "switch"],
o1_ds18_enable: ["Output 1 DS18", "switch"],
o1_pzem_enable: ["Output 1 PZEM", "switch"],
o1_relay_enable: ["Output 1 Relay (Bypass)", "switch"],
o2_dim_enable: ["Output 2 Dimmer", "switch"],
o2_ds18_enable: ["Output 2 DS18", "switch"],
o2_pzem_enable: ["Output 2 PZEM", "switch"],
o2_relay_enable: ["Output 2 Relay (Bypass)", "switch"],
relay1_enable: ["Enable Relay 1", "switch"],
relay2_enable: ["Enable Relay 2", "switch"],
ds18_sys_enable: ["Router DS18", "switch"],
zcd_enable: ["Enable Zero-Cross Detection", "switch"],

Display: "TITLE",
disp_type: ["Display type", "select", "SH1106,SH1107,SSD1306"],
disp_angle: ["Display rotation", "select", "0,90,180,270"],

Electricity: "TITLE",
grid_freq: ["Grid frequency", "select", "50,60"],
grid_pow_mqtt: ["Grid power read from MQTT topic", "string"],
grid_volt: ["Grid voltage", "select", "230,110"],
grid_volt_mqtt: ["Grid voltage read MQTT topic", "string"],

"Hardware (config)": "TITLE",
relay1_type: ["Relay 1 Type", "select", "NO,NC"],
relay2_type: ["Relay 2 Type", "select", "NO,NC"],
o1_relay_type: ["Output 1 Bypass Relay Type", "select", "NO,NC"],
o2_relay_type: ["Output 2 Bypass Relay Type", "select", "NO,NC"],
disp_type: ["Display Type", "select", "SH1106,SH1107,SSD1306"],
disp_angle: ["Display Rotation", "select", "0,90,180,270"],
grid_freq: ["Grid frequency (default)", "select", "50,60"],
grid_volt: ["Grid voltage (default)", "select", "230,110"],
MQTT: "TITLE",
mqtt_secure: ["MQTT secure connection ?", "switch"],
mqtt_server: ["MQTT server address", "string"],
mqtt_port: ["MQTT server port", "uint"],
mqtt_user: ["MQTT username", "string"],
mqtt_pwd: ["MQTT password", "string"],
mqtt_topic: ["MQTT topic", "string"],
mqtt_pub_itvl: ["MQTT publish interval (in seconds)", "uint"],
ha_disco_topic: ["Home Assistant Discovery topic", "string"],
mqtt_server: ["Server", "string"],
mqtt_port: ["Port", "uint"],
mqtt_user: ["Username", "string"],
mqtt_pwd: ["Password", "string"],
mqtt_secure: ["SSL / TLS", "switch"],
mqtt_pub_itvl: ["Publish Interval (s)", "uint"],
mqtt_topic: ["Base Topic", "string"],
ha_disco_enable: ["Home Assistant Integration", "switch"],
ha_disco_topic: ["Home Assistant Discovery Topic", "string"],
grid_volt_mqtt: ["Grid Voltage from MQTT Topic", "string"],
grid_pow_mqtt: ["Grid Power from MQTT Topic", "string"],

Network: "TITLE",
admin_pwd: ["Admin password", "password"],
ntp_server: ["NTP Server", "string"],
ntp_timezone: ["NTP Timezone", "tz"],
wifi_ssid: ["WiFi SSID", "string"],
wifi_pwd: ["WiFi password", "password"],
ntp_server: ["NTP server address", "string"],
ntp_timezone: ["NTP timezone", "tz"],

"Output 1": "TITLE",
o1_dim_limit: ["Output 1 dimmer limiter (limit dimmer level)", "percent"],
o1_relay_type: ["Output 1 bypass relay type", "select", "NO,NC"],
o1_days: ["Output 1 auto bypass weekdays", "string"],
o1_time_start: ["Output 1 auto bypass start time", "time"],
o1_time_stop: ["Output 1 auto bypass stop time", "time"],
o1_temp_start: ["Output 1 auto bypass start temperature", "uint"],
o1_temp_stop: ["Output 1 auto bypass stop temperature", "uint"],

"Output 2": "TITLE",
o2_dim_limit: ["Output 2 dimmer limiter (limit dimmer level)", "percent"],
o2_relay_type: ["Output 2 bypass relay type", "select", "NO,NC"],
o2_days: ["Output 2 auto bypass weekdays", "string"],
o2_time_start: ["Output 2 auto bypass start time", "time"],
o2_time_stop: ["Output 2 auto bypass stop time", "time"],
o2_temp_start: ["Output 2 auto bypass start temperature", "uint"],
o2_temp_stop: ["Output 2 auto bypass stop temperature", "uint"],

"Relay 1": "TITLE",
relay1_type: ["Relay 1 type", "select", "NO,NC"],
relay1_load: ["Load in Watts connected to Relay 1 (to activate automatic relay switching)", "uint"],
wifi_pwd: ["WiFi Password", "password"],
ap_mode_enable: ["Stay in AP Mode", "switch"],





"Relay 2": "TITLE",
relay2_type: ["Relay 2 type", "select", "NO,NC"],
relay2_load: ["Load in Watts connected to Relay 2 (to activate automatic relay switching)", "uint"],
};

async function onInputChange(event) {
Expand Down
31 changes: 16 additions & 15 deletions include/YaSolRWebsite.h
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ namespace YaSolR {
Card _relay1Load = Card(&dashboard, TEXT_INPUT_CARD, "Relay 1 Automatic Control: Connected Load (Watts)");
Card _relay1Switch = Card(&dashboard, BUTTON_CARD, "Relay 1 Manual Control");
Card _relay1SwitchRO = Card(&dashboard, STATUS_CARD, "Relay 1");
Card _relay2Load = Card(&dashboard, TEXT_INPUT_CARD, "Relay 1 Automatic Control: Connected Load (Watts)");
Card _relay2Load = Card(&dashboard, TEXT_INPUT_CARD, "Relay 2 Automatic Control: Connected Load (Watts)");
Card _relay2Switch = Card(&dashboard, BUTTON_CARD, "Relay 2 Manual Control");
Card _relay2SwitchRO = Card(&dashboard, STATUS_CARD, "Relay 2");

Expand All @@ -155,8 +155,8 @@ namespace YaSolR {
Tab _pinLiveTab = Tab(&dashboard, "\u21C6 GPIO (status)");
Card _pinDimmerO1Live = Card(&dashboard, STATUS_CARD, "Dimmer for Output 1", DASH_STATUS_IDLE);
Card _pinDimmerO2Live = Card(&dashboard, STATUS_CARD, "Dimmer for Output 2", DASH_STATUS_IDLE);
Card _pinDisplayClockLive = Card(&dashboard, STATUS_CARD, "Display Clock", DASH_STATUS_IDLE);
Card _pinDisplayDataLive = Card(&dashboard, STATUS_CARD, "Display Data", DASH_STATUS_IDLE);
Card _pinDisplayClockLive = Card(&dashboard, STATUS_CARD, "Display SCL (CLOCK)", DASH_STATUS_IDLE);
Card _pinDisplayDataLive = Card(&dashboard, STATUS_CARD, "Display SDA (DATA)", DASH_STATUS_IDLE);
Card _pinDS18O1Live = Card(&dashboard, STATUS_CARD, "DS18 for Output 1", DASH_STATUS_IDLE);
Card _pinDS18O2Live = Card(&dashboard, STATUS_CARD, "DS18 for Output 2", DASH_STATUS_IDLE);
Card _pinDS18RouterLive = Card(&dashboard, STATUS_CARD, "DS18 for Router", DASH_STATUS_IDLE);
Expand All @@ -176,8 +176,8 @@ namespace YaSolR {
Tab _pinConfigTab = Tab(&dashboard, "\u21C6 GPIO (config)");
Card _pinDimmerO1 = Card(&dashboard, TEXT_INPUT_CARD, "Dimmer for Output 1");
Card _pinDimmerO2 = Card(&dashboard, TEXT_INPUT_CARD, "Dimmer for Output 2");
Card _pinDisplayClock = Card(&dashboard, TEXT_INPUT_CARD, "Display Clock");
Card _pinDisplayData = Card(&dashboard, TEXT_INPUT_CARD, "Display Data");
Card _pinDisplayClock = Card(&dashboard, TEXT_INPUT_CARD, "Display SCL (CLOCK)");
Card _pinDisplayData = Card(&dashboard, TEXT_INPUT_CARD, "Display SDA (DATA)");
Card _pinDS18O1 = Card(&dashboard, TEXT_INPUT_CARD, "DS18 for Output 1");
Card _pinDS18O2 = Card(&dashboard, TEXT_INPUT_CARD, "DS18 for Output 2");
Card _pinDS18Router = Card(&dashboard, TEXT_INPUT_CARD, "DS18 for Router");
Expand All @@ -197,8 +197,8 @@ namespace YaSolR {
Tab _pinViewTab = Tab(&dashboard, "\u21C6 GPIO (validation)");
Card _pinDimmerO1View = Card(&dashboard, STATUS_CARD, "Dimmer for Output 1", DASH_STATUS_IDLE);
Card _pinDimmerO2View = Card(&dashboard, STATUS_CARD, "Dimmer for Output 2", DASH_STATUS_IDLE);
Card _pinDisplayClockView = Card(&dashboard, STATUS_CARD, "Display Clock", DASH_STATUS_IDLE);
Card _pinDisplayDataView = Card(&dashboard, STATUS_CARD, "Display Data", DASH_STATUS_IDLE);
Card _pinDisplayClockView = Card(&dashboard, STATUS_CARD, "Display SCL (CLOCK)", DASH_STATUS_IDLE);
Card _pinDisplayDataView = Card(&dashboard, STATUS_CARD, "Display SDA (DATA)", DASH_STATUS_IDLE);
Card _pinDS18O1View = Card(&dashboard, STATUS_CARD, "DS18 for Output 1", DASH_STATUS_IDLE);
Card _pinDS18O2View = Card(&dashboard, STATUS_CARD, "DS18 for Output 2", DASH_STATUS_IDLE);
Card _pinDS18RouterView = Card(&dashboard, STATUS_CARD, "DS18 for Router", DASH_STATUS_IDLE);
Expand Down Expand Up @@ -248,19 +248,20 @@ namespace YaSolR {
Card _output2Relay = Card(&dashboard, BUTTON_CARD, "Output 2 Relay (Bypass)");
Card _relay1 = Card(&dashboard, BUTTON_CARD, "Relay 1");
Card _relay2 = Card(&dashboard, BUTTON_CARD, "Relay 2");
Card _systemTemp = Card(&dashboard, BUTTON_CARD, "System Temperature Sensor");
Card _systemTemp = Card(&dashboard, BUTTON_CARD, "Router DS18");
Card _zcd = Card(&dashboard, BUTTON_CARD, "Zero-Cross Detection");

Tab _hardwareConfigTab = Tab(&dashboard, "\u2699 Hardware (config)");
Card _gridFreq = Card(&dashboard, DROPDOWN_CARD, "Grid Frequency");
Card _displayType = Card(&dashboard, DROPDOWN_CARD, "Display Type");
Card _displayRotation = Card(&dashboard, DROPDOWN_CARD, "Display Rotation");
Card _relay1Type = Card(&dashboard, DROPDOWN_CARD, "Relay 1 Type");
Card _output1RelayType = Card(&dashboard, DROPDOWN_CARD, "Output 1 Bypass Relay Type");
Card _output1PZEMSync = Card(&dashboard, PUSH_BUTTON_CARD, "Output 1 PZEM Pairing");
Card _relay2Type = Card(&dashboard, DROPDOWN_CARD, "Relay 2 Type");
Card _output1RelayType = Card(&dashboard, DROPDOWN_CARD, "Output 1 Bypass Relay Type");
Card _output2RelayType = Card(&dashboard, DROPDOWN_CARD, "Output 2 Bypass Relay Type");
Card _output1PZEMSync = Card(&dashboard, PUSH_BUTTON_CARD, "Output 1 PZEM Pairing");
Card _output2PZEMSync = Card(&dashboard, PUSH_BUTTON_CARD, "Output 2 PZEM Pairing");
Card _displayType = Card(&dashboard, DROPDOWN_CARD, "Display Type");
Card _displayRotation = Card(&dashboard, DROPDOWN_CARD, "Display Rotation");
Card _gridFreq = Card(&dashboard, DROPDOWN_CARD, "Grid Frequency (default)");
Card _gridVolt = Card(&dashboard, DROPDOWN_CARD, "Grid Voltage (default)");

Tab _mqttConfigTab = Tab(&dashboard, "\u2728 MQTT");
Card _mqttServer = Card(&dashboard, TEXT_INPUT_CARD, "Server");
Expand All @@ -271,8 +272,8 @@ namespace YaSolR {
Card _mqttServerCert = Card(&dashboard, FILE_UPLOAD_CARD, "Server Certificate", ".pem,crt,der");
Card _mqttPublishInterval = Card(&dashboard, SLIDER_CARD, "Publish Interval", "s", 5, 30, 1);
Card _mqttTopic = Card(&dashboard, TEXT_INPUT_CARD, "Base Topic");
Card _haDiscovery = Card(&dashboard, BUTTON_CARD, "Home Assistant Discovery");
Card _haDiscoveryTopic = Card(&dashboard, TEXT_INPUT_CARD, "Discovery Topic");
Card _haDiscovery = Card(&dashboard, BUTTON_CARD, "Home Assistant Integration");
Card _haDiscoveryTopic = Card(&dashboard, TEXT_INPUT_CARD, "Home Assistant Discovery Topic");
Card _mqttGridVoltage = Card(&dashboard, TEXT_INPUT_CARD, "Grid Voltage from MQTT Topic");
Card _mqttGridPower = Card(&dashboard, TEXT_INPUT_CARD, "Grid Power from MQTT Topic");

Expand Down
3 changes: 3 additions & 0 deletions src/Website.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -264,6 +264,7 @@ void YaSolR::WebsiteClass::initLayout() {
_displayRotation.setTab(&_hardwareConfigTab);
_displayType.setTab(&_hardwareConfigTab);
_gridFreq.setTab(&_hardwareConfigTab);
_gridVolt.setTab(&_hardwareConfigTab);
_output1PZEMSync.setTab(&_hardwareConfigTab);
_output1RelayType.setTab(&_hardwareConfigTab);
_output2PZEMSync.setTab(&_hardwareConfigTab);
Expand All @@ -273,6 +274,7 @@ void YaSolR::WebsiteClass::initLayout() {

_numConfig(_displayRotation, KEY_DISPLAY_ROTATION);
_numConfig(_gridFreq, KEY_GRID_FREQUENCY);
_numConfig(_gridVolt, KEY_GRID_VOLTAGE);
_numConfig(_relay1Load, KEY_RELAY1_LOAD);
_numConfig(_relay2Load, KEY_RELAY2_LOAD);
_textConfig(_displayType, KEY_DISPLAY_TYPE);
Expand Down Expand Up @@ -509,6 +511,7 @@ void YaSolR::WebsiteClass::initCards() {

// Hardware (config)
_gridFreq.update(config.get(KEY_GRID_FREQUENCY).toInt() == 60 ? "60 Hz" : "50 Hz", "50 Hz,60 Hz");
_gridVolt.update(config.get(KEY_GRID_VOLTAGE).toInt() == 110 ? "110 V" : "220 V", "110 V,220 V");
_output1RelayType.update(config.get(KEY_OUTPUT1_RELAY_TYPE), "NO,NC");
_output2RelayType.update(config.get(KEY_OUTPUT2_RELAY_TYPE), "NO,NC");
_relay1Type.update(config.get(KEY_RELAY1_TYPE), "NO,NC");
Expand Down

0 comments on commit 63b66c6

Please sign in to comment.