/ Internet of Things Milliarden an Geräten, Sensoren und Chips • Verbundene physikalische Objekte (oder deren virtuelle Repräsentation) • Verbunden über das Internet • Eindeutig identifiziert • Sie interagieren miteinander
Transport • Machine-to-machine (M2M) connectivity protocol • Publish/Subscribe-Messaging • Rechnet mit unzuverlässigen Netzwerken mit geringer Bandbreite und hoher Latenzzeit • Rechnet mit Clients mit geringer Rechenleistung • Erlaubt hohen Quality-of-Service, falls das Netzwerk es erlaubt • Einfach zu implementieren
über TCP/IP • Benachrichtigung, falls Clients unbeabsichtigt getrennt werden • Message-Format • Fester Header mit 2-Byte • Variabler Header für Message-Typen • Payload (z.B. der Topic oder kleine Mengen an Daten)
in MQTT werden auf „Topics“ veröffentlicht • Keine Konfiguration notwendig, einfach auf dem Topic veröffentlichen • Topics sind hierarchisch mit „/“ als Trenner my/home/temperature/kitchen my/home/temperature/livingroom my/server/temperature
Pi Messdaten mit Sensoren via 1-Wire holen • 1-Wire: Einkabel-Bussystem, niedrige Geschwindigkeit • Sensoren für Temperatur, Spannung, Licht, Feuchtigkeit, … • Verbunden via 1-Wire-USB-Adapter
Raspberry Pi Mosquitto funktioniert bestens auf Raspberry Pi • Einfach installieren • apt-get install mosquitto • Dann kann man den Broker starten oder Clients verwenden
von 1-Wire-Sensoren unter Linux holen • Zwei Lösungen, die mit Python funktionieren • OWFS: One Wire File System (http://owfs.org) • DigiTemp und DigitemPy (http://www.digitemp.com)
Daten von Quantified-Self-Gadgets zu Android schicken • Die Gadgets schicken Daten „irgendwohin“ in die Cloud • Withings, Fitbit, oder Nike stellen APIs zum Zugriff bereit • Registrieren für Benachrichtigungs-Callbacks • Wir benutzen eine Django-App, die sich als Callback-Listener registriert und MQTT-Messages schickt • Ein MQTT-Java-Client auf Android empfängt die Notifications
• Implementierung enthält viel OAuth-Zeug • Am meisten komplex war der Java-Code on Android (Fehlerbehandlung etc.) • Deployment auf Amazon Web Services Django/Mosquitt o EC2 instance User/Device registry Apps Withings Elastic IP Amazon CloudWatch Alarm SNS developer@med ando.de
gibt viele andere Message Broker • Es gibt viele andere Push Notification Services • MQTT ist sehr leichtgewichtig • Mosquitto ist einfach mit Python nutzbar