Projekt:SpaceAPI Script
Aus k4cg.org
Am 32c3 habe ich mir gedacht, es wäre cool das K4CG im dezentralen Hackerspace Listing Directory spaceapi.net aufzuführen
Anforderungen
- JSON File auf Webserver bereitstellen
Das JSON File enthält mehrere Informationen über den Hackerspace.
- Anschrift
- Koordinaten
- Projekte
- Kontakt
Scripting
Wir brauchen für uns zwei dynamische Inhalte
- Temperatur übergeben
- Offen/Geschlossen Status
#!/usr/bin/env python2 # -*- coding: utf-8 -*- import socket from datetime import datetime, time def netcat(hostname, port, content): try: s = socket.socket(socket.AF_INET6, socket.SOCK_STREAM) s.connect((hostname, port)) s.shutdown(socket.SHUT_WR) while 1: data = s.recv(1024) if data == "": break f = data s.close() except socket.error: f = "0.00" return f temp = netcat("2001:a60:f073:0:76da:38ff:fe00:5e92", 31337, "9001").strip() def opentime(): status = "false" now = datetime.now() now_time = now.time() now_day = now.isoweekday() if now_day == 4: if now_time >= time(19,30) and now_time <= time(23,30): status = "true" return status status = opentime() JSON = """ { "api": "0.13", "space": "K4CG", [...] } """ % (temp, status, status) print JSON
Temperatur
Dafür wird eigentlich nur der Raspbi mit dem Thermometer im Space angesprochen, den wir auch schon für Stats verwenden.
temp = netcat("2001:a60:f073:0:76da:38ff:fe00:5e92", 31337, "9001").strip()
Öffnungszeiten
Um zu signalisieren, dass die K4CG offen hat, ist relativ statisch. Wir haben ja keinerlei Mechanismus wie Schliesstürsysteme oder sonstiges. Daher wird das jetzt statisch gemacht. Immer Donnerstags von 19:30 bis 23:30 wird die K4CG als "geöffnet" angezeigt.
def opentime(): status = "false" now = datetime.now() now_time = now.time() now_day = now.isoweekday() if now_day == 4: if now_time >= time(19,30) and now_time <= time(23,30): status = "true" return status status = opentime()