|
@@ -24,6 +24,10 @@ import math
|
|
|
# Change working dir to the same dir as this script
|
|
|
os.chdir(sys.path[0])
|
|
|
|
|
|
+
|
|
|
+# stop program if nothing is received from JeeLink for 5 min (will be restarted by systemd)
|
|
|
+serialReceived_maxAge = 300
|
|
|
+
|
|
|
config = configparser.ConfigParser()
|
|
|
config.read('jeelinklog.ini')
|
|
|
|
|
@@ -293,6 +297,9 @@ ser = serial.Serial(port=serialport,
|
|
|
|
|
|
|
|
|
checkLastUpdateInterval_lastRun = time.time() # first check after timeout expired
|
|
|
+
|
|
|
+# set serialReceivedLastTime to current time so that we can detect if nothing is received for some time
|
|
|
+serialReceivedLastTime = int(time.time())
|
|
|
|
|
|
try:
|
|
|
while True:
|
|
@@ -311,6 +318,10 @@ try:
|
|
|
|
|
|
if(serLine):
|
|
|
if serLine.find('OK 9') != -1:
|
|
|
+
|
|
|
+ # set serialReceivedLastTime to current time so that we can detect if nothing is received for some time
|
|
|
+ serialReceivedLastTime = int(time.time())
|
|
|
+
|
|
|
if verbosemode:
|
|
|
print(serLine + " = LaCrosse sensor")
|
|
|
|
|
@@ -1124,6 +1135,13 @@ try:
|
|
|
|
|
|
# handle outdated sensor values once a minute
|
|
|
if (int(time.time()) - checkLastUpdateInterval_lastRun) > checkLastUpdateInterval:
|
|
|
+
|
|
|
+ # exit program if nothing has been received from JeeLink for 5 min - will be restarted by systemd
|
|
|
+ now = int(time.time())
|
|
|
+ if (now - serialReceivedLastTime) > serialReceived_maxAge:
|
|
|
+ print("Nothing received from JeeLink for " + str(now - serialReceivedLastTime) + "s - there is something wrong. Exiting program so that it will be restarted by systemd.")
|
|
|
+ quit()
|
|
|
+
|
|
|
checkLastUpdateInterval_lastRun = int(time.time())
|
|
|
#print("check lastUpdate")
|
|
|
for key in sensors_yaml:
|