====== 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}}