Page 1 of 1
DIO Input Change mit node-red auslesen
Posted: 20 Mar 2018, 09:38
by snoller
Hallo,
evtl. stehe ich auf dem Schlauch, aber wie ist es möglich in node-red eine Änderung auf einem Input-Pin des DIO Moduls permanent zu überwachen? Oder geht das gar nicht? Hätte gerne dass entweder eine Variable in node-red abhängig vom Input-Pin gesetzt oder eben ein Event ausgelöst wird.
--- Edit ----
Schonmal rausgefunden dass ein File-Listener (watch-node) auf /dev/piControl0 funktionieren könnte - der reagiert jedenfalls in der dumb-version auf Pin-Änderungen und generiert ein Event. Frage wäre jetzt noch: wie kann ich den so parametrisieren, dass er nur auf einen spezifischen Pin reagiert?
Danke vorab!
Re: DIO Input Change mit node-red auslesen
Posted: 20 Mar 2018, 16:05
by volker
Also wir machen das hier aktuell über eine zyklische Auswertung des piTest -r Kommandos mit einem command node. Ist nicht gerade performant aber wir sind dran einen RevPi mode zu programmieren, der das dann eleganter macht...
Re: DIO Input Change mit node-red auslesen
Posted: 22 Mar 2018, 15:39
by snoller
Ja, so habe ich es jetzt erstmal auch gelöst, aber es ist wirklich unerträglich langsam. Gut, hat dazu geführt dass ich gleich mal einen weiteren Core, nur diesmal den Core 3 bestellt habe
Aber eigentlich wäre es natürlich wünschenswert, dass es auch auf dem kleinen Core gut laufen kann. Aber da habt Ihr bestimmt schon gute Ideen. Ist absehbar, wann das node-red Modul ungefähr zur Verfügung stehen wird? Gruss, Stephan
Re: DIO Input Change mit node-red auslesen
Posted: 22 Mar 2018, 16:54
by volker
Leider gibt es da noch keinen definitiven Termin. Hat aber eine hohe Prio bekommen.
Generell würde ich aus eigener Erfahrung sagen: Node-Red und CM1, das passt nicht wirklich gut. Node Red verschlingt elendlich Ressourcen und das liegt definitiv nicht am zugriff auf das Prozessabbild. ich habe einen Flow, der eigentlich primäre nur HTTP Verkehr entgegennimmt und dann die Daten aus einer post-Message bearbeitet. Als Reaktion wird u.a. auch eine Variable zyklisch dann verändert (sie "blinkt"). mit oder ohne Kopie dieser Variablen auf einen IO frisst diese Anwendung enorme Rechenzeit. War mit CM1 auch nicht machbar.
Re: DIO Input Change mit node-red auslesen
Posted: 26 Mar 2018, 00:35
by snoller
ok, nochmal eine Frage dazu.
Habe jetzt doch nochmal versucht es schneller und ein bisschen eleganter zu machen, und zwar indem ich ein kleines python Programm geschrieben habe, das per revpimodio regelmässig die Input-Pins ausliest und jeweils in eine kleine Text-Datei schreibt. Diese kann ich dann in node-red mittels "watch" auslesen, was performanter zu sein scheint als per inject zu triggern.
Funktioniert auch soweit, nur taucht jetzt ein anderes Problem auf:
Sobald das python Programm läuft scheint es irgendwie auch das Setzen von Output-Pins zu beeinflussen. Wenn ich meinen Aktor nun per Output anmache wird er nach einem sehr kurzen Schaltvorgang immer sofort abgebrochen. Sobald ich das python Programm stoppe läuft wieder alles normal.
Im Python-Programm wird nur auf die Inputs zugegriffen, sonst nichts.
Was kann das sein?
Re: DIO Input Change mit node-red auslesen
Posted: 26 Mar 2018, 05:59
by volker
Zu RevPiModIO musst Du vielleicht Sven mal per PM fragen. Aber im Prinzip geht Sen da auch so vor, dass er zyklisch die Inputs pollt. Daher wundert es mich schon ein wenig, dass das so performanter läuft.
Wie genau setzt Du denn dann die Outputs?
Wenn das performanter läuft, dann hast Du eventuell den Inject zu schnell getriggert. Wie oft pro Sekunde?
Re: DIO Input Change mit node-red auslesen
Posted: 26 Mar 2018, 10:09
by snoller
Um ehrlich zu sein kann ich noch gar nicht genau sagen, ob es schneller läuft - denn es funktioniert ja nicht richtig...
Habe tatsächlich alle 0.5sec gepollt auf mehrere Pins, ist natürlich viel, aber es geht um eine kleine Anlage, die geregelt werden muss.
Was ich nicht verstehe: warum verhalten sich die Output-Pins plötzlich anders wenn ich die Inputs per revpimodio polle?