PIFace Digital 2 unter Buster NodeRed IObroker

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo Leute,

    Gruß an den Admin, falls ich hier falsch bin und dieses Thema wo anders besser rein passt, bitte verschieben.

    ich bin gerade etwas am Verzweifeln.

    Ich versuche jetzt schon seit knapp einen Jahr mein RPi4 / PIFACE Digital2 System zum Laufen zu bringen.

    Und irgendwie bin ich auf externe Hilfe angewiesen, da ich mit programmieren an sich nicht viel am Hut habe.

    Ich bin jetzt kein DAU aber über projekte andere in GITHUB traue ich mich nicht.

    Meine Stärken liegen eher auf der Hardware und elektro/mechanischer Seite.

    Ich habe folgendes System.

    PI (2,3,4) mit RaspiOS (Buster), NPM V.10 (V.12), Piface Digital2 (4 Stück Adressencodiert über PIFaceRack)

    Als Software nutze ich IOBroker bzw das bereits integrierte NODERED.

    Ich habe ein System welches bereits seit Jahren stabil läuft jedoch ist das ein PI3 mit Jessy und NPM/Node 6

    Da jedoch Buster NPM/Node 10 fordert steckte anfangs hier mein Problem...

    Dann habe ich auf GITHUB ein ISSUE geöffnet bei dem Programm/Ersteller des node-pifacedigital

    Hier der Link GitHub Issue

    Als sich hier Tagelang keiner gemeldet hat, habe ich den Ersteller direkt kontaktiert.

    Dieser war sehr freundlich und war auch überrascht dass sein Code für so viele andere Anwendungen die Basis ist.

    Er hat dann den Code geändert damit ich ihn auch in NPM/Node 10/12 installieren kann.

    Es gab zwar noch Probleme beim Installieren, jedoch habe ich diese wie im ISSUE beschrieben umgehen können.

    Ich vermute der aktuelle Stand ist noch nciht im GITHUB freigegeben.

    Leider hat sich seit dem auch der Ersteller nichtmehr bei mir gemeldet. Leider!

    Sowiet so gut. Es lies sich installieren und auch in IOBROKER bzw. NODERED starten und konfigurieren.

    Nun hatte ich aber noch ein Problem...

    Irgendwie hat es das node-pifacedigital bei der umprogrammierung zerbröselt oder irgend eine Neuerung passt nicht zum alten

    Code. Denn (Wie ihr auch in der ISSUE lesen könnt) regieren die Eingänge nicht so wie sie konfiguriert sind.

    Also die Eingänge werden wohl irgendiw erkannt, aber er werden nicht die Ausgänge angesteuert wie ich es programmiert habe, sondern es kommen immer

    ALLE Ausgänge auf einmal.

    Ich bin sozusagen auf der Suche nach jemanden, der sich das mal ansehen kann.

    Vielleicht kann mich auch mal jemand per PN anschreiben.

    Ich werde mich bei demjenigen auch erkenntlich zeigen, in welcher Form auch immer, das kann man absprechen.

    Herzlichen Dank für Euere ZEit zum lesen.

    grüße Tobi

  • Hallo verehrter Admin.

    Das ist jetzt nicht böse gemeint, aber ich denke meinen Beitrag ins Hausautomation zu verschieben ist meines Erachtens nicht Ziel führend. Klar habe ich iobroker geschrieben, aber es währe wohl besser in Hardware oder so aufgehoben...

    Hier geht es im wichtigsten um eine "Code" Angelegenheit um eine Hardware zum laufen zu bringen...

    Danke für deine Hilfe.

    • Offizieller Beitrag

    Das ist der springende Punkt. NodeRed, IObroker und PIFACE Digital sind typische Schlagwörter, die im Bereich der Heimautomation zu finden sind. Wenn jemand danch sucht, dann am ehesten in diesem Bereich hier und "Code" ist Software.

    Ist auch nicht böse gemeint, ich denke fast immer genauer darüber nach, wohin ein Thema am besten passt. ;)

  • Hi.

    Ja, ich habe übersehen das es Software/Hausautomation ist und ich dachte es ist in einem eigenen Hausautomation Bereich.

    Danke nochmal...

    Hast du vielleicht noch einen Tipp für mich was ich tun kann?

    Grüße!

  • Hi, RS_Tobi;

    Leider habe Ich keine Ahnung von IOBroker oder NODERED.

    Aber vielleicht kann man ja mal Ausschlussdiagnostik betreiben...

    Also:

    1: Wie sieht es denn aus, wenn Du statt des Racks nur EIN PiFace anschließt?

    (Vielleicht liegt es ja an der fehlenden Trennung der Adressen Rack -> Port des Racks)

    2: Da Du ja als Basis RaspiOS hast: kannst Du das PiFace auch ohne IOBroker/NODERED ansprechen?

    (Python-Scripte über Pifacedigitalio...)

    Habe auch ein PiFace an einem Model B Rev2 laufen. Vor ziemlich langer Zeit auf Buster upgedated und damals auch ziemliche Probleme gehabt, es an's Laufen zu bekommen. Leider ist die Dokumentation und der Support des Piface unter aller XXX; die offiziellen Seiten liefern selbst schon falsche Angaben.

    Also Ich habe damals händisch die PiFace-Software über pip3 installiert, musste aber auch noch eine Änderung in einer Datei "spi.py" eintragen, die darüberhinaus auch nicht in dem eigentlich angegebenen Pfad steckte...

    Eventuell liegen die Entwickler deiner Software da auch noch etwas daneben?

    Alles nur geraten!

    Grüße;

    rasray

  • Hallo rasray,

    Danke, du bist mal seit langen wieder jemand der sagt er hat auch ein piface.

    Und dann läuft er auch mit Buster!

    Deine Frage bzw deine Aussage hat mich jetzt etwas stutzig gemacht! Ich habe die Möglichkeit bisher noch nicht in Betracht gezogen dass es evtl an Buster liegen kann, dass mein piface "Mist" macht...

    Bisher war ich mir zu 100% sicher dass es an dem Code von tualo node-pifacedigital liegt...

    Also an iobroker und node Red möchte ich jetzt Mal nicht sagen dass es liegt.

    Wenn du iobroker nicht kennst, hast du in meinen Augen in Sachen IOT echt was verpasst.

    Ich sage generell nicht Hausautomation sondern IOT. Denn man kann es für so viel nutzen.

    Etwas zu visualisieren und den piface z.b. etwas ausführen lassen wenn bestimmte Situationen erfüllt sind.

    Und das ganze noch so vielseitig... JavaScript, coffeeScript, blocky, nodered flows, könntest du alles miteinander verbinden. Hunderte Geräte können miteinander kommunizieren.

    Ok... Werbung beiseite...

    Zum Thema...

    Also auf die Idee mit dem pofacedigitalio bin ich bisher noch nicht gekommen... Wenn ich eine Anleitung finde kann ich das mal testen.

    Hast du eine gute?

    Aber du hast Recht, das ist sinnvoll zu testen.

    Jedoch würde mir das wohl nicht viel helfen, denn dann müsste wieder etwas programmiert ober umgeschrieben werden, und da tue ich mich schwer.

    Also Python Scripts umgebaut und aus mehreren Schnipsel einen zusammen gebaut, der dann gemacht hat was ich wollte, soetwas habe ich schon gemacht, aber ich habe das nicht gelernt und tu mich deshalb schwer.

    Und am Rack liegt's nicht, aktuell ist das piface direkt drauf...

    Danke für deine Hilfe bei meinen Problem.

    Aber vielleicht hilft es dir mein Problem zu verstehen, wenn du dir oben in den Link Mal mein issue durchliest.

  • Moin, RS_Tobi,

    Klar sind solche All-in-One-Lösungen super. Aber "damals" wollte Ich keine Riesenprojekte mit allem drum und dran installieren, bei denen Ich dann nicht weiß, was dadrin passiert. Blöderweise dachte Ich, dieses PiFace würde es mir mit den Schraub-Anschlüssen und den beiden Relaiseinfacher machen. "Damals" hat der Hersteller auch aktuelle Software und Beispiele geliefert. Seitdem kümmert er sich aber nicht mehr um diesen Teil.

    Wie auch immer; Ich habe so nach und nach meinen eigenen Kram mit Python-Scripten, Webserver, PHP-Seiten zum Anzeigen und Steuern, RRD-Datenbank zum Auswerten und Diagramme-Erzeugen stümperhaft zusammengedengelt -erstaunlicherweise funktioniert es irgendwie :^^:

    Jedenfalls ruft bei mir python die Befehle auf, die das PiFace dann ausführt. Und so bekomme Ich auch Fehlermeldungen, wenn etwas vermurkst ist. (-Wie sieht das jetzt bei deinem System aus, spuckt das auch eine Logfile oder sowas aus?)

    Ich würde jetzt jedenfalls nicht sagen, dass das Problem an Buster liegt, sondern vielleicht eher daran, dass die PiFace-Bibliotheken oder eben dein tualo node-pifacedigital nicht daran angepasst wurden.

    Also wäre meine Idee, erst einmal möglichst direkt das Rack anzusprechen. So würde man auch vielleicht auch sehen, ob durch dein Programm diese Dateien installiert worden sind.

    Okay, also irgendjemand kümmer sich noch ansatzweise um diesen github:

    pifacedigitalio/README.md at master · piface/pifacedigitalio
    The PiFace Digital input/output module. Contribute to piface/pifacedigitalio development by creating an account on GitHub.
    github.com

    Vielleicht wurde also die Grundinstallation inzwischen angepasst (Wie gesagt musste Ich beim Wechsel auf Buster noch eine Datei manuell ändern - Der Rest der Dateien des Projekts ist allerdings total veraltet)

    Wie beschrieben zuerst System aktualisieren

    sudo apt-get update

    sudo apt-get upgrade

    Dann schauen, ob SPI aktiviert ist (Müsste ja aber bei Dir der Fall sein, es tut sich ja was beim Ansteuern)

    sudo raspi-config

    Dann pip3 installieren, falls noch nicht geschehen:

    sudo apt install python3-pip

    Und jetzt käme die Installation der PiFace-Komponenten, hier wird es also interessant: Sind die bei Dir schon installiert gewesen?

    sudo pip3 install pifacecommon

    sudo pip3 install pifacedigitalio

    Wenn das gelaufen ist, vielleicht zur Sicherheit einmal das System Neustarten:

    sudo reboot

    Anschließend Terminal wieder öffnen und python starten

    python3

    Die folgenden Befehle sollten jetzt etwas bewirken, also Vorsicht, falls an Deinen Anschlüssen aktuell etwas verbunden ist -und immer nur einen Befehl eingeben:

    import pifacedigitalio

    pfd = pifacedigitalio.PiFaceDigital()

    Der nächste Befehl sollte das erste Relais (Start der Bezeichnungen bei 0) auf dem ersten Board schalten:

    pfd.relays[0].value = 1

    (Falls das nicht klappt, Meldung kopieren und rückmelden, vielleicht muss hier dein Board erst initiiert werden)

    Wieder ausschalten:

    pfd.relays[0].value = 0

    Die anderen Ausgänge heißen "leds", um den zweiten schaltbaren Ausgang (Nummer 1)einzuschalten:

    pfd.leds[1].turn_on()

    wieder aus:

    pfd.leds[1].turn_off()

    Mal gespannt, ob sich so schon mal was bei Dir tut.

    rasray

  • Guten Morgen!

    Danke für deine ausführliche Antwort.

    Mir hätte ein Link gereicht. Ich bin zwar nicht recht aktiv in den Foren, aber ein aktiver Leser.

    Ich habe gleich heute früh danach gegoogelt und schon eine ähnliche Antwort gefunden.

    Es sind wohl in den neueren OS die pofacedigitalio usw. nichtmehr installiert.

    Jedoch muss ich sagen, das habe ich bisher auch noch nicht gebraucht.

    Die Platine lief über Stretch und Jessie auch.

    Und da nutzte ich nur den node von tualo.

    Zu deiner Frage oben... Es läuft alles so wie es laufen soll über Python.

    Ich habe deine Anleitung noch mal eins zu eins durchgegangen und alles hat funktioniert.

    Somit bin ich wohl meine Überzeugung wieder ein Stück näher, dass es an dem Node liegt.

    Aber ich kenne keinen, der sich den Code mal ansehen kann. Oder mir das erklären kann.

    Wie gesagt, ich wollte vor meiner Mechatroniker Lehre eigentlich in die IT Schiene, aber da haben sie mich nicht genommen...

    Hast du dir das issue mal gelesen?

    Verstehst du die Fehlfunktion?

    Grüße und Danke für die Hilfe.

    Tobi

  • Okay, also mal kurz zusammenfassen:

    1. Der gleiche Aufbau hat unter Stretch und Jessi funktioniert?

    2. Dann hast Du ein Update auf Buster gemacht? Oder eine komplette Neuinstallation?

    3. Und jetzt hast Du den Effekt, dass beim Schalten eines Ausgangs alle Ausgänge des ersten Boards geschaltet werden?

    4. Meine Zeilen haben dagegen genau den gewünschten Ausgang geschaltet?

    Ich tippe ja auch darauf, dass Node den Befehl quasi nur für ein Board des Racks ausgibt, auf die Schnelle habe Ich eben mal in den Code reingesehen und finde keinen Befehl für "Board-Nummer". Würde ja aber keinen Sinn machen, wenn es früher mit dieser Software funktioniert hat... :conf:

  • Hi..

    Eigentlich sieht es genauso aus wie du gerade eben festgestellt hast.

    Die alten Installationen waren eben immer alle mit Node/NPM Version 4 oder 6.

    Ich vermute, wenn buster nicht Node/NPM10 gefordert hätte, und ich Node/npm 6 weiterhin nutzen hätte können dass ich keine Probleme gehabt hätte.

    Tualo hat mir ja vor Monaten auch dankenswerterweise den Code um geschrieben dass ich auch Node/NPM 10 und vielleicht sogar Node/NPM 12 nutzen kann.

    Leider kann ich seitdem her den Code nicht mehr aus git-hub wie beschrieben installieren sondern muss den Umweg nehmen den ich da geschrieben habe.

    Dann klappt die Installation und nach der Installation ist aber die Funktion nicht mehr dieselbe wie sie vorher gewesen ist.

    Aber, es werden die Nodes in nodeRed angelegt und installiert.

    Ich versuche heute abend ein paar Screenshots zu machen und vielleicht ein paar Bilder mit hochzuladen. Dass du die Funktion oder die fehlfunktion besser verstehen kannst.

    Und ja, ich kann auch die Adressen der Boards auswählen und das funktioniert auch wenn ich das Board umjumpere...

    Tobi

  • Ich habe jetzt mal kurz in die readme-Datei von node-pifacedigital reingeschaut:

    GitHub - tualo/node-pifacedigital: library and command line tool for pifacedigital
    library and command line tool for pifacedigital. Contribute to tualo/node-pifacedigital development by creating an account on GitHub.
    github.com

    Dort ist ja zum Beispiel Folgendes zu finden:

    Zitat

    Setting output value:

    Code
    pifacedigital --type set --pin 1 --value 1

    Dies wäre also wohl der Kommandozeilenbefehl für node-pfd, um den Pin 1 einzuschalten.

    -->Schon mal getestet?

    Die Frage bleibt: Wie gebe Ich dem nun den Parameter für die Board-Nummer mit? (Ich würde erwarten, dass mit dem obigen Befehl per Default das erste Board angesprochen wird).

    Ein bisschen tiefer kommt dann Folgendes:

    Zitat

    Constructor

    The constructor of PIFaceDigital takes two arguments. HW_ADDR the address of your board (setted via jumper) and the optional closeOnExit if true all output pins will reset to 0 if the node process receives the exit signal.

    Code
    var PIFD = require('node-pifacedigital');
    var pi = new PIFD.PIFaceDigital(0,true);

    ...und da hört meine Interpretationsgabe dann auf. In diesem "Constructor" wird anscheinend die Board-Nummer als HW_ADDR zugewiesen.

    Jetzt also der verzweifelte Hilferuf an die Software-Götter in diesem Forum: Wird hier der Name "pi" dem ersten Board (=0) zugeordnet und das "true" bedeutet mit der Option "CloseOnExit"?

  • Hallo,

    habe mir gedacht, ich versuche das Problem etwas besser zu beschreiben.

    Bin jetzt am PC und kann besser arbeiten.

    Das hier ist mein Flow in NodeRed, das ist in etwa vergleichbar wie FUP bei Siemens LOGO! (in etwa)

    Und hier habe ich "easy" ohne viel Programmieren nur das zusammengestöpselt wie ich es für diesen Test brauche.

    Einfach EINGANG1 auf AUSGANG1 (2-2,3-3) beim PiFace.

    Hier kann man noch noch sehr viel mehr machen, kann z.B. komplett Twitter nach #raspberrypi durchsuchen lassen und

    jedes mal wenn es auf twitter geschrieben wird soll bei mir das garagentor auf und zu fahren.

    (ja ist schon bescheuert aber theoretisch würde das so gehen :) )

    Wenn ich nun den den node-pifacedigital installiere, wird bei mir in der liste der auszuwählenden nodes diese beiden icons dazu installiert.

    diese kann ich nun per drag'n drop einfach reinziehen und mit irgendwas verknüpfen.

    Wenn ich diese Nodes öffne sieht deren Menü so aus.

    Eingang

    Ausgang

    Und wie hier zu sehen ist kann ich sowohl die HARDWARE ADRESSE einstellen als auch deren EIN/AUSGANG.

    Zusammen mit einen PIRack kann ich dann wunderbar 32 Eingänge und 32 Ausgänge (davon 8St. Relais)

    Und zack habe ich eine I/O Anlage für ca. 100€ (wenn man sich das Zeug gebraucht kauft)

    WENN ES FUNKTIONIEREN WÜRDE!

    auf dem DEBUG MODUS kann man sehen was passiert.

    Ich habe EINGANG 1,2,3, aktiviert und jeden jeweils mit einen Ausgang verbunden.

    Nun passiert folgendes:

    Ich drücke

    EINGANG1

    EINGANG2

    EINGANG3

    das ist der LOG

    Wie man hier am Zeitstempel sieht haben ALLE DREI EINGÄNGE auf das drücken des EINGANG1

    ausgelöst aber keiner auf das drücken von EINGANG2 oder 3.

    Und das ist mein Problem.

    Irgend etwas muss seit der Umstellung vor einigen Monaten, dass ich die node-pifacedigital auch mit Node/NPM größer 6.x nutzen kann passiert sein. Entweder hat es in dem Code etwas zerschlagen oder man muss etwas umprogrammieren da es früher auf

    6.x funktioniert hat, aber nun nichtmehr.

    Und hier hänge ich in der Luft. (schon seit Monaten) ;(

    Tobi

  • Heyo;

    leider übersteigt dein Problem bei Weitem meine Kenntnisse; zumindest durchschaue Ich aber ein bisschen die Schwierigkeiten :(

    An welcher der vielen Möglichkeiten soll man jetzt suchen? Buster selbst, die node-Red-Version, Javascript, die Befehlsweitergabe, ...

    -Stimmt es, dass NodeRed WiringPi benutzt? Anscheinend hat der Entwickler aus Frust das Entwickeln aufgegeben?

    Kann man einfach so auch andere "Node-Quellen" benutzen oder zerschießt man sich damit eventuell alles?

    Habe beim Forschen (Viel von deinen Beiträgen gefunden) das hier gesehen, ist zumindest mit 7 Monaten etwas aktueller:

    GitHub - redplc/node-red-contrib-redplc-piface: Node-Red node for PiFace Digital
    Node-Red node for PiFace Digital. Contribute to redplc/node-red-contrib-redplc-piface development by creating an account on GitHub.
    github.com

    Schon mal versucht?

    Good Night;

    rasray

  • Hallo rasray,

    ich bin deinen Tip gefolgt und habe mich nach etwas anderen umgesehen...

    Anfangs habe ich die von dir vorgeschlagene Version von redplc (oben) getestet und

    aus Mangel von Beschreibung und Kenntnis auch schnell wieder gelöscht....

    Jedoch habe ich das ganze nochmals aufgearbeitet und mich mehr eingelesen!

    Das war jedoch immer noch nicht der richtige Erfolg...

    Ich habe dann in verschiedenen Foren nachgelesen und versucht infos einzuholen.

    Bei einen Post habe ich dann gesehen, dass es sich wohl um einen Deutschen handeln muss, da

    er/sie diverse deutsche Floskeln in den englischen Text mit einfließen leis.

    Daraufhin habe ich diesen kontaktiert und er hat mir auch geantwortet.

    Ich habe ein paar module nachinstallieren müssen und schwupps funktionierte es zu meiner Zufriedenheit.

    Um es für die Nachwelt nachvollziehbar zu halten möchte ich hiermit alles nochmals niederschreiben.

    in node-red sind folgende nodes zu installieren.

    Code
    node-red-contrib-redplc-piface
    node-red-contrib-redplc-module
    node-red-contrib-redplc-rpi-mcp23008
    node-red-contrib-redplc-rpi-gpio

    anschließend bekommt man wie erwartet neue Icons (nodes) zur Auswahl.

    und mit diesen war ich erst überfordert, bis ich Hilfe bekam.

    Diesen Flow habe ich dann gebaut, und dieser ist voll aussagekräftig und Verständlich.

    Die ROTEN NODES sind eine Art zyklische Abfrage welche man zeitlich be- oder entschleunigen kann.

    Diese Ist verknüpft mit der ORANGEN NODE namens PIFACE.

    Hier wird in den Einstellungen die physikalische Adresse (Jumper am Board, 0:0;0:1;1:0;1:1)

    eingestellt und welche in/outs der BLAU und GRÜNEN NODES auf dieses Board "hören" sollen.

    Ich habe hier bei PIFACE@0 (Adresse:0:0; und auch I:0 und O:0) eingestellt.

    Die BLAU und GRÜNEN Nodes sind somit die Ein-/Ausgänge der Platine.

    In den Node-Einstellungen muss man nur einstellen auf welches PIFACE dieser bezogen ist und welcher PIN dies ist.

    Ich habe hier z.B. nur die ersten 4 Eingänge verwendet, da diese ja am PIFACE mit Taster ausgeführt sind und ich diese somit recht einfach testen konnte. Natürlich können hier alle Ein und Ausgänge (0-7) verwendet werden.

    Mit dem PiRack und 4 PiFaceDigital/PiFaceDigital2 habe ich somit 32 Eingänge und 32Ausgänge 8davon 8 RELAIS) zur Verfügung .

    Danke dir nochmals und ich hofe auch irgendwann mal jemanden damit zu helfen.

    grüß

    Tobi

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!