So erhalten Sie eine Discord- oder Slack-Benachrichtigung, wenn Ihr Raspberry Pi zu heiß ist

Quick Links

  • Warum Ihr Raspberry Pi heiß wird
  • CPU-Temperatur auf einem Raspberry Pi ermitteln
  • Discord zum Annehmen von Nachrichten einrichten
  • Unser Skript zum Senden einer Warnung an Discord erstellen
  • Einen Webhook auf Slack einrichten
  • Temperaturprüfungen automatisieren
  • Viel Spaß beim Überwachen

Wichtige Erkenntnisse

  • Verwenden Sie den Befehl „vcgencmd measure_temp“, um die Temperatur Ihres Raspberry Pi zu ermitteln. Richten Sie einen Webhook auf Discord oder Slack ein, verwenden Sie dann ein Bash-Skript, um die Temperatur zu überprüfen und eine Warnung über den Webhook zu senden, wenn sie zu hoch ist. Führen Sie es regelmäßig mit einem systemd-Timer aus.

Das abgespeckte Design des Raspberry Pi bedeutet, dass er keine integrierte Kühlung hat. Aber wie cool wäre es, wenn er Ihnen eine Discord- oder Slack-Nachricht senden würde, wenn er zu heiß wird?

Warum Ihr Raspberry Pi heiß wird

Der Raspberry Pi ist eine enorme Erfolgsgeschichte. Es handelt sich um eine Reihe von günstigen Einplatinencomputern, die zu Hause oder am Arbeitsplatz für alle möglichen Zwecke eingesetzt werden können. Er wurde von Bastlern und Bastlern verwendet, um eine Vielzahl interessanter und genialer Projekte zu verwirklichen.

Viele dieser Projekte erfordern, dass der Raspberry Pi in einer Headless-Konfiguration ausgeführt wird. Das heißt, es sind weder ein Monitor noch eine Tastatur oder eine Maus angeschlossen. Sie finden sie in Schränken oder unter Schreibtischen verstaut, wo sie wie jedes andere Netzwerkgerät, das man einfach einbauen und vergessen kann, still und leise ihre Rollen und Aufgaben ausführen.

Aber Sie sollten sie nicht völlig vergessen. Wie alle Computergeräte erzeugt der Raspberry Pi Wärme. Aber es gibt keine integrierte Kühlung. Da alle Komponenten dicht beieinander auf einer einzigen Platine angeordnet sind, konzentriert sich die Wärme auf einen kleinen Bereich.

Wenn Sie ein Standardgehäuse für Raspberry Pi verwenden, ist Konvektion der einzige Kühleffekt. Sie können die Situation etwas verbessern, indem Sie einen Kühlkörper hinzufügen oder, wenn der Lärm kein Problem darstellt, einen Lüfter einbauen. Einige Raspberry Pi-Gehäuse verfügen über einen integrierten Lüfter.

Bei einem Headless-System ist es praktischer, wenn das Gerät Sie kontaktiert, wenn etwas passiert, als dass Sie daran denken müssen, regelmäßig nachzusehen. Wir alle tragen Smartphones, also warum tun wir nicht das Intelligente und lassen unseren Raspberry Pi seine Temperatur überwachen und eine Nachricht an unser Smartphone senden, wenn sich seine Temperatur der Gefahrenzone nähert?

Sehen wir uns an, wie wir dies für zwei beliebte Messaging-Plattformen tun können, Discord und Slack.

Die CPU-Temperatur auf einem Raspberry Pi ermitteln

Der erste Schritt im Prozess besteht darin, die CPU-Temperatur des Raspberry Pi zu ermitteln. Tatsächlich könnten Sie die hier beschriebenen Messaging-Techniken verwenden, um benachrichtigt zu werden, wenn eine wichtige Eigenschaft Ihres Raspberry Pi aus den akzeptablen Toleranzen abdriftet.

Der Befehl zum Abrufen der CPU-Temperatur auf einem Raspberry Pi lautet:

vcgencmd measure_temp

Wenn dies nicht funktioniert, versuchen Sie, den vollständigen Verzeichnispfad zum Befehl zu verwenden. Auf meinem Raspberry Pi, auf dem die Version des Raspberry Pi OS vom 10. Oktober 2023 läuft, befindet sich der Befehl im Verzeichnis „/usr/bin/“. Dies ergibt die Langform des Befehls:

/usr/bin/vcgencmd measure_temp

Bei der Ausgabe des Befehls sind drei Dinge zu beachten.

Erstens enthält es “temp=” und “’C”, was mehr ist, als wir wollen. Wir wollen die Temperatur als Zahl haben, die wir mit einem Schwellenwert vergleichen können. Wenn die Temperatur über den Schwellenwert steigt, wird das Senden einer Nachricht ausgelöst. Der zweite Punkt ist, dass die Temperatur in Grad Celsius angegeben wird. Schließlich ist es eine Gleitkommazahl. Wir werden das in unserem Skript in einen ganzzahligen Wert umwandeln.

Um den Temperaturwert selbst zu extrahieren, können wir awk verwenden. Wir verwenden die Option -F (Feldtrennzeichen), um awk anzuweisen, Gleichheitszeichen “=” und Apostrophe “’” als Flags zu behandeln, die den Anfang und das Ende eines Felds markieren. Dann fordern wir es auf, das zweite Feld auszudrucken, das in unserer Zeichenfolge die CPU-Temperaturanzeige ist.

vcgencmd measure_temp | awk -F “[=']” '{print($2)}'

Dadurch wird der numerische Wert isoliert und wir können ihn einer Variablen zuweisen.

pi_temp=$(vcgencmd measure_temp | awk -F “[=']” '{print($2)}')

echo $pi_temp

Wenn Sie lieber in Fahrenheit arbeiten, können wir etwas Mathematik hinzufügen, um den Wert für uns umzurechnen.

pi_temp=$(vcgencmd measure_temp | awk -F “[=']” '{print($2 * 1.8)+32}')

echo $pi_temp

Um einen Schwellenwert festzulegen, müssen wir den Betriebsbereich des Raspberry Pi kennen. Ich habe das Raspberry Pi-Datenblatt für den Raspberry Pi 4, Modell B, überprüft, mit dem ich getestet habe.

Im Abschnitt „Temperaturbereich und Thermik“ heißt es: „Der empfohlene Umgebungstemperaturbereich für den Betrieb beträgt 0 bis 50 Grad Celsius.“ Das entspricht einem Temperaturbereich von 32 bis 122 Grad Fahrenheit. Dies ist die Temperatur, mit der die gesamte Platine zufrieden ist, und die CPU-Temperatur könnte ohne Bedenken höher sein. Der Wert aus dem Datenblatt ist für uns jedoch ein sehr sicherer Wert, da wir eher auf der kühleren als auf der wärmeren Seite liegen.

Verwandte Themen: So verwenden Sie den Befehl awk unter Linux

Discord zum Akzeptieren von Nachrichten einrichten

Um Nachrichten in Discord zu aktivieren, ist ein sogenannter Webhook erforderlich, der einfach einzurichten ist. Wir erstellen einen neuen Server zum Empfangen unserer Benachrichtigungen und aktivieren dann einen Webhook, den wir von einem Skript auf unserem Raspberry Pi aus aufrufen können.

Klicken Sie in Discord auf die grüne Schaltfläche „+“, um einen neuen Server zu erstellen.

Klicken Sie im Dialogfeld „Server erstellen“ auf „Eigenen Server erstellen“.

Klicken Sie im Dialogfeld „Erzählen Sie uns mehr über Ihren Server“ auf „Für mich und meine Freunde“.

Geben Sie im Dialogfeld „Server anpassen“ einen Namen für Ihren neuen Server ein. Unser Server heißt „PiNotifications“.

Wir haben auch auf das Kamerasymbol geklickt und ein „Warnglocken“-Symbol hochgeladen. (Sobald Sie ein Symbol hochgeladen haben, wird das Kamerasymbol verdeckt.)

Klicken Sie auf die blaue Schaltfläche „Erstellen“, wenn Sie fortfahren möchten. Unser neuer Server wird jetzt in unserer Serverliste angezeigt.

Wählen Sie Ihren neuen Server aus und klicken Sie dann auf den Pfeil neben seinem Namen.

Klicken Sie auf die Option „Servereinstellungen“.

Klicken Sie auf der Seite „Einstellungen“ in der Seitenleiste auf die Option „Integrationen“. Klicken Sie auf die Schaltfläche „Webhook erstellen“. Ein neuer Webhook wird erstellt und für Sie benannt.

Klicken Sie auf die Schaltfläche mit dem Pfeil “>”, um Ihren Webhook zu bearbeiten.

Wir haben unseren Webhook in „Pi Alerts“ umbenannt und ihn auf den Kanal „#general“ unseres Servers zeigen lassen. Wir benötigen die URL des Webhooks. Klicken Sie daher auf die Schaltfläche „Webhook-URL kopieren“, fügen Sie die URL in einen Editor ein und speichern Sie die Datei. Sie benötigen später einfachen Zugriff auf die URL.

Wenn Sie bereit sind, fortzufahren, klicken Sie unten auf der Seite auf die grüne Schaltfläche „Änderungen speichern“.

Durch Drücken der Taste „Esc“ gelangen Sie zurück in die normale Discord-Desktopansicht.

Erstellen unseres Skripts zum Senden einer Warnung an Discord

Unser Skript beginnt mit dem Abrufen der CPU-Temperatur. Wenn Sie die Temperatur in Fahrenheit haben möchten, löschen oder kommentieren Sie die Celsius-Zeile aus und heben Sie die Kommentierung der Fahrenheit-Zeile auf.

Anschließend verwenden wir awk, um das ganzzahlige Element des Temperaturwerts zu extrahieren (den Teil, der vor dem Gleitkomma “.” steht), da die reine Bash nur ganzzahlige Arithmetik unterstützt.

Anschließend erhalten wir den Hostnamen und weisen ihn einer Variable namens „this_pi“ zu. Wir senden den Hostnamen als Teil unserer Warnmeldung, damit wir erkennen können, welcher Raspberry Pi die Warnung sendet.

Sie müssen die Variable „discord_pi_webhook“ auf die URL setzen, die Sie zuvor kopiert und gespeichert haben. Achten Sie beim Einfügen in Ihr Skript darauf, dass Sie die Anführungszeichen beibehalten.

Wir testen die CPU-Temperatur anhand des Schwellenwerts in einer „if“-Anweisung. Wenn die CPU-Temperatur höher ist als unser Auslöseschwellenwert, senden wir die Nachricht mit curl an die Webhook-URL. Die Warnung erscheint dann auf unserem Discord-Server.

Damit wir unser Skript testen können, haben wir den Schwellenwert auf 15 gesetzt. Das bedeutet, dass die „if“-Schleife auf jeden Fall ausgeführt wird. Wenn Sie zufrieden sind, dass das Skript funktioniert, können Sie diesen Wert auf einen realen Wert erhöhen. In Celsius wären das etwa 44 Grad für meinen Raspberry Pi 4.

#!/bin/bash

# get CPU temperature in Celsius
pi_temp=$(vcgencmd measure_temp | awk -F “[=']” '{print($2)}')

# für Fahrenheit-Temperaturen verwenden Sie stattdessen diese Zeile
# pi_temp=$(vcgencmd measure_temp | awk -F “[=']” '{print($2 * 1.8)+32}')

# auf einen ganzzahligen Wert abrunden
pi_temp=$(echo $pi_temp | awk -F “[.]” '{print($1)}')

# Hostnamen abrufen, damit wir wissen, welcher Pi die Warnung sendet
this_pi=$(hostname)

discord_pi_webhook=”Fügen Sie hier Ihre Webhook-URL ein”

if [[ “$pi_temp” -ge 15 ]]; then
  curl -H “Content-Type: application/json” -X POST -d '{“content”:”'”Pi ${this_pi} CPU-Temperatur ist: ${pi_temp}”'”}' $discord_pi_webhook
fi

​​Kopieren Sie das Skript in einen Editor, fügen Sie Ihre Webhook-URL ein, speichern Sie es als „cpu_temp.sh“ und schließen Sie Ihren Editor. Wir müssen unser Skript ausführbar machen.

chmod +x cpu_temp.sh

Um unser Skript zu testen, rufen wir es von der Befehlszeile aus auf.

./cpu_temp.sh

Einen Moment später erscheint unsere Nachricht in Discord.

Unser Raspberry Pi heißt „htg-pi-server“ und seine CPU-Temperatur beträgt 33 Grad Celsius. Denken Sie nach dem Testen Ihres Skripts daran, den Schwellenwert in der „if“-Anweisung auf einen realen Wert zu ändern.

Einrichten eines Webhooks auf Slack

Wir haben eine detaillierte Anleitung zum Einrichten eines Webhooks auf Slack. Der Vorgang ist den Schritten, die Sie bei Discord ausführen müssen, sehr ähnlich. Sie müssen die Webhook-URL und einen geheimen Schlüssel kopieren.

#!/bin/bash

# CPU-Temperatur in Celsius abrufen
pi_temp=$(vcgencmd measure_temp | awk -F “[=']” '{print($2)}')

# für Temperaturen in Fahrenheit verwenden Sie stattdessen diese Zeile
# pi_temp=$(vcgencmd measure_temp | awk -F “[=']” '{print($2 * 1.8)+32}')

# auf einen ganzzahligen Wert abrunden
pi_temp=$(echo $pi_temp | awk -F “[.]” '{print($1)}')

# Hostnamen abrufen, damit wir wissen, welcher Pi die Warnung sendet
this_pi=$(hostname)

slack_pi_webhook=”https://hooks.slack.com/services/paste-your-key-here”

wenn [[ “$pi_temp” -ge 15 ]]; dann
  curl -X POST –data-urlencode “payload={'channel': '#support', 'text': 'Pi ${this_pi} CPU-Temperatur ist: ${pi_temp}'}” $slack_pi_webhook
fi

Fügen Sie Ihren geheimen Schlüssel in das Skript ein, wo „Fügen Sie Ihren Schlüssel hier ein“ steht. Stellen Sie sicher, dass die gesamte URL in Anführungszeichen steht.

Abgesehen davon sind nur wenige Änderungen erforderlich, damit das Skript mit Slack statt mit Discord funktioniert.

Wir haben die Variable „discord_pi_webhook“ in „slack_pi_webhook“ umbenannt und den Befehl „curl“ durch einen Befehl ersetzt, der mit Slack funktioniert. Er ist so eingestellt, dass er in einen Kanal namens „#support“ postet, aber Sie können das in den Namen des Kanals ändern, den Sie auf Ihrem Slack-Server verwenden.

Nachrichten von Ihrem Raspberry Pi werden in Ihrem angegebenen Slack-Kanal angezeigt.

Verwandt: So senden Sie eine Nachricht aus einem Bash-Skript an Slack

Temperaturprüfungen automatisieren

Um das Skript „cpu_temp.sh“ regelmäßig auszuführen, können Sie es in einen systemd-Timer umwandeln.

Ein guter Ausgangspunkt ist, das Skript etwa alle 15 Minuten auszuführen. Sie können das später immer noch anpassen, wenn Sie der Meinung sind, dass häufigere oder weniger häufige Prüfungen erforderlich sind.

Viel Spaß beim Überwachen

Denken Sie daran, den Auslösewert der „if“-Anweisung auf einen realistischeren Wert als den Testwert zu ändern. Wenn Sie das nicht tun, wird Ihr Raspberry Pi Sie mit Fehlalarmen bombardieren.


Posted

in

by

Tags:

Comments

Leave a Reply