diff --git a/.github/actions/build/action.yml b/.github/actions/build/action.yml
index 2a6f4083..54ef2ac4 100644
--- a/.github/actions/build/action.yml
+++ b/.github/actions/build/action.yml
@@ -1,24 +1,32 @@
name: arduino-cli build
description: Build using arduino-cli and makefile
-
runs:
using: composite
steps:
+ - id: semver
+ run: cat version.h | sed -n '/^#define _SEMVER_FULL.*$/s/^#.*"\(.*\)"$/semver=\1/p' >> $GITHUB_OUTPUT
+ shell: bash
+ - id: create-build-dir
+ run: mkdir -p build
+ shell: bash
- id: build
- run: make -j$(nproc)
+ run: |
+ make -j$(nproc)
+ find build -type f
+ for file in build/**/*.ino.bin; do mv "$file" "build/$(basename -s .ino.bin ${file})-${{steps.semver.outputs.semver}}.ino.bin"; done
+ for file in build/**/*.ino.elf; do mv "$file" "build/$(basename -s .ino.elf ${file})-${{steps.semver.outputs.semver}}.ino.elf"; done
shell: bash
- id: filesys
- run: make filesystem
- shell: bash
- - id: semver
- run: cat version.h | sed -n '/^#define _SEMVER_FULL.*$/s/^#.*"\(.*\)"$/semver=\1/p' >> $GITHUB_OUTPUT
+ run: |
+ make filesystem
+ for file in build/*.ino.littlefs.bin; do mv "$file" "build/$(basename -s .ino.littlefs.bin $file).${{steps.semver.outputs.semver}}.littlefs.bin"; done
shell: bash
+
- id: upload
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v4
with:
name: OTGW-firmware-${{steps.semver.outputs.semver}}
path: |
- build/**/*.bin
- build/**/*.elf
- build/*.bin
+ build/*.elf
+ build/*.bin
\ No newline at end of file
diff --git a/.github/actions/build/transfer.dat b/.github/actions/build/transfer.dat
deleted file mode 100644
index 51d0ae6a..00000000
--- a/.github/actions/build/transfer.dat
+++ /dev/null
@@ -1,28 +0,0 @@
-id version address size mask name
-0 3.0 00 1 e0 SavedSettings
-1 3.0 01 4 0 FunctionLED
-2 3.0 e0 32 0 AlternativeCmd
-3 4.0a3 d8 8 0 ThermResponse
-4 4.0a6 01 1 0 FunctionGPIO
-5 4.0a6 02 2 0 AwaySetpoint
-1 4.0a6 04 6 0 FunctionLED
-6 4.0a7 aa 16 0 UnknownFlags
-1 4.0a9 06 6 0 FunctionLED
-6 4.0a9 af 16 0 UnknownFlags
-6 4.0a9.1 b1 16 0 UnknownFlags
-6 4.0a10 b3 16 0 UnknownFlags
-6 4.0a11.1 b5 16 0 UnknownFlags
-0 4.0b0 00 1 80 SavedSettings
-6 4.0b0 d0 16 0 UnknownFlags
-3 4.0b0 d8 0 0 ThermResponse
-7 4.0.1.1 130 1 0 ThermostatModel
-7 4.1 0d 1 0 ThermostatModel
-8 4.2.7 0e 1 cf Configuration
-8 4.2.8 0e 1 ca Configuration
-8 6.3 0e 1 c2 Configuration
-9 5.5 0f 2 0 DHWSetting
-9 6.0 0 0 0 DHWSetting
-9 6.2 0f 2 0 DHWSetting
-10 5.5 11 2 0 MaxCHSetting
-10 6.0 0 0 0 MaxCHSetting
-10 6.2 11 2 0 MaxCHSetting
diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml
index 86236ead..ef108900 100644
--- a/.github/actions/setup/action.yml
+++ b/.github/actions/setup/action.yml
@@ -5,7 +5,7 @@ runs:
using: composite
steps:
- id: python
- uses: actions/setup-python@v4
+ uses: actions/setup-python@v5
with:
python-version: '3.x'
- id: apt
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index e325266c..cb025621 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -13,6 +13,6 @@ jobs:
build:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v3
+ - uses: actions/checkout@v4
- uses: ./.github/actions/setup
- uses: ./.github/actions/build
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 966ae554..0088b021 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -10,15 +10,16 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
- uses: actions/checkout@v3
+ uses: actions/checkout@v4
+ - name: Setup environment
+ uses: ./.github/actions/setup
- name: Build
- run: echo ${{ github.sha }} > Release.txt
- - name: Test
- run: cat Release.txt
+ uses: ./.github/actions/build
- name: Release
- uses: softprops/action-gh-release@v1
+ uses: softprops/action-gh-release@v2
if: startsWith(github.ref, 'refs/tags/')
with:
files: |
- Release.txt
+ build/*.elf
+ build/*.bin
LICENSE
\ No newline at end of file
diff --git a/LICENSE b/LICENSE
index dd8dec1f..d1ce6c17 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,6 +1,6 @@
MIT License
-Copyright (c) 2021-2022 Robert van den Breemen
+Copyright (c) 2021-2024 Robert van den Breemen
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/Makefile b/Makefile
index a74a6704..33f4bcf5 100644
--- a/Makefile
+++ b/Makefile
@@ -11,8 +11,10 @@ CFLAGS = $(CFLAGS_DEFAULT)
CLI := arduino-cli
PLATFORM := esp8266:esp8266
-CFGFILE := arduino-cli.yaml
-# bug in http stream, fallback to 2.7.4
+CFGFILE := $(PWD)/arduino/arduino-cli.yaml
+# Add CLICFG command to add config file location to CLI command
+CLICFG := $(CLI) --config-file $(CFGFILE)
+# bug in http stream, fallback to 2.7.4
# ESP8266URL := https://github.com/esp8266/Arduino/releases/download/3.0.2/package_esp8266com_index.json
ESP8266URL := https://github.com/esp8266/Arduino/releases/download/2.7.4/package_esp8266com_index.json
LIBRARIES := libraries/WiFiManager libraries/ArduinoJson libraries/PubSubClient libraries/TelnetStream libraries/AceTime libraries/OneWire libraries/DallasTemperature
@@ -28,8 +30,8 @@ TOOLS = $(wildcard arduino/packages/esp8266/hardware/esp8266/*/tools)
ESPTOOL = python3 $(TOOLS)/esptool/esptool.py
BOARD = $(PLATFORM):d1_mini
FQBN = $(BOARD):eesz=4M2M,xtal=160
-IMAGE = build/$(subst :,.,$(BOARD))/$(INO).bin
-FILESYS = build/littlefs.bin
+IMAGE = build/$(INO).bin
+FILESYS = build/$(INO).littlefs.bin
export PYTHONPATH = $(TOOLS)/pyserial
@@ -48,12 +50,12 @@ distclean: clean
$(CFGFILE):
$(CLI) config init --dest-file $(CFGFILE)
- $(CLI) config set board_manager.additional_urls $(ESP8266URL)
- $(CLI) config set directories.data $(PWD)/arduino
- $(CLI) config set directories.downloads $(PWD)/staging
- $(CLI) config set directories.user $(PWD)
- $(CLI) config set sketch.always_export_binaries true
- $(CLI) config set library.enable_unsafe_install true
+ $(CLICFG) config set directories.data $(PWD)/arduino
+ $(CLICFG) config set board_manager.additional_urls $(ESP8266URL)
+ $(CLICFG) config set directories.downloads $(PWD)/staging
+ $(CLICFG) config set directories.user $(PWD)
+ $(CLICFG) config set sketch.always_export_binaries true
+ $(CLICFG) config set library.enable_unsafe_install true
##
# Make sure CFG is updated before libraries are called.
@@ -61,43 +63,43 @@ $(CFGFILE):
$(LIBRARIES): | $(CFGFILE)
$(BOARDS): | $(CFGFILE)
- $(CLI) core update-index
- $(CLI) core install $(PLATFORM)
+ $(CLICFG) core update-index
+ $(CLICFG) core install $(PLATFORM)
refresh: | $(CFGFILE)
- $(CLI) lib update-index
+ $(CLICFG) lib update-index
flush: | $(CFGFILE)
- $(CLI) cache clean
+ $(CLICFG) cache clean
libraries/WiFiManager: | $(BOARDS)
- $(CLI) lib install WiFiManager@2.0.15-rc.1
+ $(CLICFG) lib install WiFiManager@2.0.15-rc.1
libraries/ArduinoJson:
- $(CLI) lib install ArduinoJson@6.17.2
+ $(CLICFG) lib install ArduinoJson@6.17.2
libraries/PubSubClient:
- $(CLI) lib install pubsubclient@2.8.0
+ $(CLICFG) lib install pubsubclient@2.8.0
libraries/TelnetStream:
- $(CLI) lib install TelnetStream@1.2.4
+ $(CLICFG) lib install TelnetStream@1.2.4
libraries/AceTime:
- $(CLI) lib install Acetime@2.0.1
+ $(CLICFG) lib install Acetime@2.0.1
# libraries/Time:
# $(CLI) lib install --git-url https://github.com/PaulStoffregen/Time
# # https://github.com/PaulStoffregen/Time/archive/refs/tags/v1.6.1.zip
libraries/OneWire:
- $(CLI) lib install OneWire@2.3.6
+ $(CLICFG) lib install OneWire@2.3.6
libraries/DallasTemperature: | libraries/OneWire
- $(CLI) lib install DallasTemperature@3.9.0
+ $(CLICFG) lib install DallasTemperature@3.9.0
$(IMAGE): $(BOARDS) $(LIBRARIES) $(SOURCES)
$(info Build code)
- $(CLI) compile --config-file $(CFGFILE) --fqbn=$(FQBN) --warnings default --verbose --build-property compiler.cpp.extra_flags="$(CFLAGS)"
+ $(CLICFG) compile --fqbn=$(FQBN) --warnings default --verbose --build-property compiler.cpp.extra_flags="$(CFLAGS)"
filesystem: $(FILESYS)
@@ -117,7 +119,7 @@ $(PROJ).zip: $(PROJ)-fw.bin $(PROJ)-fs.bin
# Build the image with debugging output
debug: CFLAGS = $(CFLAGS_DEFAULT) -DDEBUG
debug: $(IMAGE)
-
+
# Load only the sketch into the device
upload: $(IMAGE)
$(ESPTOOL) --port $(PORT) -b $(BAUD) write_flash 0x0 $(IMAGE)
diff --git a/OTGW-Core.h b/OTGW-Core.h
index 76687d77..e9485cc5 100644
--- a/OTGW-Core.h
+++ b/OTGW-Core.h
@@ -327,7 +327,7 @@ enum OpenThermMessageID {
{ 12, OT_READ , ot_u8u8, "FHBsize", "Size of Fault-History-Buffer supported by slave", "" },
{ 13, OT_READ , ot_u8u8, "FHBindexFHBvalue", "Index number / Value of referred-to fault-history buffer entry", "" },
{ 14, OT_WRITE , ot_f88, "MaxRelModLevelSetting", "Maximum relative modulation level setting", "%" },
- { 15, OT_READ , ot_u8u8, "MaxCapacityMinModLevell", "Maximum boiler capacity (kW) / Minimum boiler modulation level(%)", "kW/%" },
+ { 15, OT_READ , ot_u8u8, "MaxCapacityMinModLevel", "Maximum boiler capacity (kW) / Minimum boiler modulation level(%)", "kW/%" },
{ 16, OT_WRITE , ot_f88, "TrSet", "Room Setpoint", "°C" },
{ 17, OT_READ , ot_f88, "RelModLevel", "Relative Modulation Level", "%" },
{ 18, OT_READ , ot_f88, "CHPressure", "CH water pressure", "bar" },
diff --git a/OTGW-Core.ino b/OTGW-Core.ino
index f6a94504..c79a496c 100644
--- a/OTGW-Core.ino
+++ b/OTGW-Core.ino
@@ -669,7 +669,7 @@ void print_status(uint16_t& value)
if (is_value_valid(OTdata, OTlookupitem)){
// AddLogf("Status u16 [%04x] _value [%04x] hb [%02x] lb [%02x]", OTdata.u16(), _value, OTdata.valueHB, OTdata.valueLB);
- value = (OTcurrentSystemState.MasterStatus<<8) & OTcurrentSystemState.SlaveStatus;
+ value = (OTcurrentSystemState.MasterStatus<<8) | OTcurrentSystemState.SlaveStatus;
}
}
@@ -706,7 +706,7 @@ void print_solar_storage_status(uint16_t& value)
}
if (is_value_valid(OTdata, OTlookupitem)){
//OTGWDebugTf(PSTR("Solar Storage Master / Slave Mode u16 [%04x] _value [%04x] hb [%02x] lb [%02x]"), OTdata.u16(), _value, OTdata.valueHB, OTdata.valueLB);
- value = (OTcurrentSystemState.SolarMasterStatus<<8) & OTcurrentSystemState.SolarSlaveStatus;
+ value = (OTcurrentSystemState.SolarMasterStatus<<8) | OTcurrentSystemState.SolarSlaveStatus;
}
}
@@ -786,7 +786,7 @@ void print_statusVH(uint16_t& value)
if (is_value_valid(OTdata, OTlookupitem)){
//OTGWDebugTf(PSTR("Status u16 [%04x] _value [%04x] hb [%02x] lb [%02x]"), OTdata.u16(), _value, OTdata.valueHB, OTdata.valueLB);
- value = (OTcurrentSystemState.MasterStatusVH<<8) & OTcurrentSystemState.SlaveStatusVH;
+ value = (OTcurrentSystemState.MasterStatusVH<<8) | OTcurrentSystemState.SlaveStatusVH;
}
}
diff --git a/README.md b/README.md
index f108f7cc..ffda78f7 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@ OpenTherm Nodoshop OTGW hardware - an ESP8266 firmware
This project is an firmware for the Nodoshop OTGW hardware, based on ESP8266 devkits.
-Starting with version 2.3 of the Nodoshop hardware the devkit has changed from NodeMCU to a Wemos D1mini. This is fully supported by the hardware and this firmware.
+Starting with version 2.3 of the Nodoshop hardware the devkit has changed from NodeMCU to a Wemos D1mini. This is fully supported by the hardware and this firmware.
Supporting hardware version are:
| Version | Hardware supported |
@@ -56,7 +56,7 @@ To do:
- Instant update of webUI using websockets
- Showing log of OT messages using websockets
-Looking for the documentation, go here (work in progress):
https://github.com/rvdbreemen/OTGW-firmware/wiki/Documentation-of-OTGW-firmware
+Looking for the documentation, go here (work in progress):
[Wiki with Documentation](https://github.com/rvdbreemen/OTGW-firmware/wiki)
| Version | Release notes |
|-|-|
diff --git a/data/index.js b/data/index.js
index 0b4eff46..5423ef39 100644
--- a/data/index.js
+++ b/data/index.js
@@ -8,8 +8,8 @@
** TERMS OF USE: MIT License. See bottom of file.
***************************************************************************
*/
- const localURL='http://'+window.location.host;
- const APIGW='http://'+window.location.host+'/api/';
+ const localURL=window.location.protocol+'//'+window.location.host;
+ const APIGW=window.location.protocol+'//'+window.location.host+'/api/';
"use strict";
@@ -513,6 +513,12 @@
sInput.setAttribute("type", "text");
sInput.setAttribute("maxlength", data[i].maxlen);
sInput.setAttribute("size", (data[i].maxlen > 20 ? 20 : data[i].maxlen));
+ }
+ else if (data[i].type == "p")
+ {
+ sInput.setAttribute("type", "password");
+ sInput.setAttribute("maxlength", data[i].maxlen);
+ sInput.setAttribute("size", (data[i].maxlen > 20 ? 20 : data[i].maxlen));
}
else if (data[i].type == "f")
{
diff --git a/data/mqttha.cfg b/data/mqttha.cfg
index 4cb178e3..5f71e3ea 100644
--- a/data/mqttha.cfg
+++ b/data/mqttha.cfg
@@ -121,6 +121,16 @@
58 ; %homeassistant%/sensor/%node_id%/Hcratio/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-Hcratio", "device_class": "temperature", "name": "%hostname%_OTC_heat_curve_ratio", "stat_t": "%mqtt_pub_topic%/DHWFlowRate", "unit_of_measurement": "°C", "value_template": "{{ value }}", "state_class" : "measurement" }
124 ; %homeassistant%/sensor/%node_id%/OpenThermVersionMaster/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-OpenThermVersionMaster", "name": "%hostname%_Master_OT_protocol_version", "stat_t": "%mqtt_pub_topic%/OpenThermVersionMaster", "unit_of_measurement": "", "value_template": "{{ value }}" }
125 ; %homeassistant%/sensor/%node_id%/OpenThermVersionSlave/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-OpenThermVersionSlave", "name": "%hostname%_Slave_OT_protocol_version", "stat_t": "%mqtt_pub_topic%/OpenThermVersionSlave", "unit_of_measurement": "", "value_template": "{{ value }}" }
+// boundary values
+15 ; %homeassistant%/sensor/%node_id%/MaxCapacityMinModLevel_lb_u8/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-MaxCapacityMinModLevel_lb_u8", "device_class": "power_factor", "name": "%hostname%_MaxCapacityMinModLevel_lb_u8", "stat_t": "%mqtt_pub_topic%/MaxCapacityMinModLevel_lb_u8", "unit_of_measurement": "%", "value_template": "{{ value }}"}
+15 ; %homeassistant%/sensor/%node_id%/MaxCapacityMinModLevel_hb_u8/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-MaxCapacityMinModLevel_hb_u8", "device_class": "power", "name": "%hostname%_MaxCapacityMinModLevel_hb_u8", "stat_t": "%mqtt_pub_topic%/MaxCapacityMinModLevel_hb_u8", "unit_of_measurement": "kW", "value_template": "{{ value }}"}
+48 ; %homeassistant%/sensor/%node_id%/TdhwSetUBTdhwSetLB_value_lb/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-TdhwSetUBTdhwSetLB_value_lb", "device_class": "temperature", "name": "%hostname%_TdhwSetUBTdhwSetLB_value_lb", "stat_t": "%mqtt_pub_topic%/TdhwSetUBTdhwSetLB_value_lb", "unit_of_measurement": "°C", "value_template": "{{ value }}" }
+48 ; %homeassistant%/sensor/%node_id%/TdhwSetUBTdhwSetLB_value_hb/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-TdhwSetUBTdhwSetLB_value_hb", "device_class": "temperature", "name": "%hostname%_TdhwSetUBTdhwSetLB_value_hb", "stat_t": "%mqtt_pub_topic%/TdhwSetUBTdhwSetLB_value_hb", "unit_of_measurement": "°C", "value_template": "{{ value }}" }
+49 ; %homeassistant%/sensor/%node_id%/MaxTSetUBMaxTSetLB_value_lb/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-MaxTSetUBMaxTSetLB_value_lb", "device_class": "temperature", "name": "%hostname%_MaxTSetUBMaxTSetLB_value_lb", "stat_t": "%mqtt_pub_topic%/MaxTSetUBMaxTSetLB_value_lb", "unit_of_measurement": "°C", "value_template": "{{ value }}" }
+49 ; %homeassistant%/sensor/%node_id%/MaxTSetUBMaxTSetLB_value_hb/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-MaxTSetUBMaxTSetLB_value_hb", "device_class": "temperature", "name": "%hostname%_MaxTSetUBMaxTSetLB_value_hb", "stat_t": "%mqtt_pub_topic%/MaxTSetUBMaxTSetLB_value_hb", "unit_of_measurement": "°C", "value_template": "{{ value }}" }
+50 ; %homeassistant%/sensor/%node_id%/HcratioUBHcratioLB_value_lb/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-HcratioUBHcratioLB_value_lb", "device_class": "temperature", "name": "%hostname%_HcratioUBHcratioLB_value_lb", "stat_t": "%mqtt_pub_topic%/HcratioUBHcratioLB_value_lb", "unit_of_measurement": "°C", "value_template": "{{ value }}" }
+50 ; %homeassistant%/sensor/%node_id%/HcratioUBHcratioLB_value_hb/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-HcratioUBHcratioLB_value_hb", "device_class": "temperature", "name": "%hostname%_HcratioUBHcratioLB_value_hb", "stat_t": "%mqtt_pub_topic%/HcratioUBHcratioLB_value_hb", "unit_of_measurement": "°C", "value_template": "{{ value }}" }
+
// Statistics
116 ; %homeassistant%/sensor/%node_id%/BurnerStarts/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-BurnerStarts", "name": "%hostname%_BurnerStarts", "stat_t": "%mqtt_pub_topic%/BurnerStarts", "unit_of_measurement": "", "value_template": "{{ value }}", "state_class" : "total_increasing" }
117 ; %homeassistant%/sensor/%node_id%/CHPumpStarts/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-CHPumpStarts", "name": "%hostname%_CHPumpStarts", "stat_t": "%mqtt_pub_topic%/CHPumpStarts", "unit_of_measurement": "", "value_template": "{{ value }}", "state_class" : "total_increasing" }
@@ -133,16 +143,16 @@
113 ; %homeassistant%/sensor/%node_id%/BurnerUnsuccessfulStarts/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-BurnerUnsuccessfulStarts", "name": "%hostname%_BurnerUnsuccessfulStarts", "stat_t": "%mqtt_pub_topic%/BurnerUnsuccessfulStarts", "unit_of_measurement": "", "value_template": "{{ value }}", "state_class" : "total_increasing" }
114 ; %homeassistant%/sensor/%node_id%/FlameSignalTooLow/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-FlameSignalTooLow", "name": "%hostname%_FlameSignalTooLow", "stat_t": "%mqtt_pub_topic%/FlameSignalTooLow", "unit_of_measurement": "", "value_template": "{{ value }}" }
// split
-0 ; %homeassistant%/sensor/%node_id%/status_master/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-status_master", "name": "%hostname%_Status_Master", "stat_t": "%mqtt_pub_topic%/status_master", "unit_of_measurement": "", "value_template": "{{ value }}" }
-0 ; %homeassistant%/sensor/%node_id%/status_slave/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-status_slave", "name": "%hostname%_Status_Slave", "stat_t": "%mqtt_pub_topic%/status_slave", "unit_of_measurement": "", "value_template": "{{ value }}" }
+0 ; %homeassistant%/sensor/%node_id%/status_master/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-status_master", "name": "%hostname%_Status_Master", "stat_t": "%mqtt_pub_topic%/status_master"}
+0 ; %homeassistant%/sensor/%node_id%/status_slave/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-status_slave", "name": "%hostname%_Status_Slave", "stat_t": "%mqtt_pub_topic%/status_slave"}
// split
5 ; %homeassistant%/sensor/%node_id%/ASF_flags/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-ASF_flags", "name": "%hostname%_Application_Specific_Fault", "stat_t": "%mqtt_pub_topic%/ASF_flags", "unit_of_measurement": "", "value_template": "{{ value }}" }
5 ; %homeassistant%/sensor/%node_id%/OEMFaultCode/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-OEMFaultCode", "name": "%hostname%_OEMFaultCode", "stat_t": "%mqtt_pub_topic%/OEMFaultCode", "unit_of_measurement": "", "value_template": "{{ value }}" }
// split
-2 ; %homeassistant%/sensor/%node_id%/master_configuration/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-master_configuration", "name": "%hostname%_Status_Master_Configuration", "stat_t": "%mqtt_pub_topic%/master_configuration", "unit_of_measurement": "", "value_template": "{{ value }}" }
-2 ; %homeassistant%/sensor/%node_id%/master_memberid_code/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-master_memberid_code", "name": "%hostname%_Status_Master_Memberid_Code", "stat_t": "%mqtt_pub_topic%/master_memberid_code", "unit_of_measurement": "", "value_template": "{{ value }}" }
-3 ; %homeassistant%/sensor/%node_id%/slave_configuration/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-slave_configuration", "name": "%hostname%_Status_Slave_Configuration", "stat_t": "%mqtt_pub_topic%/slave_configuration", "unit_of_measurement": "", "value_template": "{{ value }}" }
-3 ; %homeassistant%/sensor/%node_id%/slave_memberid_code/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-slave_memberid_code", "name": "%hostname%_Status_Slave_Memberid_Code", "stat_t": "%mqtt_pub_topic%/slave_memberid_code", "unit_of_measurement": "", "value_template": "{{ value }}" }
+2 ; %homeassistant%/sensor/%node_id%/master_configuration/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-master_configuration", "name": "%hostname%_Status_Master_Configuration", "stat_t": "%mqtt_pub_topic%/master_configuration"}
+2 ; %homeassistant%/sensor/%node_id%/master_memberid_code/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-master_memberid_code", "name": "%hostname%_Status_Master_Memberid_Code", "stat_t": "%mqtt_pub_topic%/master_memberid_code"}
+3 ; %homeassistant%/sensor/%node_id%/slave_configuration/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-slave_configuration", "name": "%hostname%_Status_Slave_Configuration", "stat_t": "%mqtt_pub_topic%/slave_configuration"}
+3 ; %homeassistant%/sensor/%node_id%/slave_memberid_code/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-slave_memberid_code", "name": "%hostname%_Status_Slave_Memberid_Code", "stat_t": "%mqtt_pub_topic%/slave_memberid_code"}
// split
101 ; %homeassistant%/sensor/%node_id%/solar_storage_master_mode/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-solar_storage_master_mode", "name": "%hostname%_solar_storage_master_mode", "stat_t": "%mqtt_pub_topic%/solar_storage_master_mode", "unit_of_measurement": "", "value_template": "{{ value }}" }
101 ; %homeassistant%/sensor/%node_id%/solar_storage_mode_status/config ; {"avty_t": "%mqtt_pub_topic%", "dev": {"identifiers": "%node_id%", "manufacturer": "Schelte Bron", "model": "otgw-nodo", "name": "OpenTherm Gateway (%hostname%)", "sw_version": "%version%"}, "uniq_id": "%node_id%-solar_storage_mode_status", "name": "%hostname%_solar_storage_mode_status", "stat_t": "%mqtt_pub_topic%/solar_storage_mode_status", "unit_of_measurement": "", "value_template": "{{ value }}" }
diff --git a/renovate.json b/renovate.json
deleted file mode 100644
index f45d8f11..00000000
--- a/renovate.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "extends": [
- "config:base"
- ]
-}
diff --git a/restAPI.ino b/restAPI.ino
index 5dee78d2..c2943df5 100644
--- a/restAPI.ino
+++ b/restAPI.ino
@@ -421,7 +421,8 @@ void sendDeviceSettings()
RESTDebugTln(F("sending device settings ...\r"));
sendStartJsonObj("settings");
-
+
+ //sendJsonSettingObj("string", settingString, "p", sizeof(settingString)-1);
//sendJsonSettingObj("string", settingString, "s", sizeof(settingString)-1);
//sendJsonSettingObj("float", settingFloat, "f", 0, 10, 5);
//sendJsonSettingObj("intager", settingInteger , "i", 2, 60);
@@ -431,7 +432,7 @@ void sendDeviceSettings()
sendJsonSettingObj("mqttbroker", CSTR(settingMQTTbroker), "s", 32);
sendJsonSettingObj("mqttbrokerport", settingMQTTbrokerPort, "i", 0, 65535);
sendJsonSettingObj("mqttuser", CSTR(settingMQTTuser), "s", 32);
- sendJsonSettingObj("mqttpasswd", CSTR(settingMQTTpasswd), "s", 100);
+ sendJsonSettingObj("mqttpasswd", CSTR(settingMQTTpasswd), "p", 100);
sendJsonSettingObj("mqtttoptopic", CSTR(settingMQTTtopTopic), "s", 15);
sendJsonSettingObj("mqtthaprefix", CSTR(settingMQTThaprefix), "s", 20);
sendJsonSettingObj("mqttharebootdetection", settingMQTTharebootdetection, "b");
diff --git a/version.h b/version.h
index da47c3f0..37145f1a 100644
--- a/version.h
+++ b/version.h
@@ -1,16 +1,16 @@
//The version number conforms to semver.org format
#define _VERSION_MAJOR 0
#define _VERSION_MINOR 10
-#define _VERSION_PATCH 2
-#define _VERSION_BUILD 2088
-#define _VERSION_GITHASH "50c3ed2"
-//#define _VERSION_PRERELEASE beta //uncomment to define prerelease labels: alpha - beta - rc
-#define _VERSION_DATE "14-03-2023"
-#define _VERSION_TIME "23:58:40"
-#define _SEMVER_CORE "0.10.2"
-#define _SEMVER_BUILD "0.10.2+2088"
-#define _SEMVER_GITHASH "0.10.2+50c3ed2"
-#define _SEMVER_FULL "0.10.2+50c3ed2"
-#define _SEMVER_NOBUILD "0.10.2 (14-03-2023)"
-#define _VERSION "0.10.2+50c3ed2 (14-03-2023)"
+#define _VERSION_PATCH 3
+#define _VERSION_BUILD 2112
+#define _VERSION_GITHASH "1c8485a"
+#define _VERSION_PRERELEASE beta
+#define _VERSION_DATE "13-04-2024"
+#define _VERSION_TIME "13:40:09"
+#define _SEMVER_CORE "0.10.3"
+#define _SEMVER_BUILD "0.10.3+2112"
+#define _SEMVER_GITHASH "0.10.3+1c8485a"
+#define _SEMVER_FULL "0.10.3-beta+1c8485a"
+#define _SEMVER_NOBUILD "0.10.3-beta (13-04-2024)"
+#define _VERSION "0.10.3-beta+1c8485a (13-04-2024)"
//The version information is created automatically, more information here: https://github.com/rvdbreemen/autoinc-semver