Verbinden Sie Raspberry Pi mit "Python" mit der Alibaba Cloud IoT Platform

In diesem Artikel berichtet MVP Liu Hongfeng über seine Erfahrungen beim Verbinden eines Raspberry Pi-Geräts mit der Cloud mithilfe der Alibaba Cloud IoT Platform.

Geschrieben von Hongfeng Liu, MVP von Alibaba Cloud unten.

Ich bin Alibaba Cloud MVP und Alibaba Cloud IoT-Plattform Es ist mir eine Ehre, die erste Person zu sein, die aus der Sicht des Benutzers testet. Ich bin mit Alibaba Cloud IoT-Plattform und von Anfang an mit der Hardware der Feifeng-Plattform (Vorgänger von Link Develop, einer One-Stop-Entwicklungsplattform) vertraut. Ich hatte die Gelegenheit, an einigen Zugangsarbeiten teilzunehmen. Ich habe auch miterlebt, wie das Alibaba Cloud IoT-Team schnell von Dutzenden auf Hunderte gewachsen ist. Der auf dieser IoT-Plattform gehostete Inhalt wurde ebenfalls schnell erweitert. Die Basisversion des IoT-Entwicklungskits "Hien", die One-Stop-Entwicklungsplattform "Link Develop" und die erweiterte Version des IoT-Entwicklungskits "Hien", "Flying", Es gab "City Brain", "Agricultural Brain", "Industrial Interconnection Platform" und so weiter. Daher ist es eine Herausforderung, jedes IoT-Produkt von Alibaba Cloud einzuholen und vollständig zu verstehen.

Zunächst verwendeten wir die Single-Chip + .NET MF-Plattform der MCU und implementierten den entsprechenden Code, um die Alibaba Cloud Platform direkt über das MQTT-Protokoll zu verbinden. Die IoT-Plattform kann je nach Konfiguration auch flexibel verbunden werden, aber einige WEB-, AI- und Cloud-Entwickler sind noch nicht damit vertraut. Aufgrund dieser Anforderungen sind fortgeschrittene Sprachen wie JS, Java und Python in die Hardwareentwicklung eingetreten und können jetzt direkt auf dem MCU-Chip ausgeführt werden, wodurch die Verbindung zwischen der Cloud und IoT-Geräten erheblich beschleunigt wird. Es war.

In diesem Artikel habe ich versucht, die Cloud- und IoT-Geräte basierend auf Raspberry Pi mit Python, einer erweiterten Sprache, zu verbinden. [Vorheriger Artikel](https://www.alibabacloud.com/blog/developing-apps-on-alibaba-cloud-iot-platform-with-raspberry-pi-and-node-js_594346?spm=a2c65.11461447.0. 0.497c7a71qSel56) führte ein, wie es mit Node.js ausgeführt wird.

Nachfolgend finden Sie die vom Alibaba Cloud-Team bereitgestellte Testhardware. image.png

  1. Raspberry Pi 3B mit Wi-Fi und Bluetooth 2, DHT11 Temperatur- und Feuchtigkeitsmodul 3, LED-Modul

Schritt 1: Installieren Sie das Betriebssystem für Raspberry Pi

Sie müssen das Betriebssystem für den Raspberry Pi installieren.

Ich habe die Raspbian-Firmware installiert, aber Sie können sie installieren, indem Sie die hier angegebenen Schritte ausführen: [https://www.yuque.com/cloud-dev/iot-tech/ig269q](https: // www.yuque.com/cloud-dev/iot-tech/ig269q?spm=a2c65.11461447.0.0.497c7a71iYpNQM)

Schritt 2: Installieren Sie das Python SDK

Installieren Sie das Python SDK für die Alibaba Cloud Platform

Führen Sie den folgenden Befehl aus.

pip install aliyun-python-sdk-iot-client

Schritt 3: Code schreiben

Nach der Installation der Raspbian-Firmware und des Python SDK müssen Sie den Code in Python schreiben, um das Projekt auszuführen. Der Beispielcode stammt aus der Dokumentation zur Alibaba Cloud Platform (https://www.yuque.com/cloud-dev/iot-tech/rz6fpl. Bereits in? Spm = a2c65.11461447.0.0.497c7a71iYpNQM)) bereitgestellt, ist die Funktionalität relativ einfach. Senden Sie einfach zwei Zufallszahlen in die Cloud.

Wir entwerfen ein relativ komplexes Szenario, das zunächst eine bidirektionale Kommunikation realisiert, sodass Sensordaten an die Cloud gesendet und Befehle aus der Cloud gesendet werden können, um verwandte Geräte zu steuern.

Zum Hochladen von Daten haben wir den realen Sensor DHT11 ausgewählt, der Temperatur- und Feuchtigkeitswerte erfassen kann. Es gibt auch ein LED-Modul, das den Ein / Aus-Zustand des Lichts mit Befehlen aus der Cloud steuert.

Das Pin-Definitionsdiagramm von Raspberry Pi lautet wie folgt. image.png

Das DHT11-Modul besteht aus drei Leitungen, die zur Einzelbuskommunikation gehören. Die Stromleitung ist mit 5V-4-Pin verbunden, die Erdungsleitung ist mit GND-6-Pin verbunden und der Kommunikations-Pin ist mit GPIO16-36-Pin verbunden. Das LED-Modul besteht ebenfalls aus drei Leitungen. Die Stromleitung ist mit 3V3-1pin verbunden, die Erdungsleitung ist mit GND-9pin verbunden und die Steuerleitung ist mit GPIO4-7pin verbunden. image.png Die LED-Steuerung kann relativ einfach erreicht werden, indem einfach die hohen und niedrigen Pegel der Stifte gesteuert werden.

led_pin = 4 //GPIO is 4
 GPIO.setmode(GPIO.BCM) //GPIO definition of BCM 
 GPIO.setup(led_pin, GPIO.OUT) //Set to output mode

Mach das Licht an:

GPIO.output(led_pin, GPIO.HIGH)
Turn off the light:
GPIO.output(led_pin, GPIO.LOW)

DHT11 ist relativ komplex. Weitere Informationen finden Sie in dem Blog-Beitrag, den ich 2010 geschrieben habe (Verwandter Link: https://blog.csdn.net/yfiot/article/details/5996524 / article / details / 5996524))) image.png

Aufgrund der großen Menge an Code ist es als Funktion verpackt, die gleichzeitig zwei Werte für Temperatur (T) und Luftfeuchtigkeit (H) zurückgibt.

Viele der Python-basierten Beispiele im Internet lesen Temperatur und Luftfeuchtigkeit einmal. Wenn Sie kontinuierlich lesen möchten, müssen Sie das Zeitintervall auf ca. 3 Sekunden einstellen, da es sonst leicht fehlschlägt. Da Linux nicht in Echtzeit ausgeführt wird, haben wir festgestellt, dass wir selbst mit einem Zeitintervall von 3 Sekunden möglicherweise nicht in der Lage sind, die richtigen Temperatur- und Feuchtigkeitswerte zu erhalten, und dass wir möglicherweise die falschen Werte erhalten, die die Validierung bestanden haben.

Da der Daten-Pin von DHT11 mit GPIO16 verbunden ist, ist der Pin-Code wie folgt definiert.

dht_pin =16
The code that encapsulates the function is as follows:
def GetDTH(): 
 data = []
 j = 0 
 GPIO.setup(dht_pin, GPIO.OUT)
 GPIO.output(dht_pin, GPIO.LOW)
 time.sleep(0.02)
 GPIO.output(dht_pin, GPIO.HIGH)
 GPIO.setup(dht_pin, GPIO.IN)
  
 while GPIO.input(dht_pin) == GPIO.LOW:
  continue
 while GPIO.input(dht_pin) == GPIO.HIGH:
  continue
  
 while j < 40:
  k = 0
  while GPIO.input(dht_pin) == GPIO.LOW:
  continue
  while GPIO.input(dht_pin) == GPIO.HIGH:
  k += 1
  if k > 100:
  break
  if k < 8:
  data.append(0)
  else:
  data.append(1)  
  j += 1
  
 humidity_bit = data[0:8]
 humidity_point_bit = data[8:16]
 temperature_bit = data[16:24]
 temperature_point_bit = data[24:32]
 check_bit = data[32:40]
  
 humidity = 0
 humidity_point = 0
 temperature = 0
 temperature_point = 0
 check = 0
  
 for i in range(8):
  humidity += humidity_bit[i] * 2 ** (7-i)
  humidity_point += humidity_point_bit[i] * 2 ** (7-i)
  temperature += temperature_bit[i] * 2 ** (7-i)
  temperature_point += temperature_point_bit[i] * 2 ** (7-i)
  check += check_bit[i] * 2 ** (7-i)
  
 tmp = humidity + humidity_point + temperature + temperature_point
 if check == tmp:
  return temperature,humidity
 else:
  print "wrong"
  return 0,0 

Sobald diese Vorbereitungen abgeschlossen sind, definieren wir die relevanten Produkte und Geräte in der Cloud. Im Gegensatz zum offiziellen Beispiel von Alibaba Cloud haben wir eine lesbare und beschreibbare Attribut-LED hinzugefügt und eine Aufzählungsvariable verwendet, bei der 0 deaktiviert und 1 aktiviert ist. image.png

Sobald diese Vorbereitungen abgeschlossen sind, definieren wir die relevanten Produkte und Geräte in der Cloud. Im Gegensatz zum offiziellen Beispiel von Alibaba Cloud haben wir eine lesbare und beschreibbare Attribut-LED hinzugefügt und eine Aufzählungsvariable verwendet, bei der 0 deaktiviert und 1 aktiviert ist.

client.on_message = on_message

Mit anderen Worten, Sie können die Informationen aus der Cloud übertragen.

Der von der Cloud gepostete Informationsgehalt ist wie folgt.

{"method":"thing.service.property.set","id":"169885527","params":{"LED":1},"version":"1.0.0"}

Wir müssen den Wert der LED ermitteln, also müssen wir der Funktion on_message etwas hinzufügen.

 setjson = json.loads(msg.payload)
 led = setjson['params']['LED']
 GPIO.output(led_pin,(GPIO.HIGH if led==1 else GPIO.LOW ))

Es wird basierend auf dem LED-Wert ein- und ausgeschaltet.

Laden Sie den entsprechenden Code nach dem Ändern auf Ihr Raspberry Pi-Gerät hoch und starten Sie ihn wie in der folgenden Abbildung gezeigt. image.png

Wenn Sie zu diesem Zeitpunkt den Status des Cloud-Geräts überprüfen, können Sie feststellen, dass die Daten normal in die Cloud hochgeladen wurden. image.png

Wir führen Datenverteilungstests im Online-Debug-Panel von Cloud-Produkten durch. image.png Senden Sie 0 oder 1, um festzustellen, ob die LED aus oder an ist.

Im Allgemeinen werden Sie feststellen, dass IoT-Code mit der bekannten Python-Sprache einfach zu schreiben ist.

Recommended Posts

Verbinden Sie Raspberry Pi mit "Python" mit der Alibaba Cloud IoT Platform
Stellen Sie mit Python auf Raspberry Pi eine Verbindung zu MySQL her
Überwachen Sie die Temperatur mithilfe der Cloud-IoT-Plattform Raspberry Pi + Alibaba
Stellen Sie mit Python eine Verbindung zu Wikipedia her
Einfaches IoT, um mit Raspeye und MESH zu beginnen
Aktualisieren Sie Raspberry Pi Python mit pyenv auf 3.7 oder höher
Verwenden Sie vl53l0x mit RaspberryPi (Python)
[Raspberry Pi] Python wurde standardmäßig in Python3 geändert
Herstellen einer Verbindung zum Cloud Firestore über Google Cloud-Funktionen mit Python-Code
Schließen Sie zwei USB-Kameras an Raspberry Pi 4 an
Stellen Sie mit AWS Lambda Python eine Verbindung zu s3 her
Stellen Sie mit dem Python-Interpreter von PEPPER Mac eine Verbindung zu Pfeffer her
Arbeiten mit GPS in Python für Raspberry Pi 3
So laden Sie Dateien mit Python in den Cloud-Speicher hoch [Erstellen Sie mit Raspberry PI # 1 eine Festkommakamera]
Handmade Alexa Festival! Serverlos, Einladung zu IoT + Voice. Raspeye + Alexa Voice Servce (Python)
Verwenden Sie Python auf Raspberry Pi 3, um die LED mit Schaltersteuerung zu beleuchten!
Ich habe versucht, mit Raspeye 4 (Python Edition) ein signalähnliches Signal zu erzeugen.
Verbinden Sie Ihre SQL Server-Datenbank mit Python mit Alibaba Cloud Function Compute
Discord Bot Himbeere Pi Null mit Python [Hinweis]
Verwendung von Raspeye Pie Camera Python
Ich habe L-Chika mit Razpai 4 (Python Edition) ausprobiert.
Verbinden Sie Ihren Raspberry Pi mit Blynk mit Ihrem Smartphone
GPS-Tracking mit Raspeye 4B + BU-353S4 (Python)
Messen Sie die CPU-Temperatur von Raspeye mit Python
Versuchen Sie, die 4-Kern-CPU des Raspberry Pi 2 mit Parallel Python zu verbrauchen
GPGPU mit Raspberry Pi
DigitalSignage mit Raspberry Pi
Vom Einrichten des Raspberry Pi bis zur Installation der Python-Umgebung
Versuchen Sie, Python auf Raspberry Pi mit Visual Studio zu debuggen.
Ubuntu 20.04 auf Himbeer-Pi 4 mit OpenCV und mit Python verwenden
Ausgabe auf "7 Segment LED" mit Python mit Raspberry Pi 3!
Zeigen Sie das Bild der USB-Kamera mit OpenCV von Python mit Raspeye an
Lassen Sie uns GPIO von Raspeye mit Python CGI betreiben
Einfache Einführung in Home Hack mit Raspberry Pi und discord.py
Einfache Verwendung der Nifty Cloud API mit Botocore und Python
Python-Anfänger öffnet und schließt die ineinandergreifende Kamera mit Raspberry Pi
[Raspberry PI & Garmin GLO] Bis Bluetooth GPS mit Raspberry PI & Garmin GLO verbunden ist
Post to Slack mit Python 3
Ich habe versucht, Movidius NCS mit Python von Raspberry Pi3 auszuführen
Ich habe mit Raspberry Pi gesprochen
Einführung von PyMySQL in Himbeer-Pi3
Führen Sie den Python-Beispielcode BNO055 mit I2C (Raspberry Pi 3B) aus.
Hochladen von Dateien in den Cloud-Speicher mit dem Python-SDK von Firebase
Raspeye + Python + OpenGL-Memo
SSD 1306 OLED kann mit Raspeye + Python verwendet werden (Hinweis)
Stellen Sie von Python aus eine Verbindung zu SQLite her
Schalten Sie Python mit Alternativen auf 2.7 um
Schreiben Sie mit Python in csv
getrpimodel: Erkennen Sie das Himbeer-Pi-Modell (A, B, B +, B2, B3 usw.) mit Python
Himbeere pi 1 Modell b, Python
Erste Schritte mit Heroku-Viewing Hello World in Python Django mit Raspberry PI 3
Steuern Sie den Motor mit einem Motortreiber mit Python auf Raspberry Pi 3!
Ich habe versucht, die Bewässerung des Pflanzgefäßes mit Raspberry Pi zu automatisieren
Ich möchte Python GUI ausführen, wenn Raspberry Pi startet
Verwenden Sie Python auf Raspberry Pi 3, um die LED zu beleuchten (Hello World)
Erstellen Sie Ihre eigene IoT-Plattform mit Himbeerpi und ESP32 (Teil 1)