NEWS
Test Adapter rpi2 2.x
-
@laser sagte in Test Adapter rpi2 2.x:
Wo kann ich denn einen Anfangswert konfigurieren? Adapter V.2.3.2
Du musst in den Einstellungen der Instanz wo du Eingang und Ausgang definierst, Ausgang mit Anfangswert 0 /1 auswählen.
-
@laser sagte in Test Adapter rpi2 2.x:
Ärgerlich, daß der Status des GPIO nur bei gestopptem Adapter abgefragt werden kann.
JA, stellt sich mir daraus eine Frage:
Wenn der Ausgang 0 ist -> Relais erregt - LED AN
-> dann der Adapter beendet wird
-> wird dann der Wert auf 1 gesetzt und das Relais deaktiviert - LED AUS? -
@smallfeuer Den Anfangswert kann ich nur beim Neuanlegen festlegen. Das war mir nicht klar. Gab es möglicherweise in älteren Versionen noch nicht. Zur Zeit geht, ohne daß ich das konfiguriert habe, der Ausgang auf 1, nach dem Neustart.
Das Relais ist deaktiviert.EDIT: habe jetzt auf "Ausgangswert 1" konfiguriert. Nach dem Neustart des RPI steht auch eine 1 an.
-
@laser Ich kann in der 2.3.1 aktuell einfach umstellen. Dafür muss ich die GPIO nicht löschen.
-
Hi @smallfeuer ,
Sorry, aber ich war im Ausland auf Dienstreise und habe daher erst jetzt Zeit zu antworten. Weis nicht ob du die Tabelle in meinem Orginal Post gefunden hast, sonst hier noch einmal zur Info. Die obere ist von meinem "alten" Pi4 mit Buster und die untere ein Pi5 mit Bookworm. Die jeweiligen rpio Versionen die ich getestet habe stehen links
-
@smallfeuer said in Test Adapter rpi2 2.x:
Das bedeutet das es wohl Grundlegend geändert wurde. Vor Bookworm war es definitiv andersrum und für mich logischer.
Das kann ich ehrlich gesagt im Code nicht nachvollziehen. Also wenn dann kommt das von der Bibliothek. Aber ich hab jetzt mal das invertieren eingebaut.
@smallfeuer said in Test Adapter rpi2 2.x:
Dieses Problem tritt auf wenn ich den Adapter, oder PI Neustarte - > er schreibt den Eingang 17 auf false und prüft ihn nicht vorher. Meiner Meinung nach müsste der State vom Eingang "schreibgeschützt" sein und müsste sich - selbst wenn er manuell geändert in kürzester Zeit zurück ändern. Normalerweise sind doch alle aktiven GPIO überwacht und wenn der Datenpunkt nicht dem GPIO entspricht muss er sofort umgeschrieben werden.
Also beim Adapter start wird der Wert aller Eingänge ausgelesen und in ioBroker entsprechend gesetzt. Wenn du oder ein Skript daran rumfummelst, passiert nichts (außer eine Fehlermeldung im Log). Da bist du mE dann aber auch etwas selber schuld, der Adapter repariert das gefummel nicht.
Wenn sich der Zustand ändert, wird es wieder korrigiert.
Aber ok, ich habe eingebaut, dass er nach der Fehlermeldung den Wert nochmal ausliest.Und ich hab jetzt eingebaut, dass er auch den Wert von GPIO-Ausgängen beim starten liest. Falls das geht, sollten die ioBroker states dann abbilden, was bei den GPIOs an / aus ist. Wobei das für die GPIOs mit definiertem Startwert auch vorher schon der Fall gewesen sein sollte.
-
@garfonso sagte in Test Adapter rpi2 2.x:
Also beim Adapter start wird der Wert aller Eingänge ausgelesen und in ioBroker entsprechend gesetzt
Na genau das funktioniert bei mir nicht. Nach einem Neustart des Adapters geht der Eingang von True auf False obwohl das Signal weiterhin anliegt. Wenn ich den Adapter dann beende und auslese wird mir auch eine 1 angezeigt.
-
@garfonso sagte in Test Adapter rpi2 2.x:
Wobei das für die GPIOs mit definiertem Startwert auch vorher schon der Fall gewesen sein sollte.
Bei definiertem Startwert braucht er sie ja nicht auslesen. Da muss er sie ja einfach nur setzen.
Nur bei nicht definiertem Startwert, wäre es korrekt den Wert beizubehalten der vorher da war.
-
Ich bekomm die aktuelle Github Version 2.3.2 nicht zum laufen, 2.3.1 läuft:
Grad komplett gelöscht mit allen Einstellungen und neu gezogen.
Do not restart adapter system.adapter.rpi2.0 because restart loop detected
-
Und die Meldungen im Log sehen so aus. Zumindest bei mir...
2025-02-23 11:53:08.571 - info: rpi2.0 (279931) starting. Version 2.3.2 (non-npm: iobroker-community-adapters/ioBroker.rpi2) in /opt/iobroker/node_modules/iobroker.rpi2, node: v23.7.0, js-controller: 7.0.6 2025-02-23 11:53:08.981 - error: rpi2.0 (279931) Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). 2025-02-23 11:53:08.981 - error: rpi2.0 (279931) unhandled promise rejection: value.toFixed is not a function 2025-02-23 11:53:08.983 - error: rpi2.0 (279931) TypeError: value.toFixed is not a function at parser (/opt/iobroker/node_modules/iobroker.rpi2/main.js:454:58) at async main (/opt/iobroker/node_modules/iobroker.rpi2/main.js:327:9) at async Rpi2.onReady (/opt/iobroker/node_modules/iobroker.rpi2/main.js:58:9) 2025-02-23 11:53:08.984 - error: rpi2.0 (279931) value.toFixed is not a function 2025-02-23 11:53:08.990 - info: rpi2.0 (279931) terminating 2025-02-23 11:53:08.992 - warn: rpi2.0 (279931) Terminated (UNCAUGHT_EXCEPTION): Without reason 2025-02-23 11:53:09.490 - info: rpi2.0 (279931) terminating 2025-02-23 11:53:09.603 - error: host.chet instance system.adapter.rpi2.0 terminated with code 6 (UNCAUGHT_EXCEPTION) 2025-02-23 11:53:43.092 - info: rpi2.0 (279987) starting. Version 2.3.2 (non-npm: iobroker-community-adapters/ioBroker.rpi2) in /opt/iobroker/node_modules/iobroker.rpi2, node: v23.7.0, js-controller: 7.0.6 2025-02-23 11:53:43.532 - error: rpi2.0 (279987) Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). 2025-02-23 11:53:43.533 - error: rpi2.0 (279987) unhandled promise rejection: value.toFixed is not a function 2025-02-23 11:53:43.535 - error: rpi2.0 (279987) TypeError: value.toFixed is not a function at parser (/opt/iobroker/node_modules/iobroker.rpi2/main.js:454:58) at async main (/opt/iobroker/node_modules/iobroker.rpi2/main.js:327:9) at async Rpi2.onReady (/opt/iobroker/node_modules/iobroker.rpi2/main.js:58:9) 2025-02-23 11:53:43.535 - error: rpi2.0 (279987) value.toFixed is not a function 2025-02-23 11:53:43.543 - info: rpi2.0 (279987) terminating 2025-02-23 11:53:43.545 - warn: rpi2.0 (279987) Terminated (UNCAUGHT_EXCEPTION): Without reason 2025-02-23 11:53:44.043 - info: rpi2.0 (279987) terminating 2025-02-23 11:53:44.160 - error: host.chet instance system.adapter.rpi2.0 terminated with code 6 (UNCAUGHT_EXCEPTION) 2025-02-23 11:53:44.161 - warn: host.chet Do not restart adapter system.adapter.rpi2.0 because restart loop detected
Version: iobroker.rpi2@2.3.2 (git+ssh://git@github.com/iobroker-community-adapters/ioBroker.rpi2.git#c75795660b15fec21ffda74db9263f94f3e341a1)
-
Allerdings läuft die iobroker.rpi2@2.3.2 aus dem Repo.
Lass halt die Finger von GitHub-Installationen, wenn du nicht dazu aufgefordert wurdest das zu tun.
Da kann halt jeder Code-Stand angespült werden. -
@thomas-braun sagte in Test Adapter rpi2 2.x:
Lass halt die Finger von GitHub-Installationen, wenn du nicht dazu aufgefordert wurdest das zu tun.
Da kann halt jeder Code-Stand angespült werden.Na eigentlich wird nur der letzte Stand der in Github hochgeladen wurde installiert.
Hatte mir die Comparing changes vorher angeschaut - bin schon groß -
@smallfeuer sagte in Test Adapter rpi2 2.x:
Na eigentlich wird nur der letzte Stand der in Github hochgeladen wurde installiert.
Richtig. Das kann aber was komplett anderes sein, als das was (mit gleicher Versionsnummer!) in den Repos landet.
-
Dieser Hinweis ist wichtig an der Stelle, daher hatte ich die Version und aus Github geschrieben. Aber korrekt und wichtig für alle da zu unterscheiden.
Ich such jetzt im Programm mal nach dem Fehler der mir beim Neustart des Adapters meinen Eingang auf false setzt, obwohl dieser definitiv true ist.
@Garfonso
Problem gefunden und hätte hier eine Lösung. Die Initialisierung geht nicht schnell genug.
Habe eine Delay Funktion nach dem GPIO watch Befehl integriert - jetzt wird der Eingang korrekt auf True gesetzt.function delay(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } // Füge eine kurze Verzögerung hinzu, um sicherzustellen, dass der Pin initialisiert ist 121 this.gpioInputPorts.push(gpioSetting.gpio); // neu await delay(100); // Verzögerung von 100 Millisekunden 122 await this.readValue(gpioSetting.gpio);
im DEBUG Log zeigt er mir damit aber eine lange liste true. Das "false" am Anfang kommt leider immer noch durch. Er korrigiert es jetzt aber. Kannst du beim 1. lesen des Eingangs den Inhalt verwerfen? Das liegt sicher an der Debounce Abfrage - richtig?
2025-02-23 17:43:25.161 - debug: rpi2.0 (34903) GPIO chip undefined initialized 2025-02-23 17:43:25.161 - debug: rpi2.0 (34903) Port 17 direction: in 2025-02-23 17:43:25.164 - debug: rpi2.0 (34903) Setting state for port 17 to false 2025-02-23 17:43:25.221 - silly: rpi2.0 (34903) States user redis pmessage rpi2.0.*/rpi2.0.gpio.17.state:{"val":false,"ack":true,"ts":1740329005219,"q":0,"from":"system.adapter.rpi2.0","user":"system.user.admin","lc":1740329005219} 2025-02-23 17:43:25.225 - debug: rpi2.0 (34903) Port 22 direction: outhigh 2025-02-23 17:43:25.227 - debug: rpi2.0 (34903) Adding event listener for port 17 2025-02-23 17:43:26.792 - debug: rpi2.0 (34903) GPIO change on port 17: true 2025-02-23 17:43:26.793 - debug: rpi2.0 (34903) Setting state for port 17 to true 2025-02-23 17:43:26.795 - debug: rpi2.0 (34903) GPIO change on port 17: true 2025-02-23 17:43:26.797 - debug: rpi2.0 (34903) Setting state for port 17 to true 2025-02-23 17:43:26.800 - debug: rpi2.0 (34903) GPIO change on port 17: true 2025-02-23 17:43:26.801 - debug: rpi2.0 (34903) Setting state for port 17 to true 2025-02-23 17:43:26.803 - debug: rpi2.0 (34903) GPIO change on port 17: true 2025-02-23 17:43:26.804 - debug: rpi2.0 (34903) Setting state for port 17 to true 2025-02-23 17:43:26.806 - debug: rpi2.0 (34903) GPIO change on port 17: true
-
Jetzt verstehe ich es nicht mehr. Nachdem ich alles gelöscht hatte ändert er aktuell den Status wieder automatisch von false auf true - bei 2.3.1 jedenfalls auch ohne mein Delay.
Das 1. false müsste man aber abfangen. Kein Plan was sich jetzt wieder geändert hat zwischenzeitlich :(.
-
ähm.. ja.. die github Version hab ich auch noch nicht getestet. Kann sein, dass da noch fehler drin sind. Die Tests laufen ja auch nicht durch.
Bin am Freitag nur dazu gekommen neuen Code zu produzieren, ausprobieren und Fehler glatt bügeln, dafür hat die Zeit nicht mehr gereicht. Insofern, was @Thomas-Braun sagt: Bitte erstmal bei der Version aus dem repository bleiben. Ich bitte um tests, wenns soweit ist.Und ja, eigentlich wollte ich das Freitag noch schaffen, aber ging halt nicht. Aber im Forum wollte ich halt auch noch kurz antworten.
-
@garfonso Kein Stress. Sag bescheid wenn du soweit bist.
-
@smallfeuer said in Test Adapter rpi2 2.x:
im DEBUG Log zeigt er mir damit aber eine lange liste true. Das "false" am Anfang kommt leider immer noch durch. Er korrigiert es jetzt aber. Kannst du beim 1. lesen des Eingangs den Inhalt verwerfen? Das liegt sicher an der Debounce Abfrage - richtig?
Hä? Welches Problem hat das denn jetzt gelöst?
In deinem log sehe ich, dass der Port initialisiert wurde, dann wurdefalse
eingelesen, nach dem timeout, den du dort hinzugefügt hast und danach meldet die library von "außen" mehrere Veränderungen zu true. Wenn da nur einmal true rauskommen soll, könntest du das mit debounce timer lösen.Was genau hat der delay jetzt bei dir behoben, wenn es nicht das initiale lesen war?
-
@smallfeuer said in Test Adapter rpi2 2.x:
@garfonso Kein Stress. Sag bescheid wenn du soweit bist.
Jetzt kannst du von github mal ausprobieren und gucken, ob es einen Unterschied macht. Der initiale Zustand der Eingäge wird jetzt erst gelesen, nachdem der Eventlistener hinzugefügt wurde.
Wenn da immer noch das falsche bei rum kommt, weiß ich nicht mehr so richtig weiter.
In dem Fall, könntest du mir deine Konfiguration mal zukommen lassen? Weiß zwar nicht, ob ich da ohne Hardware hier weiter komme, aber vielleicht fällt mir was ein.