Stap 6: Raspberry Pi: basis ontvanger
De Raspberry Pi Base ontvanger gebruikt nCurses om het dashboard van de gegevens weer te geven. Python code voltooit de gegevens lezen en vult in de vorm van Google.
De bibliotheken importeren
from __future__ import print_function import RPi.GPIO as GPIO import time import os import Adafruit_DHT import curses import requests import time from RF24 import *
Post de gegevens naar het formulier. De Formulierinvoergegevens worden gedefinieerd in de tekenreeks van de inzendingen. Het url-adres van de vorm wordt verkregen uit de vooraf ingevulde voorleggingsoptie menu. Dit adres kan dan worden uitgesplitst voor de afzonderlijke formulier-items.
https://docs.google.com/forms/d/1onnROUjj1Orjoge0STvMRA7PDDR-YKw5eoo2mruLSCQ/viewform?entry.1183120755=Sid&entry.408289807=DHT11-TC&entry.2133582784=DHT11_H%25&entry.181535051=DS18B20C&entry.1756888165=PHOTO&entry.1187558071=startTime-millis&entry.498543388=nowTime-millis&entry.1127599175=RPiDHT11C&entry.751073501=RPiDHT11H%25&entry.1895537677=RPi_C&entry.773327888=RPI-submitter
De afzonderlijke formulier-items kunnen vervolgens worden gecodeerd als volgt, waarbij gegevens vertegenwoordigt de gegevensvariabele naar het formulier moet worden geboekt
'entry.1234567890': gegevens
De gegevens is vervolgens naar het formulier met behulp van de bibliotheekfunctie geplaatst
requests.post (formResponseurl, inzendingen)
def postData(): submissions = {'entry.1183120755': Sid , 'entry.408289807': temperatureC , 'entry.2133582784': humidity , 'entry.181535051': ds18b20C , 'entry.1756888165': Apin0 , 'entry.1187558071': startTime , 'entry.498543388': thisTime , 'entry.1127599175': TempC , 'entry.751073501': HUM , 'entry.1895537677': RPiC , 'entry.773327888': Submitter} response = requests.post(formResponseurl, submissions) return 1
Dit is de hoofdlus, lezen van de gegevens van de sensoren en boeken naar de Google-formulier weergeven op het dashboard van nCurses.
while True: pipe = [0] while not radio.available(): time.sleep(2) nCursesSleeping() length = radio.getDynamicPayloadSize() buffer = radio.read(length) nCursesRadio() flashLEDs(3) Sid = buffer[0] + 256*buffer[1] startTime = buffer[2] + 256*buffer[3] thisTime = buffer[4] + 256*buffer[5] Apin0 = buffer[6] + 256*buffer[7] Apin1 = buffer[8] + 256*buffer[9] Apin2 = buffer[10] + 256*buffer[11] Apin3 = buffer[12] + 256*buffer[13] Apin4 = buffer[14] + 256*buffer[15] Apin5 = buffer[16] + 256*buffer[17] Apin6 = buffer[18] + 256*buffer[19] Apin7 = buffer[20] + 256*buffer[21] temperatureC = buffer[22] + 256*buffer[23] humidity = buffer[24] + 256*buffer[25] ds18b20C = buffer[26] + 256*buffer[27] # now read the DHT11 sensor on the Raspberry Pi readDHT11(pDHT11) readPi = readPiTemp() RPiC = float(readPi) RPiF = (RPiC * 1.8) + 32.0 nCursesWindow() mscreen.refresh() mscreen.clear() postIt = postData() nCursesWindow()
Opmerking er is een waarschuwing ingediend nadat de gegevens zijn geboekt naar het formulier. Dit kan worden genegeerd, maar dit soort beveiligingswaarschuwing moet zorg dan een alternatieve methode voor het boeken van de gegevens moet worden gebruikt. Bijvoorbeeld dit Instructable.