GithubHelp home page GithubHelp logo

wildmountainfarms / solarthing Goto Github PK

View Code? Open in Web Editor NEW
124.0 6.0 27.0 14.78 MB

Monitors an Outback MATE, Renogy Rover - MPPT Charge Controller and EPEver Tracer. Integrates with Grafana, PVOutput and more!

Home Page: https://solarthing.readthedocs.io

License: MIT License

Perl 0.17% Python 0.20% Shell 1.48% Java 92.88% HTML 0.08% C++ 0.01% CSS 0.18% TypeScript 4.62% JavaScript 0.20% ANTLR 0.11% Dockerfile 0.06%
solar outback-mate renogy renogy-rover couchdb raspberry-pi solarthing solar-energy dashboard modbus

solarthing's Introduction

Wild Mountain Farms Docs

This project contains documentation and resources for tech used on the ranch

Building

To build this yourself, run these commands:

cd docs/
python3 -m venv .venv
source .venv/bin/activate
pip install -r source/requirements.txt
make html
xdg-open "file://$(pwd)/build/html/index.html"
make latexpdf  # requires latexmk command
make epub

solarthing's People

Contributors

dependabot[bot] avatar eidolon1138 avatar retrodaredevil avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

solarthing's Issues

CouchDB timeout in PVOutput program

Here's the stacktrace:

2021-10-11 19:59:30.385 [main] DEBUG me.retrodaredevil.solarthing.program.pvoutput.PVOutputUploadMain - Going to do stuff now.
2021-10-11 19:59:43.507 [main] ERROR me.retrodaredevil.solarthing.program.pvoutput.PVOutputUploadMain - Couldn't get status packets
me.retrodaredevil.solarthing.database.exception.SolarThingDatabaseException: me.retrodaredevil.couchdbjava.exception.CouchDbException: Connection failed!
	at me.retrodaredevil.solarthing.database.couchdb.CouchDbMillisDatabase.query(CouchDbMillisDatabase.java:45) ~[solarthing-2021.6.1.jar:?]
	at me.retrodaredevil.solarthing.program.pvoutput.PVOutputUploadMain.startRealTimeProgram(PVOutputUploadMain.java:271) [solarthing-2021.6.1.jar:?]
	at me.retrodaredevil.solarthing.program.pvoutput.PVOutputUploadMain.startPVOutputUpload(PVOutputUploadMain.java:101) [solarthing-2021.6.1.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:126) [solarthing-2021.6.1.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:170) [solarthing-2021.6.1.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:209) [solarthing-2021.6.1.jar:?]
Caused by: me.retrodaredevil.couchdbjava.exception.CouchDbException: Connection failed!
	at me.retrodaredevil.couchdbjava.okhttp.OkHttpCouchDbInstance.executeCall(OkHttpCouchDbInstance.java:105) ~[solarthing-2021.6.1.jar:?]
	at me.retrodaredevil.couchdbjava.okhttp.OkHttpCouchDbInstance.executeAndHandle(OkHttpCouchDbInstance.java:94) ~[solarthing-2021.6.1.jar:?]
	at me.retrodaredevil.couchdbjava.okhttp.OkHttpCouchDbDatabase.queryView(OkHttpCouchDbDatabase.java:235) ~[solarthing-2021.6.1.jar:?]
	at me.retrodaredevil.solarthing.database.couchdb.CouchDbMillisDatabase.query(CouchDbMillisDatabase.java:43) ~[solarthing-2021.6.1.jar:?]
	... 5 more
Caused by: com.fasterxml.jackson.databind.JsonMappingException: timeout (through reference chain: me.retrodaredevil.couchdbjava.response.ViewResponse["rows"]->java.util.ArrayList[72])
	at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:390) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:361) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer._deserializeFromArray(CollectionDeserializer.java:371) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:244) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:28) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:542) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:565) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:449) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1405) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:362) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:195) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:322) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2033) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1458) ~[solarthing-2021.6.1.jar:?]
	at retrofit2.converter.jackson.JacksonResponseBodyConverter.convert(JacksonResponseBodyConverter.java:33) ~[solarthing-2021.6.1.jar:?]
	at retrofit2.converter.jackson.JacksonResponseBodyConverter.convert(JacksonResponseBodyConverter.java:23) ~[solarthing-2021.6.1.jar:?]
	at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:243) ~[solarthing-2021.6.1.jar:?]
	at retrofit2.OkHttpCall.execute(OkHttpCall.java:204) ~[solarthing-2021.6.1.jar:?]
	at me.retrodaredevil.couchdbjava.okhttp.OkHttpCouchDbInstance.executeCall(OkHttpCouchDbInstance.java:103) ~[solarthing-2021.6.1.jar:?]
	at me.retrodaredevil.couchdbjava.okhttp.OkHttpCouchDbInstance.executeAndHandle(OkHttpCouchDbInstance.java:94) ~[solarthing-2021.6.1.jar:?]
	at me.retrodaredevil.couchdbjava.okhttp.OkHttpCouchDbDatabase.queryView(OkHttpCouchDbDatabase.java:235) ~[solarthing-2021.6.1.jar:?]
	at me.retrodaredevil.solarthing.database.couchdb.CouchDbMillisDatabase.query(CouchDbMillisDatabase.java:43) ~[solarthing-2021.6.1.jar:?]
	... 5 more
Caused by: java.io.InterruptedIOException: timeout
	at okhttp3.internal.connection.RealCall.timeoutExit(RealCall.kt:398) ~[solarthing-2021.6.1.jar:?]
	at okhttp3.internal.connection.RealCall.callDone(RealCall.kt:360) ~[solarthing-2021.6.1.jar:?]
	at okhttp3.internal.connection.RealCall.messageDone$okhttp(RealCall.kt:309) ~[solarthing-2021.6.1.jar:?]
	at okhttp3.internal.connection.Exchange.bodyComplete(Exchange.kt:193) ~[solarthing-2021.6.1.jar:?]
	at okhttp3.internal.connection.Exchange$ResponseBodySource.complete(Exchange.kt:324) ~[solarthing-2021.6.1.jar:?]
	at okhttp3.internal.connection.Exchange$ResponseBodySource.read(Exchange.kt:300) ~[solarthing-2021.6.1.jar:?]
	at okio.RealBufferedSource.read(RealBufferedSource.kt:189) ~[solarthing-2021.6.1.jar:?]
	at okio.ForwardingSource.read(ForwardingSource.kt:29) ~[solarthing-2021.6.1.jar:?]
	at retrofit2.OkHttpCall$ExceptionCatchingResponseBody$1.read(OkHttpCall.java:314) ~[solarthing-2021.6.1.jar:?]
	at okio.RealBufferedSource$inputStream$1.read(RealBufferedSource.kt:158) ~[solarthing-2021.6.1.jar:?]
	at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284) ~[?:?]
	at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326) ~[?:?]
	at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178) ~[?:?]
	at java.io.InputStreamReader.read(InputStreamReader.java:181) ~[?:?]
	at okhttp3.ResponseBody$BomAwareReader.read(ResponseBody.kt:211) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._loadMore(ReaderBasedJsonParser.java:255) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._parseName2(ReaderBasedJsonParser.java:1758) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._parseName(ReaderBasedJsonParser.java:1743) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextFieldName(ReaderBasedJsonParser.java:941) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer.deserializeObject(JsonNodeDeserializer.java:269) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer.deserializeArray(JsonNodeDeserializer.java:469) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer.deserializeObjectAtName(JsonNodeDeserializer.java:334) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer.deserializeAny(JsonNodeDeserializer.java:556) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.std.JsonNodeDeserializer.deserialize(JsonNodeDeserializer.java:74) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.std.JsonNodeDeserializer.deserialize(JsonNodeDeserializer.java:16) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1398) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:362) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:195) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:542) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:565) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:449) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1405) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:362) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:195) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer._deserializeFromArray(CollectionDeserializer.java:355) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:244) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:28) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:542) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:565) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:449) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1405) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:362) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:195) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:322) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2033) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1458) ~[solarthing-2021.6.1.jar:?]
	at retrofit2.converter.jackson.JacksonResponseBodyConverter.convert(JacksonResponseBodyConverter.java:33) ~[solarthing-2021.6.1.jar:?]
	at retrofit2.converter.jackson.JacksonResponseBodyConverter.convert(JacksonResponseBodyConverter.java:23) ~[solarthing-2021.6.1.jar:?]
	at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:243) ~[solarthing-2021.6.1.jar:?]
	at retrofit2.OkHttpCall.execute(OkHttpCall.java:204) ~[solarthing-2021.6.1.jar:?]
	at me.retrodaredevil.couchdbjava.okhttp.OkHttpCouchDbInstance.executeCall(OkHttpCouchDbInstance.java:103) ~[solarthing-2021.6.1.jar:?]
	at me.retrodaredevil.couchdbjava.okhttp.OkHttpCouchDbInstance.executeAndHandle(OkHttpCouchDbInstance.java:94) ~[solarthing-2021.6.1.jar:?]
	at me.retrodaredevil.couchdbjava.okhttp.OkHttpCouchDbDatabase.queryView(OkHttpCouchDbDatabase.java:235) ~[solarthing-2021.6.1.jar:?]
	at me.retrodaredevil.solarthing.database.couchdb.CouchDbMillisDatabase.query(CouchDbMillisDatabase.java:43) ~[solarthing-2021.6.1.jar:?]
	... 5 more
Caused by: java.net.SocketException: Socket closed
	at java.net.SocketInputStream.socketRead0(Native Method) ~[?:?]
	at java.net.SocketInputStream.socketRead(SocketInputStream.java:115) ~[?:?]
	at java.net.SocketInputStream.read(SocketInputStream.java:168) ~[?:?]
	at java.net.SocketInputStream.read(SocketInputStream.java:140) ~[?:?]
	at okio.InputStreamSource.read(JvmOkio.kt:90) ~[solarthing-2021.6.1.jar:?]
	at okio.AsyncTimeout$source$1.read(AsyncTimeout.kt:129) ~[solarthing-2021.6.1.jar:?]
	at okio.RealBufferedSource.read(RealBufferedSource.kt:189) ~[solarthing-2021.6.1.jar:?]
	at okhttp3.internal.http1.Http1ExchangeCodec$AbstractSource.read(Http1ExchangeCodec.kt:331) ~[solarthing-2021.6.1.jar:?]
	at okhttp3.internal.http1.Http1ExchangeCodec$ChunkedSource.read(Http1ExchangeCodec.kt:412) ~[solarthing-2021.6.1.jar:?]
	at okhttp3.internal.connection.Exchange$ResponseBodySource.read(Exchange.kt:276) ~[solarthing-2021.6.1.jar:?]
	at okio.RealBufferedSource.read(RealBufferedSource.kt:189) ~[solarthing-2021.6.1.jar:?]
	at okio.ForwardingSource.read(ForwardingSource.kt:29) ~[solarthing-2021.6.1.jar:?]
	at retrofit2.OkHttpCall$ExceptionCatchingResponseBody$1.read(OkHttpCall.java:314) ~[solarthing-2021.6.1.jar:?]
	at okio.RealBufferedSource$inputStream$1.read(RealBufferedSource.kt:158) ~[solarthing-2021.6.1.jar:?]
	at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284) ~[?:?]
	at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326) ~[?:?]
	at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178) ~[?:?]
	at java.io.InputStreamReader.read(InputStreamReader.java:181) ~[?:?]
	at okhttp3.ResponseBody$BomAwareReader.read(ResponseBody.kt:211) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._loadMore(ReaderBasedJsonParser.java:255) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._parseName2(ReaderBasedJsonParser.java:1758) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.core.json.ReaderBasedJsonParser._parseName(ReaderBasedJsonParser.java:1743) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.core.json.ReaderBasedJsonParser.nextFieldName(ReaderBasedJsonParser.java:941) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer.deserializeObject(JsonNodeDeserializer.java:269) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer.deserializeArray(JsonNodeDeserializer.java:469) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer.deserializeObjectAtName(JsonNodeDeserializer.java:334) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.std.BaseNodeDeserializer.deserializeAny(JsonNodeDeserializer.java:556) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.std.JsonNodeDeserializer.deserialize(JsonNodeDeserializer.java:74) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.std.JsonNodeDeserializer.deserialize(JsonNodeDeserializer.java:16) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1398) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:362) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:195) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:542) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:565) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:449) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1405) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:362) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:195) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer._deserializeFromArray(CollectionDeserializer.java:355) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:244) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:28) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:542) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:565) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:449) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1405) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:362) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:195) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:322) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2033) ~[solarthing-2021.6.1.jar:?]
	at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1458) ~[solarthing-2021.6.1.jar:?]
	at retrofit2.converter.jackson.JacksonResponseBodyConverter.convert(JacksonResponseBodyConverter.java:33) ~[solarthing-2021.6.1.jar:?]
	at retrofit2.converter.jackson.JacksonResponseBodyConverter.convert(JacksonResponseBodyConverter.java:23) ~[solarthing-2021.6.1.jar:?]
	at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:243) ~[solarthing-2021.6.1.jar:?]
	at retrofit2.OkHttpCall.execute(OkHttpCall.java:204) ~[solarthing-2021.6.1.jar:?]
	at me.retrodaredevil.couchdbjava.okhttp.OkHttpCouchDbInstance.executeCall(OkHttpCouchDbInstance.java:103) ~[solarthing-2021.6.1.jar:?]
	at me.retrodaredevil.couchdbjava.okhttp.OkHttpCouchDbInstance.executeAndHandle(OkHttpCouchDbInstance.java:94) ~[solarthing-2021.6.1.jar:?]
	at me.retrodaredevil.couchdbjava.okhttp.OkHttpCouchDbDatabase.queryView(OkHttpCouchDbDatabase.java:235) ~[solarthing-2021.6.1.jar:?]
	at me.retrodaredevil.solarthing.database.couchdb.CouchDbMillisDatabase.query(CouchDbMillisDatabase.java:43) ~[solarthing-2021.6.1.jar:?]
	... 5 more
2021-10-11 19:59:45.520 [main] DEBUG me.retrodaredevil.solarthing.program.pvoutput.PVOutputUploadMain - Going to sleep now

WebSocketClient objects are not reuseable

Got this error today.

2022-05-08 13:14:18.094 [main] ERROR me.retrodaredevil.solarthing.program.SolarMain - [LOG] Ending SolarThing. Jar: solarthing-2022.2.0.jar Last Modified: 2022-02-27T07:18:51Z Java version: 11.0.15
2022-05-08 13:14:18.094 [main] ERROR me.retrodaredevil.solarthing.program.SolarMain - (Fatal)Got throwable
java.lang.IllegalStateException: WebSocketClient objects are not reuseable
        at org.java_websocket.client.WebSocketClient.connect(WebSocketClient.java:372) ~[solarthing-2022.2.0.jar:?]
        at com.slack.api.socket_mode.impl.SocketModeClientJavaWSImpl.connect(SocketModeClientJavaWSImpl.java:121) ~[solarthing-2022.2.0.jar:?]
        at me.retrodaredevil.solarthing.actions.chatbot.SlackChatBotAction.initClient(SlackChatBotAction.java:90) ~[solarthing-2022.2.0.jar:?]
        at me.retrodaredevil.solarthing.actions.chatbot.SlackChatBotAction.onUpdate(SlackChatBotAction.java:46) ~[solarthing-2022.2.0.jar:?]
        at me.retrodaredevil.action.SimpleAction.update(SimpleAction.java:66) ~[solarthing-2022.2.0.jar:?]
        at me.retrodaredevil.action.DequeActionQueue.updateAction(DequeActionQueue.java:154) ~[solarthing-2022.2.0.jar:?]
        at me.retrodaredevil.action.DequeActionQueue.onUpdate(DequeActionQueue.java:145) ~[solarthing-2022.2.0.jar:?]
        at me.retrodaredevil.action.SimpleAction.update(SimpleAction.java:66) ~[solarthing-2022.2.0.jar:?]
        at me.retrodaredevil.action.DefaultActionChooser.onUpdate(DefaultActionChooser.java:69) ~[solarthing-2022.2.0.jar:?]
        at me.retrodaredevil.action.SimpleAction.update(SimpleAction.java:66) ~[solarthing-2022.2.0.jar:?]
        at me.retrodaredevil.action.DynamicActionRunner.onUpdate(DynamicActionRunner.java:21) ~[solarthing-2022.2.0.jar:?]
        at me.retrodaredevil.action.SimpleAction.update(SimpleAction.java:66) ~[solarthing-2022.2.0.jar:?]
        at me.retrodaredevil.action.SetActionMultiplexer.onUpdate(SetActionMultiplexer.java:95) ~[solarthing-2022.2.0.jar:?]
        at me.retrodaredevil.action.SimpleAction.update(SimpleAction.java:66) ~[solarthing-2022.2.0.jar:?]
        at me.retrodaredevil.solarthing.program.AutomationMain.startAutomation(AutomationMain.java:154) ~[solarthing-2022.2.0.jar:?]
        at me.retrodaredevil.solarthing.program.AutomationMain.startAutomation(AutomationMain.java:57) ~[solarthing-2022.2.0.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:147) [solarthing-2022.2.0.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:187) [solarthing-2022.2.0.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.determineMainSubprogram(SolarMain.java:252) [solarthing-2022.2.0.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:256) [solarthing-2022.2.0.jar:?]

Feature Request: Grafana Dashboard JSON

I really like the dashboard you have for Grafana and would like to setup something similar. Could you share the Grafana json file for the dashboard you show in the screenshot?

Feature Request: MySQL database

Over at Grafana they give you a free hosted instance. I have successfully used that to connect to a MySQL server somewhere else. I do like the idea of not running Grafana or the db on the pi, and MySQL is ubiquitous. If Solarthing could log data to MySQL (remotely) or use REST API, then I would use it that way for sure!

Modbus exception

Hello,
I've got a Renogy Rover Li and an RS-232 to USB cable. I'm running Ubuntu 20.04 and connected the Rover to a USB port. Running dmesg shows that the FTDI serial device converter is attached to ttyUSB0. My base.json file contains

{
  "type": "rover",
  "source": "default",
  "fragment": 2,
  "unique": 30,
  "databases": [
    "config/influxdb.json"
  ],
  "io": "config/default_linux_serial.json",
  "modbus": 1
}

and config/default_linux_serial.json contains

{
  "type": "serial",
  "port": "/dev/ttyUSB0",
  "serial_config": null
}

However when I execute run.sh I see
2020-11-19 21:05:40.845 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception

I'm sure this isn't a problem with solarthing but I'd really like to get this working- it looks like it would do exactly what I'd like to track my solar data. Thanks for any ideas you might have!

bootRun running first time

> Task :graphql:bootRun

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.6.6)

2022-06-09 21:18:14.097  INFO [           main] m.r.s.r.SolarThingGraphQLApplication     : Starting SolarThingGraphQLApplication using Java 17.0.3 on eidolon1138.local with PID 22553 (/Users/dgoodman/workspace/solarthing/graphql/build/classes/java/main started by dgoodman in /Users/dgoodman/workspace/solarthing/program/graphql)
2022-06-09 21:18:14.116 DEBUG [           main] m.r.s.r.SolarThingGraphQLApplication     : Running with Spring Boot v2.6.6, Spring v5.3.18
2022-06-09 21:18:14.119  INFO [           main] m.r.s.r.SolarThingGraphQLApplication     : No active profile set, falling back to 1 default profile: "default"
2022-06-09 21:18:16.692  INFO [           main] o.s.b.w.e.t.TomcatWebServer              : Tomcat initialized with port(s): 8080 (http)
2022-06-09 21:18:16.751  INFO [           main] o.a.c.h.Http11NioProtocol                : Initializing ProtocolHandler ["http-nio-8080"]
2022-06-09 21:18:16.754  INFO [           main] o.a.c.c.StandardService                  : Starting service [Tomcat]
2022-06-09 21:18:16.755  INFO [           main] o.a.c.c.StandardEngine                   : Starting Servlet engine: [Apache Tomcat/9.0.60]
2022-06-09 21:18:17.075  INFO [           main] o.a.c.c.C.[.[.[/]                        : Initializing Spring embedded WebApplicationContext
2022-06-09 21:18:17.077  INFO [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2768 ms
2022-06-09 21:18:17.367 DEBUG [           main] m.r.s.r.CommonProvider                   : Using defaultInstanceOptions=DefaultInstanceOptions(defaultSourceId='<UNUSED SOURCE ID THAT WILL NEVER BE IN A PACKET>', defaultFragmentId=0)
2022-06-09 21:18:17.368 DEBUG [           main] m.r.s.r.CommonProvider                   : Database file: /Users/dgoodman/workspace/solarthing/program/graphql/../config/couchdb.json
2022-06-09 21:18:17.369 DEBUG [           main] m.r.s.r.CommonProvider                   : Working directory: /Users/dgoodman/workspace/solarthing/program/graphql/.
2022-06-09 21:18:18.354 DEBUG [           main] m.r.s.r.c.CommandHandlerProvider         : No command configuration file. No one will be authorized to send commands.
2022-06-09 21:18:18.384  WARN [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'graphQLProvider': Invocation of init method failed; nested exception is java.lang.RuntimeException: java.lang.NoSuchFieldException: modifiers
2022-06-09 21:18:18.390  INFO [           main] o.a.c.c.StandardService                  : Stopping service [Tomcat]
2022-06-09 21:18:18.418  INFO [           main] ConditionEvaluationReportLoggingListener : 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2022-06-09 21:18:18.453 ERROR [           main] o.s.b.SpringApplication                  : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'graphQLProvider': Invocation of init method failed; nested exception is java.lang.RuntimeException: java.lang.NoSuchFieldException: modifiers
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:160) ~[spring-beans-5.3.18.jar:5.3.18]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:440) ~[spring-beans-5.3.18.jar:5.3.18]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796) ~[spring-beans-5.3.18.jar:5.3.18]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.18.jar:5.3.18]
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.18.jar:5.3.18]
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.18.jar:5.3.18]
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.18.jar:5.3.18]
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.18.jar:5.3.18]
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.18.jar:5.3.18]
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:953) ~[spring-beans-5.3.18.jar:5.3.18]
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) ~[spring-context-5.3.18.jar:5.3.18]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.18.jar:5.3.18]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) ~[spring-boot-2.6.6.jar:2.6.6]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:740) ~[spring-boot-2.6.6.jar:2.6.6]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:415) ~[spring-boot-2.6.6.jar:2.6.6]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) ~[spring-boot-2.6.6.jar:2.6.6]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1312) ~[spring-boot-2.6.6.jar:2.6.6]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1301) ~[spring-boot-2.6.6.jar:2.6.6]
	at me.retrodaredevil.solarthing.rest.SolarThingGraphQLApplication.main(SolarThingGraphQLApplication.java:10) ~[main/:?]
Caused by: java.lang.RuntimeException: java.lang.NoSuchFieldException: modifiers
	at me.retrodaredevil.solarthing.rest.graphql.GraphQLProvider.init(GraphQLProvider.java:82) ~[main/:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) ~[spring-beans-5.3.18.jar:5.3.18]
Caused by: java.lang.RuntimeException: java.lang.NoSuchFieldException: modifiers

	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333) ~[spring-beans-5.3.18.jar:5.3.18]
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157) ~[spring-beans-5.3.18.jar:5.3.18]
	... 18 more
Caused by: java.lang.NoSuchFieldException: modifiers
	at java.lang.Class.getDeclaredField(Class.java:2610) ~[?:?]
	at me.retrodaredevil.solarthing.rest.graphql.GraphQLProvider.updateNonNull(GraphQLProvider.java:67) ~[main/:?]
Caused by: java.lang.NoSuchFieldException: modifiers

	at me.retrodaredevil.solarthing.rest.graphql.GraphQLProvider.init(GraphQLProvider.java:80) ~[main/:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) ~[spring-beans-5.3.18.jar:5.3.18]
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333) ~[spring-beans-5.3.18.jar:5.3.18]
	at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157) ~[spring-beans-5.3.18.jar:5.3.18]
	... 18 more


> Task :graphql:bootRun FAILED

Execution failed for task ':graphql:bootRun'.
> Process 'command '/Users/dgoodman/Library/Java/JavaVirtualMachines/corretto-17.0.3/Contents/Home/bin/java'' finished with non-zero exit value 1

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.


Support over BT

Hi, great feature here!

Any way this can work over bluetooth (BT-1 and BT-2) instead of using the cable? Like Raspberry Pi blupy as the data logger?

Solarthing not noticing when ttyP1 comes back after disconnect

I have a working system! Thank you for your awesome code to make this happen. I even made a dashboard to connect to my Rover. What I'm troubleshooting now is making the service come back to life after a disconnect on my tty. My tty is over TCP.

I make a connection as a system service using the following command controlled by a systemctl service:

#!/usr/bin/env sh
socat TCP4:192.168.1.50:3001 PTY,link=/dev/ttyP1,wait-slave,raw

Unfortunately, it occasionally drops a connection to the network and solarthing doesn't seem to resume properly. Solarthing is running as a service. If the connection is in place and I run the solarthing service it works fine but if the tty drops for a while the solarthing doesn't seem to notice that it came back. I think when the device I'm calling /dev/ttyP1 is recreated, solarthing doesn't have access to it anymore. Is there a way to make Solarthing error out the service and terminate if it fails to connect to the tty?

Could <not> install service!

Hello, and thanks for sharing Solarthing. I had been trying to unravel the serial connection mystery of how to connect my Grape Solar charge controller to the internet since 2016 and now I have found your great project. By they way, the Renogy Rover and the GS Zenith series are made by the same Chinese company surprise, surprise! Don't ask me how I know that, but I do. It's not too hard to figure out by looking at them and the documentation. Anyway, I had a little trouble installing the service on my RPi 3b and a few other errors worth mentioning during setup.

pi@raspberrypi:/opt/solarthing $ sudo systemd/install.sh
sudo: systemd/install.sh: command not found

It's a small thing, but it was necessary to "cd other" to get to those files.
pi@raspberrypi:/opt/solarthing $ cd other
pi@raspberrypi:/opt/solarthing/other $ sudo systemd/install.sh
pi@raspberrypi:/opt/solarthing/other $

Success!
Next it was necessary to copy config template files, but I got "permission denied" so I prefaced all my cp commands with sudo, and it worked. I guess I can download your files but they aren't really mine. I used the rover_dummy_setup_template file. Then I had to install java and ran "java -jar solarthing.jar" I'm not sure if what happened next is by design or what. I have attached a copy of the output.
solarthingoutput.txt

modbus errors

hi,
i have a renogy rover set up, it only gives one or two reads when running then throws modbus errors,
any ideas?
Thanks

Using base config = config/base.json
2021-04-27 21:11:01.604 [main] INFO  me.retrodaredevil.solarthing.program.SolarMain - [LOG] Beginning main. Jar: solarthing-2021.3.3.jar Java version: 11.0.9.1
[stdout] Beginning main. Jar: solarthing-2021.3.3.jar Java version: 11.0.9.1
[stderr] Beginning main. Jar: solarthing-2021.3.3.jar Java version: 11.0.9.1
2021-04-27 21:11:02.065 [main] INFO  me.retrodaredevil.solarthing.program.SolarMain - Using base configuration file: config/base.json
2021-04-27 21:11:02.729 [main] INFO  me.retrodaredevil.solarthing.program.RoverMain - Beginning rover program
2021-04-27 21:11:02.739 [main] INFO  me.retrodaredevil.solarthing.analytics.AnalyticsManager - Google Analytics is ENABLED!
2021-04-27 21:11:02.800 [main] DEBUG me.retrodaredevil.solarthing.analytics.AnalyticsManager - Using Analytics UUID: cdb08e08-aa78-4b44-b916-7c216b604ea6
2021-04-27 21:11:04.799 [main] INFO  me.retrodaredevil.solarthing.analytics.AnalyticsManager - Sending program type to Google Analytics
2021-04-27 21:11:05.386 [main] DEBUG me.retrodaredevil.solarthing.io.ReloadableIOBundle - Successfully reloaded IOBundle
2021-04-27 21:11:07.497 [main] DEBUG me.retrodaredevil.solarthing.program.RoverPacketListUpdater - took 1315ms to read from Rover
2021-04-27 21:11:07.500 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Debugging all packets
2021-04-27 21:11:07.875 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - [ {
  "packetType" : "RENOGY_ROVER_STATUS",
  "packetVersion" : 2,
  "maxVoltage" : 24,
  "ratedChargingCurrent" : 20,
  "ratedDischargingCurrent" : 20,
  "productType" : 0,
  "productModelEncoded" : "ICBSTkctQ1RSTC1SVlIyMA==",
  "softwareVersion" : 196609,
  "hardwareVersion" : 2,
  "productSerialNumber" : 302449205,
  "controllerDeviceAddress" : 1,
  "batteryCapacitySOC" : 58,
  "batteryVoltage" : 12.2,
  "chargingCurrent" : 0.0,
  "controllerTemperatureRaw" : 12,
  "batteryTemperatureRaw" : 13,
  "loadVoltage" : 12.2,
  "loadCurrent" : 1.49,
  "loadPower" : 18,
  "inputVoltage" : 0.0,
  "pvCurrent" : 0.0,
  "chargingPower" : 0,
  "dailyMinBatteryVoltage" : 12.1,
  "dailyMaxBatteryVoltage" : 14.6,
  "dailyMaxChargingCurrent" : 14.57,
  "dailyMaxDischargingCurrent" : 1.89,
  "dailyMaxChargingPower" : 169,
  "dailyMaxDischargingPower" : 21,
  "dailyAH" : 44,
  "dailyAHDischarging" : 5,
  "dailyKWH" : 0.561,
  "dailyKWHConsumption" : 0.06,
  "operatingDaysCount" : 4,
  "batteryOverDischargesCount" : 0,
  "batteryFullChargesCount" : 0,
  "chargingAmpHoursOfBatteryCount" : 137,
  "dischargingAmpHoursOfBatteryCount" : 50,
  "cumulativeKWH" : 1.729,
  "cumulativeKWHConsumption" : 0.607,
  "streetLightValue" : 128,
  "chargingState" : 0,
  "errorMode" : 0,
  "nominalBatteryCapacity" : 200,
  "systemVoltageSetting" : 255,
  "recognizedVoltage" : 0,
  "batteryType" : 3,
  "overVoltageThresholdRaw" : 160,
  "chargingVoltageLimitRaw" : 155,
  "equalizingChargingVoltageRaw" : 152,
  "boostChargingVoltageRaw" : 142,
  "floatingChargingVoltageRaw" : 138,
  "boostChargingRecoveryVoltageRaw" : 132,
  "overDischargeRecoveryVoltageRaw" : 126,
  "underVoltageWarningLevelRaw" : 120,
  "overDischargeVoltageRaw" : 111,
  "dischargingLimitVoltageRaw" : 106,
  "endOfChargeSOC" : 100,
  "endOfDischargeSOC" : 50,
  "overDischargeTimeDelaySeconds" : 5,
  "equalizingChargingTimeRaw" : 0,
  "boostChargingTimeRaw" : 120,
  "equalizingChargingIntervalRaw" : 0,
  "temperatureCompensationFactorRaw" : 3,
  "operatingStage1" : {
    "durationHours" : 0,
    "operatingPowerPercentage" : 0
  },
  "operatingStage2" : {
    "durationHours" : 0,
    "operatingPowerPercentage" : 0
  },
  "operatingStage3" : {
    "durationHours" : 0,
    "operatingPowerPercentage" : 0
  },
  "operatingMorningOn" : {
    "durationHours" : 0,
    "operatingPowerPercentage" : 0
  },
  "loadWorkingMode" : 17,
  "lightControlDelayMinutes" : 5,
  "lightControlVoltage" : 10,
  "ledLoadCurrentSettingRaw" : 660,
  "specialPowerControlE021Raw" : 5,
  "sensed1" : {
    "workingHoursRaw" : 0,
    "powerWithPeopleSensedRaw" : 0,
    "powerWithNoPeopleSensedRaw" : 0
  },
  "sensed2" : {
    "workingHoursRaw" : 0,
    "powerWithPeopleSensedRaw" : 0,
    "powerWithNoPeopleSensedRaw" : 0
  },
  "sensed3" : {
    "workingHoursRaw" : 0,
    "powerWithPeopleSensedRaw" : 0,
    "powerWithNoPeopleSensedRaw" : 0
  },
  "sensingTimeDelayRaw" : 0,
  "ledLoadCurrentRaw" : 0,
  "specialPowerControlE02DRaw" : 0,
  "productModelString" : "RNG-CTRL-RVR20",
  "softwareVersionString" : "V03.00.01",
  "hardwareVersionString" : "V00.00.02",
  "streetLightBrightness" : 0,
  "streetLightOn" : true,
  "chargingStateName" : "Deactivated",
  "errors" : "",
  "batteryTypeName" : "gel",
  "loadWorkingModeName" : "NORMAL"
}, {
  "packetType" : "SOURCE",
  "sourceId" : "default"
}, {
  "packetType" : "FRAGMENT_INDICATOR",
  "fragmentId" : 2
} ]
2021-04-27 21:11:07.898 [main] INFO  me.retrodaredevil.solarthing.analytics.AnalyticsManager - Sending Rover status to Google Analytics. data=RNG-CTRL-RVR20,20 uptime hours=0
2021-04-27 21:11:07.915 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 3267ms
2021-04-27 21:11:12.455 [main] DEBUG me.retrodaredevil.solarthing.program.RoverPacketListUpdater - took 1273ms to read from Rover
2021-04-27 21:11:12.457 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Debugging all packets
2021-04-27 21:11:12.468 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - [ {
  "packetType" : "RENOGY_ROVER_STATUS",
  "packetVersion" : 2,
  "maxVoltage" : 24,
  "ratedChargingCurrent" : 20,
  "ratedDischargingCurrent" : 20,
  "productType" : 0,
  "productModelEncoded" : "ICBSTkctQ1RSTC1SVlIyMA==",
  "softwareVersion" : 196609,
  "hardwareVersion" : 2,
  "productSerialNumber" : 302449205,
  "controllerDeviceAddress" : 1,
  "batteryCapacitySOC" : 58,
  "batteryVoltage" : 12.2,
  "chargingCurrent" : 0.0,
  "controllerTemperatureRaw" : 12,
  "batteryTemperatureRaw" : 13,
  "loadVoltage" : 12.2,
  "loadCurrent" : 1.49,
  "loadPower" : 18,
  "inputVoltage" : 0.0,
  "pvCurrent" : 0.0,
  "chargingPower" : 0,
  "dailyMinBatteryVoltage" : 12.1,
  "dailyMaxBatteryVoltage" : 14.6,
  "dailyMaxChargingCurrent" : 14.57,
  "dailyMaxDischargingCurrent" : 1.89,
  "dailyMaxChargingPower" : 169,
  "dailyMaxDischargingPower" : 21,
  "dailyAH" : 44,
  "dailyAHDischarging" : 5,
  "dailyKWH" : 0.561,
  "dailyKWHConsumption" : 0.06,
  "operatingDaysCount" : 4,
  "batteryOverDischargesCount" : 0,
  "batteryFullChargesCount" : 0,
  "chargingAmpHoursOfBatteryCount" : 137,
  "dischargingAmpHoursOfBatteryCount" : 50,
  "cumulativeKWH" : 1.729,
  "cumulativeKWHConsumption" : 0.607,
  "streetLightValue" : 128,
  "chargingState" : 0,
  "errorMode" : 0,
  "nominalBatteryCapacity" : 200,
  "systemVoltageSetting" : 255,
  "recognizedVoltage" : 0,
  "batteryType" : 3,
  "overVoltageThresholdRaw" : 160,
  "chargingVoltageLimitRaw" : 155,
  "equalizingChargingVoltageRaw" : 152,
  "boostChargingVoltageRaw" : 142,
  "floatingChargingVoltageRaw" : 138,
  "boostChargingRecoveryVoltageRaw" : 132,
  "overDischargeRecoveryVoltageRaw" : 126,
  "underVoltageWarningLevelRaw" : 120,
  "overDischargeVoltageRaw" : 111,
  "dischargingLimitVoltageRaw" : 106,
  "endOfChargeSOC" : 100,
  "endOfDischargeSOC" : 50,
  "overDischargeTimeDelaySeconds" : 5,
  "equalizingChargingTimeRaw" : 0,
  "boostChargingTimeRaw" : 120,
  "equalizingChargingIntervalRaw" : 0,
  "temperatureCompensationFactorRaw" : 3,
  "operatingStage1" : {
    "durationHours" : 0,
    "operatingPowerPercentage" : 0
  },
  "operatingStage2" : {
    "durationHours" : 0,
    "operatingPowerPercentage" : 0
  },
  "operatingStage3" : {
    "durationHours" : 0,
    "operatingPowerPercentage" : 0
  },
  "operatingMorningOn" : {
    "durationHours" : 0,
    "operatingPowerPercentage" : 0
  },
  "loadWorkingMode" : 17,
  "lightControlDelayMinutes" : 5,
  "lightControlVoltage" : 10,
  "ledLoadCurrentSettingRaw" : 660,
  "specialPowerControlE021Raw" : 5,
  "sensed1" : {
    "workingHoursRaw" : 0,
    "powerWithPeopleSensedRaw" : 0,
    "powerWithNoPeopleSensedRaw" : 0
  },
  "sensed2" : {
    "workingHoursRaw" : 0,
    "powerWithPeopleSensedRaw" : 0,
    "powerWithNoPeopleSensedRaw" : 0
  },
  "sensed3" : {
    "workingHoursRaw" : 0,
    "powerWithPeopleSensedRaw" : 0,
    "powerWithNoPeopleSensedRaw" : 0
  },
  "sensingTimeDelayRaw" : 0,
  "ledLoadCurrentRaw" : 0,
  "specialPowerControlE02DRaw" : 0,
  "productModelString" : "RNG-CTRL-RVR20",
  "softwareVersionString" : "V03.00.01",
  "hardwareVersionString" : "V00.00.02",
  "streetLightBrightness" : 0,
  "streetLightOn" : true,
  "chargingStateName" : "Deactivated",
  "errors" : "",
  "batteryTypeName" : "gel",
  "loadWorkingModeName" : "NORMAL"
}, {
  "packetType" : "SOURCE",
  "sourceId" : "default"
}, {
  "packetType" : "FRAGMENT_INDICATOR",
  "fragmentId" : 2
} ]
2021-04-27 21:11:12.500 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 3682ms
2021-04-27 21:11:16.459 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.RedundancyException: Incorrect CRC checksum. Expected: 0 but got: 23712 bytes: [1, 3, 48, 0, 121, 0, -110, 5, -79, 0, -67, 0, -87, 0, 21, 0, 44, 0, 5, 2, 49, 0, 60, 0, 4, 0, 0, 0, 0, 0, 0, 0]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:82) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.readMessage(RtuDataEncoder.java:63) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:26) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.MutableAddressModbusSlave.sendRequestMessage(MutableAddressModbusSlave.java:18) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:28) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheRangeInclusive(ModbusCacheSlave.java:36) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$3(RoverMain.java:92) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$7(RoverMain.java:143) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:66) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:113) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:87) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:149) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:55) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:107) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:239) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:267) [solarthing-2021.3.3.jar:?]
2021-04-27 21:11:16.497 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4688ms
2021-04-27 21:11:21.208 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.UnexpectedSlaveResponseException: Address: 1 was expected but slave with address: 137 responded!
        at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:72) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.readMessage(RtuDataEncoder.java:63) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:26) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.MutableAddressModbusSlave.sendRequestMessage(MutableAddressModbusSlave.java:18) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:28) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheRangeInclusive(ModbusCacheSlave.java:36) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$3(RoverMain.java:89) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$7(RoverMain.java:143) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:66) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:113) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:87) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:149) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:55) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:107) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:239) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:267) [solarthing-2021.3.3.jar:?]
2021-04-27 21:11:21.217 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4969ms
2021-04-27 21:11:26.276 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.RedundancyException: Incorrect CRC checksum. Expected: 4610 but got: 59338 bytes: [1, 3, 34, 24, 20, 20, 0, 32, 32, 82, 78, 71, 45, 67, 84, 82, 76, 45, 82, 86, 82, 50, 48, 0, 3, 0, 1, 0, 0, 0, 2, 18]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:82) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.readMessage(RtuDataEncoder.java:63) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:26) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.MutableAddressModbusSlave.sendRequestMessage(MutableAddressModbusSlave.java:18) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:28) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheRangeInclusive(ModbusCacheSlave.java:36) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$3(RoverMain.java:91) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$7(RoverMain.java:143) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:66) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:113) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:87) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:149) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:55) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:107) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:239) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:267) [solarthing-2021.3.3.jar:?]
2021-04-27 21:11:26.285 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4902ms
2021-04-27 21:11:31.214 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.UnexpectedSlaveResponseException: Address: 1 was expected but slave with address: 7 responded!
        at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:72) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.readMessage(RtuDataEncoder.java:63) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:26) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.MutableAddressModbusSlave.sendRequestMessage(MutableAddressModbusSlave.java:18) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:28) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheRangeInclusive(ModbusCacheSlave.java:36) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$3(RoverMain.java:89) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$7(RoverMain.java:143) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:66) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:113) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:87) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:149) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:55) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:107) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:239) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:267) [solarthing-2021.3.3.jar:?]
2021-04-27 21:11:31.223 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4965ms
2021-04-27 21:11:36.281 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.RedundancyException: Incorrect CRC checksum. Expected: 4610 but got: 59338 bytes: [1, 3, 34, 24, 20, 20, 0, 32, 32, 82, 78, 71, 45, 67, 84, 82, 76, 45, 82, 86, 82, 50, 48, 0, 3, 0, 1, 0, 0, 0, 2, 18]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:82) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.readMessage(RtuDataEncoder.java:63) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:26) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.MutableAddressModbusSlave.sendRequestMessage(MutableAddressModbusSlave.java:18) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:28) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheRangeInclusive(ModbusCacheSlave.java:36) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$3(RoverMain.java:91) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$7(RoverMain.java:143) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:66) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:113) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:87) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:149) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:55) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:107) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:239) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:267) [solarthing-2021.3.3.jar:?]
2021-04-27 21:11:36.289 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4900ms
2021-04-27 21:11:41.211 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.UnexpectedSlaveResponseException: Address: 1 was expected but slave with address: 7 responded!
        at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:72) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.readMessage(RtuDataEncoder.java:63) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:26) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.MutableAddressModbusSlave.sendRequestMessage(MutableAddressModbusSlave.java:18) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:28) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheRangeInclusive(ModbusCacheSlave.java:36) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$3(RoverMain.java:89) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$7(RoverMain.java:143) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:66) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:113) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:87) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:149) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:55) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:107) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:239) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:267) [solarthing-2021.3.3.jar:?]
2021-04-27 21:11:41.226 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4964ms
2021-04-27 21:11:46.280 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.RedundancyException: Incorrect CRC checksum. Expected: 4610 but got: 59338 bytes: [1, 3, 34, 24, 20, 20, 0, 32, 32, 82, 78, 71, 45, 67, 84, 82, 76, 45, 82, 86, 82, 50, 48, 0, 3, 0, 1, 0, 0, 0, 2, 18]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:82) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.readMessage(RtuDataEncoder.java:63) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:26) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.MutableAddressModbusSlave.sendRequestMessage(MutableAddressModbusSlave.java:18) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:28) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheRangeInclusive(ModbusCacheSlave.java:36) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$3(RoverMain.java:91) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$7(RoverMain.java:143) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:66) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:113) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:87) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:149) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:55) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:107) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:239) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:267) [solarthing-2021.3.3.jar:?]
2021-04-27 21:11:46.290 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4901ms
2021-04-27 21:11:51.218 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.UnexpectedSlaveResponseException: Address: 1 was expected but slave with address: 7 responded!
        at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:72) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.readMessage(RtuDataEncoder.java:63) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:26) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.MutableAddressModbusSlave.sendRequestMessage(MutableAddressModbusSlave.java:18) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:28) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheRangeInclusive(ModbusCacheSlave.java:36) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$3(RoverMain.java:89) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$7(RoverMain.java:143) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:66) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:113) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:87) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:149) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:55) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:107) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:239) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:267) [solarthing-2021.3.3.jar:?]
2021-04-27 21:11:51.226 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4966ms
2021-04-27 21:11:56.282 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.RedundancyException: Incorrect CRC checksum. Expected: 4610 but got: 59338 bytes: [1, 3, 34, 24, 20, 20, 0, 32, 32, 82, 78, 71, 45, 67, 84, 82, 76, 45, 82, 86, 82, 50, 48, 0, 3, 0, 1, 0, 0, 0, 2, 18]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:82) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.readMessage(RtuDataEncoder.java:63) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:26) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.MutableAddressModbusSlave.sendRequestMessage(MutableAddressModbusSlave.java:18) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:28) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheRangeInclusive(ModbusCacheSlave.java:36) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$3(RoverMain.java:91) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$7(RoverMain.java:143) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:66) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:113) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:87) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:149) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:55) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:107) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:239) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:267) [solarthing-2021.3.3.jar:?]
2021-04-27 21:11:56.291 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4902ms
2021-04-27 21:12:01.216 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.UnexpectedSlaveResponseException: Address: 1 was expected but slave with address: 7 responded!
        at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:72) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.readMessage(RtuDataEncoder.java:63) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:26) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.MutableAddressModbusSlave.sendRequestMessage(MutableAddressModbusSlave.java:18) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:28) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheRangeInclusive(ModbusCacheSlave.java:36) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$3(RoverMain.java:89) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$7(RoverMain.java:143) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:66) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:113) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:87) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:149) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:55) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:107) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:239) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:267) [solarthing-2021.3.3.jar:?]
2021-04-27 21:12:05.779 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 1000ms
2021-04-27 21:12:06.869 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.RedundancyException: Incorrect CRC checksum. Expected: 4610 but got: 59338 bytes: [1, 3, 34, 24, 20, 20, 0, 32, 32, 82, 78, 71, 45, 67, 84, 82, 76, 45, 82, 86, 82, 50, 48, 0, 3, 0, 1, 0, 0, 0, 2, 18]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:82) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.readMessage(RtuDataEncoder.java:63) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:26) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.MutableAddressModbusSlave.sendRequestMessage(MutableAddressModbusSlave.java:18) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:28) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheRangeInclusive(ModbusCacheSlave.java:36) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$3(RoverMain.java:91) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$7(RoverMain.java:143) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:66) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:113) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:87) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:149) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:55) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:107) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:239) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:267) [solarthing-2021.3.3.jar:?]
2021-04-27 21:12:06.875 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4906ms
2021-04-27 21:12:11.808 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.UnexpectedSlaveResponseException: Address: 1 was expected but slave with address: 7 responded!
        at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:72) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.readMessage(RtuDataEncoder.java:63) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:26) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.MutableAddressModbusSlave.sendRequestMessage(MutableAddressModbusSlave.java:18) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:28) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheRangeInclusive(ModbusCacheSlave.java:36) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$3(RoverMain.java:89) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$7(RoverMain.java:143) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:66) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:113) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:87) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:149) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:55) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:107) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:239) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:267) [solarthing-2021.3.3.jar:?]
2021-04-27 21:12:11.814 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4968ms
2021-04-27 21:12:16.872 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.RedundancyException: Incorrect CRC checksum. Expected: 4610 but got: 59338 bytes: [1, 3, 34, 24, 20, 20, 0, 32, 32, 82, 78, 71, 45, 67, 84, 82, 76, 45, 82, 86, 82, 50, 48, 0, 3, 0, 1, 0, 0, 0, 2, 18]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:82) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.readMessage(RtuDataEncoder.java:63) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:26) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.MutableAddressModbusSlave.sendRequestMessage(MutableAddressModbusSlave.java:18) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:28) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheRangeInclusive(ModbusCacheSlave.java:36) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$3(RoverMain.java:91) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$7(RoverMain.java:143) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:66) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:113) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:87) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:149) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:55) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:107) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:239) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:267) [solarthing-2021.3.3.jar:?]
2021-04-27 21:12:16.879 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4905ms
2021-04-27 21:12:21.811 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.UnexpectedSlaveResponseException: Address: 1 was expected but slave with address: 7 responded!
        at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:72) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.readMessage(RtuDataEncoder.java:63) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:26) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.MutableAddressModbusSlave.sendRequestMessage(MutableAddressModbusSlave.java:18) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:28) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheRangeInclusive(ModbusCacheSlave.java:36) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$3(RoverMain.java:89) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$7(RoverMain.java:143) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:66) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:113) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:87) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:149) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:55) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:107) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:239) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:267) [solarthing-2021.3.3.jar:?]
2021-04-27 21:12:21.820 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4966ms
2021-04-27 21:12:26.879 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.RedundancyException: Incorrect CRC checksum. Expected: 4610 but got: 59338 bytes: [1, 3, 34, 24, 20, 20, 0, 32, 32, 82, 78, 71, 45, 67, 84, 82, 76, 45, 82, 86, 82, 50, 48, 0, 3, 0, 1, 0, 0, 0, 2, 18]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:82) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.readMessage(RtuDataEncoder.java:63) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:26) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.MutableAddressModbusSlave.sendRequestMessage(MutableAddressModbusSlave.java:18) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:28) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheRangeInclusive(ModbusCacheSlave.java:36) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$3(RoverMain.java:91) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$7(RoverMain.java:143) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:66) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:113) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:87) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:149) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:55) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:107) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:239) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:267) [solarthing-2021.3.3.jar:?]
2021-04-27 21:12:26.888 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4899ms
2021-04-27 21:12:31.810 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.UnexpectedSlaveResponseException: Address: 1 was expected but slave with address: 7 responded!
        at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:72) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.readMessage(RtuDataEncoder.java:63) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:26) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.MutableAddressModbusSlave.sendRequestMessage(MutableAddressModbusSlave.java:18) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:28) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheRangeInclusive(ModbusCacheSlave.java:36) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$3(RoverMain.java:89) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$7(RoverMain.java:143) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:66) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:113) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:87) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:149) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:55) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:107) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:239) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:267) [solarthing-2021.3.3.jar:?]
2021-04-27 21:12:31.819 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4970ms
2021-04-27 21:12:36.878 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.RedundancyException: Incorrect CRC checksum. Expected: 4610 but got: 59338 bytes: [1, 3, 34, 24, 20, 20, 0, 32, 32, 82, 78, 71, 45, 67, 84, 82, 76, 45, 82, 86, 82, 50, 48, 0, 3, 0, 1, 0, 0, 0, 2, 18]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:82) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.readMessage(RtuDataEncoder.java:63) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:26) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.MutableAddressModbusSlave.sendRequestMessage(MutableAddressModbusSlave.java:18) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:28) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheRangeInclusive(ModbusCacheSlave.java:36) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$3(RoverMain.java:91) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$7(RoverMain.java:143) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:66) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:113) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:87) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:149) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:55) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:107) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:239) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:267) [solarthing-2021.3.3.jar:?]
2021-04-27 21:12:36.896 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4894ms
2021-04-27 21:12:41.817 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.UnexpectedSlaveResponseException: Address: 1 was expected but slave with address: 7 responded!
        at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:72) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.readMessage(RtuDataEncoder.java:63) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:26) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.MutableAddressModbusSlave.sendRequestMessage(MutableAddressModbusSlave.java:18) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:28) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheRangeInclusive(ModbusCacheSlave.java:36) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$3(RoverMain.java:89) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$7(RoverMain.java:143) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:66) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:113) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:87) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:149) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:55) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:107) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:239) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:267) [solarthing-2021.3.3.jar:?]
2021-04-27 21:12:41.826 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4965ms
2021-04-27 21:12:46.880 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.RedundancyException: Incorrect CRC checksum. Expected: 4610 but got: 59338 bytes: [1, 3, 34, 24, 20, 20, 0, 32, 32, 82, 78, 71, 45, 67, 84, 82, 76, 45, 82, 86, 82, 50, 48, 0, 3, 0, 1, 0, 0, 0, 2, 18]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:82) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.readMessage(RtuDataEncoder.java:63) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:26) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.MutableAddressModbusSlave.sendRequestMessage(MutableAddressModbusSlave.java:18) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:28) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheRangeInclusive(ModbusCacheSlave.java:36) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$3(RoverMain.java:91) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$7(RoverMain.java:143) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:66) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:113) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:87) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:149) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:55) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:107) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:239) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:267) [solarthing-2021.3.3.jar:?]
2021-04-27 21:12:46.889 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4904ms
2021-04-27 21:12:51.815 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.UnexpectedSlaveResponseException: Address: 1 was expected but slave with address: 7 responded!
        at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:72) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.readMessage(RtuDataEncoder.java:63) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:26) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.MutableAddressModbusSlave.sendRequestMessage(MutableAddressModbusSlave.java:18) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:28) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheRangeInclusive(ModbusCacheSlave.java:36) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$3(RoverMain.java:89) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$7(RoverMain.java:143) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:66) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:113) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:87) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:149) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:55) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:107) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:239) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:267) [solarthing-2021.3.3.jar:?]
2021-04-27 21:12:51.824 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4970ms
2021-04-27 21:12:56.887 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.RedundancyException: Incorrect CRC checksum. Expected: 4610 but got: 59338 bytes: [1, 3, 34, 24, 20, 20, 0, 32, 32, 82, 78, 71, 45, 67, 84, 82, 76, 45, 82, 86, 82, 50, 48, 0, 3, 0, 1, 0, 0, 0, 2, 18]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:82) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.readMessage(RtuDataEncoder.java:63) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:26) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.MutableAddressModbusSlave.sendRequestMessage(MutableAddressModbusSlave.java:18) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:28) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheRangeInclusive(ModbusCacheSlave.java:36) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$3(RoverMain.java:91) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$7(RoverMain.java:143) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:66) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:113) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:87) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:149) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:55) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:107) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:239) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:267) [solarthing-2021.3.3.jar:?]
2021-04-27 21:12:56.895 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4900ms
2021-04-27 21:13:01.822 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.UnexpectedSlaveResponseException: Address: 1 was expected but slave with address: 7 responded!
        at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:72) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.readMessage(RtuDataEncoder.java:63) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:26) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.MutableAddressModbusSlave.sendRequestMessage(MutableAddressModbusSlave.java:18) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:28) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheRangeInclusive(ModbusCacheSlave.java:36) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$3(RoverMain.java:89) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$7(RoverMain.java:143) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:66) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:113) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:87) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:149) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:55) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:107) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:239) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:267) [solarthing-2021.3.3.jar:?]
2021-04-27 21:13:01.830 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4966ms
2021-04-27 21:13:06.885 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.RedundancyException: Incorrect CRC checksum. Expected: 4610 but got: 59338 bytes: [1, 3, 34, 24, 20, 20, 0, 32, 32, 82, 78, 71, 45, 67, 84, 82, 76, 45, 82, 86, 82, 50, 48, 0, 3, 0, 1, 0, 0, 0, 2, 18]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:82) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.RtuDataEncoder.readMessage(RtuDataEncoder.java:63) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:26) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.MutableAddressModbusSlave.sendRequestMessage(MutableAddressModbusSlave.java:18) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:28) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheRangeInclusive(ModbusCacheSlave.java:36) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$3(RoverMain.java:91) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$7(RoverMain.java:143) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:66) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:113) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:87) ~[solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:149) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:55) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:107) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:239) [solarthing-2021.3.3.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:267) [solarthing-2021.3.3.jar:?]
2021-04-27 21:13:06.893 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4906ms

some issues with socat maybe

Heck of a project you whipped up.

I have a mikrotik RB750G connected to the rover via serial cable then share the port over ip
And the I use socat to connect to a linux mint pc running your solarthing
Things seem to be working good when I was testing on the bench.
Now that I have the setup 60 miles away, I am getting some errors.

Seems if I request smaller amounts of data.. or send setting changes to the rover .. from my linux mint pc
I see almost no errors..

I don't need to get all info everytime.. what would I need to send to the rover to get maybe half size requests

I maybe missing an obvious mistake.

If you would, please take a look at the following and steer me straight ...

Thank-you
Terry
Calgary, AB

/usr/bin/socat pty,link=/home/solarthing/dev/ttyV0,raw,mode=777 TCP:10.0.16.3:10000

{
  "type": "request",
  "source": "default",
  "fragment": 2,
  "unique": 30,
 "databases": [ 
        "config/couchdb.json" 
         ],
  "request": [
    {
      "type": "modbus",
      "io": "config/rover_serial.json",
      "devices": {
        "1": {
          "type": "rover",
	  "server": { "port": 5051 },
     "commands": [
            "LOAD ON", "LOAD OFF"
          ]
	}
      }
    }
     ],
  "commands": [
    {
      "name": "LOAD ON",
      "display_name": "Load On",
      "description": "Turns on the load",
      "action": "config/commands/load_on.json"
    },
    {
      "name": "LOAD OFF",
      "display_name": "Load Off",
      "description": "Turns off the load",
      "action": "config/commands/load_off.json"
    }
	]
         }




2022-02-22 17:31:21.794 [main] INFO  me.retrodaredevil.solarthing.program.receiver.ModbusListUpdaterWrapper - Got part of a response back. (Maybe timed out halfway through?) data='01 03 22 18 28 14 00 20 20 52 4E 47 2D 43 54 52 4C 2D 52 56 52 34 30 00 03 00 01 00 00 00 02 12 07 07 0B 00 01 4A 74 01 03 14 00 64 01 17 00 5E 84 8A 01 17 00 26 00 0A 01 97 00 42 00 1B A0 25' Feel free to open an issue at https://github.com/wildmountainfarms/solarthing/issues/
2022-02-22 17:31:21.795 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4.801 seconds
2022-02-22 17:31:28.722 [main] DEBUG me.retrodaredevil.solarthing.program.receiver.ModbusListUpdaterWrapper - took 2.126 seconds to read from device
2022-02-22 17:31:28.722 [main] DEBUG me.retrodaredevil.solarthing.program.PacketListReceiverHandlerBundle - Debugging all packets
2022-02-22 17:31:28.724 [main] DEBUG me.retrodaredevil.solarthing.program.PacketListReceiverHandlerBundle - [ {
  "packetType" : "RENOGY_ROVER_STATUS",
  "packetVersion" : 7,
  "maxVoltage" : 24,
  "ratedChargingCurrent" : 40,
  "ratedDischargingCurrent" : 20,
  "productType" : 0,
  "productModelEncoded" : "ICBSTkctQ1RSTC1SVlI0MA==",
  "softwareVersion" : 196609,
  "hardwareVersion" : 2,
  "productSerialNumber" : 302450443,
  "controllerDeviceAddress" : 1,
  "batteryCapacitySOC" : 100,
  "batteryVoltage" : 27.9,
  "chargingCurrent" : 0.99,
  "controllerTemperatureRaw" : 132,
  "batteryTemperatureRaw" : 138,
  "loadVoltage" : 27.9,
  "loadCurrent" : 0.61,
  "loadPower" : 17,
  "inputVoltage" : 40.6,
  "pvCurrent" : 0.71,
  "chargingPower" : 29,
  "dailyMinBatteryVoltage" : 24.4,
  "dailyMaxBatteryVoltage" : 30.7,
  "dailyMaxChargingCurrent" : 4.17,
  "dailyMaxDischargingCurrent" : 1.63,
  "dailyMaxChargingPower" : 123,
  "dailyMaxDischargingPower" : 36,
  "dailyAH" : 21,
  "dailyAHDischarging" : 17,
  "dailyKWH" : 0.588,
  "dailyKWHConsumption" : 0.442,
  "operatingDaysCount" : 68,
  "batteryOverDischargesCount" : 4,
  "batteryFullChargesCount" : 27,
  "chargingAmpHoursOfBatteryCount" : 1068,
  "dischargingAmpHoursOfBatteryCount" : 934,
  "cumulativeKWH" : 29.194,
  "cumulativeKWHConsumption" : 23.451,
  "streetLightValue" : 128,
  "chargingState" : 5,
  "errorMode" : 0,
  "nominalBatteryCapacity" : 200,
  "systemVoltageSetting" : 24,
  "recognizedVoltage" : 0,
  "batteryType" : 0,
  "overVoltageThresholdRaw" : 156,
  "chargingVoltageLimitRaw" : 154,
  "equalizingChargingVoltageRaw" : 151,
  "boostChargingVoltageRaw" : 149,
  "floatingChargingVoltageRaw" : 136,
  "boostChargingRecoveryVoltageRaw" : 120,
  "overDischargeRecoveryVoltageRaw" : 112,
  "underVoltageWarningLevelRaw" : 112,
  "overDischargeVoltageRaw" : 101,
  "dischargingLimitVoltageRaw" : 110,
  "endOfChargeSOC" : 100,
  "endOfDischargeSOC" : 50,
  "overDischargeTimeDelaySeconds" : 120,
  "equalizingChargingTimeRaw" : 130,
  "boostChargingTimeRaw" : 110,
  "equalizingChargingIntervalRaw" : 0,
  "temperatureCompensationFactorRaw" : 3,
  "operatingStage1" : {
    "durationHours" : 4,
    "operatingPowerPercentage" : 100
  },
  "operatingStage2" : {
    "durationHours" : 0,
    "operatingPowerPercentage" : 70
  },
  "operatingStage3" : {
    "durationHours" : 4,
    "operatingPowerPercentage" : 50
  },
  "operatingMorningOn" : {
    "durationHours" : 0,
    "operatingPowerPercentage" : 20
  },
  "loadWorkingMode" : 17,
  "lightControlDelayMinutes" : 5,
  "lightControlVoltage" : 10,
  "ledLoadCurrentSettingRaw" : 660,
  "specialPowerControlE021Raw" : 5,
  "sensed1" : {
    "workingHoursRaw" : 4,
    "powerWithPeopleSensedRaw" : 4,
    "powerWithNoPeopleSensedRaw" : 4
  },
  "sensed2" : {
    "workingHoursRaw" : 4,
    "powerWithPeopleSensedRaw" : 4,
    "powerWithNoPeopleSensedRaw" : 4
  },
  "sensed3" : {
    "workingHoursRaw" : 4,
    "powerWithPeopleSensedRaw" : 4,
    "powerWithNoPeopleSensedRaw" : 4
  },
  "sensingTimeDelayRaw" : 4,
  "ledLoadCurrentRaw" : 4,
  "specialPowerControlE02DRaw" : 4,
  "productModelString" : "RNG-CTRL-RVR40"
}, {
  "packetType" : "AVAILABLE_COMMANDS",
  "commands" : [ {
    "name" : "LOAD ON",
    "displayName" : "Load On",
    "description" : "Turns on the load"
  }, {
    "name" : "LOAD OFF",
    "displayName" : "Load Off",
    "description" : "Turns off the load"
  } ]
}, {
  "packetType" : "SOURCE",
  "sourceId" : "default"
}, {
  "packetType" : "FRAGMENT_INDICATOR",
  "fragmentId" : 2
} ]
2022-02-22 17:31:28.725 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 2.871 seconds
2022-02-22 17:31:31.856 [main] ERROR me.retrodaredevil.solarthing.program.receiver.ModbusListUpdaterWrapper - Modbus exception
me.retrodaredevil.io.modbus.RedundancyException: Incorrect CRC checksum. Expected: 22 but got: 15019 bytes: [1, 3, 20, 0, 100, 1, 22, 0]
	at me.retrodaredevil.io.modbus.RedundancyException.createFrom(RedundancyException.java:18) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:95) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:72) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.io.modbus.RtuDataEncoder.parseMessage(RtuDataEncoder.java:63) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.io.modbus.IODataEncoder.readMessage(IODataEncoder.java:17) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:26) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.io.modbus.ImmutableAddressModbusSlave.sendRequestMessage(ImmutableAddressModbusSlave.java:14) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:38) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheHolding(ModbusCacheSlave.java:47) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheHoldingRangeInclusive(ModbusCacheSlave.java:50) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.config.request.modbus.RoverModbusRequester.cacheRegisters(RoverModbusRequester.java:65) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.config.request.modbus.RoverModbusRequester.lambda$create$0(RoverModbusRequester.java:81) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.program.receiver.ModbusListUpdaterWrapper.receive(ModbusListUpdaterWrapper.java:57) [solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:20) [solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:20) [solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.program.RequestMain.doRequest(RequestMain.java:76) [solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:70) [solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:40) [solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:145) [solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:187) [solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.determineMainSubprogram(SolarMain.java:252) [solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:256) [solarthing-2022.1.1.jar:?]
2022-02-22 17:31:31.857 [main] INFO  me.retrodaredevil.solarthing.program.receiver.ModbusListUpdaterWrapper - Got part of a response back. (Maybe timed out halfway through?) data='01 03 14 00 64 01 16 00' Feel free to open an issue at https://github.com/wildmountainfarms/solarthing/issues/
2022-02-22 17:31:31.857 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4.739 seconds
2022-02-22 17:31:36.638 [main] ERROR me.retrodaredevil.solarthing.program.receiver.ModbusListUpdaterWrapper - Modbus exception
me.retrodaredevil.io.modbus.RedundancyException: Incorrect CRC checksum. Expected: 48827 but got: 50824 bytes: [111, -124, -118, 1, 22, 0, 65, 0, 18, 1, -107, 0, 79, 0, 32, -69, -66]
	at me.retrodaredevil.io.modbus.RedundancyException.createFrom(RedundancyException.java:18) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:95) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.io.modbus.RtuDataEncoder.fromBytes(RtuDataEncoder.java:72) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.io.modbus.RtuDataEncoder.parseMessage(RtuDataEncoder.java:63) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.io.modbus.IODataEncoder.readMessage(IODataEncoder.java:17) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:26) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.io.modbus.ImmutableAddressModbusSlave.sendRequestMessage(ImmutableAddressModbusSlave.java:14) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:38) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheHolding(ModbusCacheSlave.java:47) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheHoldingRangeInclusive(ModbusCacheSlave.java:50) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.config.request.modbus.RoverModbusRequester.cacheRegisters(RoverModbusRequester.java:63) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.config.request.modbus.RoverModbusRequester.lambda$create$0(RoverModbusRequester.java:81) ~[solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.program.receiver.ModbusListUpdaterWrapper.receive(ModbusListUpdaterWrapper.java:57) [solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:20) [solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:20) [solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.program.RequestMain.doRequest(RequestMain.java:76) [solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:70) [solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:40) [solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:145) [solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:187) [solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.determineMainSubprogram(SolarMain.java:252) [solarthing-2022.1.1.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:256) [solarthing-2022.1.1.jar:?]
2022-02-22 17:31:36.638 [main] INFO  me.retrodaredevil.solarthing.program.receiver.ModbusListUpdaterWrapper - Got part of a response back. (Maybe timed out halfway through?) data='6F 84 8A 01 16 00 41 00 12 01 95 00 4F 00 20 BB BE' Feel free to open an issue at https://github.com/wildmountainfarms/solarthing/issues/
2022-02-22 17:31:36.639 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4.958 seconds
^C

Renogy 30A Dual-Input DC-to-DC MPPT On-Board Battery Charger

Hi,
I'm interested in trying solarthing with my Renogy 30A Dual-Input DC-to-DC MPPT On-Board Battery Charger. The device uses an RS485 port and I was curious if solarthing has been tested to work in this configuration? Sounds like the other monitoring option is the Renogy BT-2 but many reviews seem to be disappointed in the quality of the app. I was going to purchase the Renogy rs485-to-usb-serial-cable but their site says its only for updating the FW on their Lithium batteries so I'm also checking with their support.

Tracer IO Not reloading

Error for me to fix

2021-09-20 06:50:17.320 [main] ERROR me.retrodaredevil.solarthing.program.ModbusListUpdaterWrapper - Modbus exception
me.retrodaredevil.io.modbus.ModbusIORuntimeException: Got exception while writing
	at me.retrodaredevil.io.modbus.RtuDataEncoder.sendMessage(RtuDataEncoder.java:36) ~[solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.io.modbus.IOModbusSlaveBus.sendRequestMessage(IOModbusSlaveBus.java:25) ~[solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.io.modbus.ImmutableAddressModbusSlave.sendRequestMessage(ImmutableAddressModbusSlave.java:14) ~[solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:24) ~[solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:38) ~[solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheInput(ModbusCacheSlave.java:54) ~[solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheInputRangeInclusive(ModbusCacheSlave.java:57) ~[solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.config.request.modbus.TracerModbusRequester.cacheRegisters(TracerModbusRequester.java:70) ~[solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.config.request.modbus.TracerModbusRequester.lambda$create$0(TracerModbusRequester.java:99) ~[solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.program.ModbusListUpdaterWrapper.receive(ModbusListUpdaterWrapper.java:58) [solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) [solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) [solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.program.RequestMain.doRequest(RequestMain.java:73) [solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:67) [solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:39) [solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:125) [solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:167) [solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:206) [solarthing-SNAPSHOT.jar:?]
Caused by: me.retrodaredevil.solarthing.io.NotInitializedIOException: IO not initialized!
	at me.retrodaredevil.solarthing.io.ReloadableIOBundle$2.write(ReloadableIOBundle.java:22) ~[solarthing-SNAPSHOT.jar:?]
	at java.io.OutputStream.write(OutputStream.java:157) ~[?:?]
	at java.io.OutputStream.write(OutputStream.java:122) ~[?:?]
	at me.retrodaredevil.solarthing.io.ReloadableIOBundle$4.write(ReloadableIOBundle.java:115) ~[solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.io.modbus.RtuDataEncoder.sendMessage(RtuDataEncoder.java:33) ~[solarthing-SNAPSHOT.jar:?]
	... 17 more
2021-09-20 06:50:17.524 [main] ERROR me.retrodaredevil.solarthing.io.ReloadableIOBundle - Could not create IOBundle
me.retrodaredevil.io.serial.SerialPortException: Was unsuccessful while trying to open port: ttyXRUSB0 descriptive name: User-Specified Port description: User-Specified Port
	at me.retrodaredevil.io.serial.JSerialIOBundle.<init>(JSerialIOBundle.java:22) ~[solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.config.io.SerialIOConfig.createIOBundle(SerialIOConfig.java:46) ~[solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.io.ReloadableIOBundle.reload(ReloadableIOBundle.java:55) ~[solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.config.request.modbus.ReloadIOSuccessReporterHandler.doReload(ReloadIOSuccessReporterHandler.java:28) [solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.config.request.modbus.ReloadIOSuccessReporterHandler.access$200(ReloadIOSuccessReporterHandler.java:11) [solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.config.request.modbus.ReloadIOSuccessReporterHandler$UniqueReporter.reportTimeout(ReloadIOSuccessReporterHandler.java:47) [solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.program.ModbusListUpdaterWrapper.receive(ModbusListUpdaterWrapper.java:97) [solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) [solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) [solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.program.RequestMain.doRequest(RequestMain.java:73) [solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:67) [solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:39) [solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:125) [solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:167) [solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:206) [solarthing-SNAPSHOT.jar:?]

Future plans for inverter support

I'm looking to add an inverter/charger to my mix. Do you have any plans to add support for something like that. I haven't bought one yet so if you have something in the works I'll go with that.

Serial port exception with tracer

Here's an issue for me to fix later:

2021-07-19 22:29:39.156 [main] INFO  me.retrodaredevil.solarthing.program.SolarMain - [LOG] Beginning main. Jar: solarthing-2021.6.0.jar Java version: 11.0.11
2021-07-19 22:29:47.195 [main] INFO  me.retrodaredevil.solarthing.program.RequestMain - Beginning request program
2021-07-19 22:29:47.224 [main] INFO  me.retrodaredevil.solarthing.analytics.AnalyticsManager - Google Analytics is disabled
2021-07-19 22:29:53.839 [main] INFO  me.retrodaredevil.solarthing.program.PacketHandlerInit - Commands are disabled
2021-07-19 22:29:54.355 [main] ERROR me.retrodaredevil.solarthing.program.SolarMain - [LOG] Ending SolarThing. Jar: solarthing-2021.6.0.jar Java version: 11.0.11
2021-07-19 22:29:54.358 [main] ERROR me.retrodaredevil.solarthing.program.SolarMain - (Fatal)Got throwable
java.lang.UnsatisfiedLinkError: 'long com.fazecast.jSerialComm.SerialPort.openPortNative()'
	at com.fazecast.jSerialComm.SerialPort.openPortNative(Native Method) ~[solarthing-2021.6.0.jar:?]
	at com.fazecast.jSerialComm.SerialPort.openPort(SerialPort.java:448) ~[solarthing-2021.6.0.jar:?]
	at me.retrodaredevil.io.serial.JSerialIOBundle.<init>(JSerialIOBundle.java:21) ~[solarthing-2021.6.0.jar:?]
	at me.retrodaredevil.solarthing.config.io.SerialIOConfig.createIOBundle(SerialIOConfig.java:46) ~[solarthing-2021.6.0.jar:?]
	at me.retrodaredevil.solarthing.io.ReloadableIOBundle.reload(ReloadableIOBundle.java:55) ~[solarthing-2021.6.0.jar:?]
	at me.retrodaredevil.solarthing.io.ReloadableIOBundle.<init>(ReloadableIOBundle.java:30) ~[solarthing-2021.6.0.jar:?]
	at me.retrodaredevil.solarthing.config.request.modbus.ModbusDataRequester.create(ModbusDataRequester.java:43) ~[solarthing-2021.6.0.jar:?]
	at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:54) ~[solarthing-2021.6.0.jar:?]
	at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:39) ~[solarthing-2021.6.0.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:128) [solarthing-2021.6.0.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:170) [solarthing-2021.6.0.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:209) [solarthing-2021.6.0.jar:?]

phocos any-grid inverter supported?

i own a phocos anygrid solar inverter that has a built in mppt solar charge controller. it has an rs-232 interface which i hope i can use woth a raspbery pi to get data into home assistant.

https://www.phocos.com/product/psw-h-hybrid-inverter-charger/

https://web.archive.org/web/20200919221625/https://www.phocos.com/wp-content/uploads/2019/10/Any-Grid_PSW-H_EN-manual_2020-07-29.pdf

i have tried to follow your instructions but i am getting

solarthing check --port /dev/ttyUSB0 --type tracer --modbus 1 --scan Going to open serial port using default serial configuration... Successfully opened serial port... Checking on address: 1 Got timeout. This means that the modbus address is incorrect or that the cable is not functioning properly.

function code=0x83 data='02'

Getting this error when trying to run solarthing for the first time.

2022-05-26 19:19:18.301 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4.725 seconds
2022-05-26 19:19:23.279 [main] ERROR me.retrodaredevil.solarthing.program.receiver.ModbusListUpdaterWrapper - Modbus exception
me.retrodaredevil.io.modbus.handling.ErrorCodeException: Expected to get 3 as the function code, but actually got 131. With exception code 2
at me.retrodaredevil.io.modbus.handling.HandleResponseHelper.checkResponse(HandleResponseHelper.java:17) ~[solarthing-2022.2.0.jar:?]
at me.retrodaredevil.io.modbus.handling.BaseReadRegisters.handleResponse(BaseReadRegisters.java:52) ~[solarthing-2022.2.0.jar:?]
at me.retrodaredevil.io.modbus.handling.BaseReadRegisters.handleResponse(BaseReadRegisters.java:11) ~[solarthing-2022.2.0.jar:?]
at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:25) ~[solarthing-2022.2.0.jar:?]
at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:38) ~[solarthing-2022.2.0.jar:?]
at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheHolding(ModbusCacheSlave.java:47) ~[solarthing-2022.2.0.jar:?]
at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheHoldingRangeInclusive(ModbusCacheSlave.java:50) ~[solarthing-2022.2.0.jar:?]
at me.retrodaredevil.solarthing.config.request.modbus.RoverModbusRequester.cacheRegisters(RoverModbusRequester.java:66) ~[solarthing-2022.2.0.jar:?]
at me.retrodaredevil.solarthing.config.request.modbus.RoverModbusRequester.lambda$create$0(RoverModbusRequester.java:81) ~[solarthing-2022.2.0.jar:?]
at me.retrodaredevil.solarthing.program.receiver.ModbusListUpdaterWrapper.receive(ModbusListUpdaterWrapper.java:57) [solarthing-2022.2.0.jar:?]
at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:20) [solarthing-2022.2.0.jar:?]
at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:20) [solarthing-2022.2.0.jar:?]
at me.retrodaredevil.solarthing.program.RequestMain.doRequest(RequestMain.java:76) [solarthing-2022.2.0.jar:?]
at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:70) [solarthing-2022.2.0.jar:?]
at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:40) [solarthing-2022.2.0.jar:?]
at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:145) [solarthing-2022.2.0.jar:?]
at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:187) [solarthing-2022.2.0.jar:?]
at me.retrodaredevil.solarthing.program.SolarMain.determineMainSubprogram(SolarMain.java:246) [solarthing-2022.2.0.jar:?]
at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:256) [solarthing-2022.2.0.jar:?]
2022-05-26 19:19:23.302 [main] INFO me.retrodaredevil.solarthing.program.receiver.ModbusListUpdaterWrapper - Communication with rover working well. Got this response back: function code=0x83 data='02' feel free to open issue at https://github.com/wildmountainfarms/solarthing/issues/
2022-05-26 19:19:23.304 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4.723 seconds

Installing CouchDB

I am using raspberry pi 0. I am unable to install couchdb using the solarthing.jar
i am getting the following:

pi@raspberrypi:/opt/solarthing/program/request/config $ java -jar ../solarthing.jar --couchdb-setup config/couchdb.json
Error: Unable to access jarfile ../solarthing.jar

Error starting solarthing-graphql

After updating to solarthing-2022.3.1.jar I am seeing the following error when trying to startup solarthing-graphql. Are there any other updates that my system needs?

java -version
openjdk version "11.0.15" 2022-04-19
OpenJDK Runtime Environment (build 11.0.15+10-Ubuntu-0ubuntu0.20.04.1)
OpenJDK 64-Bit Server VM (build 11.0.15+10-Ubuntu-0ubuntu0.20.04.1, mixed mode, sharing)

/opt/solarthing/program/graphql/run.sh

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::                (v2.6.6)

2022-07-11 22:25:47.900  INFO [           main] m.r.s.r.SolarThingGraphQLApplication     : Starting SolarThingGraphQLApplication using Java 11.0.15 on nanoiot with PID 1973 (/opt/solarthing/program/.downloads/solarthing-graphql-2022.3.1.jar started by gecko951 in /opt/solarthing/program/graphql)
2022-07-11 22:25:47.908 DEBUG [           main] m.r.s.r.SolarThingGraphQLApplication     : Running with Spring Boot v2.6.6, Spring v5.3.18
2022-07-11 22:25:47.910  INFO [           main] m.r.s.r.SolarThingGraphQLApplication     : No active profile set, falling back to 1 default profile: "default"
2022-07-11 22:25:48.965  INFO [           main] o.s.b.w.e.t.TomcatWebServer              : Tomcat initialized with port(s): 8080 (http)
2022-07-11 22:25:48.987  INFO [           main] o.a.c.h.Http11NioProtocol                : Initializing ProtocolHandler ["http-nio-8080"]
2022-07-11 22:25:48.988  INFO [           main] o.a.c.c.StandardService                  : Starting service [Tomcat]
2022-07-11 22:25:48.989  INFO [           main] o.a.c.c.StandardEngine                   : Starting Servlet engine: [Apache Tomcat/9.0.60]
2022-07-11 22:25:49.081  INFO [           main] o.a.c.c.C.[.[.[/]                        : Initializing Spring embedded WebApplicationContext
2022-07-11 22:25:49.081  INFO [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 1121 ms
2022-07-11 22:25:49.169 DEBUG [           main] m.r.s.r.CommonProvider                   : Using defaultInstanceOptions=DefaultInstanceOptions(defaultSourceId='<UNUSED SOURCE ID THAT WILL NEVER BE IN A PACKET>', defaultFragmentId=0)
2022-07-11 22:25:49.169 DEBUG [           main] m.r.s.r.CommonProvider                   : Database file: /opt/solarthing/program/rover/config/couchdb/couchdb.json
2022-07-11 22:25:49.170 DEBUG [           main] m.r.s.r.CommonProvider                   : Working directory: /opt/solarthing/program/graphql/.
2022-07-11 22:25:49.337  WARN [           main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'commandHandlerProvider' defined in URL [jar:file:/opt/solarthing/program/.downloads/solarthing-graphql-2022.3.1.jar!/BOOT-INF/classes!/me/retrodaredevil/solarthing/rest/command/CommandHandlerProvider.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'commonProvider': Invocation of init method failed; nested exception is java.lang.RuntimeException: Couldn't parse data!
2022-07-11 22:25:49.339  INFO [           main] o.a.c.c.StandardService                  : Stopping service [Tomcat]
2022-07-11 22:25:49.362  INFO [           main] ConditionEvaluationReportLoggingListener :

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2022-07-11 22:25:49.379 ERROR [           main] o.s.b.SpringApplication                  : Application run failed

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'commandHandlerProvider' defined in URL [jar:file:/opt/solarthing/program/.downloads/solarthing-graphql-2022.3.1.jar!/BOOT-INF/classes!/me/retrodaredevil/solarthing/rest/command/CommandHandlerProvider.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'commonProvider': Invocation of init method failed; nested exception is java.lang.RuntimeException: Couldn't parse data!
        at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:800) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:229) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1372) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1222) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:953) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918) ~[spring-context-5.3.18.jar!/:5.3.18]
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:583) ~[spring-context-5.3.18.jar!/:5.3.18]
        at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:145) ~[spring-boot-2.6.6.jar!/:2.6.6]
        at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:740) ~[spring-boot-2.6.6.jar!/:2.6.6]
        at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:415) ~[spring-boot-2.6.6.jar!/:2.6.6]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) ~[spring-boot-2.6.6.jar!/:2.6.6]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1312) ~[spring-boot-2.6.6.jar!/:2.6.6]
        at org.springframework.boot.SpringApplication.run(SpringApplication.java:1301) ~[spring-boot-2.6.6.jar!/:2.6.6]
        at me.retrodaredevil.solarthing.rest.SolarThingGraphQLApplication.main(SolarThingGraphQLApplication.java:10) ~[classes!/:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
        at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) ~[solarthing-graphql-2022.3.1.jar:?]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:108) ~[solarthing-graphql-2022.3.1.jar:?]
        at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) ~[solarthing-graphql-2022.3.1.jar:?]
        at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:88) ~[solarthing-graphql-2022.3.1.jar:?]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'commonProvider': Invocation of init method failed; nested exception is java.lang.RuntimeException: Couldn't parse data!
        at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:160) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:440) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:410) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1389) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1309) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:887) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) ~[spring-beans-5.3.18.jar!/:5.3.18]
        ... 27 more
Caused by: java.lang.RuntimeException: Couldn't parse data!
        at me.retrodaredevil.solarthing.rest.CommonProvider.init(CommonProvider.java:76) ~[classes!/:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
        at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:440) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:410) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1389) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1309) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:887) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) ~[spring-beans-5.3.18.jar!/:5.3.18]
        ... 27 more
Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Unknown properties: [socket_timeout]
 at [Source: (FileInputStream); line: 21, column: 3]
        at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:63) ~[jackson-databind-2.13.3.jar!/:2.13.3]
        at me.retrodaredevil.solarthing.jackson.UnwrappedDeserializeHelper.assertNoUnknown(UnwrappedDeserializeHelper.java:50) ~[core-0.0.1-SNAPSHOT.jar!/:?]
        at me.retrodaredevil.solarthing.jackson.UnwrappedDeserializer.deserialize(UnwrappedDeserializer.java:27) ~[core-0.0.1-SNAPSHOT.jar!/:?]
        at com.fasterxml.jackson.databind.jsontype.impl.AsArrayTypeDeserializer._deserialize(AsArrayTypeDeserializer.java:120) ~[jackson-databind-2.13.3.jar!/:2.13.3]
        at com.fasterxml.jackson.databind.jsontype.impl.AsArrayTypeDeserializer.deserializeTypedFromObject(AsArrayTypeDeserializer.java:61) ~[jackson-databind-2.13.3.jar!/:2.13.3]
        at com.fasterxml.jackson.databind.deser.AbstractDeserializer.deserializeWithType(AbstractDeserializer.java:263) ~[jackson-databind-2.13.3.jar!/:2.13.3]
        at com.fasterxml.jackson.databind.deser.impl.FieldProperty.deserializeAndSet(FieldProperty.java:147) ~[jackson-databind-2.13.3.jar!/:2.13.3]
        at com.fasterxml.jackson.databind.deser.impl.ExternalTypeHandler._deserializeAndSet(ExternalTypeHandler.java:386) ~[jackson-databind-2.13.3.jar!/:2.13.3]
        at com.fasterxml.jackson.databind.deser.impl.ExternalTypeHandler.handlePropertyValue(ExternalTypeHandler.java:190) ~[jackson-databind-2.13.3.jar!/:2.13.3]
        at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithExternalTypeId(BeanDeserializer.java:983) ~[jackson-databind-2.13.3.jar!/:2.13.3]
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeWithExternalTypeId(BeanDeserializer.java:948) ~[jackson-databind-2.13.3.jar!/:2.13.3]
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeWithExternalTypeId(BeanDeserializer.java:941) ~[jackson-databind-2.13.3.jar!/:2.13.3]
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:349) ~[jackson-databind-2.13.3.jar!/:2.13.3]
        at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:184) ~[jackson-databind-2.13.3.jar!/:2.13.3]
        at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:323) ~[jackson-databind-2.13.3.jar!/:2.13.3]
        at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4674) ~[jackson-databind-2.13.3.jar!/:2.13.3]
        at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3666) ~[jackson-databind-2.13.3.jar!/:2.13.3]
        at me.retrodaredevil.solarthing.rest.CommonProvider.init(CommonProvider.java:74) ~[classes!/:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
        at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:389) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:333) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:157) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:440) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1796) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:620) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:410) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1352) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1195) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:582) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:542) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:335) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:333) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1389) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1309) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:887) ~[spring-beans-5.3.18.jar!/:5.3.18]
        at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:791) ~[spring-beans-5.3.18.jar!/:5.3.18]
        ... 27 more

error in pvoutput

Hi Joshua,

please have a lock:

thanks for checking

suspect error I found:

Going to do stuff now.
2021-04-01 11:15:27.788 [main] ERROR me.retrodaredevil.solarthing.program.SolarMain - (Fatal)Got throwable
java.lang.ClassCastException: class com.fasterxml.jackson.databind.node.NullNode cannot be cast to class com.fasterxml.jackson.databind.node.ObjectNode (com.fasterxml.jackson.databind.node.NullNode and com.fasterxml.jackson.databind.node.ObjectNode are in unnamed module of loader 'app')
	at me.retrodaredevil.solarthing.couchdb.CouchDbQueryHandler.query(CouchDbQueryHandler.java:34) ~[solarthing-2021.3.2.jar:?]
	at me.retrodaredevil.solarthing.program.pvoutput.PVOutputUploadMain.startRealTimeProgram(PVOutputUploadMain.java:285) ~[solarthing-2021.3.2.jar:?]
	at me.retrodaredevil.solarthing.program.pvoutput.PVOutputUploadMain.startPVOutputUpload(PVOutputUploadMain.java:118) ~[solarthing-2021.3.2.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199) [solarthing-2021.3.2.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:235) [solarthing-2021.3.2.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:263) [solarthing-2021.3.2.jar:?]
2021-04-01 11:15:27.828 [main] DEBUG me.retrodaredevil.solarthing.program.SolarMain - Going to shutdown LogManager.

full log :

./run.sh
Using base config = config/base.json
2021-04-01 11:24:34,074 main ERROR Unable to create file logs/log_debug.log java.io.IOException: Permission denied
        at java.base/java.io.UnixFileSystem.createFileExclusively(Native Method)
        at java.base/java.io.File.createNewFile(File.java:1026)
        at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:665)
        at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:648)
        at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:113)
        at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:100)
        at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:205)
        at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:146)
        at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:62)
        at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1002)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:942)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:934)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:552)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:241)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:288)
        at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:622)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:695)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:712)
        at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:267)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:155)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
        at org.apache.logging.log4j.LogManager.getContext(LogManager.java:196)
        at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:137)
        at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:45)
        at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:47)
        at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:30)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:363)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:388)
        at me.retrodaredevil.solarthing.program.SolarMain.<clinit>(SolarMain.java:61)

2021-04-01 11:24:34,125 main ERROR Could not create plugin of type class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile: java.lang.IllegalStateException: ManagerFactory [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory@14646ef] unable to create manager for [logs/log_debug.log] with data [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$FactoryData@5ffe9e[pattern=logs/log_debug_%d{yyyy.MM.dd}-%i.log.gz, append=true, bufferedIO=true, bufferSize=16384, policy=CompositeTriggeringPolicy(policies=[OnStartupTriggeringPolicy, TimeBasedTriggeringPolicy(nextRolloverMillis=0, interval=1, modulate=true), SizeBasedTriggeringPolicy(size=3221225472)]), strategy=DefaultRolloverStrategy(min=1, max=1, useMax=true), advertiseURI=null, layout=%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n, filePermissions=rw-rw-r--, fileOwner=null]] java.lang.IllegalStateException: ManagerFactory [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory@14646ef] unable to create manager for [logs/log_debug.log] with data [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$FactoryData@5ffe9e[pattern=logs/log_debug_%d{yyyy.MM.dd}-%i.log.gz, append=true, bufferedIO=true, bufferSize=16384, policy=CompositeTriggeringPolicy(policies=[OnStartupTriggeringPolicy, TimeBasedTriggeringPolicy(nextRolloverMillis=0, interval=1, modulate=true), SizeBasedTriggeringPolicy(size=3221225472)]), strategy=DefaultRolloverStrategy(min=1, max=1, useMax=true), advertiseURI=null, layout=%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n, filePermissions=rw-rw-r--, fileOwner=null]]
        at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:115)
        at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:100)
        at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:205)
        at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:146)
        at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:62)
        at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1002)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:942)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:934)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:552)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:241)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:288)
        at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:622)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:695)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:712)
        at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:267)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:155)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
        at org.apache.logging.log4j.LogManager.getContext(LogManager.java:196)
        at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:137)
        at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:45)
        at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:47)
        at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:30)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:363)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:388)
        at me.retrodaredevil.solarthing.program.SolarMain.<clinit>(SolarMain.java:61)

2021-04-01 11:24:34,161 main ERROR Unable to invoke factory method in class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile: java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender
        at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.findFactoryMethod(PluginBuilder.java:234)
        at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:134)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1002)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:942)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:934)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:552)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:241)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:288)
        at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:622)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:695)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:712)
        at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:267)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:155)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
        at org.apache.logging.log4j.LogManager.getContext(LogManager.java:196)
        at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:137)
        at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:45)
        at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:47)
        at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:30)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:363)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:388)
        at me.retrodaredevil.solarthing.program.SolarMain.<clinit>(SolarMain.java:61)

2021-04-01 11:24:34,243 main ERROR Unable to create file logs/log_info.log java.io.IOException: Permission denied
        at java.base/java.io.UnixFileSystem.createFileExclusively(Native Method)
        at java.base/java.io.File.createNewFile(File.java:1026)
        at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:665)
        at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:648)
        at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:113)
        at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:100)
        at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:205)
        at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:146)
        at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:62)
        at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1002)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:942)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:934)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:552)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:241)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:288)
        at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:622)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:695)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:712)
        at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:267)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:155)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
        at org.apache.logging.log4j.LogManager.getContext(LogManager.java:196)
        at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:137)
        at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:45)
        at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:47)
        at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:30)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:363)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:388)
        at me.retrodaredevil.solarthing.program.SolarMain.<clinit>(SolarMain.java:61)

2021-04-01 11:24:34,255 main ERROR Could not create plugin of type class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile: java.lang.IllegalStateException: ManagerFactory [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory@14646ef] unable to create manager for [logs/log_info.log] with data [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$FactoryData@16f2a7e[pattern=logs/log_info_%d{yyyy.MM.dd}-%i.log.gz, append=true, bufferedIO=true, bufferSize=8192, policy=CompositeTriggeringPolicy(policies=[OnStartupTriggeringPolicy, TimeBasedTriggeringPolicy(nextRolloverMillis=0, interval=1, modulate=true), SizeBasedTriggeringPolicy(size=3221225472)]), strategy=DefaultRolloverStrategy(min=1, max=7, useMax=true), advertiseURI=null, layout=%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n, filePermissions=rw-rw-r--, fileOwner=null]] java.lang.IllegalStateException: ManagerFactory [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory@14646ef] unable to create manager for [logs/log_info.log] with data [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$FactoryData@16f2a7e[pattern=logs/log_info_%d{yyyy.MM.dd}-%i.log.gz, append=true, bufferedIO=true, bufferSize=8192, policy=CompositeTriggeringPolicy(policies=[OnStartupTriggeringPolicy, TimeBasedTriggeringPolicy(nextRolloverMillis=0, interval=1, modulate=true), SizeBasedTriggeringPolicy(size=3221225472)]), strategy=DefaultRolloverStrategy(min=1, max=7, useMax=true), advertiseURI=null, layout=%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n, filePermissions=rw-rw-r--, fileOwner=null]]
        at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:115)
        at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:100)
        at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:205)
        at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:146)
        at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:62)
        at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1002)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:942)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:934)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:552)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:241)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:288)
        at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:622)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:695)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:712)
        at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:267)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:155)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
        at org.apache.logging.log4j.LogManager.getContext(LogManager.java:196)
        at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:137)
        at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:45)
        at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:47)
        at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:30)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:363)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:388)
        at me.retrodaredevil.solarthing.program.SolarMain.<clinit>(SolarMain.java:61)

2021-04-01 11:24:34,265 main ERROR Unable to invoke factory method in class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile: java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender
        at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.findFactoryMethod(PluginBuilder.java:234)
        at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:134)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1002)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:942)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:934)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:552)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:241)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:288)
        at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:622)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:695)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:712)
        at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:267)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:155)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
        at org.apache.logging.log4j.LogManager.getContext(LogManager.java:196)
        at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:137)
        at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:45)
        at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:47)
        at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:30)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:363)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:388)
        at me.retrodaredevil.solarthing.program.SolarMain.<clinit>(SolarMain.java:61)

2021-04-01 11:24:34,317 main ERROR Unable to create file logs/log_summary.log java.io.IOException: Permission denied
        at java.base/java.io.UnixFileSystem.createFileExclusively(Native Method)
        at java.base/java.io.File.createNewFile(File.java:1026)
        at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:665)
        at org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory.createManager(RollingFileManager.java:648)
        at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:113)
        at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:100)
        at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:205)
        at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:146)
        at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:62)
        at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1002)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:942)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:934)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:552)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:241)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:288)
        at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:622)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:695)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:712)
        at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:267)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:155)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
        at org.apache.logging.log4j.LogManager.getContext(LogManager.java:196)
        at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:137)
        at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:45)
        at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:47)
        at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:30)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:363)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:388)
        at me.retrodaredevil.solarthing.program.SolarMain.<clinit>(SolarMain.java:61)

2021-04-01 11:24:34,328 main ERROR Could not create plugin of type class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile: java.lang.IllegalStateException: ManagerFactory [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory@14646ef] unable to create manager for [logs/log_summary.log] with data [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$FactoryData@59ca5e[pattern=logs/log_summary_%d{yyyy.MM.dd}-%i.log.gz, append=true, bufferedIO=true, bufferSize=8192, policy=CompositeTriggeringPolicy(policies=[OnStartupTriggeringPolicy, TimeBasedTriggeringPolicy(nextRolloverMillis=0, interval=1, modulate=true), SizeBasedTriggeringPolicy(size=3221225472)]), strategy=DefaultRolloverStrategy(min=1, max=7, useMax=true), advertiseURI=null, layout=%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n, filePermissions=rw-rw-r--, fileOwner=null]] java.lang.IllegalStateException: ManagerFactory [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$RollingFileManagerFactory@14646ef] unable to create manager for [logs/log_summary.log] with data [org.apache.logging.log4j.core.appender.rolling.RollingFileManager$FactoryData@59ca5e[pattern=logs/log_summary_%d{yyyy.MM.dd}-%i.log.gz, append=true, bufferedIO=true, bufferSize=8192, policy=CompositeTriggeringPolicy(policies=[OnStartupTriggeringPolicy, TimeBasedTriggeringPolicy(nextRolloverMillis=0, interval=1, modulate=true), SizeBasedTriggeringPolicy(size=3221225472)]), strategy=DefaultRolloverStrategy(min=1, max=7, useMax=true), advertiseURI=null, layout=%d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n, filePermissions=rw-rw-r--, fileOwner=null]]
        at org.apache.logging.log4j.core.appender.AbstractManager.getManager(AbstractManager.java:115)
        at org.apache.logging.log4j.core.appender.OutputStreamManager.getManager(OutputStreamManager.java:100)
        at org.apache.logging.log4j.core.appender.rolling.RollingFileManager.getFileManager(RollingFileManager.java:205)
        at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:146)
        at org.apache.logging.log4j.core.appender.RollingFileAppender$Builder.build(RollingFileAppender.java:62)
        at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:122)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1002)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:942)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:934)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:552)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:241)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:288)
        at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:622)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:695)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:712)
        at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:267)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:155)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
        at org.apache.logging.log4j.LogManager.getContext(LogManager.java:196)
        at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:137)
        at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:45)
        at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:47)
        at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:30)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:363)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:388)
        at me.retrodaredevil.solarthing.program.SolarMain.<clinit>(SolarMain.java:61)

2021-04-01 11:24:34,340 main ERROR Unable to invoke factory method in class org.apache.logging.log4j.core.appender.RollingFileAppender for element RollingFile: java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender java.lang.IllegalStateException: No factory method found for class org.apache.logging.log4j.core.appender.RollingFileAppender
        at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.findFactoryMethod(PluginBuilder.java:234)
        at org.apache.logging.log4j.core.config.plugins.util.PluginBuilder.build(PluginBuilder.java:134)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createPluginObject(AbstractConfiguration.java:1002)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:942)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.createConfiguration(AbstractConfiguration.java:934)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.doConfigure(AbstractConfiguration.java:552)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.initialize(AbstractConfiguration.java:241)
        at org.apache.logging.log4j.core.config.AbstractConfiguration.start(AbstractConfiguration.java:288)
        at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:622)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:695)
        at org.apache.logging.log4j.core.LoggerContext.reconfigure(LoggerContext.java:712)
        at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:267)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:155)
        at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
        at org.apache.logging.log4j.LogManager.getContext(LogManager.java:196)
        at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getContext(AbstractLoggerAdapter.java:137)
        at org.apache.logging.slf4j.Log4jLoggerFactory.getContext(Log4jLoggerFactory.java:45)
        at org.apache.logging.log4j.spi.AbstractLoggerAdapter.getLogger(AbstractLoggerAdapter.java:47)
        at org.apache.logging.slf4j.Log4jLoggerFactory.getLogger(Log4jLoggerFactory.java:30)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:363)
        at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:388)
        at me.retrodaredevil.solarthing.program.SolarMain.<clinit>(SolarMain.java:61)

2021-04-01 11:24:34,354 main ERROR Null object returned for RollingFile in Appenders.
2021-04-01 11:24:34,357 main ERROR Null object returned for RollingFile in Appenders.
2021-04-01 11:24:34,360 main ERROR Null object returned for RollingFile in Appenders.
2021-04-01 11:24:34,481 main ERROR Unable to locate appender "logAll" for logger config "org.influxdb"
2021-04-01 11:24:34,484 main ERROR Unable to locate appender "logAll" for logger config "org.ektorp"
2021-04-01 11:24:34,488 main ERROR Unable to locate appender "logAll" for logger config "com.slack.api"
2021-04-01 11:24:34,490 main ERROR Unable to locate appender "logAll" for logger config "me.retrodaredevil.solarthing"
2021-04-01 11:24:34,493 main ERROR Unable to locate appender "logInfo" for logger config "me.retrodaredevil.solarthing"
2021-04-01 11:24:34,496 main ERROR Unable to locate appender "logSummary" for logger config "me.retrodaredevil.solarthing"
2021-04-01 11:24:34,499 main ERROR Unable to locate appender "logAll" for logger config "org.apache.http"
2021-04-01 11:24:37.465 [main] INFO  me.retrodaredevil.solarthing.program.SolarMain - [LOG] Beginning main. Jar: solarthing-2021.3.2.jar Java version: 11.0.9.1
[stdout] Beginning main. Jar: solarthing-2021.3.2.jar Java version: 11.0.9.1
[stderr] Beginning main. Jar: solarthing-2021.3.2.jar Java version: 11.0.9.1
2021-04-01 11:24:38.398 [main] INFO  me.retrodaredevil.solarthing.program.SolarMain - Using base configuration file: config/base.json
2021-04-01 11:24:39.535 [main] INFO  me.retrodaredevil.solarthing.program.pvoutput.PVOutputUploadMain - Starting PV Output upload program
2021-04-01 11:24:39.644 [main] INFO  me.retrodaredevil.solarthing.program.pvoutput.PVOutputUploadMain - Using time zone: Central European Standard Time
2021-04-01 11:24:39.646 [main] INFO  me.retrodaredevil.solarthing.program.pvoutput.PVOutputUploadMain - Using default instance options: DefaultInstanceOptions(defaultSourceId='default', defaultFragmentId=0)
2021-04-01 11:24:45.590 [main] INFO  me.retrodaredevil.solarthing.analytics.AnalyticsManager - Google Analytics is ENABLED!
2021-04-01 11:24:45.626 [main] DEBUG me.retrodaredevil.solarthing.analytics.AnalyticsManager - Using Analytics UUID: 31d5731e-1e09-43b1-91d0-1c254030919e
2021-04-01 11:24:46.922 [main] INFO  me.retrodaredevil.solarthing.analytics.AnalyticsManager - Sending program type to Google Analytics
2021-04-01 11:24:46.950 [main] INFO  me.retrodaredevil.solarthing.program.pvoutput.PVOutputUploadMain - Going to join SolarThing team...
2021-04-01 11:24:47.095 [main] DEBUG me.retrodaredevil.solarthing.program.pvoutput.PVOutputUploadMain - Executing call
2021-04-01 11:24:47.228 [main] DEBUG me.retrodaredevil.solarthing.program.pvoutput.PVOutputUploadMain - --> GET https://pvoutput.org/service/r2/jointeam.jsp?tid=1528
2021-04-01 11:24:52.386 [main] DEBUG me.retrodaredevil.solarthing.program.pvoutput.PVOutputUploadMain - <-- 400 Bad Request https://pvoutput.org/service/r2/jointeam.jsp?tid=1528 (5156ms, unknown-length body)
2021-04-01 11:24:52.425 [main] INFO  me.retrodaredevil.solarthing.program.pvoutput.PVOutputUploadMain - Already joined SolarThing team. Response: Bad request 400: You are already a member of 'SolarThing'
2021-04-01 11:24:52.427 [main] DEBUG me.retrodaredevil.solarthing.program.pvoutput.PVOutputUploadMain - Going to do stuff now.
2021-04-01 11:24:53.023 [main] ERROR me.retrodaredevil.solarthing.program.SolarMain - (Fatal)Got throwable
java.lang.ClassCastException: class com.fasterxml.jackson.databind.node.NullNode cannot be cast to class com.fasterxml.jackson.databind.node.ObjectNode (com.fasterxml.jackson.databind.node.NullNode and com.fasterxml.jackson.databind.node.ObjectNode are in unnamed module of loader 'app')
        at me.retrodaredevil.solarthing.couchdb.CouchDbQueryHandler.query(CouchDbQueryHandler.java:34) ~[solarthing-2021.3.2.jar:?]
        at me.retrodaredevil.solarthing.program.pvoutput.PVOutputUploadMain.startRealTimeProgram(PVOutputUploadMain.java:285) ~[solarthing-2021.3.2.jar:?]
        at me.retrodaredevil.solarthing.program.pvoutput.PVOutputUploadMain.startPVOutputUpload(PVOutputUploadMain.java:118) ~[solarthing-2021.3.2.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199) [solarthing-2021.3.2.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:235) [solarthing-2021.3.2.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:263) [solarthing-2021.3.2.jar:?]
2021-04-01 11:24:53.338 [main] DEBUG me.retrodaredevil.solarthing.program.SolarMain - Going to shutdown LogManager.

java.lang.ClassCastException: class com.fasterxml.jackson.databind.node.NullNode cannot be cast to class com.fasterxml.jackson.databind.node.ObjectNode (com.fasterxml.jackson.databind.node.NullNode and com.fasterxml.jackson.databind.node.ObjectNode are in unnamed module of loader 'app')
        at me.retrodaredevil.solarthing.couchdb.CouchDbQueryHandler.query(CouchDbQueryHandler.java:34)
        at me.retrodaredevil.solarthing.program.pvoutput.PVOutputUploadMain.startRealTimeProgram(PVOutputUploadMain.java:285)
        at me.retrodaredevil.solarthing.program.pvoutput.PVOutputUploadMain.startPVOutputUpload(PVOutputUploadMain.java:118)
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:199)
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:235)
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:263)

Throwing Modbus Error with Rover Elite

Hi Josh--I have installed SolarThing on my Rover Elite with a Raspberry Pi. I had no issues getting set up and accessing real time data using your Rover-Setup program and base.json. Your excellent software and write ups made this about as turn-key as this stuff gets. I had seen some commentary about using the Elite before--it does indeed use the same Modbus protocol, just over 485 with different pinouts.

I moved my project over to the standard Rover base.json, connected to CouchDB. I'm now throwing a repeating ModBus exception, and wanted to share it with you and see if you have any thoughts, is it a different value that the Elite returns as compared to another model Rover? Am I just missing something small in a config file?

Thanks

2021-01-03 23:54:09.214 [main] DEBUG me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave - Register: 57378 didn't have a cached value.
2021-01-03 23:54:09.273 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.handling.FunctionCodeException: Expected to get 3 as the function code, but actually got 131
	at me.retrodaredevil.io.modbus.handling.ReadHoldingRegisters.handleResponse(ReadHoldingRegisters.java:62) ~[solarthing-2020.5.1.jar:?]
	at me.retrodaredevil.io.modbus.handling.ReadHoldingRegisters.handleResponse(ReadHoldingRegisters.java:13) ~[solarthing-2020.5.1.jar:?]
	at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:25) ~[solarthing-2020.5.1.jar:?]
	at me.retrodaredevil.solarthing.solar.renogy.rover.modbus.RoverModbusSlaveRead.get(RoverModbusSlaveRead.java:40) ~[solarthing-2020.5.1.jar:?]
	at me.retrodaredevil.solarthing.solar.renogy.rover.modbus.RoverModbusSlaveRead.oneRegister(RoverModbusSlaveRead.java:43) ~[solarthing-2020.5.1.jar:?]
	at me.retrodaredevil.solarthing.solar.renogy.rover.modbus.RoverModbusSlaveRead.getWorkingHoursRaw(RoverModbusSlaveRead.java:377) ~[solarthing-2020.5.1.jar:?]
	at me.retrodaredevil.solarthing.solar.renogy.rover.RoverReadTable.getSensingBundle(RoverReadTable.java:472) ~[solarthing-2020.5.1.jar:?]
	at me.retrodaredevil.solarthing.solar.renogy.rover.RoverStatusPackets.createFromReadTable(RoverStatusPackets.java:46) ~[solarthing-2020.5.1.jar:?]
	at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:44) ~[solarthing-2020.5.1.jar:?]
	at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2020.5.1.jar:?]
	at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:112) ~[solarthing-2020.5.1.jar:?]
	at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:83) ~[solarthing-2020.5.1.jar:?]
	at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:153) [solarthing-2020.5.1.jar:?]
	at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:54) [solarthing-2020.5.1.jar:?]
	at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:112) [solarthing-2020.5.1.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:195) [solarthing-2020.5.1.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:253) [solarthing-2020.5.1.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:257) [solarthing-2020.5.1.jar:?]
2021-01-03 23:54:09.278 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4487ms

Battery Type change to 'User' on Rover caused Solarthing to fail

I am using a Renogy Rover 60A Li. Solarthing was working fantastic while I had the Rover setup with the Battery type as SLA.

I changed the battery type to USR yesterday, and found that Solarthing started to fail at that point. The log also reveals some sort of Immutable Battery Type.

This might be due to the Rover 60A Li being a little newer and having another enumeration type for the battery within the specification, since it also handles Lithium Ion, which wasn't on the original 20A and 40A.

I'm going to to my best to dig through the code to see if I can provide a pull request, however my Java skills aren't really there.

Thank you very much for an incredible project, I'd love to buy you a beer or EANAB (equally appealing non-alcoholic beverage)

config/base.json:

{
  "type": "rover",
  "source": "default",
  "analytics_enabled": false,
  "fragment": 2,
  "unique": 30,
  "databases": [
    "config/influxdb.json"
  ],
  "io": "config/default_linux_serial.json",
  "modbus": 1,
  "bulk_request": true,
  "extra_option_flags": [ "rpi_cpu_temp" ]
}

Log:

Using base config = config/base.json
2020-06-05 07:06:01.703 [main] INFO  me.retrodaredevil.solarthing.program.SolarMain - [LOG] Beginning main
[stdout] Beginning main
2020-06-05 07:06:02.328 [main] INFO  me.retrodaredevil.solarthing.program.RoverMain - Beginning rover program
2020-06-05 07:06:02.616 [main] INFO  me.retrodaredevil.solarthing.analytics.AnalyticsManager - Google Analytics is disabled
2020-06-05 07:06:03.522 [main] DEBUG me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave - Register: 57378 didn't have a cached value.
2020-06-05 07:06:03.605 [main] DEBUG me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave - Register: 57379 didn't have a cached value.
2020-06-05 07:06:03.688 [main] DEBUG me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave - Register: 57380 didn't have a cached value.
2020-06-05 07:06:03.771 [main] DEBUG me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave - Register: 57381 didn't have a cached value.
2020-06-05 07:06:03.858 [main] DEBUG me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave - Register: 57382 didn't have a cached value.
2020-06-05 07:06:03.946 [main] DEBUG me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave - Register: 57383 didn't have a cached value.
2020-06-05 07:06:04.030 [main] DEBUG me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave - Register: 57384 didn't have a cached value.
2020-06-05 07:06:04.110 [main] DEBUG me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave - Register: 57385 didn't have a cached value.
2020-06-05 07:06:04.194 [main] DEBUG me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave - Register: 57386 didn't have a cached value.
2020-06-05 07:06:04.274 [main] DEBUG me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave - Register: 57387 didn't have a cached value.
2020-06-05 07:06:04.358 [main] DEBUG me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave - Register: 57388 didn't have a cached value.
2020-06-05 07:06:04.443 [main] DEBUG me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave - Register: 57389 didn't have a cached value.
2020-06-05 07:06:04.563 [main] DEBUG me.retrodaredevil.solarthing.program.RoverMain - Debugging special power control values: (Will debug all packets later)
charging mode controlled by voltage: false
	special power control: disabled
	each night on: disabled
	no charging below 0C: enabled
	charging method: PWM
intelligent power: disabled
	each night on: disabled
	battery type: lead-acid
	charging method: PWM
	no charging below 0C: disabled
	system voltage: 12V
2020-06-05 07:06:04.568 [main] DEBUG me.retrodaredevil.solarthing.program.RoverMain - took 1665ms to read from Rover
2020-06-05 07:06:04.688 [main] DEBUG me.retrodaredevil.solarthing.program.RoverMain - Debugging all packets
2020-06-05 07:06:05.121 [main] DEBUG me.retrodaredevil.solarthing.program.RoverMain - Never mind about that...
com.fasterxml.jackson.databind.JsonMappingException: valueCode: 0 not found in enum: class me.retrodaredevil.solarthing.solar.renogy.BatteryType (through reference chain: java.util.ArrayList[0]->me.retrodaredevil.solarthing.solar.renogy.rover.ImmutableRoverStatusPacket["batteryTypeName"])
	at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:397) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:356) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ser.std.StdSerializer.wrapAndThrow(StdSerializer.java:316) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:731) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:166) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:119) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:79) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:18) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ObjectWriter$Prefetch.serialize(ObjectWriter.java:1513) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ObjectWriter._configAndWriteValue(ObjectWriter.java:1215) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ObjectWriter.writeValueAsString(ObjectWriter.java:1085) ~[solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.program.RoverMain.lambda$connectRover$2(RoverMain.java:130) ~[solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:20) ~[solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.program.PacketListReceiverHandler.pack(PacketListReceiverHandler.java:62) ~[solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.program.PacketListReceiverHandler.lambda$new$1(PacketListReceiverHandler.java:47) ~[solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:20) ~[solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$0(RoverMain.java:86) ~[solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:191) [solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:50) [solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:150) [solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:194) [solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:210) [solarthing-2020.2.1.jar:?]
Caused by: java.util.NoSuchElementException: valueCode: 0 not found in enum: class me.retrodaredevil.solarthing.solar.renogy.BatteryType
	at me.retrodaredevil.solarthing.packets.Modes.getActiveMode(Modes.java:56) ~[solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.solar.renogy.rover.RoverReadTable.getBatteryType(RoverReadTable.java:344) ~[solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.solar.renogy.rover.RoverReadTable.getBatteryTypeName(RoverReadTable.java:346) ~[solarthing-2020.2.1.jar:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
	at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:689) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:723) ~[solarthing-2020.2.1.jar:?]
	... 20 more
2020-06-05 07:06:07.378 [main] INFO  org.influxdb - --> POST http://debian.arf.io:8086/query?q=CREATE+DATABASE+default_database (0-byte body)
2020-06-05 07:06:07.572 [main] INFO  org.influxdb - <-- 200 OK http://debian.arf.io:8086/query?q=CREATE+DATABASE+default_database (192ms, unknown-length body)
2020-06-05 07:06:07.594 [main] INFO  org.influxdb - --> POST http://debian.arf.io:8086/query?q=CREATE+RETENTION+POLICY+%22medium_duration_retention%22+ON+%22default_database%22+DURATION+4w+REPLICATION+1+DEFAULT (0-byte body)
2020-06-05 07:06:07.605 [main] INFO  org.influxdb - <-- 200 OK http://debian.arf.io:8086/query?q=CREATE+RETENTION+POLICY+%22medium_duration_retention%22+ON+%22default_database%22+DURATION+4w+REPLICATION+1+DEFAULT (9ms, unknown-length body)
2020-06-05 07:06:07.841 [main] ERROR me.retrodaredevil.solarthing.program.RoverMain - (Fatal)Got exception!
java.lang.IllegalArgumentException: valueCode: 0 not found in enum: class me.retrodaredevil.solarthing.solar.renogy.BatteryType (through reference chain: me.retrodaredevil.solarthing.solar.renogy.rover.ImmutableRoverStatusPacket["batteryTypeName"])
	at com.fasterxml.jackson.databind.ObjectMapper.valueToTree(ObjectMapper.java:3198) ~[solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.influxdb.InfluxDbPacketSaver.handle(InfluxDbPacketSaver.java:170) ~[solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.packets.handling.ThrottleFactorPacketHandler.handle(ThrottleFactorPacketHandler.java:36) ~[solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.packets.handling.PacketHandlerMultiplexer.handle(PacketHandlerMultiplexer.java:29) ~[solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.program.PacketListReceiverHandler.handle(PacketListReceiverHandler.java:71) ~[solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.program.PacketListReceiverHandler.lambda$new$2(PacketListReceiverHandler.java:56) ~[solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:20) ~[solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$0(RoverMain.java:86) ~[solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:191) [solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:50) [solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:150) [solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:194) [solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:210) [solarthing-2020.2.1.jar:?]
Caused by: com.fasterxml.jackson.databind.JsonMappingException: valueCode: 0 not found in enum: class me.retrodaredevil.solarthing.solar.renogy.BatteryType (through reference chain: me.retrodaredevil.solarthing.solar.renogy.rover.ImmutableRoverStatusPacket["batteryTypeName"])
	at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:397) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:356) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ser.std.StdSerializer.wrapAndThrow(StdSerializer.java:316) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:731) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeWithType(BeanSerializerBase.java:608) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ser.impl.TypeWrappedSerializer.serialize(TypeWrappedSerializer.java:32) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ObjectMapper.writeValue(ObjectMapper.java:3024) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ObjectMapper.valueToTree(ObjectMapper.java:3193) ~[solarthing-2020.2.1.jar:?]
	... 12 more
Caused by: java.util.NoSuchElementException: valueCode: 0 not found in enum: class me.retrodaredevil.solarthing.solar.renogy.BatteryType
	at me.retrodaredevil.solarthing.packets.Modes.getActiveMode(Modes.java:56) ~[solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.solar.renogy.rover.RoverReadTable.getBatteryType(RoverReadTable.java:344) ~[solarthing-2020.2.1.jar:?]
	at me.retrodaredevil.solarthing.solar.renogy.rover.RoverReadTable.getBatteryTypeName(RoverReadTable.java:346) ~[solarthing-2020.2.1.jar:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
	at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:689) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:723) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeWithType(BeanSerializerBase.java:608) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ser.impl.TypeWrappedSerializer.serialize(TypeWrappedSerializer.java:32) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ObjectMapper.writeValue(ObjectMapper.java:3024) ~[solarthing-2020.2.1.jar:?]
	at com.fasterxml.jackson.databind.ObjectMapper.valueToTree(ObjectMapper.java:3193) ~[solarthing-2020.2.1.jar:?]
	... 12 more

add more data from modbus read

Hi Joshua,

is it possible to add field to be retrieved from device.

my model is having also alternator information.

https://www.renogy.com/dcc50s-12v-50a-dc-dc-on-board-battery-charger-with-mppt/

I did get those via a python program: for example:

`altVoltage = instrument.read_register(260,1)
altAmps = instrument.read_register(261,2)
altWatts = instrument.read_register(262)
accum_gen_power_wh = instrument.read_register(284,2)

Error Codes

errorCodesLow = instrument.read_register(257)
errorCtrlOverTemp2 = ( errorCodesLow & 0b0000000000010000) > 0
errorAltInputOverCurrent = (errorCodesLow & 0b0000000000100000) > 0
errorAltInputOverVolt = (errorCodesLow & 0b0000000100000000) > 0
errorAltPolarityReverse = (errorCodesLow & 0b0000001000000000) > 0
errorBmsOverCharge = (errorCodesLow & 0b0000010000000000) > 0
errorAuxLowTemp = (errorCodesLow & 0b0000100000000000) > 0`

renogy_DCC_Charger_Modbus_RS485_V1.7.pdf

Thx for checking T

Feature request: Send Data to MQTT

Hi,

is it possible to send the requested Data to MQTT instead of to a database?

Background: I have a home-assistant setup running and collect all Sensor data via MQTT.
I also want to integrate the solarthing-data into HA to create some automations for monitoring and alarming.

Thank you
BR Chris

writing to influxdb stops

Hi

I noticed that writing to influxdb stopped but rover process is still running .

how to monitor if writing to influx is still running?

For testing purposes I am writing parallel to influx , couch and mqtt.

Thanks T

Getting data into Grafana? Documentation seems confusing

Hi! What a great project!

For starters, thank you. I am having trouble getting data into Grafana but I seem to be putting data into the databases and I seem to have Grafana and the GraphQL service up and running correctly. I'm missing something but I don't know what. At this point I have done the following (not necessarily in this order):

I am planning to use a Rover 30A but right now I'm using the dummy test file.

Install Java:

sudo apt install openjdk-11-jre-headless

Downloaded Solarthing:
curl https://raw.githubusercontent.com/wildmountainfarms/solarthing/master/other/linux/clone_install.sh | sudo bash
sudo usermod -a -G solarthing,dialout,tty,video $USER

Configure Solarthing for Rover:

cd /opt/solarthing/program/rover
cp ../../config_templates/io/default_linux_serial.json config/
cp ../../config_templates/base/rover_template.json config/base.json

Edit this bit of the base.json:
"dummy": "test/dummy_rover.json"

Install (and configure) both couchdb and influxdb with these commands:

curl -L https://couchdb.apache.org/repo/bintray-pubkey.asc | sudo apt-key add -
echo "deb https://apache.bintray.com/couchdb-deb bionic main" | sudo tee -a /etc/apt/sources.list
sudo apt update
sudo apt install couchdb

I made a password during installation that I used for the configuration later on Solarthing.

Install influxdb:
sudo apt install influxdb

Easy way to make a first user on influxdb:
curl "http://localhost:8086/query" --data-urlencode "q=CREATE USER username WITH PASSWORD 'password' WITH ALL PRIVILEGES"

Configure couchdb and influxdb for my rover setup:

cp ../../config_templates/databases/couchdb_template.json config/couchdb.json
cp ../../config_templates/databases/influxdb_template.json config/influxdb.json

I edited both of those files to include the username and passwords I made above.

Now when I test run the rover file I get . what I think if a positive output:

2021-02-04 17:24:06.543 [main] DEBUG me.retrodaredevil.solarthing.couchdb.CouchDbPacketSaver - Already had a design document for packets on database=solarthing

2021-02-04 17:24:06.591 [main] INFO org.influxdb - --> POST http://localhost:8086/query?q=CREATE+DATABASE+default_database (0-byte body)

2021-02-04 17:24:06.594 [main] INFO org.influxdb - <-- 200 OK http://localhost:8086/query?q=CREATE+DATABASE+default_database (2ms, unknown-length body)

2021-02-04 17:24:06.597 [main] INFO org.influxdb - --> POST http://localhost:8086/write?db=default_database&precision=n&consistency=all (2870-byte body)

2021-02-04 17:24:06.601 [main] INFO org.influxdb - <-- 204 No Content http://localhost:8086/write?db=default_database&precision=n&consistency=all (4ms, 0-byte body)

2021-02-04 17:24:06.602 [main] DEBUG me.retrodaredevil.solarthing.influxdb.influxdb1.InfluxDbPacketSaver - Wrote 1 packets to InfluxDB! database=default_database retention policy=null

2021-02-04 17:24:06.602 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4879ms

Cool!

Install Grafana on Ubuntu 18.04:

wget -q -O - https://packages.grafana.com/gpg.key | sudo apt-key add -
sudo add-apt-repository "deb https://packages.grafana.com/oss/deb stable main"
sudo apt update
apt-cache policy grafana
sudo apt install grafana
sudo systemctl start grafana-server
sudo systemctl status grafana-server

Grafana runs! It says active! I logged in, made an account, etc.

Next, install Grafana GraphQL plugin:

sudo usermod -a -G grafana $USER
exec su -l $USER
cd /var/lib/grafana/plugins
git clone https://github.com/fifemon/graphql-datasource

GraphQL is in the data sources list of Grafana.

copy the graphQL config file from the template folder (not in the documentation but it seems necessary).
sudo cp ../config_templates/graphql/application.properties graphql/config

And edit the application.properties file (also not in the documentation but it seems necessary!)

Instead of:

solarthing.config.database=../config/couchdb/couchdb.json

I made application.properties say:
solarthing.config.database=../rover/config/couchdb.json

And now I can enable the service and check on it:

sudo systemctl enable solarthing-graphql
sudo systemctl start solarthing-graphql
sudo systemctl status solarthing-graphql

It runs! It says active!

When I add a datasource to graphql (http://localhost:8080/graphql) with access set to "browser" I get the following:
HTTP Response undefined: undefined

When I try connecting to influxdb with my database, username, and password from the influxdb.json file I get a webpage starting with:

Cannot create property 'executedQueryString' on string '<!DOCTYPE html> <html lang="en"> <head> <script> !(function() { if ('PerformanceLongTaskTiming' in window) { var g = (window.__tti = { e: [] }); g.o = new PerformanceObserver(function(l) { g.e = g.e.concat(l.getEntries()); }); g.o.observe({ entryTypes: ['longtask'] }); } })(); </script> <meta charset="utf-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> <meta name="viewport" content="width=device-width" /> <meta name="theme-color" content="#000" /> <title>Grafana</title> <base href="/" /> <link rel="preload" href="public/fonts/roboto/RxZJdnzeo3R5zSexge8UUVtXRa8TVwTICgirnJhmVJw.woff2" as="font" crossorigin /> <link rel="icon" type="image/png" href="public/img/fav32.png" /> <link rel="apple-touch-icon" sizes="180x180" href="public/img/apple-touch-icon.png" /> <link rel="mask-icon" href="public/img/grafana_mask_icon.svg" color="#F05A28" /> <link rel="stylesheet" href="public/build/grafana.dark.ddf7518003180e1ca7bc.css" /> <script> performance.mark('css done blocking'); </script> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="apple-mobile-web-app-status-bar-style" content="black" /> <meta name="msapplication-TileColor" content="#2b5797" /> <meta name="msapplication-config" content="public/img/browserconfig.xml" /> </head> <body class="theme-dark app-grafana"> <style> .preloader { height: 100%; flex-direction: column; display: flex; justify-content: center; align-items: center; } .preloader__enter { opacity: 0; animation-name: preloader-fade-in; animation-iteration-count: 1; animation-duration: 0.9s; animation-delay: 1.35s; animation-fill-mode: forwards; } .preloader__bounce { text-align: center; animation-name: preloader-bounce; animation-duration: 0.9s; animation-iteration-count: infinite; } .preloader__logo { display: inline-block; animation-name: preloader-squash; animation-duration: 0.9s; animation-iteration-count: infinite; width: 60px; height: 60px; background-repeat: no-repeat; background-size: contain; background-image: url("data:image/svg+xml,%3csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' width='351px' height='365px' viewBox='0 0 351 365' style='enable-background:new 0 0 351 365%3b' xml:space='preserve'%3e %3cstyle type='text/css'%3e .st0%7bfill:url(%23SVGID_1_)%3b%7d %3c/style%3e %3cg id='Layer_1_1_'%3e %3c/g%3e %3clinearGradient id='SVGID_1_' gradientUnits='userSpaceOnUse' x1='175.5' y1='445.4948' x2='175.5' y2='114.0346'%3e %3cstop offset='0' style='stop-color:%23FFF100'/%3e %3cstop offset='1' style='stop-color:%23F05A28'/%3e %3c/linearGradient%3e %3cpath class='st0' d='M342%2c161.2c-0.6-6.1-1.6-13.1-3.6-20.9c-2-7.7-5-16.2-9.4-25c-4.4-8.8-10.1-17.9-17.5-26.8 c-2.9-3.5-6.1-6.9-9.5-10.2c5.1-20.3-6.2-37.9-6.2-37.9c-19.5-1.2-31.9%2c6.1-36.5%2c9.4c-0.8-0.3-1.5-0.7-2.3-1 c-3.3-1.3-6.7-2.6-10.3-3.7c-3.5-1.1-7.1-2.1-10.8-3c-3.7-0.9-7.4-1.6-11.2-2.2c-0.7-0.1-1.3-0.2-2-0.3 c-8.5-27.2-32.9-38.6-32.9-38.6c-27.3%2c17.3-32.4%2c41.5-32.4%2c41.5s-0.1%2c0.5-0.3%2c1.4c-1.5%2c0.4-3%2c0.9-4.5%2c1.3c-2.1%2c0.6-4.2%2c1.4-6.2%2c2.2 c-2.1%2c0.8-4.1%2c1.6-6.2%2c2.5c-4.1%2c1.8-8.2%2c3.8-12.2%2c6c-3.9%2c2.2-7.7%2c4.6-11.4%2c7.1c-0.5-0.2-1-0.4-1-0.4c-37.8-14.4-71.3%2c2.9-71.3%2c2.9 c-3.1%2c40.2%2c15.1%2c65.5%2c18.7%2c70.1c-0.9%2c2.5-1.7%2c5-2.5%2c7.5c-2.8%2c9.1-4.9%2c18.4-6.2%2c28.1c-0.2%2c1.4-0.4%2c2.8-0.5%2c4.2 C18.8%2c192.7%2c8.5%2c228%2c8.5%2c228c29.1%2c33.5%2c63.1%2c35.6%2c63.1%2c35.6c0%2c0%2c0.1-0.1%2c0.1-0.1c4.3%2c7.7%2c9.3%2c15%2c14.9%2c21.9c2.4%2c2.9%2c4.8%2c5.6%2c7.4%2c8.3 c-10.6%2c30.4%2c1.5%2c55.6%2c1.5%2c55.6c32.4%2c1.2%2c53.7-14.2%2c58.2-17.7c3.2%2c1.1%2c6.5%2c2.1%2c9.8%2c2.9c10%2c2.6%2c20.2%2c4.1%2c30.4%2c4.5 c2.5%2c0.1%2c5.1%2c0.2%2c7.6%2c0.1l1.2%2c0l0.8%2c0l1.6%2c0l1.6-0.1l0%2c0.1c15.3%2c21.8%2c42.1%2c24.9%2c42.1%2c24.9c19.1-20.1%2c20.2-40.1%2c20.2-44.4l0%2c0 c0%2c0%2c0-0.1%2c0-0.3c0-0.4%2c0-0.6%2c0-0.6l0%2c0c0-0.3%2c0-0.6%2c0-0.9c4-2.8%2c7.8-5.8%2c11.4-9.1c7.6-6.9%2c14.3-14.8%2c19.9-23.3 c0.5-0.8%2c1-1.6%2c1.5-2.4c21.6%2c1.2%2c36.9-13.4%2c36.9-13.4c-3.6-22.5-16.4-33.5-19.1-35.6l0%2c0c0%2c0-0.1-0.1-0.3-0.2 c-0.2-0.1-0.2-0.2-0.2-0.2c0%2c0%2c0%2c0%2c0%2c0c-0.1-0.1-0.3-0.2-0.5-0.3c0.1-1.4%2c0.2-2.7%2c0.3-4.1c0.2-2.4%2c0.2-4.9%2c0.2-7.3l0-1.8l0-0.9 l0-0.5c0-0.6%2c0-0.4%2c0-0.6l-0.1-1.5l-0.1-2c0-0.7-0.1-1.3-0.2-1.9c-0.1-0.6-0.1-1.3-0.2-1.9l-0.2-1.9l-0.3-1.9 c-0.4-2.5-0.8-4.9-1.4-7.4c-2.3-9.7-6.1-18.9-11-27.2c-5-8.3-11.2-15.6-18.3-21.8c-7-6.2-14.9-11.2-23.1-14.9 c-8.3-3.7-16.9-6.1-25.5-7.2c-4.3-0.6-8.6-0.8-12.9-0.7l-1.6%2c0l-0.4%2c0c-0.1%2c0-0.6%2c0-0.5%2c0l-0.7%2c0l-1.6%2c0.1c-0.6%2c0-1.2%2c0.1-1.7%2c0.1 c-2.2%2c0.2-4.4%2c0.5-6.5%2c0.9c-8.6%2c1.6-16.7%2c4.7-23.8%2c9c-7.1%2c4.3-13.3%2c9.6-18.3%2c15.6c-5%2c6-8.9%2c12.7-11.6%2c19.6c-2.7%2c6.9-4.2%2c14.1-4.6%2c21 c-0.1%2c1.7-0.1%2c3.5-0.1%2c5.2c0%2c0.4%2c0%2c0.9%2c0%2c1.3l0.1%2c1.4c0.1%2c0.8%2c0.1%2c1.7%2c0.2%2c2.5c0.3%2c3.5%2c1%2c6.9%2c1.9%2c10.1c1.9%2c6.5%2c4.9%2c12.4%2c8.6%2c17.4 c3.7%2c5%2c8.2%2c9.1%2c12.9%2c12.4c4.7%2c3.2%2c9.8%2c5.5%2c14.8%2c7c5%2c1.5%2c10%2c2.1%2c14.7%2c2.1c0.6%2c0%2c1.2%2c0%2c1.7%2c0c0.3%2c0%2c0.6%2c0%2c0.9%2c0c0.3%2c0%2c0.6%2c0%2c0.9-0.1 c0.5%2c0%2c1-0.1%2c1.5-0.1c0.1%2c0%2c0.3%2c0%2c0.4-0.1l0.5-0.1c0.3%2c0%2c0.6-0.1%2c0.9-0.1c0.6-0.1%2c1.1-0.2%2c1.7-0.3c0.6-0.1%2c1.1-0.2%2c1.6-0.4 c1.1-0.2%2c2.1-0.6%2c3.1-0.9c2-0.7%2c4-1.5%2c5.7-2.4c1.8-0.9%2c3.4-2%2c5-3c0.4-0.3%2c0.9-0.6%2c1.3-1c1.6-1.3%2c1.9-3.7%2c0.6-5.3 c-1.1-1.4-3.1-1.8-4.7-0.9c-0.4%2c0.2-0.8%2c0.4-1.2%2c0.6c-1.4%2c0.7-2.8%2c1.3-4.3%2c1.8c-1.5%2c0.5-3.1%2c0.9-4.7%2c1.2c-0.8%2c0.1-1.6%2c0.2-2.5%2c0.3 c-0.4%2c0-0.8%2c0.1-1.3%2c0.1c-0.4%2c0-0.9%2c0-1.2%2c0c-0.4%2c0-0.8%2c0-1.2%2c0c-0.5%2c0-1%2c0-1.5-0.1c0%2c0-0.3%2c0-0.1%2c0l-0.2%2c0l-0.3%2c0 c-0.2%2c0-0.5%2c0-0.7-0.1c-0.5-0.1-0.9-0.1-1.4-0.2c-3.7-0.5-7.4-1.6-10.9-3.2c-3.6-1.6-7-3.8-10.1-6.6c-3.1-2.8-5.8-6.1-7.9-9.9 c-2.1-3.8-3.6-8-4.3-12.4c-0.3-2.2-0.5-4.5-0.4-6.7c0-0.6%2c0.1-1.2%2c0.1-1.8c0%2c0.2%2c0-0.1%2c0-0.1l0-0.2l0-0.5c0-0.3%2c0.1-0.6%2c0.1-0.9 c0.1-1.2%2c0.3-2.4%2c0.5-3.6c1.7-9.6%2c6.5-19%2c13.9-26.1c1.9-1.8%2c3.9-3.4%2c6-4.9c2.1-1.5%2c4.4-2.8%2c6.8-3.9c2.4-1.1%2c4.8-2%2c7.4-2.7 c2.5-0.7%2c5.1-1.1%2c7.8-1.4c1.3-0.1%2c2.6-0.2%2c4-0.2c0.4%2c0%2c0.6%2c0%2c0.9%2c0l1.1%2c0l0.7%2c0c0.3%2c0%2c0%2c0%2c0.1%2c0l0.3%2c0l1.1%2c0.1 c2.9%2c0.2%2c5.7%2c0.6%2c8.5%2c1.3c5.6%2c1.2%2c11.1%2c3.3%2c16.2%2c6.1c10.2%2c5.7%2c18.9%2c14.5%2c24.2%2c25.1c2.7%2c5.3%2c4.6%2c11%2c5.5%2c16.9c0.2%2c1.5%2c0.4%2c3%2c0.5%2c4.5 l0.1%2c1.1l0.1%2c1.1c0%2c0.4%2c0%2c0.8%2c0%2c1.1c0%2c0.4%2c0%2c0.8%2c0%2c1.1l0%2c1l0%2c1.1c0%2c0.7-0.1%2c1.9-0.1%2c2.6c-0.1%2c1.6-0.3%2c3.3-0.5%2c4.9 c-0.2%2c1.6-0.5%2c3.2-0.8%2c4.8c-0.3%2c1.6-0.7%2c3.2-1.1%2c4.7c-0.8%2c3.1-1.8%2c6.2-3%2c9.3c-2.4%2c6-5.6%2c11.8-9.4%2c17.1 c-7.7%2c10.6-18.2%2c19.2-30.2%2c24.7c-6%2c2.7-12.3%2c4.7-18.8%2c5.7c-3.2%2c0.6-6.5%2c0.9-9.8%2c1l-0.6%2c0l-0.5%2c0l-1.1%2c0l-1.6%2c0l-0.8%2c0 c0.4%2c0-0.1%2c0-0.1%2c0l-0.3%2c0c-1.8%2c0-3.5-0.1-5.3-0.3c-7-0.5-13.9-1.8-20.7-3.7c-6.7-1.9-13.2-4.6-19.4-7.8 c-12.3-6.6-23.4-15.6-32-26.5c-4.3-5.4-8.1-11.3-11.2-17.4c-3.1-6.1-5.6-12.6-7.4-19.1c-1.8-6.6-2.9-13.3-3.4-20.1l-0.1-1.3l0-0.3 l0-0.3l0-0.6l0-1.1l0-0.3l0-0.4l0-0.8l0-1.6l0-0.3c0%2c0%2c0%2c0.1%2c0-0.1l0-0.6c0-0.8%2c0-1.7%2c0-2.5c0.1-3.3%2c0.4-6.8%2c0.8-10.2 c0.4-3.4%2c1-6.9%2c1.7-10.3c0.7-3.4%2c1.5-6.8%2c2.5-10.2c1.9-6.7%2c4.3-13.2%2c7.1-19.3c5.7-12.2%2c13.1-23.1%2c22-31.8c2.2-2.2%2c4.5-4.2%2c6.9-6.2 c2.4-1.9%2c4.9-3.7%2c7.5-5.4c2.5-1.7%2c5.2-3.2%2c7.9-4.6c1.3-0.7%2c2.7-1.4%2c4.1-2c0.7-0.3%2c1.4-0.6%2c2.1-0.9c0.7-0.3%2c1.4-0.6%2c2.1-0.9 c2.8-1.2%2c5.7-2.2%2c8.7-3.1c0.7-0.2%2c1.5-0.4%2c2.2-0.7c0.7-0.2%2c1.5-0.4%2c2.2-0.6c1.5-0.4%2c3-0.8%2c4.5-1.1c0.7-0.2%2c1.5-0.3%2c2.3-0.5 c0.8-0.2%2c1.5-0.3%2c2.3-0.5c0.8-0.1%2c1.5-0.3%2c2.3-0.4l1.1-0.2l1.2-0.2c0.8-0.1%2c1.5-0.2%2c2.3-0.3c0.9-0.1%2c1.7-0.2%2c2.6-0.3 c0.7-0.1%2c1.9-0.2%2c2.6-0.3c0.5-0.1%2c1.1-0.1%2c1.6-0.2l1.1-0.1l0.5-0.1l0.6%2c0c0.9-0.1%2c1.7-0.1%2c2.6-0.2l1.3-0.1c0%2c0%2c0.5%2c0%2c0.1%2c0l0.3%2c0 l0.6%2c0c0.7%2c0%2c1.5-0.1%2c2.2-0.1c2.9-0.1%2c5.9-0.1%2c8.8%2c0c5.8%2c0.2%2c11.5%2c0.9%2c17%2c1.9c11.1%2c2.1%2c21.5%2c5.6%2c31%2c10.3 c9.5%2c4.6%2c17.9%2c10.3%2c25.3%2c16.5c0.5%2c0.4%2c0.9%2c0.8%2c1.4%2c1.2c0.4%2c0.4%2c0.9%2c0.8%2c1.3%2c1.2c0.9%2c0.8%2c1.7%2c1.6%2c2.6%2c2.4c0.9%2c0.8%2c1.7%2c1.6%2c2.5%2c2.4 c0.8%2c0.8%2c1.6%2c1.6%2c2.4%2c2.5c3.1%2c3.3%2c6%2c6.6%2c8.6%2c10c5.2%2c6.7%2c9.4%2c13.5%2c12.7%2c19.9c0.2%2c0.4%2c0.4%2c0.8%2c0.6%2c1.2c0.2%2c0.4%2c0.4%2c0.8%2c0.6%2c1.2 c0.4%2c0.8%2c0.8%2c1.6%2c1.1%2c2.4c0.4%2c0.8%2c0.7%2c1.5%2c1.1%2c2.3c0.3%2c0.8%2c0.7%2c1.5%2c1%2c2.3c1.2%2c3%2c2.4%2c5.9%2c3.3%2c8.6c1.5%2c4.4%2c2.6%2c8.3%2c3.5%2c11.7 c0.3%2c1.4%2c1.6%2c2.3%2c3%2c2.1c1.5-0.1%2c2.6-1.3%2c2.6-2.8C342.6%2c170.4%2c342.5%2c166.1%2c342%2c161.2z'/%3e %3c/svg%3e"); } .preloader__text { margin-top: 16px; font-weight: 500; font-size: 14px; font-family: Sans-serif; opacity: 0; animation-name: preloader-fade-in; animation-duration: 0.9s; animation-delay: 1.8s; animation-fill-mode: forwards; } .theme-light .preloader__text { color: #52545c; } .theme-dark .preloader__text { color: #d8d9da; } @keyframes preloader-fade-in { 0% { opacity: 0; animation-timing-function: cubic-bezier(0, 0, 0.5, 1); } 100% { opacity: 1; } } @keyframes preloader-bounce { from, to { transform: translateY(0px); animation-timing-function: cubic-bezier(0.3, 0, 0.1, 1); } 50% { transform: translateY(-50px); animation-timing-function: cubic-bezier(0.9, 0, 0.7, 1); } } @keyframes preloader-squash { 0% { transform: scaleX(1.3) scaleY(0.8); animation-timing-function: cubic-bezier(0.3, 0, 0.1, 1); transform-origin: bottom center; } 15% { transform: scaleX(0.75) scaleY(1.25); animation-timing-function: cubic-bezier(0, 0, 0.7, 0.75); transform-origin: bottom center; } 55% { transform: scaleX(1.05) scaleY(0.95); animation-timing-function: cubic-bezier(0.9, 0, 1, 1); transform-origin: top center; } 95% { transform: scaleX(0.75) scaleY(1.25); animation-timing-function: cubic-bezier(0, 0, 0, 1); transform-origin: bottom center; } 100% { transform: scaleX(1.3) scaleY(0.8); transform-origin: bottom center; animation-timing-function: cubic-bezier(0, 0, 0.7, 1); } } .preloader__text--fail { display: none; } .preloader--done .preloader__bounce, .preloader--done .preloader__logo { animation-name: none; display: none; } .preloader--done .preloader__logo, .preloader--done .preloader__text { display: none; color: #ff5705 !important; font-size: 15px; } .preloader--done .preloader__text--fail { display: block; } [ng\:cloak], [ng-cloak], .ng-cloak { display: none !important; } </style> <div class="preloader"> <div class="preloader__enter"> <div class="preloader__bounce"> <div class="preloader__logo"></div> </div> </div> <div class="preloader__text">Loading Grafana</div> <div class="preloader__text preloader__text--fail"> <p> <strong>If you're seeing this Grafana has failed to load its application files</strong> <br /> <br /> </p> <p> 1. This could be caused by your reverse proxy settings.<br /><br /> 2. If you host grafana under subpath make sure your grafana.ini root_url setting includes subpath. If not using a reverse proxy make sure to set serve_from_sub_path to true.<br /> <br /> 3. If you have a local dev build make sure you build frontend using: yarn start, yarn start:hot, or yarn build<br /> <br /> 4. Sometimes restarting grafana-server can help<br /> </p> </div> </div> <grafana-app class="grafana-app" ng-cloak> <sidemenu class="sidemenu"></sidemenu> <app-notifications-list class="page-alert-list"></app-notifications-list> <search-wrapper></search-wrapper> <div class="main-view"> <div ng-view class="scroll-canvas"></div> </div> </grafana-app> <script> window.grafanaBootData = { user: {"isSignedIn":true,"id":1,"login":"admin","email":"admin@localhost","name":"admin","lightTheme":false,"orgCount":1,"orgId":1,"orgName":"Main Org.","orgRole":"Admin","isGrafanaAdmin":true,"gravatarUrl":"/avatar/46d229b033af06a191ff2267bca9ae56","timezone":"browser","locale":"en-US","helpFlags1":0,"hasEditPermissionInFolders":true}, settings: {"alertingEnabled":true,"alertingErrorOrTimeout":"alerting","alertingMinInterval":1,"alertingNoDataOrNullValues":"no_data","allowOrgCreate":true,"appSubUrl":"","appUrl":"http://localhost:3000/","authProxyEnabled":false,"autoAssignOrg":true,"buildInfo":{"buildstamp":1610613717,"commit":"1e261642f4","edition":"Open Source","env":"production","hasUpdate":true,"hideVersion":false,"isEnterprise":false,"latestVersion":"7.4.0","version":"7.3.7"},"datasources":{"-- Dashboard --":{"meta":{"type":"datasource","name":"-- Dashboard --","id":"dashboard","info":{"author":{"name":"","url":""},"description":"","links":null,"logos":{"small":"public/img/icn-datasource.svg","large":"public/img/icn-datasource.svg"},"build":{},"screenshots":null,"version":"","updated":""},"dependencies":{"grafanaVersion":"*","plugins":[]},"includes":null,"module":"app/plugins/datasource/dashboard/module","baseUrl":"public/app/plugins/datasource/dashboard","category":"","preload":false,"signature":"internal","Root":null,"annotations":false,"metrics":true,"alerting":false,"explore":false,"tables":false,"logs":false,"tracing":false,"builtIn":true,"routes":null,"streaming":false},"name":"-- Dashboard --","type":"datasource"},"-- Grafana --":{"meta":{"type":"datasource","name":"-- Grafana --","id":"grafana","info":{"author":{"name":"","url":""},"description":"","links":null,"logos":{"small":"public/img/icn-datasource.svg","large":"public/img/icn-datasource.svg"},"build":{},"screenshots":null,"version":"","updated":""},"dependencies":{"grafanaVersion":"*","plugins":[]},"includes":null,"module":"app/plugins/datasource/grafana/module","baseUrl":"public/app/plugins/datasource/grafana","category":"","preload":false,"signature":"internal","Root":null,"annotations":true,"metrics":true,"alerting":false,"explore":false,"tables":false,"logs":false,"tracing":false,"builtIn":true,"routes":null,"streaming":false},"name":"-- Grafana --","type":"datasource"},"-- Mixed --":{"meta":{"type":"datasource","name":"-- Mixed --","id":"mixed","info":{"author":{"name":"","url":""},"description":"","links":null,"logos":{"small":"public/img/icn-datasource.svg","large":"public/img/icn-datasource.svg"},"build":{},"screenshots":null,"version":"","updated":""},"dependencies":{"grafanaVersion":"*","plugins":[]},"includes":null,"module":"app/plugins/datasource/mixed/module","baseUrl":"public/app/plugins/datasource/mixed","category":"","preload":false,"signature":"internal","Root":null,"annotations":false,"metrics":true,"alerting":false,"explore":false,"tables":false,"logs":false,"tracing":false,"queryOptions":{"minInterval":true},"builtIn":true,"mixed":true,"routes":null,"streaming":false},"name":"-- Mixed --","type":"datasource"},"GraphQL Data Source":{"id":15,"jsonData":{},"meta":{"type":"datasource","name":"GraphQL Data Source","id":"fifemon-graphql-datasource","info":{"author":{"name":"Kevin Retzke","url":""},"description":"GraphQL Data Source","links":[{"name":"Website","url":"https://github.com/fifemon/graphql-datasource"},{"name":"License","url":"https://github.com/fifemon/graphql-datasource/blob/master/LICENSE"}],"logos":{"small":"public/plugins/fifemon-graphql-datasource/img/logo.svg","large":"public/plugins/fifemon-graphql-datasource/img/logo.svg"},"build":{},"screenshots":[{"path":"public/plugins/fifemon-graphql-datasource/img/db_arrivals.png","name":"DeutscheBahn Arrivals"},{"path":"public/plugins/fifemon-graphql-datasource/img/db_arrivals_annotations.png","name":"DeutscheBahn Arrivals Annotations"},{"path":"public/plugins/fifemon-graphql-datasource/img/github_security_advisories.png","name":"GitHub Security Advisories"}],"version":"1.2.0","updated":"2021-01-14"},"dependencies":{"grafanaVersion":"7.x.x","plugins":[]},"includes":null,"module":"plugins/fifemon-graphql-datasource/module","baseUrl":"public/plugins/fifemon-graphql-datasource","category":"","preload":false,"signature":"unsigned","Root":null,"annotations":true,"metrics":true,"alerting":false,"explore":false,"tables":false,"logs":false,"tracing":false,"routes":null,"streaming":false},"name":"GraphQL Data Source","type":"fifemon-graphql-datasource","uid":"QLAWxULGz","url":"http://localhost:8080/graphql"},"InfluxDB":{"database":"default_database","id":16,"jsonData":{"httpMode":"GET"},"meta":{"type":"datasource","name":"InfluxDB","id":"influxdb","info":{"author":{"name":"Grafana Labs","url":"https://grafana.com"},"description":"Open source time series database","links":null,"logos":{"small":"public/app/plugins/datasource/influxdb/img/influxdb_logo.svg","large":"public/app/plugins/datasource/influxdb/img/influxdb_logo.svg"},"build":{},"screenshots":null,"version":"","updated":""},"dependencies":{"grafanaVersion":"*","plugins":[]},"includes":null,"module":"app/plugins/datasource/influxdb/module","baseUrl":"public/app/plugins/datasource/influxdb","category":"tsdb","preload":false,"signature":"internal","Root":null,"annotations":true,"metrics":true,"alerting":true,"explore":false,"tables":false,"logs":true,"tracing":false,"queryOptions":{"minInterval":true},"routes":null,"streaming":false},"name":"InfluxDB","password":"kPg^B4wp0wbs","type":"influxdb","uid":"wmIY_wLMk","url":"","username":"bill"}},"dateFormats":{"fullDate":"YYYY-MM-DD HH:mm:ss","useBrowserLocale":false,"interval":{"second":"HH:mm:ss","minute":"HH:mm","hour":"MM/DD HH:mm","day":"MM/DD","month":"YYYY-MM","year":"YYYY"},"defaultTimezone":"browser"},"defaultDatasource":"GraphQL Data Source","disableLoginForm":false,"disableSanitizeHtml":false,"disableUserSignUp":true,"editorsCanAdmin":false,"exploreEnabled":true,"externalUserMngInfo":"","externalUserMngLinkName":"","externalUserMngLinkUrl":"","featureToggles":{},"googleAnalyticsId":"","http2Enabled":false,"ldapEnabled":false,"licenseInfo":{"edition":"Open Source","expiry":0,"hasLicense":false,"hasValidLicense":false,"licenseUrl":"/admin/upgrading","stateInfo":""},"loginHint":"email or username","marketplaceUrl":"https://grafana.com/grafana/plugins/","minRefreshInterval":"5s","panels":{"alertlist":{"baseUrl":"public/app/plugins/panel/alertlist","hideFromList":false,"id":"alertlist","info":{"author":{"name":"Grafana Labs","url":"https://grafana.com"},"description":"Shows list of alerts and their current status","links":null,"logos":{"small":"public/app/plugins/panel/alertlist/img/icn-singlestat-panel.svg","large":"public/app/plugins/panel/alertlist/img/icn-singlestat-panel.svg"},"build":{},"screenshots":null,"version":"","updated":""},"module":"app/plugins/panel/alertlist/module","name":"Alert list","signature":"internal","skipDataQuery":true,"sort":9,"state":""},"bargauge":{"baseUrl":"public/app/plugins/panel/bargauge","hideFromList":false,"id":"bargauge","info":{"author":{"name":"Grafana Labs","url":"https://grafana.com"},"description":"","links":null,"logos":{"small":"public/app/plugins/panel/bargauge/img/icon_bar_gauge.svg","large":"public/app/plugins/panel/bargauge/img/icon_bar_gauge.svg"},"build":{},"screenshots":null,"version":"","updated":""},"module":"app/plugins/panel/bargauge/module","name":"Bar gauge","signature":"internal","skipDataQuery":false,"sort":4,"state":"beta"},"dashlist":{"baseUrl":"public/app/plugins/panel/dashlist","hideFromList":false,"id":"dashlist","info":{"author":{"name":"Grafana Labs","url":"https://grafana.com"},"description":"List of dynamic links to other dashboards","links":null,"logos":{"small":"public/app/plugins/panel/dashlist/img/icn-dashlist-panel.svg","large":"public/app/plugins/panel/dashlist/img/icn-dashlist-panel.svg"},"build":{},"screenshots":null,"version":"","updated":""},"module":"app/plugins/panel/dashlist/module","name":"Dashboard list","signature":"internal","skipDataQuery":true,"sort":10,"state":""},"gauge":{"baseUrl":"public/app/plugins/panel/gauge","hideFromList":false,"id":"gauge","info":{"author":{"name":"Grafana Labs","url":"https://grafana.com"},"description":"","links":null,"logos":{"small":"public/app/plugins/panel/gauge/img/icon_gauge.svg","large":"public/app/plugins/panel/gauge/img/icon_gauge.svg"},"build":{},"screenshots":null,"version":"","updated":""},"module":"app/plugins/panel/gauge/module","name":"Gauge","signature":"internal","skipDataQuery":false,"sort":3,"state":""},"gettingstarted":{"baseUrl":"public/app/plugins/panel/gettingstarted","hideFromList":true,"id":"gettingstarted","info":{"author":{"name":"Grafana Labs","url":"https://grafana.com"},"description":"","links":null,"logos":{"small":"public/app/plugins/panel/gettingstarted/img/icn-dashlist-panel.svg","large":"public/app/plugins/panel/gettingstarted/img/icn-dashlist-panel.svg"},"build":{},"screenshots":null,"version":"","updated":""},"module":"app/plugins/panel/gettingstarted/module","name":"Getting Started","signature":"internal","skipDataQuery":true,"sort":100,"state":""},"graph":{"baseUrl":"public/app/plugins/panel/graph","hideFromList":false,"id":"graph","info":{"author":{"name":"Grafana Labs","url":"https://grafana.com"},"description":"Graph Panel for Grafana","links":null,"logos":{"small":"public/app/plugins/panel/graph/img/icn-graph-panel.svg","large":"public/app/plugins/panel/graph/img/icn-graph-panel.svg"},"build":{},"screenshots":null,"version":"","updated":""},"module":"app/plugins/panel/graph/module","name":"Graph","signature":"internal","skipDataQuery":false,"sort":1,"state":""},"heatmap":{"baseUrl":"public/app/plugins/panel/heatmap","hideFromList":false,"id":"heatmap","info":{"author":{"name":"Grafana Labs","url":"https://grafana.com"},"description":"Heatmap Panel for Grafana","links":[{"name":"Brendan Gregg - Heatmaps","url":"http://www.brendangregg.com/heatmaps.html"},{"name":"Brendan Gregg - Latency Heatmaps","url":" http://www.brendangregg.com/HeatMaps/latency.html"}],"logos":{"small":"public/app/plugins/panel/heatmap/img/icn-heatmap-panel.svg","large":"public/app/plugins/panel/heatmap/img/icn-heatmap-panel.svg"},"build":{},"screenshots":null,"version":"","updated":""},"module":"app/plugins/panel/heatmap/module","name":"Heatmap","signature":"internal","skipDataQuery":false,"sort":8,"state":""},"homelinks":{"baseUrl":"public/app/plugins/panel/homelinks","hideFromList":true,"id":"homelinks","info":{"author":{"name":"Grafana Labs","url":"https://grafana.com"},"description":"","links":null,"logos":{"small":"public/app/plugins/panel/homelinks/img/news.svg","large":"public/app/plugins/panel/homelinks/img/news.svg"},"build":{},"screenshots":null,"version":"","updated":""},"module":"app/plugins/panel/homelinks/module","name":"Home links","signature":"internal","skipDataQuery":true,"sort":100,"state":""},"logs":{"baseUrl":"public/app/plugins/panel/logs","hideFromList":false,"id":"logs","info":{"author":{"name":"Grafana Labs","url":"https://grafana.com"},"description":"","links":null,"logos":{"small":"public/app/plugins/panel/logs/img/icn-logs-panel.svg","large":"public/app/plugins/panel/logs/img/icn-logs-panel.svg"},"build":{},"screenshots":null,"version":"","updated":""},"module":"app/plugins/panel/logs/module","name":"Logs","signature":"internal","skipDataQuery":false,"sort":100,"state":""},"news":{"baseUrl":"public/app/plugins/panel/news","hideFromList":false,"id":"news","info":{"author":{"name":"Grafana Labs","url":"https://grafana.com"},"description":"","links":null,"logos":{"small":"public/app/plugins/panel/news/img/news.svg","large":"public/app/plugins/panel/news/img/news.svg"},"build":{},"screenshots":null,"version":"","updated":""},"module":"app/plugins/panel/news/module","name":"News","signature":"internal","skipDataQuery":true,"sort":10,"state":"beta"},"pluginlist":{"baseUrl":"public/app/plugins/panel/pluginlist","hideFromList":false,"id":"pluginlist","info":{"author":{"name":"Grafana Labs","url":"https://grafana.com"},"description":"Plugin List for Grafana","links":null,"logos":{"small":"public/app/plugins/panel/pluginlist/img/icn-dashlist-panel.svg","large":"public/app/plugins/panel/pluginlist/img/icn-dashlist-panel.svg"},"build":{},"screenshots":null,"version":"","updated":""},"module":"app/plugins/panel/pluginlist/module","name":"Plugin list","signature":"internal","skipDataQuery":true,"sort":100,"state":""},"singlestat":{"baseUrl":"public/app/plugins/panel/singlestat","hideFromList":false,"id":"singlestat","info":{"author":{"name":"Grafana Labs","url":"https://grafana.com"},"description":"Singlestat Panel for Grafana","links":null,"logos":{"small":"public/app/plugins/panel/singlestat/img/icn-singlestat-panel.svg","large":"public/app/plugins/panel/singlestat/img/icn-singlestat-panel.svg"},"build":{},"screenshots":null,"version":"","updated":""},"module":"app/plugins/panel/singlestat/module","name":"Singlestat","signature":"internal","skipDataQuery":false,"sort":6,"state":"deprecated"},"stat":{"baseUrl":"public/app/plugins/panel/stat","hideFromList":false,"id":"stat","info":{"author":{"name":"Grafana Labs","url":"https://grafana.com"},"description":"Singlestat Panel for Grafana","links":null,"logos":{"small":"public/app/plugins/panel/stat/img/icn-singlestat-panel.svg","large":"public/app/plugins/panel/stat/img/icn-singlestat-panel.svg"},"build":{},"screenshots":null,"version":"","updated":""},"module":"app/plugins/panel/stat/module","name":"Stat","signature":"internal","skipDataQuery":false,"sort":2,"state":"beta"},"table":{"baseUrl":"public/app/plugins/panel/table","hideFromList":false,"id":"table","info":{"author":{"name":"Grafana Labs","url":"https://grafana.com"},"description":"Table Panel for Grafana","links":null,"logos":{"small":"public/app/plugins/panel/table/img/icn-table-panel.svg","large":"public/app/plugins/panel/table/img/icn-table-panel.svg"},"build":{},"screenshots":null,"version":"","updated":""},"module":"app/plugins/panel/table/module","name":"Table","signature":"internal","skipDataQuery":false,"sort":5,"state":""},"table-old":{"baseUrl":"public/app/plugins/panel/table-old","hideFromList":false,"id":"table-old","info":{"author":{"name":"Grafana Labs","url":"https://grafana.com"},"description":"Table Panel for Grafana","links":null,"logos":{"small":"public/app/plugins/panel/table-old/img/icn-table-panel.svg","large":"public/app/plugins/panel/table-old/img/icn-table-panel.svg"},"build":{},"screenshots":null,"version":"","updated":""},"module":"app/plugins/panel/table-old/module","name":"Table (old)","signature":"internal","skipDataQuery":false,"sort":100,"state":"deprecated"},"text":{"baseUrl":"public/app/plugins/panel/text","hideFromList":false,"id":"text","info":{"author":{"name":"Grafana Labs","url":"https://grafana.com"},"description":"","links":null,"logos":{"small":"public/app/plugins/panel/text/img/icn-text-panel.svg","large":"public/app/plugins/panel/text/img/icn-text-panel.svg"},"build":{},"screenshots":null,"version":"","updated":""},"module":"app/plugins/panel/text/module","name":"Text","signature":"internal","skipDataQuery":true,"sort":7,"state":""},"welcome":{"baseUrl":"public/app/plugins/panel/welcome","hideFromList":true,"id":"welcome","info":{"author":{"name":"Grafana Labs","url":"https://grafana.com"},"description":"","links":null,"logos":{"small":"public/app/plugins/panel/welcome/img/icn-dashlist-panel.svg","large":"public/app/plugins/panel/welcome/img/icn-dashlist-panel.svg"},"build":{},"screenshots":null,"version":"","updated":""},"module":"app/plugins/panel/welcome/module","name":"Welcome","signature":"internal","skipDataQuery":true,"sort":100,"state":""}},"passwordHint":"password","pluginsToPreload":[],"rendererAvailable":false,"sigV4AuthEnabled":false,"verifyEmailEnabled":false,"viewersCanEdit":false}, navTree: [{"id":"create","text":"Create","icon":"plus","url":"/dashboard/new","sortWeight":-2000,"children":[{"text":"Dashboard","icon":"apps","url":"/dashboard/new"},{"id":"folder","text":"Folder","subTitle":"Create a new folder to organize your dashboards","icon":"folder-plus","url":"/dashboards/folder/new"},{"id":"import","text":"Import","subTitle":"Import dashboard from file or Grafana.com","icon":"import","url":"/dashboard/import"}]},{"id":"dashboards","text":"Dashboards","subTitle":"Manage dashboards \u0026 folders","icon":"apps","url":"/","sortWeight":-1900,"children":[{"id":"home","text":"Home","icon":"home-alt","url":"/","hideFromTabs":true},{"id":"divider","text":"Divider","divider":true,"hideFromTabs":true},{"id":"manage-dashboards","text":"Manage","icon":"sitemap","url":"/dashboards"},{"id":"playlists","text":"Playlists","icon":"presentation-play","url":"/playlists"},{"id":"snapshots","text":"Snapshots","icon":"camera","url":"/dashboard/snapshots"}]},{"id":"explore","text":"Explore","subTitle":"Explore your data","icon":"compass","url":"/explore","sortWeight":-1800},{"id":"profile","text":"admin","img":"/avatar/46d229b033af06a191ff2267bca9ae56","url":"/profile","sortWeight":-1700,"hideFromMenu":true,"children":[{"id":"profile-settings","text":"Preferences","icon":"sliders-v-alt","url":"/profile"},{"id":"change-password","text":"Change Password","icon":"lock","url":"/profile/password","hideFromMenu":true},{"id":"sign-out","text":"Sign out","icon":"arrow-from-right","url":"/logout","target":"_self","hideFromTabs":true}]},{"id":"alerting","text":"Alerting","subTitle":"Alert rules \u0026 notifications","icon":"bell","url":"/alerting/list","sortWeight":-1600,"children":[{"id":"alert-list","text":"Alert Rules","icon":"list-ul","url":"/alerting/list"},{"id":"channels","text":"Notification channels","icon":"comment-alt-share","url":"/alerting/notifications"}]},{"id":"cfg","text":"Configuration","subTitle":"Organization: Main Org.","icon":"cog","url":"/datasources","sortWeight":-1400,"children":[{"id":"datasources","text":"Data Sources","description":"Add and configure data sources","icon":"database","url":"/datasources"},{"id":"users","text":"Users","description":"Manage org members","icon":"user","url":"/org/users"},{"id":"teams","text":"Teams","description":"Manage org groups","icon":"users-alt","url":"/org/teams"},{"id":"plugins","text":"Plugins","description":"View and configure plugins","icon":"plug","url":"/plugins"},{"id":"org-settings","text":"Preferences","description":"Organization preferences","icon":"sliders-v-alt","url":"/org"},{"id":"apikeys","text":"API Keys","description":"Create \u0026 manage API keys","icon":"key-skeleton-alt","url":"/org/apikeys"}]},{"id":"admin","text":"Server Admin","subTitle":"Manage all users \u0026 orgs","icon":"shield","url":"/admin/users","sortWeight":-1300,"hideFromTabs":true,"children":[{"id":"global-users","text":"Users","icon":"user","url":"/admin/users"},{"id":"global-orgs","text":"Orgs","icon":"building","url":"/admin/orgs"},{"id":"server-settings","text":"Settings","icon":"sliders-v-alt","url":"/admin/settings"},{"id":"server-stats","text":"Stats","icon":"graph-bar","url":"/admin/stats"},{"id":"upgrading","text":"Upgrade","icon":"unlock","url":"/admin/upgrading"}]},{"id":"help","text":"Help","subTitle":"Grafana v7.3.7 (1e261642f4)","icon":"question-circle","url":"#","sortWeight":-1200,"hideFromMenu":true}] }; window.onload = function() { var preloader = document.getElementsByClassName("preloader"); if (preloader.length) { preloader[0].className = "preloader preloader--done"; } }; </script> <script src="public/build/runtime.ddf7518003180e1ca7bc.js" type="text/javascript"></script> <script src="public/build/angular~app.ddf7518003180e1ca7bc.js" type="text/javascript"></script> <script src="public/build/app.ddf7518003180e1ca7bc.js" type="text/javascript"></script> <script src="public/build/moment~app.ddf7518003180e1ca7bc.js" type="text/javascript"></script> <script src="public/build/vendors~app.ddf7518003180e1ca7bc.js" type="text/javascript"></script> <script> performance.mark('js done blocking'); </script> </body> </html> '

So I think I have two separate ways to potentially connect but neither of them are working. I've tried nothing and I'm all out of options. Okay, that is a joke. I've tried a lot and I'm all out of ideas. Can you suggest anything? I feel like I'm so close!

Thank you!

Stuck in solarthing-couchdb interface?

I thought I was almost there, but got stuck and cannot see why. Any feedback is welcome

Started solarthing on a raspberrypi connected to a Epever Triron which should be compatible with Tracer

sa0bxi@bull:~$ sudo systemctl start solarthing-custom_tracer.service

checking status, which seems OK....

sa0bxi@bull:~$ sudo systemctl status solarthing-custom_tracer.service
● solarthing-custom_tracer.service - The service for SolarThing custom_tracer
Loaded: loaded (/etc/systemd/system/solarthing-custom_tracer.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2022-03-16 23:02:06 CET; 5s ago
Main PID: 7210 (sh)
Tasks: 15 (limit: 2059)
CGroup: /system.slice/solarthing-custom_tracer.service
├─7210 sh /opt/solarthing/program/custom_tracer/run.sh
├─7212 sh ../.scripts/solarthing.sh
├─7214 bash ../.scripts/../.bin/local_log_solarthing --base config/base.json
├─7220 sh ../.scripts/../.bin/../.bin/raw_solarthing --base config/base.json
└─7224 java --add-opens=java.base/java.lang.invoke=ALL-UNNAMED -jar ../.scripts/../.bin/../.bin/../solarthing.jar --base config/base.json

mar 16 23:02:06 bull systemd[1]: Started The service for SolarThing custom_tracer.

BUT failed after a while.....

sa0bxi@bull:~$ sudo systemctl status solarthing-custom_tracer.service
● solarthing-custom_tracer.service - The service for SolarThing custom_tracer
Loaded: loaded (/etc/systemd/system/solarthing-custom_tracer.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Wed 2022-03-16 23:02:23 CET; 1s ago
Process: 7210 ExecStart=/opt/solarthing/program/custom_tracer/run.sh (code=exited, status=197)
Main PID: 7210 (code=exited, status=197)

mar 16 23:02:06 bull systemd[1]: Started The service for SolarThing custom_tracer.
mar 16 23:02:23 bull systemd[1]: solarthing-custom_tracer.service: Main process exited, code=exited, status=197/n/a
mar 16 23:02:23 bull systemd[1]: solarthing-custom_tracer.service: Failed with result 'exit-code'.

Here is the log. and no data in /opt/solarthing/program/custom_tracer/config/triron.json

sa0bxi@bull:~$ tail /opt/solarthing/program/custom_tracer/logs/log_info.log
at me.retrodaredevil.solarthing.program.SolarMain.determineMainSubprogram(SolarMain.java:252) [solarthing-2022.2.0.jar:?]
at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:256) [solarthing-2022.2.0.jar:?]
Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: No content to map due to end-of-input
at [Source: (FileInputStream); line: 1, column: 0]
at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59) ~[solarthing-2022.2.0.jar:?]
at com.fasterxml.jackson.databind.ObjectMapper._initForReading(ObjectMapper.java:4765) ~[solarthing-2022.2.0.jar:?]
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4667) ~[solarthing-2022.2.0.jar:?]
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3666) ~[solarthing-2022.2.0.jar:?]
at me.retrodaredevil.solarthing.program.ConfigUtil.getDatabaseConfig(ConfigUtil.java:46) [solarthing-2022.2.0.jar:?]
... 8 more
sa0bxi@bull:
$

Slackbot crashes automation with unknown host

For me to fix:

2021-07-20 05:34:28.700 [main] ERROR me.retrodaredevil.solarthing.program.SolarMain - [LOG] Ending SolarThing. Jar: solarthing-SNAPSHOT.jar Java version: 11.0.11
2021-07-20 05:34:28.704 [main] ERROR me.retrodaredevil.solarthing.program.SolarMain - (Fatal)Got throwable
java.lang.RuntimeException: java.net.UnknownHostException: slack.com
	at me.retrodaredevil.solarthing.actions.chatbot.SlackChatBotAction.initClient(SlackChatBotAction.java:62) ~[solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.actions.chatbot.SlackChatBotAction.onUpdate(SlackChatBotAction.java:44) ~[solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.action.SimpleAction.update(SimpleAction.java:66) ~[solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.actions.chatbot.SlackChatBotActionNode.lambda$createAction$3(SlackChatBotActionNode.java:85) ~[solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.action.RunOnceAction.onStart(RunOnceAction.java:25) ~[solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.action.SimpleAction.update(SimpleAction.java:64) ~[solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.action.SetActionMultiplexer.onUpdate(SetActionMultiplexer.java:95) ~[solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.action.SimpleAction.update(SimpleAction.java:66) ~[solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.program.AutomationMain.startAutomation(AutomationMain.java:85) ~[solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.program.AutomationMain.startAutomation(AutomationMain.java:43) ~[solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:130) [solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:170) [solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:209) [solarthing-SNAPSHOT.jar:?]
Caused by: java.net.UnknownHostException: slack.com
	at java.net.InetAddress$CachedAddresses.get(InetAddress.java:797) ~[?:?]
	at java.net.InetAddress.getAllByName0(InetAddress.java:1509) ~[?:?]
	at java.net.InetAddress.getAllByName(InetAddress.java:1368) ~[?:?]
	at java.net.InetAddress.getAllByName(InetAddress.java:1302) ~[?:?]
	at okhttp3.Dns$Companion$DnsSystem.lookup(Dns.kt:49) ~[solarthing-SNAPSHOT.jar:?]
	at okhttp3.internal.connection.RouteSelector.resetNextInetSocketAddress(RouteSelector.kt:164) ~[solarthing-SNAPSHOT.jar:?]
	at okhttp3.internal.connection.RouteSelector.nextProxy(RouteSelector.kt:129) ~[solarthing-SNAPSHOT.jar:?]
	at okhttp3.internal.connection.RouteSelector.next(RouteSelector.kt:71) ~[solarthing-SNAPSHOT.jar:?]
	at okhttp3.internal.connection.ExchangeFinder.findConnection(ExchangeFinder.kt:205) ~[solarthing-SNAPSHOT.jar:?]
	at okhttp3.internal.connection.ExchangeFinder.findHealthyConnection(ExchangeFinder.kt:106) ~[solarthing-SNAPSHOT.jar:?]
	at okhttp3.internal.connection.ExchangeFinder.find(ExchangeFinder.kt:74) ~[solarthing-SNAPSHOT.jar:?]
	at okhttp3.internal.connection.RealCall.initExchange$okhttp(RealCall.kt:255) ~[solarthing-SNAPSHOT.jar:?]
	at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:32) ~[solarthing-SNAPSHOT.jar:?]
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) ~[solarthing-SNAPSHOT.jar:?]
	at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:95) ~[solarthing-SNAPSHOT.jar:?]
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) ~[solarthing-SNAPSHOT.jar:?]
	at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:83) ~[solarthing-SNAPSHOT.jar:?]
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) ~[solarthing-SNAPSHOT.jar:?]
	at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:76) ~[solarthing-SNAPSHOT.jar:?]
	at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109) ~[solarthing-SNAPSHOT.jar:?]
	at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201) ~[solarthing-SNAPSHOT.jar:?]
	at okhttp3.internal.connection.RealCall.execute(RealCall.kt:154) ~[solarthing-SNAPSHOT.jar:?]
	at com.slack.api.util.http.SlackHttpClient.postFormWithAuthorizationHeader(SlackHttpClient.java:179) ~[solarthing-SNAPSHOT.jar:?]
	at com.slack.api.util.http.SlackHttpClient.postFormWithBearerHeader(SlackHttpClient.java:166) ~[solarthing-SNAPSHOT.jar:?]
	at com.slack.api.methods.impl.MethodsClientImpl.runPostFormWithToken(MethodsClientImpl.java:2771) ~[solarthing-SNAPSHOT.jar:?]
	at com.slack.api.methods.impl.MethodsClientImpl.postFormWithTokenAndParseResponse(MethodsClientImpl.java:2911) ~[solarthing-SNAPSHOT.jar:?]
	at com.slack.api.methods.impl.MethodsClientImpl.appsConnectionsOpen(MethodsClientImpl.java:1019) ~[solarthing-SNAPSHOT.jar:?]
	at com.slack.api.methods.impl.MethodsClientImpl.appsConnectionsOpen(MethodsClientImpl.java:1024) ~[solarthing-SNAPSHOT.jar:?]
	at com.slack.api.Slack.issueSocketModeUrl(Slack.java:166) ~[solarthing-SNAPSHOT.jar:?]
	at com.slack.api.Slack.socketMode(Slack.java:150) ~[solarthing-SNAPSHOT.jar:?]
	at me.retrodaredevil.solarthing.actions.chatbot.SlackChatBotAction.initClient(SlackChatBotAction.java:59) ~[solarthing-SNAPSHOT.jar:?]
	... 12 more

change debug logging?

Hello,
This is probably documented somewhere but I didn't see it. How do I decrease the volume of debugging output from solarthing? My old raspberry pi doesn't have much free space and I'd like to minimize writing to the SD card anyway. There is a lot of output being written to /var/log/daemon and /var/log/syslog as well as /opt/solarthing/rover/logs/log_debug.log that I don't really need.
Thanks.

Great Job

You have done an amazing amount of work. SolarThing pretty much worked "out of the box" for me on my Pi. Little bit of confusion on my part, but overall very very well done.

Quick question. I can see my data in couchdb and installed the graphql and basic config file.

solarthing@pisolar:/opt/solarthing/program/rover$ more config/application.properties
solarthing.config.database=../config/couchdb.json

Is there anything else I need to do? Setting up the datasource in grafana gives me a "HTTP Response Undefined" message and I don't see anything listening on port 8080 like in your example.

wiring with max485

Hi,
wondering if this is working with the max485 adapter.

Do you have a decripton of the wiring you are using in general?

Did not find it .

Thanks for guiding.

BR T

Log4j2 CVE-2021-44228 Vulnerability

This issue is fixed in 07023ee, which as of writing is not in any official SolarThing release yet. This issue serves to document how this vulnerability could affect SolarThing users.

This vulnerability is not caused by SolarThing itself, but by a library that SolarThing uses, Log4j2.

Vulnerability Links

How SolarThing is affected

So first, a little about how the exploit could affect SolarThing. If someone is able to send a request to some SolarThing service that uses Log4j2, it can be exploited.

The most obvious possibility is SolarThing GraphQL, which actually doesn't use Log4j2, so there is no vulnerability there. (SolarThing GraphQL uses the default Logback setup)

The second possibility is for SolarThing programs running that upload to the database. Most of the time, these programs only upload to the database, so there is no possibility for malicious input from outside actors. Unless you have commands enabled. If you have commands enabled, it's entirely possible for a malicious actor to upload data to solarthing-open, which will eventually be downloaded by the program that accepts commands, and potentially logged.

The third possibility is the SolarThing automation program. The automation program queries solarthing-open,

So can someone actually exploit this? If you don't trust the people on your local network for some reason, or have your CouchDB database open to the entire Internet for anyone to upload to solarthing-open, then it might be worth disabling commands for the time being.

Summary

While all setups have this particular vulnerability, if you have a default setup without commands enabled and without an automation program, your SolarThing program is not vulnerable as there is no way that I am aware of to exploit this vulnerability.

Remember this vulnerability could only be exploited by someone with access to your CouchDB database, so you likely do not have to worry about it if you trust the devices on your local network.

When the next version of SolarThing is released, I recommend everyone to upgrade. The next release will fix this vulnerability, plus add some new features (that most people won't use anyway)

If anyone who uses SolarThing ends up reading this and has questions on how their setups could be affected, I'm happy to answers any questions about it.

Error in GraphQL program for some elements of CouchDB query

Oct 29 21:13:28 nasplex run.sh[27893]: Caused by: me.retrodaredevil.couchdbjava.exception.CouchDbException: Connection failed!
Oct 29 21:13:28 nasplex run.sh[27893]:         at me.retrodaredevil.couchdbjava.okhttp.OkHttpCouchDbInstance.executeCall(OkHttpCouchDbInstance.java:105) ~[couchdb-java-d41524674a.jar!/:na]
Oct 29 21:13:28 nasplex run.sh[27893]:         at me.retrodaredevil.couchdbjava.okhttp.OkHttpCouchDbInstance.executeAndHandle(OkHttpCouchDbInstance.java:94) ~[couchdb-java-d41524674a.jar!/:na]
Oct 29 21:13:28 nasplex run.sh[27893]:         at me.retrodaredevil.couchdbjava.okhttp.OkHttpCouchDbDatabase.getDocumentsBulk(OkHttpCouchDbDatabase.java:265) ~[couchdb-java-d41524674a.jar!/:na]
Oct 29 21:13:28 nasplex run.sh[27893]:         at me.retrodaredevil.solarthing.rest.cache.CacheHandler.queryOrCalculateCaches(CacheHandler.java:150) ~[classes!/:na]
Oct 29 21:13:28 nasplex run.sh[27893]:         ... 84 common frames omitted
Oct 29 21:13:28 nasplex run.sh[27893]: Caused by: com.fasterxml.jackson.databind.exc.ValueInstantiationException: Cannot construct instance of `me.retrodaredevil.couchdbjava.response.BulkGetResponse$InnerResult`, problem: Both "ok" and "error" cannot be present at the same time!
Oct 29 21:13:28 nasplex run.sh[27893]:  at [Source: (okhttp3.ResponseBody$BomAwareReader); line: 1, column: 96857] (through reference chain: me.retrodaredevil.couchdbjava.response.BulkGetResponse["results"]->java.util.ArrayList[82]->me.retrodaredevil.couchdbjava.response.BulkGetResponse$Result["docs"]->java.util.ArrayList[0])
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.exc.ValueInstantiationException.from(ValueInstantiationException.java:47) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.DeserializationContext.instantiationException(DeserializationContext.java:1907) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.wrapAsJsonMappingException(StdValueInstantiator.java:587) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.rewrapCtorProblem(StdValueInstantiator.java:610) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.std.StdValueInstantiator.createFromObjectWith(StdValueInstantiator.java:293) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.ValueInstantiator.createFromObjectWith(ValueInstantiator.java:288) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.impl.PropertyBasedCreator.build(PropertyBasedCreator.java:202) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:520) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1405) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:362) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:195) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer._deserializeFromArray(CollectionDeserializer.java:355) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:244) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:28) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:542) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:565) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:449) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1405) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:362) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:195) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer._deserializeFromArray(CollectionDeserializer.java:355) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:244) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.std.CollectionDeserializer.deserialize(CollectionDeserializer.java:28) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.SettableBeanProperty.deserialize(SettableBeanProperty.java:542) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeWithErrorWrapping(BeanDeserializer.java:565) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.BeanDeserializer._deserializeUsingPropertyBased(BeanDeserializer.java:449) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.deserializeFromObjectUsingNonDefault(BeanDeserializerBase.java:1405) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserializeFromObject(BeanDeserializer.java:362) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:195) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.deser.DefaultDeserializationContext.readRootValue(DefaultDeserializationContext.java:322) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.ObjectReader._bindAndClose(ObjectReader.java:2033) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at com.fasterxml.jackson.databind.ObjectReader.readValue(ObjectReader.java:1458) ~[jackson-databind-2.12.3.jar!/:2.12.3]
Oct 29 21:13:28 nasplex run.sh[27893]:         at retrofit2.converter.jackson.JacksonResponseBodyConverter.convert(JacksonResponseBodyConverter.java:33) ~[converter-jackson-2.9.0.jar!/:na]
Oct 29 21:13:28 nasplex run.sh[27893]:         at retrofit2.converter.jackson.JacksonResponseBodyConverter.convert(JacksonResponseBodyConverter.java:23) ~[converter-jackson-2.9.0.jar!/:na]
Oct 29 21:13:28 nasplex run.sh[27893]:         at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:243) ~[retrofit-2.9.0.jar!/:na]
Oct 29 21:13:28 nasplex run.sh[27893]:         at retrofit2.OkHttpCall.execute(OkHttpCall.java:204) ~[retrofit-2.9.0.jar!/:na]
Oct 29 21:13:28 nasplex run.sh[27893]:         at me.retrodaredevil.couchdbjava.okhttp.OkHttpCouchDbInstance.executeCall(OkHttpCouchDbInstance.java:103) ~[couchdb-java-d41524674a.jar!/:na]
Oct 29 21:13:28 nasplex run.sh[27893]:         ... 87 common frames omitted

Solcast Unknown Host

Here's an error I was getting the GraphQL program when it tried to get Solcast data

Oct 29 20:29:49 nasplex run.sh[624]: 2021-10-29 20:29:49.581  INFO 732 --- [nio-8080-exec-1] o.s.web.servlet.DispatcherServlet        : Completed initialization in 1 ms
Oct 29 20:29:50 nasplex run.sh[624]: Didn't have to get any data
Oct 29 20:29:50 nasplex run.sh[624]: Going to retrieve forecasts from solcast!
Oct 29 20:30:00 nasplex run.sh[624]: Going to retrieve forecasts from solcast!
Oct 29 20:30:00 nasplex run.sh[624]: Going to retrieve forecasts from solcast!
Oct 29 20:30:00 nasplex run.sh[624]: 2021-10-29 20:30:00.927  WARN 732 --- [nio-8080-exec-4] n.g.e.SimpleDataFetcherExceptionHandler  : Exception while fetching data (/data/data) 
Oct 29 20:30:00 nasplex run.sh[624]: java.net.UnknownHostException: api.solcast.com.au
Oct 29 20:30:00 nasplex run.sh[624]:         at java.base/java.net.InetAddress$CachedAddresses.get(InetAddress.java:797) ~[na:na]
Oct 29 20:30:00 nasplex run.sh[624]:         at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1509) ~[na:na]
Oct 29 20:30:00 nasplex run.sh[624]:         at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1368) ~[na:na]
Oct 29 20:30:00 nasplex run.sh[624]:         at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1302) ~[na:na]
Oct 29 20:30:00 nasplex run.sh[624]:         at okhttp3.Dns$Companion$DnsSystem.lookup(Dns.kt:49) ~[okhttp-4.9.1.jar!/:na]
Oct 29 20:30:00 nasplex run.sh[624]:         at okhttp3.internal.connection.RouteSelector.resetNextInetSocketAddress(RouteSelector.kt:164) ~[okhttp-4.9.1.jar!/:na]
Oct 29 20:30:00 nasplex run.sh[624]:         at okhttp3.internal.connection.RouteSelector.nextProxy(RouteSelector.kt:129) ~[okhttp-4.9.1.jar!/:na]
Oct 29 20:30:00 nasplex run.sh[624]:         at okhttp3.internal.connection.RouteSelector.next(RouteSelector.kt:71) ~[okhttp-4.9.1.jar!/:na]

Re-Read dummy file

This is very much a "nice to have" but it seems that the rover dummy file only get's read once at startup. I am working with various graph and alert settings and it would be nice to just change the dummy.json file and have it be re-read. I guess that's a bit problematic with timing and all so it might not be worth it. Just a thought.

install for renogy DCC50S

Hi,
maybe I missed something but could you guide me how to install and config
for Renogy DCC50S?

in quick I only found reference to Rover

Rover Quickstart - Monitors Renogy Rover and other supported products

Thanks for your support

BR Thomas

Changing reporting frequency?

Hello,
is there an option I can put in base.json to change the reporting frequency? It seems to be set to around 5s now and I would like to change it to something like 30s or 60s.

Can't access influxdb database

Is there any reason to think that solarthing is incompatible with InfluxDB OSS 2.0? It just came out about 10 days ago. I didn't have solarthing working with InfluxDB 1.x either so I don't know if that's the problem.

I followed these instructions to set up InfluxDB: https://docs.influxdata.com/influxdb/v2.0/get-started/
The server is running because I can access http://localhost:8086 and can log in. I used the InfluxDB configuration wizard to create a new user, password, organization, and bucket. I copied the user name and password into influxdb.json.

When I run setup.sh I see data from the Renogy plus this error:

2020-12-02 11:07:40.115 [main] INFO  org.influxdb - --> POST http://localhost:8086/query?q=CREATE+DATABASE+default_database (0-byte body)
2020-12-02 11:07:40.166 [main] INFO  org.influxdb - <-- 401 Unauthorized http://localhost:8086/query?q=CREATE+DATABASE+default_database (50ms, 48-byte body)
2020-12-02 11:07:40.175 [main] ERROR me.retrodaredevil.solarthing.program.PacketListReceiverHandler - Couldn't packet collection id: 2020,12,02,11,(04/30),[e6f29dcc] dateMillis: 1606928859542
me.retrodaredevil.solarthing.packets.handling.PacketHandleException: Unable to query the database!

Here is my base.json:

{
  "analytics_enabled": false,
  "type": "rover",
  "source": "default",
  "fragment": 2,
  "unique": 30,
  "databases": [
    "config/influxdb.json"
  ],
  "io": "config/default_linux_serial.json",
  "modbus": 1
}

Here is my influxdb.json:

{
  "type": "influxdb",
  "config": {
    "url": "http://localhost:8086",
    "username": "<redacted>",
    "password": "<redacted>",
    "database": "default_database",
    "measurement": null,

    "status_retention_policies": [
      {
        "frequency": 120,
        "name": "autogen"
      }
    ],

    "event_retention_policy": {
      "name": "autogen"
    }
  }
}

Any ideas on why solarthing can't access my InfluxDB database?

New Renogy 60amp Controller Modbus Exception

It appears that the new Renogy 60amp Controller may have made some changes. I had solarthing and grafana up and working with my 30amp controller, I upgraded to the 60 amp and now I keep getting a Modbus Exception. I will update if I make any progress but if anybody else has any ideas/suggestions I am open to hear them.

usb issue raspberry usp port changing

Hi

I have an issue using more usb devices on the raspberry.
USB names are changing after rebooting.

I tried to define the port diffent in config

{ "type": "serial", "port": "/dev/serial/by-path/platform-3f980000.usb-usb-0:1.5:1.0-port", "serial_config": null }

but looks like it is not working .

2021-04-13 07:39:16.498 [main] ERROR me.retrodaredevil.solarthing.io.ReloadableIOBundle - Could not create IOBundle
java.lang.RuntimeException: java.io.FileNotFoundException: usb_path.json (No such file or directory)
	at me.retrodaredevil.solarthing.program.SolarMain.createIOBundle(SolarMain.java:129) ~[solarthing-2021.3.2.jar:?]
	at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$7(RoverMain.java:133) ~[solarthing-2021.3.2.jar:?]
	at me.retrodaredevil.solarthing.io.ReloadableIOBundle.reload(ReloadableIOBundle.java:54) [solarthing-2021.3.2.jar:?]
	at me.retrodaredevil.solarthing.io.ReloadableIOBundle.<init>(ReloadableIOBundle.java:29) [solarthing-2021.3.2.jar:?]
	at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:133) [solarthing-2021.3.2.jar:?]
	at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:54) [solarthing-2021.3.2.jar:?]
	at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:106) [solarthing-2021.3.2.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:195) [solarthing-2021.3.2.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:235) [solarthing-2021.3.2.jar:?]
	at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:263) [solarthing-2021.3.2.jar:?]
Caused by: java.io.FileNotFoundException: usb_path.json (No such file or directory)
	at java.io.FileInputStream.open0(Native Method) ~[?:?]
	at java.io.FileInputStream.open(FileInputStream.java:219) ~[?:?]
	at java.io.FileInputStream.<init>(FileInputStream.java:157) ~[?:?]
	at me.retrodaredevil.solarthing.program.SolarMain.createIOBundle(SolarMain.java:127) ~[solarthing-2021.3.2.jar:?]
	... 9 more

any other way to fix usb port?

Throw better exception for TooManyRequests for solcast

This isn't a bug report, just a way to document the fact that we should get a better exception for this:

Oct 29 23:27:56 nasplex run.sh[1703]: 2021-10-29 23:27:56.161  WARN 1711 --- [nio-8080-exec-5] n.g.e.SimpleDataFetcherExceptionHandler  : Exception while fetching data (/data/data) : Error! Code: 429 message: {"response_status":{"error_code":"TooManyRequests","message":"You have exceeded your free daily limit.","errors":[]}}
Oct 29 23:27:56 nasplex run.sh[1703]: java.io.IOException: Error! Code: 429 message: {"response_status":{"error_code":"TooManyRequests","message":"You have exceeded your free daily limit.","errors":[]}}
Oct 29 23:27:56 nasplex run.sh[1703]:         at me.retrodaredevil.solarthing.solcast.rooftop.EstimatedActualRetriever$1.createException(EstimatedActualRetriever.java:45) ~[serviceapi-0.0.1-SNAPSHOT.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at me.retrodaredevil.solarthing.solcast.rooftop.EstimatedActualRetriever$1.retrieveForecast(EstimatedActualRetriever.java:39) ~[serviceapi-0.0.1-SNAPSHOT.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at me.retrodaredevil.solarthing.solcast.rooftop.EstimatedActualCache.updateFutureForecastsAndEstimatedActuals(EstimatedActualCache.java:101) ~[serviceapi-0.0.1-SNAPSHOT.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at me.retrodaredevil.solarthing.solcast.rooftop.EstimatedActualCache.getEstimatedActuals(EstimatedActualCache.java:56) ~[serviceapi-0.0.1-SNAPSHOT.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at me.retrodaredevil.solarthing.rest.graphql.service.SolarThingGraphQLSolcastService$SolarThingSolcastDayQuery.queryEnergyEstimate(SolarThingGraphQLSolcastService.java:178) ~[classes!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at jdk.internal.reflect.GeneratedMethodAccessor80.invoke(Unknown Source) ~[na:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at io.leangen.graphql.metadata.execution.MethodInvoker.execute(MethodInvoker.java:26) ~[spqr-0.11.2.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at io.leangen.graphql.metadata.Resolver.resolve(Resolver.java:102) ~[spqr-0.11.2.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at io.leangen.graphql.execution.OperationExecutor.lambda$execute$1(OperationExecutor.java:93) ~[spqr-0.11.2.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at io.leangen.graphql.execution.OperationExecutor.execute(OperationExecutor.java:103) ~[spqr-0.11.2.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at io.leangen.graphql.execution.OperationExecutor.execute(OperationExecutor.java:99) ~[spqr-0.11.2.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at io.leangen.graphql.execution.OperationExecutor.execute(OperationExecutor.java:58) ~[spqr-0.11.2.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at graphql.execution.ExecutionStrategy.fetchField(ExecutionStrategy.java:270) ~[graphql-java-16.2.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at graphql.execution.ExecutionStrategy.resolveFieldWithInfo(ExecutionStrategy.java:203) ~[graphql-java-16.2.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at graphql.execution.AsyncExecutionStrategy.execute(AsyncExecutionStrategy.java:60) ~[graphql-java-16.2.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at graphql.execution.ExecutionStrategy.completeValueForObject(ExecutionStrategy.java:646) ~[graphql-java-16.2.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at graphql.execution.ExecutionStrategy.completeValue(ExecutionStrategy.java:438) ~[graphql-java-16.2.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at graphql.execution.ExecutionStrategy.completeField(ExecutionStrategy.java:390) ~[graphql-java-16.2.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at graphql.execution.ExecutionStrategy.lambda$resolveFieldWithInfo$1(ExecutionStrategy.java:205) ~[graphql-java-16.2.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at java.base/java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:680) ~[na:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at java.base/java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:658) ~[na:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at java.base/java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2094) ~[na:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at graphql.execution.ExecutionStrategy.resolveFieldWithInfo(ExecutionStrategy.java:204) ~[graphql-java-16.2.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at graphql.execution.AsyncExecutionStrategy.execute(AsyncExecutionStrategy.java:60) ~[graphql-java-16.2.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at graphql.execution.Execution.executeOperation(Execution.java:165) ~[graphql-java-16.2.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at graphql.execution.Execution.execute(Execution.java:104) ~[graphql-java-16.2.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at graphql.GraphQL.execute(GraphQL.java:557) ~[graphql-java-16.2.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at graphql.GraphQL.parseValidateAndExecute(GraphQL.java:482) ~[graphql-java-16.2.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at graphql.GraphQL.executeAsync(GraphQL.java:446) ~[graphql-java-16.2.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at java.base/java.util.concurrent.CompletableFuture.uniComposeStage(CompletableFuture.java:1106) ~[na:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at java.base/java.util.concurrent.CompletableFuture.thenCompose(CompletableFuture.java:2235) ~[na:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at graphql.spring.web.servlet.components.DefaultGraphQLInvocation.invoke(DefaultGraphQLInvocation.java:41) ~[graphql-java-spring-webmvc-2.0.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at graphql.spring.web.servlet.components.GraphQLController.executeRequest(GraphQLController.java:150) ~[graphql-java-spring-webmvc-2.0.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at graphql.spring.web.servlet.components.GraphQLController.graphqlPOST(GraphQLController.java:84) ~[graphql-java-spring-webmvc-2.0.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at jdk.internal.reflect.GeneratedMethodAccessor62.invoke(Unknown Source) ~[na:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:197) ~[spring-web-5.3.8.jar!/:5.3.8]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:141) ~[spring-web-5.3.8.jar!/:5.3.8]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:106) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:894) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1063) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
Oct 29 23:27:56 nasplex run.sh[1703]:         at javax.servlet.http.HttpServlet.service(HttpServlet.java:652) ~[tomcat-embed-core-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883) ~[spring-webmvc-5.3.8.jar!/:5.3.8]
Oct 29 23:27:56 nasplex run.sh[1703]:         at javax.servlet.http.HttpServlet.service(HttpServlet.java:733) ~[tomcat-embed-core-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:227) ~[tomcat-embed-core-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-5.3.8.jar!/:5.3.8]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.8.jar!/:5.3.8]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-5.3.8.jar!/:5.3.8]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.8.jar!/:5.3.8]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-5.3.8.jar!/:5.3.8]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:119) ~[spring-web-5.3.8.jar!/:5.3.8]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:189) ~[tomcat-embed-core-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:162) ~[tomcat-embed-core-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:202) ~[tomcat-embed-core-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:143) ~[tomcat-embed-core-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374) ~[tomcat-embed-core-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:893) ~[tomcat-embed-core-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1707) ~[tomcat-embed-core-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) ~[tomcat-embed-core-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-9.0.46.jar!/:na]
Oct 29 23:27:56 nasplex run.sh[1703]:         at java.base/java.lang.Thread.run(Thread.java:829) ~[na:na]

Rover RS-232

Hello,
Thank you for the solarthing!

I've been trying to connect Rover>>>RJ12Cable>>>FT3232RL>>>USBCable>>>RasPi, but no communication.

Could you please clarify the wire connections with the rover, I'm getting Tx-GND(-5.6v) Rx-GND(-0.07v) from its RJ12 port, see attached image for reference:

RoverRJ12

java.lang.ClassNotFoundException: okhttp3.internal.http2.StreamResetException

This error occurred randomly. This issue serves to document that it happened.

2021-06-13 09:13:30,805 main ERROR An exception occurred processing Appender logAll org.apache.logging.log4j.core.appender.AppenderLoggingException: java.lang.NoClassDefFoundError: org/apache/logging/log4j/core/impl/ThrowableProxy
        at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:160)
        at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129)
        at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120)
        at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)
        at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:543)
        at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:502)
        at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:485)
        at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:460)
        at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:82)
        at org.apache.logging.log4j.core.Logger.log(Logger.java:161)
        at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2205)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2159)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2142)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2017)
        at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1983)
        at org.apache.logging.slf4j.Log4jLogger.error(Log4jLogger.java:354)
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:129)
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:157)
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:196)
Caused by: java.lang.NoClassDefFoundError: org/apache/logging/log4j/core/impl/ThrowableProxy
        at org.apache.logging.log4j.core.impl.MutableLogEvent.getThrownProxy(MutableLogEvent.java:347)
        at org.apache.logging.log4j.core.pattern.ExtendedThrowablePatternConverter.format(ExtendedThrowablePatternConverter.java:63)
        at org.apache.logging.log4j.core.pattern.PatternFormatter.format(PatternFormatter.java:38)
        at org.apache.logging.log4j.core.layout.PatternLayout$PatternSerializer.toSerializable(PatternLayout.java:345)
        at org.apache.logging.log4j.core.layout.PatternLayout.toText(PatternLayout.java:244)
        at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:229)
        at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:59)
        at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:197)
        at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:190)
        at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:181)
        at org.apache.logging.log4j.core.appender.RollingFileAppender.append(RollingFileAppender.java:312)
        at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156)
        ... 18 more
Caused by: java.lang.ClassNotFoundException: org.apache.logging.log4j.core.impl.ThrowableProxy
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
        ... 30 more
2021-06-13 09:13:30,813 main ERROR An exception occurred processing Appender logInfo org.apache.logging.log4j.core.appender.AppenderLoggingException: java.lang.NoClassDefFoundError: org/apache/logging/log4j/core/impl/ThrowableProxy
        at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:160)
        at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129)
        at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120)
        at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)
        at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:543)
        at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:502)
        at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:485)
        at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:460)
        at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:82)
        at org.apache.logging.log4j.core.Logger.log(Logger.java:161)
        at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2205)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2159)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2142)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2017)
        at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1983)
        at org.apache.logging.slf4j.Log4jLogger.error(Log4jLogger.java:354)
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:129)
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:157)
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:196)
Caused by: java.lang.NoClassDefFoundError: org/apache/logging/log4j/core/impl/ThrowableProxy
        at org.apache.logging.log4j.core.impl.MutableLogEvent.getThrownProxy(MutableLogEvent.java:347)
        at org.apache.logging.log4j.core.pattern.ExtendedThrowablePatternConverter.format(ExtendedThrowablePatternConverter.java:63)
        at org.apache.logging.log4j.core.pattern.PatternFormatter.format(PatternFormatter.java:38)
        at org.apache.logging.log4j.core.layout.PatternLayout$PatternSerializer.toSerializable(PatternLayout.java:345)
        at org.apache.logging.log4j.core.layout.PatternLayout.toText(PatternLayout.java:244)
        at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:229)
        at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:59)
        at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:197)
        at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:190)
        at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:181)
        at org.apache.logging.log4j.core.appender.RollingFileAppender.append(RollingFileAppender.java:312)
        at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156)
        ... 18 more
2021-06-13 09:13:30,817 main ERROR An exception occurred processing Appender logSummary org.apache.logging.log4j.core.appender.AppenderLoggingException: java.lang.NoClassDefFoundError: org/apache/logging/log4j/core/impl/ThrowableProxy
        at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:160)
        at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129)
        at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120)
        at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)
        at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:543)
        at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:502)
        at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:485)
        at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:460)
        at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:82)
        at org.apache.logging.log4j.core.Logger.log(Logger.java:161)
        at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2205)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2159)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2142)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2017)
        at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1983)
        at org.apache.logging.slf4j.Log4jLogger.error(Log4jLogger.java:354)
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:129)
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:157)
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:196)
Caused by: java.lang.NoClassDefFoundError: org/apache/logging/log4j/core/impl/ThrowableProxy
        at org.apache.logging.log4j.core.impl.MutableLogEvent.getThrownProxy(MutableLogEvent.java:347)
        at org.apache.logging.log4j.core.pattern.ExtendedThrowablePatternConverter.format(ExtendedThrowablePatternConverter.java:63)
        at org.apache.logging.log4j.core.pattern.PatternFormatter.format(PatternFormatter.java:38)
        at org.apache.logging.log4j.core.layout.PatternLayout$PatternSerializer.toSerializable(PatternLayout.java:345)
        at org.apache.logging.log4j.core.layout.PatternLayout.toText(PatternLayout.java:244)
        at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:229)
        at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:59)
        at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:197)
        at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:190)
        at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:181)
        at org.apache.logging.log4j.core.appender.RollingFileAppender.append(RollingFileAppender.java:312)
        at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156)
        ... 18 more
2021-06-13 09:13:30,819 main ERROR An exception occurred processing Appender Console org.apache.logging.log4j.core.appender.AppenderLoggingException: java.lang.NoClassDefFoundError: org/apache/logging/log4j/core/impl/ThrowableProxy
        at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:160)
        at org.apache.logging.log4j.core.config.AppenderControl.callAppender0(AppenderControl.java:129)
        at org.apache.logging.log4j.core.config.AppenderControl.callAppenderPreventRecursion(AppenderControl.java:120)
        at org.apache.logging.log4j.core.config.AppenderControl.callAppender(AppenderControl.java:84)
        at org.apache.logging.log4j.core.config.LoggerConfig.callAppenders(LoggerConfig.java:543)
        at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:502)
        at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:485)
        at org.apache.logging.log4j.core.config.LoggerConfig.logParent(LoggerConfig.java:534)
        at org.apache.logging.log4j.core.config.LoggerConfig.processLogEvent(LoggerConfig.java:504)
        at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:485)
        at org.apache.logging.log4j.core.config.LoggerConfig.log(LoggerConfig.java:460)
        at org.apache.logging.log4j.core.config.AwaitCompletionReliabilityStrategy.log(AwaitCompletionReliabilityStrategy.java:82)
        at org.apache.logging.log4j.core.Logger.log(Logger.java:161)
        at org.apache.logging.log4j.spi.AbstractLogger.tryLogMessage(AbstractLogger.java:2205)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessageTrackRecursion(AbstractLogger.java:2159)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessageSafely(AbstractLogger.java:2142)
        at org.apache.logging.log4j.spi.AbstractLogger.logMessage(AbstractLogger.java:2017)
        at org.apache.logging.log4j.spi.AbstractLogger.logIfEnabled(AbstractLogger.java:1983)
        at org.apache.logging.slf4j.Log4jLogger.error(Log4jLogger.java:354)
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:129)
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:157)
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:196)
Caused by: java.lang.NoClassDefFoundError: org/apache/logging/log4j/core/impl/ThrowableProxy
        at org.apache.logging.log4j.core.impl.MutableLogEvent.getThrownProxy(MutableLogEvent.java:347)
        at org.apache.logging.log4j.core.pattern.ExtendedThrowablePatternConverter.format(ExtendedThrowablePatternConverter.java:63)
        at org.apache.logging.log4j.core.pattern.PatternFormatter.format(PatternFormatter.java:38)
        at org.apache.logging.log4j.core.layout.PatternLayout$PatternSerializer.toSerializable(PatternLayout.java:345)
        at org.apache.logging.log4j.core.layout.PatternLayout.toText(PatternLayout.java:244)
        at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:229)
        at org.apache.logging.log4j.core.layout.PatternLayout.encode(PatternLayout.java:59)
        at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.directEncodeEvent(AbstractOutputStreamAppender.java:197)
        at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.tryAppend(AbstractOutputStreamAppender.java:190)
        at org.apache.logging.log4j.core.appender.AbstractOutputStreamAppender.append(AbstractOutputStreamAppender.java:181)
        at org.apache.logging.log4j.core.config.AppenderControl.tryCallAppender(AppenderControl.java:156)
        ... 21 more
2021-06-13 09:13:30.820 [main] DEBUG me.retrodaredevil.solarthing.program.SolarMain - Going to shutdown LogManager.
java.lang.NoClassDefFoundError: okhttp3/internal/http2/StreamResetException
        at okhttp3.internal.connection.ExchangeFinder.trackFailure(ExchangeFinder.kt:261)
        at okhttp3.internal.connection.Exchange.trackFailure(Exchange.kt:166)
        at okhttp3.internal.connection.Exchange.readResponseHeaders(Exchange.kt:111)
        at okhttp3.internal.http.CallServerInterceptor.intercept(CallServerInterceptor.kt:79)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
        at okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.kt:34)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
        at okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.kt:95)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
        at okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.kt:83)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
        at okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.kt:76)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
        at me.retrodaredevil.couchdbjava.okhttp.OkHttpCouchDbInstance.lambda$new$0(OkHttpCouchDbInstance.java:47)
        at okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.kt:109)
        at okhttp3.internal.connection.RealCall.getResponseWithInterceptorChain$okhttp(RealCall.kt:201)
        at okhttp3.internal.connection.RealCall.execute(RealCall.kt:154)
        at retrofit2.OkHttpCall.execute(OkHttpCall.java:204)
        at me.retrodaredevil.couchdbjava.okhttp.OkHttpCouchDbInstance.executeCall(OkHttpCouchDbInstance.java:103)
        at me.retrodaredevil.couchdbjava.okhttp.OkHttpCouchDbInstance.executeAndHandle(OkHttpCouchDbInstance.java:94)
        at me.retrodaredevil.couchdbjava.okhttp.OkHttpCouchDbDatabase.queryView(OkHttpCouchDbDatabase.java:235)
        at me.retrodaredevil.solarthing.database.couchdb.CouchDbMillisDatabase.query(CouchDbMillisDatabase.java:43)
        at me.retrodaredevil.solarthing.program.AutomationMain.startAutomation(AutomationMain.java:66)
        at me.retrodaredevil.solarthing.program.AutomationMain.startAutomation(AutomationMain.java:43)
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:125)
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:157)
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:196)
Caused by: java.lang.ClassNotFoundException: okhttp3.internal.http2.StreamResetException
        at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
        at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)

java -version results:

openjdk version "11.0.8" 2020-07-14
OpenJDK Runtime Environment (build 11.0.8+10-post-Debian-1deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.8+10-post-Debian-1deb10u1, mixed mode, sharing)

Start up log messages:

2021-06-12 19:33:39.881 [main] INFO  me.retrodaredevil.solarthing.program.SolarMain - [LOG] Beginning main. Jar: solarthing-SNAPSHOT.jar Java version: 11.0.8
[stdout] Beginning main. Jar: solarthing-SNAPSHOT.jar Java version: 11.0.8
[stderr] Beginning main. Jar: solarthing-SNAPSHOT.jar Java version: 11.0.8

Support consumed power upload to PVOutput with Rover

Would it be possible to make the Renogy Rover also output its used power to PVOutput? If I understand it right, this is where energy generation and consumption are set for upload but consumption is only set for fx inverter packets at the moment.

Rover 20A with Rasperry Pi Modbus exeption

Hi,
I get the following error:

2021-03-09 14:32:57.681 [main] ERROR me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Modbus exception
me.retrodaredevil.io.modbus.handling.ParsedResponseDataLengthException: Expected a length of 35. Got a length of 4 instead!
        at me.retrodaredevil.io.modbus.handling.HandleResponseHelper.checkResponse(HandleResponseHelper.java:28) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.io.modbus.handling.ReadHoldingRegisters.handleResponse(ReadHoldingRegisters.java:61) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.io.modbus.handling.ReadHoldingRegisters.handleResponse(ReadHoldingRegisters.java:13) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.io.modbus.ModbusSlave.sendRequestMessage(ModbusSlave.java:25) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cache(ModbusCacheSlave.java:28) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.modbus.ModbusCacheSlave.cacheRangeInclusive(ModbusCacheSlave.java:36) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$3(RoverMain.java:85) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRoverProgram$8(RoverMain.java:138) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverPacketListUpdater.receive(RoverPacketListUpdater.java:66) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.packets.handling.PacketListReceiverMultiplexer.receive(PacketListReceiverMultiplexer.java:21) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RequestMain.startRequestProgram(RequestMain.java:111) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.lambda$doRover$2(RoverMain.java:83) ~[solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRoverProgram(RoverMain.java:144) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.doRover(RoverMain.java:51) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.RoverMain.connectRover(RoverMain.java:103) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMainCommand(SolarMain.java:204) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.doMain(SolarMain.java:244) [solarthing-2021.3.0.jar:?]
        at me.retrodaredevil.solarthing.program.SolarMain.main(SolarMain.java:272) [solarthing-2021.3.0.jar:?]
2021-03-09 14:32:57.685 [main] INFO  me.retrodaredevil.solarthing.program.RoverPacketListUpdater - Communication with rover working well. Got this response back: function code=0x03 data='00 0A 00 11' feel free to open issue at https://github.com/wildmountainfarms/solarthing/issues/
2021-03-09 14:32:57.686 [main] DEBUG me.retrodaredevil.solarthing.program.RequestMain - Going to sleep for 4957ms

It is a brand new Rover, never connected to any BT Adapters.
Thank you

BR Chris

renogy dcc50s bt-2 modbus exception

Hi
Iwas testing the renogy Bluetooth module bt-2

having a requestion,

once connected the BT-2 to the renogy I had an issue with other serial readings

I do not get any serial data when bt was disconnected again?
Modbus exception error. no answer

have you experienced something like this?

Thanks T

Slack chatbot sometimes processes messages more than once

Here's some log info about a single message I sent in slack being processed multiple times

2021-11-21 21:19:40.183 [socket-mode-message-processor-worker-9401] DEBUG me.retrodaredevil.solarthing.actions.chatbot.SlackChatBotAction - Got a message! type: events_api payload: {"token":"nxvyunVdmHhe4QoCaWjk15f5","team_id":"T01BR7E90F6","api_app_id":"A01BCC2C50E","event":{"client_msg_id":"f125f430-9758-4710-b29d-6e9edb3ea21e","type":"message","text":"schedule generator off for 1 hour","user":"U01BK1SET42","ts":"1637554776.000200","team":"T01BR7E90F6","blocks":[{"type":"rich_text","block_id":"qXU","elements":[{"type":"rich_text_section","elements":[{"type":"text","text":"schedule generator off for 1 hour"}]}]}],"channel":"C028EGALFNW","event_ts":"1637554776.000200","channel_type":"channel"},"type":"event_callback","event_id":"Ev02N593G14K","event_time":1637554776,"authed_users":["U01BK4FN674"],"authorizations":[{"enterprise_id":null,"team_id":"T01BR7E90F6","user_id":"U01BK4FN674","is_bot":true,"is_enterprise_install":false}],"is_ext_shared_channel":false,"event_context":"4-eyJldCI6Im1lc3NhZ2UiLCJ0aWQiOiJUMDFCUjdFOTBGNiIsImFpZCI6IkEwMUJDQzJDNTBFIiwiY2lkIjoiQzAyOEVHQUxGTlcifQ"}
2021-11-21 21:19:40.183 [socket-mode-message-processor-worker-9401] DEBUG me.retrodaredevil.solarthing.actions.chatbot.SlackChatBotAction - Message raw: {"client_msg_id":"f125f430-9758-4710-b29d-6e9edb3ea21e","type":"message","text":"schedule generator off for 1 hour","user":"U01BK1SET42","ts":"1637554776.000200","team":"T01BR7E90F6","blocks":[{"type":"rich_text","block_id":"qXU","elements":[{"type":"rich_text_section","elements":[{"type":"text","text":"schedule generator off for 1 hour"}]}]}],"channel":"C028EGALFNW","event_ts":"1637554776.000200","channel_type":"channel"}
2021-11-21 21:19:40.183 [socket-mode-message-processor-worker-9401] DEBUG me.retrodaredevil.solarthing.actions.chatbot.SlackChatBotAction - Got text: schedule generator off for 1 hour from U01BK1SET42 at 2021-11-22T04:19:36.000200Z
2021-11-21 21:19:40.261 [socket-mode-message-processor-worker-9401] DEBUG me.retrodaredevil.solarthing.actions.chatbot.SlackChatBotAction - Got a message! type: events_api payload: {"token":"nxvyunVdmHhe4QoCaWjk15f5","team_id":"T01BR7E90F6","api_app_id":"A01BCC2C50E","event":{"client_msg_id":"f125f430-9758-4710-b29d-6e9edb3ea21e","type":"message","text":"schedule generator off for 1 hour","user":"U01BK1SET42","ts":"1637554776.000200","team":"T01BR7E90F6","blocks":[{"type":"rich_text","block_id":"qXU","elements":[{"type":"rich_text_section","elements":[{"type":"text","text":"schedule generator off for 1 hour"}]}]}],"channel":"C028EGALFNW","event_ts":"1637554776.000200","channel_type":"channel"},"type":"event_callback","event_id":"Ev02N593G14K","event_time":1637554776,"authed_users":["U01BK4FN674"],"authorizations":[{"enterprise_id":null,"team_id":"T01BR7E90F6","user_id":"U01BK4FN674","is_bot":true,"is_enterprise_install":false}],"is_ext_shared_channel":false,"event_context":"4-eyJldCI6Im1lc3NhZ2UiLCJ0aWQiOiJUMDFCUjdFOTBGNiIsImFpZCI6IkEwMUJDQzJDNTBFIiwiY2lkIjoiQzAyOEVHQUxGTlcifQ"}
2021-11-21 21:19:40.261 [socket-mode-message-processor-worker-9401] DEBUG me.retrodaredevil.solarthing.actions.chatbot.SlackChatBotAction - Message raw: {"client_msg_id":"f125f430-9758-4710-b29d-6e9edb3ea21e","type":"message","text":"schedule generator off for 1 hour","user":"U01BK1SET42","ts":"1637554776.000200","team":"T01BR7E90F6","blocks":[{"type":"rich_text","block_id":"qXU","elements":[{"type":"rich_text_section","elements":[{"type":"text","text":"schedule generator off for 1 hour"}]}]}],"channel":"C028EGALFNW","event_ts":"1637554776.000200","channel_type":"channel"}
2021-11-21 21:19:40.261 [socket-mode-message-processor-worker-9401] DEBUG me.retrodaredevil.solarthing.actions.chatbot.SlackChatBotAction - Got text: schedule generator off for 1 hour from U01BK1SET42 at 2021-11-22T04:19:36.000200Z

A restart of the automation program fixed this. So I'd guess something is up with doing a new connection to slack or something.

Install fails

Hi, trying to install on a pi4 , but when i try to run 'solarthing -version I get the following:

Going to download version: 2022.3.0
--2022-06-21 00:37:54--  https://github.com/wildmountainfarms/solarthing/releases/download/v2022.3.0/solarthing-2022.3.0.jar
Resolving github.com (github.com)... 140.82.114.3
Connecting to github.com (github.com)|140.82.114.3|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://objects.githubusercontent.com/github-production-release-asset-2e65be/195026020/5cd334b1-fd68-473e-85de-84614601c2d9?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20220620%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220620T233754Z&X-Amz-Expires=300&X-Amz-Signature=c59e37bb5cf764852a034b49574b7963c0ac69504f74ef3e8de8d19b02b1fab9&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=195026020&response-content-disposition=attachment%3B%20filename%3Dsolarthing-2022.3.0.jar&response-content-type=application%2Foctet-stream [following]
--2022-06-21 00:37:54--  https://objects.githubusercontent.com/github-production-release-asset-2e65be/195026020/5cd334b1-fd68-473e-85de-84614601c2d9?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20220620%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20220620T233754Z&X-Amz-Expires=300&X-Amz-Signature=c59e37bb5cf764852a034b49574b7963c0ac69504f74ef3e8de8d19b02b1fab9&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=195026020&response-content-disposition=attachment%3B%20filename%3Dsolarthing-2022.3.0.jar&response-content-type=application%2Foctet-stream
Resolving objects.githubusercontent.com (objects.githubusercontent.com)... 185.199.109.133, 185.199.111.133, 185.199.110.133, ...
Connecting to objects.githubusercontent.com (objects.githubusercontent.com)|185.199.109.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 19688940 (19M) [application/octet-stream]
solarthing-2022.3.0.jar: Permission denied

Cannot write to ‘solarthing-2022.3.0.jar’ (Permission denied).

I am running in the /home/pi subdirectory , and for sh!ts and giggles i tried chmod 777 on the pi directory and still get the error. where is it trying to put the jar file?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.