Orange Pi Zero 2W,Tasmota,ZigBee,Home Assistant.

  • Orange Pi Zero 2W 4G RAM
  • Tasmota ESP32
  • ZigBee E72-2G4M20S1E (CC2552P) Coordinaror 3.0 (zStack3x0)
  • Home Assistant Supervised
  • 4 x 12 Вольт выхода для внешних реле
  • 4 x Входа для сухих контактов
  • 1 x I2C External Interface
  • WiFi + Ethernet
  • 2 x USB 2.0
  • USB-UART для ESP32, CC2652P, Orange Pi Zero 2W Unix Console
  • RTC DS3231 или другой через I2C Internal Connector
  • JTAG – для CC2652P на плате.
  • Питание 12 Вольт (оно же для внешних реле)
  • Схема Schematic – OrangePiZero2W-HA-Ver-1-0-2023
  • FFC/FPC Шаг: 0.5  Pins: 24


Ethernet LED:

  • /usr/bin/gpio mode 26 output
  • /usr/bin/gpio mode 27 output
  • /usr/bin/gpio write 27 1
  • /usr/bin/gpio write 26 1


Ссылки по теме:

P.S. При программировании ZigBee модуля питание от JTAG программатора не подключать.

Home Assistant:

  • Для уменьшения логов в configuration.yaml добавить logger: default: critical

Home Assistant – Вывести температуру процесора на дисплей через MQTT Publish.
Tasmota TM1637
topic: cmnd/ha2wESP32/displaytext
payload_template: “{{ states(‘sensor.system_monitor_processor_temperature’)+’^’ }}”

TM1637 or TM1638 – Displayclock 2 – Выводит часа с мигающими точками в формате 24h

payload: {{ states(‘sensor.system_monitor_processor_temperature’)+’^’ }}{{ now().hour}}{{ now().minute }}

ESP32 GSM Tasmota Relay (SSR) Versiaon 3.0

Улучшенная версия ESP32-GSM-Tasmota-Relay V3.0. Исправлены ошибки, удалены не нужные интерфейсы OpenTherm, добавлены 4xSSR (Твердотельные реле), добавлена возможность установить BMP280 и RTC(Real Time Clock DS3231) одновременно и даже подключить TM1637. SPI на плате также присутствует. Небольшой пример использования Berry на Tasmota для отправки SMS и управление портами через GSM. gsm-berry-tasmota-ver-1-0 (PDF)

  • ESP32-WROOM-32(D) – прошивка Tasmota
  • 4 Изолированные Входа. (12V)
  • 4 SSR  – Твердотельные реле (2А) – Индикация включения.
  • 4 LED (Индикация входов или Выходов)
  • Индикация питания 3V, 4V(GSM), Контроль напряжения 4V через GPIO (ADC)
  • Индикатор состояния сети (WiFi, MQTT, etc.)
  • RS485 Интерфейс.
  • Buzzer – зуммер.
  • WS2812B – Индикация.
  • Установка модулей RTC-DS3231, BMP280, SPI Модулей
  • Внешнее подключение 2xGPIO, I2C, 3.3V, GND.
  • Можно установить модуль GSM SIM800L или ZigBee E18-MS1-PCB/IPX (Описание ниже)
  • USB для перепрограммирования.
  • Питание 9-15 Вольт.
  • Схема.

Схема. (Schematics)

Готовим платы к производству. 

https://www.pcbway.ru/

Всегда можно посмотреть процесс изготовления Вашей платы.

Процесс сборки (Монтаж PCB)

Analog1 = Напряжение на GSM модеме. R1 = 4.7K, R2 = 10K

V = (R1+R2)/R2 * (Analog1 * 3.3)/4095

V= ((4700+10000)/10000) * (3359*3.3)/4095 = 3.97V

Управление RGB(WS2812B) светодиодом:

SetOption17 1 – To set color units to R,G,B,W (0-255):

color 255,0,0,0 – Red
color 0,255,0,0 – Green
color 0,0,255,0 – Blue
color 0,0,0,255 – White

backlog color 0,0,255,0;dimmer 40

Улучшения по сравнению с предыдущими версиями.

Еще немного фото.

Настройка: 

Для инициализации GSM модема при старте или рестарте.

rule ON System#Boot do backlog power1 on;power1 off endon

Дополнительные модули.

При всех модулях.

backlog webbutton1 R1;
webbutton2 R2;
webbutton3 R3;
webbutton4 R4;
webbutton5 GSM;
webbutton6 WLED;
webbutton7 CLOCK;
webbutton8 IN1;
webbutton9 IN2;
webbutton10 IN3;
webbutton11 IN4

  • SetOption146 1 # to enable display of ESP32 internal temperature
  • GPIO4 – Reset SIM800L
  • backlog SetOption36 0;SetOption65 1;wificonfig 4; SetOption59 1; TelePeriod 150; TimeZone +3

Управление MCP23008:

Входа
backlog sensor29 0,2,1; sensor29 1,2,1; sensor29 2,2,1; sensor29 3,2,1

Индикация входа
backlog sensor29 4,5,0; sensor29 5,5,0; sensor29 6,5,0; sensor29 7,5,0

Посылаем SMS BerryScript:

var ser,msg
ser = serial(16, 17,115200, serial.SERIAL_8N1)

def sim800l(cmd, idx, payload, payload_json)

ser = serial(16, 17,115200, serial.SERIAL_8N1)
ser.write(bytes().fromstring(‘AT+CMGF=1\n’))
msg = ser.read()
ser.write(bytes().fromstring(‘AT+CMGS=\”+74951234567\”\n’))
msg = ser.read()
ser.write(bytes().fromstring(payload))
msg = ser.read()
ser.write(bytes().fromstring(‘\032’)) # 1A Ctrl-Z
msg = ser.read()
ser.flush()
print(‘SMS Done’)
tasmota.resp_cmnd_done()
end

tasmota.add_cmd(‘sms’, sim800l)

def p8() tasmota.cmd(“power8 toggle”) end
def p9() tasmota.cmd(“power9 toggle”) end
def p10() tasmota.cmd(“power10 toggle”) end
def p11() tasmota.cmd(“power11 toggle”) end

# tasmota.add_cron(“*/10 * * * * *”, p8, “Power8”)
# tasmota.add_cron(“*/15 * * * * *”, p9, “Power9”)
# tasmota.add_cron(“*/20 * * * * *”, p10, “Power10”)
# tasmota.add_cron(“*/25 * * * * *”, p11, “Power11”)