Lichtsteuerung über Webapp

  • Hallo zusammen!


    Vor kurzem habe ich mir meine erste Pi (3 Model B) zugelegt und bin gerade bei mein erstes eigenes Projekt umzusetzen. Leider scheitert es gerade schon ein wenig an der Konzeption. Leider habe ich noch nicht besonders viel mit Python gearbeitet. Von Beruf bin ich Frontend-Entwickler, sodass mein Fokus eher auf den "klassischen" Websprachen liegt.


    Meine Idee

    Ich habe eine kleine Webapp entwickelt, über die ich gerne die Lampen in einer Wohnung steuern würde.


    Die Umsetzung
    Die Webapplikation läuft per Apache-Server auf der PI. Innerhalb der Webapplikation kann ich die verschiedenen Lampen toggeln. Bei einem Klick auf einen Button sende ich via Ajax die ID der Lampe an eine kleine PHP-Funktion, welche je nach übergebener ID ein Python-Script mit entsprechenden Argumenten ausführt. Ich habe ein kleines Python-3 Modul gefunden, welches das senden über das 433MHz-Modul übernimmt (GitHub).



    Was haltet ihr von der Umsetzung? Wie gesagt, ich bin ein Neuling was Python angeht (auch wenn ich dieses Projekt gerne dazu nutzen würde, um meine ersten konkreten Erfahrungen mit Python zu machen).


    Die von mir angedachte Umsetzung hat jedoch ein großes Problem: Angenommen ich öffne die Applikation zur Lichtsteuerung nun von einem anderen Gerät, dann zeigt mir dieses natürlich nicht an, ob eine Lampe gerade eingeschaltet ist oder nicht. Hierzu müsste ich eine Art Speicher implementieren (vielleicht in Form einer kleinen Datenbank?), in dem hinterlegt wird, ob eine Lampe gerade eingeschaltet ist oder nicht. Alternativ kam mir die Idee auf das PHP-Script zu verzichten und die Auswertung direkt über Python zu erledigten (ist das überhaupt möglich?). Das Python-Script würde permanent neben dem Apache-Server laufen. Beim Aufruf der Webapp würde dann eine kurze Abfrage gestellt, ob eine Lampe gerade an oder aus ist.


    Was denkt ihr? Welcher Weg ist der sinnvollste? Ist meine Idee überhaupt so Umsetzbar?


    Viele Grüße und Dankeschön :)

  • Hallo,


    kann man alles in Python machen. Webapplikationen gehen über Python und eines der Webframeworks vie Flask oder Django oder Tornado oder ... mindestens genau so gut wie via PHP. Die Webapplikation lieferst du dann über einen WSGI-Server aus, den Apache schaltest du als Reverse Proxy davor, dann ist der Apache nach wie vor der einzige direkt von aussen erreichbare Server.


    Bzgl. des Status: Anfragen ist besser als DB. Grund: wenn du einen Stromausfall hattest sind ja wahrscheinlich nachdem der Strom wieder da ist alle Lampen aus. In der DB ist aber der letzte Status gespeichert -> Risiko, dass DB-Status != realer Status.


    Gruß, noisefloor