Raspberry Pi Pico W Integrationsbeispiel
Von Humai
Cloud Studio verfügt über alle notwendigen Ressourcen, um Fachleuten im IoT-Bereich eine umfassende Lösung zu bieten, die die Erstellung von Benachrichtigungen und Alarmen sowie die Entwicklung von Visualisierungspanels ermöglicht, um Echtzeitinformationen über die Leistung und den Status der IoT-Geräte anzuzeigen, die sie verbinden möchten.
Um dies zu veranschaulichen, zeigen wir ein praktisches Beispiel mit dem Raspberry Pi Pico W (RPico W) Entwicklungsboard, bei dem wir seine interne Temperatur überwachen und die entsprechenden Daten über das Cloud Studio-Plattform über das HTTP-Protokoll senden. Dies ermöglicht es uns, Diagramme zu erstellen, die die historischen und aktuellen Werte der von uns überwachten Variable darstellen.
Wir beginnen damit, die notwendigen Codezeilen einzufügen, um die RPico W-Verbindung zu einem WiFi-Netzwerk herzustellen. Dazu müssen wir die network-Bibliothek verwenden, die die notwendigen Werkzeuge für die Netzwerkkonfiguration und -verwaltung auf Geräten bereitstellt, die MicroPython ausführen.
Um die Schritte effizient zu organisieren, definieren wir eine Funktion namens connect(), um die WiFi-Netzwerkverbindung zu verwalten, und implementieren eine try/except-Ausnahmebehandlungsstruktur, um mögliche Fehler zu verwalten.
Wir werden auch die Konfiguration des Analog-Digital-Wandlers (ADC) einschließen, der mit dem RPico W-internen Temperatursensor verbunden ist, zusammen mit einem Umrechnungsfaktor, der eine mathematische Methode festlegt, um die vom ADC erzeugte Zahl in eine angemessene Annäherung an die tatsächliche Spannung umzuwandeln, die sie darstellt. Anschließend fügen wir die notwendigen Codezeilen hinzu, um die tatsächliche Sensorablesung durchzuführen. Beachten Sie, dass diese Konfiguration entsprechend dem Sensor angepasst werden muss, der für Ihr IoT-Projekt verwendet wird.
Dieser erste Teil des vollständigen Codes lautet wie folgt:
import network
from machine import Pin, ADC
from utime import sleep
ssid = 'CAMBIA POR TU SSID'
password = 'TU PASSWORD'
sensor_temp = ADC(4)
factor_conversion = 3.3 / (65535)
def connect():
red = network.WLAN(network.STA_IF)
red.active(True)
red.connect(ssid,password)
while red.isconnected() == False :
print("Estableciendo conexión..")
sleep(1)
ip = red.ifconfig()[0]
print("Conexión Establecida")
print(red.ifconfig())
return ip
try:
ip = connect()
except KeyboardInterrupt:
machine.reset()Andererseits wird in MicroPython die urequests-Bibliothek verwendet, um HTTP-Anfragen über das Internet zu stellen. Diese Bibliothek ermöglicht es Geräten, die MicroPython verwenden, wie dem RPico W, mit Webdiensten zu interagieren und auf entfernte Ressourcen zuzugreifen, wie in diesem Fall Cloud Studio.
Die urequests-Bibliothek vereinfacht den Prozess des Sendens von GET-, POST-, PUT- oder DELETE-Anfragen an bestimmte URLs sowie die Verarbeitung von Antworten und empfangenen Daten. Durch die Verwendung von urequests können ressourcenbeschränkte Geräte die Kommunikationsfunktionalität von Webdiensten effizient und effektiv nutzen.
Zunächst importieren wir die urequests-Bibliothek zusammen mit den zuvor geladenen Bibliotheken:
import network
import urequests as req
from machine import Pin, ADC
from utime import sleepJetzt werden wir unseren Code in die Cloud Studio-Plattform integrieren. Dazu beginnen wir mit der Verwendung von zwei Daten, die für die Interaktion mit einer IoT-Plattform und den Zugriff auf ihre Dienste grundlegend sind: dem access_token und der endpointID.
Der access_token ist eine Sicherheitsanmeldeinformation, die zur Authentifizierung und Autorisierung des Zugriffs auf die IoT-Plattform verwendet wird. Andererseits sind endpoints die Adressen, über die wir Anfragen an die IoT-Plattform-API senden können. Diese endpoints werden als spezifische URLs dargestellt, die den Standort eines Dienstes oder einer Ressource auf der Plattform angeben.
Denken Sie daran, dass wir zuerst unser Gerät auf der Plattform erstellen müssen (in unserem Fall das RPico W) und die entsprechenden Endpunkt(e) für die Variable, die wir überwachen möchten (in unserem Fall die interne Temperatur).
Um in diesem Fall die Temperatur unseres RPico W zu überwachen, definieren wir Folgendes:
# Esto se obtiene de la wiki de Cloud Studio
temperature_url = 'https://gear.cloud.studio/services/gear/DeviceIntegrationService.svc/UpdateTemperatureSensorStatus'
# Esto se obtiene de la platafroma de Cloud Studio
access_token = 'COLOCA TU ACCESS TOKEN'
internal_temperature = 'COLOCA EL ENDPOINT ID CORRESPONDIENTE AL SENSOR INTERNO DE TEMPERATURA'Greifen Sie auf die Informationen über Access-Tokens hier zu.
Als Nächstes erstellen wir die payload, die den Datensatz darstellt, der in einer HTTP-Anfrage gesendet wird. In diesem Fall wird sie wie folgt strukturiert:
payload_temperature = {
'accessToken': access_token, # Se repite en todos los payloads que realicemos
'endpointID': internal_temperature, # Es un numero entero y se modifica de acuerdo al sensor que utilicemos
'temperatureCelsius': 30 # Valor inicial aleatorio
}Und jetzt definieren wir eine enviar_datos()-Funktion, die die Daten effektiv an die Cloud Studio-Plattform überträgt:
def enviar_datos(ip):
while True:
# Realizo la lectura correspondiente
lectura = sensor_temp.read_u16() * factor_conversion
temperature = 27 - (lectura - 0.706) / 0.001721
# La agrega el dato al payload
payload_temperature['temperatureCelsius'] = temperature
print('Tomando temperatura del sensor interno', payload_temperature['temperatureCelsius'])
# Le envío al servidor y aguardo la respuesta del servidor (200)
response = req.post(temperature_url, json = payload_temperature)
print('Respuesta del servidor: ', response.status_code)
response.close()
sleep(1)Zusätzlich werden wir die enviar_datos()-Funktion innerhalb der try/except-Ausnahmebehandlungsstruktur einbinden, um mögliche Fehler zu verwalten.
try:
ip = connect()
enviar_datos(ip)
except KeyboardInterrupt:
machine.reset()Der vollständige Code lautet wie folgt:
import network
import urequests as req
from machine import Pin, ADC
from utime import sleep
ssid = 'CAMBIA POR TU SSID'
password = 'TU PASSWORD'
sensor_temp = ADC(4)
factor_conversion = 3.3 / (65535)
# Esto se obtiene de la wiki de Cloud Studio
temperature_url = 'https://gear.cloud.studio/services/gear/DeviceIntegrationService.svc/UpdateTemperatureSensorStatus'
access_token = 'COLOCA TU ACCESS TOKEN'
internal_temperature = 'COLOCA EL ENDPOINT ID CORRESPONDIENTE AL SENSOR INTERNO DE TEMPERATURA'
payload_temperature = {
'accessToken': access_token, # Se repite en todos los payloads que realicemos
'endpointID': internal_temperature, # Es un numero entero y se modifica de acuerdo al sensor que utilicemos
'temperatureCelsius': 30 # Valor inicial aleatorio
}
def connect():
red = network.WLAN(network.STA_IF)
red.active(True)
red.connect(ssid,password)
while red.isconnected() == False :
print("Estableciendo conexión..")
sleep(1)
ip = red.ifconfig()[0]
print("Conexión Establecida")
print(red.ifconfig())
return ip
def enviar_datos(ip):
while True:
# Realizo la lectura correspondiente
lectura = sensor_temp.read_u16() * factor_conversion
temperature = 27 - (lectura - 0.706) / 0.001721
# La agrega el dato al payload
payload_temperature['temperatureCelsius'] = temperature
print('Tomando temperatura del sensor interno', payload_temperature['temperatureCelsius'])
# Le envío al servidor y aguardo la respuesta del servidor (200)
response = req.post(temperature_url, json = payload_temperature)
print('Respuesta del servidor: ', response.status_code)
response.close()
sleep(1)
try:
ip = connect()
enviar_datos(ip)
except KeyboardInterrupt:
machine.reset()Wenn die Daten erfolgreich gesendet wurden, sollten Sie den HTTP-200-Code in Ihrer Compiler-Konsole sehen, wie in Abbildung 01 dargestellt. Dies bestätigt die ordnungsgemäße Kommunikation mit der Plattform.

Abbildung 01 - Erfolgreiche Datenkommunikation zu Cloud Studio
Damit ist alles bereit, um mit der Entwicklung unserer Dashboards in Cloud Studio zu beginnen.
Matrix der Methoden für Sensor-Aktualisierung
Aktualisierung von Daten auf Geräteebene Diese Tabelle enthält die verfügbaren Methoden zur Aktualisierung von Gerätedaten. Geräteeigenschaft, Scripting-Methode, HTTP-Methode, HTTP-RAW-Methode.
Gerätesteuerung
Gear Studio ermöglicht die Steuerung von Geräten, die Aktuation unterstützen, wie z. B. Haushaltsgeräte, Dimmer, Thermostate, Vorhangsteuerungen und vieles mehr.