NEWS
GPIO's Steuern 16chRelais12V über RasPi o. Rock64
-
@DiveDancer hast du mal das von @sborg probiert - kannst du über die objekte unter dem rpi die gpio schalten?
-
Wie schon im Startpost geschrieben,
lassen sich die Relais mit den Einträgen in den Objekten nicht schalten.
Weder mit isinput noch unter state.
Ich kann jeweils true oder false eintragen, einen Schaltvorgang bewirkt das jedoch nicht. -
@DiveDancer gibt den das log etwas her ?
wenn du den rpi mal auf debug bei instanzen schaltest - kommt da irgendetwas
-
Entweder blicke ich den Adapter nicht,
oder es liegt an meinem Relais was eventuell
vom Adapter nicht unterstützt wird.
Es gibr zwei verschiedene Arten von Relais (High oder Low).
Welches ich nutze weiß ich leider nicht.
Nur die wenigsten Händler zeichnen dies aus.Folgendes Verhalten habe ich nun herauskristallisiert!
Stehen in den Einstellungen des rpi2.0 Adapters alle gpio Ausgänge auf aktiv und OUT dann lassen sich die Relais schalten.
out bewirkt das die Relais angezogen werden.
in setzt das Relais zurück den Ruhezustand.
Unter Objekten wird keine Statusänderung angezeigt!
Schalte ich in den Einstellungen (Bild) auch nur einen Port der genutzten Relais (gpio's) von OUT auf IN,
ziehen alle Relais (alle 16) an.Wenn ich nun per Script oder ssh die Relais schalte passiert folgendes:
Der Status lässt sich auch weiterhin nicht über die Objekte steuern.
Die Statusänderung wird unter Objekten angezeigt. Yeah
Das schalten auf in schaltet das Relais für den Bruchteil einer Sekunde auf den Ruhemodus, wird aber augenblicklich wieder angezogen. Den gleichen Status den die Restlichen 15 einfach beibehalten haben. -
hast du mal im forum gesucht: die haben "alle" viele probleme damit z.b.
https://forum.iobroker.net/topic/5054/rpi-2-0-gpios-können-nicht-angesteuert-werden/22
https://forum.iobroker.net/topic/9691/rpi2-0-einige-gpios-sind-mit-raspberry-3-nicht-schaltbar?page=1sorry - aber ich glaube, ich bin da keine hilfe mehr - viel glück
-
@liv-in-sky sagte in GPIO's Steuern 16chRelais12V über RasPi o. Rock64:
@DiveDancer gibt den das log etwas her ?
wenn du den rpi mal auf debug bei instanzen schaltest - kommt da irgendetwas
Nein, ich glaube nicht,
während im Hintergrund ein Lauflicht Script läuft das die Relais der Reihe nach schaltet scheint mir der LOG Eintrag nichts gravierendes zu zeigen.
-
@liv-in-sky sagte in GPIO's Steuern 16chRelais12V über RasPi o. Rock64:
hast du mal im forum gesucht: die haben "alle" viele probleme damit z.b.
https://forum.iobroker.net/topic/5054/rpi-2-0-gpios-können-nicht-angesteuert-werden/22
https://forum.iobroker.net/topic/9691/rpi2-0-einige-gpios-sind-mit-raspberry-3-nicht-schaltbar?page=1sorry - aber ich glaube, ich bin da keine hilfe mehr - viel glück
Ja, recherchiert habe ich.
Deswegen habe ich diesen Thread eröffnet um irgendeinen nutzbaren Weg zu finden.Du hast mir aber schon sehr geholfen.
also Danke schon mal. -
Der Adapter legt kein logisches Verhalten an den Tag.
Ich dachte schon ich könnte jubeln.
Nachdem ich nun alle (16) genutzten gpio's im Adapter von OUT auf IN gestellt hatte,
wurden mit dem Speichern alle Relais in den Ruhezustand versetzt.Mei erstes Script:
Zog nun der Rehe nach ein Relais nach dem anderen an.
Etwas komisch fand ich zwar das dies im ca. Sekunden Takt geschah, obwohl ich doch gar keine Verzögerung eingebaut hatte,.
aber shit happens.Mein zweites Script jedoch was mit dem ersten Identisch ist, bis auf den Zustand der nicht mehr auf auf OUT sondern nun auf IN steuern sollte brachte nicht den gewünschten Erfolg:
Das erste der angezogenen Relais bekommt den Befehl des Lösens und löst. Aber augenblicklich wird das Relais wieder angezogen.
Das ganze wiederholt sich 16 mal. Bis alle Realais wieder angezogen sind statt sich im Ruhezustand zu befinden. -
Drück mal RESET
Also, der Adapter ist schon logisch. Wenn du auf "IN" stellst, will der GPIO Daten haben, sprich von einem angeschlossenem Sensor den Messwert etc. Bei "OUT" schickt der Daten auf dem GPIO heraus, um bspw. ein Relais zu schalten.
Deswegen gibt es auch den Datenpunkt "isInput" (false=Daten schicken, true=Daten empfangen). Unter dem "state" landen dann die empfangenen Messwerte des Sensors.
Also RESET und alles auf Anfang...@DiveDancer sagte in GPIO's Steuern 16chRelais12V über RasPi o. Rock64:
Hier schaltet mein Relais dauerhaft im ein Sekunden Takt.Schalten kann ich also schon mal.
Nur leider kann ich keinen Status abfragen.
Das hatte ja schon mal funktioniert, also machen wir da weiter.
@DiveDancer sagte in GPIO's Steuern 16chRelais12V über RasPi o. Rock64:
Leider sind meine Linux Kenntnisse Mies.
Kein Problem, muss ich halt nur mehr erklären ^^
Zuerst würde mich mal einls -al /sys/class/gpio
interessieren, ob es da xy-GPIO-Unterverzeichnisse gibt. -
Gibt es!
pi@Tijger:/sys/class/gpio $ gpio readall +-----+-----+---------+------+---+---Pi 3B--+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | | | 3.3v | | | 1 || 2 | | | 5v | | | | 2 | 8 | SDA.1 | IN | 1 | 3 || 4 | | | 5v | | | | 3 | 9 | SCL.1 | IN | 1 | 5 || 6 | | | 0v | | | | 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | IN | TxD | 15 | 14 | | | | 0v | | | 9 || 10 | 1 | IN | RxD | 16 | 15 | | 17 | 0 | GPIO. 0 | IN | 1 | 11 || 12 | 1 | IN | GPIO. 1 | 1 | 18 | | 27 | 2 | GPIO. 2 | IN | 1 | 13 || 14 | | | 0v | | | | 22 | 3 | GPIO. 3 | IN | 1 | 15 || 16 | 1 | IN | GPIO. 4 | 4 | 23 | | | | 3.3v | | | 17 || 18 | 1 | IN | GPIO. 5 | 5 | 24 | | 10 | 12 | MOSI | IN | 1 | 19 || 20 | | | 0v | | | | 9 | 13 | MISO | IN | 1 | 21 || 22 | 1 | IN | GPIO. 6 | 6 | 25 | | 11 | 14 | SCLK | IN | 1 | 23 || 24 | 1 | IN | CE0 | 10 | 8 | | | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 | | 0 | 30 | SDA.0 | IN | 1 | 27 || 28 | 1 | IN | SCL.0 | 31 | 1 | | 5 | 21 | GPIO.21 | IN | 0 | 29 || 30 | | | 0v | | | | 6 | 22 | GPIO.22 | IN | 0 | 31 || 32 | 0 | IN | GPIO.26 | 26 | 12 | | 13 | 23 | GPIO.23 | IN | 0 | 33 || 34 | | | 0v | | | | 19 | 24 | GPIO.24 | IN | 0 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 | | 26 | 25 | GPIO.25 | IN | 0 | 37 || 38 | 0 | IN | GPIO.28 | 28 | 20 | | | | 0v | | | 39 || 40 | 0 | IN | GPIO.29 | 29 | 21 | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+---Pi 3B--+---+------+---------+-----+-----+ pi@Tijger:/sys/class/gpio $ dir export gpio11 gpio15 gpio18 gpio22 gpio24 gpio27 gpio4 gpio9 gpiochip100 unexport gpio10 gpio14 gpio17 gpio2 gpio23 gpio25 gpio3 gpio8 gpiochip0 gpiochip504 pi@Tijger:/sys/class/gpio $
Für jeden gpio Port der im Adapter aktiviert wird, kommt eine Datei hinzu.
-
Ups, sorry,
wer lesen kann ist klar im Vorteil
pi@Tijger:/sys/class/gpio $ ls -al /sys/class/gpio insgesamt 0 drwxrwx--- 2 root gpio 0 Jun 15 14:03 . drwxr-xr-x 54 root root 0 Nov 3 2016 .. -rwxrwx--- 1 root gpio 4096 Jun 15 14:03 export lrwxrwxrwx 1 root gpio 0 Jun 15 14:03 gpio10 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio10 lrwxrwxrwx 1 root gpio 0 Jun 15 14:03 gpio11 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio11 lrwxrwxrwx 1 root gpio 0 Jun 15 14:03 gpio14 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio14 lrwxrwxrwx 1 root gpio 0 Jun 15 14:03 gpio15 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio15 lrwxrwxrwx 1 root gpio 0 Jun 15 14:03 gpio17 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio17 lrwxrwxrwx 1 root gpio 0 Jun 15 14:03 gpio18 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio18 lrwxrwxrwx 1 root gpio 0 Jun 15 14:03 gpio2 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio2 lrwxrwxrwx 1 root gpio 0 Jun 15 14:03 gpio22 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio22 lrwxrwxrwx 1 root gpio 0 Jun 15 14:03 gpio23 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio23 lrwxrwxrwx 1 root gpio 0 Jun 15 14:03 gpio24 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio24 lrwxrwxrwx 1 root gpio 0 Jun 15 14:03 gpio25 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio25 lrwxrwxrwx 1 root gpio 0 Jun 15 14:03 gpio27 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio27 lrwxrwxrwx 1 root gpio 0 Jun 15 14:03 gpio3 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio3 lrwxrwxrwx 1 root gpio 0 Jun 15 14:03 gpio4 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio4 lrwxrwxrwx 1 root gpio 0 Jun 15 14:03 gpio8 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio8 lrwxrwxrwx 1 root gpio 0 Jun 15 14:03 gpio9 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio9 lrwxrwxrwx 1 root gpio 0 Jun 12 22:52 gpiochip0 -> ../../devices/platform/soc/3f200000.gpio/gpio/gpiochip0 lrwxrwxrwx 1 root gpio 0 Jun 12 22:52 gpiochip100 -> ../../devices/gpiochip2/gpio/gpiochip100 lrwxrwxrwx 1 root gpio 0 Jun 12 22:52 gpiochip504 -> ../../devices/platform/soc/soc:firmware/soc:firmware:expgpio/gpio/gpiochip504 -rwxrwx--- 1 root gpio 4096 Jun 15 14:02 unexport pi@Tijger:/sys/class/gpio $
-
Macht nix, hatte die nötige Info schon vom vorherigen Post
Ok, dann kann man schon mal das "cd /sys..." wegrationieren.
Ändere mal in dem Blockly aufecho "xx" > /sys/class/gpio/gpio2/direction
Dann sollte sich jetzt das Relais ein-/ausschalten lassen?
Dann hätte ich noch gerne einls -al /sys/class/gpio/gpio2
-
Ohne 'cd '.. schaltet das nicht
lrwxrwxrwx 1 root gpio 0 Jun 12 22:52 gpiochip100 -> ../../devices/gpiochip2/gpio/gpiochip100 lrwxrwxrwx 1 root gpio 0 Jun 12 22:52 gpiochip504 -> ../../devices/platform/soc/soc:firmware/soc:firmware:expgpio/gpio/gpiochip504 -rwxrwx--- 1 root gpio 4096 Jun 15 14:02 unexport pi@Tijger:/sys/class/gpio $ ^C pi@Tijger:/sys/class/gpio $ ls -al /sys/class/gpio/gpio2 lrwxrwxrwx 1 root gpio 0 Jun 15 14:03 /sys/class/gpio/gpio2 -> ../../devices/platform/soc/3f200000.gpio/gpiochip0/gpio/gpio2 pi@Tijger:/sys/class/gpio $
-
Oh man...
einen Test später.
Klar schaltet es...
-
Öhm, ne, nicht nur das cd weg, sondern die ganze Zeile ersetzen, also bei Befehl zB:
echo "in" > /sys/class/gpio/gpio2/direction
Bin jetzt mal ne Stunde abwesend, bessere Hälfte bläst zum Kaffee^^
-
@SBorg sagte in GPIO's Steuern 16chRelais12V über RasPi o. Rock64:
Öhm, ne, nicht nur das cd weg, sondern die ganze Zeile ersetzen, also bei Befehl zB:
echo "in" > /sys/class/gpio/gpio2/direction
Bin jetzt mal ne Stunde abwesend, bessere Hälfte bläst zum Kaffee^^
Kaffeestückchen klingt auch garnicht verkehrt.
-
@SBorg
...die Antwort steht übrigens da oben...https://forum.iobroker.net/post/271613 -
@DiveDancer sagte in GPIO's Steuern 16chRelais12V über RasPi o. Rock64:
Kaffeestückchen klingt...
Erdbeerkuchen mit Schlagsahne
Gut, schalten klappt soweit. Damit hätten wir auch schon eine Schaltanzeige (Erklärung kommt später noch). Gehe ich Recht in der Annahme, dass du vom/über den Broker nur die max. 16 Relais schaltest, also bspw. Relais 12 wird nicht von woanders ein-/ausgeschaltet?
btw.: eben noch schnell gelesen: Node-RED andere Baustelle, aber selbes Problem...
-
Erdbeerkuchen also
Dumm Sau
Kaffee schwarz musste es tun.
DIe eine Relais Karte soll erst der Anfang sein, wenn das funktionieren sollte.
Hab mich schon ein wenig über Schieberegister eingelesen um die Beschränkung der Ports des Pi aufzuheben.Derzeit und Hauptsächlich möchte ich die Relais mit ioBroker Steuern.
Deswegen suche ich gerade nach einem ordentlichen Weg um das zu Bewerkstelligen.
Deswegen auch der zweite Thread.
Dieser Weg über den rpi Adapter wird nämlich aus anderen Berichten mindestens mal das eine Problem machen:
Nachts wird mein Server per Script neugestartet.
Bei jedem Neustart, startet auch der Adapter neu. Und dabei werden alle Relais angezogen.
Auch wenn es schon ein paar Lösungen per Script gibt die diese ungewollte Schaltungsstellung lösen,
muss man dennoch mit mindestens einer Minute rechnen in der die Relais nicht so stehen wie man sie programmiert hat.Da ich z.B auch die Steuerung meiner Markise mit der Karte Plane wäre z.B. ein selbstständiges herausfahren in der Nacht um 3 ein Graus für meine Regierung.
Und ein Ende meiner Markise wenn irgendwann einmal um diese Zeit ein Sturm herrscht.
Bei geplanter Beleuchtung ist es dann wohl eher zu vernachlässigen. Oder als unschön abzutun.Bei dem einen oder anderen Relais Könnte ich mir nachträglich allerdings schon vorstellen per manuellem Schalter und ein paar Schutz und Verpolungsdioden den Schaltkreis vom GPIO Port auch per Hand zu steuern.
P.S.
Alexa soll die Steuerung auch übernehmen.
Aber das sollte über MQTT wohl auch unter iobroker laufen, richtig!?! -
Oki, und wir drücken abermals RESET...
Vollkommen auf dem falschen Dampfer. Hätte ich auch früher drauf kommen können, von wegen "in"/ "out" (klingt komisch zum schalten!?) und "direction"...
Habe mich mal bisserl eingelesen und das ist mal total falsch
Kein Wunder, dass es da bei den Beispielen wild und quer schaltet...Du musst im Adapter alle GPIOs auf "out" stellen.
Im Blockly aufecho "1" > /sys/class/gpio/gpio2/value
ändern.
Eigentlich ist "1" EIN und "0" AUS. Wenn deine Relais-Platine (wie die meisten) allerdings "Low active" ist, ist es genau anders rum.So sollte das Relais jetzt auch (noch) korrekt schalten.
...und ja, wenn es mal rudimentär funktioniert ist es egal ob dann per Node-RED, Alexa, MQTT, what else