NEWS
RPI2.0 einige GPIOs sind mit Raspberry 3 nicht schaltbar !
-
Hallo Forum!
Ich bin neu hier und beeindruckt von der hohen Kompetenz vieler Forenmitglieder.
Auf meine u.g. Fragen habe ich trotz einigen Nächten Forumsuche und Internetrecherchen keine Antworten gefunden.
Da ich eine Hausautomatisierung für eine Alarmanlage suchte und nicht auf Komandozeilenebene programmieren kann, versuche ich meine Glück mit dem IOBroker, da hier das grafische Programmieren mit Node Red und Blockly möglich ist.
Nach einigen Startschwierigkeiten läuft nun IOBroker.
Für mein Projekt "Alarmanlage" benötige ich die GPIOs des Raspberry für Ein- und Ausgänge.
Mir ist aufgefallen, dass ich mit RPI2.0 einige GPIOs nicht steuern kann.
rpi2.0 2018-01-02 23:57:19.209 error Cannot setup port 27 as output: Error: Channel 27 does not map to a GPIO pin
rpi2.0 2018-01-02 23:57:19.209 error Cannot setup port 25 as output: Error: Channel 25 does not map to a GPIO pin
rpi2.0 2018-01-02 23:57:19.209 error Cannot setup port 20 as output: Error: Channel 20 does not map to a GPIO pin
rpi2.0 2018-01-02 23:57:19.209 error Cannot setup port 17 as output: Error: Channel 17 does not map to a GPIO pin
rpi2.0 2018-01-02 23:57:19.209 error Cannot setup port 14 as output: Error: Channel 14 does not map to a GPIO pin
rpi2.0 2018-01-02 23:57:19.209 error Cannot setup port 9 as output: Error: Channel 9 does not map to a GPIO pin
rpi2.0 2018-01-02 23:57:19.208 error Cannot setup port 6 as output: Error: Channel 6 does not map to a GPIO pin
rpi2.0 2018-01-02 23:57:19.208 error Cannot setup port 4 as output: Error: Channel 4 does not map to a GPIO pin
rpi2.0 2018-01-02 23:57:19.207 error Cannot setup port 2 as output: Error: Channel 2 does not map to a GPIO pin
rpi2.0 2018-01-02 23:57:17.526 info starting. Version 0.3.1 in /opt/iobroker/node_modules/iobroker.rpi2, node: v6.12.2
Ist das so richtig ?
Mit Node Red kann ich jedoch diese GPIOs schalten !
Wäre schön wenn ich das Projekt mit Blockly umsetzen kann, weil ich hier mehr Möglichkeiten mit UND- oder Oder-Gliedern habe.
Frage 2:
Wenn ich mit einem HQ-Widget-Bool.Button einen der verbleibenden Ausgänge mit Node Red oder Blockly schalte, wird das Relais auf der 8Kanal-Relais-Karte eingeschaltet wenn der Button in der Vis ausgeschaltet und false ist. Wie bekomme ich das Relais eingeschaltet wenn der Schalter true ist ? Ich benötige diese Funktion wenn ich die Ausgänge abfragen möchte.
LG
emblitz
-
Das ist ein immer wieder mal auftauchendes Problem. Offensichtlich müssen die Ports doch noch "manuell" auf dem RasPi gemapt werden.
Schau dazu mal in diesen Thread http://forum.iobroker.net/viewtopic.php?f=22&t=5418 bzw. benutz die Forensuche, gibt's glaub ich noch paar Threads zu dem Thema.
-
Hallo,
leider endet der Beitrag in Deinem Link nicht für alle Personen erfolgreich.
Ich habe folgend Befehle bei gestopptem IOBroker leider ohne Erfolg ausgeführt:
cd /opt/iobroker/node_modules
rm -r rpi-gpio
cd iobroker.rpi2
rm -r node_modules
npm install –production
Hat jemand eine Idee ?
Habe das Image "ioBroker_Image_RPi_2-3_20171122_stretch" aus dem Downloadbereich auf dem RaspiPi3.
-
Hallo Community,
Ich bin auch neu hier und bin absolut begeistert von IoBroker!
Ich habe genau das selbe Problem, das sich die genannten gpios nicht steuern lassen.
Aber ich brauche zum Glück auch nicht alle das ich jetzt einfach nur die nutze die auch funktionieren.
Und warte bis das Problem gelöst wurde.
Aber meine Frage ist ob es die Möglichkeit gibt das wenn der rpi2.0 Adapter Startet,
das ich definieren kann ob die gpios true oder false beim Start sind?
bei mir sind sie immer false, jedoch benutze ich eine Relaiskarte die bei Ground(also false am gpio) schaltet.
Und demnach ziehen die Relais alle beim Starten erstmal an.
Bis ich dann gpios auf true setze.
Vielen Dank schon mal
-
Hallo,
schön zu hören, dass ich aktuell nicht der Einzige mit diesem GPIO-Problem in Verbindung mit RPI2.0 bin.
Der Fehler besteht bei mir auch nach Update auf die neueste RPI2.0 Version 0.3.2. weiterhin !
Eventuell kann sich ein Spezi unseres Problems annehmen ?
Zu Deiner 2. Frage:
Hast Du Pullup- oder Pulldown-Widerstände an den Eingängen ?
Mit diesen solltest Du immer dividierte Zustände haben.
LG
emblitz
-
Hallo emblitz,
nein ich habe keine Pullup- oder Pulldown-Widerstände an den Eingängen dran.
Ich habe so eine handelsübliche 16Fach Relaiskarte von Ebay.
Jedoch war mir vorher nicht bewusst das diese bei low-Pegel und nicht bei High-Pegel schaltet.
Ich hatte schon einen versuch mit einem Transistor (npn mit Pullup-Wiederstand) vorgenommen
und ja, es hat auch wie erwartet funktioniert und es war invertiert.
Jedoch möchte ich zwischen der Relaiskarte und dem Raspi
nicht noch eine Platine mit 16 Transistoren und zich Widerständen haben
Ich habe gehofft das man das Problem vielleicht Software-technisch lösen kann
LG Marcato
-
Hallo,
bitte beachten: mit den Widerständen werden nur die Eingänge beschaltet um einen definierten Pegel zu bekommen.
Das beschalten mit Widerständen ist nicht für die Ausgänge vorgesehen.
LG
emblitz
-
Hallo Community,
Aber meine Frage ist ob es die Möglichkeit gibt das wenn der rpi2.0 Adapter Startet,
das ich definieren kann ob die gpios true oder false beim Start sind?
bei mir sind sie immer false, jedoch benutze ich eine Relaiskarte die bei Ground(also false am gpio) schaltet.
Und demnach ziehen die Relais alle beim Starten erstmal an.
Bis ich dann gpios auf true setze.
Vielen Dank schon mal `
Über einen kleinen Umweg geht das schon. Du musst ein Script (oder Blockly) auf den Start des RPi2-Adapters triggern und darin dann entsprechend die gewünschten States setzen. Wenn dir das so nicht weiterhilft melde dich nochmal, dann kann ich dir mal ein Beispielscript basteln wenn ich wieder an meinem System bin…
-
Hallo Community,
Aber meine Frage ist ob es die Möglichkeit gibt das wenn der rpi2.0 Adapter Startet,
das ich definieren kann ob die gpios true oder false beim Start sind?
bei mir sind sie immer false, jedoch benutze ich eine Relaiskarte die bei Ground(also false am gpio) schaltet.
Und demnach ziehen die Relais alle beim Starten erstmal an.
Bis ich dann gpios auf true setze.
Vielen Dank schon mal `
Über einen kleinen Umweg geht das schon. Du musst ein Script (oder Blockly) auf den Start des RPi2-Adapters triggern und darin dann entsprechend die gewünschten States setzen. Wenn dir das so nicht weiterhilft melde dich nochmal, dann kann ich dir mal ein Beispielscript basteln wenn ich wieder an meinem System bin… `
Hallo Thisoft,
Ich habe die Tage genau das mal versucht. Bin ein blutiger Anfänger was das Programmieren angeht.
Wenn ich die States setzen möchte mit dem Start der Instanz als Trigger,
sind diese in diesem Moment noch gar nicht Definiert.
somit habe ich über einen Counter die die States verzögert geschaltet.
Als ich die Zeit des Counters so einstellen wollte, das die States sofort wenn sie definiert sind auf True stehen,
musste ich feststellen das ich das nicht hin bekomme. Als wenn das Skript oder die Instanz bei jedem start unterschiedlich lange brauch zum Starten. Entweder kam der Fehler das die States nicht definiert sind oder die States sind trotzdem kurz auf False gestartet und dann kurz danach erst True geworden.
Kann aber auch an meiner programmierfähigkeiten liegen.
code aus Blockly:
var timeout;
on({id: 'system.adapter.rpi2.0.alive', change: "ne"}, function (obj) {
var value = obj.state.val;
var oldValue = obj.oldState.val;
timeout = setTimeout(function () {
setState("rpi2.0.gpio.3.state"/GPIO 3/, true);
setState("rpi2.0.gpio.7.state"/GPIO 7/, true);
setState("rpi2.0.gpio.10.state"/GPIO 10/, true);
setState("rpi2.0.gpio.12.state"/GPIO 12/, true);
setState("rpi2.0.gpio.15.state"/GPIO 15/, true);
setState("rpi2.0.gpio.18.state"/GPIO 18/, true);
setState("rpi2.0.gpio.21.state"/GPIO 21/, true);
setState("rpi2.0.gpio.23.state"/GPIO 23/, true);
}, 4000);
});
-
Naja, dass die States kurz auf False starten und dann erst durch das Script auf True gesetzt werden wirst du kaum vermeiden können - zumindest nicht über direkt in ioBroker. Wenn das auch stört kannst du das höchstens direkt im RasPi lösen indem du ein Python-Script beim Starten ausführst was die Ausgänge setzt. Bin ich aber auch nicht sicher, wahrscheinlich gibt es auch da einen Moment lang False…
Ganz umgehen kannst du das vermutlich wirklich nur mit anderer Hardware ...
-
Hallo,
das selbe Problem wie "Marcato88" mit den GPIO-Ausgängen habe ich auch.
Direkt nach dem Start des Raspberrys und bevor die IoBroker-Scripte laufen, schalten die GPIO-Ausgänge auf "false". Dies hat zur Folge, dass die Relais der Ausgangskarte nach dem Start anziehen und erst wieder nach einigen Sekunden abfallen wenn das IO-Brokerscript läuft.
Bei einer Alarmanlage mit Sirene und Blitzleuchte bedeutet das leider einen Fehlalarm !
Ich wäre ebenfalls sehr an einer Lösung interessiert die <u>GPIO-Ausgänge direkt beim Start des Raspberrys auf "true"</u> zu setzten. damit die Relais nicht anziehen.
Gibt es hierfür schon eine Lösung ?
LG emblitz
-
Wenn's wirklich sicher sein soll, dann IMO nur mittels Hardware- und/oder Logikänderung so dass GPIO=false der "Normalzustand" ist.
Aber vielleicht gibt's ja noch eine Möglichkeit von den Raspi-Experten…
-
Solltet ihr vielleicht mal lesen :
https://www.raspberrypi.org/forums/view … 44&t=24491
Laut deren Aussagen sind beim Booten alle GPIO LOW ausser GPIO0/2, GPIO1/3, GPIO4, GPIO7 / GPIO8. Diese 5 sind HIGH beim booten....
Also die passenden Ausgänge für die wichtigen Funktionen anhand der Angaben auswählen....
und ggf. die Logic von den Programmen anpassen
Grüße
Tom
-
Danke!
Wird sofort ausprobiert.
Ich melde mich zurück…
-
Hallo,
für den Test habe ich <u>alle</u> Scripts in IoBroker gestoppt sowie IoBroker über Putty ebenfalls gestoppt und Iobroker ohne Scripts anschließend wieder gestartet.
Leider sind die o.g. GPIOs bei meinem Raspberry mit "RASPBIAN STRETCH LITE" false, d.h. die Relais der Ausgangskarte ziehen an !
Kann das jemand bestätigen ?
LG emblitz
-
Ich kann das jetzt nicht testen aber hier steht:
> Laut deren Aussagen sind beim Booten alle GPIO LOW ausser GPIO0/2, GPIO1/3, GPIO4, GPIO7 / GPIO8\. Diese 5 sind HIGH beim booten….
Booten meint PI restart.
-
Ah,
danke für die Info.
Ich habe nur einen Restart des IoBrokers gemacht.
Ich probiere es nochmals mit Reboot.
-
So, ich habe den Raspi ohne Scripte neu gestartet und über Putty mit "gpio readall" folgendes Ergebnis erhalten.
filename="Bild_2018_03_14 001.jpg" index="0">~~
TomT schreibt (Vielen Dank TomT):
__Solltet ihr vielleicht mal lesen :
https://www.raspberrypi.org/forums/view … 44&t=24491
Laut deren Aussagen sind beim Booten alle GPIO LOW ausser GPIO0/2, GPIO1/3, GPIO4, GPIO7 / GPIO8. Diese 5 sind HIGH beim booten....
Also die passenden Ausgänge für die wichtigen Funktionen anhand der Angaben auswählen....
und ggf. die Logic von den Programmen anpassen
Grüße
Tom__
Hierzu habe ich eine Verständnisfrage:
In der "gpio readall-Liste" sind andere Pins mit GPIO bezeichnet als tatsächlich mit IoBroker geschaltet werden !
IoBroker steuert die GPIOs mit den Nummern in der Spalte "BCM" (siehe gelbe Pfeile).
Ich habe mal alle GPIOs in der Spalte "Name" markiert, welche in der Spalte V eine "1" haben.
Dies sind mehr als im o.g. Link von TomT zitiert genannt (9 Stück statt der o.g. 5 Stück).
Welche GPIOs sind gemeint ? Die in der Spalte "Name oder "BCM" ?
LG emblitz
-
Hilft dir die Erklärung am Ende dieser Seite:
-
Ich habe den Fehler eingekreist.
Der RPI-Adapter ist vermutl. schuld.
Nachdem ich nun das Relais auf den Ausgang des GPIO7 geschaltet und im Script geändert habe, glimmt nun nach dem Reboot des Raspberrys die LED für des entsprechende Relais auf der Ausgangskarte nicht mehr schwach sondern sie ist ganz aus wenn der RPI-Monitor RPI 2.0 nicht gestartet ist.
Sowie ich den RPI-Monitor als Instanz starte, schaltet dieser die GPIOs innerhalb von IoBroker auf "false" und die Relais ziehen nicht gewollt an !!!
Ich benötige somit ein "true" zum Start des IoBrokers/RPI-Monitors 2.0 bevor die Scripte starten um einen Fehlalarm zu vermeiden.
Wie kann ich im die RPI-Monitor GPIO-Ausgänge zum Start auf zwingend "true" schalten ?
Besteht in den RAW-Einstellungen für das Objekt rpi2.0 > rpi2.0.gpio.7.isInput die Möglichkeit den grundsätzlichen Status des Ausgangs auf "true" zu setzen ?
LG
emblitz