Nachdem jetzt einige wissen wollten wie Sie die Zeitschaltuhr installieren können, versuche ich euch hier zu helfen.
Eine Installationsroutine gibt es leider nicht.
Das liegt vor allem daran das ich selbst sowas noch nie gemacht habe und nicht weiß wie das geht.
Dazu müssten Abhängigkeiten abgefragt, eine Datenbank samt Tabellen installiert und verschiedene File (UI & server) kopiert werden.
Im Augenblick für mich nicht machbar.
Es steht aber jedem anderen offen eine Installationsroutine zu schreiben, das Projekt liegt bei github.
Im Moment braucht man für die Installation zumindest grundlegende Kenntnisse von Linux, mysql und python.
Ich werde nun versuchen zumindest im Ansatz zu beschreiben wie eine Installation auf einem Raspberry Pi ablaufen sollte.
- Da wir python mindesten in der Version 3.3 brauchen, rate ich dazu die neue raspbian Variante zu nehmen.
Raspbian Jessie
Wer unbedingt Wheezy nutzen will muss python 3.4 entweder selbst installieren, oder er greift zu meinem ISO
raspbian_custom.rar - Nachdem wir python installiert haben, brauchen wir noch die diversen python-packages.
Diese werden ja nach python-Version mit „pip“, „pip3“ oder „pip3.4“ installiert.
Hier brauchen wir:
– websockets
– pymsql
– pyusb
– apscheduler
– tinkerforge
– RPi.GPIO
– logging - Als nächstes steht die Datenbank auf dem Programm.
Ich persönlich nutze immer mysql, im Prinzip sollte aber jede andere SQL-Datenbank funktionieren (sofern man das python-Skript anpasst).
Nun muss die Datenbank ansich angelegt werden („smartHome“) und darin die entsprechenden Tabellen.
Anbei ein mysql-Dump der öffentlichen Demo-Seite
mysql-Dump v.0.1 - Jetzt braucht Ihr natürlich noch einen Webserver auf welchem die Benutzeroberfläche läuft.
Ich persönlich nutze apache, allerdings dürfte der auf dem raspi etwas zuviel des guten sein.
Diese Wahl überlasse ich jedem selbst. - Wenn ihr soweit seid, dann habt ihr es fast geschafft – jetzt wird kopiert.
Als erstes nehmen wir die github-Files aus dem Ordner „html-frontend“ und kopiert diese in das Webverzeichnis (meistens „/var/www/httpd“).
Danach nehmen wir die Dateien „scheduler.py“ aus dem Ordner „server“, sowie die Dateien aus dem Ordner „libs“ und kopieren alle in den gleichen Ordner auf die Festplatte (ich lege dafür z. Bsp. einen Extra-Ordner „/sourcecode“ an). - Nun öffnen wir die Datei „scheduler.py“ und entfernen die Ausgabe-Teile die wir nicht brauchen.
Wer z.Bsp. nur GPIO-Port schalten will braucht den kompletten Tinkerforge & USB-Part nicht und sollte es entfernen.
Danach passen wir noch die Angaben für IP’s und die mySQL-Zugangsdaten an. - Das wars, jetzt sollte alles funktionieren. Mit „python scheduler.py“ wird die Software gestartet.
Ich lasse das Programm immer als root-Nutzer ausführen.
Nicht die beste Lösung, aber so muss ich mich nicht mit Rechte-Problemen herumschlagen. Im Prinzip müsste das Programm aber auch als Benutzer funktionieren.
Die ganze Anleitung ist aus dem Kopf heraus geschrieben und nicht(!) getestet.
Ich glaube aber das ich keinen Fehler gemacht und nichts vergessen habe.
Wie man sieht braucht aber schon gewissen Grundkenntnisse.
Ich stelle derzeit die Datenbank um, sowie das System auf einen Client/Server-Basis um.
In dem Zuge werden auch config-Dateien eingeführt.
Das alles sollte die Installation dann schon wesentlich vereinfachen.
Wenn auf das USB- und GPIO-Modul verzichtet wird, dann läuft die server-Software auch ohne Probleme unter Windows.
Ich finde dein Projekt klasse, nur leider komme ich es nicht zum laufen mit hilfe der Anleitung.
In den dateien auf git hub sind datein wie z.b die scheduler.py nicht enthalten.
oder nutze ich einfach die falsche Anleitung für die Version 2.1
MfG Schu
Ich muss leider sagen das ich das Projekt nicht mehr weiterverfolge.
Ich habe für mich selbst HomeAssistant gefunden. https://www.home-assistant.io/
Das gefällt mir von der Oberfläche sehr gut und ist im Zusammenspiel mit ESPHome einfach der Hammer. https://esphome.io/index.html#
Der Zeitaufwand für eine Eigenentwicklung steht in keinem Verhältnis zu dem Ergebnis, vor allem wenn man alles alleine macht.
ooookaayyy
Ich weiß nicht wie aktuell das hier noch ist, allerdings habe ich die anleitung soweit befolgt um alles auf meinem RasPi 3 zu installieren.
Als erstes fiel mir auf das scheduler.py nicht im html-frontend ordner existiert, habe jedoch mit den restlichen dateien so agiert wie beschrieben. Der RasPi läuft mit Apache2 welches nicht den ordner „httpd“ sondern „html“ welcher auch erreichbar ist. Jedoch habe ich keine Grafische Oberfläche sondern bloß eine reine Ordnerstruktur. Liegt das an dem Ordnernamen von Apache?
Binleider noch sehr neu in diesem bereich und könnte dringend hilfe brauchen
Hi Robin,
es gibt eine neue Anleitung zur überarbeiteten Software. Diese ist mit Version 2.1 auf dieser homepage beschrieben.
Viel Erfolg!
Gruß
Andreas
Wo finde ich diese Anleitung?
Ich muss leider sagen das ich das Projekt nicht mehr weiterverfolge.
Ich habe für mich selbst HomeAssistant gefunden. https://www.home-assistant.io/
Das gefällt mir von der Oberfläche sehr gut und ist im Zusammenspiel mit ESPHome einfach der Hammer. https://esphome.io/index.html#
Der Zeitaufwand für eine Eigenentwicklung steht in keinem Verhältnis zu dem Ergebnis, vor allem wenn man alles alleine macht.
Hallo Christopher,
Zuerst einmal ein ganz großes Lob für diese tolle Programmierung.
Sieht, soweit ich das aus deinen Demos sehen konnte, super aus.
Nun aber zu mir und miner Frrage:
Ich habe schon einige Erfahrungen mit C++ ….. und einen Pi 2.
Die instalation deiner Programmierung hat eigentlich geklappt.
Jetzt hänge ich fest und weiß nicht mehr weiter. Wenn ich die scheduler.py
Starte werden die 3 ¨logger.info¨ Hinweise in Python angezeigt. Mehr aber
auch nicht. Ich habe den Lighttpd installiert anstelle von apache2.
Muss ich hierzu noch etwas ändern?
Vielen Dank & Gruß
ASK
Nabend,
ich war die letzten Tage anderweitig eingespannt, deshalb kommt die Antwort so spät.
Also wenn die Web-Oberfläche funktioniert, d.h. du Schaltzeiten anlegen, löschen und ändern kannst, dann dürfte auch lighttpd funktionieren.
Ich selbst habe das aber noch nicht getestet.
Für die Verbindung python <-> Schaltzeiten ist die Datenbank wichtiger.
Wenn du aber Schaltzeiten anlegen kannst, dann sollte die Datenbank auch laufen.
Bitte auch darauf achten im python-Skript die IP-Adressen (mysql-Server) entsprechend anzupassen.
Ich würde zuerst einfach mal über die Web-Oberfläche 1-2 Schaltzeiten anlegen und erst danach das python-Skript starten.
Dann müsste nach den logger-Infos die Datenbank geladen werden und die einzelnen Einträge ausgegeben werden.
Ist das so bei dir?
Wenn nicht mal im Skript schauen ob die IP und die Zugangsdaten für die mySQL-Datenbank auch wirklich stimmen.
Hallo zusammen
Ich hab da was gefunden für alle die wie ich eine LAN Steckerleiste EGPM2LAN benutzen. Vlt ist dies ja hilfreich:
http://www.linux-hardware-guide.de/2014-04-18-energenie-eg-pm2-lan-programmierbare-6-fach-ip-steckdosenleiste-lan
http://www.fhemwiki.de/wiki/EGPM2LAN
Hallo Zusammen
Erstmal Herzliches Dankeschön an den Ersteller super Sache sieht echt schön aus. Ich habe folgendes Problem leider habe ich keine Steckerleiste mit USB bekommen dafür welche mit LAN Anschluss. Da ich Neuling bin auf dem Gebiet Raspi und keine Ahnung vonPhyton habe wollte ich euch fragen wie ich diese Leisten via Netzwerk in die Webapplikation einbinden und via Raspi ansteurn kann.
Gruss Mark
Oh, da kann ich dir jetzt leider auch nicht weiterhelfen, da ich keine entsprechende Steckerleiste hier habe.
Um mein Programm dafür fit zu bekommen solltest dich aber mit python & Co auskennen.
Du musst dafür erst einmal herausfinden wie du die Steckdose über python ansteuern kannst.
Danach schreibst du ein entsprechendes Ausgabemodul und legst in mysql einen passenden Schaltertyp an.
So sollte es dann funktionieren.
Hallo Christopher,
kann das sein, dass die bevorstehenden Schaltzeiten nicht stimmen? Ich hab z.B. eine wiederkehrende Schaltung ersetellt 2Min an 2 Min aus.
jetzt zeigt er mir an, dann am 1.11. um 0 uhr die nächste Schaltung ist, was ja nicht stimmt, sondern so in etwas 1,2 Min.
schreib mir mal bitte genau die Daten die du eingeben hast damit ich das hier reproduzieren kann.
So, ich hab den „Übeltäter“: in der index.php, Zeile 13, $timer = new Data($db);
dieser Befehl dauert ewig… kann mir jemand sagen, warum das so ist?
In Zeile 13 wird eigentlich nur eine Klasse registriert, verstehe jetzt nicht was da so lange dauert.
Hast du den Fehler aktuell eigentlich noch?
Wie schon geschrieben lädt die Seite bei mir ja sofort.
Hmm, also wenn ich deinen Link besuche, dann braucht die Seite nur 1-2 Sekunden zum aufbauen.
Wo hast du die html-Seiten gehostet?
Auf dem raspberry pi?
Wenn ja welcher raspi ist es? A,B,2?
Könnte mir vorstellen das der raspi mit apache vielleicht etwas zu langsam ist, in dem Fall könnte man es anstatt mit apache mit lighttpd versuchen.
Allerdings wird deine Seite bei mir sofort geladen, hmm, seltsam.
Hallo Christopher,
jetzt geht es wieder schnell! Ich hab deine Datenbankeinstellungen wieder komplett importiert (davor die alte gelöscht), dann ging es wieder! Ich brauch halt nur 3 gpio´s. Den Rest brauch ich nicht. Deshalb hab ich den rest gelöscht und die zusätzlichen 2 gpio´s eingefügt. Anschließend ein paar Zeiten reingetan und dann ging es wieder langsam.. jetzt mach ich mal ein paar Tests und geb wieder bescheid. Evtl. wäre es gut, wenn du meinen Kommentar hier mit dem Link löscht oder für den Rest der Welt unleserlich machst.. nicht dass die mir meine Zeiten verstellen 🙂 Danke
So, habe den Kommentar mit dem Link gelöscht 😉
Schon sehr komisch bei dir mit der Geschwindigkeit.
Hmm,kannst du eventuell mal einen mysql-dump machen? So das ich deine Daten bei mir einspielen kann um zu schauen woran es liegen könnte?
Hallo, ich würde dir ja gerne die Datei schicken, nur wohin? clemens.herz@gmx.de wäre mein adresse
schick sie mir an webmaster@mausbiber-projekte.de
fast heißt jetzt, dass es geht!! Hurra!
Vielen Dank! Der Winter kann kommen.
Das ist echt ein cooles Programm!
Freut mich, ehrlich.
so, jetzt rattert das Relais nach Vorgabe. Aber ich muss die Zeiten einstellen, dann das Python scheduler.py beenden und neu starten, damit die Vorgaben wieder am Relais ausgegeben werden.
im SSH kommt folgendes:
2015-10-27 20:58:06 : websockets …. ein GUI-Client wurde aus der Queue entfernt
2015-10-27 20:58:30 : websockets …. GUI Queue startet
2015-10-27 20:58:30 : websockets …. ein GUI-Client wurde in die Queue aufgenommen
und in der Datenbank stehen auch die neuen werte, aber das Relais tut nichts.
Der Ablauf ist bei dir also wie folgt:
1. du startest scheduler.py – ok
2. du erstellst über die weboberfläche schaltzeiten – ok
3. es wird aber nichts geschaltet
4. du stopst scheduler.py und startest es direkt neu – jetzt wird geschaltet?
Richtig?
Wenn es das ist, dann liegt es daran das die weboberfläche aus irgendeinem grund nicht mehr dazu kommt den befehl über websockets raus zu schicken.
Deshalb habe ich der Datei „timer_python_bridge.js“ eine Zeitverzögerung von 500ms eingebaut.
Manchmal ging es bei mir mit 250ms, manchmal habe ich 2000ms gebraucht – verstehe bis heute nicht warum es mal klappt und mal nicht.
Versuch mal in der „timer_python_bridge.js“ die 500 (kommt 4 mal vor) durch 2500 zu ersetzen und teste es dann neu.
Danach kannst du dann in 500 Schritten runter gehen bis es nicht mehr klappt.
Würde den Fehler gerne abstellen, weiß aber leider nicht einmal warum er manchmal auftritt und manchmal nicht.
hi Christopher,
genauso ist es!! ich werde es testen und berichten!
Danke für den Tipp
jetzt hab ich es mit Python 3 fast am laufen 🙂
Cooles Tool
Was bedeutet „fast“ ?
Hallo, also ich hab jetzt nach deiner Anleitung installiert, die config.php auch noch angepasst..
jetzt wollte ich die scheduler.py starten, jetzt kommt folgender Fehler:
pi@raspberrypi ~/zeitschaltuhr $ sudo python scheduler.py
File „scheduler.py“, line 85
data = yield from sending_queue_gui.get()
^
SyntaxError: invalid syntax
***
ich hab folgende python-erweiterungen installiert:
pi@raspberrypi ~ $ pip freeze
APScheduler==3.0.4
Pillow==2.6.1
PyMySQL==0.6.7
RPi.GPIO==0.6.0a3
RTIMULib==7.2.1
argparse==1.2.1
chardet==2.3.0
colorama==0.3.2
futures==3.0.3
html5lib==0.999
logging==0.4.9.6
lxkeymap==0.1
mcpi==0.1.1
ndg-httpsclient==0.3.2
numpy==1.8.2
picamera==1.10
pifacecommon==4.2.1
pifacedigitalio==3.1.0
pyOpenSSL==0.13.1
pyasn1==0.1.7
pygame==1.9.2a0
pygobject==3.14.0
pyserial==2.6
pytz==2015.7
requests==2.4.3
sense-hat==2.1.0
six==1.8.0
tinkerforge==2.1.5
tzlocal==1.2
urllib3==1.9.1
websocket-client==0.32.0
wheel==0.24.0
wsgiref==0.1.2
—
wer kann mir dabei helfen?
Was mir auf den ersten Blick auffällt, dir fehlt das package „websockets“.
websockets UNGLEICH websockets-client
Du willst ja einen websockets-server starten, da bringt dir ein client recht wenig.
Das package mal installieren -> websockets
Welche python-Version hast du installiert?