summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormakefu <github@syntax-fehler.de>2017-12-06 13:46:14 +0100
committermakefu <github@syntax-fehler.de>2017-12-06 13:46:14 +0100
commit8727451b41b057d36e76cecdb543015c0f50b304 (patch)
tree82ac87acc6564beeb9c911bd254d82514e581218
parent6bda21a211ed7f140179c2ec78e2d3fdc371c916 (diff)
update
-rwxr-xr-xgoogle-muell.py111
-rw-r--r--muelldata.json42
2 files changed, 143 insertions, 10 deletions
diff --git a/google-muell.py b/google-muell.py
new file mode 100755
index 0000000..b3652cb
--- /dev/null
+++ b/google-muell.py
@@ -0,0 +1,111 @@
+#! /usr/bin/env nix-shell
+#! nix-shell -i python3 -p python3 python36Packages.docopt python36Packages.requests2 python36Packages.google_api_python_client python36Packages.dateutil
+""" usage: google-muell [options]
+
+ --esp=HOST esp8266 ip [Default: 192.168.1.23]
+ --client-secrets=FILE Path to client secrets file (from application) [Default: licht-kalender-secrets.json]
+ --credential-path=PATH Path to newly generated (or existing) credentials [Default: licht-creds.json]
+ --sleepval=SEC seconds to sleep [Default: 900]
+
+you can create the client-secrets by creating a new google application, create
+oauth2 token and download it ( url here)
+
+"""
+from docopt import docopt
+from fade import calc_chain
+import time
+from time import sleep
+import json
+import sys
+from datetime import datetime, timedelta
+import requests
+
+import httplib2
+from dateutil.parser import parse
+from apiclient import discovery
+from oauth2client import client
+from oauth2client import tools
+from oauth2client.file import Storage
+SCOPES = 'https://www.googleapis.com/auth/calendar.readonly'
+APPLICATION_NAME = 'licht-kalender-client'
+
+colormap = {
+ "8": [ 128,128,128 ], # grey
+ "9": [ 0,0,0 ], # blue
+ "11": [ 0,0,0 ],# true red
+ "4": [ 0,0,0 ], # light red
+ "3": [ 0,0,0 ], # purple
+ }
+
+def get_creds(secrets_file,credential_path):
+ '''
+ provide a cred_dir where the credentials would be stored to
+ '''
+ import argparse
+ flags = argparse.ArgumentParser(parents=[tools.argparser]).parse_args()
+
+ store = Storage(credential_path)
+ credentials = store.get()
+ if not credentials or credentials.invalid:
+ flow = client.flow_from_clientsecrets(secrets_file, SCOPES)
+ flow.user_agent = APPLICATION_NAME
+ credentials = tools.run_flow(flow, store, flags)
+ print('Storing new credentials to ' + credential_path)
+ else:
+ print('Using existing valid credentials ' + credential_path)
+
+ return credentials
+
+def next_date(credentials):
+ http = credentials.authorize(httplib2.Http())
+ service = discovery.build('calendar', 'v3', http=http)
+
+ #page_token = None
+ #while True:
+ # calendar_list = service.calendarList().list(
+ # pageToken=page_token).execute()
+ # for calendar_list_entry in calendar_list['items']:
+ # print("{} - {}".format(calendar_list_entry['id'],calendar_list_entry['summary']))
+ # page_token = calendar_list.get('nextPageToken')
+ # if not page_token:
+ # break
+
+
+ now = datetime.utcnow().isoformat() + 'Z' # 'Z' indicates UTC time
+ print('Getting the upcoming 10 events')
+ eventsResult = service.events().list(
+ calendarId='o56ig681gla2a5vupm4vgiv7tc@group.calendar.google.com', timeMin=now, maxResults=10, singleEvents=True,
+ orderBy='startTime').execute()
+ events = eventsResult.get('items', [])
+ for event in events:
+ start = parse(event['start'].get('dateTime', event['start'].get('date')))
+ if 'dateTime' in event['end']:
+ end = parse(event['end']['dateTime'])
+ else:
+ end = parse(event['end']['date']) + timedelta(days=1) - timedelta(seconds=1)
+
+ if start < datetime.now() < end:
+ print("event is active now")
+ print(start,end, event)
+
+
+ pass
+
+
+def to_payload(arr):
+ return {"r":arr[0],"g":arr[1],"b":arr[2]}
+
+def main():
+ args = docopt(__doc__)
+ client_secrets = args['--client-secrets']
+ sleepval = float(args["--sleepval"])
+ esp = args["--esp"]
+ cred_path = args["--credential-path"]
+ creds = get_creds(client_secrets,cred_path)
+ while True:
+ t = next_date(creds)
+ requests.get("http://{}/color".format(esp),params=to_payload(t))
+ sleep(sleepval)
+
+if __name__ == "__main__":
+ main()
diff --git a/muelldata.json b/muelldata.json
index c87b8a9..807581a 100644
--- a/muelldata.json
+++ b/muelldata.json
@@ -1,5 +1,5 @@
-{
- "gelber_sack": [
+[
+ {"gelber_sack": [
"2017-01-02",
"2017-01-23",
"2017-02-13",
@@ -19,12 +19,34 @@
"2017-12-04",
"2017-12-23",
"2018-01-15"
- ],
- "papiermuell": [
- ],
- "restmuell": [
- ],
- "kehrwoche": [
+ ]},
+ {"orchis": [
+ "2017-05-22",
+ "2017-06-05",
+ "2017-06-19",
+ "2017-07-03",
+ "2017-07-17",
+ "2017-07-31",
+ "2017-08-14",
+ "2017-08-28",
+ "2017-09-11",
+ "2017-09-25",
+ "2017-10-09",
+ "2017-10-23",
+ "2017-11-06",
+ "2017-11-20",
+ "2017-12-04",
+ "2017-12-18",
+ "2018-01-01",
+ "2018-01-15",
+ "2018-01-29"
+ ]},
+
+ {"papiermuell": [
+ ]},
+ {"restmuell": [
+ ]},
+ {"kehrwoche": [
"2017-05-21",
"2017-05-22",
"2017-06-11",
@@ -46,5 +68,5 @@
"2017-12-08",
"2017-12-28",
"2017-12-29"
- ]
-}
+ ]}
+]