Sending messages to the TV

Antworten
Nachricht
Autor
Benutzeravatar
valdemirs
Member
Member
Beiträge: 115
Registriert: 13 Mär 2015 13:15
Wohnort: Sao Paulo - Brazil
Receiver 1: Vu+Duo2
Receiver 2: Mi Box S
Receiver 3: https://bit.ly/3eJp781
Hat gedankt: 28 Mal
Hat Dank erhalten: 5 Mal

Sending messages to the TV

#1

Beitrag von valdemirs »

Hi,
is there any way to send a message to the TV by command line ?
(Like the "send message" option in Open Webif)
Benutzeravatar
s3n0
Senior member
Senior member
Beiträge: 1580
Registriert: 02 Jan 2017 14:38
Receiver 1: Vu+ Zero 4K
Receiver 2: Vu+ Solo SE V2
Hat gedankt: 108 Mal
Hat Dank erhalten: 416 Mal
Kontaktdaten:

#2

Beitrag von s3n0 »

Code: Alles auswählen

wget -qO- 'http://127.0.0.1/web/message?type=1&timeout=20&text=Hello%20world'


- type:
0 = conditional MessageBox - with the return answer Yes / No ... shell-script example is here: https://www.opena.tv/viewtopic.php?p=517641#p517641
1 = info MessageBox - usually no "buttons" are there
2 = notice MessageBox (similar as info messagebox)
3 = error / warning MessageBox (for notify of the critical error)

- timeout:
20 = waiting time in seconds, until the MessageBox is lost / closed

Enigma2:WebInterface – TuxBoxWIKI
xopen
VIP
VIP
Beiträge: 4
Registriert: 24 Aug 2015 17:31
Hat gedankt: 5 Mal

#3

Beitrag von xopen »

hallo ich habe da mal eine frage kann ich bei typ=0 an die ja/nein jeweils eine if bedingung knüpffen ?
Benutzeravatar
Pike_Bishop
Moderator
Moderator
Beiträge: 2601
Registriert: 11 Feb 2020 22:06
Wohnort: here and there
Receiver 1: Mutant HD2400
Receiver 2: VU Ultimo 4K
Receiver 3: Octagon SF8008
Receiver 4: Gigablue Quad 4K
Receiver 5: VDR
Hat gedankt: 684 Mal
Hat Dank erhalten: 1491 Mal

#4

Beitrag von Pike_Bishop »

Hi,

Ja das klappt, hab das hier z.b: im OpenPLi mit folgenden Script verwendet um die Box in den Standby zu schicken (mittels nem Cronjob dazu), Script sieht so aus;

Code: Alles auswählen

#!/bin/sh

BOXIP="http://localhost"
TMP=/tmp
CHECKFILE=$TMP/own_standbytimer_check.txt
NOANSWER="Keine rechtzeitige Antwort"
YES="Antwort lautet JA"
NO="Antwort lautet NEIN"
POWERSTATE_FILE="powerstate"
MESSAGES="message*"
STANDBYTIMERSTART="$(date +%a.%d.%b.%Y-%H:%M)"


# Wechsel in das /tmp (TMP) Verzeichnis.
cd $TMP

# Altlasten loeschen.
rm -f $POWERSTATE_FILE
rm -f $MESSAGES
#rm -f $CHECKFILE


# Abfrage ob sich die Box bereits im
# Standby befindet, falls ja Abbruch.
wget "$BOXIP/web/powerstate"

if grep "true" $POWERSTATE_FILE ; then
   exit
fi


# Checkfile (CHECKFILE) erstellen und Datum + Uhrzeit eintragen.
echo $STANDBYTIMERSTART > $CHECKFILE
echo -e "\nAntwort bezgl. StandbyTimer" >> $CHECKFILE


# WebIF Befehle mit Abfrage Ja/Nein fuer Standby der Box.
wget "$BOXIP/web/message?text=Receiver+geht+in+3+Minuten+in+den+Standby+-+OK?&type=0&timeout=180"
sleep 180
wget "$BOXIP/web/messageanswer?getanswer=now"

# Antwort auswerten und in das Checkfile (CHECKFILE) schreiben.
CHECK="$(wget -qO- "$BOXIP/web/messageanswer?getanswer=now"|grep e2statetext|sed 's/e2statetext>\|<\|\/\|^[ \t]*//g' | tr -d '\!')"
echo $CHECK >> $CHECKFILE

# Bei Antwort NEIN wird das Script beendet,
# andernfalls geht die Box in den Standby.
if grep "NEIN" $CHECKFILE ; then
   exit
else
   wget -O /dev/null -q "$BOXIP/web/powerstate?newstate=0&type=0"
   #wget -O /dev/null -q "$BOXIP/web/powerstate?newstate=0&type=5"
fi


exit


Wie du ganz unten sehen kannst hab ich bei Antwort NEIN ne if Abfrage drinnen.


Grüsse
Pike
xopen
VIP
VIP
Beiträge: 4
Registriert: 24 Aug 2015 17:31
Hat gedankt: 5 Mal

#5

Beitrag von xopen »

denn gleich noch eine frage gibt es eine zusammenfassung was ich alles mit wget auf dem web panel abfragen kann ?

und schonmal danke @Pike_Bishop
Benutzeravatar
Pike_Bishop
Moderator
Moderator
Beiträge: 2601
Registriert: 11 Feb 2020 22:06
Wohnort: here and there
Receiver 1: Mutant HD2400
Receiver 2: VU Ultimo 4K
Receiver 3: Octagon SF8008
Receiver 4: Gigablue Quad 4K
Receiver 5: VDR
Hat gedankt: 684 Mal
Hat Dank erhalten: 1491 Mal

#6

Beitrag von Pike_Bishop »

Es gibt hier ein bisschen was dazu von @schorschi;
https://www.opena.tv/viewtopic.php?t=15123
unter WEBIF

Natürlich geht da aber noch mehr, man kann z.b: auch abfragen ob grade eine Aufnahme läuft, ich verwende das gerne in einigen meiner Scripts
(kannst z.b: im E2iPlayer Install/Update Script nachgucken).
Den Script Sammel Thraed findest wennst auf meine Sig klickst (kannst dich da ja mal umsehen).



Grüsse
Pike
xopen
VIP
VIP
Beiträge: 4
Registriert: 24 Aug 2015 17:31
Hat gedankt: 5 Mal

#7

Beitrag von xopen »

suche was für einscript wo es geprüft wird ob eine aufnahme am laufen ist
Benutzeravatar
Pike_Bishop
Moderator
Moderator
Beiträge: 2601
Registriert: 11 Feb 2020 22:06
Wohnort: here and there
Receiver 1: Mutant HD2400
Receiver 2: VU Ultimo 4K
Receiver 3: Octagon SF8008
Receiver 4: Gigablue Quad 4K
Receiver 5: VDR
Hat gedankt: 684 Mal
Hat Dank erhalten: 1491 Mal

#8

Beitrag von Pike_Bishop »

Na dann bist ja hier genau richtig, wie gesagt sowas findest in manchen meiner Scripts, aber egal ich poste dir mal den Part wie ich das verwende (incl. Kommentar);

Code: Alles auswählen

# Pruefen ob Aufnahme{n} laeuft/laufen, wenn nicht Enigma2-GUI Neustart einleiten, wenn doch Enigma2-GUI Neustart
# um TIMEOUT Minuten verschieben und das wiederholend so lange bis keine Aufnahme{n} mehr laeuft/laufen.
echo ""
sleep 11
TIMEOUT=10
z=1
REC=yes
while [ "$REC" = "yes" ] ; do
   if [ $($WGET -O- -q $BOXIP/web/timerlist | grep "<e2state>2</e2state>" | grep -cm 1 "2") = 1 ] ; then
      REC=yes
      echo -e "Kein Enigma2-GUI Neustart moeglich da eine Aufnahme laeuft -> Warte $TIMEOUT Minuten ...\n"
      
      if [ "$z" = "1" ] ; then
         MSG="$(echo -e "Kein Enigma2-Gui Neustart moeglich da eine Aufnahme\nlaeuft -> versuche es alle $TIMEOUT Minuten erneut ...")"
         $WGET -O - -q "$BOXIP/web/message?type=1&timeout=10&text=$MSG" > /dev/null
      fi
      
      z=$((z+1)) && sleep ${TIMEOUT}m
      echo -e "\nLeite Enigma2-GUI Neustart (Versuch $z) ein ...\n"
   else
      REC=no
      echo -e "Keine laufende Aufnahme -> Starte Enigma2-GUI neu ...\n"
      $WGET -O - -q "$BOXIP/web/message?text=Keine%20laufende%20Aufnahme%0AStarte%20Enigma2%2DGUI%20neu%20%2E%2E%2E&type=1&timeout=10" > /dev/null && sleep 12
   fi
done

$WGET -q -O - $BOXIP/web/powerstate?newstate=3



Grüsse
Pike
xopen
VIP
VIP
Beiträge: 4
Registriert: 24 Aug 2015 17:31
Hat gedankt: 5 Mal

#9

Beitrag von xopen »

weist du wie sich das datum und uhrzeit ermitteln läst ich möchte nicht das das script genau 1 min vor einer aufnahme startet zb
<e2timebegin>1666984200</e2timebegin>

mfg
xopen
Benutzeravatar
Pike_Bishop
Moderator
Moderator
Beiträge: 2601
Registriert: 11 Feb 2020 22:06
Wohnort: here and there
Receiver 1: Mutant HD2400
Receiver 2: VU Ultimo 4K
Receiver 3: Octagon SF8008
Receiver 4: Gigablue Quad 4K
Receiver 5: VDR
Hat gedankt: 684 Mal
Hat Dank erhalten: 1491 Mal

#10

Beitrag von Pike_Bishop »

Weiss ich leider nicht.
Benutzeravatar
Pike_Bishop
Moderator
Moderator
Beiträge: 2601
Registriert: 11 Feb 2020 22:06
Wohnort: here and there
Receiver 1: Mutant HD2400
Receiver 2: VU Ultimo 4K
Receiver 3: Octagon SF8008
Receiver 4: Gigablue Quad 4K
Receiver 5: VDR
Hat gedankt: 684 Mal
Hat Dank erhalten: 1491 Mal

#11

Beitrag von Pike_Bishop »

Hi,

Ok hab mich mal bisschen schlau gemacht die Zeiten in der timer.xml sind die unix Zeitstempel also z.b;

Code: Alles auswählen

<timer begin="[B][color=#FF8C00]1636309500[/color][/B]" end="[B][color=#FF8C00]1636311480[/color][/B]" serviceref="1:0:1:32CA:45D:1:C00000:0:0:0:" repeated="0" rename_repeat="1" name="Zeit im Bild" description="" afterevent="auto" eit="51487" tags="" disabled="0" justplay="0" always_zap="0" descramble="1" record_ecm="0" isAutoTimer="1">
<log code="500" time="1635723517">[AutoTimer] Try to add new timer based on AutoTimer Zeit im Bild.</log>
<log code="509" time="1635723517">[AutoTimer] Timer start on: Sun Nov  7 19:25:00 2021</log>


Ich hab damit schonmal zu tun gehabt vor einiger Zeit doch hab ich das vergessen gehabt, also der wichtige Teil davon ist ja;
begin="1636309500" -> Anfang unix Zeitstempel
end="1636311480" -> Ende unix Zeistempel
Es gibt hier z.b. nen Umrechner;
Unix-Timestamp in Datum umrechnen - Datum in Unix Timestamp umrechnen
nur hilft dir das so ja nichts aber das muss auch so umzurechnen gehen, mal gucken ....

EDIT !
Habs schon also z.b für die Anfangszeit oben im Beispiel also für 1636309500 so;

Code: Alles auswählen

date -d @[color=#FF8C00][B]1636309500[/B][/color]

Dabei kommt dann das raus;
Sun Nov 7 19:25:00 CET 2021

Das deckt sich mit dem Online Umrechner -> siehe Bild;

Der Dateianhang unix_timestamp_calculator.jpg existiert nicht mehr.


Mit diesen Infos solltest du nun was anfangen können hast halt einiges zum rausgreppen aus der timers.xml und umzurechnen, aber sollte alles machbar sein in nem Script
(sieht aber schon nach etwas Arbeit aus :D aber du wirst das schon schaffen).

EDIT 2 !
Wir schweifen aber langsam vom eigentlichen Thema ab, bitte für weitere andere Fragen Extra Threads eröffnen.


Grüsse
Pike
Dateianhänge
unix_timestamp_calculator.jpg
Benutzeravatar
Lucifer
Member
Member
Beiträge: 232
Registriert: 01 Feb 2015 12:30
Hat gedankt: 159 Mal
Hat Dank erhalten: 155 Mal

#12

Beitrag von Lucifer »

xopen hat geschrieben:weist du wie sich das datum und uhrzeit ermitteln läst ich möchte nicht das das script genau 1 min vor einer aufnahme startet zb
<e2timebegin>1666984200</e2timebegin>

mfg
xopen


Hi @xopen,

Convert epoch to DateTime:

Code: Alles auswählen

echo $(date -d  @1666984200 +'%Y%m%d%H%M%S')


Result: 20221028211000


Convert epoch to DateTime with separation marks and space:

Code: Alles auswählen

echo $(date -d  @1666984200 +'%Y-%m-%d %H:%M:%S')


Result: 2022-10-28 21:10:00


Convert DateTime with separation marks and space to epoch:

Code: Alles auswählen

echo $(date -d '2022-10-28 21:10:00' +"%s")


Result: 1666984200

regards,
Lucifer
Benutzeravatar
s3n0
Senior member
Senior member
Beiträge: 1580
Registriert: 02 Jan 2017 14:38
Receiver 1: Vu+ Zero 4K
Receiver 2: Vu+ Solo SE V2
Hat gedankt: 108 Mal
Hat Dank erhalten: 416 Mal
Kontaktdaten:

#13

Beitrag von s3n0 »

Code: Alles auswählen

owQuery()
{
    TOUT=$1
    QMSG=$2
    wget -qO- "http://127.0.0.1/web/message?type=0&timeout=${TOUT}&text=${QMSG}" > /dev/null 2>&1
    RETVAL=128
        # if the user does not press and does not choose anything (OK / EXIT buttons, NO / YES selection), then the default answer is used
        # if the user presses the EXIT button, only a negative answer will probably be used
        # so, it consists of two YES / NO answers and is always sent from OpenWebif
        # so, this RETVAL=128 is just a null value - as crash prevention
    while [ $TOUT -gt 0 ]; do
        RESULT=$(wget -qO- "http://127.0.0.1/web/messageanswer?getanswer=now" | grep "e2statetext")
        echo "$RESULT" | grep -q -E "YES|JA|ÁNO" && { RETVAL=0; break; }
        echo "$RESULT" | grep -q -E "NO|NEIN|NIE" && { RETVAL=1; break; }
        sleep 1
        TOUT=$((TOUT - 1))
    done
    # echo $RETVAL
    return $RETVAL
}

if owQuery 15 Are%20you%20kidding%20me%3F; then
    echo "the answer is YES / JA / ÁNO"
else
    echo "the answer is NO / NEIN / NIE"
fi
Antworten

Zurück zu „English Section“