Flashing QIACHIP Wifi Wireless 433Mhz RF with esp8266-s3 (Sonoff RF clone)

@francisp what if the relay is controlled by uart? :thinking:

Hello @orange-assistant
do you have solved your problem ?
I want to do the same with the QIACHIP wifi rf module…
Best regards
Laurent

Sadly no. I was hoping @francisp has the same.

For now this device stays in the drawer as it isn’t useful at all. Next time I will better investigate before it the device I will buy will run esphome successful :zipper_mouth_face:

For me, it is not totally useless. Since the RF part works independant, and can act as a momentary switch, I paired my doorbell button with it and attached a 220volt doorbell to it. However, I could have done this with a 433Mhz relay for half the price. The place I was going to use it is now equipped with a Sonoff RF.

Hi, I know this may be a dumb question, but does your Qiachip WiFi controller have Alexa integration?
Reason I ask is I really want to buy a ceiling fan and it’s some crazy brand called Parrot Uncle and was thinking about using a Qiachip RF controller to link it to HA. I saw it had Alexa integration and thought I would be able to use that through HA or Node-Red or with my Nabu Casa subscription.
Is the reason you wanted to flash it was for local control and no cloud integration?
Thanks

Hi all, I have seemingly the same qiachip RF modules. I just got this working, so let me know if you have any issues. It is indeed connected over UART and the RF module controls the relay. You’ll need both these files.

qiachip.yaml:

substitutions:
  device_name: qiachip_test
  friendly_name: QIACHIP Test

esphome:
  name: ${device_name}
  platform: ESP8266
  board: esp01_1m
  on_boot:
    then:
    - uart.write: [0x3C, 0x59, 0x97, 0x8E, 0x03, 0xFE, 0x19, 0x82, 0x9A, 0x87, 0x0C, 0x87, 0x16, 0x87, 0x82, 0x86, 0x7E, 0x04, 0x87, 0x1E, 0x87, 0x8E, 0x86, 0x3E, 0x1A, 0x16, 0x16, 0x94, 0x16, 0x16, 0x8F, 0x87, 0x02, 0x4C, 0x12, 0x50, 0x88, 0x8E, 0x87, 0x15, 0x3A, 0x86, 0x82, 0xFE, 0x8F, 0x16, 0x0F, 0x07, 0x09, 0x9B, 0xFE, 0x96, 0x8B, 0x96, 0x1B, 0x08, 0x87, 0x07, 0x96, 0x82, 0xC6, 0xD5, 0x0A, 0xD2, 0x82, 0x92, 0x0E, 0xFF]
  includes:
    - qiachip-uart.h


wifi:
  ssid: [hidden]
  password: [hidden]
  fast_connect: on #we only have one WiFi AP so just use the first one that matches
  ap: #since we listed an SSID above, this AP mode will only enable if no WiFi connection could be made
    ssid: ${friendly_name}_AP
    password: recoverypassword

# Enable logging
logger:
  hardware_uart: UART1 # move logging to UART 1 since RF module is on UART 0
#  baud_rate: 0 #disable UART logging

# Enable Home Assistant API
api:

# Enable OTA updates
ota:
  safe_mode: True

# Enable web server
web_server:
  port: 80

uart:
  baud_rate: 9600
  tx_pin: GPIO1
  rx_pin: GPIO3
  
#status_led:
#  pin:
#    number: GPIO04
#    inverted: true

binary_sensor:
  - platform: custom
    lambda: |-
      auto qiachip_uart = new QiachipUART();
      App.register_component(qiachip_uart);
      return {qiachip_uart};

    binary_sensors:
      name: "RFModule"
      on_press:
        switch.turn_on: relay
      on_release:
        switch.turn_off: relay
      internal: true

switch:
  - platform: gpio
    name: "${friendly_name}"
    id: "relay"

    pin: GPIO4 # using ESP status light
    inverted: true
    on_turn_on:
      - uart.write: [0xAC, 0x28, 0x00, 0x21]
    on_turn_off:
      - uart.write: [0xAC, 0x20, 0x00, 0x29]


qiachip-uart.h:

#include "esphome.h"

class QiachipUART : public PollingComponent, public BinarySensor{
 public:
  // constructor
  QiachipUART() : PollingComponent(100) {}

  void setup() override {
  }
  void update() override {
    if (Serial.available() == 4) {
      char buffer[4];
      Serial.readBytes(buffer, 4);
      if (buffer[3] == 0xF7) {
        publish_state(true);
      } else if (buffer[3] == 0xF6) {
        publish_state(false);
      }
    } else if (Serial.available() > 4) {
      while (Serial.available()) {
        Serial.read();
      }
    }
  }
};
2 Likes

Thanks. I will try it out.

Wow this looks awesome :star2: @nickyivyca! My device actually is still some where deep in the drawer but I will do a search and try out your code.

If I remember right the button on the device didn’t trigger/switch the relay but was used to pair a new 433 remote. Is their any chance to get the button press into esphome to trigger the relay?

I don’t know what I’m doing wrong. Just changed qiachip_test to qia, and ssid/password to my own.

INFO Reading configuration...
INFO Generating C++ source...
INFO Compiling app...
INFO Running:  platformio run -d /config/esphome/qia
Processing qia (framework: arduino; platform: [email protected]; board: esp01_1m)
--------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif8266/esp01_1m.html
PLATFORM: Espressif 8266 > Espressif Generic ESP8266 ESP-01 1M
HARDWARE: ESP8266 80MHz 80KB RAM (1MB Flash)
Library Dependency Finder -> http://bit.ly/configure-pio-ldf
LDF MODES: FINDER(chain) COMPATIBILITY(soft)
Collected 30 compatible libraries
Scanning dependencies...
Dependency Graph
|-- <ArduinoJson-esphomelib> 5.13.3
|-- <ESP Async WebServer> 1.1.1
|   |-- <ESPAsyncTCP> 1.2.2
|   |   |-- <ESP8266WiFi> 1.0
|   |-- <Hash> 1.0
|   |-- <ESP8266WiFi> 1.0
|   |-- <ArduinoJson-esphomelib> 5.13.3
|-- <ESP8266WiFi> 1.0
|-- <ESP8266mDNS>
|   |-- <ESP8266WiFi> 1.0
|-- <ESPAsyncTCP> 1.2.0
|   |-- <ESP8266WiFi> 1.0
|-- <ESPAsyncTCP> 1.2.2
|   |-- <ESP8266WiFi> 1.0
Compiling /data/qia/.pioenvs/qia/src/esphome/components/api/api_message.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/components/api/api_server.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/components/api/basic_messages.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/components/api/command_messages.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/components/api/list_entities.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/components/api/service_call_message.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/components/api/subscribe_logs.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/components/api/subscribe_state.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/components/api/user_services.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/components/api/util.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/components/binary_sensor/automation.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/components/binary_sensor/binary_sensor.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/components/binary_sensor/filter.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/components/custom/binary_sensor/custom_binary_sensor.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/components/gpio/switch/gpio_switch.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/components/json/json_util.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/components/logger/logger.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/components/ota/ota_component.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/components/switch/automation.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/components/switch/switch.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/components/uart/uart.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/components/web_server/web_server.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/components/wifi/wifi_component.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/components/wifi/wifi_component_esp32.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/components/wifi/wifi_component_esp8266.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/core/application.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/core/component.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/core/controller.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/core/esphal.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/core/helpers.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/core/log.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/core/preferences.cpp.o
Compiling /data/qia/.pioenvs/qia/src/esphome/core/util.cpp.o
Compiling /data/qia/.pioenvs/qia/src/main.cpp.o
Generating LD script /data/qia/.pioenvs/qia/ld/eagle.app.v6.common.ld
Archiving /data/qia/.pioenvs/qia/lib520/libArduinoJson-esphomelib_ID3837.a
Compiling /data/qia/.pioenvs/qia/libd05/ESP8266WiFi/BearSSLHelpers.cpp.o
Compiling /data/qia/.pioenvs/qia/libd05/ESP8266WiFi/CertStoreBearSSL.cpp.o
Compiling /data/qia/.pioenvs/qia/libd05/ESP8266WiFi/ESP8266WiFi.cpp.o
Compiling /data/qia/.pioenvs/qia/libd05/ESP8266WiFi/ESP8266WiFiAP.cpp.o
Compiling /data/qia/.pioenvs/qia/libd05/ESP8266WiFi/ESP8266WiFiGeneric.cpp.o
Compiling /data/qia/.pioenvs/qia/libd05/ESP8266WiFi/ESP8266WiFiMulti.cpp.o
Compiling /data/qia/.pioenvs/qia/libd05/ESP8266WiFi/ESP8266WiFiSTA.cpp.o
Compiling /data/qia/.pioenvs/qia/libd05/ESP8266WiFi/ESP8266WiFiScan.cpp.o
Compiling /data/qia/.pioenvs/qia/libd05/ESP8266WiFi/WiFiClient.cpp.o
Compiling /data/qia/.pioenvs/qia/libd05/ESP8266WiFi/WiFiClientSecureAxTLS.cpp.o
Compiling /data/qia/.pioenvs/qia/libd05/ESP8266WiFi/WiFiClientSecureBearSSL.cpp.o
Compiling /data/qia/.pioenvs/qia/libd05/ESP8266WiFi/WiFiServer.cpp.o
Compiling /data/qia/.pioenvs/qia/libd05/ESP8266WiFi/WiFiServerSecureAxTLS.cpp.o
Compiling /data/qia/.pioenvs/qia/libd05/ESP8266WiFi/WiFiServerSecureBearSSL.cpp.o
Compiling /data/qia/.pioenvs/qia/libd05/ESP8266WiFi/WiFiUdp.cpp.o
Archiving /data/qia/.pioenvs/qia/libd05/libESP8266WiFi.a
Compiling /data/qia/.pioenvs/qia/lib05a/ESPAsyncTCP_ID305/AsyncPrinter.cpp.o
Compiling /data/qia/.pioenvs/qia/lib05a/ESPAsyncTCP_ID305/ESPAsyncTCP.cpp.o
Compiling /data/qia/.pioenvs/qia/lib05a/ESPAsyncTCP_ID305/ESPAsyncTCPbuffer.cpp.o
Compiling /data/qia/.pioenvs/qia/lib05a/ESPAsyncTCP_ID305/SyncClient.cpp.o
Compiling /data/qia/.pioenvs/qia/lib05a/ESPAsyncTCP_ID305/tcp_axtls.c.o
Archiving /data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a
Compiling /data/qia/.pioenvs/qia/libb36/Hash/Hash.cpp.o
Compiling /data/qia/.pioenvs/qia/libb36/Hash/sha1/sha1.c.o
Archiving /data/qia/.pioenvs/qia/libb36/libHash.a
Compiling /data/qia/.pioenvs/qia/lib6c2/ESP Async WebServer_ID306/AsyncEventSource.cpp.o
Compiling /data/qia/.pioenvs/qia/lib6c2/ESP Async WebServer_ID306/AsyncWebSocket.cpp.o
Compiling /data/qia/.pioenvs/qia/lib6c2/ESP Async WebServer_ID306/SPIFFSEditor.cpp.o
Compiling /data/qia/.pioenvs/qia/lib6c2/ESP Async WebServer_ID306/WebAuthentication.cpp.o
Compiling /data/qia/.pioenvs/qia/lib6c2/ESP Async WebServer_ID306/WebHandlers.cpp.o
Compiling /data/qia/.pioenvs/qia/lib6c2/ESP Async WebServer_ID306/WebRequest.cpp.o
Compiling /data/qia/.pioenvs/qia/lib6c2/ESP Async WebServer_ID306/WebResponses.cpp.o
Compiling /data/qia/.pioenvs/qia/lib6c2/ESP Async WebServer_ID306/WebServer.cpp.o
Archiving /data/qia/.pioenvs/qia/lib6c2/libESP Async WebServer_ID306.a
Compiling /data/qia/.pioenvs/qia/lib3f7/ESP8266mDNS/ESP8266mDNS.cpp.o
Archiving /data/qia/.pioenvs/qia/lib3f7/libESP8266mDNS.a
Compiling /data/qia/.pioenvs/qia/libfe4/[email protected]/AsyncPrinter.cpp.o
Compiling /data/qia/.pioenvs/qia/libfe4/[email protected]/ESPAsyncTCP.cpp.o
Compiling /data/qia/.pioenvs/qia/libfe4/[email protected]/ESPAsyncTCPbuffer.cpp.o
Compiling /data/qia/.pioenvs/qia/libfe4/[email protected]/SyncClient.cpp.o
Compiling /data/qia/.pioenvs/qia/libfe4/[email protected]/tcp_axtls.c.o
Archiving /data/qia/.pioenvs/qia/libfe4/[email protected]
Archiving /data/qia/.pioenvs/qia/libFrameworkArduinoVariant.a
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/Esp-version.cpp.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/Esp.cpp.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/FS.cpp.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/FunctionalInterrupt.cpp.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/HardwareSerial.cpp.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/IPAddress.cpp.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/MD5Builder.cpp.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/Print.cpp.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/Schedule.cpp.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/ScheduledFunctions.cpp.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/Stream.cpp.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/StreamString.cpp.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/Tone.cpp.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/Updater.cpp.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/WMath.cpp.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/WString.cpp.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/abi.cpp.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/base64.cpp.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/cbuf.cpp.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/cont.S.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/cont_util.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/core_esp8266_eboot_command.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/core_esp8266_flash_utils.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/core_esp8266_i2s.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/core_esp8266_main.cpp.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/core_esp8266_noniso.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/core_esp8266_phy.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/core_esp8266_postmortem.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/core_esp8266_si2c.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/core_esp8266_sigma_delta.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/core_esp8266_timer.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/core_esp8266_waveform.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/core_esp8266_wiring.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/core_esp8266_wiring_analog.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/core_esp8266_wiring_digital.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/core_esp8266_wiring_pulse.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/core_esp8266_wiring_pwm.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/core_esp8266_wiring_shift.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/debug.cpp.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/gdb_hooks.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/heap.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/libb64/cdecode.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/libb64/cencode.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/libc_replacements.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/pgmspace.cpp.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/sntp-lwip2.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/spiffs/spiffs_cache.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/spiffs/spiffs_check.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/spiffs/spiffs_gc.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/spiffs/spiffs_hydrogen.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/spiffs/spiffs_nucleus.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/spiffs_api.cpp.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/spiffs_hal.cpp.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/time.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/uart.c.o
Compiling /data/qia/.pioenvs/qia/FrameworkArduino/umm_malloc/umm_malloc.c.o
Archiving /data/qia/.pioenvs/qia/libFrameworkArduino.a

part 2 next

part 2 :


Linking /data/qia/.pioenvs/qia/firmware.elf
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::_s_recv(void*, tcp_pcb*, pbuf*, long)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient7_s_recvEPvP7tcp_pcbP4pbufl+0x4): multiple definition of `AsyncClient::_s_recv(void*, tcp_pcb*, pbuf*, long)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient7_s_recvEPvP7tcp_pcbP4pbufl+0x10): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::_s_sent(void*, tcp_pcb*, unsigned short)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient7_s_sentEPvP7tcp_pcbt+0x4): multiple definition of `AsyncClient::_s_sent(void*, tcp_pcb*, unsigned short)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient7_s_sentEPvP7tcp_pcbt+0x10): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::_s_error(void*, long)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient8_s_errorEPvl+0x4): multiple definition of `AsyncClient::_s_error(void*, long)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient8_s_errorEPvl+0xc): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::_s_poll(void*, tcp_pcb*)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient7_s_pollEPvP7tcp_pcb+0x4): multiple definition of `AsyncClient::_s_poll(void*, tcp_pcb*)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient7_s_pollEPvP7tcp_pcb+0x10): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::AsyncClient(tcp_pcb*)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClientC2EP7tcp_pcb+0x30): multiple definition of `AsyncClient::AsyncClient(tcp_pcb*)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClientC2EP7tcp_pcb+0x48): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::AsyncClient(tcp_pcb*)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClientC2EP7tcp_pcb+0x30): multiple definition of `AsyncClient::AsyncClient(tcp_pcb*)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClientC2EP7tcp_pcb+0x48): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::_s_connected(void*, void*, long)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient12_s_connectedEPvS0_l+0x4): multiple definition of `AsyncClient::_s_connected(void*, void*, long)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient12_s_connectedEPvS0_l+0x10): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::connect(IPAddress, unsigned short)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient7connectE9IPAddresst+0x18): multiple definition of `AsyncClient::connect(IPAddress, unsigned short)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient7connectE9IPAddresst+0x1c): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::_s_dns_found(char const*, ip_addr const*, void*)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient12_s_dns_foundEPKcPK7ip_addrPv+0x4): multiple definition of `AsyncClient::_s_dns_found(char const*, ip_addr const*, void*)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient12_s_dns_foundEPKcPK7ip_addrPv+0x4): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::connect(char const*, unsigned short)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient7connectEPKct+0x10): multiple definition of `AsyncClient::connect(char const*, unsigned short)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient7connectEPKct+0x10): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::operator==(AsyncClient const&)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClienteqERKS_+0x0): multiple definition of `AsyncClient::operator==(AsyncClient const&)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClienteqERKS_+0x0): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::abort()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient5abortEv+0x4): multiple definition of `AsyncClient::abort()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient5abortEv+0x4): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::free()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient4freeEv+0x4): multiple definition of `AsyncClient::free()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient4freeEv+0x4): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::send()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient4sendEv+0x8): multiple definition of `AsyncClient::send()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient4sendEv+0x8): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::ack(unsigned int)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient3ackEj+0x4): multiple definition of `AsyncClient::ack(unsigned int)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient3ackEj+0x4): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::operator+=(AsyncClient const&)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClientpLERKS_+0x0): multiple definition of `AsyncClient::operator+=(AsyncClient const&)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClientpLERKS_+0x0): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::setRxTimeout(unsigned int)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient12setRxTimeoutEj+0x0): multiple definition of `AsyncClient::setRxTimeout(unsigned int)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient12setRxTimeoutEj+0x0): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::getRxTimeout()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient12getRxTimeoutEv+0x0): multiple definition of `AsyncClient::getRxTimeout()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient12getRxTimeoutEv+0x0): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::getAckTimeout()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient13getAckTimeoutEv+0x0): multiple definition of `AsyncClient::getAckTimeout()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient13getAckTimeoutEv+0x0): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::setAckTimeout(unsigned int)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient13setAckTimeoutEj+0x0): multiple definition of `AsyncClient::setAckTimeout(unsigned int)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient13setAckTimeoutEj+0x0): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::setNoDelay(bool)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient10setNoDelayEb+0x0): multiple definition of `AsyncClient::setNoDelay(bool)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient10setNoDelayEb+0x0): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::getNoDelay()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient10getNoDelayEv+0x0): multiple definition of `AsyncClient::getNoDelay()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient10getNoDelayEv+0x0): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::getMss()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient6getMssEv+0x0): multiple definition of `AsyncClient::getMss()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient6getMssEv+0x0): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::getRemoteAddress()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient16getRemoteAddressEv+0x0): multiple definition of `AsyncClient::getRemoteAddress()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient16getRemoteAddressEv+0x0): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::getRemotePort()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient13getRemotePortEv+0x0): multiple definition of `AsyncClient::getRemotePort()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient13getRemotePortEv+0x0): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::getLocalAddress()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient15getLocalAddressEv+0x0): multiple definition of `AsyncClient::getLocalAddress()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient15getLocalAddressEv+0x0): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::getLocalPort()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient12getLocalPortEv+0x0): multiple definition of `AsyncClient::getLocalPort()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient12getLocalPortEv+0x0): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::remoteIP()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient8remoteIPEv+0x8): multiple definition of `AsyncClient::remoteIP()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient8remoteIPEv+0x8): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::remotePort()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient10remotePortEv+0x4): multiple definition of `AsyncClient::remotePort()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient10remotePortEv+0x4): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::localIP()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient7localIPEv+0x8): multiple definition of `AsyncClient::localIP()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient7localIPEv+0x8): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::localPort()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient9localPortEv+0x4): multiple definition of `AsyncClient::localPort()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient9localPortEv+0x4): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::state()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient5stateEv+0x0): multiple definition of `AsyncClient::state()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient5stateEv+0x0): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::connected()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient9connectedEv+0x0): multiple definition of `AsyncClient::connected()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient9connectedEv+0x0): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::connecting()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient10connectingEv+0x0): multiple definition of `AsyncClient::connecting()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient10connectingEv+0x0): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::disconnecting()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient13disconnectingEv+0x0): multiple definition of `AsyncClient::disconnecting()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient13disconnectingEv+0x0): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::disconnected()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient12disconnectedEv+0x0): multiple definition of `AsyncClient::disconnected()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient12disconnectedEv+0x0): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::freeable()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient8freeableEv+0x4): multiple definition of `AsyncClient::freeable()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient8freeableEv+0x4): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::space()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient5spaceEv+0x0): multiple definition of `AsyncClient::space()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient5spaceEv+0x0): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::add(char const*, unsigned int, unsigned char)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient3addEPKcjh+0x8): multiple definition of `AsyncClient::add(char const*, unsigned int, unsigned char)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient3addEPKcjh+0x8): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::write(char const*, unsigned int, unsigned char)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient5writeEPKcjh+0x8): multiple definition of `AsyncClient::write(char const*, unsigned int, unsigned char)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient5writeEPKcjh+0x8): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::write(char const*)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient5writeEPKc+0x8): multiple definition of `AsyncClient::write(char const*)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient5writeEPKc+0x8): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::canSend()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient7canSendEv+0x4): multiple definition of `AsyncClient::canSend()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient7canSendEv+0x4): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::ackPacket(pbuf*)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient9ackPacketEP4pbuf+0x8): multiple definition of `AsyncClient::ackPacket(pbuf*)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient9ackPacketEP4pbuf+0x8): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::stateToString()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient13stateToStringEv+0xc): multiple definition of `AsyncClient::stateToString()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient13stateToStringEv+0xc): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncServer::AsyncServer(IPAddress, unsigned short)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncServerC2E9IPAddresst+0x4): multiple definition of `AsyncServer::AsyncServer(IPAddress, unsigned short)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncServerC2E9IPAddresst+0x4): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncServer::AsyncServer(IPAddress, unsigned short)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncServerC2E9IPAddresst+0x4): multiple definition of `AsyncServer::AsyncServer(IPAddress, unsigned short)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncServerC2E9IPAddresst+0x4): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncServer::AsyncServer(unsigned short)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncServerC2Et+0x4): multiple definition of `AsyncServer::AsyncServer(unsigned short)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncServerC2Et+0x4): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncServer::AsyncServer(unsigned short)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncServerC2Et+0x4): multiple definition of `AsyncServer::AsyncServer(unsigned short)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncServerC2Et+0x4): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncServer::_s_accept(void*, tcp_pcb*, long)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncServer9_s_acceptEPvP7tcp_pcbl+0x4): multiple definition of `AsyncServer::_s_accept(void*, tcp_pcb*, long)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncServer9_s_acceptEPvP7tcp_pcbl+0x4): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncServer::begin()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncServer5beginEv+0x1c): multiple definition of `AsyncServer::begin()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncServer5beginEv+0x20): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncServer::end()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncServer3endEv+0x10): multiple definition of `AsyncServer::end()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncServer3endEv+0x10): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncServer::~AsyncServer()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncServerD2Ev+0x8): multiple definition of `AsyncServer::~AsyncServer()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncServerD2Ev+0x8): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncServer::~AsyncServer()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncServerD2Ev+0x8): multiple definition of `AsyncServer::~AsyncServer()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncServerD2Ev+0x8): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncServer::setNoDelay(bool)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncServer10setNoDelayEb+0x0): multiple definition of `AsyncServer::setNoDelay(bool)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncServer10setNoDelayEb+0x0): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncServer::getNoDelay()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncServer10getNoDelayEv+0x0): multiple definition of `AsyncServer::getNoDelay()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncServer10getNoDelayEv+0x0): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncServer::status()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncServer6statusEv+0x0): multiple definition of `AsyncServer::status()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncServer6statusEv+0x0): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::_close()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient6_closeEv+0x20): multiple definition of `AsyncClient::_close()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient6_closeEv+0x10): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::~AsyncClient()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClientD2Ev+0x24): multiple definition of `AsyncClient::~AsyncClient()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClientD2Ev+0x28): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::~AsyncClient()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClientD2Ev+0x24): multiple definition of `AsyncClient::~AsyncClient()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClientD2Ev+0x28): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::operator=(AsyncClient const&)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClientaSERKS_+0x30): multiple definition of `AsyncClient::operator=(AsyncClient const&)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClientaSERKS_+0x34): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::close(bool)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient5closeEb+0x8): multiple definition of `AsyncClient::close(bool)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient5closeEb+0x8): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::stop()':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient4stopEv+0x4): multiple definition of `AsyncClient::stop()'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient4stopEv+0x4): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncServer::_accept(tcp_pcb*, long)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncServer7_acceptEP7tcp_pcbl+0x14): multiple definition of `AsyncServer::_accept(tcp_pcb*, long)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncServer7_acceptEP7tcp_pcbl+0x24): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::_error(long)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient6_errorEl+0x18): multiple definition of `AsyncClient::_error(long)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient6_errorEl+0x4): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::_dns_found(ip_addr const*)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient10_dns_foundEPK7ip_addr+0xc): multiple definition of `AsyncClient::_dns_found(ip_addr const*)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient10_dns_foundEPK7ip_addr+0xc): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::onConnect(std::function<void (void*, AsyncClient*)>, void*)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient9onConnectESt8functionIFvPvPS_EES1_+0x4): multiple definition of `AsyncClient::onConnect(std::function<void (void*, AsyncClient*)>, void*)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient9onConnectESt8functionIFvPvPS_EES1_+0x4): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::onDisconnect(std::function<void (void*, AsyncClient*)>, void*)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient12onDisconnectESt8functionIFvPvPS_EES1_+0x4): multiple definition of `AsyncClient::onDisconnect(std::function<void (void*, AsyncClient*)>, void*)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient12onDisconnectESt8functionIFvPvPS_EES1_+0x4): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::onPoll(std::function<void (void*, AsyncClient*)>, void*)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient6onPollESt8functionIFvPvPS_EES1_+0x4): multiple definition of `AsyncClient::onPoll(std::function<void (void*, AsyncClient*)>, void*)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient6onPollESt8functionIFvPvPS_EES1_+0x4): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncServer::onClient(std::function<void (void*, AsyncClient*)>, void*)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncServer8onClientESt8functionIFvPvP11AsyncClientEES1_+0x4): multiple definition of `AsyncServer::onClient(std::function<void (void*, AsyncClient*)>, void*)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncServer8onClientESt8functionIFvPvP11AsyncClientEES1_+0x4): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::onAck(std::function<void (void*, AsyncClient*, unsigned int, unsigned int)>, void*)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient5onAckESt8functionIFvPvPS_jjEES1_+0x8): multiple definition of `AsyncClient::onAck(std::function<void (void*, AsyncClient*, unsigned int, unsigned int)>, void*)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient5onAckESt8functionIFvPvPS_jjEES1_+0x8): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::onData(std::function<void (void*, AsyncClient*, void*, unsigned int)>, void*)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient6onDataESt8functionIFvPvPS_S1_jEES1_+0x8): multiple definition of `AsyncClient::onData(std::function<void (void*, AsyncClient*, void*, unsigned int)>, void*)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient6onDataESt8functionIFvPvPS_S1_jEES1_+0x8): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::onPacket(std::function<void (void*, AsyncClient*, pbuf*)>, void*)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient8onPacketESt8functionIFvPvPS_P4pbufEES1_+0x8): multiple definition of `AsyncClient::onPacket(std::function<void (void*, AsyncClient*, pbuf*)>, void*)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient8onPacketESt8functionIFvPvPS_P4pbufEES1_+0x8): first defined here
/data/qia/.pioenvs/qia/libfe4/[email protected](ESPAsyncTCP.cpp.o): In function `AsyncClient::onTimeout(std::function<void (void*, AsyncClient*, unsigned int)>, void*)':
ESPAsyncTCP.cpp:(.text._ZN11AsyncClient9onTimeoutESt8functionIFvPvPS_jEES1_+0x8): multiple definition of `AsyncClient::onTimeout(std::function<void (void*, AsyncClient*, unsigned int)>, void*)'
/data/qia/.pioenvs/qia/lib05a/libESPAsyncTCP_ID305.a(ESPAsyncTCP.cpp.o):ESPAsyncTCP.cpp:(.text._ZN11AsyncClient9onTimeoutESt8functionIFvPvPS_jEES1_+0x8): first defined here
collect2: error: ld returned 1 exit status
*** [/data/qia/.pioenvs/qia/firmware.elf] Error 1
========================= [ERROR] Took 137.31 seconds =========================



@orange-assistant Unfortunately no, it looks like nothing is written to the UART when that button is pressed. I also have some KTNNKG Wifi-KG2201-W relays, which work with the same 433mhz buttons as the QIACHIP does, but the RF codes are sent to the ESP from the RF chip instead of the RF chip doing everything. On those the button and relay are connected to the ESP so I’ve set up the button to toggle the relay. (I’ll be uploading both these esphome device configs to esphome-configs soon)

@francisp try updating your esphome installation. I’m on 1.14.4, I can’t see what version you’re on, but some of your dependencies show as older versions than mine.

1 Like

Upgraded, and compiled. Still need to flash it over tasmota though.

And working ! First flashed tasmota lite, then setoption78 1, then the esphome bin.

Thank’s for the clarification @nickyivyca. So just to check if I understand it right what the esphome code of yours does with this device:

  • It can toggle the relay via the switch (which the ESP actually communicate to the RF module)
  • The whole RF logic (including pairing using the button) is still handled by the RF module
  • the custom component (binary_sensors) is watching the state from the RF module and is triggering the relay accordingly

Does this some how makes sense or is it totally nonsense? :grin:

I also were able to compile the code but wasn’t yet successful flashing it onto the qiachip device. I soldered 3.3v/gnd/rx/tx/io0 and even can detect the right boot mode (flash mode) from the onboard led of the esp-s3 module. I also tried with a external 3.3v power supply (800mA) but anyway I was never able to flash it nor read anything from the serial monitor. @francisp mentioned he used tuya-convert - maybe I need to test this now because I’m running out of ideas :man_shrugging:

Yeah that’s basically correct, the ESP tells the RF module over UART to turn on or off. The RF button controls the relay itself and handles the RF logic. The custom component is to read the UART values the RF modules sends when the RF buttons switch the relay on and off, to update the true state of the switch for homeassistant.

I couldn’t get hardware flashing working either, tuya-convert was the only thing that worked for me. I think that the RF module holds its TX/ESP’s RX high so an external UART can’t write.

1 Like

For me too! :tada:

So up and running. Just took a year with this device :grin:

Two things I’m still working on:

The 433mhz part: Till now I didn’t pair any remote and just use the esp/wifi to toggle the relay. I don’t have the manual anymore so I wonder what is need to pair a remote ? Guess press the button ? Keep it holding ? And in the same time on the remote ?
How many 433mhz remotes a possible ?

And the other thing I want to add is actually a button and a PIR directly to the esp. The button should enable a local relay toggle and with the pir I could trigger the relay on a movement.

The good thing with this device everything is done over serial so there is plenty of free gpio’s on the esp itself.

I will catch some solder now to make GPIO5, 12, 13, 14, GND and VCC accessible :man_factory_worker:

Eight presses on the button : clear all stored codes.
One press on the button : momentary switch
Two presses on the button : Toggle mode : Press one button for one time, the corresponding channel is working/on; Press the same button again to stop/OFF
Three presses on the button : latched mode : Press->on; Press other button->Off

1 Like

Little confusing for me :crazy_face:

All these described modes (momentary, toggle, latched) are for the 433 remotes - right?
And to pair one I keep the button from the qiachip pressed while also pushing the button on the 433 remote? Are there any light indicators on the device to show a successful pairing?

Just finished soldering :tada:

The led should come on after pressing the button. Then you press your 433Mhz remote.

1 Like