Template für den MCP23017

Die alternative Firmware für ESP8266 based devices

Moderatoren: seppy, udo1toni

Antworten
Oekel
Beiträge: 182
Registriert: 28. Aug 2021 10:34
Answers: 0

Template für den MCP23017

Beitrag von Oekel »

Hi,

ich stehe gerade bei der Tasmota Dokumentation so extrem auf dem Schlauch wie selten:
https://tasmota.github.io/docs/MCP230xx/#mode-2

Habe mir über das Docker-Image "TasmoCompiler" das erste Mal eine eigene Firmware für meinen ESP32 kompiliert und aufgespielt (War bislang nie nötig da alle anderen Funktionen immer im Default mit enthalten waren)

Nun sehe ich im Log folgende Meldungen, die mich glauben lassen, dass alle funktioniert hat:

Code: Alles auswählen

T-Internet-POE-92/tele/SENSOR = {"Time":"2024-03-17T18:10:29","MCP230XX":{"D0":0,"D1":0,"D2":0,"D3":0,"D4":0,"D5":0,"D6":0,"D7":0,"D8":0,"D9":0,"D10":0,"D11":0,"D12":0,"D13":0,"D14":0,"D15":0}}

I2Cscan
T-Internet-POE-92/stat/RESULT = {"I2CScan":"Device(s) found on bus1 at 0x20"}

Unter "Configuratio Other" (<myip>/co?)
benötigte ich bislang folgendes Template:
{"NAME":"LilyGO T-Internet-POE","GPIO":[0,1,672,1,1,0,0,0,1,6720,736,704,1,0,5600,0,0,0,0,5568,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,1],"FLAG":0,"BASE":1}
Nun ist in der Anleitung/Beispielen die Rede von einem weiteren JSON:
Buttons, relays, buttons and relays B1 B2 B3 B4 B5 B6 B7 B8 R1 R2 R3 R4 R5 R6 R7 R8 B9 B10B11B12B13B14B15B16R9 R10 R11 R12 R13 R14 R15 R16
{"NAME":"MCP23017 A=B1-8, B=R1-8, C=B9-16, D=R9-16","GPIO":[32,33,34,35,36,37,38,39,224,225,226,227,228,229,230,231,40,41,42,43,44,45,46,47,232,233,234,235,236,237,238,239]}
(und 3 möglichen Wegen wie man dieses ins System bringt)

Leider verstehe ic hkeinen dieser 3 Wege.
Kann mir hier Jemand weiter helfen?
Ist es das gleiche Json, was ich unter Template eingeben muss? Wenn ja wie werden die beiden korrekten gemerged?
Bin ich überhaupt in der Lage zur Laufzeit dieses einzufügen?

LG

Benutzeravatar
udo1toni
Beiträge: 14606
Registriert: 11. Apr 2018 18:05
Answers: 227
Wohnort: Darmstadt

Re: Template für den MCP23017

Beitrag von udo1toni »

Das hat nichts mit openHAB zu tun. Nicht, dass Du die Frage hier nicht stellen dürftest :) aber mutmaßlich bekommst Du im Tasmota Discord Channel schnell eine profunde Antwort, hier wäre das eher Zufall.

So wie ich das verstehe, da Du das hier

Code: Alles auswählen

T-Internet-POE-92/stat/RESULT = {"I2CScan":"Device(s) found on bus1 at 0x20"}
siehst, ist der Chip erreichbar. Du musst das JSON passend zur gewünschten Konfiguration auswählen, in der Doku sind verschiedene Beispiele angegeben.

Die drei möglichen Wege beziehen sich darauf, dass Du diese Konfiguration über ein vorhandenes Filesystem bereitstellen kannst, oder alternativ wie schon zuvor auch über Tasmota Rules oder Scripts.
openHAB4.2.2 stable in einem Debian-Container (bookworm) (Proxmox 8.2.7, LXC), mit openHABian eingerichtet

Oekel
Beiträge: 182
Registriert: 28. Aug 2021 10:34
Answers: 0

Re: Template für den MCP23017

Beitrag von Oekel »

In der Tat hat mir jetzt die Kommunikation im Discord weiter geholfen.
Zwar wurde ich nicht sonderlich nett empfangen (nach dem Motto RTFM) aber die Doku ist meines Erachtens an der Stelle wirklich nicht perfekt.

Daher hier kurz einige wenige ScreenShots, wie man zum "Mode 2" kommt (Default FW kann es nicht; Muss selbst kompiliert werden; Gerne Mich nach *.bin fragen, da ich das Docker ja fix laufen lassen kann ;)
Bildschirmfoto 2024-03-18 um 12.36.02.png
Bildschirmfoto 2024-03-18 um 12.36.13.png

Code: Alles auswählen

#define USE_MCP23XXX_DRV
#define USE_MCP230xx_ADDR 0x20
In der Anleitung steht, dass man für den Mode 2 "nur" die erste Zeile benötigt. Gibt bei mir jedoch Kompilierungsfehler. (So wie hier lief es durch)

Dann soll es 3 Wege geben, das JSON einzuspielen. Und NEIN, das "Template" welches ich für das Board benötige hat nichts mit diesem JSON für den IO-Expander zu tun!

Da man auf das File-System bei (der Firmware für den) ESP32 zu Laufzeiten zugreifen kann.
Habe ich mich für diese Variante entschieden. (Gerne Feedback zu der Möglichkeit, wie es auch per Script funktioniert)
Bildschirmfoto 2024-03-18 um 12.47.00.png
In die mcp23x.dat habe ich für 16x Relais folgendes eingetragen:

Code: Alles auswählen

{"NAME":"MCP23017 ","GPIO":[224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239]}
Das Beispiel von:
https://tasmota.github.io/docs/MCP230xx/#mode-2

Code: Alles auswählen

Buttons, relays, buttons and relays                         B1 B2 B3 B4 B5 B6 B7 B8 R1  R2  R3  R4  R5  R6  R7  R8  B9 B10B11B12B13B14B15B16R9  R10 R11 R12 R13 R14 R15 R16
{"NAME":"MCP23017 A=B1-8, B=R1-8, C=B9-16, D=R9-16","GPIO":[32,33,34,35,36,37,38,39,224,225,226,227,228,229,230,231,40,41,42,43,44,45,46,47,232,233,234,235,236,237,238,239]}
(vor allem mit C & D) bezieht sich gleich auf 2x Extender und ist nach hinten raus nur durch die Begrenzung zuzuordnender Outputs usw. limitiert.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Zuletzt geändert von Oekel am 18. Mär 2024 13:12, insgesamt 1-mal geändert.

Oekel
Beiträge: 182
Registriert: 28. Aug 2021 10:34
Answers: 0

Re: Template für den MCP23017

Beitrag von Oekel »

Am Ende erhaltet ihr dann folgendes:
Bildschirmfoto 2024-03-18 um 12.54.10.png
Habe hier mal absichtlich noch 2 GPIOs vom ursprünglichen Board als "Relais" markiert.
Obwohl ich diese auf 20,21 gestellt habe, sind es am Ende

Power1 0
Power2 0

Unser Expander fängt DANN also mit Power3 an.

LG
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Oekel
Beiträge: 182
Registriert: 28. Aug 2021 10:34
Answers: 0

Re: Template für den MCP23017

Beitrag von Oekel »

Moin,

ich muss das Thema noch mal aufrischen, da ich den Multiplexer nun an einem ESP8266EX (Flash zu klein für die Option mit Filesystem)
Hier noch mal der Link:
https://tasmota.github.io/docs/MCP230xx/

Nun scheint es so zu sein, dass man den Mode2 mit genau dem gleichen JSON aktiviert bekommt. (Jedoch legt man es diesmal nicht ins FileSystem sondern in eine Fake-Regel)

Ich habe ewig gebraucht, um rauszubekommen, das diese Regel "Fake" ist, also es nichts bringt jene wie üblich manuell in der Konsole anzulegen.
Sie muss mit ins Template der Kompletten Vorlage:

Code: Alles auswählen

{"NAME":"Luani Button","GPIO":[0,1,1,1,224,225,0,0,32,33,1,288,0,1],"FLAG":0,"BASE":35,"CMND":"rule1 on file#mcp23x.dat do {\"NAME\":\"MCP23017 expander\",\"BASE\":10,\"GPIO\":[160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175]} endon"}
(Base:10 funktioniert leider nicht, aber das ist eine andere Baustelle)

Was ich neben meinem Dokumentationszwang hier erreichen möchte, ist ob der ein oder andere bestätigen/wiederlegen kann, dass sämtliche "Device Configuration" (unter obigen Link nach I2C) im Mode2 nicht funktionieren?
Habe dort nämlich mit "Sensor29 intpri" schon mal einen gültigen Response bekommen und diesen auch verstellt (vermutlich aber bevor ich obiges korrekt mit dem Mode2 durchgeführt habe)

Denn aktuell werden einige Werte "verschluckt", da mein Reedkontakt zu schnell toggelt und ich hoffte, dass vielleicht die I2C-Kommunikation (durch meine Schuld) zu langsam eingestellt ist?

LG

Antworten