Hallo zusammen,
ich habe hier einen Txt Controller mit installierter Community Firmware. Ich programmiere diesen mit ftrobopy gemäß http://cfw.ftcommunity.de/ftcommunity-T ... ial-3.html. Jetzt würde ich gerne in meinem Python Code auf ein Modul zurückgreifen das nicht zum Standard gehört. Auf dem Pc würde ich jetzt einfach mit pip das Modul installieren und es anschließend importieren. Wie kann ich das mit dem TXT machen? Ich habe bereits probiert mit SSH auf den TXT zu gehen und es dann einfach reglulär mit Pip zu installieren. Leider war das nicht sehr erfolgreich.
Würde mich über eine Antowort freuen.
Danke
Python Modul installieren (Community Firmware)
Forumsregeln
Bitte beachte die Forumsregeln!
Bitte beachte die Forumsregeln!
-
- Beiträge: 2
- Registriert: 17 Okt 2017, 16:05
Python Modul installieren (Community Firmware)
Zuletzt geändert von DanielFischer am 18 Okt 2017, 16:54, insgesamt 1-mal geändert.
Re: Python Modul installieren (Community Firmware)
Hallo Daniel,
um welches Python-Modul handelt es sich denn ? (Vielleicht hat das ja schonmal jemand auf den TXT portiert ... oder Richard nimmt es in das nächste cfw release mit auf)
Gruss
Torsten
um welches Python-Modul handelt es sich denn ? (Vielleicht hat das ja schonmal jemand auf den TXT portiert ... oder Richard nimmt es in das nächste cfw release mit auf)
Gruss
Torsten
-
- Administrator
- Beiträge: 583
- Registriert: 26 Dez 2015, 23:49
- Wohnort: Rhein-Main-Gebiet
Re: Python Modul installieren (Community Firmware)
Hallo Daniel,
erstmal willkommen im Forum, und schön dass Du die CFW benutzt
erstmal willkommen im Forum, und schön dass Du die CFW benutzt
Stimmt die URL (die sagt über Python-Programmierung und ftrobopy nämlich nicht eigentlich nichts), oder meintest Du eher http://cfw.ftcommunity.de/ftcommunity-T ... ng/python/ ?DanielFischer hat geschrieben: ich habe hier einen Txt Controller mit installierter Community Firmware. Ich programmiere diesen mit ftrobopy gemäß http://cfw.ftcommunity.de/ftcommunity-T ... sites.html.
Das kommt drauf an, was für ein Paket das ist. Ein reines Python-Paket (also ohne C-Libraries oder sonst etwas das kompiliert werden muss) sollte eigentlich wie folgt gehen:DanielFischer hat geschrieben: Jetzt würde ich gerne in meinem Python Code auf ein Modul zurückgreifen das nicht zum Standard gehört. Auf dem Pc würde ich jetzt einfach mit pip das Modul installieren und es anschließend importieren. Wie kann ich das mit dem TXT machen? Ich habe bereits probiert mit SSH auf den TXT zu gehen und es dann einfach reglulär mit Pip zu installieren. Leider war das nicht sehr erfolgreich.
- Geh in das Directory, in dem Du auf dem PC deine TXT-App entwickelst
- Installiere das Python Modul da mit
Code: Alles auswählen
pip install --target=. $modulname
- Importiere das Modul ganz normal in Deinem Script.
- Pack alles - inklusive den installierten Python-Modulen - wie unter http://cfw.ftcommunity.de/ftcommunity-T ... ial-1.html beschrieben als TXT-App zusammen und installiere es auf dem TXT.
Das wäre natürlich auch eine MöglichkeitTorsten hat geschrieben:Vielleicht hat das ja schonmal jemand auf den TXT portiert ... oder Richard nimmt es in das nächste cfw release mit auf
-
- Beiträge: 2
- Registriert: 17 Okt 2017, 16:05
Re: Python Modul installieren (Community Firmware)
Hallo,
der Link stimmte nicht. Hab es mal korrigiert.
Mein Ziel ist es mittels Apache Kafkahttps://kafka.apache.org/ Nachrichten an meinen Server zu schicken (z.B. das ein Motor eingeschaltet wurden). Es gibt für Kafka zwei Python Clients: https://github.com/confluentinc/confluent-kafka-python (enthält C-Code) und https://github.com/dpkp/kafka-python (scheint keinen C-Code zu beinhalten).
Hab gerade versucht es zum laufen zu bekommen. Habe also mit pip das Modul in den Ordner gepackt so das ich folgende Struktur erhalte:
icon.png
icon.svg
kafka/
kafka_python-1.3.5.dist-info/
manifest
tut3.py
Mein Code sieht dann wie folgt aus:
Ergebnis ist: Es passiert einfach gar nichts. Das Webinterface sagt das es läuft. Passieren tut nichts. Komme ich eigentlich irgendwie an die Ausgabe des Interpreters?
Danke schonmal für eure Hilfe!
der Link stimmte nicht. Hab es mal korrigiert.
Mein Ziel ist es mittels Apache Kafkahttps://kafka.apache.org/ Nachrichten an meinen Server zu schicken (z.B. das ein Motor eingeschaltet wurden). Es gibt für Kafka zwei Python Clients: https://github.com/confluentinc/confluent-kafka-python (enthält C-Code) und https://github.com/dpkp/kafka-python (scheint keinen C-Code zu beinhalten).
Hab gerade versucht es zum laufen zu bekommen. Habe also mit pip das Modul in den Ordner gepackt so das ich folgende Struktur erhalte:
icon.png
icon.svg
kafka/
kafka_python-1.3.5.dist-info/
manifest
tut3.py
Mein Code sieht dann wie folgt aus:
Code: Alles auswählen
#! /usr/bin/env python3
# -*- coding: utf-8 -*-
#
import sys
import ftrobopy # Import the ftrobopy module
from TxtStyle import *
from kafka import KafkaProducer
import time
class FtcGuiApplication(TxtApplication):
def __init__(self, args):
TxtApplication.__init__(self, args)
# create the empty main window
w = TxtWindow("Tut_3e")
producer = KafkaProducer(bootstrap_servers='192.168.1.100:9092')
txt_ip = os.environ.get('TXT_IP') # try to read TXT_IP environment variable
if txt_ip == None: txt_ip = "localhost" # use localhost otherwise
try:
self.txt = ftrobopy.ftrobopy(txt_ip, 65000) # try to connect to IO server
except:
self.txt = None
vbox = QVBoxLayout()
if not self.txt:
# display error of TXT could no be connected
# error messages is centered and may span
# over several lines
err_msg = QLabel("Error connecting IO server") # create the error message label
err_msg.setWordWrap(True) # allow it to wrap over several lines
err_msg.setAlignment(Qt.AlignCenter) # center it horizontally
vbox.addWidget(err_msg) # attach it to the main output area
else:
# initialization went fine. So the main gui
# is being drawn
button = QPushButton("Toggle O1") # create a button labeled "Toggle O1"
button.clicked.connect(self.on_button_clicked) # connect button to event handler
vbox.addWidget(button) # attach it to the main output area
# configure all TXT outputs to normal mode
M = [ self.txt.C_OUTPUT, self.txt.C_OUTPUT, self.txt.C_OUTPUT, self.txt.C_OUTPUT ]
I = [ (self.txt.C_SWITCH, self.txt.C_DIGITAL ),
(self.txt.C_SWITCH, self.txt.C_DIGITAL ),
(self.txt.C_SWITCH, self.txt.C_DIGITAL ),
(self.txt.C_SWITCH, self.txt.C_DIGITAL ),
(self.txt.C_SWITCH, self.txt.C_DIGITAL ),
(self.txt.C_SWITCH, self.txt.C_DIGITAL ),
(self.txt.C_SWITCH, self.txt.C_DIGITAL ),
(self.txt.C_SWITCH, self.txt.C_DIGITAL ) ]
self.txt.setConfig(M, I)
self.txt.updateConfig()
# initially switch light on
self.light_on = True # remember that the light is on
self.txt.setPwm(0,512) # set PWm to 512 (full on)
self.timer = QTimer(self) # create a timer
self.timer.timeout.connect(self.on_timer) # connect timer to on_timer slot
self.timer.start(100); # fire timer every 100ms (10 hz)
self.button_state = False # assume initually the button is not pressed
w.centralWidget.setLayout(vbox)
w.show()
self.exec_()
def report(self):
self.producer.send('txt1', b"Bin_da")
def toggle_light(self):
self.report()
self.light_on = not self.light_on # change state
if self.light_on: # set output accordingly
self.txt.setPwm(0,512) # PWN=512 means full on
else:
self.txt.setPwm(0,0) # PWM=0 means off
# an event handler for our button (called a "slot" in qt)
# it will be called whenever the user clicks the button
def on_button_clicked(self):
self.toggle_light()
# an event handler for the timer (also a qt slot)
def on_timer(self):
self.report()
# check if input state differs from saved state
if self.button_state != self.txt.getCurrentInput(0):
# change saved state to reflect input state
self.button_state = not self.button_state
# toggle lamp state if button has been pressed
if self.button_state:
self.toggle_light()
if __name__ == "__main__":
FtcGuiApplication(sys.argv)
Ergebnis ist: Es passiert einfach gar nichts. Das Webinterface sagt das es läuft. Passieren tut nichts. Komme ich eigentlich irgendwie an die Ausgabe des Interpreters?
Danke schonmal für eure Hilfe!
Re: Python Modul installieren (Community Firmware)
Hallo Daniel,
1. Einloggen auf dem TXT per ssh und Starten des Programmes auf der Kommandozeile (Setzen des PYTHONPATH nicht vergessen!):
oder
2. Anzeigen der Bildschirmausgabe des Programmes über die Webseite:
(ich bin gerade unterwegs und kann es leider nicht testen ... deshalb ohne Garantie ... auf jeden Fall so oder so ähnlich)
http://192.168.7.2:9000/apps/<ID-Nummer des Programmes>/log.html
Gruss
Torsten
Es gibt mehrere Möglichkeiten die Ausgaben eines Programmes zu erhalten:DanielFischer hat geschrieben:[...]
Ergebnis ist: Es passiert einfach gar nichts. Das Webinterface sagt das es läuft. Passieren tut nichts. Komme ich eigentlich irgendwie an die Ausgabe des Interpreters?
[...]
1. Einloggen auf dem TXT per ssh und Starten des Programmes auf der Kommandozeile (Setzen des PYTHONPATH nicht vergessen!):
Code: Alles auswählen
ssh ftc@192.168.7.2
export PYTHONPATH=/opt/ftc
cd apps/<ID-Nummer des Programmes>
python tut3.py
2. Anzeigen der Bildschirmausgabe des Programmes über die Webseite:
(ich bin gerade unterwegs und kann es leider nicht testen ... deshalb ohne Garantie ... auf jeden Fall so oder so ähnlich)
http://192.168.7.2:9000/apps/<ID-Nummer des Programmes>/log.html
Gruss
Torsten