Fernseh über PIR und SSH an/ausschalten

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
Philipp238
User
Beiträge: 4
Registriert: Sonntag 7. Januar 2018, 14:38

Hallo zusammen,

ich scheiter gerade an der Umsetzung eines Programmes und hoffe, dass mir hier jemand weiterhelfen kann.
Ein Raspberry Pi ist mit HDMI an einen Fernseher angeschlossen und schaltet diesen mittels HDMI CEC ein und wieder aus. Ausgelöst wird das ganze über einen PIR, das Script dafür läuft logischerweise die ganze Zeit.

Parallel dazu soll es noch eine Möglichkeit geben den Fernseher von einem Windows PC mit Hilfe einer batch Datei welche den Raspberry Pi über SSH anspricht zu aktivieren.

Die Umsetzung mit dem Bewegungsmelder ist mir klar, wie ich den Raspberry über SSH anspreche und damit den Fernseher aktiviere ebenfalls.

Mir stellt sich allerdings nun die Frage, ob sich das in einem Script umsetzten lässt oder ob ich zwei Scripts brauche?

Macht es Sinn ein Script für TV an/aus über SSH und eines nur für den Bewegungsmelder zu schreiben?
So dass das Bewegungsmelder Script den Fernseher an- und ausschaltet und sobald er über SSH aktiviert wird dieses schließt und nach Ablauf eines Timers wieder aufruft.

Ich hoffe die Frage ist nicht zu doof gestellt, ich bin noch relativ neu auf dem Gebiet.

Gruß
Philipp
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Was du brauchst ist ein Skript, das mit zwei Arten von Ereignissen umgehen kann. GPIOs und etwas anderem, zb einem socket. Damit kann man von außen auf den Programm Ablauf einwirken.

Ob der socket dann per SSH & zb “echo schaltaus > /var/run/meinsuperheimautomationssystem” angesprochen wird, oder per HTTP ist zweitrangig.
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@Philipp238: zwei Skripte machen die Sache komplizierter. Einfacher wäre es, statt SSH HTTP zu benutzen, dazu braucht man nur ein HTTP-Framework (z.B. bottle), einbinden, Funktion schreiben, fertig.

Am besten läßt Du den HTTP-Server in einem Thread arbeiten, füllst beim Aufruf einer bestimmten Web-Seite eine Queue mit einem AN/AUS-Kommando, füllst die selbe Queue in einem Call-Back für den Bewegungsmelder mit einem HUCH-Kommando, und arbeitest in der main-Funktion die Queue ab, um den Fernseher an oder auszuschalten.
Philipp238
User
Beiträge: 4
Registriert: Sonntag 7. Januar 2018, 14:38

Danke für eure Antworten!

Das scheint mir wohl doch komplizierter zu sein als zunächste angenommen, zumindest wenn man nicht so tief in der Materie drin steckt.
Lässt sich die Variante mit dem Socket einfach umsetzen oder die mit dem HTTP-Framework?

Habt ihr eventuell das ein oder andere Codebeispiel zur Hand?
Antworten