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)
- Unhandled json errors in GetConfiguration HOT 3
- Parsing of local timestamps not supported - spec violation? HOT 9
- Central-system 1.6 example - "fatal error: concurrent map writes" when connecting multiple chargers rapidly HOT 1
- Code Generation HOT 1
- TriggerMessage.Req validation disallows passing connector 0 HOT 6
- ChangeConfigurationRequest doesn't allow empty values
- Bad Request response for https via curl request HOT 1
- Release new version? HOT 2
- Fix vet report HOT 2
- Issue with DataTransfer on both ocpp 1.6 and 2.0.1 HOT 2
- Send Command To Charging Station
- I call remote start transaction but got error "ocpp message (2193907606): InternalError - An internal error occurred and the receiver was not able to process the requested Action successfully" HOT 1
- SecurityEventNotification.req HOT 12
- Decouple websocket server and message processing HOT 7
- Parses an OCPP-J message,Occurrence anomaly HOT 4
- Is their any way to bypass the SubjectAlternateName check while using tls? HOT 1
- Fetch chargePointId inside SetBasichandler HOT 6
- Fetch raw ocpp message HOT 4
- Bug with validation for connectorId of GetCompositeSchedule.conf #275
- shoudl idTag validator be altered? HOT 3
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.