Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Einbindung von node-red-contrib-gpio für GPIOs #181

Open
m50434 opened this issue Apr 7, 2019 · 36 comments
Open

Einbindung von node-red-contrib-gpio für GPIOs #181

m50434 opened this issue Apr 7, 2019 · 36 comments
Labels

Comments

@m50434
Copy link

m50434 commented Apr 7, 2019

Hi,
könnte man den Node node-red-contrib-gpio für das nächste Update mit aufnehmen?!
Ich würde gerne einzelne GPIOs des Raspberrys über Node-RED ansprechen können.
Eine direkte Installation klappt leider so nicht.

@hobbyquaker
Copy link
Member

Stehen mit RedMatic 4.1.0 als redmatic-pkg zur Verfügung. Installation siehe https://github.com/rdmtc/RedMatic/wiki/Node-Installation#Installation-via-RedMatic-Package-Manager
Bitte gib Bescheid ob es funktioniert.

@no-response
Copy link

no-response bot commented Apr 22, 2019

This issue has been automatically closed because there has been no response to our request for more information from the original author. With only the information that is currently in the issue, we don't have enough information to take action. Please reach out if you have or find the answers we need so that we can investigate further.

@no-response no-response bot closed this as completed Apr 22, 2019
@m50434
Copy link
Author

m50434 commented May 1, 2019

Hi, sorry hatte leider nicht eher Zeit etwas auszuprobieren:
Ich habe das node-red-contrib-gpio über das Package installiert.
Wenn ich nun einen Node aufmache, RaspberryPI als Board auswähle und dann einen (beliebigen) PIN bzw. GPIO angebe, dann bekomme ich die Fehlermeldung "Error: Cannot find module 'raspi-io'".
Fehlt da eventuell noch etwas?

@no-response no-response bot reopened this May 1, 2019
@hobbyquaker hobbyquaker added 🐛bug Something isn't working and removed 🚀enhancement New feature or request labels May 1, 2019
hobbyquaker added a commit that referenced this issue May 5, 2019
hobbyquaker added a commit that referenced this issue May 5, 2019
@Matten-Matten
Copy link

Moin,
Asus Tinkerboard wird nicht Supported oder?
monteslu_node-red-contrib-gpio_ A set of node-red nodes for connecting to johnny-05 05 2019_16_37_45

@hobbyquaker
Copy link
Member

Ich würde da mal ganz blauäugig versuchen ob es trotzdem geht, hege die Hoffnung dass der Zugriff auf die GPIOs genauso wie beim Raspberry erfolgt.

@hobbyquaker
Copy link
Member

@m50434 bitte gib Bescheid ob es mit RedMatic >= 4.4.1 funktioniert.

@m50434
Copy link
Author

m50434 commented May 6, 2019

Hi,
leider nein, die Fehlermeldung "Error: Cannot find module 'raspi-io'" bleibt leider bestehen. Habe es sowohl mit einem GPIO-Input als auch GPIO-Output probiert. In beiden Fällen kommt die Fehlermeldung.
Habe auch das GPIO-Package nochmal über den Paket-Manager deinstalliert und wieder deinstalliert. Leider kein Erfolg.

@hobbyquaker
Copy link
Member

hmpf ;) Ok, gib mir etwas Zeit, ich check das asap.

@hobbyquaker
Copy link
Member

hobbyquaker commented May 12, 2019

@m50434 kurzer Zwischenstand. Ich hab jetzt nach einigem manuellen Gefrickel node-red-contrib-gpio zum laufen gebracht. Bin aber hin- und hergerissen, das Projekt scheint nicht wirklich aktiv maintained zu sein (inkompatible mit raspi-io v10.x, Pull-Request bleibt unbeantwortet der Unterstützung für Eingänge mit Pull-Up mitbringt - was für die Nutzung der Taste des RPI-RF-MOD z.B. notwendig wäre).
Bin am überlegen wie ich damit umgehen soll, sehe im Moment folgende Optionen:

  • node-red-contrib-gpio forken und anpassen/verbessern (bin ich eher nicht motiviert, noch ein weiteres Projekt maintainen kostet einfach Zeit)
  • node-red-contrib-pigpiod mal anschauen. Ist halt weit weniger mächtig als node-red-contrib-gpio, das kann eigtl nur gpio in/out, pwm out und servo out, so Dinge wie I2C, SPI, Analog In werden da nicht unterstützt. Außerdem benötigt es einen laufenden pigpiod, das gefällt mir auch nicht wirklich
  • Den bei Node-RED mitgelieferten "Hardware Core Node" pi-gpio zum Laufen bringen - riesen Aufwand weil der eine Abhängigkeit zu Python mitbringt - das möchte ich eigentlich auch nicht.

Alles 3 nicht wirklich gut, am ehesten praktikabel wäre noch der Fork von node-red-contrib-gpio. Ich denke ich muss weitere Optionen suchen, gib mir etwas Zeit. Was für Usecases schweben Dir denn vor? Reicht Dir einfaches Input/Ouput? Oder brauchst Du mehr (PWM Out, Analog In, I2C, ...)?

@m50434
Copy link
Author

m50434 commented May 12, 2019

Alles klar, dann weiß ich erstmal Bescheid.
Vielen vielen Dank für deine ständigen Bemühungen!!!!

@hobbyquaker
Copy link
Member

hobbyquaker commented May 12, 2019

So, hab mich für Option 1 entschieden, hab node-red-contrib-gpio geforkt: https://github.com/rdmtc/node-red-contrib-johnny-five
Steckt in RedMatic 4.5.0 drin, bzw. kann über das RedMatic Package Management installiert werden.
Achtung: das fängt noch nicht wirklich Fehler ab. Konfiguriert man z.B. einen nicht vorhandenen GPIO crasht Node-RED direkt weg - zum Glück gibt es den Safe-Mode ;-)
Hier ein einfaches Beispiel: Events von der Taste des RPI-RF-MOD:

image

[{"id":"5151b075.60c0e","type":"gpio in","z":"df4b46f.67093b8","name":"RPI-RF-MOD Taste","state":"PULLUP","samplingInterval":"300","pin":"GPIO12","board":"99a20995.e24068","x":220,"y":340,"wires":[["6abcf49f.691a1c"]]},{"id":"6abcf49f.691a1c","type":"debug","z":"df4b46f.67093b8","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":430,"y":340,"wires":[]},{"id":"99a20995.e24068","type":"nodebot","z":"","name":"Raspberry Pi","username":"","password":"","boardType":"raspi-io","serialportName":"","connectionType":"local","mqttServer":"","pubTopic":"","subTopic":"","tcpHost":"","tcpPort":"","sparkId":"","sparkToken":"","beanId":"","impId":"","uuid":"","token":"","sendUuid":""}]

@m50434 Bitte gib Bescheid ob es bei Dir soweit funktioniert.

@hobbyquaker
Copy link
Member

hobbyquaker commented May 13, 2019

Oh, ich glaub ich hab den Fehler gefunden. Da fehlen ein Haufen Dateien in der redmatic-pkg-node-red-contrib-johnny-five.tar.gz, hab das nicht gemerkt bei meinen Tests weil das nur auftrat wenn über Travis ein automatischer Build lief, bei meinen lokalen Builds mit denen ich getestet hab sind alle Dateien drin...
Hoffe das das mit RedMatic 4.6.0 dann erledigt ist, schwere Geburt diese Geschichte... 😅

@Matten-Matten
Copy link

V 4.6.0

Also:

  • altes node-red-contrib-gpio Modul via FileZilla gelöscht
  • node-red-contrib-johnny-five Modul via Redmatic Interface gelöscht
  • Redmatic gestoppt
  • node-red-contrib-johnny-five Modul via Redmatic Interface unter Pakete installiert
  • Redmatic gestartet
  • RPI3 konfiguriert und Implementiert

Node-RED
verbunden.

Jetzt muss ich mir nur noch was bauen das ich die EIN/AUS-gänge mal testen kann...

Vielen Dank hobbyquaker das du allem so energisch nachkommst!
Das ist ja auch alles immer Zeitaufwändig.

Gruß
Matten Matten

@m50434
Copy link
Author

m50434 commented May 14, 2019

Vielen Dank auch von mir. Hier läuft es jetzt auch.
Werde auch mal versuchen, in den nächsten Tagen etwas zu basteln.

@m50434
Copy link
Author

m50434 commented May 14, 2019

Hatte schon Zeit (bzw. konnte nicht abwarten :-P ):

Also, einen GPIO, der ein- und ausgeschaltet werden kann, habe ich auch (wie @Matten-Matten) problemlos hinbekommen.

Für einen GPIO als Eingang war es doch ein bisschen schwieriger. Der GPIO-Knoten funktioniert zwar, allerdings funktioniert hier offensichtlich die Pullup-Einstellung nicht. Dies hatte @hobbyquaker ja schon angemerkt:

(Pull-Request bleibt unbeantwortet der Unterstützung für Eingänge mit Pull-Up mitbringt).

Als Debug-Ausgabe erhält man das ständige (typische) hin- und herspringen von High und Low, sobald irgendetwas an dem entsprechenden Pin hängt.

Mit dem Johnny5-Knoten lässt sicht aber der interne Pullup/Pulldown-Widerstand des Raspberrys erfolgreich aktivieren.
Konnte das hier erfolgreich testen! (sodass ich nun mein Ursprungsszenario, weshalb ich @hobbyquaker überhaupt um die Einbindung von node-red-contrib-gpio gebeten hatte, umsetzen kann: der Raspberry bekommt das Betätigen meiner Haustürklingel mit und tut dann etwas bzw. gibt das an Raspberrymatic weiter usw.)

Also nochmal 1000 Dank an @hobbyquaker für die Mühen !!!!

Hier nochmal oben der Eingangsknoten mit Pullup und unten das Beispiel zum Schalten eines GPIOs:
grafik

Hier der Code für den Testjohnny-Knoten:

var button = new five.Button({
  pin: "GPIO26", 
  isPullup: true
});

button.on("press", function() {
    node.send({payload: "GND connected to GPIO26"});
});

@hobbyquaker
Copy link
Member

hobbyquaker commented May 14, 2019

Den Pull Request hab ich in mein Fork gemerged, mit dem gpio in node kannst dann einfach in der Konfig den Pull-Up aktivieren:

image

@m50434
Copy link
Author

m50434 commented May 14, 2019

Den Pull Request hab ich in mein Fork gemerged, mit dem gpio in node kannst dann einfach in der Konfig den Pull-Up aktivieren:

Das hatte ich gesehen, war mir aber nicht mehr sicher, ob der pullup-Eintrag von dir kam oder schon vor dem fork da war.
Jedenfalls funktioniert bei mir die Pullup-Einstellung nicht: Sobald irgendwas an dem Pin hängt, flattert die Ausgabe zw. 0 und 1.

Daher hatte ich es dann (erfolgreich) mit dem Johnny5-Knoten porbiert.

@hobbyquaker
Copy link
Member

hobbyquaker commented May 14, 2019

Hmm... ok, muss ich mal checken. Bei mir funktioniert es, hab allerdings bisher nur die Taste der RPI-RF-MOD Platine getestet, kann sein dass die noch n'Pull-Up Widerstand mitbringt, hab ich noch nicht geprüft.

@m50434
Copy link
Author

m50434 commented May 14, 2019

Muss nochmal einhaken:
Habe festgestellt, dass bei Benutzung der GPIO-Nodes mein Funkmodul (MOD-RPI-PCB) des Raspberrys nicht mehr funktioniert. Äußert sich dadurch, dass sämtliche Aktoren nicht mehr mit der Rasberrymatic kommunizieren können.
Ein Neustart hilft leider nicht; habe hier ewig rumprobiert. Letztlich half dann nur das Einspielen eines Backups.
Habe das ganze gerade nochmals ausprobiert: Das Installieren des johnny5-packages macht noch keine Probleme. Sobald ich aber einen GPIO-Node in Node-Red implementiere, verabschiedet sich mein Funkmodul (Habe es auch mit verschiedenen GPIOs ausprobiert (12 und 26)).
Irgendwie scheint dabei ja dann auf die PINs zugegriffen werden, auf denen das Funkmodul sitzt. Anders kann ich mir das nicht erklären.
Ich nehme aber fast an, dass du nicht diese Erfahrung gemacht hast, das wäre dir sicherlich aufgefallen. Vielleicht liegt es an deinem anderen Funkmodul?!
@Matten-Matten welches Funkmodul hast du denn im Einsatz und ist dir Ähnliches aufgefallen?!

@Matten-Matten
Copy link

Ich habe das MOD-RPI-PCB auch aber diese gpio Geschichte teste ich auf meinem testpi. Da ist zwar ein Funkmodul drauf aber nix angelernt

@m50434
Copy link
Author

m50434 commented May 15, 2019

Hmm ok, habe es heute nochmal probiert. Gleicher Fehler. Es reicht, dass ich den GPIO-Knoten implementiere...
Offensichtlich bügelt er dann die Einstellungen der PINs über, auf denen das Funkmodul sitzt.

@hobbyquaker
Copy link
Member

hobbyquaker commented May 15, 2019

Kann bestätigen dass es zu Problemen kommt :-(
Hab an meinem Testsystem BidCos-RF, HmIP und HmIPW Geräte dran. Seltsamerweise funktioniert der Funk noch einwandfrei - aber HmIP-Wired steigt aus, die Aktoren melden UNREACH, DRAP konfigurieren geht dann auch nicht mehr.
Vorher/Nachher Vergleich:

# ls /sys/class/gpio/
export       gpio19       gpiochip0    gpiochip100  gpiochip504  unexport
# ls /sys/class/gpio/
export       gpio12       gpio19       gpiochip0    gpiochip100  gpiochip504  unexport

Er hat wie gewünscht nur den gpio12 konfiguriert an dem diese Taste angeschlossen ist (die auch sauber Events liefert).

Vermutung/Spekulation: Johnny-Five/Raspi-io unterstützt ja auch uart, i2c und spi. Vermutlich wird der uart von raspi-io unnötigerweise umkonfiguriert/belegt oder so. Ich werd mal nachforschen bei Gelegenheit

@hobbyquaker hobbyquaker added ✋help wanted Extra attention is needed 🤔to be clarified labels May 15, 2019
@hobbyquaker
Copy link
Member

hobbyquaker commented May 15, 2019

Joa, ich denk das wirds sein.... node-red-contrib-johnny-five instanziert raspi-io mit defaults:https://github.com/rdmtc/node-red-contrib-johnny-five/blob/master/lib/nodebotNode.js#L238

Und die defaults von raspi-io https://github.com/nebrius/raspi-io#API aktivieren bei Pis ohne Bluetooth (also alle außer 3B/3B+/0W) den uart. Was für einen Pi nutzt Du @m50434 ?

Ich versuch mal rauszufinden was genau vom RPI-RF-MOD genutzt wird und dann über excludePins und enable* das rausnehmen, ich gugg mal ob ich am Wochenende dazu komm.

@m50434
Copy link
Author

m50434 commented May 15, 2019

ja, war ja anzunehmen.

Was für einen Pi nutzt Du @m50434 ?

Ich nutze den Pi 3 Modell B+ und das Funkmodul MOD-RPI-PCB

Ich versuch mal rauszufinden was genau vom RPI-RF-MOD genutzt wird und dann über excludePins und enable* das rausnehmen, ich gugg mal ob ich am Wochenende dazu komm.

Das ist großartig. Danke. Ich bleibe natürlich dabei und werde dann austesten :-)

@hobbyquaker
Copy link
Member

hobbyquaker commented May 15, 2019

@m50434 - hat mir jetzt keine Ruhe gelassen, doch direkt ausprobiert. Scheint zu gehen :)

Bis ich ein neues Release mach kannst das recht easy händisch patchen:

Datei /usr/local/addons/redmatic/lib/node_modules/node-red-contrib-johnny-five/lib/nodebotNode.js

Zeile 238:
node.io = boardModule.RaspiIO ? new boardModule.RaspiIO() : new boardModule();

Zeile ersetzen durch:
node.io = new boardModule.RaspiIO({enableSerial: false, excludePins: ['GPIO19', 'GPIO14', 'GPIO15']});

und den Pi mal rebooten.

hobbyquaker added a commit to rdmtc/node-red-contrib-johnny-five that referenced this issue May 15, 2019
@m50434
Copy link
Author

m50434 commented May 15, 2019

@hobbyquaker
habe es gleich ausprobiert, allerdings gab es wieder den Absturz des Funkmoduls.
Habe nochmal nachgeschaut: Ich weiß es jetzt nicht genau, wie du auf die angegebenen GPIOs gekommen bist (insbesondere der GPIO19 ist mir unklar).

Jedensfalls habe ich nun einfach alle GPIOs excluded, die von meinem Funkmodul MOD-RPI-PCB belegt sind: Da es numerisch die ersten 12 Pins sind, habe ich also folgende GPIOs excluded:
node.io = new boardModule.RaspiIO({enableSerial: false, excludePins: ['GPIO2', 'GPIO3', 'GPIO4', 'GPIO14', 'GPIO15', 'GPIO17', 'GPIO18']});

Damit hat jetzt auch die Einbindung eines Knotens geklappt, ohne das das Funkmodul ausgefallen ist 🎉
(und das Beispiel von oben mit dem Button klappt auch)!

@hobbyquaker
Copy link
Member

Das sind die Pins des RPI-RF-MOD die ich genannt hab, sorry für die Verwirrung, hatte nicht mehr dran gedacht dass Du ja das andere Funkmodul nutzt.
Beim MOD-RPI-PCB sind übrigens nur GPIO14 und 15 (uart) und 18 (reset) belegt. GPIO2, 3, 4 und 17 sind nicht beschaltet.

@hobbyquaker hobbyquaker added 🚀enhancement New feature or request and removed ✋help wanted Extra attention is needed 🤔to be clarified 🐛bug Something isn't working labels May 16, 2019
@m50434
Copy link
Author

m50434 commented May 22, 2019

Hi mal wieder,
habe jetzt gerade RedMatic auf 4.7.1 geupdated und in diesem Zuge auch das johnny-five-plugin auf 15.1 geupdated. In dieser Version sind allerdings noch die PINs 14, 15 und 19 excluded.... sollten aber doch 14, 15 und 18 sein.

@hobbyquaker
Copy link
Member

Arbeite zur Zeit an einem kompletten Rewrite der Johnny Five Nodes, da wird das konfigurierbar werden. Denke ist in 1-2 Wochen soweit.

@m50434
Copy link
Author

m50434 commented May 7, 2021

Hi,
grabe mal diesen 2 Jahre alten Thread aus.
Ich wollte mal fragen, ob es zur Ansteuerung der GPIOs über das johnny-five-plugin etwas neues gibt (habe nämlich inzwischen wieder Bedarf, GPIOs mit RedMatic für einen Sensor zu benutzen.
Mein installiertes Paket ist johnny-five 1.0.0-beta2
Wenn ich einen GPIO über das Modul nutzen möchte, bekomme nach dem deployen immer die Fehlermeldung "pigpio error -1 in gpioInitialise"

Gibt es da schon ne Lösung?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Development

No branches or pull requests

3 participants