on({id: "javascript.0.GPIOSteuerung.Ausfuehren", change: "any"}, function (obj) {
var Spielfeldlaenge = getState("javascript.0.GPIOSteuerung.Spielfeldlaenge").val;
var Spielfeldbreite = getState("javascript.0.GPIOSteuerung.Spielfeldbreite").val;
var Torlaenge = getState("javascript.0.GPIOSteuerung.Torlaenge").val;
console.log("führe aus: " + 'python3 /Desktop/iobroker/DA/Main.py ' + Spielfeldlaenge + ' ' + Spielfeldbreite + ' ' + Torlaenge)
exec('python3 /Desktop/iobroker/DA/Main.py ' + Spielfeldlaenge + ' ' + Spielfeldbreite + ' ' + Torlaenge, function (error, stdout, stderr) {
console.log('*** stdout: ' + stdout);
if (error !== null) {
console.log('*** stderr: ' + error);
}
});
});
NEWS
Latest posts made by Fibs
-
RE: Python3 Skript in Iobroker einbinden
-
RE: Python3 Skript in Iobroker einbinden
@fibs said in Python3 Skript in Iobroker einbinden:
import sys
import RPi.GPIO as GPIO
import time
import datetime
import math
Anzahl Argumente prüfen
if len(sys.argv) != 4:
print("*** Wrong number of script arguments.")
print("f*** call example: {sys.argv[0]} <<Spielfeldlaenge>> <<Spielfeldbreite>> <<Torlaenge>>")
quit(-1)
def is_float(element: any) -> bool:
#If you expect None to be passed:
if element is None:
return False
try:
float(element)
return True
except ValueError:
return False
print("Total arguments passed:", len(sys.argv))
in1 = 24
in2 = 23 #Motor links
en1 = 25
in3 = 22
in4 = 27#Motor rechts
en2 = 17
temp1=1
#Reifen außen zu außen 45 cm
#Reifen innen zu innen 35 cm
#Linienbreite 10 cm
GPIO.setmode(GPIO.BCM)
GPIO.setup(in1,GPIO.OUT)
GPIO.setup(in2,GPIO.OUT)
GPIO.setup(en1,GPIO.OUT)
GPIO.output(in1,GPIO.LOW)
GPIO.output(in2,GPIO.LOW)
GPIO.setup(in3,GPIO.OUT)
GPIO.setup(in4,GPIO.OUT)
GPIO.setup(en2,GPIO.OUT)
GPIO.output(in3,GPIO.LOW)
GPIO.output(in4,GPIO.LOW)
p1=GPIO.PWM(en1,1000)
p2=GPIO.PWM(en2,1000)
p1.start(50) #Motor 1 Startgeschwindigkeit
p2.start(50) #Motor 2 Startgeschwindigkeit
l = input("Bitte geben Sie die Spielfeldlaenge in cm ein: ")
l = float(l)
print("Eingegeben wurde: " + str(l))
L = l/11
print("Benötigte Zeit in s: " + str(L)) # Nur für mich Kontrolle
b = input("Bitte geben Sie die Spielfeldbreite in cm ein: ")
b = float(b)
print("Eingegeben wurde: " + str(l))
B = b/11
print("Benötigte Zeit in s: " + str(B))
t = input("Bitte geben Sie die Torlaenge in cm ein: ")
t = float(t)
print("Eingegeben wurde: " + str(l))
T = t/11
s = input("Bitte geben Sie die Entfernung von Torstange zu 16ner Ecke in cm ein: ")
s = float(s)
print("Eingegeben wurde: " + str(s))
S = s/11
print("Benötigte Zeit in s: " + str(S))
Str1 = datetime.timedelta(seconds=L) # Fährt eingegeben Strecke
start = datetime.datetime.now()
while datetime.datetime.now()-start < Str1:
if(temp1==1): GPIO.output(in1,GPIO.HIGH)
GPIO.output(in2,GPIO.LOW)
GPIO.output(in3,GPIO.HIGH)
GPIO.output(in4,GPIO.LOW)
print("Str1") time.sleep(1)
GPIO.cleanup() -
RE: Python3 Skript in Iobroker einbinden
@rrov1 ```
import sys
import RPi.GPIO as GPIO
import time
import datetime
import mathAnzahl Argumente prüfen
if len(sys.argv) != 4:
print("*** Wrong number of script arguments.")
print("f*** call example: {sys.argv[0]} <<Spielfeldlaenge>> <<Spielfeldbreite>> <<Torlaenge>>")
quit(-1)def is_float(element: any) -> bool:
#If you expect None to be passed:
if element is None:
return False
try:
float(element)
return True
except ValueError:
return Falseprint("Total arguments passed:", len(sys.argv))
in1 = 24
in2 = 23 #Motor links
en1 = 25in3 = 22
in4 = 27#Motor rechts
en2 = 17
temp1=1
#Reifen außen zu außen 45 cm
#Reifen innen zu innen 35 cm
#Linienbreite 10 cm
GPIO.setmode(GPIO.BCM)GPIO.setup(in1,GPIO.OUT)
GPIO.setup(in2,GPIO.OUT)
GPIO.setup(en1,GPIO.OUT)
GPIO.output(in1,GPIO.LOW)
GPIO.output(in2,GPIO.LOW)GPIO.setup(in3,GPIO.OUT)
GPIO.setup(in4,GPIO.OUT)
GPIO.setup(en2,GPIO.OUT)
GPIO.output(in3,GPIO.LOW)
GPIO.output(in4,GPIO.LOW)p1=GPIO.PWM(en1,1000)
p2=GPIO.PWM(en2,1000)p1.start(50) #Motor 1 Startgeschwindigkeit
p2.start(50) #Motor 2 Startgeschwindigkeitl = input("Bitte geben Sie die Spielfeldlaenge in cm ein: ")
l = float(l)
print("Eingegeben wurde: " + str(l))
L = l/11
print("Benötigte Zeit in s: " + str(L)) # Nur für mich Kontrolleb = input("Bitte geben Sie die Spielfeldbreite in cm ein: ")
b = float(b)
print("Eingegeben wurde: " + str(l))
B = b/11
print("Benötigte Zeit in s: " + str(B))t = input("Bitte geben Sie die Torlaenge in cm ein: ")
t = float(t)
print("Eingegeben wurde: " + str(l))
T = t/11s = input("Bitte geben Sie die Entfernung von Torstange zu 16ner Ecke in cm ein: ")
s = float(s)
print("Eingegeben wurde: " + str(s))
S = s/11
print("Benötigte Zeit in s: " + str(S))Str1 = datetime.timedelta(seconds=L) # Fährt eingegeben Strecke
start = datetime.datetime.now()while datetime.datetime.now()-start < Str1:
if(temp1==1): GPIO.output(in1,GPIO.HIGH) GPIO.output(in2,GPIO.LOW) #Sprühen GPIO.output(in3,GPIO.HIGH) GPIO.output(in4,GPIO.LOW) print("Str1") time.sleep(1)
GPIO.cleanup()
-
RE: Python3 Skript in Iobroker einbinden
@fibs
Ich habe den Button über Objekte betätigt, das ist e egal oder? -
RE: Python3 Skript in Iobroker einbinden
@rrov1
Ich habe Zeile 10 ausgeklammert und das Programm manuell gestartet. Anders funktionierts noch nicht. -
RE: Python3 Skript in Iobroker einbinden
@rrov1 Aber grundsätzlich sollen die Motoren starten wenn ich den Button in der visu drücke oder muss ich noch irgendwas beachten?
-
RE: Python3 Skript in Iobroker einbinden
@rrov1 Hä warte mal, kann das so überhaupt funktionieren mit den Datenpunkten Spielfeldlaenge, Spielfeldbreite und Torlaenge. Die Variablen in meinem Projekt heißen ja, l,b, und t . Die Namen kommen nur einmal vor und zwar bei der Aufforderung was einzugeben ist.
-
RE: Python3 Skript in Iobroker einbinden
@rrov1 Es ist der gleiche Code den du mir oben genannt hast. Er arbeitet den Code bis Zeile 10 durch.
-
RE: Python3 Skript in Iobroker einbinden
@rrov1
Der Log Bereich sieht soweit gut aus.
aber es bewegt sich nichts. Wenn ich das Programm auf dem rpi direkt starte bekomme ich den Fehler "Process ended with exit code 255" -
RE: Python3 Skript in Iobroker einbinden
@rrov1 Irgendwo habe ich noch einen Fehler, habe alles so wie oben durchgeführt und bekomme auch keine Fehlermeldungen. Hier noch mein Log vllt findest du noch etwas aber irgendwas passt mit dem pfad nicht aber ich weiß nicht was.