Projekt:SpaceAPI Script: Unterschied zwischen den Versionen

Aus k4cg.org
(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…“)
 
Keine Bearbeitungszusammenfassung
 
(6 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Am 32c3 habe ich mir gedacht, es wäre cool das K4CG im dezentralen Hackerspace Listing Directory [http://spaceapi.net spaceapi.net] aufzuführen
{{Infobox
| maintainer = [[User:noqqe|noqqe]]
| machine = [[Host:nixe.k4cg.org|nixe.k4cg.org]]
| jahr = 2016
| status = [[Projekt:SpaceAPI_2.0|ersetzt]]
}}
 
'''[[Projekt:SpaceAPI_2.0|Siehe Nachfolgeprojekt]] DIESES PROJEKT WIRD NICHT LÄNGER BETRIEBEN UND INFORMATIONEN SIND OUTDATED'''
 
Am 32c3 habe ich mir gedacht, es wäre cool das K4CG im dezentralen Hackspace Listing Directory [http://spaceapi.net spaceapi.net] aufzuführen


=== Anforderungen ===
=== Anforderungen ===
Zeile 5: Zeile 14:
* JSON File auf Webserver bereitstellen
* JSON File auf Webserver bereitstellen


Das JSON File enthält mehrere Informationen über den Hackerspace.
Das JSON File enthält mehrere Informationen über den Hackspace.


* Anschrift  
* Anschrift  
Zeile 11: Zeile 20:
* Projekte
* Projekte
* Kontakt
* Kontakt
=== Realisierung ===
Auf [[Host:nixe.k4cg.org]] läuft ein Script unter <code>/usr/local/spaceapi.py</code> dass über den Cronjob unter
<code>/etc/nixos/services/cron.nix</code> alle 15 minuten den Status nach <code>/var/www/spaceapi.k4cg.org/spaceapi.json</code> schreibt.


=== Scripting ===
=== Scripting ===
Zeile 19: Zeile 33:
* Offen/Geschlossen Status
* Offen/Geschlossen Status


<pre>
#!/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
</pre>


==== Temperatur ====
==== Temperatur ====

Aktuelle Version vom 10. Oktober 2019, 21:44 Uhr

Projekt:SpaceAPI Script
Betreuer*In noqqe
Jahr 2016
Läuft auf nixe.k4cg.org
Status ersetzt

Siehe Nachfolgeprojekt DIESES PROJEKT WIRD NICHT LÄNGER BETRIEBEN UND INFORMATIONEN SIND OUTDATED

Am 32c3 habe ich mir gedacht, es wäre cool das K4CG im dezentralen Hackspace Listing Directory spaceapi.net aufzuführen

Anforderungen

  • JSON File auf Webserver bereitstellen

Das JSON File enthält mehrere Informationen über den Hackspace.

  • 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


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