devices.esphome.io
SMARTBOB SM-LITE-1616R
SMARTBOB SM-LITE-1616R
Device Type: relayElectrical Standard: euBoard: esp32Difficulty: Comes with ESPhome, 1/5
      
  
        
        
SMARTBOB devices are a series of smart-home controllers designed for open home automation. They are based on ESP32 controllers and offer various useful options.
The product is dedicated to controlling AC and DC circuits (without power regulation, on/off), such as lights, power supplies, blinds, valves, sockets, and relays, as well as control signals for gate control and alarms
Available pre-flashed with ESPHome or SUPLA.
Maker: https://smartbob.pl
Product page: https://smartbob.pl/pl/lite-1-poziom/3-sm-lite-1616r.html
SM-LITE-1616R V1.5 version basic description
- 24V DC power supply (max 0.5A)
 - 16 input, VCC or GND logic level (by MCP23017 expander)
 - 16 output by 10A relays, potential-free with the possibility of roller shutter interlock (by MCP23017 expander)
 - 2x ADC for up to 24V voltage measurement (or input)
 - 1x ADC for power supply voltage measurement
 - Additional communication by: 2x I2C, 1WIRE, RS485
 - CT clamp input for SCT clamps
 - LAN or WIFI communication
 - 0.96C OLED display
 - Integrated USB programmer
 - Integrated hardware over-temp protection by 2xTMP102 (all relay off, hardware 80C or lower defined in YAML)
 - Integrated input control test buttons
 
GPIO Pinout for V1.5 version
LAN7820
Can be used for ethernet 10/100Mb communication.
| Pin | Function | 
|---|---|
| TYPE | LAN7820 | 
| GPIO23 | MDC | 
| GPIO18 | MDIO | 
| GPIO17 | CLOCK OUT | 
| GPIO25 | RX DO | 
| GPIO26 | RX D1 | 
| GPIO27 | CRS | 
| GPIO19 | TX D0 | 
| GPIO22 | TX D1 | 
| GPIO21 | TX EN | 
| PHY | 1 | 
I2C
Contains two I2C data lines :
- I2C 1 internal for MCP23017 expanders and OLED (reference speed 400kHz)
 - I2C 2 for external sensors or as input (3.3V logic level). Can be used to read external I2C
 - sensor like SHT31 or as input (3.3V logic level). Integrated 2.3k Ohm pull up on all lines.
 
| Pin | Function | 
|---|---|
| GPIO15 | SDA 1 internal | 
| GPIO5 | SCL 1 internal | 
| GPIO16 | SDA 2 external | 
| GPIO14 | SDA 2 external | 
Board contain this devices on internal I2C 1 line:
| Address | Device | 
|---|---|
| 0x20 | MCP23017 IN | 
| 0x21 | MCP23017 OUT | 
| 0x3C | OLED | 
| 0x48 | TMP102 1 | 
| 0x49 | TMP102 2 | 
RS485
Can be used to read external modbus devices like power meter like Eastron SDM120/240/630.
| Pin | Function | 
|---|---|
| GPIO13 | RX | 
| GPIO33 | TX | 
1WIRE
Can be used to read external sensor by 1WIRE like. DS18B20 or as input (3.3V logic level). Integrated 2.3k Ohm pull up.
| Pin | Function | 
|---|---|
| GPIO32 | 1WIRE | 
ADC or additional input
ADC1, ADC2 can be used to read ADC voltage up to 24V or use as input (24V logic level). One ADC3 is connected to power connector to measure voltage connected to board.
| Pin | Function | 
|---|---|
| GPIO35 | External ADC1 or INPUT | 
| GPIO34 | External ADC2 or INPUT | 
| GPIO36 | Internal ADC3 | 
Integrated divider with calibration values for ADC1-2:
| Adc | Voltage | 
|---|---|
| 0.62 | 5 | 
| 1.22 | 10 | 
| 1.83 | 15 | 
| 2.425 | 20 | 
| 2.975 | 25 | 
Integrated divider with calibration values for ADC3:
| Adc | Voltage | 
|---|---|
| 0.55 | 10 | 
| 0.825 | 15 | 
| 1.10 | 20 | 
| 1.37 | 25 | 
CT current clamp sensor input
Can be used to read from SCT-013 witch xA/1V output.
| Pin | Function | 
|---|---|
| GPIO39 | CT_CLAMP | 
Example YAML:
substitutions:  name: sm-lite-1616r-v15  friendly_name: sm-lite-1616r-v15
# NAMEesphome:  name: ${name}  comment: ${friendly_name}  on_boot:    then:      - display.page.show: page1      - delay: 7s      - display.page.show: page2
# HAapi:  encryption:    key: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"  reboot_timeout: 0s
# OTAota:  - platform: esphome  #password: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# PROCESOResp32:  board: esp32dev  framework:    type: arduino
# LOGOWANIElogger:  level: DEBUG
# 1WIREone_wire:  - platform: gpio    pin: GPIO32
# UART-RS485uart:  - id: mod_uart    rx_pin: 13    tx_pin: 33    baud_rate: 9600    stop_bits: 1    data_bits: 8    parity: NONE    debug:      direction: BOTH
# SENSOR CONFIGURATIONsensor:  # SCT SENSOR  - platform: ct_clamp    sensor: adc_ct    name: "SCT Current"    update_interval: 1s    filters:      - calibrate_linear:        - 0 -> 0        - 0.1 -> 2.5
  # SCT ADC  - platform: adc    pin: GPIO39    id: adc_ct    attenuation: 11db
  # EXT ADC INPUT 2  - platform: adc    pin: GPIO34    id: adc_sensor_2    attenuation: 11db    name: "Voltage ADC 2"    device_class: "voltage"    filters:      - calibrate_linear:        - 0.62 -> 5        - 1.22 -> 10        - 1.83 -> 15        - 2.425 -> 20        - 2.975 -> 25    update_interval: 1s
  # EXT ADC INPUT 1  - platform: adc    pin: GPIO35    id: adc_sensor_1    attenuation: 11db    name: "Voltage ADC 1"    device_class: "voltage"    filters:      - calibrate_linear:        - 0.62 -> 5        - 1.22 -> 10        - 1.83 -> 15        - 2.425 -> 20        - 2.975 -> 25    update_interval: 1s    # ADC INPUT VOLTAGE CHANNEL  - platform: adc    pin: GPIO36    id: adc_sensor_4    attenuation: 11db    name: "Power voltage"    device_class: "voltage"    filters:      - calibrate_linear:        - 0.55 -> 10        - 0.825 -> 15        - 1.10 -> 20        - 1.37 -> 25    update_interval: 1s
  # TMP102  - platform: tmp102    i2c_id: bus_a    name: "Temperatura PCB 1"    address: 0x48    id: temp_1    update_interval: 8s    on_value:      if:        condition:          sensor.in_range:            id: temp_1            above: 70.0        then:        - display.page.show: page3        - switch.turn_off: relay_01        - switch.turn_off: relay_02        - switch.turn_off: relay_03        - switch.turn_off: relay_04        - switch.turn_off: relay_05        - switch.turn_off: relay_06        - switch.turn_off: relay_07        - switch.turn_off: relay_08        - switch.turn_off: relay_09        - switch.turn_off: relay_10        - switch.turn_off: relay_11        - switch.turn_off: relay_12        - switch.turn_off: relay_13        - switch.turn_off: relay_14        - switch.turn_off: relay_15        - switch.turn_off: relay_16    # TMP102  - platform: tmp102    i2c_id: bus_a    name: "Temperatura PCB 2"    address: 0x49    id: temp_2    update_interval: 8s    on_value:      if:        condition:          sensor.in_range:            id: temp_2            above: 70.0        then:        - display.page.show: page3        - switch.turn_off: relay_01        - switch.turn_off: relay_02        - switch.turn_off: relay_03        - switch.turn_off: relay_04        - switch.turn_off: relay_05        - switch.turn_off: relay_06        - switch.turn_off: relay_07        - switch.turn_off: relay_08        - switch.turn_off: relay_09        - switch.turn_off: relay_10        - switch.turn_off: relay_11        - switch.turn_off: relay_12        - switch.turn_off: relay_13        - switch.turn_off: relay_14        - switch.turn_off: relay_15        - switch.turn_off: relay_16    # TIME  - platform: uptime    name: Uptime Sensor    id: uptime_sensor_M03    internal: true    update_interval: 60s    on_raw_value:      then:        - text_sensor.template.publish:            id: uptime_human_M03            state: !lambda |-              int seconds = round(id(uptime_sensor_M03).raw_state);              int days = seconds / (24 * 3600);              seconds = seconds % (24 * 3600);              int hours = seconds / 3600;              seconds = seconds % 3600;              int minutes = seconds /  60;              seconds = seconds % 60;              return (                (days ? to_string(days) + "d " : "") +                (hours ? to_string(hours) + "h " : "") +                (minutes ? to_string(minutes) + "m " : "") +                (to_string(seconds) + "s")              ).c_str();    # UPTIME  - platform: uptime    name: "Uptime Sensor M03"    id: upt_M03    internal: true
# KONFIGRUACJA ZEGARA CZASU RZECZYWISTEGOtime:  - platform: homeassistant    id: homeassistant_time  - platform: sntp    id: sntp_time    timezone: Europe/Sofia    servers:     - 0.pool.ntp.org     - 1.pool.ntp.org     - 2.pool.ntp.org
# LAN OR WIFI#wifi:  #ssid: "MY_WIFI_XX"    #password: "MY_WIFI_XX"  #id: eth
ethernet:  type: LAN8720  mdc_pin: GPIO23  mdio_pin: GPIO18  clk_mode: GPIO17_OUT  phy_addr: 1  id: eth    #manual_ip:  #  static_ip: 192.168.0.50  #  gateway: 192.168.0.1  #  subnet: 255.255.255.0  #  dns1 : 8.8.8.8  #  dns2 : 8.8.4.4
# I2Ci2c:   - id: bus_a     sda: 15     scl: 5     scan: true     frequency: 400kHz   - id: bus_b     sda: 16     scl: 14     scan: true     frequency: 400kHz
# MCP23017mcp23017:  - id: 'mcp23017_hub_2'    address: 0x20    i2c_id: bus_a  - id: 'mcp23017_hub_1'    address: 0x21    i2c_id: bus_a
# OUTPUTSswitch:  - platform: gpio    name: "REALY-01"    id: relay_01    pin:      mcp23xxx: mcp23017_hub_1      number: 8      mode: OUTPUT      inverted: false  - platform: gpio    name: "REALY-02"    id: relay_02    pin:      mcp23xxx: mcp23017_hub_1      number: 9      mode: OUTPUT      inverted: false  - platform: gpio    name: "REALY-03"    id: relay_03    pin:      mcp23xxx: mcp23017_hub_1      number: 10      mode: OUTPUT      inverted: false  - platform: gpio    name: "REALY-04"    id: relay_04    pin:      mcp23xxx: mcp23017_hub_1      number: 11      mode: OUTPUT      inverted: false  - platform: gpio    name: "REALY-05"    id: relay_05    pin:      mcp23xxx: mcp23017_hub_1      number: 12      mode: OUTPUT      inverted: false  - platform: gpio    name: "REALY-06"    id: relay_06    pin:      mcp23xxx: mcp23017_hub_1      number: 13      mode: OUTPUT      inverted: false  - platform: gpio    name: "REALY-07"    id: relay_07    pin:      mcp23xxx: mcp23017_hub_1      number: 14      mode: OUTPUT      inverted: false  - platform: gpio    name: "REALY-08"    id: relay_08    pin:      mcp23xxx: mcp23017_hub_1      number: 15      mode: OUTPUT      inverted: false  - platform: gpio    name: "REALY-09"    id: relay_09    pin:      mcp23xxx: mcp23017_hub_1      number: 2      mode: OUTPUT      inverted: false  - platform: gpio    name: "REALY-10"    id: relay_10    pin:      mcp23xxx: mcp23017_hub_1      number: 3      mode: OUTPUT      inverted: false  - platform: gpio    name: "REALY-11"    id: relay_11    pin:      mcp23xxx: mcp23017_hub_1      number: 4      mode: OUTPUT      inverted: false  - platform: gpio    name: "REALY-12"    id: relay_12    pin:      mcp23xxx: mcp23017_hub_1      number: 5      mode: OUTPUT      inverted: false  - platform: gpio    name: "REALY-13"    id: relay_13    pin:      mcp23xxx: mcp23017_hub_1      number: 6      mode: OUTPUT      inverted: false  - platform: gpio    name: "REALY-14"    id: relay_14    pin:      mcp23xxx: mcp23017_hub_1      number: 7      mode: OUTPUT      inverted: false  - platform: gpio    name: "REALY-15"    id: relay_15    pin:      mcp23xxx: mcp23017_hub_1      number: 1      mode: OUTPUT      inverted: false  - platform: gpio    name: "REALY-16"    id: relay_16    pin:      mcp23xxx: mcp23017_hub_1      number: 0      mode: OUTPUT      inverted: false
# INPUTSbinary_sensor:  - platform: gpio    name: "INPUT-01"    id: input_01    pin:      mcp23xxx: mcp23017_hub_2      number: 4      mode:        input: true        pullup: false      inverted: true    filters:    - delayed_on: 30ms    on_press:       then:        - switch.toggle: relay_01  - platform: gpio    name: "INPUT-02"    id: input_02    pin:      mcp23xxx: mcp23017_hub_2      number: 5      mode:        input: true        pullup: false      inverted: true    filters:    - delayed_on: 30ms    on_press:       then:        - switch.toggle: relay_02  - platform: gpio    name: "INPUT-03"    id: input_03    pin:      mcp23xxx: mcp23017_hub_2      number: 6      mode:        input: true        pullup: false      inverted: true    filters:    - delayed_on: 30ms    on_press:       then:        - switch.toggle: relay_03  - platform: gpio    name: "INPUT-04"    id: input_04    pin:      mcp23xxx: mcp23017_hub_2      number: 7      mode:        input: true        pullup: false      inverted: true    filters:    - delayed_on: 30ms    on_press:       then:        - switch.toggle: relay_04  - platform: gpio    name: "INPUT-05"    id: input_05    pin:      mcp23xxx: mcp23017_hub_2      number: 3      mode:        input: true        pullup: false      inverted: true    filters:    - delayed_on: 30ms    on_press:       then:        - switch.toggle: relay_05  - platform: gpio    name: "INPUT-06"    id: input_06    pin:      mcp23xxx: mcp23017_hub_2      number: 2      mode:        input: true        pullup: false      inverted: true    filters:    - delayed_on: 30ms    on_press:       then:        - switch.toggle: relay_06  - platform: gpio    name: "INPUT-07"    id: input_07    pin:      mcp23xxx: mcp23017_hub_2      number: 1      mode:        input: true        pullup: false      inverted: true    filters:    - delayed_on: 30ms    on_press:       then:        - switch.toggle: relay_07  - platform: gpio    name: "INPUT-08"    id: input_08    pin:      mcp23xxx: mcp23017_hub_2      number: 0      mode:        input: true        pullup: false      inverted: true    filters:    - delayed_on: 30ms    on_press:       then:        - switch.toggle: relay_08  - platform: gpio    name: "INPUT-09"    id: input_09    pin:      mcp23xxx: mcp23017_hub_2      number: 15      mode:        input: true        pullup: false      inverted: true    filters:    - delayed_on: 30ms    on_press:       then:        - switch.toggle: relay_09  - platform: gpio    name: "INPUT-10"    id: input_10    pin:      mcp23xxx: mcp23017_hub_2      number: 14      mode:        input: true        pullup: false      inverted: true    filters:    - delayed_on: 30ms    on_press:       then:        - switch.toggle: relay_10  - platform: gpio    name: "INPUT-11"    id: input_11    pin:      mcp23xxx: mcp23017_hub_2      number: 13      mode:        input: true        pullup: false      inverted: true    filters:    - delayed_on: 30ms    on_press:       then:        - switch.toggle: relay_11  - platform: gpio    name: "INPUT-12"    id: input_12    pin:      mcp23xxx: mcp23017_hub_2      number: 12      mode:        input: true        pullup: false      inverted: true    filters:    - delayed_on: 30ms    on_press:       then:        - switch.toggle: relay_12  - platform: gpio    name: "INPUT-13"    id: input_13    pin:      mcp23xxx: mcp23017_hub_2      number: 11      mode:        input: true        pullup: false      inverted: true    filters:    - delayed_on: 30ms    on_press:       then:        - switch.toggle: relay_13  - platform: gpio    name: "INPUT-14"    id: input_14    pin:      mcp23xxx: mcp23017_hub_2      number: 10      mode:        input: true        pullup: false      inverted: true    filters:    - delayed_on: 30ms    on_press:       then:        - switch.toggle: relay_14  - platform: gpio    name: "INPUT-15"    id: input_15    pin:      mcp23xxx: mcp23017_hub_2      number: 9      mode:        input: true        pullup: false      inverted: true    filters:    - delayed_on: 30ms    on_press:       then:        - switch.toggle: relay_15  - platform: gpio    name: "INPUT-16"    id: input_16    pin:      mcp23xxx: mcp23017_hub_2      number: 8      mode:        input: true        pullup: false      inverted: true    filters:    - delayed_on: 30ms    on_press:       then:        - switch.toggle: relay_16
# WEB SERWERweb_server:  port: 80  
# TEXTtext_sensor:  - platform: template    name: "ESP32-M03 Uptime"    id: uptime_human_M03    icon: mdi:clock-start  - platform: template    name: "IP"    id: ip_address    entity_category: diagnostic    icon: "mdi:ip-network"    #lambda: return { id(eth).get_ip_address().str() };    lambda: return { id(eth).get_ip_addresses()[0].str() };    update_interval: 10s
# FONTfont:- file: "gfonts://Roboto"  id: font1  size: 12
# DISPLAYdisplay:  - platform: ssd1306_i2c    i2c_id: bus_a    model: "SSD1306_128X64"    id: oled_display    pages:      - id: page1        lambda: |-          it.printf(32, 5, id(font1), "SMARTBOB");          it.printf(27, 22, id(font1), "AUTOMATYKA");            it.printf(5, 39, id(font1), "WWW.SMARTBOB.PL");        - id: page2        lambda: |-          int seconds = round(id(upt_M03).state);          int days = seconds / (24 * 3600);          seconds = seconds % (24 * 3600);          int hours = seconds / 3600;          it.printf(1, 1,  id(font1), "%s", id(ip_address).state.c_str());          it.printf(1, 17, id(font1),"%d dni, %02d godzin",days,hours);          it.printf(1, 33, id(font1), "SM-LITE-1616R");          it.printf(1, 49, id(font1), "%.1f°, %.1f°", id(temp_1).state, id(temp_2).state);      - id: page3        lambda: |-          it.printf(33, 5, id(font1), "OVERHEAT");          it.printf(33, 52, id(font1), "%.1f°, %.1f°", id(temp_1).state, id(temp_2).state);
export const _frontmatter = {"title":"SMARTBOB SM-LITE-1616R","date-published":"2025-03-07T00:00:00.000Z","type":"relay","standard":"eu","board":"esp32","project-url":"https://github.com/SmartbobAutomatyka/SmartbobAutomatyka-GIT/tree/main/ESPHOME-YAML","difficulty":1,"made-for-esphome":false}