Schreiben Sie ein Bild mit Python von Raspberry Pi in ThingSpeak
Dieses Beispiel zeigt, wie Sie mit Python ein Bild von einer Raspberry Pi™-Platine in einen ThingSpeak ®-Bildkanal schreiben.
In diesem Beispiel wird ein Raspberry Pi verwendet, um ein Bild von einer Kamera aufzunehmen und lokal in eine Datei zu schreiben. Anschließend wird die Bilddatei bei jeder Aufnahme eines neuen Bildes an ThingSpeak gesendet. Sie können dieses Beispiel für einen Raspberry Pi verwenden, der mit einer Webcam oder einer Pi-Kamera verbunden ist, je nachdem, welche Zeilen im bereitgestellten Code ausgewählt sind.
Für eine Pi-Kamera können Sie den Befehl raspistill verwenden. Um diesen Code mit einer Webcam zu verwenden, verwenden Sie fswebcam, das Sie erhalten können mit
sudo apt-get install fswebcam
Ihr Pi muss über Internetzugang verfügen, um dieses Beispiel auszuführen.

Aufstellen
1) Erstellen Sie einen neuen ThingSpeak-Bildkanal, wie in Erstellen Sie einen Bildkanal beschrieben.
2) Erstellen Sie einen neuen ThingSpeak-Datenkanal, wie in Daten in einem neuen Kanal sammeln beschrieben.
3) Fügen Sie der Ansicht Ihres Datenkanals ein Bildanzeige-Widget hinzu, wie in Bildanzeige beschrieben.
Code
1) Fügen Sie die folgenden Bibliotheken in Ihren Python-Code ein.
#!/usr/bin/python from time import sleep import os import requests import sys
2) Definieren Sie die Variablen, um Ihre Thingspeak-Kanäle, Anmeldeinformationen und den Speicherort der Bilddateien anzugeben.
# Update this section with your ThingSpeak Image Channel ID and Image Channel API Key thingspeakImageChannelID = 'YOUR_THINGSPEAK_IMAGE_CHANNEL_ID' thingSpeakImageChannelAPIKey = 'YOUR_THINGSPEAK_IMAGE_CHANNEL_API_KEY' localFileName = '/home/pi/snapshot.jpg' thingSpeakURL = 'https://data.thingspeak.com/channels/' + thingspeakImageChannelID + '/images'
3) Speichern Sie einen Schnappschuss von Ihrer Raspberry Pi-Kameraplatine.
def getSnapshotBytes():
# Use FSWEBCAM to save a screenshot from a webcam. This requires the FSWEBCAM package.
# Use raspistill to save a screenshot from a Pi Cam.
# Alternatively, you can use OpenCV to directly get the bytestream from the camera.
imageByteStream = None
returnCode = os.system('fswebcam -r 1024x768 -S 1 -q ' + localFileName) # Use this line for webcam.
# returnCode = os.system(‘raspistill -o ‘ + localFileName) # Use this line for a pi cam.
if returnCode == 0:
fh = open(localFileName, 'rb')
imageByteStream = fh.read()
fh.close()
return imageByteStream
4) Führen Sie eine Schleife aus, um einen Schnappschuss aufzunehmen und ihn in Ihren ThingSpeak-Bildkanal zu schreiben.
def main():
# Loop infinitely
while True:
# Get image bytes
imData = getSnapshotBytes()
# POST image to ThingSpeak if there is a valid image
if imData is not None:
x = requests.post(url = thingSpeakURL, data = imData,
headers = {'Content-Type': 'image/jpeg',
'thingspeak-image-channel-api-key': thingSpeakImageChannelAPIKey,
'Content-Length' : str(sys.getsizeof(imData))})
print(x)
# Sleep so we do not get locked out of ThingSpeak for posting too fast
sleep(30)
if __name__=="__main__":
main()
Schreiben Sie das Bild
Führen Sie den Code aus, während Sie das Bildanzeige-Widget in Ihrer Seitenansicht überwachen.
