ConnectionRefusedError: [Errno 111] bei txt = ftrobopy.ftTXT('192.168.7.2', 65000)

Community-Firmware (cfw), Selbstbaucontroller (TX-Pi, ftduino, usw.), usw.
Forumsregeln
Bitte beachte die Forumsregeln!
Antworten
Grk
Beiträge: 6
Registriert: 30 Apr 2020, 10:38

ConnectionRefusedError: [Errno 111] bei txt = ftrobopy.ftTXT('192.168.7.2', 65000)

Beitrag von Grk » 19 Mai 2020, 18:36

Hallo,

ich habe einen TXT, auf dem die Communityfirmware 0.9.5 läuft. Ich kann wunderbar Python-Programme laufen lassen und bearbeiten, indem ich das Gerät per USB anschließe und per Filezilla darauf zugreife. Leider habe ich Schwierigkeiten, einen Kombisensor via I2C anzusteuern.

Es funktionieren die Befehle aus dem ersten Teil des Manuals, wie zum Beispiel:

Code: Alles auswählen

ftrob = ftrobopy.ftrobopy('auto')
motor1=ftrob.motor(1)
ftrob.updateWait()
usw.

Was allerdings nicht funktioniert, sind Befehle aus der zweiten Hälfte des Manuals. Dort ist die Rede von der Basisklasse zum fischertechnik TXT Computer.

Code: Alles auswählen

import ftrobopy
txt = ftrobopy.ftTXT('192.168.7.2', 65000)
Der obige Code gibt mir:
ConnectionRefusedError: [Errno 111]

Leider hat mir die Forensuche hier nicht weitergeholfen. Woran könnte es liegen, dass ich diese Klasse nicht initialisieren kann?

Danke vorab.

Torsten
Beiträge: 190
Registriert: 29 Jun 2015, 23:08
Wohnort: Gernsheim (Rhein-Main-Region)

Re: ConnectionRefusedError: [Errno 111] bei txt = ftrobopy.ftTXT('192.168.7.2', 65000)

Beitrag von Torsten » 22 Mai 2020, 18:21

Hallo Grk,

der Constructor der Basisklasse (ftTXT) wird (normalerweise) nicht direkt vom Anwender aufgerufen, sondern nur indirekt über die abgeleitete Klasse ftrobopy, die z.B. auch die Python-Verbindungsthreads zum TXT herstellt.

Da die Klasse ftrobopy aber von ftTXT abgeleitet ist, stehen hier alle Befehle der Basisklasse zur Verfügung, auch die Befehle zum Ansprechen der I2C-Schnittstelle (i2c_read/write).

Du kannst im Python-Script also für den BMX055 Kombisensor ganz normal folgendes schreiben:

Code: Alles auswählen

import ftrobopy, struct
ftrob = ftrobopy.ftrobopy('auto')
ftrob.i2c_write(0x18, 0x3e, 0x80)
ftrob.i2c_write(0x18, 0x0f, 0x0c)
ftrob.i2c_write(0x18, 0x10, 0x0f)
res = ftrob.i2c_read(0x18, 0x3f, data_len=6)
x,y,z = struct.unpack('<hhh', res)
print("Beschleunigung des BMX055 Kombisensors in x-, y- und z-Richtung = ", x >> 4 , y >> 4, z >> 4)
Das Problem mit dem "ConnectionRefusedError: [Errno 111]" liegt wahrscheinlich daran, dass Du die ftGUI-app der cfw, die für die i2c-Befehle von ftrobopy benötigt werden, nicht gestartet hast.

Viele Grüße
Torsten

Grk
Beiträge: 6
Registriert: 30 Apr 2020, 10:38

Re: ConnectionRefusedError: [Errno 111] bei txt = ftrobopy.ftTXT('192.168.7.2', 65000)

Beitrag von Grk » 27 Mai 2020, 23:42

Hallo Torsten,

vielen Dank erst mal für deine Antwort und sorry für meine späte Reaktion.

Ich bin ein Stück weitergekommen dank deiner Antwort. Wenn ich deinen Code probiere, erhalte ich die Fehlermeldung:

Code: Alles auswählen

File "usr/lib/python3.7/site-packages/ftrobopy.py", line 352, in i2c_read
AttributeError: 'ftrobopy' object has no attribute '_i2c_sock'
Offensichtlich steht die Methode i2c_read zur Verfügung, ich kann sie allerdings nicht nutzen. Für i2c_write erhalte ich die entsprechend gleiche Meldung.

Leider bin ich auch mit Internetsuchen nicht weitergekommen.
[...] dass Du die ftGUI-app der cfw, die für die i2c-Befehle von ftrobopy benötigt werden, nicht gestartet hast.
Ist vlt. eine blöde Frage, aber wie mache ich das? Ich starte den TXT mit dem kleinen blauen Knopf, es bootet, und zeigt "community edition" an, und dann bin ich doch in der GUI, oder? Ich kann dort zwischen den Ordnern "Demos" und "System" wählen, wobei in Ersterem die eigenen Apps mit anklickbaren Icons drin sind, und im zweiten Ordner eben System-Apps. Hier allerdings findet sich der Punkt „FT-GUI“ – meinst du das? Das kann ich zwar anklicken, dort steht dann aber ganz groß: NO PROGRAM, und ich kann File, Settings oder Test anklicken.

Ich wäre dir wirklich zutiefst verbunden, wenn du mir hier noch einmal weiterhelfen könntest.

Torsten
Beiträge: 190
Registriert: 29 Jun 2015, 23:08
Wohnort: Gernsheim (Rhein-Main-Region)

Re: ConnectionRefusedError: [Errno 111] bei txt = ftrobopy.ftTXT('192.168.7.2', 65000)

Beitrag von Torsten » 28 Mai 2020, 08:40

Hallo Grk,

welche original fischertechnik Firmware ist auf Deinem TXT installiert ?
(Ich meine mich zu erinnern, dass es mit der neueren fischertechnik Firmware im Zusammenspiel mit der cfw zu Problemen mit der FT-GUI kommen kann.)

Viele Grüße
Torsten

Benutzeravatar
PHabermehl
Moderator
Beiträge: 1777
Registriert: 20 Dez 2014, 22:59
Wohnort: Bad Hersfeld

Re: ConnectionRefusedError: [Errno 111] bei txt = ftrobopy.ftTXT('192.168.7.2', 65000)

Beitrag von PHabermehl » 28 Mai 2020, 13:18

Grk hat geschrieben:
27 Mai 2020, 23:42

Ist vlt. eine blöde Frage, aber wie mache ich das? Ich starte den TXT mit dem kleinen blauen Knopf, es bootet, und zeigt "community edition" an, und dann bin ich doch in der GUI, oder? Ich kann dort zwischen den Ordnern "Demos" und "System" wählen, wobei in Ersterem die eigenen Apps mit anklickbaren Icons drin sind, und im zweiten Ordner eben System-Apps. Hier allerdings findet sich der Punkt „FT-GUI“ – meinst du das? Das kann ich zwar anklicken, dort steht dann aber ganz groß: NO PROGRAM, und ich kann File, Settings oder Test anklicken.

Ich wäre dir wirklich zutiefst verbunden, wenn du mir hier noch einmal weiterhelfen könntest.
Ja, aber genau das soll auch so sein. Dann läuft die originale ft-GUI unter der cfw. Natürlich ist dann da kein Programm hochgeladen auf dem TXT. Aber ftrobopy sollte jetzt Zugriff haben.

Gruß
Peter
Moderative Beiträge sind explizit gekennzeichnet!

Torsten
Beiträge: 190
Registriert: 29 Jun 2015, 23:08
Wohnort: Gernsheim (Rhein-Main-Region)

Re: ConnectionRefusedError: [Errno 111] bei txt = ftrobopy.ftTXT('192.168.7.2', 65000)

Beitrag von Torsten » 28 Mai 2020, 13:33

Hallo Peter,

weisst Du, ob die cfw mit der neuesten fischertechnik Firmware (4.6.6) läuft, bzw laufen sollte ?
(in einem kurzen Test blieb mein TXT (fw 4.6.6) hängen, sobald ich die FT-GUI gestartet habe)

Viele Grüße
Torsten

Benutzeravatar
PHabermehl
Moderator
Beiträge: 1777
Registriert: 20 Dez 2014, 22:59
Wohnort: Bad Hersfeld

Re: ConnectionRefusedError: [Errno 111] bei txt = ftrobopy.ftTXT('192.168.7.2', 65000)

Beitrag von PHabermehl » 28 Mai 2020, 14:05

Hallo Torsten,

ui, sorry, da muss ich zugeben, dass ich das mit der aktuellen ft-Firmware nicht getestet habe.

Gruß
Peter
Torsten hat geschrieben:
28 Mai 2020, 13:33
Hallo Peter,

weisst Du, ob die cfw mit der neuesten fischertechnik Firmware (4.6.6) läuft, bzw laufen sollte ?
(in einem kurzen Test blieb mein TXT (fw 4.6.6) hängen, sobald ich die FT-GUI gestartet habe)

Viele Grüße
Torsten
Moderative Beiträge sind explizit gekennzeichnet!

Grk
Beiträge: 6
Registriert: 30 Apr 2020, 10:38

Re: ConnectionRefusedError: [Errno 111] bei txt = ftrobopy.ftTXT('192.168.7.2', 65000)

Beitrag von Grk » 29 Mai 2020, 08:49

Hallo Leute,

irgendwie stehe ich immer noch mächtig auf dem Schlauch, was „Start der FT-GUI“ angeht.
Ja, aber genau das soll auch so sein. Dann läuft die originale ft-GUI unter der cfw.
Bitte noch einmal die genaue Schrittfolge: Ich boote den TXT, gehe zu *System*, und tippe den Button *FT-GUI* an. Jetzt ist die FT-GUI gestartet, richtig? Danach muss ich den blauen ON/OFF drücken, um zurück zum Ordner navigieren zu können, um dort meine eigentliche App starten zu können. Habe ich die FT-GUI jetzt wieder beendet? Oder muss ich irgendwie einen anderen Weg gehen?

Ich habe glücklicherweise auch zwei TXTs zur Verfügung, mit unterschiedlich aktueller Firmware:

Code: Alles auswählen

              TXT 1        TXT 2
Firmware      0.9.5        0.9.4
Linux         4.14.97      4.1.37
Python        3.7.1final0  3.6.3final0
ftrobopy      1.88         1.87
Qt            4.8.7        4.8.7
PyQT          4.11.3       4.12.1
Innerhalb der FT-GUI steht unter *Info*:

Code: Alles auswählen

              TXT 1        TXT 2
Id            TXT-4027     TXT-2040
App           4.2.4.0      4.2.4.0
Sys           4.2.4.0      4.2.4.0
Bei beiden TXTs führt der oben beschrieben Weg zu einem Fehler: Mit der cfw 0.9.4 heißt es, 'ftrobopy' object has no attribute 'i2c_read' – es scheint, als ob die i2c-Funktionalität erst mit cfw 0.9.5 implementiert wurde (das Manual der Vorversion erwähnt i2c auch noch nicht). Auf dem anderen TXT mit der cfw 0.9.5 heißt es: 'ftrobopy' object has no attribute '_i2c_sock' – i2c-Funktionalität ist hier also implementiert.

Wie jetzt weiter? Ich wäre für weitere Vorschläge sehr dankbar.

Oh, und noch eins:
in einem kurzen Test blieb mein TXT (fw 4.6.6) hängen
Firmware 4.6.6? Muss ich die „darunterliegende“ Firmware des TXT auch updaten, oder wie ist das zu verstehen?

Herzlichen Dank,
Micha

Torsten
Beiträge: 190
Registriert: 29 Jun 2015, 23:08
Wohnort: Gernsheim (Rhein-Main-Region)

Re: ConnectionRefusedError: [Errno 111] bei txt = ftrobopy.ftTXT('192.168.7.2', 65000)

Beitrag von Torsten » 02 Jun 2020, 16:50

Hallo Micha,
Grk hat geschrieben:
29 Mai 2020, 08:49

Code: Alles auswählen

              TXT 1        TXT 2
Id            TXT-4027     TXT-2040
App           4.2.4.0      4.2.4.0
Sys           4.2.4.0      4.2.4.0
Die Firmware-Version 4.2.4.0, die Du auf Deinen beiden TXTs installiert hast, ist in Ordnung. Diese Version habe ich selbst auch noch auf den meisten meiner TXTs laufen.
Grk hat geschrieben:
29 Mai 2020, 08:49
Bei beiden TXTs führt der oben beschrieben Weg zu einem Fehler: Mit der cfw 0.9.4 heißt es, 'ftrobopy' object has no attribute 'i2c_read' – es scheint, als ob die i2c-Funktionalität erst mit cfw 0.9.5 implementiert wurde (das Manual der Vorversion erwähnt i2c auch noch nicht).
Ja stimmt, die alte Version von ftrobopy hatte noch keinen i2c-support. (Du könntest, falls notwendig, auch neuere ftrobopy-Versionen mit der alten 0.9.4 cfw verwenden, wenn du die ftrobopy.py von Hand umkopierst)
Grk hat geschrieben:
29 Mai 2020, 08:49
Auf dem anderen TXT mit der cfw 0.9.5 heißt es: 'ftrobopy' object has no attribute '_i2c_sock' – i2c-Funktionalität ist hier also implementiert.
Das klingt ganz danach als hättest Du ftrobopy im sog. 'direct'-Modus gestartet. Für diesen Modus habe ich bisher keinen i2c-Support in ftrobopy eingebaut, weil man i2c in diesem Fall auch direkt über das Python-Modul "smbus" verwenden kann.

Wie initialisierst Du ftrobopy in Deinem Script ? Mit 'auto', '<ip-adresse>' oder 'direct' ?
Grk hat geschrieben:
29 Mai 2020, 08:49
Firmware 4.6.6? Muss ich die „darunterliegende“ Firmware des TXT auch updaten, oder wie ist das zu verstehen?
Für die Verwendung der Community-Firmware ist die ältere Version (also die 4.2.4.0, die Du hast) derzeit noch besser geeignet, weil die neueste Version (4.6.6 od. 4.7.) noch ein Problem mit der FT-GUI hat.

Viele Grüße
Torsten

Torsten
Beiträge: 190
Registriert: 29 Jun 2015, 23:08
Wohnort: Gernsheim (Rhein-Main-Region)

Re: ConnectionRefusedError: [Errno 111] bei txt = ftrobopy.ftTXT('192.168.7.2', 65000)

Beitrag von Torsten » 02 Jun 2020, 17:17

Torsten hat geschrieben:
02 Jun 2020, 16:50
Wie initialisierst Du ftrobopy in Deinem Script ? Mit 'auto', '<ip-adresse>' oder 'direct' ?
Sorry, ich sehe gerade, dass Du ja im Titel schreibst, wie Du ftrobopy initialisierst, war mir gar nicht aufgefallen :roll:

Also verwendest Du nicht den 'direct' Modus, sondern den Socket-Modus. In diesem Fall verstehe ich jetzt nicht, wieso der I2C-Socket bei Dir nicht erkannt wird. Kannst Du vielleicht ein minimales Python-Script posten, dass den Fehler reproduziert ?

Viele Grüße
Torsten

Grk
Beiträge: 6
Registriert: 30 Apr 2020, 10:38

Re: ConnectionRefusedError: [Errno 111] bei txt = ftrobopy.ftTXT('192.168.7.2', 65000)

Beitrag von Grk » 22 Jun 2020, 16:50

Hallo Torsten,

zuerst muss ich mich mal wieder für meine späte Reaktion entschuldigen – ich war mit anderen Projekten beschäftigt.
Für diesen Modus habe ich bisher keinen i2c-Support in ftrobopy eingebaut, weil [...]
Wow, also bist du direkt einer der Entwickler der cfw? Ich fühle mich geehrt. :)

Aber zurück zum eigentlichen Problem. Ich habe inzwischen einen Workaround gefunden, mit dem ich erst mal arbeiten kann. Ich verbinde mich mit dem TXT via WLAN. Über das Webinterface kann ich dann die FT-GUI starten und auch wieder zurückkehren, sodass ich ein anderes Programm starten kann. Es flackert zwar, und die beiden Oberflächen überlagern sich, aber ich kann arbeiten. Ich habe mal zwei Screenshots angehängt zur besseren Verdeutlichung. Einer stammt vom TXT mit Version 0.9.5, der andere von der 0.9.4. Das Überlagern ist bei beiden ähnlich.
screenshot.png
screenshot.png (7.04 KiB) 178 mal betrachtet
screenshot2.png
screenshot2.png (6.39 KiB) 178 mal betrachtet
Das starten der FT-GUI geht über den Touchscreen nicht. Da kann ich die FT-GUI nur starten und dann wieder beenden, weil ich sonst nicht zu meinem Ordner mit hochgeladenen Programmen komme.

Zur Fragestellung direct-Modus oder nicht: Ich bin nicht sicher. :) Es sieht aus, als ob ich den direct-Modus verwende:
screenshot3.png
screenshot3.png (6.2 KiB) 178 mal betrachtet
Wie könnte ich denn in den socket-Modus wechseln? Bisher initialisiere ich mit

Code: Alles auswählen

ftrob = ftrobopy.ftrobopy('auto')
Wenn ich

Code: Alles auswählen

ftrob = ftrobopy.ftrobopy('127.0.0.1')
nutze, scheint sich nichts zu ändern, ich bin immer noch im direct-Modus.

Herzlichen Dank,
Micha

Torsten
Beiträge: 190
Registriert: 29 Jun 2015, 23:08
Wohnort: Gernsheim (Rhein-Main-Region)

Re: ConnectionRefusedError: [Errno 111] bei txt = ftrobopy.ftTXT('192.168.7.2', 65000)

Beitrag von Torsten » 28 Jun 2020, 21:59

Hallo Micha,
Grk hat geschrieben:
22 Jun 2020, 16:50
Das starten der FT-GUI geht über den Touchscreen nicht. Da kann ich die FT-GUI nur starten und dann wieder beenden, weil ich sonst nicht zu meinem Ordner mit hochgeladenen Programmen komme.
Ja stimmt, das ist ein Problem. Als Workaround könntest Du die FT-GUI auch aus Deinem Python-Programm heraus starten. z.B. folgendermassen:

Code: Alles auswählen

import time
import subprocess
import ftrobopy
process=subprocess.Popen(['sudo','/opt/fischertechnik/start-txtcontrol','start'])  # FT-GUI aus Python heraus starten
time.sleep(0.5)  # etwas warten, damit die FT-GUI Zeit hat zu starten
ftrob=ftrobopy.ftrobopy('auto') # wenn die FT-GUI läuft, wird sie von ftrobopy automatisch verwendet
.
.
.
process=subprocess.Popen(['sudo','/opt/fischertechnik/start-txtcontrol','stop'])  # FT-GUI aus Python heraus beenden
(Ich kann das jetzt gerade nicht selbst ausprobieren, aber ich denke, das sollte so klappen)

Die FT-GUI wird dabei im Hintergrund gestartet, ohne graphische Oberfläche. Am Ende sollte man dann die FT-GUI auch wieder ordentlich in Python beenden, damit sie nicht evtl. mehrmals gestartet wird.

Eine andere Möglichkeit ist noch das Starten/Stoppen der FT-GUI direkt auf der cfw Kommandozeile (nach dem Einloggen mit ssh. Das Kommando dafür ist:

Code: Alles auswählen

sudo /opt/fischertechnik/start-txtcontrol start

Viele Grüße
Torsten

PS: Falls Du mit der cfw 0.9.4 arbeitest, musst Du für den i2c-Support auch noch eine aktuelle ftrobopy-Version (>1.88) in das Verzeichnis Deiner App kopieren.

Antworten