Es ist wirklich nicht praktisch, Nachrichten zu senden, könnte man das nicht besser machen?
Es ist wirklich mühsam, zu sehen, was gestartet wird oder nicht…
Dann denke ich mir, dass ich vielleicht eine MQTT-Nachricht senden könnte, die ich in einer CSV-Datei speichere, aber naja…
Nutzt du nicht Telegram? Bei Telegram gibt es keine Grenzen.
Ansonsten machst du einen HTTP-Aufruf mit dem Block „HTTP-Anfrage“, du kannst einen Aufruf an einen Dienst wie IFTT machen, der eine Zeile in eine Google-Tabelle einfügt
Ich nutze nicht Telegram, keine Lust, noch eine Software hinzuzufügen…
Über etwas Externes zu gehen, ist mir auch nicht so recht…
Also habe ich eine MQTT-Nachricht erstellt, die mir den Namen des aktivierten Detektors oder Ähnliches sendet, und eine Zeile in eine CSV-Datei hinzugefügt, indem ich das Datum und die Uhrzeit hinzufüge.
Für diejenigen, die das interessiert, hier mein Bash-Code:
#/bin/bash
############################################
## Senden der PC-Temperatur an Gladys ##
############################################
### Variablen zur Anpassung
# Verbindung zum MQTT-Broker
User="gladys"
Pass="MeinPasswort"
Host="Der_PC_mit_Gladys"
# Adresse des Gerätetopics
Topic="gladys/master/device/mqtt:maison:Informations/feature/mqtt:maison:Informations:Texte/text"
CSVFile="/home/hizoka/SurveillanceActiviteGladys.csv"
### Variablen zur Anpassung
function CommandCheck()
{
# Funktion zum Überprüfen der Anwesenheit der erforderlichen Befehle
# Parameter: Name des Befehls und des Pakets (optional) durch : getrennt
# Beispiel: mosquitto_pub:mosquitto-clients
# Wenn kein Parameter angegeben wird
[[ -z ${1} ]] && return 1
# Begrenzung der Variablen auf die Funktion
local Command Package Parameter ReturnValue
ReturnValue=0
# Verarbeitung aller Parameter
for Parameter in "${@}"
do
Command="${Parameter%%:*}"
Package="${Parameter##*:}"
# Wenn der Befehl nicht existiert
if ! which ${Command} &>/dev/null
then
# Rückgabewert auf 1 setzen, um alle echo-Anweisungen vor dem Stoppen anzuzeigen
ReturnValue=1
echo -e "[${ROUGE}Fehler${RAZ}] Skript wird gestoppt, da der Befehl ${BLEUFONCE}${Command}${RAZ} nicht gefunden wurde." 1>&2
# Wenn ein Paket angegeben wird
[[ ${Package} ]] && echo -e "Für Ubuntu: ${FUCHSIA}sudo apt-get install ${Package}${RAZ}" 1>&2
fi
done
return ${ReturnValue}
}
# Farben für die Anzeige der Rückmeldungen
FUCHSIA="\e[1;35m"
RAZ="\e[m"
BLEUFONCE="\e[1;34m"
ROUGE="\e[1;31m"
ORANGE="\e[1m\e[38;5;202m"
# Überprüfung der Anwesenheit der Befehle, die bei Abwesenheit das Skript stoppen
# Erfordert den Befehl mosquitto_sub des Pakets mosquitto-clients
! CommandCheck "mosquitto_sub:mosquitto-clients" && exit 1
# Endlosschleife erforderlich, wenn das Programm mit @reboot von cron gestartet wird
# Andernfalls muss ein sleep vor dem Aufruf des Skripts hinzugefügt werden
while true
do
# Schleife, die ständig das Topic des Gladys-Geräts abhört
# Abrufen der Rückmeldungen in der Variable Value
while read Value
do
# Vermeiden von doppelten Zeilen, die darauf folgen
if [[ $(tail -n 1 "${CSVFile}") != "${Value};$(date +'%d/%m/%y');$(date +'%H:%M')" ]]
then
echo "${Value};$(date +'%d/%m/%y');$(date +'%H:%M')" >> "${CSVFile}"
fi
done < <(mosquitto_sub -h "${Host}" -u "${User}" -P "${Pass}" -t "${Topic}")
sleep 1
done