River Cam (4 / 8 steg)
Steg 4: nätverk
På routern jag skapade virtuella servrar för port 80 (web), 8081 (video stream) och 22 (SSH) att tillåta åtkomst från utanför.
Att hålla reda på IP-adressen
Kvarnen har en standard dynamisk IP-adress från deras ISP (så förändringar varannan dag), krävdes en metod att komma runt detta. Ett sätt är att använda en tjänst som DynDNS eller NoIP, men dessa avgift efter deras provperioden (även om den tidigare rättegången kan förlängas). Jag valde att få Pi att berätta när dess IP-adress ändras genom att skicka mig ett e-postmeddelande med en hyperlänk. Med tanke på att Pi kan bara hantera ett par personer att komma åt den direkt fungerar detta bra.
MotionEye bilden skärs begränsades på bibliotek och min första strategi att använda ett skalskript misslyckats som saker som e-post var inte stöds. Lyckligtvis är de flesta av de Python bibliotek där så följande kod var klistras in nano att skapa ipCheck.py:
# coding: utf-8
# Importera smtplib för att ge e-funktioner
# Rutin för att kontrollera den externa IP-adressen och skicka ett mail om dess ändrande.
importera smtplib
importera urllib
# Importera e-modulerna
importera MIMEMultipart från email.mime.multipart
från email.mime.text importera MIMEText
# Få IP-adressen
URL = "http://ipecho.net/plain"
IP-adress = urllib.urlopen(url).read()
old_address = ""
filnamn = "/ home/pi/scripts/Address.txt"
# Nu kontrollera för att se om det är samma som förra som registreras
försök:
text_file = open(filename,"r")
old_address = text_file.read()
text_file.Close()
utom:
Print "Arkiv läsa misslyckande"
om IP-adress! = old_address:
# Definiera e-adresser att använda det
addr_to = ["yourmail1" youremail2"]
addr_from = "yourcameraemail"
# Definiera SMTP e-post server Detaljer
smtp_server = "smtp.gmail.com:587"
smtp_user = "din SMTP-login"
smtp_pass = "lösenord"
# Skapa e-post
MSG = MIMEMultipart('alternative')
MSG ["till"] = ",".join(addr_to)
MSG ['från'] = addr_from
MSG ["ämne"] = "Automatisk e-post från RPi OtterCam (v2) - IP-adress ändras"
# Skapa brödtexten i meddelandet (en oformaterad text och en HTML-version).
text = "Combe Mill IP-adress är %s \nText och html." % ipadress
HTML = "" "\
Hej
Detta är en automatiserad budskap från Pi-Raspeberry
Combe mill IP Otter Cam adress för MotionEye har förändrats, så klicka här för ny länk till
MotionEye Kontrollpanelen (var inspelningar kan hämtas)
Att titta på live stream gå till Combe Mill YouTube Live channel (http://tinyurl.com/jxabg3o). Det är den bästa väg att titta på floden och länken kan överföras till någon. Bästa viewer jag har hittat är "Flytande för Youtube" "plugin för Chrome webbläsaren där du kan se inte mycket hela dagen!
"" "% (IP-adress)
# Registrera MIME-typer av båda delar - text/plain och text/html.
del 1 = MIMEText (text, "vanligt")
del 2 = MIMEText (html, "html")
# Bifoga delar in meddelande behållaren.
# Enligt till RFC 2046, den sista delen av en multipart budskap, i detta fall
# HTML budskapet är bästa och Rekommenderad.
MSG.attach(part1)
MSG.attach(part2)
# Skicka meddelande via en SMTP-server
s = smtplib. SMTP(smtp_server)
s.starttls()
s.Login(smtp_user,smtp_pass)
s.sendmail (addr_from, addr_to, msg.as_string())
#s.sendmail (addr_from, addr_to, ' CombeMill adress: ' + IP-adress)
s.quit()
# Nu skriva den nya ip adress bort
försök:
text_file = öppna (filnamn, "w")
text_file.write(ipAddress)
text_file.Close()
utom:
Print "skriva filen"
Detta kan sedan av testas genom att skriva python ipCheck.py och när glad att sätta i cron att köra varje minut.
För att sätta saker i cron, detta kräver med hjälp av kommandot crontab-e, men jag hittade på MotionEye bilden jag också behövde urtavlans detta med kommandot export sikt = xterm som nano redaktören upp ett fel. Detta uttalande kan läggas till filen .bashrc i hemkatalogen så det bränder vid varje inloggning – men MotionEye bilden gör arbetskatalogen (men inte FTP-mappen monterad på det) del av en läsa bara filsystemet så för tillfället jag skriver här när jag behöver det (uppdatera: med flytten till Raspbian detta behövdes inte längre men också skript som behövs för att autorun kunde sättas i/etc/rc.local).
Den linjen du behöva lägga till crontab är:
***** python /home/ftp/storage/ipCheck.py