mirror of
https://github.com/lumapu/ahoy.git
synced 2025-05-03 20:25:54 +02:00
0.7.35
* fixed timestamp for alarms send over MqTT * auto-patch of `AsyncWebServer` #834, #1036 * Update documentation in Git regarding `ESP8266` default NRF24 pin assignments
This commit is contained in:
parent
ac53925a24
commit
ed268d1b63
7 changed files with 54 additions and 9 deletions
|
@ -1,4 +1,4 @@
|
||||||
## Overview
|
## Overview
|
||||||
|
|
||||||
On this page, you'll find detailed instructions on how to wire the module of a Wemos D1 mini or ESP32 to the radio module, as well as how to flash it with the latest firmware. This information will enable you to communicate with compatible inverters.
|
On this page, you'll find detailed instructions on how to wire the module of a Wemos D1 mini or ESP32 to the radio module, as well as how to flash it with the latest firmware. This information will enable you to communicate with compatible inverters.
|
||||||
|
|
||||||
|
@ -122,11 +122,11 @@ This is an example wiring using a Wemos D1 mini.<br>
|
||||||
|
|
||||||
##### Schematic
|
##### Schematic
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
##### Symbolic view
|
##### Symbolic view
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
#### ESP8266 wiring example on 30pin Lolin NodeMCU v3
|
#### ESP8266 wiring example on 30pin Lolin NodeMCU v3
|
||||||
|
|
||||||
|
@ -146,11 +146,11 @@ Example wiring for a 38pin ESP32 module
|
||||||
|
|
||||||
##### Schematic
|
##### Schematic
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
##### Symbolic view
|
##### Symbolic view
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
##### ESP32 GPIO settings
|
##### ESP32 GPIO settings
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
[![CC BY-NC-SA 4.0][cc-by-nc-sa-shield]][cc-by-nc-sa] [![Ahoy Dev Build][dev-action-badge]][dev-action-link]
|
[![CC BY-NC-SA 4.0][cc-by-nc-sa-shield]][cc-by-nc-sa]
|
||||||
|
[![Ahoy Build][release-action-badge]][release-action-link] [![Ahoy Dev Build][dev-action-badge]][dev-action-link]
|
||||||
|
|
||||||
This work is licensed under a
|
This work is licensed under a
|
||||||
[Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License][cc-by-nc-sa].
|
[Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License][cc-by-nc-sa].
|
||||||
|
@ -9,6 +10,9 @@ This work is licensed under a
|
||||||
[cc-by-nc-sa-image]: https://licensebuttons.net/l/by-nc-sa/4.0/88x31.png
|
[cc-by-nc-sa-image]: https://licensebuttons.net/l/by-nc-sa/4.0/88x31.png
|
||||||
[cc-by-nc-sa-shield]: https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg
|
[cc-by-nc-sa-shield]: https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg
|
||||||
|
|
||||||
|
[release-action-badge]: https://github.com/lumapu/ahoy/actions/workflows/compile_release.yml/badge.svg
|
||||||
|
[release-action-link]: https://github.com/lumapu/ahoy/actions/workflows/compile_release.yml
|
||||||
|
|
||||||
[dev-action-badge]: https://github.com/lumapu/ahoy/actions/workflows/compile_development.yml/badge.svg
|
[dev-action-badge]: https://github.com/lumapu/ahoy/actions/workflows/compile_development.yml/badge.svg
|
||||||
[dev-action-link]: https://github.com/lumapu/ahoy/actions/workflows/compile_development.yml
|
[dev-action-link]: https://github.com/lumapu/ahoy/actions/workflows/compile_development.yml
|
||||||
|
|
||||||
|
|
13
patches/AsyncWeb_Prometheus.patch
Normal file
13
patches/AsyncWeb_Prometheus.patch
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/src/WebResponses.cpp b/src/WebResponses.cpp
|
||||||
|
index 22a549f..e0b36b3 100644
|
||||||
|
--- a/src/WebResponses.cpp
|
||||||
|
+++ b/src/WebResponses.cpp
|
||||||
|
@@ -318,7 +318,7 @@ size_t AsyncAbstractResponse::_ack(AsyncWebServerRequest *request, size_t len, u
|
||||||
|
free(buf);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
- outLen = sprintf_P((char*)buf+headLen, PSTR("%x"), readLen) + headLen;
|
||||||
|
+ outLen = sprintf_P((char*)buf+headLen, PSTR("%04x"), readLen) + headLen;
|
||||||
|
while(outLen < headLen + 4) buf[outLen++] = ' ';
|
||||||
|
buf[outLen++] = '\r';
|
||||||
|
buf[outLen++] = '\n';
|
20
scripts/applyPatches.py
Normal file
20
scripts/applyPatches.py
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
import os
|
||||||
|
import subprocess
|
||||||
|
Import("env")
|
||||||
|
|
||||||
|
def applyPatch(libName, patchFile):
|
||||||
|
os.chdir('.pio/libdeps/' + env['PIOENV'] + '/' + libName)
|
||||||
|
|
||||||
|
process = subprocess.run(['git', 'apply', '--reverse', '--check', '../../../../' + patchFile], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
||||||
|
if (process.returncode == 0):
|
||||||
|
print('\'' + patchFile + '\' already applied')
|
||||||
|
else:
|
||||||
|
process = subprocess.run(['git', 'apply', '../../../../' + patchFile])
|
||||||
|
if (process.returncode == 0):
|
||||||
|
print('\'' + patchFile + '\' applied')
|
||||||
|
else:
|
||||||
|
print('applying \'' + patchFile + '\' failed')
|
||||||
|
|
||||||
|
|
||||||
|
# list of patches to apply (relative to /src)
|
||||||
|
applyPatch("ESP Async WebServer", "../patches/AsyncWeb_Prometheus.patch")
|
|
@ -1,5 +1,10 @@
|
||||||
# Development Changes
|
# Development Changes
|
||||||
|
|
||||||
|
## 0.7.35 - 2023-08-17
|
||||||
|
* fixed timestamp for alarms send over MqTT
|
||||||
|
* auto-patch of `AsyncWebServer` #834, #1036
|
||||||
|
* Update documentation in Git regarding `ESP8266` default NRF24 pin assignments
|
||||||
|
|
||||||
## 0.7.34 - 2023-08-16
|
## 0.7.34 - 2023-08-16
|
||||||
* fixed timezone offset of alarms
|
* fixed timezone offset of alarms
|
||||||
* added `AC` and `DC` to `/live` #1098
|
* added `AC` and `DC` to `/live` #1098
|
||||||
|
|
|
@ -21,6 +21,7 @@ monitor_speed = 115200
|
||||||
extra_scripts =
|
extra_scripts =
|
||||||
pre:../scripts/auto_firmware_version.py
|
pre:../scripts/auto_firmware_version.py
|
||||||
pre:web/html/convert.py
|
pre:web/html/convert.py
|
||||||
|
pre:../scripts/applyPatches.py
|
||||||
|
|
||||||
lib_deps =
|
lib_deps =
|
||||||
https://github.com/yubox-node-org/ESPAsyncWebServer
|
https://github.com/yubox-node-org/ESPAsyncWebServer
|
||||||
|
@ -183,4 +184,4 @@ build_flags =
|
||||||
-std=gnu++17
|
-std=gnu++17
|
||||||
build_unflags = -std=gnu++11
|
build_unflags = -std=gnu++11
|
||||||
monitor_filters =
|
monitor_filters =
|
||||||
time ; Add timestamp with milliseconds for each new line
|
time ; Add timestamp with milliseconds for each new line
|
||||||
|
|
|
@ -500,6 +500,8 @@ class PubMqtt {
|
||||||
|
|
||||||
void sendAlarmData() {
|
void sendAlarmData() {
|
||||||
Inverter<> *iv;
|
Inverter<> *iv;
|
||||||
|
uint32_t localTime = gTimezone.toLocal(*mUtcTimestamp);
|
||||||
|
uint32_t lastMidnight = gTimezone.toUTC(localTime - (localTime % 86400)); // last midnight local time
|
||||||
for(uint8_t i = 0; i < MAX_NUM_INVERTERS; i++) {
|
for(uint8_t i = 0; i < MAX_NUM_INVERTERS; i++) {
|
||||||
if(!mSendAlarm[i])
|
if(!mSendAlarm[i])
|
||||||
continue;
|
continue;
|
||||||
|
@ -527,11 +529,11 @@ class PubMqtt {
|
||||||
publish(mSubTopic, mVal, true);
|
publish(mSubTopic, mVal, true);
|
||||||
|
|
||||||
snprintf(mSubTopic, 32 + MAX_NAME_LENGTH, "%s/alarm/%d/start", iv->config->name, j);
|
snprintf(mSubTopic, 32 + MAX_NAME_LENGTH, "%s/alarm/%d/start", iv->config->name, j);
|
||||||
snprintf(mVal, 40, "%d", iv->lastAlarm[j].start);
|
snprintf(mVal, 40, "%d", iv->lastAlarm[j].start + lastMidnight);
|
||||||
publish(mSubTopic, mVal, true);
|
publish(mSubTopic, mVal, true);
|
||||||
|
|
||||||
snprintf(mSubTopic, 32 + MAX_NAME_LENGTH, "%s/alarm/%d/end", iv->config->name, j);
|
snprintf(mSubTopic, 32 + MAX_NAME_LENGTH, "%s/alarm/%d/end", iv->config->name, j);
|
||||||
snprintf(mVal, 40, "%d", iv->lastAlarm[j].end);
|
snprintf(mVal, 40, "%d", iv->lastAlarm[j].end + lastMidnight);
|
||||||
publish(mSubTopic, mVal, true);
|
publish(mSubTopic, mVal, true);
|
||||||
yield();
|
yield();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue