TASMOTA / ESPHome personalizado para IO´s Expander PCF8574 / MCP23017

Estou a tentar associar um IO expander PCF8574 (permite 8I/O) a um ESP nodeMCU, para isso é necessário um firmware tasmota (ou em alternativa ESPHome) personalizado com funções adicionais que não vem no firmware base, para permitir usar o expander.

Pelo que descortinei, para obter a personalização, encontrei dois metodos simples (há +):

Comecei a tentar pelo 1º metodo sem exito, qd tentei fazer upload do firmware obtido,deu erro, estou a fazer qualquer coisa mal que não estou a conseguir identificar, preciso de ajuda.
EDIT: Após algumas cabeçadas e insistencia a coisa andou um pouco mais.

1º METODO T ASMOTA
Como procedi:
segui o link (tive de abrir conta no github e Gitpod)


Cria um webserver (leva algum tempo) a aparecer a caixa dialogo , clicar “Open Browser” que vai abrir o GUI no browser.

image

Depois de aberto seguir os 5 passos


No passo 4 , é necessário preencher para PCF8574:

#define USE_PCF8574    // [I2cDriver2] Enable PCF8574 I/O Expander (I2C addresses 0x20 - 0x26 and 0x39 - 0x3F) (+1k9 code)

ou para MCP23017 :

#define USE_MCP230xx                 // [I2cDriver22] Enable MCP23008/MCP23017 - Must define I2C Address in #define USE_MCP230xx_ADDR below - range 0x20 - 0x27 (+4k7 code)
#define USE_MCP230xx_ADDR 0x20       // Enable MCP23008/MCP23017 I2C Address to use (Must be within range 0x20 through 0x26 - set according to your wired setup)
#define USE_MCP230xx_OUTPUT          // Enable MCP23008/MCP23017 OUTPUT support through sensor29 commands (+1k5 code)
#define USE_MCP230xx_DISPLAYOUTPUT   // Enable MCP23008/MCP23017 to display state of OUTPUT pins on Web UI (+0k2 code)

Compile e obtem-se o fch bin , flashar por serial recorrendo ao tasmotizer, flashei sem problema, mas acontece que depois de configurar com os GPIOS (i2CSCL e SDA) no modulo e gravar, o modulo reinicia normalmente, mas as configurações não ficam. Já não sei que voltas dei e lá ficaram.

Depois de flashado o firm e configurados os GPIOS (i2CSCL e SDA) , na consola activa-se o driver

 i2cdriver2 1

E lá aparece o menu

.

image

Depois podemos configurar os 8 IO como input ou output

.

E já aparecem mais 8 reles para alem dos 4 que configurei no NodeMCU

.

Agora quase lhe posso chamar sonoff 12CH, acrescentando mais uns PCF8575 (ou MCP23xxx ) facilmente se deve conseguir expandir para mais uns quantos IO e passa a sonoff 32CH, ou seja equivalente a uma carta de automato por menos de 8€ :slight_smile:

2º METODO ESPHOME
Já tenho alguns resultados , mas com o tasmota já a dar qualquer coisa, não sei se vale a pena ESPHome, porque tem WebUI mais pobre , não tem consola e os estados nem sempre actualizam sem F5 refresh :wink:

Instalei ESPHome Add-on


Configurei um device

esphome:
  name: esphome_test1
  platform: ESP8266
  board: nodemcuv2
wifi:
  ssid: "wifi_ssid"
  password: "pass"
  manual_ip:
    static_ip: 199.160.10.199
    gateway: 199.160.10.101
    subnet: 255.255.255.0
web_server:
  port: 80
captive_portal:
# Enable logging
logger:
# Enable Home Assistant API
api:
ota:

################## I2C ENABLE 12C
i2c:
  sda: 4
  scl: 5
  scan: True
  id: bus_a
  
################## Configuration I/O  pcf8574
pcf8574:
  - id: 'pcf8574_hub'
    address: 0x23
    pcf8575: False

switch:
  - platform: gpio
    name: "Pin #0"
    pin:
      pcf8574: pcf8574_hub
      number: 0
      # One of INPUT, INPUT_PULLUP or OUTPUT
      mode: OUTPUT
      inverted: False

binary_sensor:      
  - platform: gpio    
    name: "Pin #1"
    pin:
      pcf8574: pcf8574_hub
      number: 1
      # One of INPUT, INPUT_PULLUP or OUTPUT
      mode: INPUT
      inverted: True  

E já tenho 1 output e 1 input a mexer

O upload failed é por falta de espaço. Tens de flashar o minimal primeiro

Nunca usei o minimal, tenho flashado via serial com tasmotizer, julguei que isso era suficiente, pelo menos até agora para flashar o tasmota.bin ‘normal’ tem sido.

Flashei o minimal no nodeMCU com tasmotizer (c/opção erase before flash) , depois reboot, aparece o open AP ESP-XXXXX , consigo ligar, mas não consigo aceder ao webui (192.168.4.1) para o configurar, é assim?
Depois tentei via serial com tasmotizer, enviei a configuração da minha rede Wifi, como costumo fazer no wemos, depois de reboot, o AP ESP-XXXX não desaparece continua activo, e na gama IP dos DHCP, não aparece o device.

Por fim para tirar duvidas qt ao bom funcionamento do nodeMCU, faço todo o processo via serial com tasmota.bin e tudo está ok.
O que me está a faltar?

o que o @Maddoctor te disse foi para primeiro flashares o minimal, e depois repetires o processo que fizeste inicialmente no post.

Não é para acederes a ele, só acedes depois de teres o bin compilado.
Ora tenta lá.

Resumindo, flash do minimal via serial , reboot , flash do firmpersonalizado.bin via serial é isso?
Vou ter de compilar de novo o personalizado pk já o apaguei e ia virar agulhas para esphome :slight_smile:
Vamos la tentar de novo o tasmota

Sim isso. Caso não funcione pode ser outra coisa.

Vou tentar então , ainda vou ter de compilar de novo o firm, há algum “truque” que tenha de ter em consideração durante algum dos 5 passos ? No ultimo passo (5) , tenho um nodeMCU, que opção utilizo nodeMCU 4MB 80Mhz ou 160Mhz (teoricamente seria 160MHz) , anteriormente tentei com a 3 opções :slight_smile:

O meu comentário aplica-se apenas ao erro que te apareceu por OTA de “mismatch”…
Por serial podes flashar logo a versão completa.

Será que com estas opções o tasmota fica muito gordo?

Sim é o que eu pensava, via serial consigo flashar com tasmotizer , o problema depois é que não consigo que as alterações que faço ao module confif fiquem gravadas , dá ideia que não “fixa” a config , talvez seja falta de espaço … mas o nodeMCU teria 4MB certo?

Diria que fica bastante… Mas não devia ser impeditivo… Eu compilo sempre por gitpod e desactivo features que nao me interessam, por isso mesmo…

Isto é tudo muito rebuscado vamos lá expor a experiencia (não muito positiva) que pode servir a outros.:

  • 1º voltei a flashar firm personalizado com opções

    Resultado, não conseguia alterar as config do modulo que insiste em ficar em sonoff basic (nem recorrendo config template como fiz na 2ª tentativa com firm c/opções mais reduzidas ). Até associar um simples Ledlink ao gipo 2 não dá.
    image
  • 2º fiz uma dieta e flashei firm personalizado com opções mais leves:

    Resultados:
    • não conseguia alterar as config do modulo que insiste em ficar em sonoff basic,
    • depois atraves do config template e de alterar o name ( e só depois de alterar ) é que lá consegui que ficasse em generic (18)
    • a seguir voltei a tentar alterar o template e já não dá, fica sempre como anteriormente generic (18)

Isso acontece quando atribuis mal as configurações do modulo ou usas um template errado. É uma espécie de modo de segurança para garantir que não tens de flashar de novo para corrigir o erro.

Não entendo bem isso, não fiz nada de mais na config do módulo que já não tenha feito no wemos.
Se calhar é por ser um nodemcu, embora qd tem o firm normal, funciona mais ou menos com o wemos, altero os gpios na boa

Provavelmente tens os gpio9 e 10 configurados para alguma coisa e não pode ser…

Sim sei que 9 é 10 eventualmente só dá nos 8255.
Depois de flashado 1o. Firm mais gordo ficou como sonoff BASIC, e nao conseguia alterar a config, não aceitava nada., muito estranho.
No 2o. Flash com firm mais reduzido, depois de várias tentativas lá consegui pôr template em generic 18, com gpio todos em user.
Amanhã vou fazer mais umas experiências a ver se identifico as circunstâncias que bloqueiam e as que permitem alteração da configuração

Cá estou novamente sem conseguir identificar o problema, continuo desconfiado que é da gordura do firmware e/ou do nodeMCU “falsificado” que não tem 4MB, provavelmete necessito explicação, pk se calhar a memoria extra nem serve para o firmware, será isso?
image

Com estas opções não consigo configurar o modulo de maneira nenhuma. Nem via WebUI nem via serial com tasmotizer a enviar Module generic nem usando template do tipo {“NAME”:“personalizado”,“GPIO”:[xxx,xxx,… ],“FLAG”:0,“BASE”:18}

Com o firmware mais magro
image
Já consigo configurar o modulo.

Vou fazer mais uns testes com combinações de opções a ver o que dá
Depois a duvida é que opções utilizar, IO expander para o efeito é obrigatorio, Web UI pode dar jeito… Rules e Timers sei para o que serve, tb podem dar jeito , agora para que serve opção Home Assistant em concreto , alguem sabe?
@Maddoctor que opções usas ?

Com ESPHome, já há alguns resultados animadores, para testar já tenho 1 output e 1 input a bulir (editado no 1º post).

Com o Tasmota, continuo aos papeis, já consigo fazer i2cscan e ver o device no address 23, não sei passar os estados do IO para o WebUI e ainda não os consigo ver a alterar na consola.
Na personalização do firmware no passo 4 , coloquei #define USE_PCF8674_ADDR 0x23 , mas deve faltar alguma coias mais de certeza.

Na WebUI não vês nada que venha de fora do equipamento, os sinais são passados para o HA com rules e conseguem ser vistos na consola.

@j_assuncao
ESPHome vejo qualquer coisa do Expander , webUI um pouco austera e ás vezes não actualiza os valores sem F5 refresh

Tasmota - Aqui https://github.com/arendst/Tasmota/issues/6765 dá a entender que se pode ver algo, com a interface mais agradavel do tasmota


Tambem me deveria aparecer este menu para config do PCF8475

O MadDoc, tem experiencia nos expanders, deixa ver o que ele diz

1 Like

Copyright © 2017-2020. Todos os direitos reservados
CPHA.pt - info@cpha.pt


FAQ | Termos de Serviço/Regras | Política de Privacidade