Python-Adventskalender 2019 Dies ist der dritte Tag der Veröffentlichung.
Himbeer-Pi beiseite Die sogenannte ESP32-Serie kann Wifi verwenden, aber wie Arduino ist es ein Ersatz, der das Programm auf ROM brennt und ausführt. Im Grunde handelt es sich um ein C-ähnliches Programm, das die IDE von Arduino verwendet. Ich schreibe.
···Aber
HTTP-Anfrage ist faul www Auch wenn es sich nur um IoT handelt, indem Kantenpunktdaten mit SaaS verknüpft werden Ehrlich gesagt, wenn die HTTP-Anfrage träge ist, werden Sie nicht motiviert sein.
Beispielskizze des Arduino Http Client
HTTPPost
#include <ArduinoHttpClient.h>
#include <WiFi101.h>
#include "arduino_secrets.h"
///////please enter your sensitive data in the Secret tab/arduino_secrets.h
/////// Wifi Settings ///////
char ssid[] = SECRET_SSID;
char pass[] = SECRET_PASS;
char serverAddress[] = "192.168.0.3"; // server address
int port = 8080;
WiFiClient wifi;
HttpClient client = HttpClient(wifi, serverAddress, port);
int status = WL_IDLE_STATUS;
void setup() {
Serial.begin(9600);
while ( status != WL_CONNECTED) {
Serial.print("Attempting to connect to Network named: ");
Serial.println(ssid); // print the network name (SSID);
// Connect to WPA/WPA2 network:
status = WiFi.begin(ssid, pass);
}
// print the SSID of the network you're attached to:
Serial.print("SSID: ");
Serial.println(WiFi.SSID());
// print your WiFi shield's IP address:
IPAddress ip = WiFi.localIP();
Serial.print("IP Address: ");
Serial.println(ip);
}
void loop() {
Serial.println("making POST request");
String postData = "name=Alice&age=12";
client.beginRequest();
client.post("/");
client.sendHeader("Content-Type", "application/x-www-form-urlencoded");
client.sendHeader("Content-Length", postData.length());
client.sendHeader("X-Custom-Header", "custom-header-value");
client.beginBody();
client.print(postData);
client.endRequest();
// read the status code and body of the response
int statusCode = client.responseStatusCode();
String response = client.responseBody();
Serial.print("Status code: ");
Serial.println(statusCode);
Serial.print("Response: ");
Serial.println(response);
Serial.println("Wait five seconds");
delay(5000);
}
Obwohl ich nur POST, ist es schlampig www Nun, ich hoffe ich gewöhne mich daran, aber es ist wirklich schlimm ...
Vorerst brauchen wir eine Grundlage.
Ich finde diesen Bereich gut.
https://www.switch-science.com/catalog/5448/ https://www.switch-science.com/catalog/3210/
Es ist in Ordnung, die billige ESP32-Serie zu verwenden, die bei Amazon verkauft wird. Ehrlich gesagt gibt es ein Problem der Geschicklichkeit, und selbst wenn es markiert ist, gibt es auch ein Problem, ob es wirklich echt ist. Kaufen Sie diesen Bereich also an einem soliden Ort.
Informationen zur Installationsmethode finden Sie in diesem Handbuch.
Erste Schritte mit MicroPython mit ESP32
MicroPython ist so konzipiert, dass beim Einschalten zuerst boot.py und dann main.py ausgeführt wird.
boot.py
Es ist die erste Python-Datei, die beim Einschalten aufgerufen wird. Grundsätzlich ist es eine gute Idee, einen Prozess zu integrieren, der eine Verbindung zu Wifi herstellt.
boot.py
import utime
import network
# ==== connecti to wifi access point ============================================
SSID_NAME = <SSID>
SSID_PASS = <WifiPassword>
def connect_wifi(ssid, passkey, timeout=10):
wifi= network.WLAN(network.STA_IF)
if wifi.isconnected() :
print('already Connected. connect skip')
return wifi
else :
wifi.active(True)
wifi.connect(ssid, passkey)
while not wifi.isconnected() and timeout > 0:
print('.')
utime.sleep(1)
timeout -= 1
if wifi.isconnected():
print('Connected')
return wifi
else:
print('Connection failed!')
return null
wifi = connect_wifi(SSID_NAME, SSID_PASS)
if not wifi :
sys.exit(0)
main.py
Es handelt sich um eine Python-Datei, die ausgeführt wird, wenn die Ausführung von boot.py normal endet. Wenn Sie Arduino usw. gemacht haben, können Sie verstehen Grundsätzlich geht diese Python-Datei von einer Endlosschleife aus.
main.py
from m5stack import lcd # m5stack Library
import machine
import time
lcd.setCursor(0, 0)
lcd.setColor(lcd.WHITE)
lcd.font(lcd.FONT_DejaVu24)
rtctime = machine.RTC()
def aaaaaa():
global rtctime
prm_year = '{:0=4}'.format(timedata[0])
prm_month = '{:0=2}'.format(timedata[1])
prm_day = '{:0=2}'.format(timedata[2])
prm_hour = '{:0=2}'.format(timedata[3])
prm_minute = '{:0=2}'.format(timedata[4])
prm_second = '{:0=2}'.format(timedata[5])
prm_datetime = prm_year + "-" \
+ prm_month + "-" \
+ prm_day + "T" \
+ prm_hour + ":" \
+ prm_minute + ":" \
+ prm_second + "Z"
lcd.print(prm_datetime,10,10)
while True: #Endlosschleife
aaaaaa()
time.sleep(1)
Es hat nicht so viel Speicher- und Ausführungsspeicherbereich (Heap-Bereich) wie ein Personal Computer oder Raspberry Pi. Wie Sie diesem Artikel entnehmen können, sind es einige.
[mgo-tec elektronische Arbeit: ESP32-WROOM-32 Chipspeicher MAC-Adressinformationserfassungsmethode](https://www.mgo-tec.com/blog-entry-chip-info-esp-wroom-32-esp32 .html)
Bitte beachten Sie, dass der Heap-Bereich im Handumdrehen aufgebraucht wird, wenn Sie ihn lose codieren, GC häufig auftritt oder die Python-Datei, die Sie ursprünglich erstellt haben, nicht enthalten ist.
Ich denke, Python verwendet die Anforderungsbibliothek. Verwenden Sie für MicroPython die Bibliothek urequests. Die Funktionalität entspricht fast der Anforderungsbibliothek.
urequests
import ujson
import urequests
def postpowerbi(self):
pbheaders = {
'Content-Type' :'application/json'
}
body = [
{
"datetime" : self.datetime,
"temp" : float(self.temp),
"humi" : float(self.humi),
"pres" : float(self.pres)
}
]
body_json = ujson.dumps(body).encode("utf-8")
res = urequests.post(
self.posturl,
data=body_json,
headers=pbheaders
)
res.close()
Grundsätzlich wünschte ich, Sie könnten das sehen ...
Adafruit, der viele Temperatursensoren herstellt, hat auch eine Bibliothek für Python.
Auf diese Weise können IoT-Geräte einfach gesteuert werden.
Obwohl dies nicht empfohlen wird, gibt es einige, die verwendet werden können, wenn die Basen wie die verwendeten Sensoren identisch sind. Es gibt jedoch Fallen, also auf eigenes Risiko. Möglicherweise müssen Sie einen Teil der Bibliothek ändern. Bitte hören Sie auf, es für Ihre eigenen Produkte zu verwenden, und tun Sie es innerhalb Ihres Hobbys.
Ich habe es lose geschrieben, aber selbst mit Python können Sie problemlos ein originales IoT-Gerät zu ausreichend niedrigen Kosten erstellen! Bitte probieren Sie es aus!
Recommended Posts