<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Smart Home Automation Forum - T16M]]></title>
		<link>https://www.kincony.com/forum/</link>
		<description><![CDATA[Smart Home Automation Forum - https://www.kincony.com/forum]]></description>
		<pubDate>Sat, 07 Nov 2026 19:33:46 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[how to check i2c extend chip model]]></title>
			<link>https://www.kincony.com/forum/showthread.php?tid=9928</link>
			<pubDate>Mon, 02 Nov 2026 08:38:10 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://www.kincony.com/forum/member.php?action=profile&uid=1">admin</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.kincony.com/forum/showthread.php?tid=9928</guid>
			<description><![CDATA[Note: after 2026-11-01 KinCony begin use XL9555 i2c extend chip. you can use KCS v3 "SYSTEM" webpage to scan device show the model or config by ESPHome to scan i2c bus, will find the chip model.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.kincony.com/forum/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=10689" target="_blank" title="">KCSv3-i2c-scan.png</a> (Size: 98.9 KB / Downloads: 33)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[Note: after 2026-11-01 KinCony begin use XL9555 i2c extend chip. you can use KCS v3 "SYSTEM" webpage to scan device show the model or config by ESPHome to scan i2c bus, will find the chip model.<br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.kincony.com/forum/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=10689" target="_blank" title="">KCSv3-i2c-scan.png</a> (Size: 98.9 KB / Downloads: 33)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[T16M ESPHome yaml for home assistant by XL9555 chip]]></title>
			<link>https://www.kincony.com/forum/showthread.php?tid=9927</link>
			<pubDate>Mon, 02 Nov 2026 08:35:47 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://www.kincony.com/forum/member.php?action=profile&uid=1">admin</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.kincony.com/forum/showthread.php?tid=9927</guid>
			<description><![CDATA[<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code># Made by KinCony IoT: https://www.kincony.com<br />
# T16M with XL9555 I/O expanders, using the compatible xl9535 driver.<br />
# Channel 1-8: pins 0-7 (P00-P07).<br />
# Channel 9-16: pins 10-17 (P10-P17), NOT pins 8-15.<br />
<br />
esphome:<br />
  name: t16m<br />
  friendly_name: t16m<br />
<br />
esp32:<br />
  board: esp32-s3-devkitc-1<br />
  framework:<br />
    type: arduino<br />
<br />
logger:<br />
<br />
api:<br />
<br />
ethernet:<br />
  type: W5500<br />
  clk_pin: GPIO42<br />
  mosi_pin: GPIO43<br />
  miso_pin: GPIO44<br />
  cs_pin: GPIO41<br />
  interrupt_pin: GPIO2<br />
  reset_pin: GPIO1<br />
<br />
i2c:<br />
  - id: bus_a<br />
    sda: 11<br />
    scl: 12<br />
    scan: true<br />
    frequency: 400kHz<br />
<br />
xl9535:<br />
  - id: xl9555_hub_out_1<br />
    i2c_id: bus_a<br />
    address: 0x25<br />
<br />
  - id: xl9555_hub_in_1<br />
    i2c_id: bus_a<br />
    address: 0x24<br />
<br />
uart:<br />
  - id: uart_1<br />
    baud_rate: 9600<br />
    debug:<br />
      direction: BOTH<br />
      dummy_receiver: true<br />
      after:<br />
        timeout: 10ms<br />
    tx_pin: 13<br />
    rx_pin: 14<br />
<br />
switch:<br />
  - platform: uart<br />
    uart_id: uart_1<br />
    name: "RS485 Button"<br />
    data: [0x11, 0x22, 0x33, 0x44, 0x55]<br />
<br />
  - platform: gpio<br />
    name: "t16m-output01"<br />
    id: "t16m_output01"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 0<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output02"<br />
    id: "t16m_output02"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 1<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output03"<br />
    id: "t16m_output03"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 2<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output04"<br />
    id: "t16m_output04"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 3<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output05"<br />
    id: "t16m_output05"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 4<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output06"<br />
    id: "t16m_output06"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 5<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output07"<br />
    id: "t16m_output07"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 6<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output08"<br />
    id: "t16m_output08"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 7<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output09"<br />
    id: "t16m_output09"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 10<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output10"<br />
    id: "t16m_output10"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 11<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output11"<br />
    id: "t16m_output11"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 12<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output12"<br />
    id: "t16m_output12"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 13<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output13"<br />
    id: "t16m_output13"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 14<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output14"<br />
    id: "t16m_output14"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 15<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output15"<br />
    id: "t16m_output15"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 16<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output16"<br />
    id: "t16m_output16"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 17<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
binary_sensor:<br />
<br />
  - platform: gpio<br />
    name: "t16m-input01"<br />
    id: "t16m_input01"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 0<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input02"<br />
    id: "t16m_input02"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 1<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input03"<br />
    id: "t16m_input03"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 2<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input04"<br />
    id: "t16m_input04"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 3<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input05"<br />
    id: "t16m_input05"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 4<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input06"<br />
    id: "t16m_input06"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 5<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input07"<br />
    id: "t16m_input07"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 6<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input08"<br />
    id: "t16m_input08"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 7<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input09"<br />
    id: "t16m_input09"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 10<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input10"<br />
    id: "t16m_input10"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 11<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input11"<br />
    id: "t16m_input11"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 12<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input12"<br />
    id: "t16m_input12"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 13<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input13"<br />
    id: "t16m_input13"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 14<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input14"<br />
    id: "t16m_input14"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 15<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input15"<br />
    id: "t16m_input15"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 16<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input16"<br />
    id: "t16m_input16"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 17<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  # External pull-up resistors are installed on the PCB.<br />
  - platform: gpio<br />
    name: "t16m-W1-io8"<br />
    pin:<br />
      number: 8<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-W1-io9"<br />
    pin:<br />
      number: 9<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-W1-io10"<br />
    pin:<br />
      number: 10<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-W1-io15"<br />
    pin:<br />
      number: 15<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-W1-io16"<br />
    pin:<br />
      number: 16<br />
      inverted: false<br />
<br />
  - platform: gpio<br />
    name: "t16m-W1-io17"<br />
    pin:<br />
      number: 17<br />
      inverted: false<br />
<br />
  - platform: gpio<br />
    name: "t16m-W1-io18"<br />
    pin:<br />
      number: 18<br />
      inverted: false<br />
<br />
  - platform: gpio<br />
    name: "t16m-io0"<br />
    pin:<br />
      number: 0<br />
      inverted: false<br />
<br />
web_server:<br />
  port: 80</code></div></div> download yaml file: <br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.kincony.com/forum/images/attachtypes/txt.png" title="Text Document" border="0" alt=".txt" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=10686" target="_blank" title="">T16M-HA-XL9555.txt</a> (Size: 7.28 KB / Downloads: 24)
<!-- end: postbit_attachments_attachment --><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.kincony.com/forum/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=10687" target="_blank" title="">T16M-HA.png</a> (Size: 129.55 KB / Downloads: 33)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code># Made by KinCony IoT: https://www.kincony.com<br />
# T16M with XL9555 I/O expanders, using the compatible xl9535 driver.<br />
# Channel 1-8: pins 0-7 (P00-P07).<br />
# Channel 9-16: pins 10-17 (P10-P17), NOT pins 8-15.<br />
<br />
esphome:<br />
  name: t16m<br />
  friendly_name: t16m<br />
<br />
esp32:<br />
  board: esp32-s3-devkitc-1<br />
  framework:<br />
    type: arduino<br />
<br />
logger:<br />
<br />
api:<br />
<br />
ethernet:<br />
  type: W5500<br />
  clk_pin: GPIO42<br />
  mosi_pin: GPIO43<br />
  miso_pin: GPIO44<br />
  cs_pin: GPIO41<br />
  interrupt_pin: GPIO2<br />
  reset_pin: GPIO1<br />
<br />
i2c:<br />
  - id: bus_a<br />
    sda: 11<br />
    scl: 12<br />
    scan: true<br />
    frequency: 400kHz<br />
<br />
xl9535:<br />
  - id: xl9555_hub_out_1<br />
    i2c_id: bus_a<br />
    address: 0x25<br />
<br />
  - id: xl9555_hub_in_1<br />
    i2c_id: bus_a<br />
    address: 0x24<br />
<br />
uart:<br />
  - id: uart_1<br />
    baud_rate: 9600<br />
    debug:<br />
      direction: BOTH<br />
      dummy_receiver: true<br />
      after:<br />
        timeout: 10ms<br />
    tx_pin: 13<br />
    rx_pin: 14<br />
<br />
switch:<br />
  - platform: uart<br />
    uart_id: uart_1<br />
    name: "RS485 Button"<br />
    data: [0x11, 0x22, 0x33, 0x44, 0x55]<br />
<br />
  - platform: gpio<br />
    name: "t16m-output01"<br />
    id: "t16m_output01"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 0<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output02"<br />
    id: "t16m_output02"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 1<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output03"<br />
    id: "t16m_output03"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 2<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output04"<br />
    id: "t16m_output04"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 3<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output05"<br />
    id: "t16m_output05"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 4<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output06"<br />
    id: "t16m_output06"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 5<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output07"<br />
    id: "t16m_output07"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 6<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output08"<br />
    id: "t16m_output08"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 7<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output09"<br />
    id: "t16m_output09"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 10<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output10"<br />
    id: "t16m_output10"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 11<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output11"<br />
    id: "t16m_output11"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 12<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output12"<br />
    id: "t16m_output12"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 13<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output13"<br />
    id: "t16m_output13"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 14<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output14"<br />
    id: "t16m_output14"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 15<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output15"<br />
    id: "t16m_output15"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 16<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-output16"<br />
    id: "t16m_output16"<br />
    pin:<br />
      xl9535: xl9555_hub_out_1<br />
      number: 17<br />
      mode: OUTPUT<br />
      inverted: true<br />
<br />
binary_sensor:<br />
<br />
  - platform: gpio<br />
    name: "t16m-input01"<br />
    id: "t16m_input01"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 0<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input02"<br />
    id: "t16m_input02"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 1<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input03"<br />
    id: "t16m_input03"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 2<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input04"<br />
    id: "t16m_input04"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 3<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input05"<br />
    id: "t16m_input05"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 4<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input06"<br />
    id: "t16m_input06"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 5<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input07"<br />
    id: "t16m_input07"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 6<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input08"<br />
    id: "t16m_input08"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 7<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input09"<br />
    id: "t16m_input09"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 10<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input10"<br />
    id: "t16m_input10"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 11<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input11"<br />
    id: "t16m_input11"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 12<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input12"<br />
    id: "t16m_input12"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 13<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input13"<br />
    id: "t16m_input13"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 14<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input14"<br />
    id: "t16m_input14"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 15<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input15"<br />
    id: "t16m_input15"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 16<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-input16"<br />
    id: "t16m_input16"<br />
    pin:<br />
      xl9535: xl9555_hub_in_1<br />
      number: 17<br />
      mode: INPUT<br />
      inverted: true<br />
<br />
  # External pull-up resistors are installed on the PCB.<br />
  - platform: gpio<br />
    name: "t16m-W1-io8"<br />
    pin:<br />
      number: 8<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-W1-io9"<br />
    pin:<br />
      number: 9<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-W1-io10"<br />
    pin:<br />
      number: 10<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-W1-io15"<br />
    pin:<br />
      number: 15<br />
      inverted: true<br />
<br />
  - platform: gpio<br />
    name: "t16m-W1-io16"<br />
    pin:<br />
      number: 16<br />
      inverted: false<br />
<br />
  - platform: gpio<br />
    name: "t16m-W1-io17"<br />
    pin:<br />
      number: 17<br />
      inverted: false<br />
<br />
  - platform: gpio<br />
    name: "t16m-W1-io18"<br />
    pin:<br />
      number: 18<br />
      inverted: false<br />
<br />
  - platform: gpio<br />
    name: "t16m-io0"<br />
    pin:<br />
      number: 0<br />
      inverted: false<br />
<br />
web_server:<br />
  port: 80</code></div></div> download yaml file: <br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.kincony.com/forum/images/attachtypes/txt.png" title="Text Document" border="0" alt=".txt" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=10686" target="_blank" title="">T16M-HA-XL9555.txt</a> (Size: 7.28 KB / Downloads: 24)
<!-- end: postbit_attachments_attachment --><br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.kincony.com/forum/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=10687" target="_blank" title="">T16M-HA.png</a> (Size: 129.55 KB / Downloads: 33)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[arduino code examples for T16M]-02 Read digital input ports state by 9555 chip]]></title>
			<link>https://www.kincony.com/forum/showthread.php?tid=9921</link>
			<pubDate>Thu, 29 Oct 2026 16:42:59 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://www.kincony.com/forum/member.php?action=profile&uid=1">admin</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.kincony.com/forum/showthread.php?tid=9921</guid>
			<description><![CDATA[<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>/*<br />
 * Made by KinCony IoT: https://www.kincony.com<br />
 *<br />
 * Description:<br />
 * This Arduino program reads 16 digital inputs from an XL9555<br />
 * I/O expander using the PCA95x5 library.<br />
 *<br />
 * Input states are printed as a fixed-width 16-bit binary value:<br />
 * - Leftmost bit:  CH16 (port 15)<br />
 * - Rightmost bit: CH1  (port 0)<br />
 * - 0 = ON<br />
 * - 1 = OFF<br />
 *<br />
 * Pin Definitions:<br />
 * - SDA: GPIO 11<br />
 * - SCL: GPIO 12<br />
 * - XL9555 I2C Address: 0x24<br />
 *<br />
 * Read Interval:<br />
 * - 500 milliseconds<br />
 */<br />
<br />
#include &lt;Arduino.h&gt;<br />
#include &lt;Wire.h&gt;<br />
#include &lt;PCA95x5.h&gt;<br />
<br />
// Define I2C pins and device address.<br />
#define I2C_SDA      11<br />
#define I2C_SCL      12<br />
#define I2C_ADDRESS  0x24<br />
<br />
// Use the PCA9555 driver for the XL9555 I/O expander.<br />
PCA9555 inputIO;<br />
<br />
void setup() {<br />
    Serial.begin(115200);<br />
<br />
    // Initialize I2C: SDA = GPIO11, SCL = GPIO12, clock = 100 kHz.<br />
    Wire.begin(I2C_SDA, I2C_SCL, 100000);<br />
<br />
    // Attach the XL9555 to the I2C bus.<br />
    inputIO.attach(Wire, I2C_ADDRESS);<br />
<br />
    // Read the original input levels without polarity inversion.<br />
    inputIO.polarity(PCA95x5::Polarity::ORIGINAL_ALL);<br />
<br />
    // Configure all 16 ports as inputs.<br />
    inputIO.direction(PCA95x5::Direction::IN_ALL);<br />
<br />
    delay(50);<br />
<br />
    Serial.println("KinCony XL9555 16-channel input test");<br />
    Serial.println("0 = ON, 1 = OFF");<br />
    Serial.println("Bit order: CH16 ... CH1");<br />
}<br />
<br />
void loop() {<br />
    // Read all 16 input ports.<br />
    uint16_t state = inputIO.read();<br />
<br />
    // Print all 16 bits, including leading zeros.<br />
    Serial.print("Input state: ");<br />
<br />
    for (int bit = 15; bit &gt;= 0; bit--) {<br />
        Serial.print((state &gt;&gt; bit) &amp; 0x01);<br />
    }<br />
<br />
    Serial.println();<br />
<br />
    delay(500);<br />
}</code></div></div> arduino ino file download: <br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.kincony.com/forum/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=10677" target="_blank" title="">2-digital-input-9555.zip</a> (Size: 992 bytes / Downloads: 38)
<!-- end: postbit_attachments_attachment --><br />
BIN file (you can use esp32 download tool download to ESP32-S3 with address 0x0 then directly to use) download:  <br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.kincony.com/forum/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=10678" target="_blank" title="">2-digital-input-9555.ino.merged.zip</a> (Size: 194.18 KB / Downloads: 32)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>/*<br />
 * Made by KinCony IoT: https://www.kincony.com<br />
 *<br />
 * Description:<br />
 * This Arduino program reads 16 digital inputs from an XL9555<br />
 * I/O expander using the PCA95x5 library.<br />
 *<br />
 * Input states are printed as a fixed-width 16-bit binary value:<br />
 * - Leftmost bit:  CH16 (port 15)<br />
 * - Rightmost bit: CH1  (port 0)<br />
 * - 0 = ON<br />
 * - 1 = OFF<br />
 *<br />
 * Pin Definitions:<br />
 * - SDA: GPIO 11<br />
 * - SCL: GPIO 12<br />
 * - XL9555 I2C Address: 0x24<br />
 *<br />
 * Read Interval:<br />
 * - 500 milliseconds<br />
 */<br />
<br />
#include &lt;Arduino.h&gt;<br />
#include &lt;Wire.h&gt;<br />
#include &lt;PCA95x5.h&gt;<br />
<br />
// Define I2C pins and device address.<br />
#define I2C_SDA      11<br />
#define I2C_SCL      12<br />
#define I2C_ADDRESS  0x24<br />
<br />
// Use the PCA9555 driver for the XL9555 I/O expander.<br />
PCA9555 inputIO;<br />
<br />
void setup() {<br />
    Serial.begin(115200);<br />
<br />
    // Initialize I2C: SDA = GPIO11, SCL = GPIO12, clock = 100 kHz.<br />
    Wire.begin(I2C_SDA, I2C_SCL, 100000);<br />
<br />
    // Attach the XL9555 to the I2C bus.<br />
    inputIO.attach(Wire, I2C_ADDRESS);<br />
<br />
    // Read the original input levels without polarity inversion.<br />
    inputIO.polarity(PCA95x5::Polarity::ORIGINAL_ALL);<br />
<br />
    // Configure all 16 ports as inputs.<br />
    inputIO.direction(PCA95x5::Direction::IN_ALL);<br />
<br />
    delay(50);<br />
<br />
    Serial.println("KinCony XL9555 16-channel input test");<br />
    Serial.println("0 = ON, 1 = OFF");<br />
    Serial.println("Bit order: CH16 ... CH1");<br />
}<br />
<br />
void loop() {<br />
    // Read all 16 input ports.<br />
    uint16_t state = inputIO.read();<br />
<br />
    // Print all 16 bits, including leading zeros.<br />
    Serial.print("Input state: ");<br />
<br />
    for (int bit = 15; bit &gt;= 0; bit--) {<br />
        Serial.print((state &gt;&gt; bit) &amp; 0x01);<br />
    }<br />
<br />
    Serial.println();<br />
<br />
    delay(500);<br />
}</code></div></div> arduino ino file download: <br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.kincony.com/forum/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=10677" target="_blank" title="">2-digital-input-9555.zip</a> (Size: 992 bytes / Downloads: 38)
<!-- end: postbit_attachments_attachment --><br />
BIN file (you can use esp32 download tool download to ESP32-S3 with address 0x0 then directly to use) download:  <br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.kincony.com/forum/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=10678" target="_blank" title="">2-digital-input-9555.ino.merged.zip</a> (Size: 194.18 KB / Downloads: 32)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[[arduino code examples for T16M]-01 Turn ON/OFF OUTPUT by 9555 chip]]></title>
			<link>https://www.kincony.com/forum/showthread.php?tid=9920</link>
			<pubDate>Thu, 29 Oct 2026 16:41:16 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://www.kincony.com/forum/member.php?action=profile&uid=1">admin</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.kincony.com/forum/showthread.php?tid=9920</guid>
			<description><![CDATA[<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>/*<br />
 * Made by KinCony IoT: https://www.kincony.com<br />
 *<br />
 * This program controls a 16-channel relay board via an XL9555<br />
 * I/O expander using the PCA95x5 library.<br />
 *<br />
 * It sequentially turns ON all 16 relays, then sequentially<br />
 * turns them OFF, repeating continuously.<br />
 *<br />
 * Pin Definitions:<br />
 * - SDA: GPIO 11<br />
 * - SCL: GPIO 12<br />
 *<br />
 * I2C Address:<br />
 * - XL9555: 0x25<br />
 *<br />
 * Relay Logic:<br />
 * - LOW  = ON<br />
 * - HIGH = OFF<br />
 *<br />
 * Switching Interval:<br />
 * - 200 milliseconds<br />
 */<br />
<br />
#include &lt;Wire.h&gt;<br />
#include &lt;PCA95x5.h&gt;<br />
<br />
#define I2C_SDA_PIN  11<br />
#define I2C_SCL_PIN  12<br />
#define I2C_ADDRESS  0x25<br />
#define DELAY_TIME &nbsp;&nbsp;200<br />
#define RELAY_COUNT  16<br />
<br />
// Use the PCA9555 driver for the XL9555 I/O expander.<br />
PCA9555 relayIO;<br />
<br />
void setup() {<br />
  // Initialize serial communication.<br />
  Serial.begin(115200);<br />
<br />
  // Initialize I2C: SDA = GPIO11, SCL = GPIO12, clock = 100 kHz.<br />
  Wire.begin(I2C_SDA_PIN, I2C_SCL_PIN, 100000);<br />
<br />
  Serial.println("XL9555 Relay Control: Starting...");<br />
<br />
  // Attach the XL9555 to the I2C bus.<br />
  relayIO.attach(Wire, I2C_ADDRESS);<br />
<br />
  // Disable input polarity inversion.<br />
  relayIO.polarity(PCA95x5::Polarity::ORIGINAL_ALL);<br />
<br />
  // Preload all output latches HIGH before enabling outputs.<br />
  // HIGH keeps the active-low relays OFF.<br />
  relayIO.write(PCA95x5::Level::H_ALL);<br />
<br />
  // Configure all 16 ports as outputs.<br />
  relayIO.direction(PCA95x5::Direction::OUT_ALL);<br />
<br />
  delay(50);<br />
<br />
  Serial.println("All relays initialized to OFF.");<br />
}<br />
<br />
void loop() {<br />
  // Sequentially turn ON relays 1-16.<br />
  for (int i = 0; i &lt; RELAY_COUNT; i++) {<br />
    relayIO.write(<br />
      (PCA95x5::Port::Port)i,<br />
      PCA95x5::Level::L<br />
    );<br />
<br />
    Serial.print("Relay ");<br />
    Serial.print(i + 1);<br />
    Serial.println(" ON");<br />
<br />
    delay(DELAY_TIME);<br />
  }<br />
<br />
  // Sequentially turn OFF relays 1-16.<br />
  for (int i = 0; i &lt; RELAY_COUNT; i++) {<br />
    relayIO.write(<br />
      (PCA95x5::Port::Port)i,<br />
      PCA95x5::Level::H<br />
    );<br />
<br />
    Serial.print("Relay ");<br />
    Serial.print(i + 1);<br />
    Serial.println(" OFF");<br />
<br />
    delay(DELAY_TIME);<br />
  }<br />
}</code></div></div> arduino ino file download: <br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.kincony.com/forum/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=10675" target="_blank" title="">1-output-9555.zip</a> (Size: 1,016 bytes / Downloads: 39)
<!-- end: postbit_attachments_attachment --><br />
BIN file (you can use esp32 download tool download to ESP32-S3 with address 0x0 then directly to use) download: <br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.kincony.com/forum/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=10676" target="_blank" title="">1-output-9555.ino.merged.zip</a> (Size: 194.16 KB / Downloads: 35)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>/*<br />
 * Made by KinCony IoT: https://www.kincony.com<br />
 *<br />
 * This program controls a 16-channel relay board via an XL9555<br />
 * I/O expander using the PCA95x5 library.<br />
 *<br />
 * It sequentially turns ON all 16 relays, then sequentially<br />
 * turns them OFF, repeating continuously.<br />
 *<br />
 * Pin Definitions:<br />
 * - SDA: GPIO 11<br />
 * - SCL: GPIO 12<br />
 *<br />
 * I2C Address:<br />
 * - XL9555: 0x25<br />
 *<br />
 * Relay Logic:<br />
 * - LOW  = ON<br />
 * - HIGH = OFF<br />
 *<br />
 * Switching Interval:<br />
 * - 200 milliseconds<br />
 */<br />
<br />
#include &lt;Wire.h&gt;<br />
#include &lt;PCA95x5.h&gt;<br />
<br />
#define I2C_SDA_PIN  11<br />
#define I2C_SCL_PIN  12<br />
#define I2C_ADDRESS  0x25<br />
#define DELAY_TIME &nbsp;&nbsp;200<br />
#define RELAY_COUNT  16<br />
<br />
// Use the PCA9555 driver for the XL9555 I/O expander.<br />
PCA9555 relayIO;<br />
<br />
void setup() {<br />
  // Initialize serial communication.<br />
  Serial.begin(115200);<br />
<br />
  // Initialize I2C: SDA = GPIO11, SCL = GPIO12, clock = 100 kHz.<br />
  Wire.begin(I2C_SDA_PIN, I2C_SCL_PIN, 100000);<br />
<br />
  Serial.println("XL9555 Relay Control: Starting...");<br />
<br />
  // Attach the XL9555 to the I2C bus.<br />
  relayIO.attach(Wire, I2C_ADDRESS);<br />
<br />
  // Disable input polarity inversion.<br />
  relayIO.polarity(PCA95x5::Polarity::ORIGINAL_ALL);<br />
<br />
  // Preload all output latches HIGH before enabling outputs.<br />
  // HIGH keeps the active-low relays OFF.<br />
  relayIO.write(PCA95x5::Level::H_ALL);<br />
<br />
  // Configure all 16 ports as outputs.<br />
  relayIO.direction(PCA95x5::Direction::OUT_ALL);<br />
<br />
  delay(50);<br />
<br />
  Serial.println("All relays initialized to OFF.");<br />
}<br />
<br />
void loop() {<br />
  // Sequentially turn ON relays 1-16.<br />
  for (int i = 0; i &lt; RELAY_COUNT; i++) {<br />
    relayIO.write(<br />
      (PCA95x5::Port::Port)i,<br />
      PCA95x5::Level::L<br />
    );<br />
<br />
    Serial.print("Relay ");<br />
    Serial.print(i + 1);<br />
    Serial.println(" ON");<br />
<br />
    delay(DELAY_TIME);<br />
  }<br />
<br />
  // Sequentially turn OFF relays 1-16.<br />
  for (int i = 0; i &lt; RELAY_COUNT; i++) {<br />
    relayIO.write(<br />
      (PCA95x5::Port::Port)i,<br />
      PCA95x5::Level::H<br />
    );<br />
<br />
    Serial.print("Relay ");<br />
    Serial.print(i + 1);<br />
    Serial.println(" OFF");<br />
<br />
    delay(DELAY_TIME);<br />
  }<br />
}</code></div></div> arduino ino file download: <br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.kincony.com/forum/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=10675" target="_blank" title="">1-output-9555.zip</a> (Size: 1,016 bytes / Downloads: 39)
<!-- end: postbit_attachments_attachment --><br />
BIN file (you can use esp32 download tool download to ESP32-S3 with address 0x0 then directly to use) download: <br />
<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.kincony.com/forum/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=10676" target="_blank" title="">1-output-9555.ino.merged.zip</a> (Size: 194.16 KB / Downloads: 35)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Output pin protection]]></title>
			<link>https://www.kincony.com/forum/showthread.php?tid=9836</link>
			<pubDate>Fri, 18 Sep 2026 04:22:34 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://www.kincony.com/forum/member.php?action=profile&uid=2997">kremilek</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.kincony.com/forum/showthread.php?tid=9836</guid>
			<description><![CDATA[Hello, is there included any onboard overvoltage protections to switch inductive load? I need to switch electromagnetic valve 24V / 1A. Thanks<br />
<br />
Radovan]]></description>
			<content:encoded><![CDATA[Hello, is there included any onboard overvoltage protections to switch inductive load? I need to switch electromagnetic valve 24V / 1A. Thanks<br />
<br />
Radovan]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[CAN-BUS Transceiver]]></title>
			<link>https://www.kincony.com/forum/showthread.php?tid=9724</link>
			<pubDate>Fri, 07 Aug 2026 16:07:15 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://www.kincony.com/forum/member.php?action=profile&uid=9314">jc10000rpm</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.kincony.com/forum/showthread.php?tid=9724</guid>
			<description><![CDATA[what pins can be used for a CAN-BUS transceiver]]></description>
			<content:encoded><![CDATA[what pins can be used for a CAN-BUS transceiver]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[T16M Smart Controller Wiring Examples]]></title>
			<link>https://www.kincony.com/forum/showthread.php?tid=9273</link>
			<pubDate>Mon, 20 Apr 2026 13:28:02 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://www.kincony.com/forum/member.php?action=profile&uid=1">admin</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.kincony.com/forum/showthread.php?tid=9273</guid>
			<description><![CDATA[<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.kincony.com/forum/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=9655" target="_blank" title="">T16M_wiring.jpg</a> (Size: 336.18 KB / Downloads: 486)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.kincony.com/forum/images/attachtypes/image.png" title="JPG Image" border="0" alt=".jpg" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=9655" target="_blank" title="">T16M_wiring.jpg</a> (Size: 336.18 KB / Downloads: 486)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[T16M Smart Controller ESP32 system block diagram]]></title>
			<link>https://www.kincony.com/forum/showthread.php?tid=9272</link>
			<pubDate>Mon, 20 Apr 2026 13:27:22 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://www.kincony.com/forum/member.php?action=profile&uid=1">admin</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.kincony.com/forum/showthread.php?tid=9272</guid>
			<description><![CDATA[<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.kincony.com/forum/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=9654" target="_blank" title="">KinCony-T16M-smart-controller-diagram.png</a> (Size: 618.99 KB / Downloads: 346)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[<!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://www.kincony.com/forum/images/attachtypes/image.png" title="PNG Image" border="0" alt=".png" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=9654" target="_blank" title="">KinCony-T16M-smart-controller-diagram.png</a> (Size: 618.99 KB / Downloads: 346)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[I don't understand the #Enable error on the protocols.]]></title>
			<link>https://www.kincony.com/forum/showthread.php?tid=9142</link>
			<pubDate>Fri, 20 Mar 2026 01:12:59 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://www.kincony.com/forum/member.php?action=profile&uid=10472">H_spadacini</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.kincony.com/forum/showthread.php?tid=9142</guid>
			<description><![CDATA[Quand je reprends le programme pour le T16M diffuse en exemple : <a href="https://devices.esphome.io/devices/kincony-t16m/" target="_blank" rel="noopener" class="mycode_url">https://devices.esphome.io/devices/kincony-t16m/</a> sur site GIT, or je reçois une erreur a la compilation de cet exemple :<br />
# Enable logging<br />
logger:<br />
# Enable Home Assistant API<br />
api:<br />
msg erreur <br />
 C:\Users\Herve\Downloads\Kincony\T16M\Programme_Base_T16M\Programme_Base_T16M.ino:10:3: error: invalid preprocessing directive #Enable<br />
  10 | # Enable logging<br />
      |  ^~~~~~<br />
C:\Users\Herve\Downloads\Kincony\T16M\Programme_Base_T16M\Programme_Base_T16M.ino:13:3: error: invalid preprocessing directive #Enable<br />
  13 | # Enable Home Assistant API<br />
      |  ^~~~~~<br />
exit status 1<br />
<br />
Compilation error: invalid preprocessing directive #EnableC:\Users\Herve\Downloads\Kincony\T16M\Programme_Base_T16M\Programme_Base_T16M.ino:10:3: error: invalid preprocessing directive #Enable<br />
  10 | # Enable logging<br />
      |  ^~~~~~<br />
C:\Users\Herve\Downloads\Kincony\T16M\Programme_Base_T16M\Programme_Base_T16M.ino:13:3: error: invalid preprocessing directive #Enable<br />
  13 | # Enable Home Assistant API<br />
      |  ^~~~~~<br />
exit status 1<br />
<br />
Compilation error: invalid preprocessing directive #Enable<br />
<br />
comme je suis debutant en arduino/ESP32S3, il me semble que la syntaxe manquant devrait comprends une fonction disable par fonction mais sur pas encore un as en arduino..mdr<br />
j'ai besoin de votre lumiere merci d'avance. cela parce preparant le code pour le relay T16M.<br />
la config : AIO maitre , T16M : Esclave pour compense le manque d'entrées /sorties de l'aio Hybride en reseau modbus , avec un ecran 7 pouces en Modbus . pour la programmation suis partir sur un melange en arduino avec EditeurPlc pour la partir PLC.<br />
en autre , pour ce dernier , on doit declarer les variables externes ESP32S3, donc partir programmation sur le T16M me semble une bonne idee , merci de votre reponse.]]></description>
			<content:encoded><![CDATA[Quand je reprends le programme pour le T16M diffuse en exemple : <a href="https://devices.esphome.io/devices/kincony-t16m/" target="_blank" rel="noopener" class="mycode_url">https://devices.esphome.io/devices/kincony-t16m/</a> sur site GIT, or je reçois une erreur a la compilation de cet exemple :<br />
# Enable logging<br />
logger:<br />
# Enable Home Assistant API<br />
api:<br />
msg erreur <br />
 C:\Users\Herve\Downloads\Kincony\T16M\Programme_Base_T16M\Programme_Base_T16M.ino:10:3: error: invalid preprocessing directive #Enable<br />
  10 | # Enable logging<br />
      |  ^~~~~~<br />
C:\Users\Herve\Downloads\Kincony\T16M\Programme_Base_T16M\Programme_Base_T16M.ino:13:3: error: invalid preprocessing directive #Enable<br />
  13 | # Enable Home Assistant API<br />
      |  ^~~~~~<br />
exit status 1<br />
<br />
Compilation error: invalid preprocessing directive #EnableC:\Users\Herve\Downloads\Kincony\T16M\Programme_Base_T16M\Programme_Base_T16M.ino:10:3: error: invalid preprocessing directive #Enable<br />
  10 | # Enable logging<br />
      |  ^~~~~~<br />
C:\Users\Herve\Downloads\Kincony\T16M\Programme_Base_T16M\Programme_Base_T16M.ino:13:3: error: invalid preprocessing directive #Enable<br />
  13 | # Enable Home Assistant API<br />
      |  ^~~~~~<br />
exit status 1<br />
<br />
Compilation error: invalid preprocessing directive #Enable<br />
<br />
comme je suis debutant en arduino/ESP32S3, il me semble que la syntaxe manquant devrait comprends une fonction disable par fonction mais sur pas encore un as en arduino..mdr<br />
j'ai besoin de votre lumiere merci d'avance. cela parce preparant le code pour le relay T16M.<br />
la config : AIO maitre , T16M : Esclave pour compense le manque d'entrées /sorties de l'aio Hybride en reseau modbus , avec un ecran 7 pouces en Modbus . pour la programmation suis partir sur un melange en arduino avec EditeurPlc pour la partir PLC.<br />
en autre , pour ce dernier , on doit declarer les variables externes ESP32S3, donc partir programmation sur le T16M me semble une bonne idee , merci de votre reponse.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[T16M not responding on USB]]></title>
			<link>https://www.kincony.com/forum/showthread.php?tid=8879</link>
			<pubDate>Sun, 04 Jan 2026 20:04:07 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://www.kincony.com/forum/member.php?action=profile&uid=10133">robarends</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.kincony.com/forum/showthread.php?tid=8879</guid>
			<description><![CDATA[Hello,<br />
<br />
I have 2 T16M.<br />
<br />
I am building a Wiegand door lock controller with ESPHome firmware, and am proceeding well.<br />
<br />
I am currently using my second T16M with a Wiegand S20 keypad via a 5v - 3v3 logic level shifter.<br />
<br />
<br />
However when I was using the first T16M, I did not use the 5v - 3v3 logic level shifter.<br />
After some time of development using ESPhome it stopped responding via USB.<br />
I had assumed I damaged the T16M.<br />
<br />
You have advised that "you can connect Wiegand D0 and D1 to T16M free GPIOs directly, not need logic convert.", so therefore my assumption was incorrect.<br />
<br />
I have seen in another thread that you can reset the T16M using the DW button while power-on.<br />
<br />
Using that method has not made the USB work.<br />
<br />
What can I do to make the USB work again?<br />
<br />
Thanks, Rob.]]></description>
			<content:encoded><![CDATA[Hello,<br />
<br />
I have 2 T16M.<br />
<br />
I am building a Wiegand door lock controller with ESPHome firmware, and am proceeding well.<br />
<br />
I am currently using my second T16M with a Wiegand S20 keypad via a 5v - 3v3 logic level shifter.<br />
<br />
<br />
However when I was using the first T16M, I did not use the 5v - 3v3 logic level shifter.<br />
After some time of development using ESPhome it stopped responding via USB.<br />
I had assumed I damaged the T16M.<br />
<br />
You have advised that "you can connect Wiegand D0 and D1 to T16M free GPIOs directly, not need logic convert.", so therefore my assumption was incorrect.<br />
<br />
I have seen in another thread that you can reset the T16M using the DW button while power-on.<br />
<br />
Using that method has not made the USB work.<br />
<br />
What can I do to make the USB work again?<br />
<br />
Thanks, Rob.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[T16M ESPHome and EPROM]]></title>
			<link>https://www.kincony.com/forum/showthread.php?tid=8877</link>
			<pubDate>Sat, 03 Jan 2026 20:05:41 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://www.kincony.com/forum/member.php?action=profile&uid=10133">robarends</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.kincony.com/forum/showthread.php?tid=8877</guid>
			<description><![CDATA[Hello,<br />
<br />
In the pin definition for the T16M, it shows the Eprom on the I2c bus.<br />
<br />
How can we use the Eprom in ESPHome, and what is the size of the storage?<br />
<br />
<br />
Thanks, Rob]]></description>
			<content:encoded><![CDATA[Hello,<br />
<br />
In the pin definition for the T16M, it shows the Eprom on the I2c bus.<br />
<br />
How can we use the Eprom in ESPHome, and what is the size of the storage?<br />
<br />
<br />
Thanks, Rob]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Wiegand and GPIO on T16M]]></title>
			<link>https://www.kincony.com/forum/showthread.php?tid=8875</link>
			<pubDate>Sat, 03 Jan 2026 20:02:40 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://www.kincony.com/forum/member.php?action=profile&uid=10133">robarends</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.kincony.com/forum/showthread.php?tid=8875</guid>
			<description><![CDATA[Hello,<br />
<br />
I have a T16M (ESPHome), and I need to connect 4 Wiegand keypads (8 GPIO required).  There are 7 GPIO, and 2 RS485 available.<br />
<br />
Are the RS485 connections just a UART, and can be used for a Wiegand D0/D1 ?<br />
<br />
------<br />
<br />
I have noticed in your videos on Wiegand that you use the UART rx/tx connections on the example boards.<br />
Is that because they are 5v logic, and are required to connect the 5V D0/D1 from the Wiegand keypad?<br />
<br />
I assume the ESP32 will be damaged if I connect the D0/D1 to the GPIO connections of an ESP32 based board like the T16M?<br />
<br />
Thank you.<br />
<br />
Rob]]></description>
			<content:encoded><![CDATA[Hello,<br />
<br />
I have a T16M (ESPHome), and I need to connect 4 Wiegand keypads (8 GPIO required).  There are 7 GPIO, and 2 RS485 available.<br />
<br />
Are the RS485 connections just a UART, and can be used for a Wiegand D0/D1 ?<br />
<br />
------<br />
<br />
I have noticed in your videos on Wiegand that you use the UART rx/tx connections on the example boards.<br />
Is that because they are 5v logic, and are required to connect the 5V D0/D1 from the Wiegand keypad?<br />
<br />
I assume the ESP32 will be damaged if I connect the D0/D1 to the GPIO connections of an ESP32 based board like the T16M?<br />
<br />
Thank you.<br />
<br />
Rob]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[T16M Output after reset]]></title>
			<link>https://www.kincony.com/forum/showthread.php?tid=8524</link>
			<pubDate>Fri, 12 Sep 2025 21:15:16 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://www.kincony.com/forum/member.php?action=profile&uid=9444">Steen</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.kincony.com/forum/showthread.php?tid=8524</guid>
			<description><![CDATA[Just received myT16M in the mail this morning and I'm performing some test.<br />
<br />
I installed the KCS 3.12 firmware and the servers webgui etc came up as expected.<br />
<br />
Under the tab System there is this option: "Keep Output After Restart"<br />
With this enabled I expected the outputs to com up in the last known state before restart or powertoggle, but all outputs comes up in a off state<br />
<br />
Br Steen from Denmark]]></description>
			<content:encoded><![CDATA[Just received myT16M in the mail this morning and I'm performing some test.<br />
<br />
I installed the KCS 3.12 firmware and the servers webgui etc came up as expected.<br />
<br />
Under the tab System there is this option: "Keep Output After Restart"<br />
With this enabled I expected the outputs to com up in the last known state before restart or powertoggle, but all outputs comes up in a off state<br />
<br />
Br Steen from Denmark]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[I2C and UART on GPIO]]></title>
			<link>https://www.kincony.com/forum/showthread.php?tid=8481</link>
			<pubDate>Mon, 01 Sep 2025 23:03:30 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://www.kincony.com/forum/member.php?action=profile&uid=9418">swiercz</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.kincony.com/forum/showthread.php?tid=8481</guid>
			<description><![CDATA[Hello,<br />
<br />
While T16M board doesn't explicitly have I2C and UART connectors as per the product description,  I was wondering if using GPIOs can be a way to have I2C and UART interfaces.<br />
The documentation says GPIO ports exposed on screw terminals (GPIO8, GPIO9, GPIO10, GPIO15, GPIO16, GPIO17, GPIO18) have pull-up resistors and can be used for 1wire sensors.<br />
<br />
My questions are:<br />
1. What is the pull-up resistor value? 4.7k?<br />
2. Is there ESD protection diode for these pins?<br />
3. Can these GPIOs be used for I2C and UART? (typically: GPIO8 and GPIO9 for I2C, GPIO16 and GPIO17 for UART)]]></description>
			<content:encoded><![CDATA[Hello,<br />
<br />
While T16M board doesn't explicitly have I2C and UART connectors as per the product description,  I was wondering if using GPIOs can be a way to have I2C and UART interfaces.<br />
The documentation says GPIO ports exposed on screw terminals (GPIO8, GPIO9, GPIO10, GPIO15, GPIO16, GPIO17, GPIO18) have pull-up resistors and can be used for 1wire sensors.<br />
<br />
My questions are:<br />
1. What is the pull-up resistor value? 4.7k?<br />
2. Is there ESD protection diode for these pins?<br />
3. Can these GPIOs be used for I2C and UART? (typically: GPIO8 and GPIO9 for I2C, GPIO16 and GPIO17 for UART)]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Interrupt when Input is triggered]]></title>
			<link>https://www.kincony.com/forum/showthread.php?tid=8294</link>
			<pubDate>Fri, 04 Jul 2025 07:05:28 +0800</pubDate>
			<dc:creator><![CDATA[<a href="https://www.kincony.com/forum/member.php?action=profile&uid=8512">joe.sfeir@gmail.com</a>]]></dc:creator>
			<guid isPermaLink="false">https://www.kincony.com/forum/showthread.php?tid=8294</guid>
			<description><![CDATA[Hi,<br />
<br />
Is it possible to configure an interrupt for when an Input is triggered, to avoid having to constantly poll the inputs for state change?<br />
<br />
Thanks]]></description>
			<content:encoded><![CDATA[Hi,<br />
<br />
Is it possible to configure an interrupt for when an Input is triggered, to avoid having to constantly poll the inputs for state change?<br />
<br />
Thanks]]></content:encoded>
		</item>
	</channel>
</rss>