Controller um requests-Pythonmodul erweitern?

Community-Firmware (cfw), Selbstbaucontroller (TX-Pi, ftduino, usw.), usw.
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
stylep
Beiträge: 4
Registriert: 24 Jul 2018, 09:38

Controller um requests-Pythonmodul erweitern?

Beitrag von stylep » 06 Sep 2018, 10:27

Hallo liebe Community,

ich bin nun schon seit mehreren Stunden am Tüfteln und drehe mich im Kreis. Deshalb wende ich mich an euch und hoffe, dass ihr mir weiterhelfen könnt.
Meine Frage in Kurzform:
ist es möglich das Python-Modul "requests" in ein Pythonskript für den TXT-Controller zu integrieren?

Und als Langform:
Der Grund für dieses Vorgehen ist: Ich möchte mit einem TXT-Controller Sensordaten auslesen. Dabei handelt es sich zum Beispiel um Farbwerte oder blockierte Lichtschranken. Diese sollen anschließend in einem JSON-Objekt verpackt werden und über eine Flask-Schnittstelle an einen Raspberry Pi übertragen werden, an dem die Daten weiterverarbeitet werden. Bisher wurden die Controller von einem Raspberry Pi direkt angesteuert. Es war kein Problem die Daten auszulesen. Nun sollen aber alle Pythonskripte direkt auf den TXT-Controllern laufen und der Pi nur noch als zentraler Datenhub genutzt werden.

Nun habe ich bereits versucht das requests-Modul direkt in mein Projektordner zu kopieren. Klappt insofern, dass das Modul erfolgreich im Programm importiert wird. Sobald aber das erstellte JSON-Objekt an den Pi verschickt werden soll, bekomme ich eine von zwei Fehlermeldungen. Entweder bekomme ich einen 404-Fehler, oder aber das Pythonprogramm beendet sich komplett mit einer langen Fehlermeldung (Errno 1111: Connection refused).
Das Seltsame ist, dass der selbe Code funktioniert, wenn von dem RasPi ein JSON-Objekt an einen anderen Server gesendet werden soll.

Kann ich den TXT-Controller irgendwie um das requests-Modul erweitern, oder habt ihr eventuell weitere Vorschläge wie ich die Sensordaten an meinen zentralen Raspberry Pi übertragen kann?

Mit freundlichen Grüßen
Patrick

Benutzeravatar
ski7777
Beiträge: 832
Registriert: 22 Feb 2014, 14:18
Wohnort: Saarwellingen

Re: Controller um requests-Pythonmodul erweitern?

Beitrag von ski7777 » 06 Sep 2018, 16:23

Die einfachste Lösung wäre wohl die Community Firmware: http://cfw.ftcommunity.de/ftcommunity-TXT/de/
Hier ist alles, was dein Herz begehrt, schon enthalten. Python 3 mit requests ist natürlich dabei. Auch ftrobopy für die Ansteuerung der I/Os ist dabei.

Raphael

stylep
Beiträge: 4
Registriert: 24 Jul 2018, 09:38

Re: Controller um requests-Pythonmodul erweitern?

Beitrag von stylep » 10 Sep 2018, 08:40

Hallo Raphael,

zunächst vielen Dank für Deine Hilfe. Ich habe vergessen zu erwähnen, dass die Community-Firmware bereits auf den Controllern installiert ist.
Wenn ich das Skript auf den Controller kopiere und ausführe (das requests-Modul von dem RasPi wird nicht mit kopiert), meldet er:

Code: Alles auswählen

Traceback (most recent call last):
    File "sorting_line.py", line 2, in <module>
        import requests
ModuleNotFoundError: No module named 'requests'
Kopiere ich die requests-Modul-Ordner von dem RasPi mit in den Programmordner auf dem Controller läuft das Skript durch, sobald aber ein request gesendet werden soll bekomme ich eine Fehlermeldung.
oder muss ich die Module auf dem Controller anders ansprechen?


Beste Grüße
Patrick

EDIT:

Ich habe eine Lösung gefunden. Den Fehler hat das urllib3 verursacht. Den Modulordner habe ich von dem RasPi in den Programmordner kopiert. Nach Löschen des Ordners ließen sich requests zwischen TXT und RasPi austauschen.

Beste Grüße
Patrick

manuelseeger
Beiträge: 9
Registriert: 21 Aug 2019, 14:23

Re: Controller um requests-Pythonmodul erweitern?

Beitrag von manuelseeger » 03 Okt 2019, 11:47

Hallo Patrick und Raphael,

ich habe genau das gleiche Problem, aber die Lösung funktioniert bei mir nicht.

Ich habe die Community Edition 0.9.5 auf dem TXT laufen. Zunächst einmal scheint da die requests library nicht mit dabei zu sein.

Code: Alles auswählen

>>> import requests
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'requests'
Wenn ich requests von meinen PC site-packages auf den TXT controller kopiere

Code: Alles auswählen

Traceback (most recent call last):
  File "testticketcreate.py", line 1, in <module>
    import requests
  File "/home/ftc/apps/7408bee1-4ea6-4b10-b803-a0cbcebe360a/requests/__init__.py", line 43, in <module>
    import urllib3
ModuleNotFoundError: No module named 'urllib3'
Kopiere ich auch urllib3 auf den TXT, bekomme ich weitere import Fehler

Code: Alles auswählen

Traceback (most recent call last):
  File "testticketcreate.py", line 1, in <module>
    import requests
  File "/home/ftc/apps/7408bee1-4ea6-4b10-b803-a0cbcebe360a/requests/__init__.py", line 43, in <module>
    import urllib3
  File "/home/ftc/apps/7408bee1-4ea6-4b10-b803-a0cbcebe360a/urllib3/__init__.py", line 7, in <module>
    from .connectionpool import (
  File "/home/ftc/apps/7408bee1-4ea6-4b10-b803-a0cbcebe360a/urllib3/connectionpool.py", line 30, in <module>
    from .connection import (
ImportError: cannot import name 'HTTPException' from 'urllib3.connection' (/home/ftc/apps/7408bee1-4ea6-4b10-b803-a0cbcebe360a/urllib3/connection.py)
Da kann ich auch noch weiter machen indem ich anfange die urllib3 Python files zu bearbeiten, aber es fehlen immer mehr dependencies wie chardet, certifi, idna und wahrscheinlich weitere. Ich glaube nicht, dass ich da zum Ziel komme beim Package Manager spielen.

Vielleicht grundsätzlich die Frage:

Sollte requests und urllib3 auf der community edition 0.9.5 dabei sein? Ich finde die jedenfalls nicht in /usr/lib/python3.7/

vleeuwen
Beiträge: 1141
Registriert: 31 Okt 2010, 22:23
Wohnort: Enschede (NL)

Re: Controller um requests-Pythonmodul erweitern?

Beitrag von vleeuwen » 03 Okt 2019, 18:52

Contribution moved to the "Robo Pro / Computing / Software" thread
Zuletzt geändert von vleeuwen am 05 Okt 2019, 17:52, insgesamt 1-mal geändert.

tintenfisch
Beiträge: 87
Registriert: 03 Jan 2018, 22:04

Re: Controller um requests-Pythonmodul erweitern?

Beitrag von tintenfisch » 05 Okt 2019, 01:20

manuelseeger hat geschrieben:[...]
Ich habe die Community Edition 0.9.5 auf dem TXT laufen. Zunächst einmal scheint da die requests library nicht mit dabei zu sein.

Code: Alles auswählen

>>> import requests
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named 'requests'
[...]
Gib mal bitte die Resultate von

Code: Alles auswählen

>>> import sys
>>> sys.version
>>> sys.path
hier an.

vleeuwen
Beiträge: 1141
Registriert: 31 Okt 2010, 22:23
Wohnort: Enschede (NL)

Re: Controller um requests-Pythonmodul erweitern?

Beitrag von vleeuwen » 05 Okt 2019, 08:04

Contribution moved to the "Robo Pro / Computing / Software" thread

Antworten