Stap 6: De Code
Nu met de Account en kanaal opstelling alle. Op de RasPi gaan we tot het laatste deel van het schrijven van code voor het verzenden van regelmatige updates op de Thingspeak kanaal. De code leest temperatuur en druk van de BMP180 en stuurt Thingspeak kanaal maken gebruik van de aangepaste schrijven API-sleutel.
U kunt het bestand downloaden of volg de onderstaande instructies-
U moet zich aanmelden in de Raspberry Pi via SSH
- Maak een map op de opdrachtregel (Kies een naam voor het) en cd (map wijzigen) erin.
- Schrijf de volgende opdracht "git init" (git installeren indien niet aanwezig) gevolgd door "git clone https://bitbucket.org/snippets/aslan_ali/bKKkM"
- cd in de zojuist gemaakte map "bKKkM" en op "Thingspeak_bmp180.py" bestand controleren
- bestand bewerken met nano editor in te voegen uw API-sleutel schrijven params binnen de lus van de main() functie (als superuser)
- opslaan en uitvoeren van de python-script met behulp van "sudo python Thingspeak_bmp180, py"
- Ga naar thingspeak kanaal en controleer binnen de privé-weergave tabblad ziet u de grafieken dienovereenkomstig bijwerken (met enige vertraging ik veronderstel ongeveer 10 seconden)
De code is geschreven in Python op de Raspberry Pi (als een zakelijk). De codefragmenten doen vooral alle de zware hijs.
- RPi krijgt temperatuur/druk waarden uit BMP sensor- De python script main() bevat een readBMP180()-functie om te lezen van zowel de temperatuur en de druk waarden.
bus=smbus.SMBus(1) #RPi rev2 uses 1 #Read Temperature bus.write_byte_data(addr,REG_MEAS,CRV_TEMP)#sending temperature control command to BMP180 inquiring temperature time.sleep(0.005)#wait for 5ms (msb,lsb) = bus.read_i2c_block_data(addr,REG_MSB,2) UT = (msb<<8) + lsb # unrefined 16-byte temperature is generated by adding lsb and 8bit left-shift msb #Read Pressure bus.write_data_byte(addr,REG_MEAS,CRV_PRES + (OVERSAMPLE<<6)) time.sleep(0.04) (msb,lsb,xsb) = bus.read_i2c_block_data(addr,REG_MSB,3) UP = ((msb<<16) + (lsb<<8) + xsb ) >> (8-OVERSAMPLE) #unrefined pressure value <br>
Meer code is nodig binnen de main() voor offsets en raffinage van elke waarde.
- RPi stuurt deze gegevens naar Thingspeak kanaal- De httplib module in python wordt gebruikt om de waarden van de POST naar het kanaal Thingspeak.
conn = httplib.HTTPConnection("api.thingspeak.com:80") headers = {"Content-type":"application/x-www-form-uelencoded","Accept":"text/plain"} (temperature,pressure)=readBMP180() params = urllib.encode({"field1" : temperature,'field2':pressure,'key':"Your Write API key"}) conn.request("POST","/update",params,headers) response=conn.getresponse() print response.status,response.reason conn.close() <br>
Opmerking : Voeg uw API-sleutel schrijven binnen "params" door vervanging van "Uw schrijven API-sleutel". Ook kunt u wissen of verwijderen van kanaal binnen het tabblad instellingen
Hoop dat u genoten!!