Python Programm mit PiCtory

Für Themen rund um die Konfigurationsoftware des Revolution Pi
Post Reply
OleLS
Posts: 2
Joined: 25 Jul 2025, 09:03

Python Programm mit PiCtory

Post by OleLS »

Hallo,
ich versuche aktuell ein Andon System zu erstellen, sprich wenn ich auf eine Taste drücke, soll sie Rot, Gelb oder Grün anzeigen. Mein Programm ist in Python geschrieben. Ich habe ein fertiges Bedienfeld und dieses mit meinem RevPi Connect 5 mit DIO Modul verbunden. Jetzt verstehe ich jedoch nicht genau, was ich in PiCtory machen muss, damit sich die Farbe in meinem Programm per Knopfdruck verändert. Ich bin leider relativ neu in der Materie und blicke noch nicht ganz durch.
Dies ist mein Programm als Code:
import tkinter as tk

class MachineFrame(tk.Frame):
def __init__(self, master, machine_id):
super().__init__(master, bd=2, relief="groove", padx=5, pady=5)
self.machine_id = machine_id
self.status = "OK"

# Titel
self.label = tk.Label(self, text=f"Maschine {machine_id}", font=("Arial", 12, "bold"))
self.label.pack(pady=5)

# Status-Anzeige
self.status_label = tk.Label(self, text=f"Status: {self.status}", bg="green", fg="white", width=40, height=3, font=("Arial", 10))
self.status_label.pack(pady=5)

# Button-Gruppe
button_frame = tk.Frame(self)
button_frame.pack()

tk.Button(button_frame, text="OK", bg="green", fg="white", width=8,
command=lambda: self.set_status("OK", "green")).grid(row=0, column=0, padx=2)
tk.Button(button_frame, text="Warnung", bg="yellow", fg="black", width=8,
command=lambda: self.set_status("WARNUNG", "yellow")).grid(row=0, column=1, padx=2)
tk.Button(button_frame, text="Störung", bg="red", fg="white", width=8,
command=lambda: self.set_status("STÖRUNG", "red")).grid(row=0, column=2, padx=2)

def set_status(self, status_text, color):
self.status = status_text
self.status_label.config(text=f"Status: {status_text}", bg=color)


class AndonBoardApp:
def __init__(self, root):
root.title("Andon Board – 16 Maschinen")
self.frames = []

for i in range(16):
frame = MachineFrame(root, i + 1)
frame.grid(row=i // 4, column=i % 4, padx=5, pady=5, sticky="nsew")
self.frames.append(frame)

# Optionale: Fenstergröße anpassen
for i in range(4):
root.columnconfigure(i, weight=1)
root.rowconfigure(i, weight=1)

if __name__ == "__main__":
root = tk.Tk()
root.geometry("1000x700")
app = AndonBoardApp(root)
root.mainloop()
----------------------------------------------------------------
Was muss ich jetzt bei PiCtory genau machen, dass ich mein Programm per Knopfdruck ausführen kann.
Bitte entschuldigt diese für einige simple Frage, aber ich bin noch sehr frisch in diesem Thema und blicke bei PiCtory noch nicht durch.
Gruß Ole
User avatar
RamiGspo
KUNBUS
Posts: 58
Joined: 02 Jun 2022, 23:20

Re: Python Programm mit PiCtory

Post by RamiGspo »

Hallo Ole,

Willkommen ind die RevPi-Welt ;)

PiCtory ist nur für die Hardware-Konfiguration deines RevPi Connect 5 und des DIO-Moduls zuständig. Hier definierst du, wie die Ein- und Ausgänge im System angesprochen werden können.
Für dein Andon-System benötigst du jedoch eine Schnittstelle zwischen den physischen Tastern an deinem Bedienfeld und deinem Python-Programm.

Vermutlich meintest du Node-RED statt PiCtory?
Node-RED ist eine grafische Programmierumgebung, die sich perfekt für solche Aufgaben eignet.
Node-RED kann die Eingänge des DIO-Moduls überwachen.
Bei Tastendruck kann es dein Python-Programm aufrufen oder direkt mit ihm kommunizieren und die Visualisierung kann auch komplett in Node-RED gemacht werden.

Du könntest dein Python-Programm auch direkt erweitern, um die DIO-Eingänge zu lesen. Dafür kannst du revpimodio verwenden:

Code: Select all

import revpimodio2
# RevPi IO-Zugriff in dein bestehendes Programm integrieren

Information über revpimodio findest du hier: https://revpimodio.org/

Also, mit PiCtory du kannst dein DIO-Modul konfigurieren und den Eingängen Namen zuweisen.
Und dann geht es weiter mit Node-RED oder direkte Python-Integration? Da bist du frei...

Beste Grüße und viel Glück!

RamiGspo
Mit freundlichen Grüßen | Best regards | Muchas gracias

Ramiro Gsponer.
Post Reply