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: 7
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: 308
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: 7
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: 308
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
Beiträge: 2429
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
https://www.MINTronics.de -- der ftDuino & TX-Pi Shop!

viele Grüße
Peter

Torsten
Beiträge: 308
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
Beiträge: 2429
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
https://www.MINTronics.de -- der ftDuino & TX-Pi Shop!

viele Grüße
Peter

Grk
Beiträge: 7
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: 308
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: 308
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: 7
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) 6961 mal betrachtet
screenshot2.png
screenshot2.png (6.39 KiB) 6961 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) 6961 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: 308
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.

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

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

Beitrag von Grk » 29 Jul 2020, 17:34

Hallo Torsten,

das Starten der FT-GUI aus dem Programmcode heraus war genau die Lösung, die ich brauchte. Ich bin dir wirklich sehr sehr dankbar. :lol: Damit deine Mühe auch irgendwie belohnt wird, würde ich dir gern ein kleines Dankeschön zukommen lassen. Wenn du mir deine Adresse per PM gibst, möchte ich dir gern eine Handvoll Fruchtriegel (Schokolade wäre im Moment blöd ;) ) oder ein paar Gummitierchen oder sowas schicken.

Danke, Micha.

Torsten
Beiträge: 308
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 » 29 Jul 2020, 22:13

Hallo Micha,

dieses Forum ist ja u. a. dafür da, dass man sich gegenseitig bei der Lösung von solchen Problemen hilft :roll:.

Ich weiss Dein Angebot zu schätzen aber ich freue mich einfach mit Dir, dass es jetzt klappt.

(Wenn jedesmal Gummibärchen verteilt würden, wenn jemand hier im Forum etwas gelernt hat, dann würde der Aktienkurs von Haribo bestimmt signifikant steigen ;) :lol:)

Viele Grüße
Torsten

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

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

Beitrag von tintenfisch » 29 Jul 2020, 22:37

Torsten hat geschrieben:
29 Jul 2020, 22:13
[...] würde der Aktienkurs von Haribo bestimmt signifikant steigen [...]
Haribo ist keine AG. ;)

... ich weiß, niemand mag Klugscheißer. :lol:

Viele Grüße
Lars

Mahlzeit
Beiträge: 20
Registriert: 06 Sep 2020, 10:40

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

Beitrag von Mahlzeit » 16 Sep 2020, 11:46

Ich hoffe es ist in Ordnung wenn ich mich hier in den Faden kurz einklinke, ich habe ein Problem, dass da vielleicht anknüpft:
Torsten hat geschrieben:
28 Jun 2020, 21:59
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.
Ich scheine die CFW auf dem o.g. Wege nicht überreden zu können ftrobopy 1.94 zu verwenden, weder online noch offline, obwohl sie mir verspricht sie täte es. Ich schilder mal kurz was ich versucht habe:

Versuch 1:
Wenn ich mit der original FW dein Demo Programm (s.u) abgekürzt laufen lasse und eine Versionsabfrage vorher mache:

Code: Alles auswählen

txt=ftrobopy.ftrobopy('192.168.178.51') 

print("Noch eine schnelle FTROBOPY Versionsabfrage: ", ftrobopy.version())
time.sleep(0.5)
print("Jetzt starten wir I2c")
time.sleep(0.5)

res = txt.i2c_read(0x18, 0x00)
if res[0] == 250:
    print("Found BMX055 Acceleration Sensor at address 0x18")
    txt.i2c_write(0x18, 0x11, 0x00)  # set normal power mode
    txt.i2c_write(0x18, 0x3e, 0x80)  # set fifo stream mode
    txt.i2c_write(0x18, 0x0f, 0x05)  # set g-range to +-4g
    txt.i2c_write(0x18, 0x10, 0x0a)  # set filter to 15.63 Hz

    for i in range(10):
        fifo_status = txt.i2c_read(0x18, 0x0e)[0]
        # temperature=txt.i2c_read(0x18, 0x08)[0]
        if fifo_status > 0:  # and fifo_status < 128:
            res = txt.i2c_read(0x18, 0x3f, data_len=6)
            x, y, z = struct.unpack('<hhh', res)
            print(i, fifo_status, x >> 4, y >> 4, z >> 4)
        # elif fifo_status > 128: # fifo overflow
        #  res=txt.i2c_read(0x18, 0x3f, data_len=6)
        # time.sleep(0.01)
else:
    print("no bmx055 acceleration sensor found at address 0x18")

bekomme ich als Ausgabe:
Connected to TX2013 firmware version 4.6.6
Noch eine schnelle FTROBOPY Versionsabfrage: 1.94 beta
Jetzt starten wir I2c
Found BMX055 Acceleration Sensor at address 0x18
0 21 -50 -38 1009
1 21 -56 -37 1007
2 21 -65 -33 1001
3 21 -58 -36 1000
4 20 -63 -37 1009
5 20 -57 -36 1002
6 20 -60 -41 1004
7 20 -53 -33 1005
8 19 -58 -30 1003
9 19 -75 -1 886

Process finished with exit code 0

Ich vermute mal so soll das auch aussehen. Also scheint alles richtig zu laufen.

Versuch 2:

Alles so wie bei Versuch 1, wieder mit Pycharm aber statt original FW jetzt in der CFW mit laufender FTGUI und gleichem Code wie oben:
(bei mir lokal ist mit pip3 ftrobopy 1.94 beta installiert)

Connected to TX2013 firmware version 4.6.6
Noch eine schnelle FTROBOPY Versionsabfrage: 1.94 beta
Jetzt starten wir I2c
WARNING: ResponseID 0x0 of I2C read command does not match
Traceback (most recent call last):
File "C:/Users/Dennis/PycharmProjects/ftSensortest/hello.py", line 14, in <module>
if res[0] == 250:
TypeError: 'NoneType' object is not subscriptable

Process finished with exit code 1

Ich vermute, dass deutet darauf hin, dass anders als angegeben lokal noch ftrobopy 1.88 verwendet wird oder? res dürfte ja eigentlich jetzt nur deswegen 'none' enthalten weil die Kommunikation über i2c nicht klappt.


Versuch 3:
Gleicher Code, aber jetzt offline mit installierter App, gestartet vom Touchscreen. Verbindung über "127.0.0.1", als Adresse und vorher per SSH die FTGUI gestartet wie hier im Faden erklärt. Im Ordner der App dann den Ordner ftrobopy angelegt (s. Bild). Gleicher Fehler wie bei Versuch 2.

Er meldet auch wieder ftrobopy Version 1.94 beta

Versuch 4:

ftrobopy Ordner gelöscht, ansonsten so wie Versuch 3.
Gleicher Fehler wie Versuch 3, meldet jedoch jetzt ftrobopy 1.88.



Hast du/jemand vielleicht eine Idee was ich falsch mache, bzw. was ich mal versuchen könnte? Daran dass, auf der cfw eine minimal neuere Python Version läuft als auf der ft FW, dürfte es ja eigentlich nicht liegen..?

VG, Dennis

Torsten
Beiträge: 308
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 » 16 Sep 2020, 21:10

Hallo Dennis,
Mahlzeit hat geschrieben:
16 Sep 2020, 11:46
Ich scheine die CFW auf dem o.g. Wege nicht überreden zu können ftrobopy 1.94 zu verwenden, weder online noch offline, obwohl sie mir verspricht sie täte es.

[...]

Connected to TX2013 firmware version 4.6.6
Noch eine schnelle FTROBOPY Versionsabfrage: 1.94 beta
Jetzt starten wir I2c
WARNING: ResponseID 0x0 of I2C read command does not match
Traceback (most recent call last):
File "C:/Users/Dennis/PycharmProjects/ftSensortest/hello.py", line 14, in <module>
if res[0] == 250:
TypeError: 'NoneType' object is not subscriptable

[...]
Ich vermute, dass deutet darauf hin, dass anders als angegeben lokal noch ftrobopy 1.88 verwendet wird oder? res dürfte ja eigentlich jetzt nur deswegen 'none' enthalten weil die Kommunikation über i2c nicht klappt.
Da die Funktion i2c_read() vorhanden war, wurde auch ganz normal die ftrobopy-Version 1.94 verwendet. In der 1.88er existieren die Funktionen i2c_read/write gar nicht und dort wäre schon beim Aufruf der i2c_read()-Funktion ein Fehler aufgetreten.

Mahlzeit hat geschrieben:
16 Sep 2020, 11:46
Versuch 3:
Gleicher Code, aber jetzt offline mit installierter App, gestartet vom Touchscreen. Verbindung über "127.0.0.1", als Adresse und vorher per SSH die FTGUI gestartet wie hier im Faden erklärt. Im Ordner der App dann den Ordner ftrobopy angelegt (s. Bild). Gleicher Fehler wie bei Versuch 2.

Du hast eigentlich alles richtig gemacht und es sollte funktionieren.
Mahlzeit hat geschrieben:
16 Sep 2020, 11:46
Versuch 4:

ftrobopy Ordner gelöscht, ansonsten so wie Versuch 3.
Gleicher Fehler wie Versuch 3, meldet jedoch jetzt ftrobopy 1.88.
Hier hätte jetzt ein anderer Fehler auftreten müssen, da die Version 1.88 die i2c-Befehle gar nicht kennt. Bist Du Dir ganz sicher, dass es so abgelaufen ist ?
Mahlzeit hat geschrieben:
16 Sep 2020, 11:46
Hast du/jemand vielleicht eine Idee was ich falsch mache, bzw. was ich mal versuchen könnte? Daran dass, auf der cfw eine minimal neuere Python Version läuft als auf der ft FW, dürfte es ja eigentlich nicht liegen..?
Welche Python-Version (python2 oder python3) verwendest Du unter der cfw ? Das ist nämlich der einzige Unterschied zwischen der cfw und der original-fw, der mir jetzt so auf Anhieb einfällt:

In der Original-FW startet "python" einen Python3-Interpreter.
In der cfw startet "python" dagegen einen Python2-Interpreter.

Im Prinzip sollte das kein Problem sein, da ftrobopy sowohl unter Python2 als auch unter Python3 läuft. Ich gebe allerdings zu, dass ich die I2C-Funktionalität der Python2-Version nicht ausführlich getestet habe (Python2 ist ja seit Dez. 2019 obsolet).

Könntest Du bitte mal unter der cfw versuchen, Dein script explizit mit "python3" zu starten ? und schauen, ob es damit funktioniert ?

Die Fehlermeldung res[0] sei NoneType deutet auf ein Problem mit dem Typ des Rückgabewertes hin. Das klingt mir ganz nach einem Python2 <--> Python3 Unterschied. Evtl. muss ich ftrobopy dann nochmal nachbessern (deshalb ist die Version 1.94 ja auch noch beta. :-) ).

Viele Grüße
Torsten

Mahlzeit
Beiträge: 20
Registriert: 06 Sep 2020, 10:40

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

Beitrag von Mahlzeit » 16 Sep 2020, 21:40

Hi Torsten,

vielen Dank für deine schnelle Rückmeldung!
Torsten hat geschrieben:
16 Sep 2020, 21:10

Da die Funktion i2c_read() vorhanden war, wurde auch ganz normal die ftrobopy-Version 1.94 verwendet. In der 1.88er existieren die Funktionen i2c_read/write gar nicht und dort wäre schon beim Aufruf der i2c_read()-Funktion ein Fehler aufgetreten.

[...]
Hier hätte jetzt ein anderer Fehler auftreten müssen, da die Version 1.88 die i2c-Befehle gar nicht kennt. Bist Du Dir ganz sicher, dass es so abgelaufen ist ?

Ja, ich bin eigentlich sicher, dass er 1.88 meldet und trotzdem der gleiche Fehler kommt. Habe auch mehrmals getestet. Sicherheitshalber hänge ich aber lieber einen Screenshot vom ftTXT an, nur für den Fall, dass ich mich doch irgendwie verlesen habe.



Ich habe dann auch nochmal 1.88 und 1.94 aus der ssh mit dem Kommando python3 getestet und import sys + print sys.version angefügt.
login as: ftc
$ sudo /opt/fischertechnik/start-txtcontrol start
$ cd /home/ftc/apps/39b47a4b-3ba8-4cc1-bfb4-01fadb74e45e
$ ls
123ftrobopy htmlhelper.py index.py #hier ftrobopy falsch benannt um 1.88 zu erzwingen
console.ini icon.png manifest
hello.py icon.svg textwrapper.py
$ python3 hello.py
Connected to TX2013 firmware version 4.6.6
Noch eine schnelle FTROBOPY Versionsabfrage: 1.88
Python Versionsabfrage 3.7.1 (default, Feb 3 2019, 16:09:47)
[GCC 8.2.1 20180802]
Jetzt starten wir I2c
WARNING: ResponseID 0x0 of I2C read command does not match
Traceback (most recent call last):
File "hello.py", line 14, in <module>
if res[0] == 250:
TypeError: 'NoneType' object is not subscriptable

$ ls
console.ini htmlhelper.py index.py
ftrobopy icon.png manifest #jetzt richtig benannt
hello.py icon.svg textwrapper.py
$ python3 hello.py
Connected to TX2013 firmware version 4.6.6
Noch eine schnelle FTROBOPY Versionsabfrage: 1.94 beta
Python Versionsabfrage 3.7.1 (default, Feb 3 2019, 16:09:47)
[GCC 8.2.1 20180802]
Jetzt starten wir I2c
WARNING: ResponseID 0x0 of I2C read command does not match
Traceback (most recent call last):
File "hello.py", line 14, in <module>
if res[0] == 250:
TypeError: 'NoneType' object is not subscriptable
Also eigentlich alles gleich. Daher kam dann auch mein Verdacht, dass irgendwie die Versionsanzeige "lügen" muss.

Ich habe mal die Version 1.88 auf Github rausgesucht. In Zeile 320 findet man dort aber auch def i2c_read.

https://github.com/ftrobopy/ftrobopy/co ... 81e42338e3


Edit: Ist mir gerade noch eingefallen:
Torsten hat geschrieben:
16 Sep 2020, 21:10
Die Fehlermeldung res[0] sei NoneType deutet auf ein Problem mit dem Typ des Rückgabewertes hin. Das klingt mir ganz nach einem Python2 <--> Python3 Unterschied.
Den Verdacht hatte ich am Anfang auch schon, habe das aber (glaube ich?) ausschließen können:

Ich habe versucht dem nachzugehen indem ich unter der original FT Firmware einfach mal nur:

Code: Alles auswählen

res = txt.i2c_read(0x18, 0x3f)
print (res)
ausgeführt habe um mir mal einen typischen Rohwert von res anzusehen. Res enthält dann irgendeinen längeren Wert mit ein paar Bit. Aber immerhin etwas. Da dies an der Stelle an keine Bedingung geknüpft wird (der Punkt an dem ja bei mir unter der CFW immer den Fehler kommt), konnte ich das dann so auch auf der CFW ausführen. print res gibt dann wortwörtlich als Inhalt "None" aus. Was ja auch in der ftrobopy.py so vorgesehen ist, denn es kommt ja auch immer unter der CFW "ResponseID 0x0 of I2C read command does not match".

Code: Alles auswählen

    if response_id != m_resp_id:
      self.handle_error('WARNING: ResponseID %s of I2C read command does not match' % hex(response_id), None)
      return None
Ich verstehe leider das I2c Protokoll noch nicht so richtig, daher bin ich auch insgesamt ziemlich ratlos.

Hast du vielleicht noch eine Idee was ich mal versuchen könnte?

VG, Dennis
Dateianhänge
ordner3.png
ordner3.png (9.61 KiB) 5806 mal betrachtet

Antworten