diff --git a/.github/actions/build/action.yml b/.github/actions/build/action.yml index 2a6f408..54ef2ac 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: build - run: make -j$(nproc) - 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 shell: bash + - id: create-build-dir + run: mkdir -p build + shell: bash + - id: build + 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 + 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 51d0ae6..0000000 --- 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 86236ea..ef10890 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 e325266..cb02562 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 966ae55..0088b02 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 dd8dec1..d1ce6c1 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 a74a670..33f4bcf 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 76687d7..e9485cc 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 f6a9450..c79a496 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 f108f7c..ffda78f 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 0b4eff4..5423ef3 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 4cb178e..5f71e3e 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 f45d8f1..0000000 --- a/renovate.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "extends": [ - "config:base" - ] -} diff --git a/restAPI.ino b/restAPI.ino index 5dee78d..c2943df 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 da47c3f..37145f1 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