VE.Direct: Reset state machine on timeout, fix and extend logging #416
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
In the event of unreliable serial communication to the Victron MPPT, bitflips and other errors may cause the state machine to hang in a particular state, such that the end of a frame/message is never detected correctly. This changeset adds a timeout: If no serial data was received for 500ms, the state machine is reset, so when a new frame is received, the state machine is expecting the start of a frame and it can decode it properly.
This change also makes sure that problems detected by the VeDirectFrameHandler are also put into the WebConsole. Previously, the messages were printed directly to the serial connection, so they never appeared on the web console.
The VE.Direct settings now include a setting to enable verbose logging. If enabled, the message output will include the raw serial data received.