OpenHAB Digitalstrom Binding Stabilität
Leider habe ich maßive Probleme mit der Stabilität des digitalSTROM Bindings und dem digitalSTROM Server (dss). Leider auch unter openHAB 3. Deshalb habe ich das unten stehende Script entwickelt, was mir ein bisschen mehr Stabilität in mein SmartHome gebracht hat. Ich versuche hier einmal eine Sammlung mit allen möglichen Problemen zu schaffen, die mir beim Bauen meines SmartHome mit digitalSTROM und openHAB unter gekommen sind. Soll also eine kleine Wissenssammlung werden, da leider zum Thema digitalSTROM und openHAB nicht wirklich viel hilfreiches im Netz zu finden ist.
Aufgetauchte Probleme
Die folgende Probleme sind mir beim Handtieren mit openHAB und digitalSTROM aufgefallen:
- dss Antwortet nicht mehr und ist auch via Browser nicht mehr verfügbar
- Rollladen / Licht aktualisieren ihren Status nicht
- Status wird in HABPanel nicht richtig angezeigt da der Refresh des ITEM Status nicht richtig funktioniert
- diverse Verbindungsabbrüche
- SSL Handshake Probleme
- Benutzertoken wird nicht angenommen
- Beim start von openHAB Bridge Online, aber die anderen Things sind im Status Unitialized
- von 12:00 -13:00 liefern die Stromzähler keine Werte
- Amazon Alexa kann Rollladen oft nicht steuern, der digitalSTROM Server nicht erreichbar ist, oder der Thing Status der dssBridge nicht auf online steht.
Um ein paar dieser Probleme besser in den griff zu bekommen und vor allem immer zu sehen, was das Problem war, habe ich das folgende Script geschrieben. Dieses wird via cronjob automatisch ausgeführt.
digitalstrom_binding_tools.sh
Das folgende Script bietet folgende Funktionen:
- Es liest den Thing Status vom Digitalstrom Binding aus
- Einmal von der Bridge
- dann von einem Rolladen
- und von einem Stromzähler
- es startet via REST API das DSS Bridge Thing neu
- Es macht ein Refresh des Rollladen Status auf eine Gruppe wo alle Rollläden zugehörig sein sollten
- Der Autorestart Modus ermöglicht einem cron Job alle X Minuten zu prüfen ob das Binding bzw. Das DSS Bridge Thing Online ist.
- es verschickt dann via cron eine Mail mit ein paar Debug Informationen wie dem Auszug der letzten Logzeilen des
openhab.log
und einer Prüfung via Ping ob der DSS überhaupt erreichbar ist.
- es verschickt dann via cron eine Mail mit ein paar Debug Informationen wie dem Auszug der letzten Logzeilen des
Ihr könnt das Script hier herunterladen:
cd /usr/local/sbin
wget https://github.com/alaub81/openHAB/raw/master/digitalstrom_binding_tools.sh
chmod +x digitalstrom_binding_tools.sh
Falls ihr openHAB 3 verwendet, müsst ihr euch einen Token in der MainUI generieren und diesen hinter der AUTH=
Variable einfügen. Ihr findet den Punkt indem ihr in der Main UI einfach auf euren Usernamen links unten klickt und dann ganz nach unten Scrollt.
Ediert bitte die folgenden Variablen im Oberen Abschnitt:
#set the variables:
#openHAB URL
OPENHAB=https://localhost:8443
#API Authentification Token for openhab3
AUTH="oh.tokenname.hkkjbkjbQVizb8P82bKQUh7epUXFnyRJ83pQJuzZlQVdj8BJdzwjTznZQkcK1sIysEWtrWQLf2RhTg"
#digitalSTROM Things UID (%3A is :)
#digitalSTROM Bridge
BRIDGE=digitalstrom:dssBridge:eb907aa7
#digitalSTROM Rolladen
ROLLO=digitalstrom%3AGR%3Aeb907aa7%3A303505d7f8000f00000fb6e7
#digitalSTROM Stromverbrauch
WATT=digitalstrom%3Acircuit%3Aeb907aa7%3A302ed89f43f00e400000cc38
#digitalSTROM ALL Groups for refresh the Sensor Status
ALL="Rolladen_ALL Lichter_DSS_ALL"
# IP of the Digitalstrom Server
DSS=192.168.50.100
# logfile options
# Lines displayed in the output
NUMBER=30
# Where is the openhab.log
LOGFILE=/var/lib/docker/volumes/openhab_data_openhab_userdata/_data/logs/openhab.log
nun könnt ihr einen ersten Test mit den folgenden Parametern machen:
Usage: /usr/local/sbin/digitalstrom_binding_tools.sh { status | fullstatus | refresh | restart | autorestart }
hier nun das Script zum copy and pasten:
digitalstrom_binding_tools.sh
#!/bin/bash
#########################################################################
#Name: digitalstrom_binding_tools.sh
#Subscription: This Script tries to get the things with the openHAB digitalstrom
# binding more stable
#by A. Laub
#andreas[-at-]laub-home.de
#
#License:
#This program is free software: you can redistribute it and/or modify it
#under the terms of the GNU General Public License as published by the
#Free Software Foundation, either version 3 of the License, or (at your option)
#any later version.
#This program is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
#or FITNESS FOR A PARTICULAR PURPOSE.
#########################################################################
#Set the language
export LANG="en_US.UTF-8"
#Load the Pathes
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
#set the variables:
#openHAB URL
OPENHAB=https://localhost:8443
#API Authentification Token for openhab3
AUTH="oh.tokenname.hkkjbkjbQVizb8P82bKQUh7epUXFnyRJ83pQJuzZlQVdj8BJdzwjTznZQkcK1sIysEWtrWQLf2RhTg"
#digitalSTROM Things UID (%3A is :)
#digitalSTROM Bridge
BRIDGE=digitalstrom:dssBridge:eb907aa7
#digitalSTROM Rolladen
ROLLO=digitalstrom%3AGR%3Aeb907aa7%3A303505d7f8000f00000fb6e7
#digitalSTROM Stromverbrauch
WATT=digitalstrom%3Acircuit%3Aeb907aa7%3A302ed89f43f00e400000cc38
#digitalSTROM ALL Groups for refresh the Sensor Status
ALL="Rolladen_ALL Lichter_DSS_ALL"
# IP of the Digitalstrom Server
DSS=192.168.50.100
# logfile options
# Lines displayed in the output
NUMBER=30
# Where is the openhab.log
LOGFILE=/var/lib/docker/volumes/openhab_data_openhab_userdata/_data/logs/openhab.log
#do the things
function getstatus {
FULLSTATUSBRIDGE=$(curl -s -k -X GET "$OPENHAB/rest/things/$BRIDGE/status" -H "accept: application/json" -H "Authorization: Bearer $AUTH")
FULLSTATUSROLLO=$(curl -s -k -X GET "$OPENHAB/rest/things/$ROLLO/status" -H "accept: application/json" -H "Authorization: Bearer $AUTH")
FULLSTATUSWATT=$(curl -s -k -X GET "$OPENHAB/rest/things/$WATT/status" -H "accept: application/json" -H "Authorization: Bearer $AUTH")
STATUSBRIDGE=$(echo $FULLSTATUSBRIDGE | cut -d":" -f2 | cut -d"," -f1 | cut -d'"' -f2)
STATUSROLLO=$(echo $FULLSTATUSROLLO | cut -d":" -f2 | cut -d"," -f1 | cut -d'"' -f2)
STATUSWATT=$(echo $FULLSTATUSWATT | cut -d":" -f2 | cut -d"," -f1 | cut -d'"' -f2)
STATUSBRIDGEDETAIL=$(echo $FULLSTATUSWATT | cut -d":" -f3 | cut -d"," -f1 | cut -d'"' -f2)
}
function status {
echo "Bridge Status: $STATUSBRIDGE"
echo "Bridge Status Detail: $STATUSBRIDGEDETAIL"
echo "Rolladen Status: $STATUSROLLO"
echo "Verbrauch Status: $STATUSWATT"
}
function fullstatus {
echo "Bridge Fullstatus: $FULLSTATUSBRIDGE"
echo "Rolladen Fullstatus: $FULLSTATUSROLLO"
echo "Verbrauch Fullstatus: $FULLSTATUSWATT"
}
function refresh {
for i in $ALL; do
curl -s -k -X POST "$OPENHAB/rest/items/$i" -H "Content-Type: text/plain" -H "accept: */*" -H "Authorization: Bearer $AUTH" -d "REFRESH"
echo "Refresh $i Done!"
done
}
function restart {
echo "Restarting $BRIDGE"
curl -s -k -X PUT "$OPENHAB/rest/things/$BRIDGE/enable" -H "Content-Type: text/plain" -H "accept: */*" -H "Authorization: Bearer $AUTH" -d "false" > /dev/null
sleep 3
curl -s -k -X PUT "$OPENHAB/rest/things/$BRIDGE/enable" -H "Content-Type: text/plain" -H "accept: */*" -H "Authorization: Bearer $AUTH" -d "true" > /dev/null
}
function autorestart {
if [ "$STATUSBRIDGE" != "ONLINE" ] || [ "$STATUSROLLO" != "ONLINE" ] || [ "$STATUSWATT" != "ONLINE" ] || [ "$STATUSBRIDGEDETAIL" != "NONE" ]; then
echo "status is not Online!"
echo "-------------------------------------"
fullstatus
echo -e "\nConnection Test"
echo "-------------------------------------"
ping -q -c 5 $DSS
echo -e "\nlast $NUMBER line of $LOGFILE"
echo "-------------------------------------"
tail -n $NUMBER $LOGFILE
echo " "
restart
echo "-------------------------------------"
sleep 10
echo -e "\n after restart"
echo "last $NUMBER line of $LOGFILE"
echo "-------------------------------------"
tail -n $NUMBER $LOGFILE
getstatus
if [ "$STATUSBRIDGE" != "ONLINE" ] || [ "$STATUSROLLO" != "ONLINE" ] || [ "$STATUSWATT" != "ONLINE" ] || [ "$STATUSBRIDGEDETAIL" != "NONE" ]; then
echo -e "\nRestart didn't work Bridge Status!"
echo "-------------------------------------"
fullstatus
elif [ "$NEWSTATUS" = "ONLINE" ]; then
refresh
echo "\n refreshing Item Status "
echo "-------------------------------------"
fi
fi
}
case "$1" in
status)
getstatus
status
;;
fullstatus)
getstatus
status
fullstatus
;;
restart)
restart
;;
autorestart)
getstatus
autorestart
;;
refresh)
refresh
;;
*)
echo "Usage: $0 { status | fullstatus | refresh | restart | autorestart }"
exit 1
;;
esac
Damit das Ganze seinen Job erfüllt und für einen stabileren Betrieb sorgt, habe ich folgende cron
Datei angelegt:
/etc/cron.d/digitalstrom_binding
1-59/3 * * * * root /usr/local/sbin/digitalstrom_binding_tools.sh autorestart 5-59/5 * * * * root /usr/local/sbin/digitalstrom_binding_tools.sh refresh > /dev/null 0 12 * * * root /usr/local/sbin/digitalstrom_binding_tools.sh restart
Damit im Falle von einem nicht Online Zustand des digitalSTROM Binding das Bridge Thing neu gestartet wird, schaut der autorestart
job alle 3 Minuten immer zu einer ungeraden Uhrzeit nach dem Status des Thing und startet im nicht ONLINE
fall das Bridge Thing neu.
Der Zweite cronjob refreshed mittels refresh
Parameter immer um 5, 25, 45 den Status aller Rollläden.
Und cronjob Nummer drei, sorgt dafür das auch von 12:00-13:00 Daten des Stromzähler ausgelesen werden können, in dem es direkt um 12:00 das Bridge Thing einmal mittels restart
Parameter durch startet.
Mit diesem Script und einer ständigen Kontrolle der Logfiles würde ich sagen, ist das Binding einigermaßen zu gebrauchen.
Fehlermeldungen des Thing Status
"status":"OFFLINE","statusDetail":"CONFIGURATION_ERROR","description":"User defined Application-Token is wrong. Please set user name and password to generate an Application-Token or set an valid Application-Token." {"status":"OFFLINE","statusDetail":"BRIDGE_OFFLINE"}
Fehlermeldungen im openHAB Logfile
Im openhab.log kam es unter anderem zu folgenden Fehlermeldungen:
Scheduled runnable ended with an exception
2020-04-17 16:18:30.166 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception: java.lang.NullPointerException: null at org.openhab.binding.digitalstrom.internal.lib.sensorjobexecutor.AbstractSensorJobExecutor$ExecutorRunnable.run(AbstractSensorJobExecutor.java:77) ~[?:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_232] at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) ~[?:1.8.0_232] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) ~[?:1.8.0_232] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) ~[?:1.8.0_232] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_232] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_232] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_232] 2020-04-17 16:18:30.968 [WARN ] [.core.thing.binding.BaseThingHandler] - Handler BridgeHandler of thing digitalstrom:dssBridge:eb907aa7 tried updating channel total_consumption_wh although the handler was already disposed. 2020-04-17 16:18:31.105 [WARN ] [.core.thing.binding.BaseThingHandler] - Handler BridgeHandler of thing digitalstrom:dssBridge:eb907aa7 tried updating channel total_energy_wh although the handler was already disposed. 2020-04-17 16:18:31.269 [WARN ] [.core.thing.binding.BaseThingHandler] - Handler BridgeHandler tried updating the thing status although the handler was already disposed. 2020-04-17 16:18:45.752 [WARN ] [.core.thing.binding.BaseThingHandler] - Handler BridgeHandler tried updating the thing status although the handler was already disposed. 2020-04-17 16:18:46.015 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception: java.lang.NullPointerException: null at org.openhab.binding.digitalstrom.internal.lib.sensorjobexecutor.AbstractSensorJobExecutor$ExecutorRunnable.run(AbstractSensorJobExecutor.java:77) ~[?:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_232] at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) ~[?:1.8.0_232] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) ~[?:1.8.0_232] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) ~[?:1.8.0_232] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_232] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_232] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_232] 2020-04-17 16:18:46.015 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception: java.lang.NullPointerException: null at org.openhab.binding.digitalstrom.internal.lib.sensorjobexecutor.AbstractSensorJobExecutor$ExecutorRunnable.run(AbstractSensorJobExecutor.java:77) ~[?:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_232] at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) ~[?:1.8.0_232] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) ~[?:1.8.0_232] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) ~[?:1.8.0_232] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_232] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_232] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_232] 2020-04-17 16:18:46.759 [WARN ] [.core.thing.binding.BaseThingHandler] - Handler BridgeHandler of thing digitalstrom:dssBridge:eb907aa7 tried updating channel total_consumption_wh although the handler was already disposed. 2020-04-17 16:18:46.899 [WARN ] [.core.thing.binding.BaseThingHandler] - Handler BridgeHandler of thing digitalstrom:dssBridge:eb907aa7 tried updating channel total_energy_wh although the handler was already disposed. 2020-04-17 16:18:47.068 [WARN ] [.core.thing.binding.BaseThingHandler] - Handler BridgeHandler tried updating the thing status although the handler was already disposed. 2020-04-17 16:18:47.732 [WARN ] [o.internal.handler.SysteminfoHandler] - No information for channel sensors#fanSpeed with device index 0 : 2020-04-17 16:19:01.633 [WARN ] [.core.thing.binding.BaseThingHandler] - Handler BridgeHandler tried updating the thing status although the handler was already disposed. 2020-04-17 16:19:01.992 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception: java.lang.NullPointerException: null at org.openhab.binding.digitalstrom.internal.lib.sensorjobexecutor.AbstractSensorJobExecutor$ExecutorRunnable.run(AbstractSensorJobExecutor.java:77) ~[?:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_232] at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) ~[?:1.8.0_232] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) ~[?:1.8.0_232] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) ~[?:1.8.0_232] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_232] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_232] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_232]
Remote host closed connection during handshake
020-04-17 17:21:04.889 [ERROR] [verconnection.impl.HttpTransportImpl] - An IOException occurred: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:994) ~[?:1.8.0_232] at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367) ~[?:1.8.0_232] at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395) ~[?:1.8.0_232] at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379) ~[?:1.8.0_232] at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559) ~[?:1.8.0_232] at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) ~[?:1.8.0_232] at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:167) ~[?:1.8.0_232] at org.openhab.binding.digitalstrom.internal.lib.serverconnection.impl.HttpTransportImpl.execute(HttpTransportImpl.java:255) [bundleFile:?] at org.openhab.binding.digitalstrom.internal.lib.serverconnection.impl.HttpTransportImpl.execute(HttpTransportImpl.java:238) [bundleFile:?] at org.openhab.binding.digitalstrom.internal.lib.serverconnection.impl.DsAPIImpl.getLatest(DsAPIImpl.java:534) [bundleFile:?] at org.openhab.binding.digitalstrom.internal.lib.manager.impl.DeviceStatusManagerImpl.getTotalEnergyMeterValue(DeviceStatusManagerImpl.java:1213) [bundleFile:?] at org.openhab.binding.digitalstrom.internal.lib.manager.impl.DeviceStatusManagerImpl.getMeterData(DeviceStatusManagerImpl.java:1204) [bundleFile:?] at org.openhab.binding.digitalstrom.internal.lib.manager.impl.DeviceStatusManagerImpl.access$6(DeviceStatusManagerImpl.java:1199) [bundleFile:?] at org.openhab.binding.digitalstrom.internal.lib.manager.impl.DeviceStatusManagerImpl$PollingRunnable.run(DeviceStatusManagerImpl.java:272) [bundleFile:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_232] at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:1.8.0_232] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_232] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:1.8.0_232] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_232] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_232] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_232]Caused by: java.io.EOFException: SSL peer shut down incorrectly
at sun.security.ssl.InputRecord.read(InputRecord.java:505) ~[?:1.8.0_232] at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:975) ~[?:1.8.0_232] ... 20 more
Remote host closed connection during handshake
2020-04-17 19:35:34.823 [ERROR] [verconnection.impl.HttpTransportImpl] - An IOException occurred: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:994) ~[?:1.8.0_232] at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367) ~[?:1.8.0_232] at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395) ~[?:1.8.0_232] at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379) ~[?:1.8.0_232] at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559) ~[?:1.8.0_232] at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) ~[?:1.8.0_232] at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:167) ~[?:1.8.0_232] at org.openhab.binding.digitalstrom.internal.lib.serverconnection.impl.HttpTransportImpl.execute(HttpTransportImpl.java:255) [bundleFile:?] at org.openhab.binding.digitalstrom.internal.lib.serverconnection.impl.HttpTransportImpl.execute(HttpTransportImpl.java:238) [bundleFile:?] at org.openhab.binding.digitalstrom.internal.lib.serverconnection.impl.DsAPIImpl.query2(DsAPIImpl.java:1246) [bundleFile:?] at org.openhab.binding.digitalstrom.internal.lib.manager.impl.DeviceStatusManagerImpl$PollingRunnable.getDetailedDevices(DeviceStatusManagerImpl.java:407) [bundleFile:?] at org.openhab.binding.digitalstrom.internal.lib.manager.impl.DeviceStatusManagerImpl$PollingRunnable.run(DeviceStatusManagerImpl.java:254) [bundleFile:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_232] at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:1.8.0_232] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_232] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:1.8.0_232] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_232] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_232] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_232]Caused by: java.io.EOFException: SSL peer shut down incorrectly
at sun.security.ssl.InputRecord.read(InputRecord.java:505) ~[?:1.8.0_232] at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:975) ~[?:1.8.0_232] ... 18 more
String index out of range: 2
2020-04-18 20:40:22.358 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception: java.lang.StringIndexOutOfBoundsException: String index out of range: 2
at java.lang.String.substring(String.java:1963) ~[?:1.8.0_232] at org.openhab.binding.digitalstrom.internal.discovery.DiscoveryServiceManager.onDeviceAdded(DiscoveryServiceManager.java:200) ~[?:?] at org.openhab.binding.digitalstrom.internal.lib.manager.impl.DeviceStatusManagerImpl$PollingRunnable.run(DeviceStatusManagerImpl.java:345) ~[?:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_232] at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) ~[?:1.8.0_232] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) ~[?:1.8.0_232] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) ~[?:1.8.0_232] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_232] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_232] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_232]2020-04-18 20:40:23.223 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception: java.lang.NullPointerException: null
at org.openhab.binding.digitalstrom.internal.lib.sensorjobexecutor.AbstractSensorJobExecutor$ExecutorRunnable.run(AbstractSensorJobExecutor.java:77) ~[?:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_232] at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) ~[?:1.8.0_232] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) ~[?:1.8.0_232] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) ~[?:1.8.0_232] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_232] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_232] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_232]2020-04-18 20:40:25.293 [WARN ] [mmon.WrappedScheduledExecutorService] - Scheduled runnable ended with an exception: java.lang.StringIndexOutOfBoundsException: String index out of range: 2
at java.lang.String.substring(String.java:1963) ~[?:1.8.0_232] at org.openhab.binding.digitalstrom.internal.discovery.DiscoveryServiceManager.onDeviceAdded(DiscoveryServiceManager.java:200) ~[?:?] at org.openhab.binding.digitalstrom.internal.lib.manager.impl.DeviceStatusManagerImpl$PollingRunnable.run(DeviceStatusManagerImpl.java:345) ~[?:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_232] at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) ~[?:1.8.0_232] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) ~[?:1.8.0_232] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) ~[?:1.8.0_232] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_232] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_232] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_232]
Batch could not be sent. Data will be lost
2020-04-29 04:16:18.532 [ERROR] [org.influxdb.impl.BatchProcessor ] - Batch could not be sent. Data will be lost java.lang.RuntimeException: {"error":"timeout"}
at org.influxdb.impl.InfluxDBErrorHandler.handleError(InfluxDBErrorHandler.java:19) ~[influxdb-java-2.2.jar:?] at retrofit.RestAdapter$RestHandler.invoke(RestAdapter.java:242) ~[retrofit-1.9.0.jar:?] at org.influxdb.impl.$Proxy180.writePoints(Unknown Source) ~[?:?] at org.influxdb.impl.InfluxDBImpl.write(InfluxDBImpl.java:151) ~[influxdb-java-2.2.jar:?] at org.influxdb.impl.BatchProcessor.write(BatchProcessor.java:171) [influxdb-java-2.2.jar:?] at org.influxdb.impl.BatchProcessor$1.run(BatchProcessor.java:144) [influxdb-java-2.2.jar:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_232] at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:1.8.0_232] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_232] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:1.8.0_232] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_232] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_232] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_232]2020-04-29 04:42:13.025 [ERROR] [verconnection.impl.HttpTransportImpl] - An IOException occurred: javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:994) ~[?:1.8.0_232] at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367) ~[?:1.8.0_232] at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395) ~[?:1.8.0_232] at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379) ~[?:1.8.0_232] at sun.net.www.protocol.https.HttpsClient.afterConnect(HttpsClient.java:559) ~[?:1.8.0_232] at sun.net.www.protocol.https.AbstractDelegateHttpsURLConnection.connect(AbstractDelegateHttpsURLConnection.java:185) ~[?:1.8.0_232] at sun.net.www.protocol.https.HttpsURLConnectionImpl.connect(HttpsURLConnectionImpl.java:167) ~[?:1.8.0_232] at org.openhab.binding.digitalstrom.internal.lib.serverconnection.impl.HttpTransportImpl.execute(HttpTransportImpl.java:255) [bundleFile:?] at org.openhab.binding.digitalstrom.internal.lib.serverconnection.impl.HttpTransportImpl.execute(HttpTransportImpl.java:238) [bundleFile:?] at org.openhab.binding.digitalstrom.internal.lib.serverconnection.impl.DsAPIImpl.query2(DsAPIImpl.java:1244) [bundleFile:?] at org.openhab.binding.digitalstrom.internal.lib.manager.impl.DeviceStatusManagerImpl$PollingRunnable.getDetailedDevices(DeviceStatusManagerImpl.java:408) [bundleFile:?] at org.openhab.binding.digitalstrom.internal.lib.manager.impl.DeviceStatusManagerImpl$PollingRunnable.run(DeviceStatusManagerImpl.java:255) [bundleFile:?] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_232] at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308) [?:1.8.0_232] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180) [?:1.8.0_232] at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294) [?:1.8.0_232] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_232] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_232] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_232]Caused by: java.io.EOFException: SSL peer shut down incorrectly
at sun.security.ssl.InputRecord.read(InputRecord.java:505) ~[?:1.8.0_232] at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:975) ~[?:1.8.0_232] ... 18 more