Datenextraktion

Hallo,

ich habe Zweifel an unerwarteten Zustandsänderungen einiger Zigbee-Sensoren.

Ist es möglich, deren Zustandsänderungen und die Uhrzeiten herauszufiltern?

Ich schicke mir Nachrichten in der Diskussion, aber das Protokoll ist zu kurz, um einen guten Überblick zu haben.

Was wäre die beste Lösung?

Danke

Schick dir eine Telegram-Nachricht, sonst :slight_smile:

Ich erlaube mir, das Thema wieder aufzugreifen.

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

Es gibt viele Möglichkeiten :stuck_out_tongue:

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