martin-ger / esp_mqtt

MQTT Broker/Bridge on the ESP8266
MIT License
295 stars 69 forks source link

On ArduinoIDE , how to use mqtt-client API ? #12

Closed TridentTD closed 6 years ago

TridentTD commented 6 years ago

How to use mqtt-client API such as
function "MQTT_InitConnection(....)" , "MQTT_InitClient(..)" etc.. on ArduinoIDE ?

Is there any example ?

Thank you.

TridentTD commented 6 years ago

When I try to use mqtt-client API , it occur some errors
that undefined reference to espconnsecure***** functions

Archiving built core (caching) in: C:\Users\Superman\AppData\Local\Temp\arduino_cache_536667\core\core_esp8266_esp8266_d1_mini_CpuFrequency_80,UploadSpeed_921600,FlashSize_4M3M_eab9a2aacd30f374ecf5501ad2a6bb66.a
C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libmqtt.a(mqtt.o): In function `mqtt_tcpclient_recon_cb':

/home/martin/github/esp_mqtt/mqtt/mqtt.c:552: undefined reference to `espconn_secure_disconnect'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libmqtt.a(mqtt.o): In function `mqtt_tcpclient_recv':

/home/martin/github/esp_mqtt/mqtt/mqtt.c:291: undefined reference to `espconn_secure_disconnect'

/home/martin/github/esp_mqtt/mqtt/mqtt.c:400: undefined reference to `espconn_secure_send'

/home/martin/github/esp_mqtt/mqtt/mqtt.c:434: undefined reference to `espconn_secure_send'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libmqtt.a(mqtt.o): In function `mqtt_tcpclient_connect_cb':

/home/martin/github/esp_mqtt/mqtt/mqtt.c:502: undefined reference to `espconn_secure_set_size'

/home/martin/github/esp_mqtt/mqtt/mqtt.c:506: undefined reference to `espconn_secure_connect'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libmqtt.a(mqtt.o): In function `mqtt_get_type':

/home/martin/github/esp_mqtt/mqtt/include/mqtt_msg.h:160: undefined reference to `espconn_secure_set_size'

/home/martin/github/esp_mqtt/mqtt/include/mqtt_msg.h:160: undefined reference to `espconn_secure_connect'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libmqtt.a(mqtt.o): In function `mqtt_dns_found':

/home/martin/github/esp_mqtt/mqtt/mqtt.c:66: undefined reference to `espconn_secure_send'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libmqtt.a(mqtt.o): In function `MQTT_InitClient':

/home/martin/github/esp_mqtt/mqtt/mqtt.c:820: undefined reference to `espconn_secure_set_size'

/home/martin/github/esp_mqtt/mqtt/mqtt.c:821: undefined reference to `espconn_secure_connect'

/home/martin/github/esp_mqtt/mqtt/mqtt.c:837: undefined reference to `espconn_secure_disconnect'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libmqtt.a(mqtt.o): In function `MQTT_InitLWT':

/home/martin/github/esp_mqtt/mqtt/mqtt.c:849: undefined reference to `espconn_secure_send'

collect2.exe: error: ld returned 1 exit status

exit status 1
Error compiling for board WeMos D1 R2 & mini.
martin-ger commented 6 years ago

The lib with the crypto is missing. Either compile the lib without the MQTT_SSL_ENABLE or try to add -lssl in the linker-line like you did with the -lmqtt.

TridentTD commented 6 years ago

In the upper error I used the default libmqtt.a (that I think MQTT_SSL_ENABLE = 1 ) And try again with linker -lmqtt -lssl , however error still occured as the following.

Archiving built core (caching) in: C:\Users\Superman\AppData\Local\Temp\arduino_cache_657177\core\core_esp8266_esp8266_d1_mini_CpuFrequency_80,UploadSpeed_921600,FlashSize_4M3M_eab9a2aacd30f374ecf5501ad2a6bb66.a
C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_crypto_misc.o):(.rodata+0x0): multiple definition of `unsupported_str'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(crypto_misc.o):(.rodata.unsupported_str+0x0): first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_crypto_misc.o): In function `RNG_initialize':

(.text.RNG_initialize+0x0): multiple definition of `RNG_initialize'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(crypto_misc.o):crypto/crypto_misc.c:110: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_crypto_misc.o): In function `RNG_custom_init':

(.text.RNG_custom_init+0x0): multiple definition of `RNG_custom_init'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(crypto_misc.o):crypto/crypto_misc.c:141: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_crypto_misc.o): In function `RNG_terminate':

(.text.RNG_terminate+0x0): multiple definition of `RNG_terminate'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(crypto_misc.o):crypto/crypto_misc.c:154: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_crypto_misc.o): In function `get_random':

(.text.get_random+0x4): multiple definition of `get_random'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(crypto_misc.o):crypto/crypto_misc.c:166: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_crypto_misc.o): In function `get_random_NZ':

(.text.get_random_NZ+0x8): multiple definition of `get_random_NZ'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(crypto_misc.o):crypto/crypto_misc.c:222: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_crypto_misc.o): In function `print_blob':

(.text.print_blob+0x0): multiple definition of `print_blob'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(crypto_misc.o):crypto/crypto_misc.c:287: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_crypto_misc.o): In function `base64_decode':

(.text.base64_decode+0x4): multiple definition of `base64_decode'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(crypto_misc.o):crypto/crypto_misc.c:329: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1_clnt.o): In function `do_client_connect':

(.text.do_client_connect+0x4): multiple definition of `do_client_connect'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1_clnt.o):ssl/tls1_clnt.c:164: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1_clnt.o): In function `do_clnt_handshake':

(.text.do_clnt_handshake+0x38): multiple definition of `do_clnt_handshake'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1_clnt.o):ssl/tls1_clnt.c:96: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o):(.rodata+0x54): multiple definition of `ssl_prot_prefs'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):(.rodata.ssl_prot_prefs+0x0): first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `ssl_ctx_new':

(.text.ssl_ctx_new+0x20): multiple definition of `ssl_ctx_new'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:188: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `ssl_ctx_free':

(.text.ssl_ctx_free+0x2c): multiple definition of `ssl_ctx_free'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:220: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `ssl_free':

(.text.ssl_free+0x20): multiple definition of `ssl_free'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:266: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `disposable_free':

(.text.disposable_free+0x14): multiple definition of `disposable_free'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:1857: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `ssl_read':

(.text.ssl_read+0xc): multiple definition of `ssl_read'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:311: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `basic_read':

(.text.basic_read+0x24): multiple definition of `basic_read'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:1366: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `send_alert':

(.text.send_alert+0x4): multiple definition of `send_alert'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:1671: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `kill_ssl_session':

(.text.kill_ssl_session+0x4): multiple definition of `kill_ssl_session'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:1975: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `ssl_write':

(.text.ssl_write+0x4): multiple definition of `ssl_write'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:336: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `send_packet':

(.text.send_packet+0x3c): multiple definition of `send_packet'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:1179: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `add_cert':

(.text.add_cert+0x18): multiple definition of `add_cert'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:394: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `add_cert_auth':

(.text.add_cert_auth+0x10): multiple definition of `add_cert_auth'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:465: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `ssl_get_cert_dn':

(.text.ssl_get_cert_dn+0x0): multiple definition of `ssl_get_cert_dn'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:513: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `ssl_get_cert_subject_alt_dnsname':

(.text.ssl_get_cert_subject_alt_dnsname+0x0): multiple definition of `ssl_get_cert_subject_alt_dnsname'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:567: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `ssl_renegotiate':

(.text.ssl_renegotiate+0x10): multiple definition of `ssl_renegotiate'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:611: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `disposable_new':

(.text.disposable_new+0x10): multiple definition of `disposable_new'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:1843: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `add_private_key':

(.text.add_private_key+0x4): multiple definition of `add_private_key'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:703: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `add_packet':

(.text.add_packet+0x8): multiple definition of `add_packet'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:842: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `generate_master_secret':

(.text.generate_master_secret+0x14): multiple definition of `generate_master_secret'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:978: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `finished_digest':

(.text.finished_digest+0x20): multiple definition of `finished_digest'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:1013: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `send_change_cipher_spec':

(.text.send_change_cipher_spec+0x10): multiple definition of `send_change_cipher_spec'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:1627: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `send_finished':

(.text.send_finished+0x18): multiple definition of `send_finished'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:1644: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `process_finished':

(.text.process_finished+0xc): multiple definition of `process_finished'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:1766: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `send_certificate':

(.text.send_certificate+0x8): multiple definition of `send_certificate'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:1795: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `ssl_session_update':

(.text.ssl_session_update+0x20): multiple definition of `ssl_session_update'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:1885: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `ssl_get_session_id':

(.text.ssl_get_session_id+0x0): multiple definition of `ssl_get_session_id'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:1991: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `ssl_get_session_id_size':

(.text.ssl_get_session_id_size+0x0): multiple definition of `ssl_get_session_id_size'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:1999: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `ssl_get_cipher_id':

(.text.ssl_get_cipher_id+0x0): multiple definition of `ssl_get_cipher_id'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:2007: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `ssl_handshake_status':

(.text.ssl_handshake_status+0x0): multiple definition of `ssl_handshake_status'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:2015: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `ssl_get_config':

(.text.ssl_get_config+0x0): multiple definition of `ssl_get_config'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:2021: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `ssl_verify_cert':

(.text.ssl_verify_cert+0x4): multiple definition of `ssl_verify_cert'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:2096: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `process_certificate':

(.text.process_certificate+0x8): multiple definition of `process_certificate'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:2123: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `DISPLAY_STATE':

(.text.DISPLAY_STATE+0x34): multiple definition of `DISPLAY_STATE'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:2292: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `DISPLAY_RSA':

(.text.DISPLAY_RSA+0x4): multiple definition of `DISPLAY_RSA'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:2355: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `DISPLAY_BYTES':

(.text.DISPLAY_BYTES+0x0): multiple definition of `DISPLAY_BYTES'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:2368: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `ssl_display_error':

(.text.ssl_display_error+0x9c): multiple definition of `ssl_display_error'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:2384: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `DISPLAY_ALERT':

(.text.DISPLAY_ALERT+0x68): multiple definition of `DISPLAY_ALERT'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:2483: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1.o): In function `ssl_version':

(.text.ssl_version+0x4): multiple definition of `ssl_version'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1.o):ssl/tls1.c:2568: first defined here

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libssl.a(ssl_tls1_svr.o): In function `do_svr_handshake':

(.text.do_svr_handshake+0x24): multiple definition of `do_svr_handshake'

C:\Users\Superman\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.4.0-rc2/tools/sdk/lib\libaxtls.a(tls1_svr.o):ssl/tls1_svr.c:76: first defined here

collect2.exe: error: ld returned 1 exit status

exit status 1
Error compiling for board WeMos D1 R2 & mini.
martin-ger commented 6 years ago

This is probably because of C-style declarations in includes. You might try to include everything you need from the MQTT-lib as "extern "C" { ... }". But this all is a hack.

It wasn't my real intention to provide an MQTT client lib for Arduino as there are already good solutions like the "pubsub". Thus, I did just a quick-n-dirty integration of the native C lib to get the broker running in the background (like a 'demon').

TridentTD commented 6 years ago

OK, already done.

Thank you.

TridentTD commented 6 years ago

One more question, if I want to the MQTT Broker know client's ip address, which variable to receive connected client's ip address & client id that publish data to the broker?

martin-ger commented 6 years ago

The struct espconn in the MqttConnectCallback and MqttAuthCallback contains the IP-address: ip_addr_t *remote_addr; remote_addr = (ip_addr_t *)&(pesp_conn->proto.tcp->remote_ip);

You don't get the client's ID at this interface right now.

TridentTD commented 6 years ago

Thank you.