Edit: Vielen Dank auch an "einfachTobi" hatte den folgenden Beitrag schon geschrieben, als ich deine Antwort noch nicht sah. Deinen Code habe ich gerade probiert und erhalte im Terminal auch
Code: Alles auswählen
INFO: Started reloader process [25507] using WatchFiles
INFO: Started server process [25511]
INFO: Waiting for application startup.
INFO: Application startup complete.
42 0.815
INFO: 78.43.40.238:32606 - "POST / HTTP/1.0" 200 OK
INFO: 78.43.40.238:49082 - "GET / HTTP/1.1" 405 Method Not Allowed
Folgender Text entstand schon vor dem Beispiel von "einfachTobi". Ich lasse den trotzdem stehen, das ihr seht was in meinem Kopf so vor sich geht.
einfachTobi hat geschrieben: ↑Freitag 7. Oktober 2022, 09:32
Du hast im FastAPI-Code @app.get("/") geschrieben. Damit erlaubst du nur GET-Requests. Wenn du POST-Requests auf diese Route zulassen willst, musst du @app.post("/") verwenden.
Danke, das habe ich geändert.
Das führte mich dann leider schon zum nächsten Fehler:
Code: Alles auswählen
INFO: Started reloader process [25387] using WatchFiles
INFO: Started server process [25389]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: 78.43.40.238:32604 - "POST / HTTP/1.0" 422 Unprocessable Entity
INFO: 78.43.40.238:49036 - "GET / HTTP/1.1" 405 Method Not Allowed
Die Art der Daten die ich sende stimmt wohl nicht. Mein letzter Versuch war mit 'json'.
Code: Alles auswählen
import socket
import urequests
def is_connected():
try:
connection = socket.socket()
connection.connect(socket.getaddrinfo('www.micropython.org', 80)[0][-1])
return True
except Exception as error:
print(eroor)
return False
def main():
if is_connected():
response = urequests.post("http://217.160.51.17:8000", json={'temperature': '3'})
print(response)
print('verbunden')
if __name__ == '__main__':
main()
Und auf dem Server:
Code: Alles auswählen
from fastapi import FastAPI
app = FastAPI()
@app.post("/")
async def root(data):
return data
Es gab
hier auch so einen Fehler. Da werden dann Klassen erstellt. Bevor ich jetzt weiter rumrate und Code durch die Gegend kopiere ohne zu wissen was da los ist. Wisst ihr was da los ist? Wie bzw. wo ist definiert wie die Daten auszusehen haben? 'urequest.post' sendet nur bestimmte Datenstrukturen: Bytes, Tuple,... . Dann sehe ich die Fehlersuche weiter bei FastAPI, bzw ich muss dem Server irgendwie sagen, in welcher Struktur die Daten kommen?
Danke und Grüße
Dennis
P.S. Für heute Mittag bin ich mal an den Vorbereitungen für das Gewächshaus in dass der ESP nachher reinkommt.