signalkraft / mypyllant-component

Home Assistant component for the myVAILLANT API, controls Vaillant devices such as aroTHERM heatpumps and ecoTEC boilers
https://signalkraft.com/mypyllant-component/
MIT License
107 stars 19 forks source link

Control device via HA not possible #160

Open arnohoff opened 2 months ago

arnohoff commented 2 months ago

Hi there,

My setup:

HA displays the correct sensor values but if I'm trying to change work mode from heating circuit off at night when sun is shining next day. Even if I change it by hand I get following error:

Logs


Logger: homeassistant.components.websocket_api.http.connection
Quelle: components/websocket_api/commands.py:239
Integration: Home Assistant WebSocket API (Dokumentation, Probleme)
Erstmals aufgetreten: 05:14:46 (7 Vorkommnisse)
Zuletzt protokolliert: 05:33:31

[1545494568] 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":77,"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/24d64e9a-b9a5-455b-9540-72c24b6afa5b/tli/zones/0/heating-operation-mode')
[1545496232] 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":77,"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,"classN
TomaszBon commented 2 months ago

Having the same problem ( turning on and off the heating for day/night from HA) with the gas boiler ecoTEC pro VU 146/5-3 + VIH R 120/6 B and the gateway Saunier Duval 940 + MiPro Sense SRC 720 controller.

arnohoff commented 2 months ago

Set temporary temperature seems to work. I m testing this as a work around now

thepreatorian commented 2 months ago

Having the same problem, changing hvac mode doesn't work.....any ideas how to fix problem ????? :)

JanNJNS commented 2 months ago

This is the same problem as issue 153. seems to be a common problem.