App wird in SSH nicht gestartet

Community-Firmware (cfw), Selbstbaucontroller (TX-Pi, ftduino, usw.), usw.
Forumsregeln
Bitte beachte die Forumsregeln!
Benutzeravatar
uffi
Beiträge: 404
Registriert: 24 Jan 2014, 16:21
Wohnort: München

App wird in SSH nicht gestartet

Beitrag von uffi » 18 Jun 2023, 13:58

Hallo,

ich lasse auf meinem TXT die CFW Version 1.0.2 laufen und habe über WLAN eine App namens video.py hochgeladen (incl. manifest und icon).
Die App bricht nach kurzer Zeit ab, wenn ich sie im GUI starte. Nun versuche ich, per SSH (mit PuTTy) diese App auf dem TXT zu starten, um Fehlermeldungen zu sehen.
Dabei folge ich der Anleitung aus dem Tutorial zur CFW, also:

Apps über SSH starten
Wenn Apps über den Launcher (Startbildschirm) gestartet werden, werden keine Fehlermeldungen angezeigt. Dies kann während der Entwicklung ein Nachteil sein. Du kannst die Apps auch starten, wenn du über SSH (als User “ftc”, kein Passwort) auf dem TXT eingeloggt bist. Verbinde dich zuerst über SSH mit dem TXT (z.B. ssh ftc@192.168.0.12). Du musst auf dem TXT die Verbindung erlauben. In der Remote Shell gibst du ein:

$ export PYTHONPATH=/opt/ftc
$ /opt/ftc/apps/user/191fe5a6-313b-4083-af65-d1ad7fd6d281/test.py

Das hier sehe ich in meinem SSH Fenster:

Code: Alles auswählen

login as: ftc
$ export PYTHONPATH=/opt/ftc
$ /opt/ftc/apps/user/191fe5a6-313b-4083-af65-d1ad7fd6d282/video.py
': No such file or directory
$ cd /opt/ftc/apps/user/
$ ls
191fe5a6-313b-4083-af65-d1ad7fd6d282  37681ea0-dc00-11e6-9598-0800200c9a66
300a6d0c-a13d-4b43-867f-4832cc98aa7c  cb8adf72-f23b-11e6-bc64-92361f002671
3434343-5199-11e6-beb8-9e71128cae7
$ cd 191fe5a6-313b-4083-af65-d1ad7fd6d282
$ ls
icon.png  manifest  video.py
Wieso wird die Datei video.py nicht gefunden, obwohl sie mit ls im Directory angezeigt wird?

Danke für einen Hinweis, was ich falsch mache.

Gruß, uffi

hypnotoad
Beiträge: 121
Registriert: 16 Feb 2019, 12:43
Wohnort: 30559 Hannover
Kontaktdaten:

Re: App wird in SSH nicht gestartet

Beitrag von hypnotoad » 18 Jun 2023, 14:11

Hallo, versuche mal "python3 video.py", nachdem du mit cd in das Verzeichnis gegangen bist. Ich vermute ein problem in video.py.

Benutzeravatar
uffi
Beiträge: 404
Registriert: 24 Jan 2014, 16:21
Wohnort: München

Re: App wird in SSH nicht gestartet

Beitrag von uffi » 18 Jun 2023, 14:28

Danke für den Tipp. Damit kommt folgendes in SSH:

Code: Alles auswählen

$ python3 video.py
Traceback (most recent call last):
  File "/home/ftc/apps/191fe5a6-313b-4083-af65-d1ad7fd6d282/video.py", line 5, in <module>
    from TouchStyle import *
ModuleNotFoundError: No module named 'TouchStyle'
$

Benutzeravatar
uffi
Beiträge: 404
Registriert: 24 Jan 2014, 16:21
Wohnort: München

Re: App wird in SSH nicht gestartet

Beitrag von uffi » 18 Jun 2023, 14:40

Hier noch der python code in video.py:

Code: Alles auswählen

#! /usr/bin/env python3
# -*- coding: utf-8 -*-

import sys
import ftrobopy
import cv2
import time
from TouchStyle import *

class FtcGuiApplication(TouchApplication):
    def __init__(self, args):
        TouchApplication.__init__(self, args)
        # Creates an empty MainWindow
        w = TouchWindow("Test")
        txt = ftrobopy.ftrobopy('localhost', 65000)
        video = cv2.VideoCapture(0)
        time.sleep(2)		
        video.set(3, 426)
        video.set(4, 240)
        res, frame = video.read()

        text = 'OK'  
        if frame == None:
            text = 'None'
        err_msg = QLabel(text)
        err_msg.setWordWrap(True)
        err_msg.setAlignment(Qt.AlignCenter)
        w.setCentralWidget(err_msg)

        w.show()
        self.exec_()        

if __name__ == "__main__":
    FtcGuiApplication(sys.argv)

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

Re: App wird in SSH nicht gestartet

Beitrag von ski7777 » 18 Jun 2023, 15:19

Hast du den export für PYTHONPATH nochmal gemacht beim zweiten Versuch?

Benutzeravatar
uffi
Beiträge: 404
Registriert: 24 Jan 2014, 16:21
Wohnort: München

Re: App wird in SSH nicht gestartet

Beitrag von uffi » 18 Jun 2023, 15:26

anscheinend nich, nun aber:

Code: Alles auswählen

$ pwd
/home/ftc
$ cd /opt/ftc/apps/user/191fe5a6-313b-4083-af65-d1ad7fd6d282
$ ls
icon.png  manifest  video.py
$ export PYTHONPATH=/opt/ftc
$ python3 video.py
qt.qpa.xcb: could not connect to display
qt.qpa.plugin: Could not load the Qt platform plugin "xcb" in "" even though it was found.
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.

Available platform plugins are: minimal, offscreen, vnc, xcb.

Aborted

Benutzeravatar
uffi
Beiträge: 404
Registriert: 24 Jan 2014, 16:21
Wohnort: München

Re: App wird in SSH nicht gestartet

Beitrag von uffi » 18 Jun 2023, 15:29

hab nun noch den Display Befehl ergänzt und kriege diesen output:

Code: Alles auswählen

$ export DISPLAY=:0.0
$ python3 video.py
Connected to  TXT direct firmware version not detected
Traceback (most recent call last):
  File "/home/ftc/apps/191fe5a6-313b-4083-af65-d1ad7fd6d282/video.py", line 34, in <module>
    FtcGuiApplication(sys.argv)
  File "/home/ftc/apps/191fe5a6-313b-4083-af65-d1ad7fd6d282/video.py", line 23, in __init__
    if frame == None:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

hypnotoad
Beiträge: 121
Registriert: 16 Feb 2019, 12:43
Wohnort: 30559 Hannover
Kontaktdaten:

Re: App wird in SSH nicht gestartet

Beitrag von hypnotoad » 18 Jun 2023, 15:59

Hi Uffi, jetzt geht es mit den eigentlichen Python-Befehlen los. Der Vergleich mit "None" wird in Python mit "is" gemacht. "==" geht manchmal auch, aber er ist hier eben doppeldeutig.

Bzgl. der Environment-Variablen: Ich mache hier einen Fix in der FTC, denn das ist einfach nur nervig. Btgl. Python-Programmierung: Es gibt editoren, die "remote execution" erlauben, z.B. Pycharm oder VSCode. Ich verwende das aktuell nicht, aber mir scheinen sie sehr hilfreich zu sein.

Benutzeravatar
uffi
Beiträge: 404
Registriert: 24 Jan 2014, 16:21
Wohnort: München

Re: App wird in SSH nicht gestartet

Beitrag von uffi » 18 Jun 2023, 16:11

Hab den angemeckerten Fehler korrigiert und jetzt startet die App per SSH ohne Fehlermeldung.

Code: Alles auswählen

if frame.all() == None:
            text = 'None'
Es kommt auch ein App-Fenster mit der Message "OK".
Komischerweise bricht die gleiche App sofort ab, wenn sie vom GUI / Launcher gestartet wird.

hypnotoad
Beiträge: 121
Registriert: 16 Feb 2019, 12:43
Wohnort: 30559 Hannover
Kontaktdaten:

Re: App wird in SSH nicht gestartet

Beitrag von hypnotoad » 18 Jun 2023, 16:15

`Frame.all() == None` ist wahrscheinlich nicht, was Du erwartest. Das wäre ein Container, in dem alle Einträge "None" sind. Wenn der Container "None" ist, also kein Bild zurückgeliefert wurde, dann gibt es wahrscheinlich einen Crash, da "None.all()" nicht geht:
AttributeError: 'NoneType' object has no attribute 'all'

hypnotoad
Beiträge: 121
Registriert: 16 Feb 2019, 12:43
Wohnort: 30559 Hannover
Kontaktdaten:

Re: App wird in SSH nicht gestartet

Beitrag von hypnotoad » 18 Jun 2023, 16:17

Wenn die App von der Kommandozeile geht, und aus dem Launcher nicht, dann ist wahrscheinlich die Manifest-Datei nicht ok. Steht etwass in /tmp/launcher.log?

$ cat /tmp/launcher.log

Benutzeravatar
uffi
Beiträge: 404
Registriert: 24 Jan 2014, 16:21
Wohnort: München

Re: App wird in SSH nicht gestartet

Beitrag von uffi » 18 Jun 2023, 16:36

Hab nun den Code gemäß Deinem Ratschlag modifiziert:

Code: Alles auswählen

        if frame is None:
            text = 'None'
Ändert aber momentan nix.

Code: Alles auswählen

 export DISPLAY=:0.0
$ cat /tmp/launcher.log
$
zeigt nix an.

Benutzeravatar
uffi
Beiträge: 404
Registriert: 24 Jan 2014, 16:21
Wohnort: München

Re: App wird in SSH nicht gestartet

Beitrag von uffi » 18 Jun 2023, 16:45

Die manifest Datei schaut so aus:

Code: Alles auswählen

[app]
name: video
category: Tests
author: Dirk U
icon: icon.png
desc: cam life view
exec: video.py
managed: yes
uuid: 191fe5a6-313b-4083-af65-d1ad7fd6d281
version: 1.0
firmware: 1.0.2

hypnotoad
Beiträge: 121
Registriert: 16 Feb 2019, 12:43
Wohnort: 30559 Hannover
Kontaktdaten:

Re: App wird in SSH nicht gestartet

Beitrag von hypnotoad » 18 Jun 2023, 16:47

Die UUID ist nicht korrekt, oder?

PS: Du kannst Dir online welche erstellen, z.B. https://guidgenerator.com/online-guid-generator.aspx

PPS: Nein, ich habe kein photografisches Gedächtnis, mir ist nur aufgefallen, dass die eine UUID mit 1 endet, die andere mit 2. :)

Benutzeravatar
uffi
Beiträge: 404
Registriert: 24 Jan 2014, 16:21
Wohnort: München

Re: App wird in SSH nicht gestartet

Beitrag von uffi » 18 Jun 2023, 17:04

die UUID war vorher ...282 und ist nun ...281, sowohl im manifest als auch im Filesystem.
Ich hab sie geändert, da ich vermutet habe, da könnte eine Checksum drin sein.
...281 ist die UUID von einer App aus dem Tutorial. Diese App hatte ich aber gelöscht

hypnotoad
Beiträge: 121
Registriert: 16 Feb 2019, 12:43
Wohnort: 30559 Hannover
Kontaktdaten:

Re: App wird in SSH nicht gestartet

Beitrag von hypnotoad » 18 Jun 2023, 17:37

Ich würde nochmal beim Tutorial starten und dann Schritt für Schritt das Tutorial durch Deinen Inhalt ersetzen (bis es nicht mehr geht). Dann weisst Du, bei welchem Schritt das Problem anfängt.

Benutzeravatar
uffi
Beiträge: 404
Registriert: 24 Jan 2014, 16:21
Wohnort: München

Re: App wird in SSH nicht gestartet

Beitrag von uffi » 25 Jun 2023, 21:58

Jetzt habe ich noch ein verwunderliches Verhalten meines TXT:
- wenn ich die CFW boote und dann das FT-GUI starte, und ein RoboPro Programm starte wird das RoboPro Programmes sofort wieder beendet (ohne Ausführung des Programm-Ablaufs)
- dasselbe Programm lässt sich nach dem Booten der Original Fischertechnik Firmware problemlos ausführen.

Was stimmt mit meiner CFW Installation nicht???

hypnotoad
Beiträge: 121
Registriert: 16 Feb 2019, 12:43
Wohnort: 30559 Hannover
Kontaktdaten:

Re: App wird in SSH nicht gestartet

Beitrag von hypnotoad » 25 Jun 2023, 22:18

Hallo. Das könnte ein Bug sein. Du meinst ein Robopro-Programm, das zuvor übertragen wurde, richtig? Im online-Modus sollte mit Robopro alles gehen, offline habe ich leider nie getestet.

Benutzeravatar
uffi
Beiträge: 404
Registriert: 24 Jan 2014, 16:21
Wohnort: München

Re: App wird in SSH nicht gestartet

Beitrag von uffi » 26 Jun 2023, 08:11

Hallo hypotoad,

ja, genau. Es handelt sich um ein RoboPro Programm, das zuvor mit der LAN/WLAN Verbindung (an die IP Addresse die die CFW definiert hat) zur Ausführung im Offline-Modus übertragen wurde.

Noch ne Frage zu den geplanten nächsten CFW Releases: wann ist der nächste Release geplant (1.0.3) und wird der bereits das update auf ftrobopy github version 2.0.0 enthalten (mit dem Bugfix für getPower + getTemperatur)?

Danke und Gruß, uffi

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

Re: App wird in SSH nicht gestartet

Beitrag von ski7777 » 26 Jun 2023, 09:53

zu ftrobopy existiert jetzt ein Pull Request. Damit ist das Update dann voraussichtlich im nächsten Release enthalten

Antworten