Hallo zusammen,
ich habe mit meinem Raspberry Pi mit Python Daten eingelesen und diese in eine Datenbank ins Internet übertragen. Unten ein Codeausschnitt. Ich wollte dieses Programm, welches einwandfrei funktioniert, nun auf einen Raspberry Pico W in Micropython übernehmen. Leider bekomme ich in Micropython eine Fehlermeldung:
ValueError: invalid arguments bei s.connect ((host, port))
Ich verstehe nicht was da falsch ist.
Wäre super wenn jemand helfen könnte oder einen Beispielcode zur Verfügung stellen könnte.
Danke vorab!!
Gruß
Holger
import socket
host = "holgeris.atwebpages.com"
port = 80
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
request = "GET /insert.php?x=" + str(x) + "&y=" + str(y) + "&spannung="+str(spannung) + "&drehzahlwindrad=" + str(drehzahlwindrad) +"&leistung="+str(leistung) + \
" HTTP/1.1\r\nHost: " + host + "\r\n\r\n"
s.send(request.encode())
s.shutdown(1)
s.close()
Socket Fehlermeldung bei Umstellung von Python auf Micropython
MicroPython ist nicht Python. Und es behauptet auch nicht, dass es sich eben so verwenden lässt.
Was sagt denn die Dokumentation von MicroPython, wie der korrekte Aufruf von .connect() aussieht? Es scheint laut der Fehlermeldung ja kein Tuple aus Host und Port zu sein.
Was sagt denn die Dokumentation von MicroPython, wie der korrekte Aufruf von .connect() aussieht? Es scheint laut der Fehlermeldung ja kein Tuple aus Host und Port zu sein.
OK, das Format host="holgeris.atwebpages.com" akzeptiert Micropython nicht. Es muss als IP Adresse angegeben werden. Hoffe das ich die noch irgendwie herausfinde. Ansonsten melde ich mich wieder.
Danke erstmal.
Gruß
Holger
Danke erstmal.
Gruß
Holger
Laut Doku soll man getaddrinfo benutzen. https://docs.micropython.org/en/latest/ ... s-format-s
- __blackjack__
- User
- Beiträge: 13565
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Randbemerkung: MicroPython kann f-Zeichenkettenliterale. Das ist übersichtlicher und wahrscheinlich auch effizienter als da immer einzelne Zeichenketten und Werte mit `str()` und ``+`` zusammenzustückeln. Und literale Zeichenketten kann man einfach durch Zeilenumbrüche trennen, da braucht man keine \-Zeilenfortsetzung.
Code: Alles auswählen
s.send(
f"GET /insert.php?x={x}&y={y}&spannung={spannung}"
f"&drehzahlwindrad={drehzahlwindrad}&leistung={leistung} HTTP/1.1\r\n"
f"Host: {host}\r\n\r\n".encode()
)
„Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.“ — Brian W. Kernighan