Temperatur sensordata skickas till Azure-databas (2 / 6 steg)
Steg 2: Läs sensorn
Python programmet skriver ut temperaturen i grader C varje 5 sekunder
importera os
importera glob
Importera tid
importera tråd
import socket
datetime importera datetime
OS.system ("modprobe w1-gpio)
OS.system ("modprobe w1-therm")
Base_dir = ' / sys/buss/w1/enheter / "
device1_file = glob.glob (base_dir + ' 28 *') [0] + ' / w1_slave'
device2_file = glob.glob (base_dir + ' 28 * ") [1] +" / w1_slave "
def read_temp_raw(dfile):
f = öppna (dFil, "r")
rader = f.readlines()
f.Close()
returnera rader
def read_temp(dfile):
rader = read_temp_raw(dfile)
medan lines[0].strip() [-3:]! = "Ja":
Time.Sleep(0.2)
rader = read_temp_raw(dfile)
equals_pos = lines[1].find('t=')
om equals_pos! = -1:
temp_string = linjer [1] [equals_pos + 2:]
temp_c = float(temp_string) / 1000.0
återgå temp_c
Host = socket.gethostname()
samtidigt sant:
försök:
temp1 = read_temp(device1_file)
temp2 = read_temp(device2_file)
Body = ' {\"DeviceId\": \ "" + värd + "\" "
nu = datetime.now()
Body += ", \"rowid\ ":" + now.strftime('%Y%m%d%H%M%S')
Body += ", \"Time\ ": \" "+ now.strftime ('%Y / %m / %d % H: % m %S') +" \ ""
Body += ", \"Temp1\ ":" + str(temp1)
Body += ", \"Temp2\ ":" + str(temp2) + "}"
skriva ut kroppen
Time.Sleep(5)
Förutom undantag som e:
Print "undantag"-, repr(e)
Programmet startar genom att köra kommandona "modprobe", de behövs för att starta gränssnittet för att läsa en tråd protokoll sensorer.
De följande tre raderna, identifiera filen där meddelanden kan läsas. Funktion read_temp_raw läser rådata från gränssnittet. Funktionen read_temp analyserar data och returnerar temperatur.
Huvudloop för programmet läser temperaturen och skriver ut varje 5 sekunder.
Du kan starta en editor-fönstret och ange koden genom att skriva
Nano sender.py
När du har angett koden kan du köra koden använder
sudo python sender.py