Modulüberarbeitung: 58_RPI_1Wire (ersetzt 58_GPIO4)

Begonnen von Adimarantis, 18 Oktober 2021, 16:16:58

Vorheriges Thema - Nächstes Thema

tschirch

Hi Jörg,
ich schreibe in der Tabelle den Inhalt der Datei state. Es handelt sich dabei immer um ein einziges Byte.


pioa     aus         an         aus         an
piob     aus         aus        an          an
mit 12V  0F          3C         C3          F0
         0000 1111   0011 1100  1100 0011   1111 0000
ohne 12V 5A          78         D2          F0
         0101 1010   0111 1000  1011 0010   1111 0000


Man sieht, dass im unteren Nibble. Immer die "rechte" "1" fehlt. Ist halt keine Spannung da. Es gibt also mehr Nullen. Dafür gibt es im invertierten oberen Nibble mehr Einsen.

Damit dürfte auch die Zuordnung von pioa und piob geklärt sein.

Bin dann erst am Sonntag Abend wieder verfügbar. Bis dahin viel Erfolg beim Programmieren.

Steffen

Adimarantis

Hi Steffen,

bitte schick mir doch die Dateien. Sonst muss ich aus deiner Tabelle manuell Dateien erzeugen, was erstens Aufwand ist und wobei zweitens wieder Fehler passieren können.
Einfach immer
cp /sys/bus/w1/devices/xx-xxxxxxxx/state state_pioa_on_piob_off und dann alle state* files zusammenzippen

Danke,
Jörg
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

Adimarantis

Jetzt hats mich nicht losgelassen und ich hab doch selber mal so ein "state" file erzeugt und dann wurde es klar:
Bei der Konvertierung in ein Array wurde die Nummerierung umgedreht (00000011 -> 0,0,0,0,0,0,1,1), also Bit 0 wurde zu $pin[7], außerdem war die Invertierung nicht korrekt. (Operatorpräzendenz anders als ich gedacht hätte)
Daher hats wohl auch am Anfang fast funktioniert, da ich quasi versehentlich die invertierten Bits aus dem oberen Nibble genommen hatte - das vertauscht halt nur auch a und b (und nimmt latch statt pio), wie du schon angemerkt hattest.

Sowas sieht man halt erst, wenn man die entsprechenden Code Zweige wirklich mit echten Daten testen kann, wofür mir erst jetzt die Idee kam.

Ich erzeuge jetzt auch unterschiedliche Readings für pio und latch (jeweils a und b) - das kannst du dann auswerten wie du möchtest.
Um das set-Byte zusammenzusetzen, wird aber pio verwendet.


Jörg
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

tschirch

Es geht etwas! Die Zustände sind jetzt in Ordnung. Auch die Zuordnung von pioa und piob.

Beim Schalten geht die Hälfte. Laut verbose 5 werden die richtigen Werte 0, 1, 2 oder 3 ausgegeben. Jedoch bei der Ausgabe einer 2 oder einer 3 ist der zu erreichende Zustand falsch. Wie das überhaupt möglich ist, ist mir schleierhaft.

Bsp.: Zustand pioa ist aus und piob an, piob soll ausgeschalten werden mit einer 3, piob bleibt aber an.
      Zustand pioa ist aus und piob aus, pioa soll angeschalten werden mit einer 2, pioa und pio gehen auf an. piob sollte aber aus bleiben.

Kannst du dir das erklären?

Mit meinen Befehlen geht es tadellos. z.B. echo -en '\x'$2 /sys/bus/w1/devices/3a-000000$1/output Dabei wird $1 und $2 beim Aufruf als Parameter übergeben. Wichtig ist vielleicht das '\x', welches $2 hexadezimal umwandelt. Was gibst du an dieser Stelle aus? Ich habe gerade während des Schreibens die Ausgabe von ASCII (also hex 30, 31, 32 und 33) getestet. Das geht auch, also ohne das '\x'.

Steffen


Adimarantis

Ok, ich glaube wir sind fast da.
Bei der Umwandlung hatte ich noch einen Denkfehler.
Probier mal diese Version.

Jörg
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

tschirch

Hey, genau! Die Schaltvorgänge kommen an. Nach dem Schalten müsste direkt ein update kommen. Ich glaube die Aktualisierung erfolgt erst mit dem 60s-Polling. Kann das sein? Guckst du da bitte nochmal nach? 60s wären mir zu lange. Für meine Markise muss es schon so 1s sein.

Steffen

Adimarantis

Ok. Probier mal jetzt. Er sollte jetzt eigentlich sofort nach dem Schalten den neuen Zustand zurücklesen.
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

tschirch

Ich denke, du hast es geschafft! Es funktioniert, wie gewünscht. Super. Da bin ich erst mal wunschlos glücklich. ;-)
Danke für die Arbeit!

Wollen wir es erst mal so belassen und beobachten, falls es noch etwas gibt? Oder hast du noch Ideen etwas zu verändern/verbessern?

Viele Grüße,
Steffen

Adimarantis

Ich checke es so ein. Ein paar Kleinigkeiten hab ich bei der Gelegenheit auch noch verändert.

Danke fürs Testen und die Geduld. Es klappt halt doch erst, wenn man alles bis ins Detail testen kann.

Jörg
Raspberry 4 + HM-MOD-RPI-PCB (pivCCU) + RfxTrx433XL + 2xRaspberry 1
Module: 50_Signalbot, 52_I2C_ADS1x1x , 58_RPI_1Wire, (50_SPI_MAX31865)

tschirch

Prima. Hat mich gefreut mit dir zusammenzuarbeiten!

Viele Grüße,
Steffen