====== Projekt: SpaceAPI ======
^Name | SpaceAPI |
^Kurzbeschreibung | Anwesenheits- und Temperaturanzeige für Website |
^Typ | Elektronik / Software|
^Status | {{tag>aktiv}} |
^Beginn | Juni 2016 |
^Ende | |
^Leiter | [[user:sebastian|Sebastian]] |
^Mitstreiter | [[user:egmont|Egmont]], [[user:henryw|Henry]], Holger |
^Repository | [[https://werkraum.freiraumzittau.de/websvn/listing.php?repname=birke3control&path=%2Fbranches%2Fwerkraum-status]] |
===== Ziel =====
[[http://spaceapi.net/|SpaceAPI]] ist eine Schnittstelle, um Informationen wie Raumstatus, Adresse, Kontaktmöglichkeiten abrufen zu können und wird von vielen [[https://hackerspaces.org/|Hackerspaces]] weltweit genutzt.
Als ersten Schritt werden wir die wichtigsten Infos (Anwesenheit und Raumtemperatur) erfassen und auf unserer eigenen Website einbinden; später auch die API implementieren.
===== Aktueller Stand =====
{{ https://werkraum.freiraumzittau.de/spaceapi/status-image.php?t=1&.png?150&nocache}}
Raumstatus (Anwesenheit) und Innentemperatur (Raum I) werden im 5-Minuten-Takt erfasst und geloggt, sowie als dynamische Grafik (wie rechts zu sehen) gerendert.
Außerdem sind diverse Informationen als JSON über die SpaceAPI [[https://werkraum.freiraumzittau.de/spaceapi/13/|abrufbar]]. Eine [[https://werkraum.freiraumzittau.de/spaceapi/|menschenlesbare]] Version gibt es seit 2020 auch.
Es gibt auch einen (momentan experimentellen) [[https://botsin.space/@WerkraumBot|Mastodon-Bot]], der Tür-Status-Änderungen postet. Source-Code: [[https://edugit.org/eshszg/spaceapi-to-mastodon]]
===== Hardware =====
* Raspberry Pi Modell 4B, 2 GB RAM
* 2 16 GB µSD
* temporär bereit gestellt von Egmont WR-Eigentum
* digitale 1-wire Temperatursensoren DS18S20, für Raum II, Solarkollektor und Zuluft
* BME280 für Luftdruck, Luftfeuchte und Temperatur Raum I
* 4-stellige 7-Segmentanzeige, Zeichengröße 100 mm
* Notaus-Schalter neben Eingangstür
* ESP8266 für Zugangssicherung und -logging [[werkraum:infrastruktur:holzwerkstatt|Holzwerkstatt]]
===== Betriebssystem / Software =====
* [[http://www.raspbian.org/|Raspbian]] Jessie Stretch Buster light, ohne GUI
* Programmierung vorzugsweise in Python 2.7, Bash, Init-Scripte, Web-Interface in PHP
* Versionsverwaltung: Subversion auf Freiraum-Server
* Zugriff über SSH, nicht von außen erreichbar, sondern nur per vorhandenem VPN
* Route auf Default-GW setzen
* Nutzer über LDAP (Gruppe Werkraum) vom FR-Server einbinden
* sudo lokal möglich?
===== Funktionen / SW-Module =====
* :done: Status "Werkraum geöffnet/geschlossen" (= Anwesenheit)
* am Anfang über Schalter möglich, manuell zu betätigen
* Notaus-Schalter unter Sicherungskasten
* NC-Kontakt für Relais Stromkreis 2, schaltet Steckdosen des Werkraum
* NO-Kontakt an RasPi-GPIO17 (Pin 11)
* später Status Einbruchmeldeanlage auslesen
* Status "Fenster geöffnet/geschlossen"
* mittels Reedkontakten
* nur intern abrufbar
* Türkontakt für Riegel: Reedkontakt (aber: Riegel ersetzt Türklinke, Status Schloss wäre interessanter)
* Bewegungsmelder im Raum?: nicht erprobten Radarmelder, = kann im Schrank platziert werden, vorerst unabhängig von "Werkraum geöffnet/geschlossen" (Egmont)
* Vorschlag Holger: Taster für geplante Anwesenheitszeit
* Increment z.B. 15 Minuten
* evtl. statt Taster vielleicht ein Drehgeber
* benötigt Feedback, z.B. LCD
* :done: JSON-Dokument für SpaceAPI generieren, Hosting über Freiraum-Server: https://werkraum.freiraumzittau.de/spaceapi/13/
* :done: dynamische Grafik rot/grün per PHP generieren, für Wiki/Website: http://werkraum.freiraumzittau.de/spaceapi/status-image.php
* :done: Verlauf Anwesenheit über die letzten 7 Tage: http://192.168.16.200/status/temp.php?task=sensor&id=2
* Sensoren
* :done: Temperatur-Sensor DS1820 via 1-wire-bus, an GPIO4 (Pin 7)
* Luftfeuchtesensor DHT11/22 via 1-wire-Bus: http://tutorials-raspberrypi.de/raspberry-pi-luftfeuchtigkeit-temperatur-messen-dht11-dht22/ und https://github.com/szazo/DHT11_Python
* :done: Luftdruck-/Feuchtigkeits-Sensor BME280 via I2C
* :done: Python-Software zum Loggen in MySQL-Datenbank und PHP-Webinterface mit Charts
* :done: Webinterface (nur über VPN bzw. im LAN erreichbar!): http://192.168.16.200/status/
* :done: Zugangs-Sicherung/-Logging [[werkraum:infrastruktur:holzwerkstatt|Holzwerkstatt]], :todo: Doku veröffentlichen
* Source Code: https://netz.freiraumzittau.de/websvn/listing.php?repname=birke3control&path=%2Fbranches%2Fwerkraum-status
===== Off-Topic =====
Hier sind weitere Ideen zur Nutzung des RasPi versammelt, die nichts mit Space-API zu tun haben.
==== Multimedia ====
* Audio-Ausgabe über Sony 5.1 DVD-Receiver
* Quellen
* Stream von extern, Internetradio
* Musikarchiv Freiraum-Server
* Audiofiles auf lokalem Rechner (Werkraum-PC oder Gast-Notebooks)
* USB-Datenträger lokal am RasPi
* Client-Server-Lösung zwecks Fernsteuerung
* CLI VLC als Player auf RasPi, Webinterface und Android-App als Fernsteuerung, http://praxistipps.chip.de/vlc-mediaplayer-fernsteuern-wie-funktioniert-das_13544
* Music Player Daemon "mpd": http://www.musicpd.org/
* evtl. Taster + LCD zur Bedienung, aber erfordert Recherche und/oder Programmierung von Software
==== Sonstige Ideen ====
* Getränkestatus
* wie? könnte man nachher über den übrigen Statusschalter (oder über Wägezelle bis 20 kg, 5 €) machen á là "Frisches Getränk entnommen"
* VoIP-Anrufbeantworter
* Scanner mit Taste anschließen, Tastendruck --> scannen und in Owncloud/kleinem USB Speicher abrufbar machen
* eigenes Etherpad hosten
* Holger hat 4 Stück 7-Segment-Anzeigen 15 cm + mehrere kleinere
* ansteuerbar z.B. über I2C-Port-Expander PCF8574P
* Uhrzeit für Wand
* Temperatur
* Schnittstellenkonverter UART, SPI oder I2C vom RasPi über Atmega auf 4x BCD-zu-7-Segment
* http://www.nongnu.org/avr-libc/user-manual/group__twi__demo.html
* http://elinux.org/RPi_Low-level_peripherals#Driver_support
* https://pypi.python.org/pypi/pyserial
* LCD alphanumerisch HD44780 (2x16 Zeichen ... 4x20 Zeichen)
* GPIO: 6 Pins
* Python-Lib vorhanden und erprobt (Sebastian)
* Uhr, Temperatur, geplante Anwesenheitsdauer, ...
* XMPP/Jabber-Client für Statusanzeige, evtl. mit https://github.com/jaxl/JAXL
* Außen-Messdaten automatisch an Citizen-Science-Projekte übermitteln
* https://www.opensensemap.org/
* https://sensebox.github.io/books-v2/osem/osem_custom_sensor.html
* https://docs.opensensemap.org/#api-Measurements-postNewMeasurement
* https://api.opensensemap.org/
* https://luftdaten.info/
* https://www.hackair.eu/
===== Nützliche Links =====
* [[https://media.ccc.de/v/cosin-27-the_spaceapi_and_why_your_hackerspace_should_implement_it|The SpaceAPI, and Why Your Hackerspace Should Implement It]]: Vortrag beim [[https://cosin.ch/|Chaos Singularity]] 2017
* SpaceAPI Homepage + Doku: http://spaceapi.net/app https://spaceapi.io/
* SpaceAPI Directory: https://spacedirectory.org/ https://spaceapi.io/directory/
* Beispiel für SpaceAPI-Verwendung (Netz39, Magdeburg): http://spaceapi-stats.n39.eu/
* Karte aller Spaces, inkl. Status: https://mapall.space/
* Öffnungs-Statistik für WR: https://spaceapi.vanheusden.com/show.php?id=Polytechnischer+Werkraum+Zittau
https://mapall.space/heatmap//show.php?id=Polytechnischer+Werkraum+Zittau
* dynamische Grafiken: https://ammanvms.github.io/circular-space-heatmap/
* Beispiel für grafische Auswertung (shackspace, Stuttgart) http://shackspace.de/wiki/doku.php?id=sopenstats
===== Historie =====
* 14.06.2023, [[https://botsin.space/@WerkraumBot|Mastodon-Status-Bot]] geht in Probebetrieb
* 20.11.2021, Update auf [[https://github.com/SpaceApi/schema/blob/master/14.json|Schema Version 14]]
* 17.11.2021, Umstellung auf neue Domain
* 16.11.2021, CORS-Headers gesetzt
* 14.12.2019, Einbindung ins Munin Server-Monitoring
* 13.12.2019, Update auf Raspberry Pi 4B (2 GB), Raspbian Buster
* 19.06.2019, Notaus-Überwachung und Temperatursensor Raum II
* 20.04.2019, Raspberry Pi 1B mit Raspbian Stretch neu aufgesetzt
* 19.06.2018, Temperatursensoren für [[werkraum:projekte:solarkollektor|Solarkollektor]] und Zuluft integriert
* 10.04.2018, Luftdruck-/Feuchtigkeitssensor BME280 integriert
* 30.10.2017, Werkraum ist auf spacedirectory.org eingetragen
* 30.08.2017, Prototyp des [[https://werkraum.freiraumzittau.de/spaceapi/13/|JSON-Files]] wird dynamisch generiert
* 21.06.2016, dynamisch generierte Status-Anzeige auf https://werkraum.freiraumzittau.de/
* 14.06.2016, Inbetriebnahme RasPi 1B, Netzwerk-Setup, Temperatur-Logging läuft
* 07.06.2016, Auftakt-Workshop
{{tag>aktiv}}