Im Rahmen der Citizen-Science hat sich das OK Lab Chemnitz zum Ziel gesetzt eine Plattform zu entwickeln, die zum einen die Erfassung und Verwaltung von Messstation und deren einzelner Sensoren ermöglichen soll. Zum anderen sollen die Daten von den Sensoren in einer geeigneten hochperformanten Datenplattform abgelegt werden.
Alle Ideen und Gedanken finden sich im Citizen-Science-Wiki
Dieses App hier kümmert sich um die Erfassung und Verwaltung der Stationen und deren Sensoren.
Meteor: Node.JS, Bootstrap (Theme: Bootswatch Lumen), MongoDB, Leaflet, Fontawesome, Meteocon (Icons im Logo)
Dinge auf einer Karte eintragen und bearbeiten ist der klassische Fall einer Web-App. Durch Meteor als Full-Stack-Framework bleibt praktisch nur noch die Business-Logik übrig. Durch unglaublich viele und gute Pakete können ganze Komponenten wie das Accounting praktisch per Einzeiler integriert werden.
Meteor is a platform built on top of Node.js for building real-time web apps. It's what sits between your app's database and its user interface and makes sure that both are kept in sync. https://book.discovermeteor.com/chapter/introduction
Spannend für dieses Projekt: Via SimpleSchema, Minimongo und AutoForm hat man ein selbstabgleichendes und selbstvalidierendes Datenmodell in einer Dokumenten basierenden Datenbank
Die Meteor-Plattform macht das mitwirken sehr einfach:
git clone https://github.com/codeforchemnitz/sensor-karte
cd sensor-karte
meteor run
- Browser öffnen: localhost:3000
Offen: siehe Issues
Erledigt:
- Fehler: Marker auf Retina Geräten anzeigen
- eigene Sensortypen für Bodentemperatur, Wassertemperatur, Lufttemperatur
- Station hinzufügen, ändern, löschen
- Account-Management (erstmal nur Email + Pwd)
- Leaflet-Karte als zentrales Element
Im Meteor-Umfeld existiert mit Kadira ein Remote-Echtzeit-Performance-und-Debugging-Service.
Einrichtung:
- Anmelden bei kadira.io
server/kadira.js.dist
umbenennen nach server/kadira.js` und Credentials eintragen- Meteor starten
- Kadira Webfrontend öffnen
Im Meteor-Framework werden alle Daten zwischen Client und Server via Distributed Data Protocol (DDP) ausgetauscht.
Mit dem ddp-analyzer
als Proxy kann der Traffic mitverfolgt werden. Das ist ungemein praktisch um herauszufinden wo welche Daten abgeglichen oder gelesen werden.
Hier gehts zur Anleitung zum Installieren/Einrichten.
TL;DR
- ggf. Meteor stoppen
- .. in zweiten Terminal ..
sudo npm install -g ddp-analyzer
ddp-analyzer-proxy
(anderer Tab)- .. wieder im ersten Terminal ..
export DDP_DEFAULT_CONNECTION_URL=http://localhost:3030
- Meteor starten mit
meteor
Getested mit Webkit, Firefox, IE9, iPhone, und iPad
Derzeit erfolgt das Deployment noch auf die Meteor-Plattform und ist unter http://codefor-sensors.meteor.com erreichbar.
Die Aktualisierung erfolgt durch: (an meinen Meteor-Account gekoppelt)
meteor deploy codefor-sensors
Logs anschauen
meteor logs codefor-sensors.meteor.com
Für den Produktivmodus soll die App auf dem Codefor-Server gehostet werden. Oder einen PaaS-Anbieter (DigitalOcean, Heroku)
Alternativ findet sich ein PaaS-Spender für die App (Galaxy ist ja gerade noch in der Entwicklung und auf der Meteor Roadmap)
Anleitung für den "harten" Weg es selber zu hosten: https://scotch.io/tutorials/building-a-slack-clone-in-meteor-js-part-5-deployment
MIT