mypyllant-component
mypyllant-component copied to clipboard
Bad request, Client Response Code 400
Before submitting a new issue
- [x] I redownloaded the latest release and restarted Home Assistant
- [x] I've checked known issues
- [x] I've enabled debug logs and attached the relevant logs to this ticket
Problem description
If I try to send a command towards the api (e.g. to set the zone operation mode), I get error code 400. Could it be bad authentication or a NULL parameter?
Logs
Logger: homeassistant.components.automation.heizung_heizung_ausschalten
Quelle: components/automation/__init__.py:666
Integration: Automatisierung (Dokumentation, Probleme)
Erstmals aufgetreten: 21:55:29 (2 Vorkommnisse)
Zuletzt protokolliert: 21:59:42
While executing automation automation.heizung_heizung_ausschalten
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/automation/__init__.py", line 666, in async_trigger
return await self.action_script.async_run(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 1600, in async_run
return await asyncio.shield(run.async_run())
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 435, in async_run
await self._async_step(log_exceptions=False)
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 487, in _async_step
self._handle_exception(
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 512, in _handle_exception
raise exception
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 485, in _async_step
await getattr(self, handler)()
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 723, in _async_call_service_step
response_data = await self._async_run_long_action(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 685, in _async_run_long_action
return long_task.result()
^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/core.py", line 2319, in async_call
response_data = await coro
^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/core.py", line 2356, in _execute_service
return await target(service_call)
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 905, in entity_service_call
single_response = await _handle_entity_call(
^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 975, in _handle_entity_call
result = await task
^^^^^^^^^^
File "/config/custom_components/mypyllant/climate.py", line 564, in set_zone_operating_mode
await self.coordinator.api.set_zone_operating_mode(
File "/usr/local/lib/python3.12/site-packages/myPyllant/api.py", line 481, in set_zone_operating_mode
await self.aiohttp_session.patch(
File "/usr/local/lib/python3.12/site-packages/aiohttp/client.py", line 691, in _request
await raise_for_status(resp)
File "/usr/local/lib/python3.12/site-packages/myPyllant/http_client.py", line 49, in on_raise_for_status
raise e
File "/usr/local/lib/python3.12/site-packages/myPyllant/http_client.py", line 46, in on_raise_for_status
response.raise_for_status()
File "/usr/local/lib/python3.12/site-packages/aiohttp/client_reqrep.py", line 1060, in raise_for_status
raise ClientResponseError(
aiohttp.client_exceptions.ClientResponseError: 400, message='Bad Request, response was: {"stackTrace":[{"classLoaderName":"app","methodName":"build","fileName":"ProblemBuilder.java","lineNumber":83,"className":"org.zalando.problem.ProblemBuilder","nativeMethod":false},{"classLoaderName":"app","methodName":"handle","fileName":"ReactiveHttpExceptionHandler.java","lineNumber":78,"className":"com.vaillantgroup.iot.facade.rest.error.ReactiveHttpExceptionHandler","nativeMethod":false},{"moduleName":"java.base","moduleVersion":"19.0.2","methodName":"invoke","lineNumber":-1,"className":"jdk.internal.reflect.DirectMethodHandleAccessor","nativeMethod":false},{"moduleName":"java.base","moduleVersion":"19.0.2","methodName":"invoke","lineNumber":-1,"className":"java.lang.reflect.Method","nativeMethod":false},{"classLoaderName":"app","methodName":"lambda$invoke$0","fileName":"InvocableHandlerMethod.java","lineNumber":145,"className":"org.springframework.web.reactive.result.method.InvocableHandlerMethod","nativeMethod":false},{"classLoaderName":"app","methodName":"onNext","fileName":"MonoFlatMap.java","lineNumber":132,"className":"reactor.core.publisher.MonoFlatMap$FlatMapMain","nativeMethod":false},{"classLoaderName":"app","methodName":"signal","fileName":"MonoZip.java","lineNumber":293,"className":"reactor.core.publisher.MonoZip$ZipCoordinator","nativeMethod":false},{"classLoaderName":"app","methodName":"onNext","fileName":"MonoZip.java","lineNumber":474,"className":"reactor.core.publisher.MonoZip$ZipInner","nativeMethod":false},{"classLoaderName":"app","methodName":"onNext","fileName":"MonoPeekTerminal.java","lineNumber":180,"className":"reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber","nativeMethod":false},{"classLoaderName":"app","methodName":"request","fileName":"Operators.java","lineNumber":2545,"className":"reactor.core.publisher.Operators$ScalarSubscription","nativeMethod":false},{"classLoaderName":"app","methodName":"request","fileName":"MonoPeekTerminal.java","lineNumber":139,"className":"reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber","nativeMethod":false},{"classLoaderName":"app","methodName":"onSubscribe","fileName":"MonoZip.java","lineNumber":466,"className":"reactor.core.publisher.MonoZip$ZipInner","nativeMethod":false},{"classLoaderName":"app","methodName":"onSubscribe","fileName":"MonoPeekTerminal.java","lineNumber":152,"className":"reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber","nativeMethod":false},{"classLoaderName":"app","methodName":"subscribe","fileName":"MonoJust.java","lineNumber":55,"className":"reactor.core.publisher.MonoJust","nativeMethod":false},{"classLoaderName":"app","methodName":"subscribe","fileName":"InternalMonoOperator.java","lineNumber":64,"className":"reactor.core.publisher.InternalMonoOperator","nativeMethod":false},{"classLoaderName":"app","methodName":"request","fileName":"MonoZip.java","lineNumber":216,"className":"reactor.core.publisher.MonoZip$ZipCoordinator","nativeMethod":false},{"classLoaderName":"app","methodName":"request","fileName":"MonoFlatMap.java","lineNumber":194,"className":"reactor.core.publisher.MonoFlatMap$FlatMapMain","nativeMethod":false},{"classLoaderName":"app","methodName":"request","fileName":"MonoFlatMap.java","lineNumber":194,"className":"reactor.core.publisher.MonoFlatMap$FlatMapMain","nativeMethod":false},{"classLoaderName":"app","methodName":"request","fileName":"FluxContextWrite.java","lineNumber":136,"className":"reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber","nativeMethod":false},{"classLoaderName":"app","methodName":"set","fileName":"Operators.java","lineNumber":2341,"className":"reactor.core.publisher.Operators$MultiSubscriptionSubscriber","nativeMethod":false},{"classLoaderName":"app","methodName":"onSubscribe","fileName":"FluxOnErrorResume.java","lineNumber":74,"className":"reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber","nativeMethod":false},{"classLoaderName":"app","methodName":"onSubscribe","fileName":"FluxContextWrite.java","lineNumber":101,"className":"reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber","nativeMethod":false},{"classLoaderName":"app","methodName":"onSubscribe","fileName":"MonoFlatMap.java","lineNumber":117,"className":"reactor.core.publisher.MonoFlatMap$FlatMapMain","nativeMethod":false},{"classLoaderName":"app","methodName":"onSubscribe","fileName":"MonoFlatMap.java","lineNumber":117,"className":"reactor.core.publisher.MonoFlatMap$FlatMapMain","nativeMethod":false},{"classLoaderName":"app","methodName":"subscribe","fileName":"MonoZip.java","lineNumber":125,"className":"reactor.core.publisher.MonoZip","nativeMethod":false},{"classLoaderName":"app","methodName":"subscribe","fileName":"Mono.java","lineNumber":4495,"className":"reactor.core.publisher.Mono","nativeMethod":false},{"classLoaderName":"app","methodName":"onError","fileName":"FluxOnErrorResume.java","lineNumber":103,"className":"reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber","nativeMethod":false},{"classLoaderName":"app","methodName":"onError","fileName":"FluxOnAssembly.java","lineNumber":544,"className":"reactor.core.publisher.FluxOnAssembly$OnAssemblySubscriber","nativeMethod":false},{"classLoaderName":"app","methodName":"onError","fileName":"MonoFlatMap.java","lineNumber":180,"className":"reactor.core.publisher.MonoFlatMap$FlatMapMain","nativeMethod":false},{"classLoaderName":"app","methodName":"onError","fileName":"FluxContextWrite.java","lineNumber":121,"className":"reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber","nativeMethod":false},{"classLoaderName":"app","methodName":"onError","fileName":"FluxDoFinally.java","lineNumber":119,"className":"reactor.core.publisher.FluxDoFinally$DoFinallySubscriber","nativeMethod":false},{"classLoaderName":"app","methodName":"onError","fileName":"FluxMap.java","lineNumber":265,"className":"reactor.core.publisher.FluxMap$MapConditionalSubscriber","nativeMethod":false},{"classLoaderName":"app","methodName":"onError","fileName":"FluxPeekFuseable.java","lineNumber":903,"className":"reactor.core.publisher.FluxPeekFuseable$PeekConditionalSubscriber","nativeMethod":false},{"classLoaderName":"app","methodName":"onNext","fileName":"FluxPeekFuseable.java","lineNumber":849,"className":"reactor.core.publisher.FluxPeekFuseable$PeekConditionalSubscriber","nativeMethod":false},{"classLoaderName":"app","methodName":"onNext","fileName":"FluxSwitchIfEmpty.java","lineNumber":74,"className":"reactor.core.publisher.FluxSwitchIfEmpty$SwitchIfEmptySubscriber","nativeMethod":false},{"classLoaderName":"app","methodName":"onNext","fileName":"FluxOnErrorResume.java","lineNumber":79,"className":"reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber","nativeMethod":false},{"classLoaderName":"app","methodName":"onNext","fileName":"MonoFlatMap.java","lineNumber":158,"className":"reactor.core.publisher.MonoFlatMap$FlatMapMain","nativeMethod":false},{"classLoaderName":"app","methodName":"onNext","fileName":"FluxContextWrite.java","lineNumber":107,"className":"reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber","nativeMethod":false},{"classLoaderName":"app","methodName":"onNext","fileName":"FluxMapFuseable.java","lineNumber":299,"className":"reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber","nativeMethod":false},{"classLoaderName":"app","methodName":"onNext","fileName":"FluxFilterFuseable.java","lineNumber":337,"className":"reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber","nativeMethod":false},{"classLoaderName":"app","methodName":"completePossiblyEmpty","fileName":"Operators.java","lineNumber":2071,"className":"reactor.core.publisher.Operators$BaseFluxToMonoOperator","nativeMethod":false},{"classLoaderName":"app","methodName":"onComplete","fileName":"MonoCollect.java","lineNumber":145,"className":"reactor.core.publisher.MonoCollect$CollectSubscriber","nativeMethod":false},{"classLoaderName":"app","methodName":"onAllDataRead","fileName":"AbstractListenerReadPublisher.java","lineNumber":484,"className":"org.springframework.http.server.reactive.AbstractListenerReadPublisher$State","nativeMethod":false},{"classLoaderName":"app","methodName":"onAllDataRead","fileName":"AbstractListenerReadPublisher.java","lineNumber":134,"className":"org.springframework.http.server.reactive.AbstractListenerReadPublisher","nativeMethod":false},{"classLoaderName":"app","methodName":"onAllDataRead","fileName":"ServletServerHttpRequest.java","lineNumber":352,"className":"org.springframework.http.server.reactive.ServletServerHttpRequest$RequestBodyPublisher$RequestBodyPublisherReadListener","nativeMethod":false},{"classLoaderName":"app","methodName":"asyncDispatch","fileName":"CoyoteAdapter.java","lineNumber":205,"className":"org.apache.catalina.connector.CoyoteAdapter","nativeMethod":false},{"classLoaderName":"app","methodName":"dispatch","fileName":"AbstractProcessor.java","lineNumber":242,"className":"org.apache.coyote.AbstractProcessor","nativeMethod":false},{"classLoaderName":"app","methodName":"process","fileName":"AbstractProcessorLight.java","lineNumber":50,"className":"org.apache.coyote.AbstractProcessorLight","nativeMethod":false},{"classLoaderName":"app","methodName":"process","fileName":"AbstractProtocol.java","lineNumber":894,"className":"org.apache.coyote.AbstractProtocol$ConnectionHandler","nativeMethod":false},{"classLoaderName":"app","methodName":"doRun","fileName":"NioEndpoint.java","lineNumber":1740,"className":"org.apache.tomcat.util.net.NioEndpoint$SocketProcessor","nativeMethod":false},{"classLoaderName":"app","methodName":"run","fileName":"SocketProcessorBase.java","lineNumber":52,"className":"org.apache.tomcat.util.net.SocketProcessorBase","nativeMethod":false},{"classLoaderName":"app","methodName":"runWorker","fileName":"ThreadPoolExecutor.java","lineNumber":1191,"className":"org.apache.tomcat.util.threads.ThreadPoolExecutor","nativeMethod":false},{"classLoaderName":"app","methodName":"run","fileName":"ThreadPoolExecutor.java","lineNumber":659,"className":"org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker","nativeMethod":false},{"classLoaderName":"app","methodName":"run","fileName":"TaskThread.java","lineNumber":61,"className":"org.apache.tomcat.util.threads.TaskThread$WrappingRunnable","nativeMethod":false},{"moduleName":"java.base","moduleVersion":"19.0.2","methodName":"run","lineNumber":-1,"className":"java.lang.Thread","nativeMethod":false}],"type":"about:blank","title":"Bad Request","status":"BAD_REQUEST","detail":"Validation failed for argument at index 2 in method: public default reactor.core.publisher.Mono<org.springframework.http.ResponseEntity<com.vaillantgroup.systemcontrol.tliv2.model.rest.AcceptedResponseRest>> com.vaillantgroup.systemcontrol.tliv2.rest.HeatingApi.v2SetHeatingOperationMode(java.lang.String,java.lang.Integer,reactor.core.publisher.Mono<com.vaillantgroup.systemcontrol.tliv2.model.rest.ModifyHeatingOperationModeRequestRest>,org.springframework.web.server.ServerWebExchange), with 1 error(s): [Field error in object \'modifyHeatingOperationModeRequestRestMono\' on field \'operationMode\': rejected value [null]; codes [NotNull.modifyHeatingOperationModeRequestRestMono.operationMode,NotNull.operationMode,NotNull.com.vaillantgroup.systemcontrol.tliv2.model.rest.ModifyHeatingOperationModeRequestRest$OperationModeEnum,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [modifyHeatingOperationModeRequestRestMono.operationMode,operationMode]; arguments []; default message [operationMode]]; default message [must not be null]] ","parameters":{},"message":"Bad Request: Validation failed for argument at index 2 in method: public default reactor.core.publisher.Mono<org.springframework.http.ResponseEntity<com.vaillantgroup.systemcontrol.tliv2.model.rest.AcceptedResponseRest>> com.vaillantgroup.systemcontrol.tliv2.rest.HeatingApi.v2SetHeatingOperationMode(java.lang.String,java.lang.Integer,reactor.core.publisher.Mono<com.vaillantgroup.systemcontrol.tliv2.model.rest.ModifyHeatingOperationModeRequestRest>,org.springframework.web.server.ServerWebExchange), with 1 error(s): [Field error in object \'modifyHeatingOperationModeRequestRestMono\' on field \'operationMode\': rejected value [null]; codes [NotNull.modifyHeatingOperationModeRequestRestMono.operationMode,NotNull.operationMode,NotNull.com.vaillantgroup.systemcontrol.tliv2.model.rest.ModifyHeatingOperationModeRequestRest$OperationModeEnum,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [modifyHeatingOperationModeRequestRestMono.operationMode,operationMode]; arguments []; default message [operationMode]]; default message [must not be null]] ","suppressed":[],"localizedMessage":"Bad Request: Validation failed for argument at index 2 in method: public default reactor.core.publisher.Mono<org.springframework.http.ResponseEntity<com.vaillantgroup.systemcontrol.tliv2.model.rest.AcceptedResponseRest>> com.vaillantgroup.systemcontrol.tliv2.rest.HeatingApi.v2SetHeatingOperationMode(java.lang.String,java.lang.Integer,reactor.core.publisher.Mono<com.vaillantgroup.systemcontrol.tliv2.model.rest.ModifyHeatingOperationModeRequestRest>,org.springframework.web.server.ServerWebExchange), with 1 error(s): [Field error in object \'modifyHeatingOperationModeRequestRestMono\' on field \'operationMode\': rejected value [null]; codes [NotNull.modifyHeatingOperationModeRequestRestMono.operationMode,NotNull.operationMode,NotNull.com.vaillantgroup.systemcontrol.tliv2.model.rest.ModifyHeatingOperationModeRequestRest$OperationModeEnum,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [modifyHeatingOperationModeRequestRestMono.operationMode,operationMode]; arguments []; default message [operationMode]]; default message [must not be null]] "}', url=URL('https://api.vaillant-group.com/service-connected-control/end-user-app-api/v1/systems/5ed6ef15-7d13-4562-8f2b-f4c30e744e10/tli/zones/0/heating-operation-mode')
Fist of all: Thx for this absolute great Plugin, it is so useful for my, like no other on HA ;-) And now the Problem description for Today;-) I can agree, having the similar Problem, but only, when I try to change the Operation Mode in HA. The Problem also was in the App yesterday (not ayailable now, please try again later, or so) but here it works today. Also the Status is correct in HA when changing it in the App. I have uploaded a File (with Log Details) in my next Post to keep this chat clean.
Are you calling the operation mode service in HA? Can you share exactly what parameters you are sending?
I simply click on the Button Off in Thermostat or use the Service [cid:eu.faircode.email.5347]
30.03.2024 12:10:14 signalkraft @.***>:
Are you calling the operation mode service in HA? Can you share exactly what parameters you are sending?
— Reply to this email directly, view it on GitHub[https://github.com/signalkraft/mypyllant-component/issues/153#issuecomment-2028015343], or unsubscribe[https://github.com/notifications/unsubscribe-auth/A7GF7AM3LM4PICLHDOG4K3TY22FP7AVCNFSM6AAAAABFNPT4WWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMRYGAYTKMZUGM]. You are receiving this because you commented. [Verfolgungsbild][https://github.com/notifications/beacon/A7GF7AJ24P3MK7K6MDSEXZDY22FP7A5CNFSM6AAAAABFNPT4WWWGG33NNVSW45C7OR4XAZNMJFZXG5LFINXW23LFNZ2KUY3PNVWWK3TUL5UWJTTY4EHO6.gif]
Personally I am using the HA service in an automation. But I can confirm @ccle610‘s problem: if I use the thermostat and if I change the mode it is the same error.
Here is my logfile belonging to the Action: aroTherm Zone Oben (Circuit 0) Button heat/cool was pressed in Simple Thermostat.
Hello, i have exactly the same problem when changing the operation mode from off to auto or vice versa.
Hi all, same problem here. ClientResponseError 400.txt
Same Problem!
Hello I have the same problem Everything else works great, only if i change Hvac mode to off, heat_cool, auto big error appear on the screen Rejestrator: aiohttp.server Źródło: /usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py:421 Pierwsze zdarzenie: 09:17:54 (46229 zdarzenia) Ostatnio zalogowany: 16:11:57
Error handling request Traceback (most recent call last): File "/usr/local/lib/python3.12/site-packages/aiohttp/web_protocol.py", line 350, in data_received messages, upgraded, tail = self._request_parser.feed_data(data) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "aiohttp/_http_parser.pyx", line 557, in aiohttp._http_parser.HttpParser.feed_data aiohttp.http_exceptions.BadStatusLine: 400, message: Expected CRLF after version:
b'POST /api/webhook/onvif1868cb2f380b HTTP/1.1 '
Hi,
Can confirm, I have the same issue. (v0.8.2) I've noticed that the Vaillant app is even MORE buggy than usual too. (I couldn't believe this was technically possible, but here we are) Could it be an api issue at their end?
I've exactly same issue as previous reporters. I can control DHW without an issue, but it fails on the heating. I've a flexoCOMPACT exclusive, sensoCOMFORT VRC 720/2 and sensoNET VR291. The myVaillant App works as expected. I've no recording of what the app is sending to the server unfortunately. Heating_Mode_Change.log
First of all thanks for your integration, is the best so far to integrate Migo Link devices in HA!
I have the same problem than the rest using Saunier Duval, my problem is about changing the mode to OFF, heat_cool or auto. However, if I update the mode from the Migo Link Android APP the Home Assistant plugin can get the new status and I can update for example the temperature in HA without any problem, not sure if this information is helpful. Without digging a lot in their API seems to be something about permissions? Is weird that I can detect the mode without any problem from HA but I cannot update it.
Thanks in advance for your help!
Same problem here with my installation. Tried to extract the relevant part of error message from Vailant server:
"type": "about:blank",
"title": "Bad Request",
"status": "BAD_REQUEST",
"detail": "Validation failed for argument at index 2 in method: public default reactor.core.publisher.Mono<org.springframework.http.ResponseEntity<com.vaillantgroup.systemcontrol.tliv2.model.rest.AcceptedResponseRest>> com.vaillantgroup.systemcontrol.tliv2.rest.HeatingApi.v2SetHeatingOperationMode(java.lang.String,java.lang.Integer,reactor.core.publisher.Mono<com.vaillantgroup.systemcontrol.tliv2.model.rest.ModifyHeatingOperationModeRequestRest>,org.springframework.web.server.ServerWebExchange), with 1 error(s): [Field error in object \'modifyHeatingOperationModeRequestRestMono\' on field \'operationMode\': rejected value [null]; codes [NotNull.modifyHeatingOperationModeRequestRestMono.operationMode,NotNull.operationMode,NotNull.com.vaillantgroup.systemcontrol.tliv2.model.rest.ModifyHeatingOperationModeRequestRest$OperationModeEnum,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [modifyHeatingOperationModeRequestRestMono.operationMode,operationMode]; arguments []; default message [operationMode]]; default message [must not be null]] ",
"parameters": {},
"message": "Bad Request: Validation failed for argument at index 2 in method: public default reactor.core.publisher.Mono<org.springframework.http.ResponseEntity<com.vaillantgroup.systemcontrol.tliv2.model.rest.AcceptedResponseRest>> com.vaillantgroup.systemcontrol.tliv2.rest.HeatingApi.v2SetHeatingOperationMode(java.lang.String,java.lang.Integer,reactor.core.publisher.Mono<com.vaillantgroup.systemcontrol.tliv2.model.rest.ModifyHeatingOperationModeRequestRest>,org.springframework.web.server.ServerWebExchange), with 1 error(s): [Field error in object \'modifyHeatingOperationModeRequestRestMono\' on field \'operationMode\': rejected value [null]; codes [NotNull.modifyHeatingOperationModeRequestRestMono.operationMode,NotNull.operationMode,NotNull.com.vaillantgroup.systemcontrol.tliv2.model.rest.ModifyHeatingOperationModeRequestRest$OperationModeEnum,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [modifyHeatingOperationModeRequestRestMono.operationMode,operationMode]; arguments []; default message [operationMode]]; default message [must not be null]] ",
"suppressed": [],
"localizedMessage": "Bad Request: Validation failed for argument at index 2 in method: public default reactor.core.publisher.Mono<org.springframework.http.ResponseEntity<com.vaillantgroup.systemcontrol.tliv2.model.rest.AcceptedResponseRest>> com.vaillantgroup.systemcontrol.tliv2.rest.HeatingApi.v2SetHeatingOperationMode(java.lang.String,java.lang.Integer,reactor.core.publisher.Mono<com.vaillantgroup.systemcontrol.tliv2.model.rest.ModifyHeatingOperationModeRequestRest>,org.springframework.web.server.ServerWebExchange), with 1 error(s): [Field error in object \'modifyHeatingOperationModeRequestRestMono\' on field \'operationMode\': rejected value [null]; codes [NotNull.modifyHeatingOperationModeRequestRestMono.operationMode,NotNull.operationMode,NotNull.com.vaillantgroup.systemcontrol.tliv2.model.rest.ModifyHeatingOperationModeRequestRest$OperationModeEnum,NotNull]; arguments [org.springframework.context.support.DefaultMessageSourceResolvable: codes [modifyHeatingOperationModeRequestRestMono.operationMode,operationMode]; arguments []; default message [operationMode]]; default message [must not be null]] "
Maybe there are some changes to the Vaillant API.
Controler type îs VRC720 with version 0357.40.35.
Changing settings for domestic hot water works as expected. And many thanks for this great integration.
Should work in the latest release https://github.com/signalkraft/mypyllant-component/releases/tag/v0.8.4