Tesla PowerWall 2 und das Zipatile
Ich habe seid kurzem eine Tesla PowerWall 2 und war natürlich daran interessiert, die Werte in mein SmartHome System zu bekommen.
Da es leider nichts Fertiges gibt, musst ich also wieder mit einem Linux Server (oder Raspberry Pi) arbeiten wie ich es schon ein paar mal getan habe -> https://zipabox.de/netatmo-liefert-werte-zur-zipabox/ oder https://zipabox.de/amazon-echo-mit-der-zipato-api/.
Inzwischen nutze ich aber keinen Raspberry Pi mehr, sondern einen virtuellen Server auf meiner Synology Disk Station….dass ist stromsparender und sicherer durch Backups, die erstellt werden können.
Die PowerWall liefert folgende Werte:
– Hausverbrauch
– Stromnetz
– Solar Erzeugung
– Batterienutzung
– Batteriestatus in %
Netatmo liefert Werte zur Zipabox
Da ich schon öfters den Wunsch gehört habe eine Netatmo in die Zipabox zu integrieren, habe ich mir mal eine bestellt, und ein wenig gespielt.
Zum Aufbauen und Einrichten der Netatmo Station werde ich nicht viel sagen, da ich denke, dass die meisten sowas auch ohne eine Anleitung hinbekommen.
Ich habe die Integration so gelöst: Ein kleine Bash Script fragt die Netatmo API ab und schiebt die Werte in die Zipabox.
Mit diesen Werte könnte ihr natürlich auch nachher Regel erstellen oder sie euch einfach nur anschauen 😉
Was braucht ihr dafür? Ihr braucht natürlich eine Netatmo und ein kleinen Linux Rechner.
Am besten eignet sich eine NAS oder aber ein Raspberry Pi.
Ich lasse meine Scripte auf dem Rasberry Pi laufen und es läuft echt gut damit.
2 Tools müssen auf dem Linux Rechner noch installiert sein:
json_pp
curl
Sonos Steuerung mit einer Regel
Heute geht es um darum, eure Sonos automatisch abzuschalten, wenn keiner mehr im Raum ist.
Leider gibt die Sonos Steuerung in der Oberfläche nicht viel her, deswegen habe ich mir da mal etwas Neues ausgedacht.
Ich habe einen Virtuellen Schalter gebastelt, der die Sonos ausschalten kann, also Perfekt um den Schalter in eine Regel zu integrieren.
Wie ihr den Schalter baut, zeige ich euch weiter unten.
Das ganze Projekt ist ein bisschen größer da ihr auch noch ein kleines Bash Script braucht, um den Status der Sonos zu erfragen.
Unsere Sonos Play 1 steht bei uns in der Küche und beschallt Küche und Esszimmer.
Da es im Stress ab und an passiert, das wir nach Haus kommen und die Sonos immer noch läuft hat mich auf diese Idee gebracht diese Projekt zu starten.
Kurzer Überblick:
Es gibt es Bash Script das auf meinem Rasberry läuft, und den Status der Sonos alle 5 Minuten abfragt.
Ist die Sonos Aktiv, wartet die Zipabox eine bestimmte Zeit ab, und sollte in der Zeit keine Bewegung erfasst worden sein, wird die Sonos abgeschaltet.
Sollte ihr Fragen habe, wir ihr einen Raspberry aufsetzten, dann könnte ihr euch gerne in den Kommentaren verewigen.
Dann fangen wir mal mit dem Bash Script an.
Script Name: sonos_status.sh
#!/bin/bash
# Author: Helle
# Version 0.1
result=$(curl http://XXX.XXX.XXX.XXX:1400/status/perf |grep currently | awk ‚{print $2}‘)
if [ „$result“ = „PLAYING“ ]; then
curl „https://my.zipato.com/zipato-web/remoting/attribute/XXXtrue“
elif [ „$result“ = „STOPPED“ ]; then
curl „https://my.zipato.com/zipato-web/remoting/attribute/XXXfalse“
else
echo „Sonos nicht verbunden“
exit 1
fi
Weiter unten könnte ihr das Script noch Herunterladen, dann gibt es keine Formatierungsfehler.
Bitte denkt dran, nach dem anlegen des Script´s die Recht mit dem Befehl „chmod 777 SCRIPTNAME“ zu setzten, damit ihr es ausführen könnt.
Was macht das Script:
Es fragt per HTTP die Sonos ab, und schaut ob dort „Stopped“ oder „Playing“ steht, und sendet dann einen HTTP Request, der einen Virtuellen Sensor in der Zipabox schaltet.
Habe ihr die IP Adresse und die URLs angepasst (wie ihr diese bekommt, zeige ich euch noch) dann könnt ihr das Script schon einmal testen.
Wenn das dann klappen sollte, könnt ihr einen Cronjob erstelle, der alle 5 Minuten läuft.
Im nächsten Schritt bauen wir den Virtuellen Sensor.
Anlegen mit Neues Gerät hinzufügen, Virtuelle Geräte, und dort den Virtuellen Sensor auswählen. Einen Namen vergeben und fertig.
Im Gerätemanager klickt ihr jetzt solange auf das Gerät bis es komplett aufgeklappt ist
Jetzt auf das Zahnrad beim Punkt State klicken
Hier ist der Punkt URL Wichtig. Diese muss in das Script kopiert werden.
Ihr müsst am Ende der URL jetzt nur noch ein FALSE oder TRUE anhängen.
FALSE schaltet den Sensor AUS und
TRUE schaltet ihn AN.
Um das ganze zu testen könnt ihr die Sonos anschalten und das Scirpt ausführen, dann sollte das hier passieren
Dann schaltet ihr die Sonos aus, und lasst das Script noch einmal laufen
Wenn wir hier angekommen sind, brauchen wir jetzt noch einen Schalter, der die Sonos abschalten kann.
Dazu legt ihr wieder ein neues Virtuelles Gerät an, aber diesmal einen Virtuellen Switch.
Dann gebt ihr dem Kind noch den Namen „Sonos an oder aus“.
Dazu brauchen wir jetzt noch Regeln
Hier kommt der Inhalt für die HTTP Requests
„Sonos AUS“
„Sonos AN“
Hier kommen die Daten in Klartext für die Copy/Paste Freunde 😉
Sonos AUS:
URL: http://xxx.xxx.xxx.xxx:1400/MediaRenderer/AVTransport/Control Headers: SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Stop" Body: <?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:Stop xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID>,<Speed>1</Speed></u:Play></s:Body></s:Envelope> Sonos AN: URL: http://xxx.xxx.xxx.xxx:1400/MediaRenderer/AVTransport/Control Headers: SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Play" Body: <?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><s:Body><u:Play xmlns:u="urn:schemas-upnp-org:service:AVTransport:1"><InstanceID>0</InstanceID>,<Speed>1</Speed></u:Play></s:Body></s:Envelope>
Was mit aufgefallen ist, ist das wenn ihr die Sonos vom Strom getrennt hattet und dann die Sonos per Zipabox anschalten wollt, passiert leider nichts.
Ich denke das wird daran liegen, das noch kein Track „eingelegt“ ist.
Am besten mal vorher die Sonos APP benutzten und auf AN/AUS klicken, danach die Virtuellen Schalter testen.
Wenn das auch klappt können wir zum nächsten Schritt gehen.
Jetzt brauchen wir nur noch eine Regel
– Diese Regel wird aktiviert, wenn der Sonos Status auf Aktiv ist.
– Wenn dann noch 2 Sensoren (Küche und Eßzimmer) auf „No Motion“ für
länger als X Minuten ist
– Wird die Sonos ausgeschaltet
– Und 5 Sekunden später der Status der Sonos manuel auf „Aus“ gesetzt
SO! Bei mir läuft es soweit ganz gut, sollte ihr evt Fehler finden, oder Verbesserungsvorschläge habt, dann schreibt doch nen Kommentar.
Und jetzt viel Spaß beim nachbauen 😉
Downloads: sonos_status.sh