Programmieren in Python

Der Code zum Auslesen von Temperatur und Luftfeuchtigkeit ist überschaubar und kann für einen ersten Test direkt in REPL eingegeben werden. Wie man dem NodeMCU Pinout - zu finden am besten über eine Suchmaschine - entnehmen kann, entspricht Pin D1 GPIO 5. Im Code muss deshalb Pin 5 verwendet werden:

Stellenmarkt
  1. IT-Revisor (m/w/d)
    L-Bank, Karlsruhe
  2. Wissenschaftliche Mitarbeiterin / Wissenschaftlicher Mitarbeiter (m/w/d) am Lehrstuhl für ... (m/w/d)
    Universität Passau, Passau
Detailsuche

  1. import dht
  2. from machine import Pin
  3. d = dht.DHT22(Pin(5))
  4. d.measure()
  5. d.temperature()
  6. d.humidity()

Die importierten Module dht und machine binden Sensor und GPIO an. Die Funktion measure() erfasst die Messwerte, temperature() und humidity() ermöglichen schließlich den Zugriff auf die Werte.

Für den Praxiseinsatz ist die USB-Verbindung eher unpraktisch. Um die Daten auch ohne REPL und den Desktop-Rechner abfragen zu können, bietet sich ein kleiner Webserver auf dem Board an, der auf Anfrage die Messwerte ermittelt und als HTML-Response ausliefert. Auch das ist in ein paar Zeilen Code erledigt. Das folgende Listing zeigt eine rudimentäre Lösung:

Golem Akademie
  1. Cinema 4D Grundlagen: virtueller Drei-Tage-Workshop
    14.–16. März 2022, Virtuell
  2. Netzwerktechnik Kompaktkurs: virtueller Fünf-Tage-Workshop
    14.–18. Februar 2022, virtuell
Weitere IT-Trainings

  1. import dht
  2. from machine import Pin
  3. import network
  4. try:
  5. import usocket as socket
  6. except:
  7. import socket
  8.  
  9. def do_connect():
  10. sta_if = network.WLAN(network.STA_IF)
  11. if not sta_if.isconnected():
  12. print('connecting...')
  13. sta_if.active(True)
  14. sta_if.connect('WLAN-Name', 'WLAN-Passwort')
  15. while not sta_if.isconnected():
  16. pass
  17. print('network config:', sta_if.ifconfig())
  18.  
  19. d = dht.DHT22(Pin(5))
  20. do_connect()
  21. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  22. s.bind(('', 80))
  23. s.listen(5)
  24.  
  25. while True:
  26. conn, addr = s.accept()
  27. request = conn.recv(1024)
  28. request = str(request)
  29. print('Content = %s' % request)
  30. d.measure()
  31. temp = d.temperature()
  32. hum = d.humidity()
  33. response = """<html><body>temp:"""+str(temp)+""", humidity:"""+str(hum)+"""</body></html>"""
  34. conn.send('HTTP/1.1 200 OK\n')
  35. conn.send('Content-Type: text/html\n')
  36. conn.send('Connection: close\n\n')
  37. conn.sendall(response)
  38. conn.close()

In der Funktion do_connect() wird hier eine Verbindung zum heimischen WLAN aufgebaut. Die dabei zugewiesene IP-Adresse wird ausgegeben. Anschließend wird über das Socket-Modul ein kleiner Server aufgebaut, der auf Anfragen über Port 80 lauscht. Wenn ein Request eingeht, werden die Messwerte erfasst und, in HTML verpackt, verschickt.

Die Abfrage des Servers und damit der Messdaten geschieht einfach durch Eingeben der ermittelten IP-Adresse in einen Browser.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
  • Ein ESP8266 NodeMCU (Bild: Dirk Koller)
  • Ein erfolgreicher Flash-Vorgang (Bild: Dirk Koller)
  • Python-Anweisungen in REPL (Bild: Dirk Koller)
  • Das DHT22-Breakout-Modul (Bild: Dirk Koller)
  • Messwerte im Browser (Bild: Dirk Koller)
  • Verbinden mit der Rshell (Bild: Dirk Koller)
Messwerte im Browser (Bild: Dirk Koller)
 Micro Python mit dem Controller verbindenDateien übertragen mit Rshell 
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7.  


elcaron 02. Dez 2019

Ich habe eher Probleme damit, dass der ESP das Board erwärmt. Mit DeepSleep ist dem an...

PatrickSchlegel 02. Dez 2019

++

tsp 02. Dez 2019

Abgesehen davon, dass ich nicht denke, dass die Sache mit den Einrückungen ein "Problem...

floxiii 02. Dez 2019

https://randomnerdtutorials.com/micropython-esp32-deep-sleep-wake-up-sources/ Deep Sleep...

floxiii 02. Dez 2019

Der ESP32 benötigt im Deep Sleep nur wenige A.



Aktuell auf der Startseite von Golem.de
Microsoft
Sony äußert sich zur Übernahme von Activision Blizzard

Rund 20 Milliarden US-Dollar haben die Aktien von Sony verloren. Nun hat der Konzern erstmals den Kauf von Activision Blizzard kommentiert.

Microsoft: Sony äußert sich zur Übernahme von Activision Blizzard
Artikel
  1. Parallel Systems: Ehemalige SpaceX-Mitarbeiter entwickeln neuartige Güterzüge
    Parallel Systems
    Ehemalige SpaceX-Mitarbeiter entwickeln neuartige Güterzüge

    Das Startup Parallel Systems will konventionelle Züge durch modulare Fahrzeuge mit eigenem Antrieb und Energieversorgung ersetzen.

  2. Digitale-Dienste-Gesetz: Europaparlament will Nutzertracking stark einschränken
    Digitale-Dienste-Gesetz
    Europaparlament will Nutzertracking stark einschränken

    Das Europaparlament hat den Entwurf des Digitale-Dienste-Gesetzes verschärft. Ein Komplettverbot personalisierter Werbung soll es aber nicht geben.

  3. Jahresbilanz: Durch das Vodafone-Kabelnetz liefen 48 Exabyte
    Jahresbilanz
    Durch das Vodafone-Kabelnetz liefen 48 Exabyte

    Unser neues Leben spielt sich tagsüber bei Microsoft Teams ab. Dann verlagern sich die Datenströme in Richtung der Server von Netflix und Amazon.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • LG OLED (2021) 40% günstiger (u.a. 65" 1.599€) • WD Black 1TB SSD 94,90€ • Lenovo Laptops (u.a. 17,3" RTX3080 1.599€) • Gigabyte Mainboard 299,82€ • RTX 3090 2.399€ • RTX 3060 Ti 799€ • MindStar (u.a. 32GB DDR5-6000 389€) • Alternate (u.a. Samsung LED TV 50" 549€) [Werbung]
    •  /