Ett sätt att fjärrstyra saker, t.ex. omstart av en server, stänga av lampor eller annat liknande kan vara via email. I princip kan man styra allt som en Raspberry Pi kan styra, via email. Programmet härunder, skrivet i Python, slår bara på och av en lysdiod på en Pibrella men bara fantasin sätter gränser för vad man kan göra. Det här programmet är också tänk att köras som ett cronjobb och jag kör det en gång per minut.
Även om det inte är speciellt upphetsande så slängde jag ihop en liten film på det.
#! /usr/bin/python
# -*- coding: utf-8 -*-
# mailremote.py - Göran Gustafsson 2015 - http://gorgusgfx.se
#
# Det här programmet kopplar upp sig mot en mailserver
# och kollar igenom subject efter nyckelord på alla olästa
# mail.
import imaplib
from email.parser import HeaderParser
import RPi.GPIO as gpio
# Definiera lite
LED = 4
lamp='None'
# Ställ in gpio
gpio.setwarnings(False)
gpio.setmode(gpio.BCM)
gpio.setup(LED,gpio.OUT)
# Logga in på mailkontot
imap = imaplib.IMAP4_SSL('imap.mailserver.com',993)
imap.login('username', 'password')
imap.select('INBOX')
# kolla om det finns några olästa mail
typ, data = imap.search(None, 'UNSEEN')
# Om det finns olästa mail så gå igenom dem och kolla
# om subject motsvarar ett nyckelord och isf vidta
# de åtgärder som bestämts. Här tänds eller släcks
# den gröna lysdioden på en Pibrella, men vadsomhelst
# som kan kontrolleras av en Raspberry Pi kan kontrolleras.
for num in data[0].split():
typ, data = imap.fetch(num, '(RFC822)')
msg=HeaderParser().parsestr(data[0][1])
temp=msg['Subject']
lamp=temp.lower()
if (lamp != 'None'):
if (lamp=='lampa=1'):
gpio.output(LED,True)
elif (lamp=='lampa=0'):
gpio.output(LED,False)
# När mailen gåtts igenom och kollats så tar vi
# bort alla mail.
typ, data = imap.search(None, 'ALL')
for num in data[0].split():
imap.store(num, '+FLAGS', '\\Deleted')
imap.expunge()
# Nu är vi färdiga och stänger anslutningen till mailkontot
imap.close()
imap.logout()