Raspberry Pi & IFTTT – Temperaturtracking

Wird der Raspberry Pi nicht nur zum Spaß, sondern auch für den produktiven Einsatz verwendet, so ist eine Überwachung der Temperatur empfehlenswert, damit das System nicht auf die Dauer überhitzt. Im Netz finden sich verschiedene (gute) Tools, darunter RPI-Monitor und Munin, die alle relevanten Infos des Raspberrys auflisten und tracken können, jedoch muss man diese Programm immer aktiv über das Webinterface aufrufen. 

Nun stellt sich folgende Frage: Warum gibt es keine Möglichkeit, wie ich nur im Notfall (sprich bei Gefahr der Überhitzung) via Push direkt auf dem Handy benachrichtigt werden kann? 

Im folgenden Text erläutere ich euch, wie das funktioniert:

Also lasst uns loslegen – was braucht ihr?

  • Einen IFTTT-Account
  • Ein Python-Skript
  • Ein Cronjob, der das Skript alle 5 Minuten aufruft

Zu 1: IFTTT

IMG_5863 KopieNachdem ihr die App für euer Smartphone heruntergeladen habt und der Account eingerichtet ist, müsst ihr das erste Recipe erstellen. Als Trigger wählt ihr die Mailfunktion aus. Ich habe die zweite Variante des Recipes verwendet, in meiner Version muss ich sowohl eine Mail an trigger@ifttt.com schicken, als auch der Betreff muss eindeutig mit #raspberrytemp definiert sein. Folgendes greifen wir später bei dem Python-Skript auch wieder auf. Als Ergebnis für den Trigger wählt ihr die iOS-Notifications aus. Das wars schon zum ersten Punkt. Im Ergebnis sollte es bei euch genauso wie in meinem Screenshot aussehen.

 

Zu 2: Das Skript

Wir erstellen folgende Datei: nano monitoring-cpu-temp.py

Und in dem Nano-Editor fügen wir folgendes Skript ein:

import os

import smtplib

import time

from email.mime.text import MIMEText

 

### Settings

# SMTP

smptHost = "MUSTERSMPT-SERVER HIER EINTRAGEN"

smtpPort = 587

smtpUser = "MAILADRESSE"

smtpPassword = "PASSWORT"

 

# E-Mail

mailSender = "MAILADRESSE"

mailReceiver = "trigger@ifttt.com"

 

# Warning

criticalTemperature = 60 # in degree celsius

###

 

date = "%02i.%02i.%04i" % (int(time.localtime()[2]), int(time.localtime()[1]), int(time.localtime($

time = "%02i:%02i:%02i" % (int(time.localtime()[3]), int(time.localtime()[4]), int(time.localtime($

 

def getCPUtemperature():

    res = os.popen('vcgencmd measure_temp').readline()

    return(res.replace("temp=","").replace("'C\n",""))

 

tempFloat = float(getCPUtemperature())

 

if (tempFloat > criticalTemperature):

    server = smtplib.SMTP(smptHost, smtpPort)

    # server.starttls() # If TLS authentication should be used remove the hash at start of line

    server.login(smtpUser, smtpPassword)

 

    value = "Die aktuelle Temperatur des Raspberry Pi liegt bei " + str(tempFloat) + " Grad Celsiu$

    msg = MIMEText(value)

    msg['Subject'] = "#raspberrytemp"

    msg['From'] = mailSender

    msg['To'] = mailReceiver

    server.sendmail(mailSender, mailReceiver, msg.as_string())

    server.quit()

In dem Skript müsst ihr nur kleine Anpassungen vornehmen:

1) Ihr müsst eure korrekten SMTP-Zugangsdaten hinterlegen, damit die Mail verschickt werden kann. Dementsprechend müsst ihr folgende Variablen editieren: smptHost, smtpUser, smtpPassword und mailSender. 

2) Achtet darauf, dass ihr die Mail von dem gleichen Account verschickt, welcher auch bei dem IFTTT-Recipe eingetragen ist, da eure Mail sonst nicht von IFTTT erkannt wird.

 

Zu 3: Cronjob

Crontab aufrufen: crontab -e

Folgende Zeile ganz unten einfügen:

*/5 * * * * python monitoring-cpu-temp.py >/dev/null 2>&1


Fertig sind die Pushbenachrichtungen bei Temperaturen >60 Grad. Viel Spaß damit! Habt ihr noch andere interessante Ideen für eine Kombination von IFTTT und Raspberry Pi? Dann lasst mal hören!

Grundidee vom Skript: JanKarres

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.