piSchedule - ein Addon zu pilight um 433 MHz Schaltdosen zeitgesteuert zu schalten

L I V E Stammtisch ab 20:30 Uhr im Chat
  • EDIT 14. Juni 2020:

    piScheduler wird nicht mehr maintained und sollte deshalb nicht mehr genutzt werden. Als Alternative habe ich NodeRed gefunden, welches mit pilight 433MHz Schaltsteckdosen zuverlaessig steuert. Details dazu finden sich hier.

    === Überblick ===

    Bei mir zu Hause liegen eine größere Menge von ungenutzen 433 MHz Schaltsteckdosen rum und die wollte ich nutzen um zeitgesteuert Beleuchtung sowie andere Geräte ein- und auszuschalten. Eigentlich beabsichtigte ich die Logik dazu selbst programmieren - bin dann aber zufällig im pilight Forum über ein addon zu Pilight mit dem Namen piSchedule gestossen, welches exakt diese Aufgabe erledigt und sparte mir deshalb die Programmierarbeit. Insbesondere die Tatsache, dass die aktuelle Sonnenauf- und -untergangszeit der eigenen geographischen Lage genutzt werden kann, ist sehr nützlich.

    === Funktionalität ===

    Voraussetzung ist ein laufendes und konfiguriertes pilight 6.0

    piSchedule besteht aus zwei Komponenten

    1) Einem Webfrontend zum Konfigurieren beliebiger Schaltzeiten der dem pilight bekannten Schaltsteckdosen sowie dem Kontrollieren der anstehenden und abgelaufenen Schaltzeiten. Auf dem Webfrontend gibt es auch einen Link zum laufende pilight Webfrontend falls man mal eine Schaltdose ausser der Reihe schalten will. Es sind also quasi beide Anwendungen über ein einziges Webfrontend zugreifbar.

    2) Einem Backend um piSchedule zu starten und stoppen und gespeicherte Schaltzeitkonfigurationen zu laden. Dabei ist eine Terminalsession notwenig, in der der aktuelle Status ausgegeben wird. Diese läßt man üblicherweise in einer screen- oder tmux Session laufen und startet sie während des Bootvorganges.

    === Konfiguration ===

    Es können beliebige Schaltzeiten konfiguriert werden die dann folgende Eigenschaften haben können:

    1) Zeitenbasis
    a) Aktuelle Zeit
    b) Festdefinierte Zeit
    c) Sonnenauf- und Sonnenuntergangszeit

    2) Zeitenabweichung
    a) Positiver oder negativer fester Wert der zur Zeitbasis addiert oder subtrahiert wird
    b) Positiver oder negativer zufälliger Werte aus einem Bereich der zur Zeitbasis addiert bzw subtrahiert werden

    Die Schaltzeiten werden in Tagesplänen zusammengefasst und in .ini Dateien abgelegt. Die Schaltzeiten kann man einfach man mit dem Webfrontend vornehmen. Ich bevorzuge aber als alter Linuxer direkt in den Ini Dateien mit einem Editor die Schaltzeiten zu erstellen und zu ändern. Die Syntax ist relativ einfach nachdem man sich ein wenig genauer mit ihr befasst hat.

    Somit kann man also z.B.

    - 10 Minuten vor dem Sonnenuntergang eine Hauseingangsbeleuchtung einschalten und dann zufallsgesteuert zwischen 23:15 und 24:00 ausschalten lassen

    Code
    Hauseingang; on, sunset, -:10:00; off, 23:15, ~:45:00

    - 2 mal die Nacht um 2:00 und 3:00 für 5 Minuten eine Lampe für den Nachttopfbesuch ein- und ausschalten lassen

    Code
    Nachttopfbeleuchtung; on, 02:00; off, 02:00, ~:05:00; on, 03:00; off, 03:00, ~:05:00

    - Um 7:15 Uhr die Kaffeemaschine starten lassen

    Code
    Kaffeemaschine; on, 07:15

    - 15 Minuten nach Sonnenaufgang die Kanarienvogelgehäuseabdeckung anheben und sie 15 Minuten nach dem Sonnenuntergang wieder auflegen

    Code
    Kanarienvogel; on, sunrise, -:15:00; off, sunset, +:15:00

    === Dokumentation ===

    Die Dokumentation sowie das Webfontend sind in Deutsch und Englisch verfügbar. Auf ihr findet man Screenshots des Webfrontends sowie die Beschreibung, wie man es installiert sowie eine detailierte Beschreibung der Schaltzeitdefinitionen

    === Installation ===

    Die Installation ist sehr einfach: Man kopiert einfach einen vorgegebenen Befehl von der Webseite in die Befehlszeile und läßt ihn ausführen. Die Installation dauert dann aber etwas. Am Ende schreibt das Installationsscript wie man piSchedule startet.

    === Start und Stop ===

    Nachdem man piSchedule manuell auf der Konsole gestartet und getestet hat muss man dafür sorgen dass es auch immer wieder automatisch bei einem boot gestartet wird.

    piSchedule erfordert eine aktive Bildschirmsession und der Autor von piSchedule empfiehlt deshalb die Benutzung von tmux. tmux ist kaum bekannt und ich musste erst einmal die Suchmaschine meines Vertrauens beehren um herauszufinden was das für ein Tool ist. Ich benutze das verbreitete Tool screen um die Bildschirmausgaben von piSchedule abzufangen. Allerdings muss vorher screen auf der Raspi erst einmal installiert werden mit 'sudo apt-get install screen'.

    Zum Starten des piSchedule habe ich folgende Zeile in die /etc/crontab aufgenommen. Damit wird es automatisch beim Booten in einer screen Session gestartet.

    Code
    @reboot        root    ( sleep 15; cd /home/pi/piScheduler; /usr/bin/screen -dmS "piScheduler" /home/pi/piScheduler/piSchedule.py mySchedule.ini )

    I.d.R braucht man sich den Ausgabescreen von piSchedule nicht mehr anzusehen. Man benutzt nach dem Start nur noch das Webfrontend zum kontrollieren oder Konfigurieren. Falls man die Ausgabe doch mal sehen möchte braucht man nur zu den Session reconnecten mit

    Code
    sudo screen -r piScheduler

    Dann sieht man alle Bildschirmausgaben von piSchedule. Danach kann man dann entweder mit CTRL-C piSchedule beenden oder sich mit CTRL-A-d wieder aus der Screensession abmelden und läßt piSchedule damit weiterlaufen. Informationen zu Screen und dessen Bedienung finden sich z.B. hier.

    Der Entwickler von pischedule ist Änderungs- und Erweiterungsanregungen sehr aufgeschlossen gegenüber und wer solche hat sollte sie entweder im pilight Forum in English äussern oder hier in Deutsch.

    Drei Scripts habe ich noch geschrieben, die die Benutzung von pischedule erleichtern - speziell da ich unterschiedliche Schaltzeiten an Wochentagen und Wochenenden haben will. Einfach in /usr/local/bin kopieren und dann pischedule einfach über die Befehlszeile starten und stoppen.

    1) startPiScheduler.sh
    2) stopPiScheduler.sh
    3) restartPsScheduler.sh

    In meiner /etc/crontab steht folgendes:

    Code
    0 5     * * 7,1-4     root     /usr/local/bin/restartPiScheduler.sh /home/pi/piScheduler/frWDSchedule.ini
    0 5     * * 5,6    root     /usr/local/bin/restartPiScheduler.sh /home/pi/piScheduler/frWESchedule.ini

    startPiSchedulder.sh

    stopPiScheduler

    restartPiScheduler

    :no_sad: ... Kein Backupkein Mitleid ... :no_sad:
    :) Nutze lieber raspiBackup bevor Du in die Luft 💥 gehst wie ein HB Männchen :)

    2 Mal editiert, zuletzt von framp (14. Juni 2020 um 23:11) aus folgendem Grund: piScheduler nicht mehr maintained

  • piSchedule - ein Addon zu pilight um 433 MHz Schaltdosen zeitgesteuert zu schalten? Schau mal ob du hier fündig wirst!

  • Moin
    Super Beitrag (obwohl ich mit noch nicht sicher bin ob es mir was nützt...)

    Aber was aus den Links mir nicht so klar hervorgeht: Wie hausfrauenkompatibel ist das Ganze? Können die Zeiten per Klicki zusammen gestellt werden - andernfalls brauch ich meiner Frau damit nicht zu kommen ;)

    GRuß Lunepi

    --
    man ist das System-Anzeigeprogramm für die Handbuchseiten von Linux.

  • framp
    Danke für die Besprechung! Deine Vorschläge -- insbesondere das Wechseln des Tagesplanes -- werde ich für die nächste Version berücksichtigen

    Lunepi
    Ob "hausfrauenkompatibel" .. da kann ich als Autor der Erqweiterung nur vorbelastet sagen: JA, natürlich. Ob ein/eine "Unbedarfte(r)" das auch so sieht muß sich herausstellen. Interessieren würde mich das schon ... Die Intension ist ja (wie in Übersicht beschrieben)

    Zitat

    piSchedule richtet sich an Benutzer, die nach der initialen Installation das zeitgesteuerte Schalten wie auch die Anpassung des Tagesplanes nur mit Hilfe eines Smartphones oder PCs vornehmen möchten.


    ... und Vorschläge zur Verbesserung/Optimierung sind immer willkommen.

    Günter

    framp
    Ein Hinweis zu deinem Punkt:

    Zitat

    2) Einem Backend um piSchedule zu starten und stoppen und gespeicherte Schaltzeitkonfigurationen zu laden. Dabei ist eine Terminalsession notwenig, in der der aktuelle Status ausgegeben wird. Diese läßt man üblicherweise in einer screen- oder tmux Session laufen und startet sie während des Bootvorganges.

    Zunächst richtig: beim initialen Starten von piSchedule wird ein Tagesplan (eine INI Datei) ausgewählt, dieses ist dann auch direkt aktiv. Soll auf einen anderen Tagesplan umgestellt werden, so ist dies über das WEB-Frontend möglich! (Vielleicht sollte ich diesen Punkt noch etwas deutlicher herausstellen -- in Doku und dem Bedienmenü).
    Und so geht's:

    Im piSchedule Hauptmenü mit dem [Tagesplan/Jobs] Menü die verfügbaren Tagespläne anzeigen, den gewünschten auswählen. Die Überschrift sagt zwar "nur" editieren, aber das Menü beim Tagesplan hat den Unterpunkt [Jobs laden und als INI Datei setzen] ((.. nicht instruktiv genug für den Unbedarften .. :blush: ))
    dayPlanChange%28DE%29_1.png

    Zitat aus der Doku:

    Zitat

    Der "Aktuelle Tagesplan" wird mit den folgenden Funktionen geändert:
    ....
    [Jobs laden und als INI Datei setzen] Die dargestellte "Job Liste" wird in dem momentaten Stand unter dem "Tagesplan Datei" Namen gespeichert und an den "Aktuellen Tagesplan" übergeben.

    Hinweis Die letzte Funktion stellt sicher, dass die Jobs der angezeigten "Job Liste" nicht nur gespeichert, sondern dass diese INI Datei auch nach Tageswechsel weiter genutzt wird!
    Bei der ersten Funktion [Alle Jobs hinzufügen] werden die so hinzugefügten Jobs nicht für die nächsten Tage übernommen.

    Einmal editiert, zuletzt von gNeandr (16. April 2015 um 13:02)

  • ... Können die Zeiten per Klicki zusammen gestellt werden ...

    Ja, dazu ist das Webfrontend ja primär da. Allerdings kann ich da keinen Erfahrungsbericht zu geben da ich sehr schnell direkt dazu übergegangen bin die .ini Datei direkt zu ändern. Wie gesagt ist die Installation einfach und wer schon pilight benutzt kann sich dann sehr schnell einen Eindruck verschaffen wie es funktioniert.

  • Hallo framp,

    könntest Du mir bitte helfen?
    Ich versuche jetzt schon 2 Tage lang piSchedule (Version 0.4) zu installieren, welche aber nicht korrekt ausgeführt wird. Bereits während der Installation sehe ich Fehlermeldungen wie: excluded filename not matched: /piSchedule.prefs.json und chmod: Zugriff auf "tmuxStart.sh" nicht möglich. Am Ende der Installation steht: cleaning up.... .....change to piSchedule directory
    install_piScheduler.sh: Zeile 61: /home/pi/tmuxStart.sh: Datei oder Verzeichnis nicht gefunden,
    gefolgt von der Befehlseingabe piraspberrypi ~ $. Dann tut sich nichts mehr.
    Erwähnen sollte ich noch, dass das pilight, Version 6 ordnungsgemäß läuft, schalte damit mehrere Funksteckdosen. Ich kann ./tmuxstart per Hand starten, komme auch in die "ini" (Auswahl 1-4). Aber wenn ich hier etwas anklicke, kommt die Fehlermeldung: > class socket error> >>192.168.178.20:81<< piSchedule already running. Terminating.
    Wie gesagt, es scheint bereits die Installationsroutine fehlerhaft zu sein. Was meinst Du? Welche Version hast Du installiert und wäre diese noch verfügbar?
    ich wäre wirklich für jeden Hinweis dankbar.

    Meisengeier

  • Der Richtige um darauf zu antworten ist gNeandr - der Autor des Paketes. Der ist aber leider noch ein paar Tage offline. Ich werde es noch mal auf einer neuen SD Karte zu installieren versuchen und lass Dich wissen wie es bei mir läuft.

    Bei mir tritt das Installationsproblem auch genauso wie von Dir berichtet auf.

    Nachdem ich eine Datei piSchedule.prefs.json mit folgendem Inhalt erstellt habe (die sollte eigentlich automatisch erstellt werden)

    Code
    {"port_pilight": 80, "locale": "DE", "server": "192.168.0.10", "Latitude": "xx.xxxx", "Location": "Dummsdorf", "Longitude": "yy.yyyy"}

    konnte ich es mit python piSchedule.py starten. Die Parameter musst Du für Dich anpassen: Ich benutze z.B. den Port 80 für das pilight Webgui und die pilight IP ist 192.168.0.10. Deine Locationdaten musst Du Dir irgendwoher ermitteln. Oder Du benutzt das kleine Proof of concept Python Script von mir um Deine Geolocationdaten zu ermitteln.

  • Hallo framp,

    erst einmal vielen Dank für deine schnelle Antwort und vorab danke für deine Bemühungen, das macht bestimmt nicht jeder. Dazu möchte ich dir mitteilen, dass ich ab Sonntag Mittag erst einmal für 10 Tage verreise und in dieser Zeit leider auch offline bin.
    Ansonsten hoffe ich, dass mir gNeandr nun nicht böse ist und mir vielleicht auch helfen würde. Hier ist mal zur Info (für euch?) die Quelle meiner installierten piSchedule-Version: https://dl.dropboxusercontent.com/u/35444930/piS…ml#installation. Auf dieser Seite gibt es keine Kommentare, keinen Erfahrungsaustausch. Ich habe die Installation mehrmals wiederholt, dabei Raspi neu aufgesetzt; es kamen immer wieder die selben Fehlermeldungen. Habe auch die Ports von 5003 auf 80 geändert. Die pilight-Webgui ist bereits mit der blanken IP des Raspi, ohne :80 oder 5000 anzuhängen, erreichbar, die piSchedule Webseite = Null.

    Hallo framp,

    das ging ja schneller als ich dachte.
    Die "piSchedule.prefs.json" Datei habe ich auch schon im Verdacht gehabt; die wird nicht angelegt stattdessen: ...prefs.json.bak. Dort stehen die Angaben singemäß. Habe sie deshalb kurzerhand umbenannt: hat bei mir aber nichts gebracht, habe immer noch die Fehler. Aber wenn es bei dir läuft, muss ich wohl grundsätzlich etwas falsch machen. Sei doch so nett und teile mir mit, an welcher Stelle du "python pi Schedule.pi" eingibst und was dann (bei dir) passiert. Bei mir kommt (sinngemäß): Befehl nicht gefunden.

    Einmal editiert, zuletzt von Meisengeier (13. Mai 2015 um 21:38)

  • Ich weiss nicht was da beim Installer passiert ist - jedenfalls hatte er in der Vergangenheit immer am Ende sehr genau gesagt was man machen muss und man konnte dann piSchedule problemlos starten.

    Bei mir gab es nach der fehlerhaften Installation einen Ordner /home/pi/piSchedule in dem sich auch die fehlende json Datei befinden muss. Wenn Du in diesen Ordner gehst und die json Datei erstellst und 'python piSchedule.py' eingibst wird piSchedule gestartet. Der normale Weg ist das Script mit 'chmod +x piSchedule.py' ausführbar zu machen und dann mit './piSchedule.py' auszuführen.

    Da Du sowieso ab Sonntag erst einmal ein paar Tage offline sein wirst kannst Du jetzt versuchen mit meinen beschränkten Hinweisen weiterzukommen - oder Du wartest bis gNeandr wieder online ist. Vielleicht ist er das ja schon wenn Du wieder zurückkommst :)

  • Hallo framp,

    ich weiß, heute ist Männertag, vielleicht bist du ja schon unterwegs?
    Hier mal eine Kurzübersicht zum Stand:
    Die "piSchedule.py" Datei liegt bei mir im Verzeichnis "piScheduler", nicht im /home/pi.
    Bisher kann ich auf 3 Wegen, als da wären: cd piScheduler (Enter), dann 1. "python piSchedule.py -ini" , 2. "./piSchedule.py -ini" oder 3. "./tmuxStart.sh" nachstehendes Menü aufrufen:
    "Zum Starten Tagesplan INI Datei auswählen"
    1 new Day Schedule.ini
    2 pi Schedule.ini
    3 piScheduleOFF.ini
    4 test.ini
    Egal, welcher Punkt ausgewählt wird, er führt immer zur selben Meldung:
    "piSchedule already running. Terminating!"
    "< class socket.error> <<192.168.178.20:81<<" (meine Raspi-IP)
    unter Firefox sehe ich weiterhin nur das pilight-Webgui, (die Steckdosen lassen sich schalten)
    Bevor ich das Menü aufgerufen habe, wurde pilight gestartet: "sudo service pilight start"
    mache ich das nicht, lässt sich das Menü gar nicht erst aufrufen, es kommt sinngemäß die Meldung: ...no SSDP Connection to Server....

  • Das stimmt natürlich. Du musst das Programm in Verzeichnis piSchedule aufrufen.

    Der Standardport von pilight ist 5000. Der kann von jedem normalen Benutzer - also auch Benutzer pi - geöffnet werden. Wenn Du wie ich auch Port 80 benutzt musst Du das Programm als root aufrufen oder vor den Aufruf als Benutzer pi sudo davorschreiben. Dann sollte es funktionieren.

    Der eigentliche Fehler der auftritt ist 'Access denied' - wird aber im Programm nicht richtig abgefangen und führt damit zu einer ziemlichen Konfusion :(

  • Hallo framp,

    was habe ich doch für ein Glück mit dir, bist eben auch ein Fuchs!
    Habe wie du geschrieben hast, "sudo" vor "./tmuxStart.sh" gesetzt und BINGO!!!!
    Das Programm läuft, hat Port 82 angezeigt, habs eingegeben: piSchedule Webseite da, kann die Menüs aufrufen, alles o.k., super! Es ist unglaublich, dass es bei den Fehlermeldungen letztlich nur an einem simplen SUDO lag, da wäre ich ohne deine Hilfe nie drauf gekommen. Nochmal vielen Dank für deine Hilfe. Kann ich mich jetzt und nach meinem Urlaub eingehend mit dem Programm beschäftigen.
    Ich werde mich auf jeden Fall noch mal bei dir melden.

  • Fein dass es jetzt funktioniert :thumbs1:

    Ich hatte den Code ein wenig modifiziert und mir dann die Exception ausgeben lassen - diese beinhaltete dann die wirkliche Fehlerursache - access denied - und dann war sofort klar woran es lag :wallbash:

    Das muss gNeandr dann mal fixen wenn er wieder online ist.

  • Hallo framp,

    dein Gefühl täuscht dich, ich habe schon verstanden, dass gNeandr die piSchedule App geschrieben hat. Aber das "steckt" bei mir so drin, ein Feetback abzugeben. Apropos App: Ich dächte gelesen zu haben, dass es nur bis zur piSchedule Version 5 eine App gab und für die 6 noch keine? Oder ist mit App der Webserver, den ich z.B. über Firefox aufrufe, gemeint?

  • Feedback ist für einen Entwickler, der seinen Code der Community zur Verfügung stellt, sehr wichtig für die Motivation. Deshalb ist Deine Einstellung dazu sehr gut und richtig :thumbs1:

    App ist ein vorbesetzter Begriff den ich falsch benutzt habe :blush:

    Ich meine die Webanwendung piSchedule - die gNeandr erstellt hat.

    Die Android App zum pilight funktionierte nur bis V5. Aber es soll jetzt auch wieder eine App zu V6 geben. Nur habe ich die bislang noch nicht ausprobiert.

  • Hallo framp,

    da seit meiner letzen Anfrage inzwischen schon wieder über 1 Monat vergangen ist, möchte ich mich hiermit nur mal kurz melden: Habe momentan (nach meinem Urlaub) so viel anderes zu tun, finde keine Zeit für piSchedule. Sowie ich kann, werde ich mich wieder damit beschäftigen. Aber wie ich sehe, gibt es hier im Beitrag keine neuen Fragen und so hoffe ich, dass u.a. du bzw. der Urheber noch aktiv im Forum seit und ich mich dann auch wieder an dich bzw. euch wenden kann.

    Gruß

    Meisengeier

  • Hallo framp, hallo Meisengeier,

    ein kurzer Update: ich arbeite an einer neuen Version. Neben einigen Änderungen am GUI werde ich die Ermittlung der GeoDaten ändern, da ich ich feststelle, dass die IP basierende Ermittlung nicht immer gute Werte liefert; dabei werde ich allerdings auf Google Maps zurückgreifen .. nicht jedermans Liebling.

    Auf der Wunschliste stehen außerdem:
    -- kompatibel zu pilight 7 .. eher ein "muss"
    -- Unterstützung von verschiedenen Schaltplänen für die Woche bzw. das WEnde
    -- automatischer Start nach dem booten und nach Start von pilight .. framp hatte hierzu einen Vorschlag gemacht

    Weitere Notwendigkeiten?

    Günter

  • Hallo gNeandr,

    vielen Dank, dass ich auch meine Wünsche äußern darf. Wie erwähnt, konnte ich mich mit dem Programm noch nicht eingehender beschäftigen, kenne damit nicht den Funktionsumfang. Vielleicht sind ja die nachstehenden Anregungen, als da wären, bereits vorhanden: 1. Eine Tasterfunktion (z.B. wie Treppenlicht), also nur EIN, die nach einer einstellbaren Zeit (Sekundenbereich) automatisch den AUS-Befehl sendet, praktisch nur um etwas zu starten. Dazu 2. eine Rückmeldung der EIN/AUS Befehle per Email- oder SMS Benachrichtigung, damit man nicht "blind" schaltet. Gern spendiere ich für deine Mühen auch mal einen Zehner. Der Urheber von Powerpi hat auch gerade eine Sammelaktion für eine eventuelle, neuere Version gestartet.

    Meisengeier

  • Meisengeier
    Danke für deine "Wunschliste". Allerdings scheint es mir eher so, dass zu mindest der "Treppenhausschalter" eher eine Erweiterung zu pilight sein sollte. piSchedule ist ja in dem Sinn kein GUI zur spontanen Bedienung eines Schaltelementes. Keine Frage, dass eine derartige Erweiterung möglich wäre, aber thematisch passt es eher nicht.

    Bzgl. der Nachrichtfunktion, überlegenswert sicherlich. Siehst du einen Dienst, der auf dem Raspberry läuft und mails auf Kommando schickt? Denn sowas selbst zu programmieren ist sicher nicht sinnvoll.

    Günter

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!