Temperatur sensordata skickas till Azure-databas (6 / 6 steg)
Steg 6: Skicka sensordata till Azure
Installera bibliotek för Azure API
Installera Azure API och andra nödvändiga bibliotek genom att köra följande kommandon i ett terminal-fönster på din Pi.
$ sudo lämplig-få installera gcc cmake uuid-dev libssl-dev
$ wget sourceware.org:/pub/libffi/libffi-3.2.1.tar.gz
$ tjära - zvxf libffi-3.2.1.tar.gz
$ cd libffi-3.2.1/
$. / configure
$ sudo göra installera
$ sudo ldconfig
$ cd ~
$ sudo lämplig-få installera python-pip
$ sudo pip installera begäranden [security]
$ sudo pip installera certifi urllib3 [säker] pyopenssl ndg-httpsclient pyasn1 azurblå
$ sudo lämplig-få installera python-openssl
Ring av Azure API från Python code
Denna kod har redigerats för att importera det azurblå biblioteket och ett anrop till sbs.send_event i slutet av varje slinga.
importera os
importera glob
Importera tid
importera tråd
import socket
datetime importera datetime
importera ServiceBusService från azure.servicebus
OS.system ("modprobe w1-gpio)
OS.system ("modprobe w1-therm")
Base_dir = ' / sys/buss/w1/enheter / "
device1_folder = glob.glob (base_dir + ' 28 *') [0]
device2_folder = glob.glob (base_dir + ' 28 * ") [1]
device1_file = device1_folder + "/ w1_slave"
device2_file = device2_folder + "/ w1_slave"
name_space = "sensordemo-ns"
key_name = "RootManageSharedAccessKey"
key_value = ' nmoamu9fHRphGQodT/J7SBXfmLGYfVsrUDIZXxm + hMc = "
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
SBS = ServiceBusService (service_namespace = name_space, shared_access_key_name = key_name, shared_access_key_value = key_value)
hubStatus = sbs.send_event('sensordemohub',body)
skriva ut "Skicka Status:", repr(hubStatus)
Time.Sleep(5)
Förutom undantag som e:
skriva ut "Undantag -",
Repr(e)