Projekt:SpaceAPI Script

Aus k4cg.org
Version vom 29. Dezember 2015, 13:58 Uhr von Noqqe (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Am 32c3 habe ich mir gedacht, es wäre cool das K4CG im dezentralen Hackerspace Listing Directory [http://spaceapi.net spaceapi.net] aufzuführen === Anforder…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

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()