Website nach String durchsuchen -> HDMI Cec Befehl ausgeben

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Heyho Leute,

    habe mal wieder eine Anfängerfrage, die skripttechnisch wahrscheinlich nicht allzu schwer umzusetzen ist.

    Folgende Zielstellung:
    Der Raspi zeigt im Dauerbetrieb eine Webseite an (Alarmmonitor in einer Feuerwehr). Bei Alarmeingang schaltet die Webseite von der Ruheansicht in die Alarmansicht um. Wenn dies geschieht soll der Raspi via HDMI CEC (cec utils sind schon installiert) den angeschlossenen Monitor anschalten.

    Danach soll er 2h warten, und ihn dann per CEC wieder ausschalten.

    Überlegung meinerseits:

    Der Raspi soll per cronjob alle 30sek oder 60sek den String "Wacheninformationsdisplay" (ist nur in der Ruheansicht vorhanden) suchen. Wenn er ihn findet, soll nichts geschehen, wenn er ihn nichtmehr findet (Monitor hat in Alarmansicht umgeschalten), soll er den CEC Befehl senden.

    Könntet ihr mir Hilfestellung bei der Umsetzung des Auslesens des Strings geben? (wget? )

    Außerdem bin ich mir unsicher, ob die Überlegung so überhaupt etwas taugt, oder ob ich etwas nicht beachte.

    Danke schonmal im Voraus! Frohes Neues!

  • Website nach String durchsuchen -> HDMI Cec Befehl ausgeben? Schau mal ob du hier fündig wirst!

  • Simple Loesung wie vorgeschlagen:

    Code
    if ! curl https://forum-raspberrypi.de/forum/thread/50697-website-nach-string-durchsuchen-hdmi-cec-befehl-ausgeben/ | grep Wacheninformationsdisplay;
    then
       echo Alarm
    fi

    Eine andere Variante waere Selenium

    Danke schonmal dafür!


    Bezüglich dem ausschalten/Timer von 2h starten hätte ich noch eine Frage:

    ich würde in dem skript nach dem "fi" einfach ein sleep von x Sekunden setzen und danach einfach wieder einen echo Befehl zum ausschalten des Monitors. Jetzt wird das Skript aber ja alle 30sek per Cronjob gestartet, wird der Timer dabei überschrieben?

    Einmal editiert, zuletzt von Benl112 (2. Januar 2021 um 13:03) aus folgendem Grund: Nicht richtig gelesen.

  • > Jetzt wird das Skript aber ja alle 30sek per Cronjob gestartet, wird der Timer dabei überschrieben?

    Nein, aber es werden weitere sleeps gestartet.

    Wahrscheinlich ist es am einfachsten vor dem Start von sleep etwas in ein File zu schreiben und es nach dem sleep wieder zu loeschen. Das Script muesste zuerst testen ob das File existiert und nichts tun wenn es exisitert.

    > ich würde in dem skript nach dem "fi"

    Nein, vor dem fi

  • > Jetzt wird das Skript aber ja alle 30sek per Cronjob gestartet, wird der Timer dabei überschrieben?

    Nein, aber es werden weitere sleeps gestartet.

    Wahrscheinlich ist es am einfachsten vor dem Start von sleep etwas in ein File zu schreiben und es nach dem sleep wieder zu loeschen. Das Script muesste zuerst testen ob das File existiert und nichts tun wenn es exisitert.

    > ich würde in dem skript nach dem "fi"

    Nein, vor dem fi

    (habe leider gerade keinen Zugang zum Pi und kanns deswegen nicht direkt probieren, kann ich erst die nächsten Tage wieder)

    Bash
    #!/bin/bash
    if ! curl (webseite) | grep Wacheninformationssystem ;
    then
       echo 'on 0' | cec-client -s -d 1
       touch /home/pi/monitoraktiv
       sleep 7200
       echo 'standby 0' | cec-client -s -d 1
       rm /home/pi/monitoraktiv
    fi

    Würde das so passen? Die Datei "monitoraktiv" wird vor dem sleep erstellt und nach dem sleep wieder gelöscht?

    Jetzt fehlt mir nur noch die Abfrage, ob die Datei existiert und wenn ja, dass dann nichts ausgeführt wird. Da habe ich aber derzeit noch keinen Schimmer :(

  • So?
    Danke für die viele Hilfe, und Entschuldigung für die einfachen Fragen :D

    Nochmal zur Sicherheit, ob ich es richtig verstanden habe:

    Code
    if ! curl (webseite)

    Hier sagt das "!", dass es sich um eine "if not" Bedingung handelt? Also wenn er "Wacheninformationssystem" nicht findet, macht er weiter?

  • So muesste es gehen (CEC einfach uebernommen):

    > Hier sagt das "!", dass es sich um eine "if not" Bedingung handelt? Also wenn er "Wacheninformationssystem" nicht findet, macht er weiter?

    Ja

    KKoPi beendet das Script mit exit, darum sieht die Bedingung bei ihm anders aus

  • So muesste es gehen (CEC einfach uebernommen):

    > Hier sagt das "!", dass es sich um eine "if not" Bedingung handelt? Also wenn er "Wacheninformationssystem" nicht findet, macht er weiter?

    Ja

    KKoPi beendet das Script mit exit, darum sieht die Bedingung bei ihm anders aus

    ah alles klar, verstanden. Vielen vielen Dank schonmal, ich melde mich, wenns dann klappt :D vielen Dank

Jetzt mitmachen!

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