» Willkommen auf Homeautomation «

Henro
aus Berlin
offline



Real OC or Post God !
23 Jahre dabei !

Intel Core i7
4000 MHz @ 4800 MHz mit 1.350 Volt


Ich steige in die Diskussion um den tollen Shelly Test mal mit einer praxisrelevanten Frage ein:

Und zwar baue ich mir gerade mit einem Lichtschalter inkl. Kontrolllampe und einem Shelly Plus i4 einen "Haus Ein/Aus" Schalter. Er wird immer dann betätigt wenn der letzte das Haus verlässt bzw. der erste das Haus betritt.

Der Shelly bzw. seine Schaltstellung ist nun eine weitere Bedingung bei diversen Szenen, z.B. die des Shellys der die Zirkulationspumpe für das warme Wasser steuert. Die Szene startet nun nur noch wenn die Schaltstellung des i4 auf "ein" steht.

So möchten wir unnötigen Energieverbrauch im Haus vermeiden ohne auf Komfort zu verzichten und es möglichst einfach halten.


Jetzt zu meiner eigentlichen Frage: Ich möchte irgendwie erreichen, dass der Shelly i4 wenn er schaltet auch den Raspberry Pi hinter meinem Magic Mirror kontaktiert und dieser dann einen Befehl ausführt, nämlich den zum aktivieren/deaktivieren der HDMI Verbindung. So soll der Mirror bzw. der Bildschirm in den Standby gehen, was ja Sinn macht wenn eh niemand da ist.

Auf dem Raspberry Pi läuft das standard Image.

Hat jemand eine Idee? Ich habe momentan leider noch nicht mal den Hauch eines Ansatzes :noidea:

Beiträge gesamt: 14531 | Durchschnitt: 2 Postings pro Tag
Registrierung: Juli 2001 | Dabei seit: 8558 Tagen | Erstellt: 15:39 am 30. Nov. 2022
funkyhome
aus Krefeld
online



Administrator
23 Jahre dabei !

Intel Core i9
3600 MHz @ 5200 MHz
78°C mit 1.552 Volt


Hört sich nach einem sehr guten Plan an :thumb:
Dazu fallen mir ein paar Möglichkeiten ein ...

Man könnte eine URL aufrufen lassen, die auf deinem Magic Mirror bzw. Raspi eine Aktion auslöst.
Dafür müsstest du den Webserver aktivieren (falls er nicht ohnehin aktiv ist) dort dann ein Perl oder PHP oder Python oder was auch immer Script ablegen, das dann wiederum lokal den Standby Modus aktiviert bzw. aufhebt.

Alternativ könnte man das Ganze auch "hart verdrahten", indem man einen weiteren Shelly oder was auch immer schaltet der deine Powertaste am GPIO auslöst.
Quasi wie der USB Ultra IR Infrarot Power On/Off im OCinside.de Fanshop, wo ein Optokoppler den Powertaster auslöst.


Hardware News lesen * Unterhalten * Smarthome und Gadgets
Übertakten, Modding und Testberichte * Fanartikel kaufen

Beiträge gesamt: 152102 | Durchschnitt: 18 Postings pro Tag
Registrierung: April 2001 | Dabei seit: 8620 Tagen | Erstellt: 18:49 am 30. Nov. 2022
Henro
aus Berlin
offline



Real OC or Post God !
23 Jahre dabei !

Intel Core i7
4000 MHz @ 4800 MHz mit 1.350 Volt


Super, "gesagt getan" habe ich apache auf dem Raspberry installiert und php :punk:

Ich habe mich hierzu an folgende Anleitung gehalten: https://www.heise.de/tipps-tricks/Raspberry-Pi-als-Webserver-einrichten-so-klappt-s-4988855.html

Die Befehle zum HDMI An/Aus Schalten die ich nutze sind "vcgencmd display_power 1" und "vcgencmd display_power 0"

Diese nutze ich auch per crontab zur geplanten Nachtabschaltung.

Wie bekomme ich nun den Raspberry Pi dazu die auszuführen wenn ich den Shelly schalte? :noidea:

Beiträge gesamt: 14531 | Durchschnitt: 2 Postings pro Tag
Registrierung: Juli 2001 | Dabei seit: 8558 Tagen | Erstellt: 9:46 am 1. Dez. 2022
funkyhome
aus Krefeld
online



Administrator
23 Jahre dabei !

Intel Core i9
3600 MHz @ 5200 MHz
78°C mit 1.552 Volt


Genauso wie du es im crontab ausführst, nur über eine .pl oder .php Datei.

Zum Beispiel könnte es eine ganz primitive Perl Datei ganz ohne Schnickschnack sein.

Der Inhalt der Datei poweron.pl könnte so aussehen (code weglassen und mit #!/usr/bin/perl beginnen):

Code

#!/usr/bin/perl
#############
# HDMI einschalten
#############
system("vcgencmd display_power 1");



Und die Datei poweroff.pl so:

Code

#!/usr/bin/perl
#############
# HDMI ausschalten
#############
system("vcgencmd display_power 0");


Diese Dateien legst du in deinem webserver Verzeichnis ab.
Das Standardverzeichnis ist meist: /var/www/

Dann versiehst du die Datei mit Dateiberechtigung 755, das geht als Admin z.B. mit dem Befehl:
chmod 775 /var/www/poweron.pl

Aufgerufen wird sie dann z.B. über eine Szene oder direkt in der Shelly Geräteoberfläche in Actions über "Url to be hit ..." und dort dann http:// deine Raspi IP /poweron.pl eintragen, also z.B.:
http://192.168.1.123/poweron.pl

Am besten natürlich zum Testen erstmal in einem Browser auf dem PC aufrufen, der sich im gleichen lokalen Netzwerk befindet.


Hardware News lesen * Unterhalten * Smarthome und Gadgets
Übertakten, Modding und Testberichte * Fanartikel kaufen

Beiträge gesamt: 152102 | Durchschnitt: 18 Postings pro Tag
Registrierung: April 2001 | Dabei seit: 8620 Tagen | Erstellt: 11:43 am 1. Dez. 2022
Henro
aus Berlin
offline



Real OC or Post God !
23 Jahre dabei !

Intel Core i7
4000 MHz @ 4800 MHz mit 1.350 Volt


Habe ich gemacht. Wenn ich die Dateien in /var/www/ erstelle, bekomme ich vom Browser "datei nicht gefunden". Lege ich sie statt dessen in /var/www/html/ dann zeigt mir der Browser den Code an :noidea:

Beiträge gesamt: 14531 | Durchschnitt: 2 Postings pro Tag
Registrierung: Juli 2001 | Dabei seit: 8558 Tagen | Erstellt: 23:00 am 1. Dez. 2022
funkyhome
aus Krefeld
online



Administrator
23 Jahre dabei !

Intel Core i9
3600 MHz @ 5200 MHz
78°C mit 1.552 Volt


Das passt soweit :thumb:
Den DocumentRoot könntest du in der apache.conf anpassen, aber lass es ruhig so.

Wenn dein .pl Code angezeigt wird, anstatt ausgeführt, dann ist das auch soweit richtig, denn eigentlich gehören Scripte in ein Unterverzeichnis namens /cgi-bin/ das man unter dem Pfad mit ausführbaren Recht (z.B. 755) anlegt.

Alternativ kannst du auch in deiner /etc/apache2/apache2.conf (bzw. lieber in der httpd.conf da die httpd.conf meist innerhalb deiner apache2.conf geladen wird und auch bei Updates, etc. erhalten bleibt) folgendes ans Ende eintragen, damit die Scripte auch in anderen Verzeichnissen ausgeführt werden können:
AddHandler cgi-script .cgi .pl
Options FollowSymLinks +ExecCGI


Danach mit folgendem Befehl den Apache einmal neu starten lassen:
sudo /etc/init.d/apache2 restart

Es gäbe auch noch ein paar andere Grnde, warum das Script nicht ausgeführt wird (Alias directive, Perl deaktiviert, etc., aber probier das erstmal so aus.


Hardware News lesen * Unterhalten * Smarthome und Gadgets
Übertakten, Modding und Testberichte * Fanartikel kaufen

Beiträge gesamt: 152102 | Durchschnitt: 18 Postings pro Tag
Registrierung: April 2001 | Dabei seit: 8620 Tagen | Erstellt: 5:51 am 2. Dez. 2022
Henro
aus Berlin
offline



Real OC or Post God !
23 Jahre dabei !

Intel Core i7
4000 MHz @ 4800 MHz mit 1.350 Volt


ok ... die Datei httpd.conf gibt es nicht, wenn ich sie anlege mit den beiden Zeilen dann ändert es nichts.

Wenn ich die beiden Zeilen in die apache.conf einfüge dann startet anschließend der Apache nicht neu, sondern gibt das hier aus:

Code
[....] Restarting apache2 (via systemctl): apache2.serviceJob for apache2.service failed because the control process exited with error code.
See "systemctl status apache2.service" and "journalctl -xe" for details.
failed!



Beiträge gesamt: 14531 | Durchschnitt: 2 Postings pro Tag
Registrierung: Juli 2001 | Dabei seit: 8558 Tagen | Erstellt: 8:45 am 2. Dez. 2022
funkyhome
aus Krefeld
online



Administrator
23 Jahre dabei !

Intel Core i9
3600 MHz @ 5200 MHz
78°C mit 1.552 Volt


Lösche die httpd.conf mal wieder und starte den Apache nochmal neu.
Wenn er dann wieder ohne Fehlermeldung startet, trag es direkt ganz am Ende in die apache2.conf ein und starte den Apache neu.
Falls der Fehler immernoch auftritt, poste mal den Inhalt von:
systemctl status apache2.service
und
journalctl -xe
Oder schau kurz rein, was dort für Fehler aufgeführt sind.


Hardware News lesen * Unterhalten * Smarthome und Gadgets
Übertakten, Modding und Testberichte * Fanartikel kaufen

Beiträge gesamt: 152102 | Durchschnitt: 18 Postings pro Tag
Registrierung: April 2001 | Dabei seit: 8620 Tagen | Erstellt: 8:58 am 2. Dez. 2022
Henro
aus Berlin
offline



Real OC or Post God !
23 Jahre dabei !

Intel Core i7
4000 MHz @ 4800 MHz mit 1.350 Volt


Ich bekomme beim Aufruf der Scripte nun:


Forbidden
You don't have permission to access this resource.

Apache/2.4.38 (Raspbian) Server at 192.168.178.66 Port 80



Der Apache startet nicht neu wegen der Zeile

Options FollowSymLinks +ExecCGI

Ändere ich diese in

Options +ExecCGI

Dann startet er :noidea:

Beiträge gesamt: 14531 | Durchschnitt: 2 Postings pro Tag
Registrierung: Juli 2001 | Dabei seit: 8558 Tagen | Erstellt: 12:04 am 3. Dez. 2022
funkyhome
aus Krefeld
online



Administrator
23 Jahre dabei !

Intel Core i9
3600 MHz @ 5200 MHz
78°C mit 1.552 Volt


Hast du die Rechte für die Datei und ggf. noch die Verzeichnisse vergeben?
chmod 775 /var/www/poweron.pl
Kannst du die index Datei aufrufen, die dort in dem Verzeichnis drin liegen sollte?


Hardware News lesen * Unterhalten * Smarthome und Gadgets
Übertakten, Modding und Testberichte * Fanartikel kaufen

Beiträge gesamt: 152102 | Durchschnitt: 18 Postings pro Tag
Registrierung: April 2001 | Dabei seit: 8620 Tagen | Erstellt: 12:20 am 3. Dez. 2022