only change lastchange timestamp if the state has changed #2

Closed
egon0 wants to merge 1 commit from master into master
2 changed files with 31 additions and 8 deletions

1
lastState.txt Normal file
View file

@ -0,0 +1 @@
0 1470352249

View file

@ -7,6 +7,7 @@ import logging
fileName = "json"
url = "http://status.krautspace.de/status/button/"
laststateFile = 'lastState.txt'
data = None
# Raum Status abrufen
@ -15,7 +16,7 @@ try:
except:
logging.exception("urllib2")
else:
# Status lessen
# Status lesen
data = response.read(1)
# Data validieren
if len(data) != 1 or data not in ("0", "1"):
@ -33,19 +34,40 @@ except:
# Bereich in dem der Status steht
state = raw["state"]
# letzte Verarbeitungszeit setzen
state["lastchange"] = int(time.time())
try:
fp = file(laststateFile)
lastState, oldTimestamp = fp.readline().split()
fp.close()
except:
logging.exception("file")
exit(1)
# Status setzen
if data:
if data == "0":
state["open"] = False
state["message"] = "no human being on location"
if lastState != data:
currentTimestamp = int(time.time())
if data == "0":
state["lastchange"] = currentTimestamp
state["open"] = False
state["message"] = "no human being on location"
else:
state["lastchange"] = currentTimestamp
state["open"] = True
state["message"] = "open for public"
try:
fp = open( laststateFile, 'w' )
fp.write(data + ' ' + str(currentTimestamp))
fp.close()
except:
logging.exception("file")
exit(1)
else:
state["open"] = True
state["message"] = "open for public"
state["lastchange"] = oldTimestamp
else:
state["open"] = None
state["message"] = "open for public"
state["lastchange"] = oldTimestamp
# JSON Decodieren und ausgeben
print json.dumps(raw)