Comments (3)
Hello, thanks for spotting this. It's tricky because in Go the "empty" value for numerical values is literally 0
, so passing a 0 value will cause the validation to fail. I understand that passing a zero value is a perfectly valid use case though.
The only thing I can think of is to remove validation for this field altogether. The downside is that an endpoint may send a completely empty json for a sampled value -> it will be considered valid and the parsed value will be 0.0
.
from ocpp-go.
Hey @lorenzodonini, was checking the documentation though it is a required field the value can be zero.
As you said if removing that validation could cause an empty JSON to go in, can't we add custom validation checking if at least any fields have value?
My suggestion might not the best to do but still, it feels like a possible workaround
Even though all the other fields are optional, if none of the fields including the value is empty, that could be an empty request. Considering a real-time charger scenario, there will be value against a parameter like voltage or power. So a custom validation to check if its empty could be a viable solution.
Referred document: OCPP-2.0.1_part2_specifiction.pdf from Open Charge Alliance.
If the solution looks good I can write up the MR/PR!
Please let me know what you think :)
Also great work on the repo 😇
from ocpp-go.
Hey @Clint-Mathews, the Value
field is not a pointer, so it will always contain a value (fallback being zero). If an empty json actually came in, the parsed value would be 0
. Validation always occurs before/after converting to/from json format, which sadly doesn't allow you to determine whether the json was empty.
The best idea that comes to mind is to make the field a pointer type, which could then be correctly validated. That would be a breaking change though.
Or do you have any other concrete ideas for the validation? Totally open to suggestions.
from ocpp-go.
Related Issues (20)
- Workflows, e.g. BootNootification -> GetConfiguration HOT 1
- Dealing with non conforming json ocpp messages HOT 2
- How to run 1.6 cp example? HOT 3
- SetVariableStatus - wrong type validation
- Connection URL HOT 2
- how do I use both OCPP 1.6 & 2.0.1 in custom Central System HOT 1
- how do i get message id for CentralSystem commands HOT 2
- type Transaction struct - StoppedReason - Type -> TriggerReason? HOT 2
- Validator instance seperate in ocpp1.6 and ocpp2.0.1 HOT 1
- Unable to Include LocalAuthorizationList in OCPP1.6 SendLocalList Command HOT 2
- Infinite wait on stopping a disconnected charge point HOT 1
- Need to support panic recovery in the request handlers HOT 4
- Unhandled `FormatViolation` type on `CallError` on ocpp v2 (OCPP 2.0.1 Specification, Table B06.FR.17)
- Firmware Status Notification HOT 2
- Clustering - Horizontal Scaling, Production deployment more than one node HOT 2
- OCPP 2.0 Reset Request Validator Error HOT 2
- OCPP2.0.1 No means for cleanly sending securityerror codes HOT 1
- Unhandled/error validation for `TransactionEventRequest` eventType:`Started` with idToken/IdTokenType (type:`NoAuthorization` and empty `idtoken` value)
- Race condition in chargePoint.Start() HOT 4
- Race in library and tests HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ocpp-go.