Commit Graph

559 Commits

Author SHA1 Message Date
Thomas Basler
abf95634db Replace platform dependent variable types by platform independent 2023-09-03 23:27:53 +02:00
Thomas Basler
6127fbe940 Feature: Added option to set runtime values to zero when inverter becames unreachable 2023-09-02 12:22:22 +02:00
Thomas Basler
4f85d5286d Simplify debug output 2023-09-02 02:14:08 +02:00
Thomas Basler
b34b22c658 Fix: Workaround: Don't allow memory intensive web functions in parallel
Somehow the API has to be adjusted to reduce memory consumption. For now lets just prevent both methods to allocate memory at the same time.
2023-09-02 01:41:53 +02:00
Thomas Basler
2c41be106e Feature: Allow setting of the Reachable Threshold per inverter 2023-09-01 19:17:12 +02:00
Thomas Basler
c5f9f460cd Feature: Added config option to change MQTT CleanSession Flag 2023-09-01 18:03:30 +02:00
Thomas Basler
701c490654 Feature: Turn off Display before reboot
Thanks for the idea to @StefanOberhumer
This prevents always on Display if the device profile does not contain Display pins anymore after the reboot
2023-08-25 16:57:24 +02:00
Thomas Basler
c91bd42a77 Feature: Turn off LEDs before reboot
Thanks for the idea to @StefanOberhumer
This prevents always on LEDs if the device profile does not contain LEDs pins anymore after the reboot
2023-08-25 13:15:55 +02:00
Thomas Basler
77a90095d9 Move different restart calls into one method 2023-08-25 12:58:53 +02:00
Thomas Basler
e2594ac843 Fix: Calculate the json buffer for the inverter list based on INV_MAX_COUNT 2023-08-22 17:05:46 +02:00
Thomas Basler
6429d64062 Prometheus Endpoint: Simplify code by looping over fields instead of duplicated code 2023-08-22 13:00:52 +02:00
Thomas Basler
4bf9083b23 Prometheus Endpoint: Publish only relevant amount of digits
Implemented method to return the correctly formatted field value as string
2023-08-22 11:45:14 +02:00
Thomas Basler
9179b672f5 Use lock_guard to simplify code 2023-08-05 01:25:53 +02:00
Thomas Basler
43cba67531 Fix: Virtual console scrambled output when the output came from different contexts 2023-08-03 22:16:29 +02:00
Thomas Basler
0bdee6ec99 Fix: Prevent access to nullptr object when reconnecting to mqtt
It could occour when saving the settings via the web ui
2023-08-03 18:46:28 +02:00
Martin Dummer
8bfa7e530c Feature: Admin AccessPoint Timeout now configurable
Make the administrative accesspoint timeout configurable. The default
value is 3 minutes, values from 0-99999 are possible, where 0 means
infinite (no timeout).

Signed-off-by: Martin Dummer <martin.dummer@gmx.net>
2023-07-22 18:14:07 +02:00
Thomas Basler
a68c553d27 Code formatting without functional changes 2023-07-22 18:07:03 +02:00
Thomas Basler
658a42db80 Apply code formatter without functional changes 2023-07-22 18:00:41 +02:00
Thomas Basler
bf4dc56cb8 Fix: Reboot loop if negative display pins and type where provided
Fix #1163
2023-07-21 19:02:18 +02:00
Thomas Basler
9dbeec3a31 Fix: Set WiFi setScanMethod and setSortMethod also on first connect 2023-07-20 23:44:09 +02:00
Thomas Basler
b8c75b02a0 Merge branch 'pr1003' into dev 2023-07-10 19:11:54 +02:00
Stephan
1871a9a692 use FSPI for esp32-c3 and revise device profiles 2023-07-10 19:04:13 +02:00
Thomas Basler
fe3d6588bc Feature: Turn off LED 1 if no inverters are enabled for polling
This means that e.g. at night, when polling at night is disabled, LED 1 will be turned off now.
2023-07-10 18:31:04 +02:00
Thomas Basler
93057fc3dc Feature: Added touch icon for iOS and Android
Implements #1060
2023-06-21 22:44:18 +02:00
Thomas Basler
e8fee49dc8 Allow the non-existence of the HOYMILES_PIN_ defines 2023-06-21 19:59:35 +02:00
Thomas Basler
30fbd98274 Fix: Reboot loop occoured when no rf module was configured 2023-06-21 19:56:14 +02:00
Dominic Michel
3562e85b5e Change metric type back to gauge 2023-06-13 20:59:24 +02:00
Thomas Basler
08f47c2f4c Fix: Prometheus syntax error with wifi_bssid
Fixes #1021
2023-06-11 20:04:23 +02:00
Thomas Basler
88cb59d177 Feature: Publish BSSID via prometheus 2023-06-08 19:57:07 +02:00
Thomas Basler
b3e41c957b Feature: Publish BSSID via MQTT 2023-06-08 19:56:44 +02:00
Thomas Basler
91d3cd1da2 Feature: Show BSSID in the web interface 2023-06-08 19:56:22 +02:00
Thomas Basler
721f82a17c Added additional exception handler to also show unknown exceptions in live data api endpoint 2023-06-08 19:39:56 +02:00
Thomas Basler
3b6c529efb Fix: Do not publish leading blanks in MQTT payload
Fixes #1011
2023-06-07 17:58:31 +02:00
Thomas Basler
7f267ff2fb Fix: Lint Error: Almost always, snprintf is better than strcpy 2023-06-01 23:30:13 +02:00
Thomas Basler
5a37948ca9 Fix: If no sunset/sunrise calculation is possible a wrong value is shown
This is catched now and a proper message is shown in the web UI. Also the mode is set to day.
2023-06-01 18:39:50 +02:00
Thomas Basler
24f063dd7b Fix: Prevent partly calculated total data in web ui and display
Leads to zeros where no zeros should be.
2023-05-30 22:10:27 +02:00
Thomas Basler
1c8bd8091b Feature: Allow reordering of the inverters in the live view
Reordering can be done in the inverter settings via drag&drop.
2023-05-29 20:17:07 +02:00
Thomas Basler
e7198073af Feature: Allow configuration of sunset type 2023-05-24 19:21:44 +02:00
Thomas Basler
752362d2df Feature: Added localization setting to display
Its possible to change the language of the display
2023-05-23 18:25:12 +02:00
Thomas Basler
40820c07f2 Use the new data store in the graphic display class.
With this patch, the display turns off if no inverter is reachable anymore. Previously it turned off if the production was zero.
This fixes #933
2023-05-21 22:40:32 +02:00
Thomas Basler
cd98941c5d Implement global data store to handle all invert total values
Use the new values in the LED, MQTT and Web interface.
2023-05-21 22:37:33 +02:00
Thomas Basler
efcbd81927 Feature: Add used PIO environment to the system info page 2023-05-08 21:43:50 +02:00
Thomas Basler
65b728eebb Fix: No OpenDTU startup of CDC (like Pico or ESP32-S3) devices if no usb host is connected
Should also fix #826
2023-05-03 21:16:27 +02:00
Markus Krause
a56d5adb77 fix SPI assignment across generations 2023-04-28 21:26:22 +02:00
Thomas Basler
3504884836 Fix: xSemaphoreTake was useless
There was no check of the return value implemented therefore xSemaphoreTake was just executed and not locked
2023-04-28 21:02:10 +02:00
Thomas Basler
5996fb0edf Fix: MQTT topics ac/yieldday and ac/yieldtotal are swapped
Fix #843
2023-04-25 18:43:56 +02:00
Thomas Basler
98da2b64e2 Rename FLD_PRA to FLD_Q 2023-04-24 22:29:59 +02:00
Thomas Basler
26cbc496a7 Feature: Implemented MQTT publishing of total values
If one or more inverter is not reachable the flag is_valid changes to zero. Disabled inverters are ignored.
2023-04-24 18:51:30 +02:00
Thomas Basler
04f62e03b8 BREAKING CHANGE: Web API Endpoint /api/eventlog/status no nested serial object
It's not required as the  eventlog just contains events from requested inverter
2023-04-20 22:41:55 +02:00
Thomas Basler
5d2656550c Optimize detection if RF module is configured
Use PinMapping method instead of dedicated method in Hoymiles lib --> Same result but reduces variables
2023-04-17 23:19:53 +02:00
Thomas Basler
59f43a82a8 BREAKING CHANGE: Web API Endpoint /api/devinfo/status requires GET parameter inv=
Only the requested inverter is sent to the client. This reduces the size of the json response --> Less memory.

It should also fix #814.
2023-04-17 21:48:16 +02:00
Thomas Basler
af3a277e30 Introduced HoymilesRadio property to determine if a configuration attempt was done 2023-04-17 18:59:56 +02:00
Thomas Basler
15156b4b87 Set CMT frequency only if a valid pin config was found 2023-04-15 10:55:48 +02:00
Thomas Basler
c3368450f6 Initialize spiClass only if valid pin config was found 2023-04-15 10:55:48 +02:00
Thomas Basler
50ce7f014d Expose min and max frequency in HoymilesRadio_CMT 2023-04-15 10:55:48 +02:00
Thomas Basler
371e405eed Added configuration of CMT modules frequency to webapp 2023-04-15 10:55:48 +02:00
Thomas Basler
996404ceed Introduce gpio2 for the CMT2300A module
This implements the sending interrupt instead of polling. On the other hand, gpio3 is made optional.
2023-04-15 10:55:48 +02:00
Thomas Basler
854fcdaeae Allow configuration of the TX PA Level of the CMT2300A module 2023-04-15 10:55:48 +02:00
Thomas Basler
3e1b778565 Change max power limit from 1500W to 2250W to support HMS/HMT inverters 2023-04-15 10:55:47 +02:00
Thomas Basler
0ec90e0000 webapp: Adjusted radio problem hint in home view to detect problems of nrf and cmt radios 2023-04-15 10:55:47 +02:00
Thomas Basler
c19d2007bd webapp: Added cmt radio status to system overview 2023-04-15 10:55:47 +02:00
Thomas Basler
de2b7ab2d2 Check that all RF modules as in idle mode before sending mqtt packages 2023-04-15 10:55:47 +02:00
Thomas Basler
b7fb294368 Set DTU serial for CMT modules 2023-04-15 10:55:47 +02:00
Thomas Basler
ef614751b1 webapp: Show CMT pins in device manager 2023-04-15 10:55:47 +02:00
Thomas Basler
45882543b6 Allow dynamic pin mapping for CMT module 2023-04-15 10:55:47 +02:00
Thomas Basler
8404dd57a7 Add a HoymilesRadio base class
This enables to have multiple radio implementations while the inverter classes just refere to the base class
2023-04-15 10:55:47 +02:00
Thomas Basler
a7e9aaa862 Move reference to the radio instance into the inverter instance
This is required to support different radios for different inverters
2023-04-15 10:55:47 +02:00
Martin Dummer
bea0a738c1
include/Configuration.h: rename MQTT_MAX_ROOT_CA_CERT_STRLEN
rename const MQTT_MAX_ROOT_CA_CERT_STRLEN to more generic name MQTT_MAX_CERT_STRLEN

Signed-off-by: Martin Dummer <martin.dummer@gmx.net>
2023-04-12 11:58:27 +02:00
Martin Dummer
d920726a76
src/WebApi_mqtt.cpp: rename function getRootCaCertInfo
rename function WebApiMqttClass::getRootCaCertInfo to more generic
name WebApiMqttClass::getTlsCertInfo

Signed-off-by: Martin Dummer <martin.dummer@gmx.net>
2023-04-12 08:47:24 +02:00
Martin Dummer
0db4b5f226
Fix: src/WebApi_mqtt.cpp: typos in error messages
Signed-off-by: Martin Dummer <martin.dummer@gmx.net>
2023-04-12 08:37:49 +02:00
Martin Dummer
971ae6d1be
Feature: MQTT add TLS authentication
User asked for TLS client certificate based login from DTU to MQTT
server. This PR implements storage and use of x509 client certificate
and private key.

Signed-off-by: Martin Dummer <martin.dummer@gmx.net>
2023-04-12 08:33:10 +02:00
Thomas Basler
ae323cd26f Status LED's: Implemented
They can be activated using device profiles.
2023-04-04 18:53:23 +02:00
Thomas Basler
d6028cbd50 Remove not required F() macro. Frees ~20kb flash. 2023-04-04 18:51:18 +02:00
Thomas Basler
acf413b616 webapp: Show inverter status in grey if polling is disabled (e.g. at night) 2023-04-03 22:25:32 +02:00
Thomas Basler
9b74badda8 Uses VSPI instead of HSPI and compatibility for C3, S2 and S3 MCUs 2023-03-30 23:24:11 +02:00
Thomas Basler
fe5d3e29e3 Allow use GPIO0 as NRF pins 2023-03-30 23:19:29 +02:00
Thomas Basler
8d8c7f8a71 Fixed typo: Successfull --> Successful 2023-03-23 23:30:55 +01:00
Thomas Basler
21718a9e8f Fix #736: Check for payloads < 0 and ignore them 2023-03-23 21:18:00 +01:00
Thomas Basler
ac73747a29 Fix #723: For some reason, a space was added before 1 digit numbers 2023-03-20 18:05:43 +01:00
Thomas Basler
75364f89cb Publish all valid digits via mqtt 2023-03-16 19:29:37 +01:00
Thomas Basler
2e33f5cd51 Display: Implement rotation setting and removed icons 2023-03-15 20:20:14 +01:00
Markus Dobel
9eff5f228b feat: export panel settings (name, max power, offset) as prometheus metrics 2023-03-08 09:11:25 +01:00
Thomas Basler
4d18ccf01d Prometheus API: Only output the channels if they where read at least once 2023-02-26 19:31:37 +01:00
Thomas Basler
c67b3e3cbd Prometheus API: Set correct metrics type 2023-02-24 19:10:35 +01:00
Thomas Basler
759f8b7208 Log errors if too less memory for webapi is available 2023-02-23 21:10:00 +01:00
Thomas Basler
97bc964b6c Fix lint errors 2023-02-20 20:19:23 +01:00
Thomas Basler
c61064c891 Merge branch 'pr605' into dev 2023-02-20 19:38:23 +01:00
helgeerbe
07f4473a4e Connect Wifi to strongest AP
* do full channel scan
  * connect to strongest AP
2023-02-20 10:13:36 +01:00
Thomas Basler
dc66a82695 Fix typo in configuration. Relates to #603
Also increase buffer size to read whole config
2023-02-19 22:33:35 +01:00
Thomas Basler
cd99ab8e42 Added settings to pause polling/sending commands in general and at night 2023-02-18 19:44:16 +01:00
Thomas Basler
b319c78dc1 Added methods to calculate and show sunrise and sunset times 2023-02-18 18:15:48 +01:00
Thomas Basler
19a1c0aa54 Added config parameters to set longitude and latitude 2023-02-18 16:53:28 +01:00
Thomas Basler
6a6165e8c5 Fix #589: MQTT channel assignment in homeassistant config [unique_id and name] was wrong 2023-02-15 19:04:58 +01:00
Thomas Basler
8cbae76797 Implement offsets for YieldTotal (#549)
This allows to enter a offset in kWh in the inverter properties which will be applied to the read Yield Total value of the inverter. Using this can set your total production to zero if you e.g. are using a used device.
2023-02-13 20:25:00 +01:00
Thomas Basler
7bbb278eaf Merge branch 'mqtt_rework' into dev 2023-02-13 18:39:29 +01:00
Thomas Basler
f8c70c3e9f Added missing copyright header 2023-02-13 18:38:22 +01:00
Thomas Basler
3b7aef63f8 BREAKING CHANGE: Web API!
In order to support multiple AC channels in future the WebAPI had to be changed. AC and DC channels are now grouped in a sub object containing the channels beginning with 0.
2023-02-13 18:37:55 +01:00
Thomas Basler
ceaf08c1a0 Hoymiles Lib: Rename ChannelMaxPower to StringMaxPower 2023-02-06 19:56:12 +01:00
Thomas Basler
d4c838a16e BREAKING CHANGE: Prometheus API!
Added additional field to the prometheus api which identifies a channel by it's type. That means that e.g. channel 0  exists for type AC and DC.

This commit also introduces a additional field in the statistics byte assignment table. This field identifies whether a channel is on the AC or DC side. MQTT and WebAPI is still compatible with the previous design.
2023-02-06 19:51:10 +01:00
Thomas Basler
5d7be32b90 Fixed typo 2023-01-31 18:35:50 +01:00
Thomas Basler
d948439beb Fix #548: The first device profile within the json file was not correctly applied 2023-01-30 20:33:55 +01:00
Thomas Basler
8bafb178a1 Fix #540: Do not output unit_of_meas if empty 2023-01-27 18:34:18 +01:00
Thomas Basler
e89fd64439 Added WebAPI to setup display settings. Also reboot only if device profile was changed. 2023-01-20 18:28:34 +01:00
Thomas Basler
f7fb9a2bd6 Display: Add property to enable or disable the screensaver 2023-01-20 18:28:34 +01:00
Thomas Basler
d1483468c6 Rename Display properties and apply power safe immediatly 2023-01-20 18:28:33 +01:00
Thomas Basler
e3d2de0319 webapp: Show display pin mapping in device manager 2023-01-20 18:28:33 +01:00
Thomas Basler
b96d87b933 Read display pinmapping from json file 2023-01-20 18:28:33 +01:00
Thomas Basler
bb3e12814d Move display pin assignment to main function 2023-01-20 18:28:32 +01:00
Thomas Basler
592dd73fca Implement _dispX as function local variable 2023-01-20 18:28:23 +01:00
Thomas Basler
1d07574f8a Rename _lastPublish to _lastDisplayUpdate 2023-01-18 23:22:36 +01:00
Thomas Basler
e572e711a4 Code Style Changes
* Add License Identifier
* Move non public required includes to cpp
* Add curly brackets
2023-01-18 23:22:36 +01:00
dAjaY85
7074dd5757 Display init zum Zweiten
chango to full Buffer Mode, remove picture loop,
because it's not worked.
look: https://github.com/olikraus/u8glib/wiki/tpictureloop

snprintf + public vars
- dispPowerSafe => true: PowerSafe Mode on
- dispLogo => true: showing Logo upper right corner
- dispContrast => possible to adjust the Display Contrast

change in date time, buffer deleted

Display-Constructor changed, reset goes to front

Arrow and Logo only shown, when production is on

Refactor OLEDDisplayClass to DisplayGraphicClass
2023-01-18 23:22:36 +01:00
Thomas Basler
591a668901 Fixed issue when selecting new device profile 2023-01-17 20:46:52 +01:00
Thomas Basler
c85b99ffc1 Include ethernet handling in every build to enable it at runtime 2023-01-17 18:44:52 +01:00
Thomas Basler
19b42223f5 webapp: Show current active pin config 2023-01-16 23:41:58 +01:00
Thomas Basler
3d3feb3517 Allow Ethernet Pin Settings via json config 2023-01-16 22:26:35 +01:00
Thomas Basler
5f699f4927 Added Device Profiles
Allows the pin assignment during runtime.
Pin settings will be read from a json file called "pin_mapping.json"
2023-01-16 21:09:24 +01:00
Thomas Basler
af1a2a188e Extended config API to allow upload of individual files 2023-01-05 14:41:15 +01:00
Thomas Basler
20ae646561 webapp: Allow download of individual config files 2023-01-05 01:44:38 +01:00
Thomas Basler
7c33688167 Use same line ending in printf as in println
This prevents mistakes in the webconsole
2023-01-04 18:48:33 +01:00
Thomas Basler
5bc264f4d2 Introduce numeric error codes in power webapi 2022-12-24 00:01:55 +01:00
Thomas Basler
03ed626da6 Introduce numeric error codes in security webapi 2022-12-24 00:01:55 +01:00
Thomas Basler
6ad7e971b4 Introduce numeric error codes in ntp webapi 2022-12-24 00:01:55 +01:00
Thomas Basler
3e8c7a4c10 Introduce numeric error codes in network webapi 2022-12-24 00:01:54 +01:00
Thomas Basler
8e9680f394 Introduce numeric error codes in mqtt webapi 2022-12-24 00:01:54 +01:00
Thomas Basler
af93e5d77e Introduce numeric error codes in maintenance webapi 2022-12-24 00:01:54 +01:00
Thomas Basler
9fd044f74f Introduce numeric error codes in limit webapi 2022-12-24 00:01:54 +01:00
Thomas Basler
4dc50777ef Introduce numeric error codes in inverter webapi 2022-12-24 00:01:54 +01:00
Thomas Basler
98b0a23ea0 Introduce numeric error codes in config webapi 2022-12-24 00:01:54 +01:00
Thomas Basler
3b5ff1691e Introduce numeric error codes in dtu webapi 2022-12-24 00:01:54 +01:00
Thomas Basler
8f5d394f3a Added websocket for debug output 2022-12-19 21:38:39 +01:00
Thomas Basler
8b60c29667 Replace all Serial by MessageOutput 2022-12-19 21:38:39 +01:00
Thomas Basler
cd5d5edd5f Implemented class to send debug output to uart as well as to websocket 2022-12-19 21:38:39 +01:00
Thomas Basler
5feefed14e Added missing copyright information 2022-12-14 22:37:37 +01:00
Thomas Basler
54d94af487 Cleanup includes 2022-12-14 22:13:03 +01:00
Thomas Basler
36477eab49 Fixed prometheus mac address when running in ethernet mode 2022-12-14 21:12:56 +01:00
Thomas Basler
674ead1c38 Fixed Hass device IP when running in ethernet mode 2022-12-14 21:11:53 +01:00
Thomas Basler
91f79fea19 Move publishHass method to MqttHandleHassClass 2022-12-14 21:08:35 +01:00
Thomas Basler
113caf510f Introduce generic mqtt publish method
Allows publish of mqtt topics from other modules
2022-12-14 20:58:57 +01:00
Thomas Basler
5dd4d5b452 Introduce MqttSubscribeParser and moved inverter specific subscribes to MqttHandleInverterClass
This allows individual callback functions for each subscribed topic. Allows easier implementation of further mqtt functions
2022-12-14 20:42:23 +01:00
Thomas Basler
aab72fd0d8 Move mqtt dtu topic publishing to separate class 2022-12-14 19:32:24 +01:00
Thomas Basler
723a2c6dbe Rename MqttPublishing to MqttHandleInverter 2022-12-14 19:13:34 +01:00
Thomas Basler
5dde17c56b Renamed MqttHassPublishing to MqttHandleHass 2022-12-14 19:07:11 +01:00
Thomas Basler
e8c517f650 Fix timezone specific issue when syncing time manually
Time was off by one hour when using the sync button in the web UI.
tm_isdst = -1 means that mktime determines the DST flag based on the current timezone
2022-11-29 22:55:14 +01:00
Thomas Basler
40203f7316 Fix #387: Allow a little bit more loss before HASS shows unavailable 2022-11-28 18:34:39 +01:00
Thomas Basler
36abaeee12 Moved pin assignment outside the hoymiles library
Allows setting the pins during runtime and not  just using the defines
2022-11-27 12:07:25 +01:00
Thomas Basler
2a19b46d52 Add authentication to websocket 2022-11-23 21:00:54 +01:00
Thomas Basler
510f0c59f9 Implement readonly security for API endpoints 2022-11-22 23:40:19 +01:00
Thomas Basler
4bdbcbccc5 Introduce configuration option to decide wether the web ui is accessable without password or not 2022-11-22 23:32:52 +01:00
Thomas Basler
e60619b867 Added device reboot functionality 2022-11-21 23:29:57 +01:00
Thomas Basler
f8b601f871 Show several hints and tips at Live View
This contains the following information:
* No connection to the NRF module possible
* No time set
* Default password used
2022-11-20 15:08:36 +01:00
Thomas Basler
fec84fd048 Show custom string name in Live View 2022-11-15 22:31:04 +01:00
Thomas Basler
134db887c0 Publish string names via MQTT 2022-11-15 22:31:04 +01:00
Thomas Basler
d28fadbdac Extended configuration to allow string names
* Current config will be migrated to new format
* Already extended web API to get/post new format
2022-11-15 22:31:04 +01:00
Thomas Basler
daf847e7b3 BREAKING CHANGE: Removed deprecated config parsing method
After this commit its not possible to migrate from the old binary blob config to the new json based config!! If you still running a old version before 12. October please upgrade to a version before this commit.
See https://github.com/tbnobody/OpenDTU/discussions/285
2022-11-15 22:31:04 +01:00
Thomas Basler
5f55414c0a Show Irradiation only in Live Data View if configured for specific channel 2022-11-15 22:31:04 +01:00
Thomas Basler
dd7babb448 Added a timeout of 5ms to detect current time.
This prevents false positives when a interrupt occours during the reading of the time
2022-11-14 20:19:38 +01:00
Thomas Basler
c2f59427b8 Prometheus API: Increase buffer size to allow more inverters 2022-11-10 20:20:55 +01:00
Thomas Basler
d7bcce947e Prometheus API: Adjust api url and method names 2022-11-10 20:20:54 +01:00
Thomas Basler
d62c5b239f Prometheus API: use integrated serialString() method to fetch serial number 2022-11-10 20:20:53 +01:00
Thomas Basler
8e4e055930 Prometheus API: Remove duplicate cache control 2022-11-10 20:20:52 +01:00
Thomas Basler
0fdf7f19e4 Prometheus API: Applied code formatting 2022-11-10 20:20:45 +01:00
Dominik Westner
e5bbb7f517 implemented prometheus metrics 2022-11-10 18:00:13 +01:00
Thomas Basler
e0b069ff3d Password protection for limit/power settings API 2022-11-08 18:34:00 +01:00
Thomas Basler
ab0029d9fd Show the correct amount of string input fields in inverter config 2022-11-07 22:38:53 +01:00
Thomas Basler
f163e239d2 Fix #303: Add inverter name as prefix to HASS auto discovery 2022-11-07 19:35:29 +01:00
Thomas Basler
233efe3a50 Password protection for firmware update API 2022-11-07 19:02:07 +01:00
Thomas Basler
fe8b68d2be Password protection for config settings API 2022-11-07 18:48:02 +01:00
Thomas Basler
a646eae51a Password protection for inverter settings API 2022-11-03 21:44:01 +01:00
Thomas Basler
902e632f51 Password protection for mqtt settings API 2022-11-03 21:31:50 +01:00
Thomas Basler
3a2f73a2b3 Password protection for ntp settings API 2022-11-03 21:20:12 +01:00
Thomas Basler
e605e42c3e Password protection for network settings API 2022-11-03 21:13:42 +01:00
Thomas Basler
b9d2978bf9 Password protection for dtu settings 2022-11-03 21:05:51 +01:00
Thomas Basler
8d14dbd367 Password protection for security settings API
Also implemented the base functionallity to protect further API endpoints.
2022-11-03 21:00:13 +01:00
Thomas Basler
438ce36bab Added sum values of all inverters to web UI 2022-11-01 16:33:20 +01:00
Thomas Basler
69b675bc64 BREAKING CHANGE: Structure WebAPI /api/livedata/status changed
The different inverter data are now in a subobject called "inverters".
This is required to extend the API by other data then the inverter values
2022-11-01 15:04:05 +01:00
Thomas Basler
f854cdff03 Init last_update with 0 instead of current time 2022-11-01 13:23:29 +01:00
Thomas Basler
b96f0c4dbe Introduce last_update MQTT topic
Shows the timestamp of the last successfull statistics data from the specific inverter
2022-10-31 14:38:10 +01:00
Thomas Basler
4049f6bdb7 Implemented method to get the amount of relevant digits 2022-10-31 11:51:08 +01:00
Thomas Basler
f2a08ba503 Rename FLD_PCT to FLD_PF and assign UNIT_NONE 2022-10-31 00:43:07 +01:00
Thomas Basler
f741fea333 Move serial number formatting to inverter class 2022-10-29 11:22:56 +02:00
Thomas Basler
f21dd351ef Optimize performance by removing not required string constructors 2022-10-29 11:22:56 +02:00
Thomas Basler
c999197dae Optimize performance by passing strings as const reference 2022-10-29 11:22:56 +02:00
Thomas Basler
3a0ba86c9c HASS Auto Discovery: Publish binary sensor reachable and producing 2022-10-29 11:22:56 +02:00
Thomas Basler
6403521e31 HASS Auto Discovery: Publish numbers to set limit 2022-10-29 11:22:56 +02:00
Thomas Basler
96170c08b8 HASS Auto Discovery: Publish buttons for on/off/restart 2022-10-29 11:22:56 +02:00
Thomas Basler
64e4656dbe Simplify creation of HASS device info 2022-10-29 11:22:56 +02:00
Thomas Basler
a7f571a581 HASS: Move create of device object so separate method 2022-10-29 11:22:56 +02:00
Thomas Basler
359d513cfd Generate DTU ID dynamicly based on ESP chipID 2022-10-20 22:25:51 +02:00
Thomas Basler
4193abe942 Fix typo 2022-10-20 22:07:06 +02:00
Thomas Basler
ca51aab236 Move getChipId to separate class 2022-10-20 21:55:41 +02:00
Thomas Basler
f32b561627 Show detected max power in dev info dialogue 2022-10-19 22:16:30 +02:00
Thomas Basler
678f165350 Fix warning: missing initializer for member 2022-10-19 22:16:29 +02:00
Thomas Basler
cc7df7c302 Removed senseless checks
uint can never by smaller than 0
2022-10-18 21:43:12 +02:00
Thomas Basler
d37543fd95 Show current limit in header of live view 2022-10-14 19:16:37 +02:00
Thomas Basler
cf727d4ff9 Added API to change the access point password 2022-10-13 19:44:16 +02:00
Thomas Basler
d2feac7a00 Migrate config from binary blob to json 2022-10-12 19:46:21 +02:00
Thomas Basler
e762abd18f Show RF chip type in SystemInfoView 2022-10-12 00:17:40 +02:00
Thomas Basler
0a577f8002 Allow a maximum limit of 100 if limit type is relative 2022-10-11 23:28:22 +02:00
Thomas Basler
072a7c7a3d Fix #213: Check if topic ends with slash
If this is not the case the subscription to the command topics will fail
2022-10-11 23:04:43 +02:00
Thomas Basler
7ec070f6f9 Fix #212: Only check ssid if in wifi mode 2022-10-11 23:04:43 +02:00
Thomas Basler
283eae295b Show absolute limit in limit dialogue 2022-10-10 19:20:19 +02:00
Thomas Basler
88ad6495d1 Implemented inverter restart via web ui 2022-10-09 13:48:35 +02:00
Thomas Basler
da0998c809 Implement inverter restart by mqtt topic 2022-10-09 13:16:06 +02:00
Thomas Basler
20b799b630 webapp: Show NRF24 connection status 2022-10-06 23:29:17 +02:00
Thomas Basler
c33c73fe01 webapi: Rename limit to limit_relative 2022-10-06 23:29:14 +02:00
Thomas Basler
9e907b0ca7 Publish limit_absolute for known models 2022-10-06 23:29:13 +02:00
Thomas Basler
9b68eb6beb webapp: Show model name 2022-10-06 18:35:04 +02:00
Thomas Basler
a893701b6d Fixed warning regarding switch statement 2022-10-05 18:53:35 +02:00
Thomas Basler
112664f42f Simplify inverterEdit method
Replaced for loop with unused variable by .size() method
2022-10-05 18:37:34 +02:00
Thomas Basler
9c4076d3d5 Fix handling of strncpy on inverter delete 2022-10-05 18:27:35 +02:00
Thomas Basler
7ff0f111af Rename firmware_version to config_version 2022-10-05 18:23:04 +02:00
Thomas Basler
2447d57301 Fixed printf format strings 2022-10-04 23:33:09 +02:00
Thomas Basler
2eafd69276 Show only valid device info data in webapp 2022-10-04 22:15:50 +02:00
Thomas Basler
3816320f1e Implemented WebAPI to get status of last power command 2022-10-04 18:48:21 +02:00
Thomas Basler
14bad84031 Added WebAPI to control inverter power 2022-10-04 18:12:55 +02:00
Thomas Basler
eec04de044 Added MQTT Topic to turn inverter on and off 2022-10-04 18:12:55 +02:00
Thomas Basler
66453b0854 Return correct formatted HwVersion 2022-10-03 13:58:50 +02:00
Thomas Basler
76bf5ec69b Fix cpplint: Replace strtok by strtok_r 2022-10-02 12:37:55 +02:00
Thomas Basler
747335f23f Publish hostname via mqtt 2022-10-01 12:32:31 +02:00
Thomas Basler
bd17ca5199 webapp: Add "Not Producing" indicator 2022-10-01 12:20:31 +02:00
Thomas Basler
00b1ff84be Rename age_critical to rechable in web api
Also use new method to determine whether the inverter is reachable
2022-10-01 10:48:17 +02:00
Thomas Basler
4fe2111173 Implemented MQTT topics reachable and producing per inverter 2022-10-01 10:47:19 +02:00
Thomas Basler
3d68f502c4 Rename MQTT topic settings/limit to status/limit_relative 2022-10-01 01:45:10 +02:00
Thomas Basler
dcaadf26a9 WebAPI: Add status of last set limit command 2022-10-01 00:42:29 +02:00
Thomas Basler
a5e68ef096 Fixed several issues in the web api to set the limit 2022-09-30 18:34:30 +02:00
Thomas Basler
0af809e4ea Do not appy settings if mqtt was retained and topic was non-persistent 2022-09-30 18:34:30 +02:00
Thomas Basler
ace5c33518 Set PowerLimit on mqtt request 2022-09-30 18:34:30 +02:00
Thomas Basler
eb261908af Perform topic parsing 2022-09-30 18:34:30 +02:00
Thomas Basler
ba2d6ab6d1 Implement callback to subscribe to topics 2022-09-30 18:34:30 +02:00
Thomas Basler
d57a5f7ea6 Added web api to set limit 2022-09-30 18:34:30 +02:00
Thomas Basler
290932519c Fix #160: Increase output buffer for inverter list 2022-09-24 10:28:05 +02:00
Thomas Basler
89e5f7e393 Added API to set and get the current time 2022-09-20 19:44:24 +02:00
Thomas Basler
950b211fd5 Set getLocalTime timeout to 0 to prevent watchdog triggers
This happens especially when no WiFi is configured and the user enters the NTP info page
2022-09-19 20:45:44 +02:00
Thomas Basler
e61d47b8a2 Added webapi endpoints to download/upload end delete configuration 2022-09-17 01:46:14 +02:00
Thomas Basler
22ac3faff1 Removed not required variables 2022-09-16 18:21:54 +02:00
Thomas Basler
271c71e064 Replace ESPAsyncWebServer
Use fork from yubox-node-org instead of originial from me-no-dev
Maybe that fixes several issues with the websockets
2022-09-15 19:26:45 +02:00
Thomas Basler
327b4f97a4 Use reinterpret_cast<char*>(...) instead C-style cast 2022-09-15 19:00:07 +02:00
Thomas Basler
4bfb986846 Use reinterpret_cast<uint8_t*>(...) instead C-style cast 2022-09-15 18:59:51 +02:00
Thomas Basler
de33b9ff88 Do not use namespace using-directives. Use using-declarations instead. 2022-09-13 21:35:51 +02:00
Thomas Basler
66c28a2e6e Replace strcpy by strlcpy 2022-09-13 21:20:08 +02:00
Thomas Basler
6fdc27ddae Replace sprintf by snprintf 2022-09-13 21:00:54 +02:00
Stefan Kreutter
cb00537284 fixed compile error
src/NetworkSettings.cpp: In member function 'void NetworkSettingsClass::setHostname()':
src/NetworkSettings.cpp:254:42: error: no matching function for call to 'ETHClass::setHostname(String)'
         if (ETH.setHostname(getHostname())) {
                                          ^
ETH.h:83:14: note: candidate: 'bool ETHClass::setHostname(const char*)'
         bool setHostname(const char * hostname);
2022-09-13 19:09:15 +02:00
Thomas Basler
9674e32c0c Return only the eventlog of one inverter
- Fix #131
- Prevent large responses in case of many inverters + many log entries
2022-09-12 18:48:18 +02:00
Thomas Basler
2f43acbde7 Publish current inverter limit settings via mqtt 2022-09-09 20:18:00 +02:00
Thomas Basler
46367c4fa9 Added webapi to fetch current inverter limit 2022-09-09 18:43:21 +02:00
Thomas Basler
99a34d0901 Publish WiFi RSSI via mqtt 2022-09-08 19:24:22 +02:00
Thomas Basler
86f01e5cc4 webapp: Show complete generated hostname in network info view 2022-09-06 18:45:32 +02:00
Thomas Basler
f5328100b6 Fixed hostname generation and hostname assignment 2022-09-06 18:44:26 +02:00
Thomas Basler
31e56f6c2b Code hardening: introduce const keyword 2022-09-05 21:41:45 +02:00