Projekt:SpaceAPI Script: Unterschied zwischen den Versionen
Noqqe (Diskussion | Beiträge) (SpaceAPI Realisierung) |
Noqqe (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
{{Infobox | |||
| maintainer = [[User:noqqe|noqqe]] | |||
| machine = [[Host:nixe.k4cg.org|nixe.k4cg.org]] | |||
| jahr = 2016 | |||
}} | |||
Am 32c3 habe ich mir gedacht, es wäre cool das K4CG im dezentralen Hackerspace Listing Directory [http://spaceapi.net spaceapi.net] aufzuführen | Am 32c3 habe ich mir gedacht, es wäre cool das K4CG im dezentralen Hackerspace Listing Directory [http://spaceapi.net spaceapi.net] aufzuführen | ||
Version vom 19. Januar 2016, 10:16 Uhr
Projekt:SpaceAPI Script | |
Betreuer*In | noqqe |
Jahr | 2016 |
Läuft auf | nixe.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
Realisierung
Auf Host:nixe.k4cg.org läuft ein Script unter /usr/local/spaceapi.py
dass über den Cronjob unter
/etc/nixos/services/cron.nix
alle 15 minuten den Status nach /var/www/spaceapi.k4cg.org/spaceapi.json
schreibt.
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()