dvdgeisler / DirigeraClient

Dirigera Client API: Java written client API to interface IKEA's new smarthome hub DIRIGERA
MIT License
74 stars 9 forks source link

Looks like the json coming back from the hub isn't being parsed correctly. #92

Closed TroyJ closed 1 year ago

TroyJ commented 1 year ago

It seems to be failing on the string "sunset". I have Ikea's motion sensors, but I've switched everything related to sunset off.

Log fragment:

at com.fasterxml.jackson.databind.exc.InvalidFormatException.from(InvalidFormatException.java:67) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.DeserializationContext.weirdStringException(DeserializationContext.java:1991) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.DeserializationContext.handleWeirdStringValue(DeserializationContext.java:1219) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.datatype.jsr310.deser.JSR310DeserializerBase._handleDateTimeException(JSR310DeserializerBase.java:176) ~[jackson-datatype-jsr310-2.13.4.jar!/:2.13.4]
at com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer._fromString(LocalTimeDeserializer.java:157) ~[jackson-datatype-jsr310-2.13.4.jar!/:2.13.4]
at com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer.deserialize(LocalTimeDeserializer.java:75) ~[jackson-datatype-jsr310-2.13.4.jar!/:2.13.4]
at com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer.deserialize(LocalTimeDeserializer.java:35) ~[jackson-datatype-jsr310-2.13.4.jar!/:2.13.4]
at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:138) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:392) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:185) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:138) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:392) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:185) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:138) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:392) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:185) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:138) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeWithUnwrapped(BeanDeserializer.java:727) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:347) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:185) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:138) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeWithUnwrapped(BeanDeserializer.java:727) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:347) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeOther(BeanDeserializer.java:220) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:187) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer._deserializeTypedForId(AsPropertyTypeDeserializer.java:144) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer.deserializeTypedFromObject(AsPropertyTypeDeserializer.java:110) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeWithType(BeanDeserializerBase.java:1292) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer._deserializeFromArray(CollectionDeserializer.java:357) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:244) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:28) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2051) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1427) ~[jackson-databind-2.13.4.2.jar!/:2.13.4.2]
at org.springframework.http.codec.json.AbstractJackson2Decoder.decode(AbstractJackson2Decoder.java:193) ~[spring-web-5.3.23.jar!/:5.3.23]
at org.springframework.http.codec.json.AbstractJackson2Decoder.lambda$decodeToMono$1(AbstractJackson2Decoder.java:179) ~[spring-web-5.3.23.jar!/:5.3.23]
at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:125) ~[reactor-core-3.4.24.jar!/:3.4.24]
at reactor.core.publisher.FluxContextWrite$ContextWriteSubscriber.onNext(FluxContextWrite.java:107) ~[reactor-core-3.4.24.jar!/:3.4.24]
at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:299) ~[reactor-core-3.4.24.jar!/:3.4.24]
at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:337) ~[reactor-core-3.4.24.jar!/:3.4.24]
at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1816) ~[reactor-core-3.4.24.jar!/:3.4.24]
at reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:160) ~[reactor-core-3.4.24.jar!/:3.4.24]
at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) ~[reactor-core-3.4.24.jar!/:3.4.24]
at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:260) ~[reactor-core-3.4.24.jar!/:3.4.24]
at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:144) ~[reactor-core-3.4.24.jar!/:3.4.24]
at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:400) ~[reactor-netty-core-1.0.24.jar!/:1.0.24]
at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:419) ~[reactor-netty-core-1.0.24.jar!/:1.0.24]
at reactor.netty.channel.ChannelOperations.terminate(ChannelOperations.java:473) ~[reactor-netty-core-1.0.24.jar!/:1.0.24]
at reactor.netty.http.client.HttpClientOperations.onInboundNext(HttpClientOperations.java:702) ~[reactor-netty-http-1.0.24.jar!/:1.0.24]
at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:113) ~[reactor-netty-core-1.0.24.jar!/:1.0.24]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[netty-transport-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[netty-transport-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) ~[netty-transport-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:336) ~[netty-codec-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:308) ~[netty-codec-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) ~[netty-transport-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[netty-transport-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[netty-transport-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.handler.ssl.SslHandler.unwrap(SslHandler.java:1373) ~[netty-handler-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.handler.ssl.SslHandler.decodeJdkCompatible(SslHandler.java:1236) ~[netty-handler-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.handler.ssl.SslHandler.decode(SslHandler.java:1285) ~[netty-handler-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:519) ~[netty-codec-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:458) ~[netty-codec-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:280) ~[netty-codec-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:444) ~[netty-transport-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[netty-transport-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[netty-transport-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) ~[netty-transport-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[netty-transport-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800) ~[netty-transport-classes-epoll-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:499) ~[netty-transport-classes-epoll-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:397) ~[netty-transport-classes-epoll-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.84.Final.jar!/:4.1.84.Final]
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.84.Final.jar!/:4.1.84.Final]
at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]

Caused by: java.time.format.DateTimeParseException: Text 'sunset' could not be parsed at index 0 at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2052) ~[na:na] at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1954) ~[na:na] at java.base/java.time.LocalTime.parse(LocalTime.java:465) ~[na:na] at com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer._fromString(LocalTimeDeserializer.java:155) ~[jackson-datatype-jsr310-2.13.4.jar!/:2.13.4] ... 75 common frames omitted

2023-07-07 00:27:48.967 DEBUG 66 --- [or-http-epoll-7] d.d.i.dirigera.client.api.WebSocketApi : Received Dirigera event: type=LAST_MODIFIED, id=f1d7818f-b1eb-44eb-98b7-75204efd3601, source=hub, time=2023-07-06T16:27:48.941 2023-07-07 00:27:58.966 DEBUG 66 --- [or-http-epoll-7] d.d.i.dirigera.client.api.WebSocketApi : Received Dirigera event: type=LAST_MODIFIED, id=1934ece0-d243-494b-af6d-2a08a67fda81, source=hub, time=2023-07-06T16:27:58.953 2023-07-07 00:28:08.969 DEBUG 66 --- [or-http-epoll-7] d.d.i.dirigera.client.api.WebSocketApi : Received Dirigera event: type=LAST_MODIFIED, id=95e2bed6-158a-45c7-8dc6-a04b81ff955b, source=hub, time=2023-07-06T16:28:08.958 2023-07-07 00:28:18.974 DEBUG 66 --- [or-http-epoll-7] d.d.i.dirigera.client.api.WebSocketApi : Received Dirigera event: type=LAST_MODIFIED, id=c6fc31dd-7220-4ac4-812c-3cb8c872eb03, source=hub, time=2023-07-06T16:28:18.962 2023-07-07 00:28:28.974 DEBUG 66 --- [or-http-epoll-7] d.d.i.dirigera.client.api.WebSocketApi : Received Dirigera event: type=LAST_MODIFIED, id=eca161cc-39e3-4ce4-8c93-b59b0ad6114c, source=hub, time=2023-07-06T16:28:28.964 2023-07-07 00:28:38.982 DEBUG 66 --- [or-http-epoll-7] d.d.i.dirigera.client.api.WebSocketApi : Received Dirigera event: type=LAST_MODIFIED, id=b7afba19-89ff-4c11-a5fe-57a64dc5ac5c, source=hub, time=2023-07-06T16:28:38.969 2023-07-07 00:28:48.994 DEBUG 66 --- [or-http-epoll-7] d.d.i.dirigera.client.api.WebSocketApi : Received Dirigera event: type=LAST_MODIFIED, id=b4e58b6d-255e-42ea-b8e8-2be93c07abf1, source=hub, time=2023-07-06T16:28:48.982 2023-07-07 00:28:59.028 DEBUG 66 --- [or-http-epoll-7] d.d.i.dirigera.client.api.WebSocketApi : Received Dirigera event: type=LAST_MODIFIED, id=816497eb-9c84-4d94-bb1f-de2d4e13b08a, source=hub, time=2023-07-06T16:28:58.992 2023-07-07 00:29:09.004 DEBUG 66 --- [or-http-epoll-7] d.d.i.dirigera.client.api.WebSocketApi : Received Dirigera event: type=LAST_MODIFIED, id=4eca0588-e8cd-41af-b701-d3e3e37f6769, source=hub, time=2023-07-06T16:29:08.992 2023-07-07 00:29:19.020 DEBUG 66 --- [or-http-epoll-7] d.d.i.dirigera.client.api.WebSocketApi : Received Dirigera event: type=LAST_MODIFIED, id=b8c97a0c-7b79-4550-bee1-0a5d1e0e04a0, source=hub, time=2023-07-06T16:29:19.002 2023-07-07 00:29:29.024 DEBUG 66 --- [or-http-epoll-7] d.d.i.dirigera.client.api.WebSocketApi : Received Dirigera event: type=LAST_MODIFIED, id=b5a8163f-dc8e-4a05-8191-50f8889175f4, source=hub, time=2023-07-06T16:29:29.014 2023-07-07 00:29:39.037 DEBUG 66 --- [or-http-epoll-7] d.d.i.dirigera.client.api.WebSocketApi : Received Dirigera event: type=LAST_MODIFIED, id=2298093a-40d5-471e-b172-0f94cd6c5609, source=hub, time=2023-07-06T16:29:39.025 2023-07-07 00:29:49.044 DEBUG 66 --- [or-http-epoll-7] d.d.i.dirigera.client.api.WebSocketApi : Received Dirigera event: type=LAST_MODIFIED, id=c428615b-670a-4636-aeaa-45bbf3fc5cf4, source=hub, time=2023-07-06T16:29:49.032

TheMrBooyah commented 1 year ago

The latest version of both the HA addon as this repo should fix this issue