Suchen jemanden der uns ein kleines Python Script schreibt

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Antworten
Itech
User
Beiträge: 20
Registriert: Freitag 6. Juli 2018, 15:44

Wir suchen jemanden, der uns ein kleines Script schreibt.

Umgebung
Es befinden sich zwei Raspberry Pi 4 mit jeweils einer Kamera in einem 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 das 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öchten wir die Scripte auf den Pi's Remote benutzen.

Ein Script für die Erstellung der Fotos ist vorhanden. Müsste vielleicht noch abgeändert werden.
Anfänge vom Remote Script sind ebenfalls vorhanden.
Schätzen den Aufwand sehr gering ein, da unsere Stärken aber nicht im Programmieren liegen, brauchen wir dich. Bei guter Zusammenarbeit fallen bei Interesse auch noch mehr Aufgaben an.
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Also wenn ich das richtig verstanden habe wollt ihr mit allen Pi gleichzeitig ein Foto machen, aber trotzdem soll jeder Pi das Foto mit den gleichen Daten speichern (Also Produktname, EAN und Gewicht, nur ID unterschiedlich) oder soll jeder Pi eigene Daten bekommen was Produkname, EAN und Gewicht angeht? Wenn auf allen Pi exact die gleichen Daten benötigt werden kann dir das hier vielleicht helfen. Allerdings habe ich da keine "Rückgabe der print Befehle". Ich bin auch eher ein blutiger Anfänger und wahrscheinlich könnte man einiges am Script verbessern, aber vielleicht ist ja was dabei was dir hilft.


Das Script auf den Pi (habe den Code von __blackjack__ und nur minimal etwas geändert, ich hoffe das ist ok):

Code: Alles auswählen

#!/usr/bin/env python3
import random
import string
from pathlib import Path
import sys

from picamera import PiCamera

PICTURE_PATH = Path("/home/pi/pictures")
ID_ALPHABET = string.ascii_uppercase + string.ascii_lowercase + string.digits


def main():
    id_ = "".join(random.choice(ID_ALPHABET) for _ in range(13))
    produktname = sys.argv[1]
    ean = sys.argv[2]
    gewicht = sys.argv[3]

    filename = PICTURE_PATH / "{}-{}-{}-{}g.jpg".format(
        produktname, id_, ean, gewicht
    )
    with PiCamera() as camera:
        for i in range(100):
            input("Ein Photo mit Enter schiessen ")
            camera.capture(str(filename))
            print(i + 1)


if __name__ == "__main__":
    main()
Und das Script für den Windows Rechner um zeitgleich die Python Datei mit den Parametern auf dem Pi aufzurufen:

Code: Alles auswählen

from multiprocessing import Process
import paramiko
import getpass


TARGET_IPS = ["10.21.100.1", "10.21.100.2"]

def connect_and_execute_command(ssh, ip_adress, user, passwort, command_to_execute):
    try:
        ssh.connect(ip_adress, username=user, password=passwort)
        ssh_stdin, ssh_stdout, ssh_stderr = ssh.exec_command(command_to_execute)
        ssh.close()
        print(f"{ip_adress:<13} success")
    except paramiko.ssh_exception.NoValidConnectionsError:
        print(f"{ip_adress:<13} not reachable")
    except TimeoutError:
        print(f"{ip_adress:<13} timeout")

def main():
    user = input("Gib den Benutzer an: ")
    passwort = getpass.getpass(f"Bitte Kennwort für {user} eingeben: ")
    command_to_execute = input("Bitte gib den Befehl ein, der ausgeführt werden soll: ") #hier musst du dann "deine_datei.py PRODUKTNAME EAN GEWICHT" aufrufen.
    target_ips = TARGET_IPS
    print()
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    for ip_adress in target_ips:
        Process(target=connect_and_execute_command, args=(ssh, ip_adress, user, passwort, command_to_execute)).start()
  
if __name__ == "__main__":
    main()
charles_29
User
Beiträge: 10
Registriert: Montag 14. Oktober 2019, 10:20

Hello

i can surely help, lets talk more on this on skype - live:charles_10661 you can also reach me on charles.c@talentsfromindia.com
thanks
charles L
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Habe gerade gemerkt dass ich die Aufgabe falsch verstanden habe, also funktioniert mein Code doch nicht so wie es sollte. Sorry.
Antworten