Do It Yourself – Folge 3: Pimatic – Raspberry Pi als Low Budget Smart Home Zentrale

Bild © danielboe
Pimatic
Geschrieben von danielboe

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 Oberfläche von Pimatic im Browser

Die Oberfläche von Pimatic im Browser

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

  1. Als erstes über SSH auf dem Raspberry Pi anmelden
  2. Node JS installieren
  3. Es sollte die aktuelle Version von NODE angezeigt werden “v0.10.24”
  4. Ins Nutzerverzeichnis wechseln
  5. Verzeichnis für Installation erstellen
  6. In das Verzeichnis installieren
  7. In den Installationsordner wechseln
  8. Standard Konfiguration kopieren
  9. 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
  10. Und damit systemweit zugänglich machen (dauert etwas länger)
  11. 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
  12. Das Script downloaden
  13. Das Script  in den Autostartordner schieben
  14. Das Script bekommt 1. die richtigen Nutzerrechte und wird 2. in die Autostartkonfiguration geladen.
  15. Die Konfigurationsdatei öffnen "username": "" und "password": "" ausfüllen (für das login im Webinterface Speichern mit Strg-X,(y)es,Enter

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:

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.

  1. In das Terminal schreiben wir:
    In den Installationsordner wechseln
  2. Diese Pakete werden für die Plugins benötigt und hier installiert
  3. Damit werden die Plugins installiert
  4. Die Konfigurationsdatei öffnen. In der Kategorie “"plugins": [“ hinzufügen:
    Weiterhin brauchen wir unter ““devices": [“ unser Smartphone für die Anwesenheitskontrolle:
    Bei „host“ muss natürlich die IP Adresse des Smartphones im W-Lan eingetragen werden. Diese findet man bei Apple und Android in den Netzwerk bzw. W-Lan Einstellungen oder über euren Router. "id" ist der Name in der Konfiguration und "name" ist die Bezeichnung in der Weboberfläche. Eine Beispieldatei für die Konfiguration gibt es HIER. Diese kann gut als Vorlage verwendet werden.

    Die Konfigurationsdatei von Pimatic

    Die Konfigurationsdatei von Pimatic

    Speichern mit Strg-X,(y)es,Enter

  5. Pimatic starten

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:

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

Diesen Blogpost hat geschrieben ...

danielboe

Hi, ich bin Daniel, Geschäftsführer bei der "Smarthome Agentur UG" und mein Leben dreht sich rund um Technik seit ich denken kann. Mein Interesse gilt neuen Trends, welche den Alltag erleichtern. Dinge zu verstehen und sie noch besser zu machen ist mein Motto.
Wenn ich gerade nicht der Informatik Nerd bin, höre ich Musik, fahre Fahrrad oder treffe mich mit Freunden.

21 Kommentare

  • 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 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

  • 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?

    • 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

  • 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

Gib deinen Senf dazu!

Cookie Consent mit Real Cookie Banner