Tweets vom 06-11-2017 bis 12-11-2017

Twitter

Tweets vom 30-10-2017 bis 05-11-2017

Twitter
  • RT @WirSindGruen: Im EC Richtung Prag merkt man wie weit wir in Deutschland in Punkten der Digitalisierung hinterher hinken. https://t.co/M… ->
  • RT @clhett01: My pumpkin this year. @home_assistant rules. I didn't have time to add a WiFi enabled candle. https://t.co/jvhJtbMjWK ->
  • RT @JayPichardo: Am I the only one that sees traces of #WebOS on these #iphoneX demos ? ->
  • RT @GillyBerlin: This Website Uses AI to Enhance Low-Res Photos, CSI-Style https://t.co/mnTw553cvd https://t.co/zekAudL0Rd ->
  • RT @Emojipedia: ???????????????????‍♀️?‍♂️??‍♂️??‍♂️?‍♀️?‍♂️?‍♀️?‍♂️?‍♀️?‍♂️?‍♀️?‍♂️?‍♀️?‍♂️??‍♂️?‍♀️?‍♂️??????????????????????????????????… ->
  • RT @CheekiScrump: Google's AI is scanning your private documents & locking any it detects possible wrong-think in

    The dystopian future is… ->

  • RT @FactsInYourFace: Steve Jobs never wrote a single line of programming code. ->
  • RT @Snowden: Never underestimate the power of a worker with a conscience. https://t.co/Tjmu3qX93d ->
  • RT @internetofshit: This is a good reason to buy an iPhone: Apple actually gives a shit about your privacy (thanks @kylesethgray) https://t… ->
  • RT @monkeydom_de: “Ein Land voller Müller, Schneider und Wagner war nicht gerade der feuchte Traum eines Hightech-Investors.” — QualityLand… ->
  • RT @balloob: Don't care about stars.
    Don't care about stars.
    Don't care about stars.
    Don't care about stars.

    omg @home_assistant almost ha… ->

  • RT @hexwaxwing: If you're wondering how twitter[.]com/Timrasett/status/926903967027785728 works:

    [27024-char domain name].cc/[3244-char di… ->

  • „Apple: Save Networking Tools on iOS 11” – Jetzt unterschreiben! https://t.co/D3fM6ZONdK via @ChangeGER ->
  • RT @Jason_A_Murdock: Hetzner CEO Hans Wencke on why his (hacked) company stored FTP and database passwords in plaintext (via MyBroadband) h… ->
  • RT @gerdnaschenweng: #Hetzner CEO: "I left the key to my house under the doormat. I did not expect anyone to find it and steal all my stuff… ->
  • RT @Opa_Homie: “Chef? Mir ist jemand ins Auto gefahren”

    “Auf jeden Fall einen Unfallbericht schreiben und Foto machen!”

    “In Ordnung, Chef… ->

Tweets vom 16-10-2017 bis 22-10-2017

Twitter

IFTTT Actions im Intranet mit Adafruit IO & MQTT

IoT

Ich freue mich immer wenn Entwickler von IoT Geräten Möglichkeiten einbauen auf Ereignisse zu reagieren. Bestes Beispiel ist der Echo*, dem Amazon mit IFTTT ein paar nette Trigger spendiert, z.B. wenn der Timer ausläuft oder ein Wecker losgeht.

Worüber ich nicht besonders freue, ist das diese Trigger meistens nur mit IFTTT funktionieren. Klar, Amazon versucht damit einer größere Zielgruppe von Bastlern zu erreichen als wenn Sie z.B. HTTP Requests einbauen würden. Dafür erreiche ich meine Smarthome Geräte nicht mehr, die alle hinter meiner FRITZ!Box im Intranet stehen. Während ich darauf warte das Amazon für mich diese Trigger einbaut, hab ich mich nach Übergangslösung angeschaut, wie ich (möglichst sicher) IFTTT Actions in meinem Intranet auslösen kann.

Der erste Gedanke ging natürlich an den IFTT Maker Channel, Portfreigabe im Router und ein nginx o.ä. der die Requests entgegen nimmt und Skripte ausführt. Ehrlich gesagt war mir immer etwas mulmig bei dem Gedanken Zugriff von außen in mein Intranet zu ermöglichen… Klar, mit fail2ban etc kann man vieles verhindern aber am liebsten war mir eine Möglichkeit in die andere Richtung.

Danke es sehr guten Tipps von Nils (Danke!) habe ich mir mal MQTT angeschaut, ein offenes Protokoll für M2M Kommunikation. Der häufigste Anwendungsfall im Bereich MQTT wird vermutlich sein, das Sensoren oft und ohne Aufwand Werte an einen Server schicken sollen, und Clients diese Auswerten und reagieren. Für mich besonders interessant war aber die Möglichkeit das Clients sich mit dem „Broker“ verbinden, und die Nachrichten dann in Echtzeit gepusht bekommen, es gibt kein Polling. Ein paar Sekunden Verzögerung könnte viele Aktionen schon unnütz werden lassen.

Ich habe im ersten Versuch einen MQTT Server bei CloudMQTT gemietet, und über den IFTTT Maker Channel einen PHP Datei aufgerufen die MQTT Events erstellt hat. Beim Basteln bin ich dann auf Adafruit IO getoßen. Adafruit IO bietet sogenannte Feeds. Die können auch vielen verschiedenen Quellen beschrieben werden und z.B. mit MQTT ausgelesen werden, Außerdem hat es eine native IFTTT Integration und war in meinen Tests noch ein paar Sekundenbruchteile fixer als mit PHP. Ein Applet für Alexa könnte z.B. so aussehen:

 

 

Damit wäre der Broker auch schon fertig. Als Client kann theoretisch alles fungieren; Es gibt für viele Programmiersprachen fertige Bibliotheken. Bei läuft die komplette Hausautomation auf einem C.H.I.P., und dort fast alles über Node.js. Ich hab mich deshalb auch entschieden den Client in JavaScript zu schreiben, die passende Bibliothek für Node.js trägt den passenden Namen mqtt.

So sieht mein Code im Moment aus:

var mqtt = require('mqtt');
var request = require('request');
var exec = require('child_process').exec;
var url = 'mqtts://io.adafruit.com';
var options = {
	username: 'pattyland',
	password: '*******',
};
var client = mqtt.connect(url, options);
client.on('connect', function() {
	console.log("connected");
	client.subscribe('pattyland/feeds/alexa-timer');
})
client.on('message', function(topic, message) { 
	console.log(new Date().toJSON() + " " + topic);
	switch (topic) {
	case "pattyland/feeds/alexa-timer":
		exec("/home/chip/pause-fire-tv.sh");
		request({
			url: 'http://localhost:8465/api/username/lights/4/state',
			method: 'PUT',
			json: {
				on: "true"
			}
		});
		break;
	}
})Code-Sprache: JavaScript (javascript)

Kurz erklärt:

Verbinde dich über MQTT mit io.adafruit.com und abonniere (subscribe) meinen Feed „alexa-timer“. Hier können beliebig viele Feeds abonniert werden.  Spanned wird’s dann beim Listener. Hier warte ich bis eine „message“ ankommt und schaue in welchem Feed diese gepostet worden ist, die eigentliche Nachricht ignoriere ich im Moment. Da ist hier im Intranet bin, stehen mir alle Möglichkeiten offen: In meinen Fall weise ich meine ha-bridge die Lampe Nr. 4 einzuschalten, was dazu führt das mein selbstgebautes Ambilight rot blinkt. Außerdem starte ich ein Skript dass sich via ADB mit meinem Fire TV verbindet und die Pause-Taste simuliert, damit ich den Timer nicht aus Versehen verpasse weil ein Film oder Musik läuft.

Hier ist nochmal eine kleine Grafik die den Weg von Alexa zum IoT Gerät beschreibt:

So könnte sieht das ganze dann im Ergebnis aus:

Hyperion mit Alexa steuern

IoT

Schon seit ein paar Tagen habe ich nun auch ein paar LED-Streifen hinter meinem Fernseher, die dank Hyperion auf einem Raspberry Pi* mich in den Genuss von Philips Ambilight kommen lassen. Eine Demo davon gibt’s zum Beispiel hier.

Nun steht seit kurzem auch ein Echo Dot* auf meinem Wohnzimmertisch, und ich habe natürlich direkt geschaut, welche Geräte man noch mit Alexa steuern kann, die nicht im Standardrepertoire enthalten sind.

Der „normale“ Weg über AVS, bei dem ich extern einen Dienst mit SSL-Zertifikat usw. hosten muss, kam für mich erstmal nicht in Frage. Viel besser fand ich den Ansatz der ha-bridge. Diese emuliert eine Bridge für Philips-Hue-Geräte für Alexa und lässt einen für diese beliebige Aktionen festlegen. In Kombination mit hyperion-remote, das netterweise direkt mit Hyperion ausgeliefert wird, lässt sich das ganze sehr einfach mit Alexa steuern:

  1. ha-bridge downloaden und starten (Wichtig: Java 1.8. Wenn ihr kein Google Home habt, nehmt einen Port > 1024, damit ihr keine Root-Rechte braucht)
  2. Shellscript erzeugen, das sich via SSH auf dem Computer einloggt, auf dem Hyperion läuft und mit hyperion-remote die gewünschte Farbe/Effekt einstellt. Beispiel
    #!/bin/bash ssh pi@hyper "hyperion-remote --effect 'Knight rider'"
  3. Gerät in ha-bridge anlegen, das das Skript beim gewünschten Event aufruft

DDanach muss man Alexa nur noch sagen, dass sie neue Geräte suchen soll, und nach ein paar Sekunden sollte Alexa in der Lage sein: