RedMatic icon indicating copy to clipboard operation
RedMatic copied to clipboard

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

Open m50434 opened this issue 5 years ago • 36 comments

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.

m50434 avatar Apr 07 '19 05:04 m50434

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.

hobbyquaker avatar Apr 08 '19 17:04 hobbyquaker

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[bot] avatar Apr 22 '19 18:04 no-response[bot]

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?

m50434 avatar May 01 '19 13:05 m50434

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

Matten-Matten avatar May 05 '19 14:05 Matten-Matten

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 avatar May 05 '19 18:05 hobbyquaker

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

hobbyquaker avatar May 05 '19 18:05 hobbyquaker

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.

m50434 avatar May 06 '19 08:05 m50434

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

hobbyquaker avatar May 06 '19 15:05 hobbyquaker

@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, ...)?

hobbyquaker avatar May 12 '19 14:05 hobbyquaker

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

m50434 avatar May 12 '19 15:05 m50434

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 avatar May 12 '19 16:05 hobbyquaker

Danke für deine Umsetzungen. Also entweder bin ich zu blöd, oder... Ich habe jetzt das "node-red-contrib-gpio" über das Package-Managment gestartet und verschiedene Konfigurationen (viele gibts ja eh nicht) ausprobiert und auch dein Beispiel einmal importiert. Ich bekomme nach wie vor den Connection-Error und die Fehlermeldung "Error: Cannot find module 'raspi-io'" :-(

m50434 avatar May 13 '19 16:05 m50434

Bei mir das selbe.

Gruß Matten Matten

Matten-Matten avatar May 13 '19 16:05 Matten-Matten

Ich hab den Fork umbenannt, der heisst nicht mehr node-red-contrib-gpio sondern node-red-contrib-johnny-five und muss im RedMatic UI unter "Pakete" installiert werden.

hobbyquaker avatar May 13 '19 17:05 hobbyquaker

Oh, jetzt fällt mir noch was ein was ich nicht bedacht hatte... Ihr müsstet bevor ihr johnny-five installiert manuell node-red-contrib-gpio deinstallieren. Einfach das Verzeichnis /usr/local/addons/redmatic/lib/node_modules/node-red-contrib-gpio löschen und dann Node-RED neustarten.

hobbyquaker avatar May 13 '19 17:05 hobbyquaker

Auch das hat bei mir leider nicht geholfen...

m50434 avatar May 13 '19 17:05 m50434

node-red-contrib-gpio gelöscht, Node-RED neugestartet, node-red-contrib-johnny-five erfolgreich installiert, Node-RED nochmal neugestartet? Und dann immer noch der gleiche Fehler (Error: Cannot find module 'raspi-io') oder jetzt ein anderes Fehlerbild?

hobbyquaker avatar May 13 '19 19:05 hobbyquaker

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... 😅

hobbyquaker avatar May 13 '19 20:05 hobbyquaker

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

Matten-Matten avatar May 14 '19 06:05 Matten-Matten

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

m50434 avatar May 14 '19 12:05 m50434

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"});
});

m50434 avatar May 14 '19 19:05 m50434

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

hobbyquaker avatar May 14 '19 19:05 hobbyquaker

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.

m50434 avatar May 14 '19 19:05 m50434

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.

hobbyquaker avatar May 14 '19 19:05 hobbyquaker

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?!

m50434 avatar May 14 '19 21:05 m50434

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

Matten-Matten avatar May 14 '19 22:05 Matten-Matten

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.

m50434 avatar May 15 '19 18:05 m50434

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 avatar May 15 '19 19:05 hobbyquaker

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.

hobbyquaker avatar May 15 '19 19:05 hobbyquaker

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 :-)

m50434 avatar May 15 '19 19:05 m50434