In Teil 3 unserer Serie wollen wir uns nun mit “Pimatic” beschäftigen und damit die Zentrale dazu bringen, einige Aufgaben ganz von allein zu erledigen. Wichtig ist, dass ihr bereits “Pilight” aus Teil 2 unserer Serie installiert und eingerichtet habt. Pimatic wird eure Konfigurierten Steckdosen aus Pilight übernehmen können, sodass wir nicht bei 0 beginnen müssen. Ziel in diesem Teil soll es sein, eure Anwesenheit zu überprüfen. Dafür nutzen wir einen Trick, denn was trägt man immer bei sich? Richtig, das Smartphone. Wenn dieses also im W-Lan angemeldet ist, können wir davon ausgehen, ihr seit Zuhause.
Was ist Pimatic?
Pimatic ist eine in node.js geschriebene Heimautomatisierungs Software von Oliver Schneider. Es handelt sich um ein Open Source Projekt und wurde vor kurzem auf Version 0.8 aktualisiert. Pimatic ist also immer noch im Beta Stadium.
Die verwendete Programmiersprache node.js lässt sich sehr einfach durch Module erweitern. In Zukunft wird es also sicher noch mehr Möglichkeiten geben wie andere Funkstandards oder innovative Automatismen. Schon jetzt gibt es eine Reihe von Möglichkeiten mit Pimatic: Es kann mit einem Arduino kombiniert werden, das Licht entsprechend der Sonnenauf- und untergangszeiten schalten oder Push Nachrichten ans Smartphone senden, um nur Einige zu nennen. Das Potential ist also groß und die Performance schon jetzt sehr ansprechend. Was andere Hersteller für viel Geld verkaufen bekommt man hier mit etwas Aufwand umsonst.
Die Installation von Pimatic
- Als erstes über SSH auf dem Raspberry Pi anmelden
- Node JS installieren
1wget http://nodejs.org/dist/v0.10.24/node-v0.10.24-linux-arm-pi.tar.gz -P /tmp1cd /usr/local1sudo tar xzvf /tmp/node-v0.10.24-linux-arm-pi.tar.gz --strip=1 - Es sollte die aktuelle Version von NODE angezeigt werden “v0.10.24”
1/usr/bin/env node --version - Ins Nutzerverzeichnis wechseln
1cd /home - Verzeichnis für Installation erstellen
1mkdir pimatic-app - In das Verzeichnis installieren
1npm install pimatic --prefix pimatic-app --production - In den Installationsordner wechseln
1cd pimatic-app - Standard Konfiguration kopieren
1cp ./node_modules/pimatic/config_default.json ./config.json - Damit wir Pimatic immer über die Konsole starten können und nicht jedes mal in den Installationsordner müssen, machen wir es global:
In den richtigen Ordner wechseln
1cd /home/pimatic-app/node_modules/pimatic - Und damit systemweit zugänglich machen (dauert etwas länger)
1sudo npm link - Als letztes packen wir die Anwendung noch in den Autostart vom Raspberry Pi, dazu laden wir als erstes ein Startscript, dieses gibt es schon fertig:
In den Nutzerordner wechseln
1cd /home - Das Script downloaden
1wget https://raw.github.com/pimatic/pimatic/master/install/pimatic-init-d - Das Script in den Autostartordner schieben
1sudo cp pimatic-init-d /etc/init.d/pimatic - Das Script bekommt 1. die richtigen Nutzerrechte und wird 2. in die Autostartkonfiguration geladen.
1sudo chmod +x /etc/init.d/pimatic1sudo chown root:root /etc/init.d/pimatic1sudo update-rc.d pimatic defaults - Die Konfigurationsdatei öffnen "username": "" und "password": "" ausfüllen (für das login im Webinterface Speichern mit Strg-X,(y)es,Enter
1nano /home/pimatic-app/config.json
Das War es auch schon. Wir können nun über “sudo service pimatic start” testen ob alles läuft. Im Terminal sollte ein OK erscheinen und Pimatic wurde gestartet. Nun werden erst einmal viele Module installiert, das dauert. Was gerade passiert kann man verfolgen mit:
1 |
tail -f /home/pimatic-app/pimatic-daemon.log |
Wen es nicht interessiert, der wartet einfach 30 Minuten. Ihr solltet, wenn alles fertig ist, nun über den Browser und die IP des Raspberry Pis darauf zugreifen können. “http://ip_des_RPi:8080” (Als Beispiel, bei mir lautet die komplette Adresse “http://192.168.100.109:8080”)
Via “sudo service pimatic stop” wird es wieder beendet. Das sollte immer dann passieren, wenn die Konfiguration bearbeitet wird.
Konfiguration der Software
Wie oben beschrieben, muss Pimatic an dieser Stelle unbedingt erst einmal beendet werden. Wir installieren als erstes ein paar Plugins, welche wir im Tutorial nutzen und brauchen. Eine Liste aller Plugins gibt es hier.
- In das Terminal schreiben wir:
1cd /home/pimatic-app - Diese Pakete werden für die Plugins benötigt und hier installiert
1sudo apt-get update1sudo apt-get install make1sudo apt-get install build-essential g++ - Damit werden die Plugins installiert
1sudo npm install pimatic-pilight1sudo npm install pimatic-ping - Die Konfigurationsdatei öffnen. In der Kategorie “"plugins": [“ hinzufügen:
1sudo nano /home/pimatic-app/config.json123456{"plugin": "ping"},{"plugin": "pilight"}
1234567{"id": "daniel_n5","name": "my smartphone","class": "PingPresence","host": "192.168.100.119","interval": 10000}Speichern mit Strg-X,(y)es,Enter
- Pimatic starten
1sudo service pimatic start
Die interaktive Weboberfläche
Pimatic kann nun via Weboberfläche bedient werden. Aktuell sehen wir dort noch nicht viel, aber das wird sich ändern. In der Konfiguration haben wir bereits unser Smartphone als Variable (anwesend oder nicht anwesend) erstellt und die Steckdose(n) aus Pilight sollten nun auch automatisch importiert werden. In einem kleinen Video möchte ich euch nun durch die Oberfläche führen:
[youtube url="http://youtu.be/lSLLdCcafFw" autohide="1" hd="1"]Regeln und Variablen für die Automatisierung
Der Menüpunkt "Rules" und "Variablen" ist sozusagen der Kern von Pimatic. Hier kann der Anwender selbst kleine Programme schreiben, wenn man so will. Verwendet werden können alle Ein- und Ausgaben unserer Hardware, welche mit der Raspberry verbunden ist. In unserem Beispiel ist die Verfügbarkeit des Smartphones im W-Lan schon der erste Sensorwert. Uns stehen auch die Steckdosen über Funk als Aktoren bereit. Indirekt können wir genauso gut eine Uhrzeit als Auslöser für ein Event nutzen. Die komplette Dokumentation des Entwicklers HIER.
Ich habe mir als erstes das Beispiel der Anwesenheit zu Nutze gemacht. Wenn ich nach 19 Uhr ankomme, soll das Licht angehen:
1 |
if my smartphone is present and it is after 19:00 then turn Licht on |
Ein nettes Feature: Es gibt eine Autovervollständigung. Das kennen viele vom Smartphone, hier geht es um den Programmcode. Es werden bereits Möglichkeiten angezeigt, wie das Programm weiter gehen kann. Auch hier ein Beispiel: Hinter Licht kann nur on oder off stehen. Alles andere ergibt wenig Sinn.
Wie gehts weiter?
Die Grundlagen haben wir mit Teil 3 geschafft. Jetzt geht es darum, das Raspberry Pi systematisch zu erweitern. Im nächsten Teil soll es um die Installation eines Temperaturfühlers gehen. Diesen könnt ihr dann für Aktionen verwenden. Ein gutes Beispiel ist sicher die Heizungssteuerung. Wer noch nicht genug hat, kann sich den blog von Oliver (dem Entwickler von Pimatic) anschauen. Dort gibt es ein paar interessante Anleitungen zum nachbauen.
Bei Fragen komm doch bitte in unser Forum. Ich versuche dort weitestgehend zu helfen.
Die Installation von Raspbian und der Einstieg in Linux
Do It Yourself – Folge 1 – Raspberry Pi als Low Budget Smart Home Zentrale
Hardware Installation und die Fernsteuerung von Funksteckdosen über das Smartphone
Do It Yourself – Folge 2: Pilight – Raspberry Pi als Low Budget Smart Home Zentrale
Zusätzliche Komponente Temperatur für Pimatic
Do It Yourself – Folge 4: Temperatursensor – Raspberry Pi als Low Budget Zentrale
Push und Heizungssteuerung
DIY – Folge 5: Push und Heizungssteuerung – Raspberry Pi Zentrale
Genial! Freue mich schon auf Teil4.
LG
Hallo Daniel,
vielen Dank für das tolle Tutorial der DIY Reihe. Finde langsam gefallen am Rasprry PI.
viele Grüße - freue mich schon auf den nächsten Teil.
Hey Daniel,
auch wenn das Gefühl aufkommt, dass ich langsam lästig werde, muß ich nochmals um Hilfe bitten. Ich erhalte Fehlermeldungen, die ich nicht deuten kann und erst recht nicht beseitigen. Unter Punkt 6 erhalte ichfolgende Fehlermeldung:
> ws@0.4.31 install /home/pimatic-app/node_modules/pimatic/node_modules/socket.io/node_modules/engine.io/node_modules/ws
> (node-gyp rebuild 2> builderror.log) || (exit 0)
> ws@0.4.31 install /home/pimatic-app/node_modules/pimatic/node_modules/socket.io/node_modules/socket.io-client/node_modules/engine.io-client/node_modules/ws
> (node-gyp rebuild 2> builderror.log) || (exit 0)
pimatic@0.8.27 pimatic-app/node_modules/pimatic
âââ cross-spawn@0.2.3 (lru-cache@2.5.0)
âââ socket.io@1.0.6 (debug@0.7.4, has-binary-data@0.1.1, socket.io-parser@2.2.0, engine.io@1.3.1, socket.io-adapter@0.2.0, socket.io-client@1.0.6)
In Punkt 10 erscheinen weitere:
npm ERR! not found: git
npm ERR!
npm ERR! Failed using git.
npm ERR! This is most likely not a problem with npm itself.
npm ERR! Please check if you have git installed and in your PATH.
npm ERR! System Linux 3.12.26+
npm ERR! command "/usr/local/bin/node" "/usr/local/bin/npm" "link"
npm ERR! cwd /home/pimatic-app/node_modules/pimatic
npm ERR! node -v v0.10.24
npm ERR! npm -v 1.3.21
npm ERR! code ENOGIT
npm ERR!
npm ERR! Additional logging details can be found in:
npm ERR! /home/pimatic-app/node_modules/pimatic/npm-debug.log
npm ERR! not ok code 0
Wenn ich dann versuche Pimatic zu starten erhalte ich folgende Fehlermeldung:
root@pi:/home# service pimatic start
/etc/init.d/pimatic: 25: /etc/init.d/pimatic: pimatic.js: not found
root@pi:/home#
Ich will nicht einfach nachmachen. Ich will verstehen, um Fehler selbst zu finden und zu beseitigen und meine eigenen Probleme mit dem Pi zu lösen.
Danke
Bernd
Auf dem raspberry fehlt das Paket "git".(npm ERR! not found: git)
Dieses musst du nachinstallieren mit "sudo apt-get install git". Das Liegt sicher am Image aus dem 1. Tutorial, dieses beinhaltet leider viele Pakete nicht. Es gibt noch ein Raspbian Image für die SD Karte auf der Raspberry Website. Dort muss deutlich weniger "nachinstalliert" werden.
Gruß
Daniel
Hey Daniel,
nach Neuinstallation des Raspbian vom09.09.14 hat bis Ende der Folge 2 alles funktioniert, bis auf den Autostart von Pilight. Er funktioniert nun nicht mehr.
In Folge 3 erhalte ich unter Punkt 6 folgende Fehlermeldungen:
> ws@0.4.31 install /home/pimatic-app/node_modules/pimatic/node_modules/socket.i o/node_modules/engine.io/node_modules/ws
> (node-gyp rebuild 2> builderror.log) || (exit 0)
unter Punkt 10:
coffee-errors@0.8.4 node_modules/coffee-errors
und
pi@raspberrypi /home $ wget https://raw.github.com/pimatic/pimatic/master/install/pimatic-init-d
-bash: syntax error near unexpected token `newline'
unter Punkt 12:
pi@raspberrypi /home $ wget https://raw.github.com/pimatic/pimatic/master/install/pimatic-init-d
-bash: syntax error near unexpected token `newline'
Ab da geht nichts mehr. Woran kann das alles liegen und was kann ich dagegen unternehmen, um weiterzukommen?
Grüße
Bernd
Hey Daniel,
vielen Dank für Deine schnelle Hilfe. Nun habe ich Raspbian vom 09.09.14 und Teil 2 aus dem Tutorial installiert. Diesmal fast ohne Probleme. Der Autostart von Pilight funktioniert jetzt nicht mehr. Im Teil 3 habe ich weiterhin nur mäßigen Erfolg. Im Punkt 6 erscheinen die gleichen Fehlermeldungen wie vorher. Punkt 10 zeigt nun folgende:
npm WARN deprecated object-keys@0.2.0: Please update to the latest object-keys
und zum Schluß
coffee-errors@0.8.4 node_modules/coffee-errors
Im Punkt 12 spitzt sich die Sache noch zu:
pi@raspberrypi /home $ wget https://raw.github.com/pimatic/pimatic/master/install/pimatic-init-d
-bash: syntax error near unexpected token `newline'
Unter dem vorherigen Raspbian hatte ich keinen Syntax Error.
Warum habe nur ich dieseProbleme? Was mache ich falsch? Andere User hätten doch eigentlich auf die gleichen Fehler stoßen müssen, wenn sie dem Tutorial gefolgt sind. Es kann doch nicht an der Hardware liegen (B+) !??
Danke
Bernd
Hallo Bernd,
Punkt 12 sollte eigentlich sicher funktionieren. "wget https://raw.github.com/pimatic/pimatic/master/install/pimatic-init-d". Möglicherweise auch im "sudo su" modus ausführen oder mit "sudo" davor.
Punkt 6 sollte keine Fehler bringen, erst dann kann punkt 10 "link" funktionieren". Dort sollten wir also als erstes schauen:
> ws@0.4.31 install /home/pimatic-app/node_modules/pimatic/node_modules/socket.i o/node_modules/engine.io/node_modules/ws
> (node-gyp rebuild 2> builderror.log) || (exit 0)
Das ist erst eimal kein fehler. sollte genau so aussehen. Schau mal ob du pimatic nach punkt 9 starten kannst mit:
"sudo pimatic.js"
Gruß Daniel
Hallo,
nun ist meine Anfrage von Heutnacht wieder erschienen. Na doppelt hält besser.
Bernd
Hallo zusammen,
da das Interesse an der DIY Reihe wirklich groß ist und die Kommentare zunehmend unübersichtlicher werden,
könnt ihr eure Fragen gern im Forum stellen. Wir haben dazu ein extra Thread eröffnet. LINK:
Do It Yourself – Pilight – Raspberry Pi als Low Budget Smart Home Zentrale
Hallo Daniel,
erst mal danke für das super Tutorial.
Ich habe deine config.jons als Vorlage genommen. Ich habe aber bei pimatic ein Problem mit der Zeit. Sie geht 1 Stunde nach. In Pilight habe ich dies mit dem tauschen von Längen- und Breitengrad hinbekommen, dort wurde auch erst 1 Stunde weniger angezeigt.
Was muss ich in pimatic ändern damit die Zeit richtig geht.
Und kann man die Zeit auch auf der Übersichtsseite anzeigen lassen?
Gruß Andre
Hi,
ich hab jetzt alles so gemacht wie beschrieben, aber die devices aus pilight werden irgendwie nicht übernommen? Vielleicht hab ich was übersehen oder so? Keine Ahnung. Währe sehr nett wenn du eine Antwort weißt.
Danke schonmal.
MfG
Oh sorry. Hat sich gerade erledigt. Ich war wohl etwas schusselig.
pimatic importiert keine devices von pilight:
pilight 6.0 läuft über den Browser ohne Probleme.
Die Installation von pimatic scheint war wohl erfolgreich, da im browser die Handy-
Anwesenheitskontrolle funktionirt.
Es werden aber keine devices aus der pilight - config.json datei übernommen.
Wenn ich pilight und pimatig starte werden im pimatic browser viele Infos durchgescrollt.
Einige enden mit ….trying to connect.
Pimatic ist im Verzeichnis unter /home/ installiert, pilight unter /etc/ (denke, das ist auch so vorgesehen).
Hat jemand eine Idee, was die Ursache sein kann?
Habe das gleiche Problem mit pilight 6.0.
pimatic liefert, Connection lost, trying to connect.
Hallo,
Pilight 6.0 wird von Pimatic nicht mehr unterstützt. Die beiden Entwickler konnten sich nicht mehr über die Integration einigen.
Der Entwicklier von Pilight will jetzt auch eine automatische Steuerung einbringen und wollte vom Pimatic-Entwicker das er die automatischen Steuerungsfunktionen Pilight überlässt.
Ich bin jetzt komplett auf Pimatic gewechselt, mit dem homedino-plugin kann Pimatic auch direkt Funksteckdosen steuern. Deshalb ist Pilight für mich überflüssig geworden.
Gruß Andre
Kann ich genau so bestätigen!
Habe ich die letzten Stunden gerade durchgemacht. homeduino funktioniert aber bestens! Es gibt auch so eine art "pilight-receive" Funktionalität wenn man sich die "Messages" im Webfrontend anschaut, während man auf die Fernbedienung drückt. Dann nur noch config ergänzen, z.B.
{
"id": "rfswitch",
"name": "RFSwitch",
"class": "HomeduinoRFSwitch",
"protocols": [
{
"name": "switch2",
"options": {
"unitCode": "8",
"houseCode": "31"
}
}
]
}
Viel Spaß.
Aber Achtung die Codes welche mit den DIP-Schaltern eingestellt werden, werden anders berechnet als in Pimatic:
1 heißt Schalter oben.. von rechts aus gelesen z.B. 01001 = ▼▲▼▼▲ <-der zweite und der letzte Schalter sind oben
Schalter Nummer 1 = 16
Schalter Nummer 2 = 8
Schalter Nummer 3 = 4
Schalter Nummer 4 = 2
Schalter Nummer 5 = 1
So bedeutet ein unitcode "4" das DIP-Schalter Nummer 3 (oder auch oft mit C bezeichet) in der Schaltsteckdose oben ist "00100" ▼▼▲▼▼
Der houseCode ist der systemcode und funktioniert so:
z.B: 11010 = 16 + 8 + 0 + 2 + 0 = 26
Hey,
spannende Geschichte mit dem Homedunio. Sollte ich mir auf jeden fall einmal anschauen!
Grüße
Daniel
Hallo,
vielen Dank für dein tolles Tutorial.
Ich habe nun mein Max Thermostat in Pimatic eingebunden. Funktioniert auch soweit.
Jetzt würde ich gerne eine Steuerung zu bestimmten Uhrzeiten anlegen, scheitere aber daran.
Wie kann ich im Bereich "rules" in Pimatic denn eine Zeitangabe hinzufügen ?
Die Heizung soll Wochentags um 22 Uhr ausgehen und am nächsten morgen um 06 Uhr wieder einschalten.
Hallo
Habe heute pimatic installiert, bin froh dass ich es gefunden habe.... schaut er schick aus, hoffe mach auch seine Arbeit.
Nach kurzen zeit, wie ich meinen Türöffner erstellen wollte bin auf eine frage aufgeschlossen und zwar...
statt eine ON/OFF Schalter brauche in Prinzip eine Taster, beim einschalten sollte sich nach 3-5 sek von selbst ausschalten, könnt ihr mir bei diesem Dilemma helfen?
Wie erstelle verschiedene Benutzer welche an diese TÖ zugreifen können? (deswegen brauche Taster betrieb, ansonsten kann ich selber ausschalten)
Danke voraus..
Thomas
Was du möchtest geht recht einfach über eine rule verknüpft mit einem virtuellen button. also button erstellen, dann eine regel:
wenn buttonX pressed dann device türöffner für 5 sekunden drücken. Der syntax ist hier natürlich falsch, aber so solltest du es hinbekommen.
nutzer kannst du recht easy in der json.config anlegen. das sollte auch dokumentiert sein:
https://pimatic.org/pages/config/
ich glaube aber die rechte pro seite oder pro device kann man noch nicht vergeben. wird sicher irgendwann implementiert.
Grüße