Umgebung
Es befinden sich zwei Raspberry Pi 4 mit jeweils einer Kamera in meinem Netzwerk. Auf den beiden Pi's befindet sich ein Python Script, um Fotos über die Kameras aufzunehmen. Außerdem gibt es ein Windows Rechner im gleichen Netzwerk wie die Pi's, der sich per SSH verbindet.
Was ist mein Ziel
Ziel ist es, sich mit dem Windows Rechner per SSH gleichzeitig auf die Pi's zu verbinden und das Script für die Fotos zu starten. Beide Pi's sollen simultan Fotos erstellen.
Es soll auf dem Windows Rechner alle Print Befehle übertragen werden und es soll auch möglich sein einen Input auf dem Win Rechner zu geben. Im Endeffekt möchte ich die Scripte auf den Pi's Remote benutzen.
Mein Problem
Die SSH Verbindung zu den beiden Pi's funktioniert und das Script auf den Pi's wird auch richtig gestartet.
Die Scripte auf den Pi's warten aber auf einen User Input (User Input = Benennung der Fotos). Der Print Befehl für den Input bekomme ich aber nicht zurückgegeben, sodass die Scripte nicht weiterlaufen können und ich suche nach einer Möglichkeit Input Befehle per SSH zu übertragen.
Script auf dem Win Rechner 1 Variante
Code: Alles auswählen
import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
ssh.connect('IP', username='pi', password='raspberry')
except paramiko.SSHException:
print ("Connection Failed")
quit()
stdin,stdout,stderr = ssh.exec_command("python3 camera.py", get_pty=True)
for line in stdout.readlines():
print (line.strip())
###############################
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
try:
ssh.connect('10.0.0.98', username='pi', password='raspberry')
except paramiko.SSHException:
print ("Connection Failed")
quit()
stdin,stdout,stderr = ssh.exec_command("python3 camera.py", get_pty=True)
for line in stdout.readlines():
print (line.strip())
ssh.close()
Code: Alles auswählen
import paramiko
import xlrd
import time
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
Host = '10.0.0.126'
Port = '22'
User = 'pi'
Pass = 'raspberry'
def details(Host, Port, User, Pass):
time.sleep(2)
ssh.connect(Host, Port, User, Pass)
print('connected to ip ', Host)
stdin = ssh.exec_command("python3 camera.py")
remote_conn = ssh.invoke_shell()
print("Interactive SSH session established")
time.sleep(5)
output = remote_conn.recv(10000)
print(output)
output = remote_conn.recv(1000)
remote_conn.send("")
remote_conn.send("")
details(Host, Port, User, Pass)
Code: Alles auswählen
from picamera import PiCamera
import time
from time import sleep
import random
import string
camera = PiCamera()
id = ''.join(random.choice(string.ascii_uppercase + string.ascii_lowercase + string.digits) for _ in range(13))
#print("Bitte den zu scannenden Produktnamen eingeben:")
produktname = input("Bitte den zu scannenden Produktnamen eingeben: ")
print("Bitte, wenn vorhanden, eine EAN Nummer eingeben: ")
#print("EAN:")
ean = input("EAN:")
gewicht = input("Wie viel wiegt der Artikel: ")
i = 0
start = input("Maschine starten mit Enter ")
while i < 100:
variable = "/home/pi/pictures/" + produktname + "-" + id + "-" + ean + "-" + gewicht + "g" + ".jpg"
camera.capture(variable)
i += 1
print(i)
print("Ein Foto wurde aufgenommen.")
wait = input("Den nächsten Durchgang mit Enter starten ")