Commit Graph

428 Commits

Author SHA1 Message Date
Thomas Basler
fa7641f715 Fix: Power not set to 0 when not reachable at EOD
If the inverter polling was disabled before it got unreachable the values where not set to zero
Fix: #1488
2023-11-09 22:30:35 +01:00
Thomas Basler
17e92fc5eb Feature: Support HMT-1600/1800/2000-4T 2023-11-07 18:34:37 +01:00
Thomas Basler
2ae8ed5e18 Doc: Add class description for inverters 2023-11-05 13:44:08 +01:00
Thomas Basler
0a4945ae39 Adjusted inverter names 2023-11-05 13:43:48 +01:00
Thomas Basler
f1a8c2ea82 Feature: Added additional event log descriptions and implemented i18n 2023-10-11 13:22:42 +02:00
Thomas Basler
dc5b5e837f Rename "DTU command failed" to "Time calibration" as mentioned in #121 2023-10-10 16:23:11 +02:00
helgeerbe
b461aff622 Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-10-10 09:26:43 +02:00
Thomas Basler
f203a971b0 Feature: Added Descriptions for Event Log Messages as shown in #121 2023-10-09 19:38:22 +02:00
Thomas Basler
d373702d7b Added additional ID for HMS-1000 to DevInfoParser
Fix #1392
2023-10-09 16:58:21 +02:00
Thomas Basler
32d91379fa Init all data members befor pushing it into the buffer 2023-09-30 10:48:41 +02:00
Thomas Basler
d4345917da Added additional ID for HMS-900 to DevInfoParser
Fix #1392
2023-09-30 10:45:49 +02:00
helgeerbe
b081845b95 Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-09-19 12:28:00 +02:00
helgeerbe
9d6b459dc6 merge of v23.9.13 2023-09-18 10:46:43 +02:00
Thomas Basler
21fb10f7f2 Feature: Add one channel HMS inverter with different byte assignment
Fix #1148
2023-09-14 23:58:08 +02:00
helgeerbe
f7bd4a40d8 revert Revert "Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development"
merge of v23.9.11 broke the system. As a workaround upgrade espressif32 from 6.3.2 to 6.4.0 is skipped. See #440
2023-09-14 13:45:23 +02:00
Thomas Basler
a974e217df Fix #1335: Only the first inverter was set to zero at midnight via mqtt 2023-09-13 18:46:23 +02:00
helgeerbe
2eeb5f1d19 Revert "Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development"
This reverts commit eb1c2dbd8c, reversing
changes made to 0cb42a6424.

merge of v23.9.11 broke the system
2023-09-12 20:18:10 +02:00
helgeerbe
eb1c2dbd8c Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-09-12 19:27:32 +02:00
Thomas Basler
3a3adb4723 Completly ignore a disabled (polling + command) inverter.
This leads to higher update rates on still enabled inverters.
2023-09-10 11:49:41 +02:00
Thomas Basler
8023b6620a Fix: Ignore incomplete SystemConfigPara packages
Some inverters seem to transmit too less and incomplete data. These packages will be ignored now.
2023-09-07 23:10:01 +02:00
Thomas Basler
0260af9ada Hoymiles Lib: Move semaphore handing into parser base class 2023-09-07 22:08:07 +02:00
Thomas Basler
9ac6dd6e8d Feature: First very basic support to read the grid profile
The parser is still missing and requires community support to collect data.
2023-09-07 22:08:07 +02:00
Thomas Basler
1acefd8b8c Fix: Do not resend fetch limit request if the last one failed
Due to side effects it is possible that the inverter receives the request but the DTU does not receive the answer. In this case the DTU would resend the request but the inverter would generate a event log entry (DTU command failed) because it received the message twice.
2023-09-05 22:09:16 +02:00
Thomas Basler
ec9af886d5 Feature: Added option to set daily yield to zero at midnight 2023-09-05 20:27:52 +02:00
Thomas Basler
55afa81cf1 Convert from FreeRTOS Semaphore to std::mutex 2023-09-02 16:46:23 +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
2c41be106e Feature: Allow setting of the Reachable Threshold per inverter 2023-09-01 19:17:12 +02:00
helgeerbe
d4afc5940a Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-08-29 09:24:25 +02:00
helgeerbe
ca308d0895 Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-08-28 13:12:07 +02:00
Thomas Basler
b88030f76e Feature: Re-Request DevInfo if it contains invalid data
It can sometimes occour that the DevInfo request returns invalid data. Currently this is identified if the firmware build year is < 2016. In this case the package will be re-requested now.
2023-08-25 11:04:14 +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
Bernhard Roth
6eb3c63288 Fix issue #1256 (HMS-2000-4T reactive power should be signed) 2023-08-21 11:14:24 +02:00
helgeerbe
21bbed9b8e Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-08-09 12:37:33 +02:00
Thomas Basler
188a6cf39d Replace template by abstract class 2023-08-05 01:01:53 +02:00
Thomas Basler
22d9b128b9 Fix: Move setting of CMD_PENDING state into the right order 2023-08-04 23:44:18 +02:00
helgeerbe
5335ec1bde Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-08-04 12:21:16 +02:00
Thomas Basler
832df5a80e Implement the command queue thread safe
The queue will be maybe filled from within another thread (mqtt/web) and handled from the main loop
2023-08-03 00:17:32 +02:00
Thomas Basler
be09c4052f Fix: Ensure that only completly assembled packets are put into the command queue 2023-08-02 22:41:53 +02:00
helgeerbe
69456affce Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-08-02 19:46:35 +02:00
Thomas Basler
686112e4ee Fix: Wrong detection of HM-300 inverters
Was introduced in v23.8.1; Fixes #1198
2023-08-02 18:41:25 +02:00
Thomas Basler
5bbc67bc49 Fix: Clear parser buffers to prevent random numbers if no data was received 2023-07-31 22:52:38 +02:00
Thomas Basler
ef65094181 Fix: Prevent wrong values of devinfo data because of non-atomic transaction 2023-07-31 22:27:28 +02:00
Thomas Basler
74169c3b17 Fix: Prevent wrong values of systemconfigpara data because of non-atomic transaction 2023-07-31 22:06:04 +02:00
Thomas Basler
698ecbcd53 Fix: Prevent wrong values of alarm data because of non-atomic transaction and fix calculation of getEntryCount() 2023-07-31 22:06:04 +02:00
Thomas Basler
14305a9f12 Fix: Prevent wrong values of statistics data because of non-atomic transaction 2023-07-31 22:05:22 +02:00
Thomas Basler
9821c1905b Fix: Uninitliazed variable used before first use 2023-07-31 21:44:50 +02:00
helgeerbe
2440028d38 Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-07-24 13:16:15 +02:00
Thomas Basler
658a42db80 Apply code formatter without functional changes 2023-07-22 18:00:41 +02:00
Bernhard Kirchen
f0def2ae89
Selective verbosity (#318)
* DPL: implement verbose logging switch

* MQTT: implement verbose logging switch

* power meter: implement verbose logging switch

* Hoymiles lib: implement verbose logging switch

* cpp linting: "final" makes "virtual" and "override" redundant

... however, using only "final" is not as verbose.
2023-07-18 09:57:03 +02:00
helgeerbe
633ef88296 Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-07-12 13:45:19 +02:00
Thomas Basler
0ffbba0cf5 Fix: Allow sending of ChannelChangeCommand even if EnableCommands is disabled
This is required to successfull move the inverter to another frequency and then polling it. Without this command its not even possible to poll a inverter.

Fixes #1127
2023-07-10 18:30:59 +02:00
helgeerbe
9a4eb75160 Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-07-02 14:32:12 +02:00
Bernhard Kirchen
8b23324693 ensure only one PowerCommand and ActivePowerCommand is queued
neither a PowerCommand nor an ActivePowerCommand shall be enqueued if
another one is already pending.
2023-06-30 20:03:21 +02:00
jstammi
82038d3e2d Fix: do not calc sizes multiple times
tbnobody/OpenDTU/issues/1022
2023-06-28 19:26:45 +02:00
jstammi
4ae6a2b4ef Fix: calc expected statistics packet length per parser
tbnobody/OpenDTU/issues/1022
2023-06-28 16:53:38 +02:00
Thomas Basler
69aa247470 Added check in statistics data that at least all required bytes are received
It can occour for some inverters that incomplete fragments with valid crc but less bytes are received

This was mentioned in #1084
2023-06-27 18:59:54 +02:00
helgeerbe
cd1db49a98 Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-06-22 21:14:12 +02:00
helgeerbe
f018a0136e Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-06-21 16:52:02 +02:00
Thomas Basler
184c659197 Added new found HMS-400 to DevInfoParser
Fixes #1045
2023-06-19 11:33:06 +02:00
Thomas Basler
64c96c34f4 Revert "Fix: String numbers for HMT inverters are mirrored"
This reverts commit 593a33020f.
2023-06-14 21:44:55 +02:00
helgeerbe
e68baa3086 Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-06-09 13:16:56 +02:00
Thomas Basler
593a33020f Fix: String numbers for HMT inverters are mirrored
Fixes: #1005
2023-06-07 18:05:51 +02:00
Thomas Basler
82b0272ceb Removed duplicate code by moving it into the radio base class 2023-06-03 12:07:46 +02:00
Thomas Basler
c5a31de5a8 First try to output some dBm info for the NRF module 2023-06-03 11:54:23 +02:00
MalteSchm
e7c8a89bd3 inital version of full solar passthrough
Webinterface change to set full solar passthrough values

Adding webapi and config changes to enable full solar passthrough over certain battery Soc

inital version of full solar passthrough in power limiter

Passthrough mode can be enabled via MQTT

translations

re-enable comment

remove unused variable
2023-06-02 12:49:24 +02:00
Thomas Basler
249436a303 Added possible description for alarm code 73
https://github.com/tbnobody/OpenDTU/discussions/590#discussioncomment-6049750
2023-05-31 19:23:35 +02:00
Thomas Basler
e0027d951b Feature: Added new found HMS-900 to DevInfoParser
Fixes #967
2023-05-27 11:14:15 +02:00
Thomas Basler
5fea7ee066 Fix: Doublecheck if the MutiDataCommand begins with the correct ID
ID is 0x15 | 0x80
2023-05-24 22:06:58 +02:00
Thomas Basler
8f2a2b40b1 Fix: Filter incoming packages from CMT module for the right destination address
The CMT module receives every package on it's target frequency. Compared to the NRF module to filtering takes place. Therefor it's required to check if the package destination id is really the id of our dtu
2023-05-24 21:55:15 +02:00
helgeerbe
a3e7439181 fix(action): sort tags in chronological order 2023-05-24 09:13:04 +02:00
Thomas Basler
fe90c863bf Fix: Better handling of invalid fragment ids 2023-05-23 19:32:51 +02:00
helgeerbe
b7ac70b1ca Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-05-23 09:19:57 +02:00
Thomas Basler
295eeba556 Feature: Added new found HMS-450 to DevInfoParser
Fixes #911
2023-05-11 18:26:56 +02:00
helgeerbe
1c7b7d3cdf Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-05-10 18:16:25 +02:00
Thomas Basler
7be5dd865a Feature: Added new found HMS-1600 to DevInfoParser 2023-05-09 19:29:23 +02:00
Thomas Basler
99ab78d544 Feature: Added new found HMS-600 to DevInfoParser 2023-05-06 17:49:04 +02:00
Thomas Basler
74abc1ec1d Feature: Added new found HMS-2000 to DevInfoParser
Fix #886
2023-05-06 12:16:05 +02:00
helgeerbe
dae4c6fbf5 Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-04-28 22:38:39 +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
helgeerbe
e91935ab38 Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-04-26 11:47:19 +02:00
Thomas Basler
0441bbbe72 Fix: Queue consumed whole memory on inverter timeout
When the poll interval was e.g. 1sec it was possible that the queue ran full and consumed the whole memory.
Now new entries are only added to the queue automatically if the queue is empty.  This issue also caused a lot of "DTU command failed" messages.
2023-04-25 19:24:56 +02:00
helgeerbe
37b5edb010 Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-04-25 18:51:18 +02:00
Thomas Basler
98da2b64e2 Rename FLD_PRA to FLD_Q 2023-04-24 22:29:59 +02:00
Thomas Basler
270a7f4933 Rename UNIT_VA to UNIT_VAR 2023-04-24 22:25:15 +02:00
Thomas Basler
f5c15a445b Move byteAssignment to stack (avoid container) to save heap 2023-04-22 01:12:29 +02:00
Thomas Basler
0e9c666981 Implement method as static 2023-04-21 19:02:10 +02:00
helgeerbe
a1b3bdfee8 Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-04-18 12:09:22 +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
af3a277e30 Introduced HoymilesRadio property to determine if a configuration attempt was done 2023-04-17 18:59:56 +02:00
Thomas Basler
1416efc6f9 Fix: Endless loop when CMT module was configured but not connected 2023-04-17 18:58:23 +02:00
helgeerbe
40cee1f9ca Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-04-17 11:08:55 +02:00
Thomas Basler
7c37d289c0 Enabled additional statistics data for HMT inverters
Not yet shown in web ui and mqtt
2023-04-15 10:55:48 +02:00
Thomas Basler
6856ba9972 Fix: Change defines to get a correct calculation if base frequency of CMT module is different compared to Hoymiles base frequency 2023-04-15 10:55:48 +02:00
Thomas Basler
f3942bb647 Fix: Set correct frequency when changing it via web ui
Previously it could happen that the frequency was changed between saving old and recovering new frequency. Therefor an invalid frequency was saved in the CMT module
2023-04-15 10:55:48 +02:00
Thomas Basler
8356db94b9 Send ChannelChangeCommand only once per cycle as the inverter will not response at all 2023-04-15 10:55:48 +02:00
Thomas Basler
ac7b5dba11 Resend and Retransmit count is now implementable per command 2023-04-15 10:55:48 +02:00
Thomas Basler
e2aa29f117 Remove cmtProocess method and move RF logic into the cmt2300wrapper class 2023-04-15 10:55:48 +02:00
Thomas Basler
f5767e61ef Implement CMD56 as own command.
By doing so, it's possible to send all packets via the sendEsbPacket method. A lot of stuff could be removed which is no more used.
2023-04-15 10:55:48 +02:00
Thomas Basler
cfb37906ca Rename cmtFreqToChan to getChannelFromFrequency and simplify handling of current channel 2023-04-15 10:55:48 +02:00
Thomas Basler
1259f09503 Replace multiple print calls by a single printf in HoymilesRadio_NRF 2023-04-15 10:55:48 +02:00
Thomas Basler
a11ee472c6 Optimize cmtChToFreq method to return float instead of string. Renamed also to getFrequencyFromChannel 2023-04-15 10:55:48 +02:00
Thomas Basler
2a92f67a9a Implement get and set channel in cmt2300 wrapper class 2023-04-15 10:55:48 +02:00
Thomas Basler
fffd872b20 Replace HOY_BASE_FREQ by CMT_BASE_FREQ 2023-04-15 10:55:48 +02:00
Thomas Basler
5b648b63ac Implemented blocking write method in CMT2300 driver and use it in sendEsbPacket. 2023-04-15 10:55:48 +02:00
Thomas Basler
6331210b94 IsReachable of the inverter was never reached 2023-04-15 10:55:48 +02:00
Thomas Basler
25722f6055 Adjust buffer size in StatisticsParser for inverters with more inputs 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
6ea34b331d Increase command timeouts to support inverters with 6 channels and more phases 2023-04-15 10:55:48 +02:00
Thomas Basler
1614b2ad2d Add newline after log output 2023-04-15 10:55:48 +02:00
Thomas Basler
5e11f0b854 Implement property in HoymilesRadio_CMT to set the frequency during runtime 2023-04-15 10:55:48 +02:00
Thomas Basler
fe5e5bc4b1 Implement cmtBaseChOff860 as a define 2023-04-15 10:55:48 +02:00
Thomas Basler
4561e52735 Adjusted some comments 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
bec9870347 Move alarm messages from heap to stack 2023-04-15 10:55:47 +02:00
Thomas Basler
fc5f6887cb Adjust name from CMT2300a to CMT2300A 2023-04-15 10:55:47 +02:00
Thomas Basler
098691af9d First step towards a modular CMT2300 driver similar to the NRF24 one 2023-04-15 10:55:47 +02:00
Thomas Basler
67055276ca Implement different Eventlog messages for HMT inverters
Also make message list much more readable
2023-04-15 10:55:47 +02:00
Thomas Basler
06cc19fc70 Use TimeoutHelper for TX timeout 2023-04-15 10:55:47 +02:00
Thomas Basler
46036eb958 Simplify dumpBuf method in HoymilesRadio 2023-04-15 10:55:47 +02:00
Thomas Basler
83c623708f Fix crash if radio settings where changed while the radio was not initialized 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
dc91929d6e First rough implementation of HMT inverters 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
3c0d89f599 Replaced println by printf and code style changes 2023-04-15 10:55:47 +02:00
Thomas Basler
a585ffe199 Add variable for max channel count (to extend serveral arrays) 2023-04-15 10:55:47 +02:00
Thomas Basler
90c689a41a Implement HoymilesRadio_CMT 2023-04-15 10:55:47 +02:00
Thomas Basler
8927b8374a Added HMS/HMT devices to the DevInfoParser 2023-04-15 10:55:47 +02:00
Thomas Basler
41e2ba7fcf Move serveral methods from the HoymilesRadio_NRF class to the HoymilesRadio base class 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
Thomas Basler
c2e4c5d43e Added first implementation of HMS inverter classes 2023-04-15 10:55:47 +02:00
helgeerbe
1dc73f91ee Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-04-13 10:18:49 +02:00
Thomas Basler
299ba8f27a Doc: Resolve Markdown Lint errors 2023-04-06 23:34:35 +02:00
Thomas Basler
ca0b8e9afc Remove not required F() macro. Frees ~20kb flash. 2023-04-05 11:54:50 +02:00
Thomas Basler
3e208219b6 Fix #753: Only apply offset if data is in the buffer to prevent negative numbers 2023-04-05 11:51:09 +02:00
Thomas Basler
edaa223856 Fixed typo in comment 2023-04-05 11:51:09 +02:00
Thomas Basler
d6028cbd50 Remove not required F() macro. Frees ~20kb flash. 2023-04-04 18:51:18 +02:00
Thomas Basler
d099bc4ff8 Fix #753: Only apply offset if data is in the buffer to prevent negative numbers 2023-03-30 22:11:20 +02:00
Thomas Basler
041249523e Fixed typo in comment 2023-03-28 22:41:27 +02:00
helgeerbe
e0a80734f3 Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-03-27 21:10:03 +02:00
Thomas Basler
8d8c7f8a71 Fixed typo: Successfull --> Successful 2023-03-23 23:30:55 +01:00
helgeerbe
3f8226c36c Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-03-23 19:14:14 +01:00
Thomas Basler
70130f47ae Remove not required register keyword 2023-03-20 18:05:57 +01:00
helgeerbe
9f2d79f2dc Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-03-03 10:53:43 +01:00
Thomas Basler
f423ce0a6b Fix #644: Added additional HM-400 to mapping table 2023-02-28 19:42:15 +01:00
helgeerbe
a2473645a5 Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-02-23 12:01:34 +01:00
Thomas Basler
fa3d0370f0 Fix isReachable and isProducing based on PollEnabled 2023-02-18 23:50:16 +01:00
Thomas Basler
7da782c4ef Hoymiles Lib: Added flags to inverter to enable/disable polling and commands to the inverter 2023-02-18 15:51:46 +01:00
helgeerbe
27f20a76f0 Merge remote-tracking branch 'tbnobody/OpenDTU/master' into development 2023-02-16 12:35:18 +01:00