Commit Graph

199 Commits

Author SHA1 Message Date
Thomas Basler
26b9bbf537 Prevent null pointer exception when deleting inverter
The removeInverterBySerial can be called in a webserver callback method.
This is maybe executed on another core which can then run in parallel to the radio loop hoymiles loop.
Accessing inverters which are already removed can lead to exceptions.
The Semaphore prevents that parallel execution
2022-11-10 18:26:01 +01:00
Thomas Basler
547fe41ab1 Add missing parser class to documentation 2022-10-31 14:14:01 +01:00
Thomas Basler
4049f6bdb7 Implemented method to get the amount of relevant digits 2022-10-31 11:51:08 +01:00
Thomas Basler
27ed4e3cda BREAKING: Change power factor from percent value to value between 0 and 1
If you write these values to a database you have to update them.
2022-10-31 10:50:31 +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
9f4d8bdddb Better limit description 2022-10-20 19:34:10 +02:00
Thomas Basler
3ab7d9f6fe Fix #246: Allow negative float values
This is required for the temperature field which can be negative as well
2022-10-20 18:18:36 +02:00
Thomas Basler
678f165350 Fix warning: missing initializer for member 2022-10-19 22:16:29 +02:00
Thomas Basler
1dd6e9c453 Check 4th byte on DevInfoSimple to get max_power
This is required to detect models with fixed power limits
2022-10-19 22:16:18 +02:00
Thomas Basler
d224db4d1d Fixed warning: type qualifiers ignored on function return type 2022-10-18 21:42:03 +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
4c65be8c55 Add comma values to inverter limit 2022-10-11 23:04:43 +02:00
Thomas Basler
da0998c809 Implement inverter restart by mqtt topic 2022-10-09 13:16:06 +02:00
Thomas Basler
753ab1312e DevInfoParser: Dont create string object twice 2022-10-08 18:15:06 +02:00
Thomas Basler
05d9ce4590 Output channel for RX messages 2022-10-08 18:14:43 +02:00
Thomas Basler
223b7ff3ce Adjusted serial parsing to detect model
There are some MI-1500 models which are compatible with the Gen3 protocol.
The adjustment takes this into account.
2022-10-08 18:03:56 +02:00
Thomas Basler
1cbff8afca Added HM-350 to list of known devices 2022-10-08 10:58:59 +02:00
Thomas Basler
b5cb24a46d Fix AlarmDataCommand timeout for 15 entries 2022-10-08 02:34:54 +02:00
Thomas Basler
fbd58554b9 Show HW Version as decimal instead of hex 2022-10-06 23:29:18 +02:00
Thomas Basler
20b799b630 webapp: Show NRF24 connection status 2022-10-06 23:29:17 +02:00
Thomas Basler
64ae87faf1 Define several methods as private 2022-10-06 23:29:15 +02:00
Thomas Basler
e1690e8f74 Apply limit instantaneously if inverter info is available 2022-10-06 23:29:05 +02:00
Thomas Basler
b02d36d042 Added IDs to identifiy inverters to DevInfoParser 2022-10-06 18:34:31 +02:00
Thomas Basler
373e1e5e8f Fixed function not used warning 2022-10-05 18:51:21 +02:00
Thomas Basler
7cede84785 Fixed uninitialized variable warning 2022-10-05 18:42:41 +02:00
Thomas Basler
d021d7529f Fix parentheses error in AlarmLogParser 2022-10-04 23:38:32 +02:00
Thomas Basler
4031b71d7d Implemented resend of PowerCommand 2022-10-04 18:12:55 +02:00
Thomas Basler
0fd714b165 Implemented first few classes for power control
TurnOn and TurnOff
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
6cbcfacac6 Renamed several methods from Sample to Simple 2022-10-03 13:14:31 +02:00
Thomas Basler
b2a30621db Extended and updated event log texts 2022-10-02 23:52:35 +02:00
Thomas Basler
eef6c37de9 Beautify serial output of package log 2022-10-02 18:43:19 +02:00
Thomas Basler
18ec145dda Added command names to serial output 2022-10-02 17:17:34 +02:00
Thomas Basler
c8c6b2a978 Renamed DevInfoSample to DevInfoSimple 2022-10-02 17:01:46 +02:00
Thomas Basler
a3d9c6ae0f Fixed array size of 1 channel inverters 2022-10-02 16:04:02 +02:00
Thomas Basler
67e0d0274d Code cleanup: Remove not required comments 2022-10-02 15:44:33 +02:00
Thomas Basler
1aef350c2e Remove not required method isA() 2022-10-02 15:43:11 +02:00
Thomas Basler
2a71be06ab Fix cpplint: Adjust syntax of todo comment 2022-10-02 12:34:25 +02:00
Thomas Basler
989026d049 Fix cpplint: make one argument constructor explicit 2022-10-02 12:33:23 +02:00
Thomas Basler
862b65e844 Added method to detect whether an inverter is reachable 2022-10-01 02:16:47 +02:00
Thomas Basler
a261eb838c Added method to detect whether a inverter is producing 2022-10-01 02:00:56 +02:00
Thomas Basler
754913368a Implemented way to periodically fetch the current limit from the inverter
The fetch is only executed at least 4 minutes after the last set command.
Otherwise it would generate a entry in the event log (ID 2)
2022-09-30 18:34:30 +02:00
Thomas Basler
3153ee4993 Implemented getTimeout method in AlarmDataCommand 2022-09-30 18:34:30 +02:00
Thomas Basler
a707ab501d Implemented method to check whether the last command was successfull
This also allows to retransmit the command after specific time if not successfull
2022-09-30 18:34:30 +02:00
Thomas Basler
a8ee8afb17 Set correct timeout for DevControlCommand 2022-09-30 18:34:30 +02:00
Thomas Basler
a2880cc447 Add RX main command to structure which is passed to handleResponse
This is required because the DevControlCommands just set the first byte to define whether the request was successfull or not
2022-09-30 18:34:30 +02:00
Thomas Basler
2376da1722 Create function to set ActivePower on inverter level 2022-09-30 18:34:30 +02:00
Thomas Basler
73e2aaf8fe Implemented setting/getting of limit/type for ActivePowerControl 2022-09-30 18:34:30 +02:00
Thomas Basler
d998271944 Implemented crc16 calculation for DevControlCommand 2022-09-30 18:34:30 +02:00
Thomas Basler
cfdbf5963c Empty classes of ActivePowerControl 2022-09-30 18:34:30 +02:00
Thomas Basler
8e2aa8981f Fix #170: Update byte assignment for statistics data 2022-09-28 18:44:59 +02:00
Thomas Basler
b8f03eddfd Fixed scheduler issue
When the RF method took very long inverters where skipped
2022-09-25 17:28:50 +02:00
Thomas Basler
68fc0c2547 Extend memory to fetch all eventlog entries 2022-09-25 17:26:48 +02:00
Thomas Basler
53692bae34 Fix timeout for alarm messages 2022-09-23 19:13:08 +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
9cda41f5e9 Use uint32_t, rather than the C type long 2022-09-15 19:00:38 +02:00
Thomas Basler
c07b18a9d8 Use static_cast<float>(...) instead C-style cast 2022-09-15 18:53:41 +02:00
Thomas Basler
c43346134d Use static_cast<int>(...) instead C-style cast 2022-09-15 18:48:22 +02:00
Thomas Basler
088ba58827 Mark Single-parameter constructors explicit 2022-09-13 22:50:33 +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
abcabf7fb6 Added header guard 2022-09-13 21:11:32 +02:00
Thomas Basler
b0460c7f14 Add documentation of current class hierarchy 2022-09-09 20:53:15 +02:00
Thomas Basler
b7961024a1 Fetch limit every 10 minutes 2022-09-09 20:17:52 +02:00
Thomas Basler
3e5fb00248 Fetch inverter limit at least once 2022-09-09 18:41:54 +02:00
Thomas Basler
c28a532bf1 Added base classes for SystemConfigPara 2022-09-09 18:41:07 +02:00
Thomas Basler
185fea987d Added some initializations to prevent missunderstandings and errors 2022-09-05 21:53:50 +02:00
Thomas Basler
31e56f6c2b Code hardening: introduce const keyword 2022-09-05 21:41:45 +02:00
Thomas Basler
26268479fb Fix #96 and #95 : Reworked handling of inverter editing 2022-08-24 02:53:34 +02:00
Thomas Basler
1456974616 Fix #76: Null Pointer exception when adding a inverter with unkonwn serial number 2022-08-16 19:47:51 +02:00
Thomas Basler
991838ae2c Added reactive power output and display 2022-08-10 20:40:26 +02:00
Thomas Basler
528c56eaa6 Added parser and commands for hardware version and part nr 2022-08-10 20:12:52 +02:00
Thomas Basler
c3a043b1ce Improve handling of firmware data fetch 2022-08-10 19:03:02 +02:00
Thomas Basler
f566a8c522 Implemented parser methods and publish to mqtt 2022-08-10 19:03:02 +02:00
Thomas Basler
ee339fa9bd Use Parser class in Statistics and Alarm parser 2022-08-10 19:03:02 +02:00
Thomas Basler
8715320282 Implemented DevInfo command 2022-08-10 19:03:02 +02:00
Thomas Basler
ef5d549f8a Fix exception when deleting a inverter 2022-08-09 21:46:40 +02:00
Thomas Basler
6c088a9898 Implemented channel hopping on TX frequencies
Every sent package changes the frequency
2022-08-04 20:10:44 +02:00
Thomas Basler
4ff6433b90 Added first empty classes for DevControl and ParaSet 2022-08-03 20:36:35 +02:00
Thomas Basler
037f7b9caf Move CRC check of multidata command from InverterAbstract to MultiDataCommand class 2022-08-03 19:51:10 +02:00
Thomas Basler
3abc7d7e3d Increase max receiveable packages to 12
* Required for large eventlogs
2022-08-03 19:21:52 +02:00
Thomas Basler
081b19f9fb Allow fragments without payload
This is required for several DevControl commands
2022-08-03 19:13:31 +02:00
Thomas Basler
857e4a3671 Remove RequestType and place handling of response in the command class 2022-08-03 18:50:34 +02:00
Thomas Basler
a73707380f RequestFrameCommand can now be configured individually for each command
If the return value equals nullptr, a retransmit is not performed
2022-08-02 21:14:41 +02:00
Thomas Basler
c35f12c7be Fixed CRC calculation 2022-07-30 12:50:07 +02:00
Thomas Basler
0d26337575 Fixed retransmit count 2022-07-30 11:59:01 +02:00
Thomas Basler
442b27e859 Fixed assignment of router and target address 2022-07-30 11:10:04 +02:00
Thomas Basler
4413b603e3 Replace inverter_transaction with new command classes 2022-07-30 00:37:54 +02:00
Thomas Basler
4daa121663 Added several classes to encapsulate the packet generation 2022-07-29 23:31:28 +02:00
Thomas Basler
b2e41a1cfd Fix #37: Typo in statistics name (will lead to incompatible mqtt topic) 2022-07-24 12:38:00 +02:00
Thomas Basler
0fed0ba614 Update AlarmLogParser
* Show times > 12:00:00
* Fixed parsing of StartTime
2022-07-19 21:17:15 +02:00
Thomas Basler
dcc7e47b19 Hoymiles: Introduce init method to have a clean init on beginning
Constructor is not possible for obvious reasons
2022-07-18 21:30:12 +02:00
Thomas Basler
c6499e09bd Ignore fragment number zero. Should fix #29
It seems that some inverters send packages with fragment number zero and a valid CRC. Must ignore such packets!
2022-07-15 22:37:42 +02:00
Thomas Basler
4373ee651f Added YieldTotal and YieldDaily to 1 channel inverters to CH0 2022-07-15 18:49:17 +02:00
Thomas Basler
05c478d1f2 Added several guards and error messages
Try to prevent heap corruptions
2022-07-14 18:54:53 +02:00
Thomas Basler
e057ed3ed7 Fixed issue that no data in live view where shown
Happend only for inverters which didn't answer any request
2022-07-12 21:21:04 +02:00
Thomas Basler
4259df9ee6 Hoymiles Lib: Allow configuration of all pins 2022-07-12 18:42:52 +02:00
Thomas Basler
5bb9acdbc6 Refactored Hoymiles Lib: Move statistics parser into separate class 2022-07-12 18:27:56 +02:00