RedMatic
RedMatic copied to clipboard
Einbindung von node-red-contrib-gpio für GPIOs
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.
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.
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.
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?
Moin,
Asus Tinkerboard wird nicht Supported oder?
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.
@m50434 bitte gib Bescheid ob es mit RedMatic >= 4.4.1 funktioniert.
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.
hmpf ;) Ok, gib mir etwas Zeit, ich check das asap.
@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, ...)?
Alles klar, dann weiß ich erstmal Bescheid. Vielen vielen Dank für deine ständigen Bemühungen!!!!
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:
[{"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.
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'" :-(
Bei mir das selbe.
Gruß 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.
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.
Auch das hat bei mir leider nicht geholfen...
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?
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... 😅
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
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
Vielen Dank auch von mir. Hier läuft es jetzt auch. Werde auch mal versuchen, in den nächsten Tagen etwas zu basteln.
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:
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"});
});
Den Pull Request hab ich in mein Fork gemerged, mit dem gpio in
node kannst dann einfach in der Konfig den Pull-Up aktivieren:
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.
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.
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?!
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
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.
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
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.
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 :-)