Hallo,
ich bin fast ein totaler Neuling was den Raspberry angeht. Fertige Sachen draufzupacken ist ok, aber bei mehr wirds kompliziert.
Hab es nun geschafft yowsup zum laufen zu bekommen. Das funktioniert super.
Nun möchte ich gerne dass mir yowsup eine Whatsapp Nachricht auf mein Handy sendet sobald ein neuer Timer auf meinem Sat-Receiver angelegt wird.
Hier ein Script welches ich bekommen habe:
#!/bin/bash
# Dieses Script überprüft die aktuellen Timer auf der Vusolo2 (via enigma2 API).
# Wenn neue Timer hinzugekommen sind, wird eine Nachricht via WhatsApp
# rausgeschickt
# Enigma2 API Reference:
# http://dream.reichholf.net/e2web/
#################################################################
#
# Diese Daten müssen an die eigenen Bedürfnisse angepasst werden
WHATSAPP_RCV="491712345678" # internationale Handy-Nr. des WhatsApp-Accounts (ohne + davor)
WHATSAPP_CFG="/pfad/zu/yowsup.conf" # Pfad zur yowsup Konfiguration
WHATSAPP_BIN="/usr/local/bin/yowsup-cli" # Pfad zum WhatsApp Client yowsup-cli
TIMERLIST_URL="http://vusolo2/web/timerlist" # URL zur Enigma2-Schnittstelle der Timerliste
#################################################################
MYSCRIPT=$(readlink -f $0)
MYSCRIPTNAME=$(basename ${MYSCRIPT})
MYSCRIPTPATH=$(dirname ${MYSCRIPT})
LOCK_PATH="/tmp/${MYSCRIPTNAME}"
LOCK_FILE="${LOCK_PATH}/.lock"
ARCHIVE_PATH="/var/tmp/vusolo_timer"
mkdir -p "${ARCHIVE_PATH}"
FIND_BIN="/usr/bin/find"
XML_BIN="/usr/bin/xmlstarlet"
WGET_BIN="/usr/bin/wget"
# Prüfen ob Script bereits läuft, wenn ja, dann exit.
if ! mkdir "${LOCK_PATH}" 2> /dev/null; then
echo "${MYSCRIPTNAME} is still running. Exiting." >&2
exit 1
fi
# Diese Funktion räumt am Ende auf.
function finish {
# Remove Lock_Path
[ "${LOCK_PATH}" != "" -a "${LOCK_PATH}" != "/" -a -d "${LOCK_PATH}" ] && { rm -rf -- "${LOCK_PATH}" ; }
"${FIND_BIN}" "${ARCHIVE_PATH}" -type f -mtime +3 -delete # Lösche Archiv Dateien die älter als 3 Tage sind
}
trap finish EXIT
# Speichern der PID im Lock-File (wird eigentlich nicht benötigt)
echo $$ > "${LOCK_FILE}"
XML_Daten=$("${WGET_BIN}" -q -O - "${TIMERLIST_URL}")
XML_ITEM_COUNT=$(echo "${XML_Daten}" | "${XML_BIN}" sel -t -v "count(/e2timerlist/e2timer)")
#echo ${XML_ITEM_COUNT}
for ((index=1; index <= ${XML_ITEM_COUNT}; index++)) ; do
Timer_begin_UnixTime="$(echo "${XML_Daten}" | "${XML_BIN}" sel -T -t -m "/e2timerlist/e2timer[$index]/e2timebegin" -v .)"
Timer_end_UnixTime="$(echo "${XML_Daten}" | "${XML_BIN}" sel -T -t -m "/e2timerlist/e2timer[$index]/e2timeend" -v .)"
# Timer_duration="$(date -d @$(echo "${XML_Daten}" | "${XML_BIN}" sel -T -t -m "/e2timerlist/e2timer[$index]/e2duration" -v .) +'%Y-%m-%d_%H-%M-%S')"
Timer_name="$(echo "${XML_Daten}" | "${XML_BIN}" sel -T -t -m "/e2timerlist/e2timer[$index]/e2name" -v .)"
Timer_servicename="$(echo "${XML_Daten}" | "${XML_BIN}" sel -T -t -m "/e2timerlist/e2timer[$index]/e2servicename" -v .)"
Timer_filename="$(echo "${XML_Daten}" | "${XML_BIN}" sel -T -t -m "/e2timerlist/e2timer[$index]/e2filename" -v .)"
Timer_logentries="$(echo "${XML_Daten}" | "${XML_BIN}" sel -T -t -m "/e2timerlist/e2timer[$index]/e2logentries" -v .)"
# Timer_serviceref="$(echo "${XML_Daten}" | "${XML_BIN}" sel -T -t -m "/e2timerlist/e2timer[$index]/e2servicereference" -v .)"
# Timer_repeated="$(echo "${XML_Daten}" | "${XML_BIN}" sel -T -t -m "/e2timerlist/e2timer[$index]/e2repeated" -v .)"
# Timer_description="$(echo "${XML_Daten}" | "${XML_BIN}" sel -T -t -m "/e2timerlist/e2timer[$index]/e2description" -v .)"
# Timer_afterevent="$(echo "${XML_Daten}" | "${XML_BIN}" sel -T -t -m "/e2timerlist/e2timer[$index]/e2afterevent" -v .)"
# Timer_eit="$(echo "${XML_Daten}" | "${XML_BIN}" sel -T -t -m "/e2timerlist/e2timer[$index]/e2eit" -v .)"
# Timer_location="$(echo "${XML_Daten}" | "${XML_BIN}" sel -T -t -m "/e2timerlist/e2timer[$index]/e2location" -v .)"
# Timer_tags="$(echo "${XML_Daten}" | "${XML_BIN}" sel -T -t -m "/e2timerlist/e2timer[$index]/e2tags" -v .)"
# Timer_disabled="$(echo "${XML_Daten}" | "${XML_BIN}" sel -T -t -m "/e2timerlist/e2timer[$index]/e2toggledisabled" -v .)"
# Timer_justplay="$(echo "${XML_Daten}" | "${XML_BIN}" sel -T -t -m "/e2timerlist/e2timer[$index]/e2justplay" -v .)"
# Timer_zapbeforerecord="$(echo "${XML_Daten}" | "${XML_BIN}" sel -T -t -m "/e2timerlist/e2timer[$index]/@zapbeforerecord" -v .)"
# Timer_justremind="$(echo "${XML_Daten}" | "${XML_BIN}" sel -T -t -m "/e2timerlist/e2timer[$index]/@justremind" -v .)"
Timer_begin="$(date -d @${Timer_begin_UnixTime} +'%Y-%m-%d_%H-%M-%S')"
Timer_end="$(date -d @${Timer_end_UnixTime} +'%Y-%m-%d_%H-%M-%S')"
TimerFilename="${ARCHIVE_PATH}/${Timer_begin} - ${Timer_end} - ${Timer_name//\//_}"
TimerFilename_UnixTimes="${ARCHIVE_PATH}/${Timer_begin_UnixTime} - ${Timer_end_UnixTime} - ${Timer_name//\//_}"
# Wenn Timer noch nicht existiert, dann ...
if [ ! -f "${TimerFilename}" ] ; then
{
set | egrep '^Timer_'
} > "${TimerFilename}"
IFS= read -r -d '' MyMessage <<-EOF
${MyMessage}
${Timer_name}
${Timer_begin} - ${Timer_end}
${Timer_servicename}
EOF
elif [ -f "${TimerFilename}" ] ; then
touch "${TimerFilename}"
fi
done
# Wenn neue Timer gefunden wurden, dann ...
if [ -n "${MyMessage}" ] ; then
MY_TITLE="Neuer Timer gefunden"
HOR_LINE=$(printf '=%.0s' $(seq 1 ${#MY_TITLE}))
read -r -d '' MyMessage <<-EOF
== ${MY_TITLE} ==
===${HOR_LINE}===
${MyMessage}
EOF
"${WHATSAPP_BIN}" demos -c "${WHATSAPP_CFG}" -s "${WHATSAPP_RCV}" "${MyMessage}" > /dev/null |& grep -v '^INFO'
fi
Alles anzeigen
Leider bekomme ich beim ausführen diese Nachricht:
Zitat
[font="Monaco"]-:2.1: Start tag expected, '<' not found[/font][font="Monaco"]^[/font]
[font="Monaco"]./yowplug.sh: Zeile 57: ((: index <= : Syntax Fehler: Operator erwartet. (Fehlerverursachendes Zeichen ist \"<= \").[/font]
Kann mir jemand sagen was das zu bedeuten hat?
Zeile 57 ist dieses hier:
Zitat[font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]for ((index=1; index <= ${XML_ITEM_COUNT}; index++)) ; do[/font]