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á +):
- 1- Tasmota - tasmocompiler por benzino77 https://github.com/benzino77/tasmocompiler
- 2- Esphome - um dos firmwares alternativos ao tasmota
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.
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
.
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€
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
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