Tydom2mqtt + mosquitto in docker compose - error 104

Dear all.
I am struggling making my Tydom2mqtt / Mosquitto configuration working.
Both are installed in a docker container.
Here is my docker compose file:

services:
  mosquitto:
    container_name: mosquitto
    image: eclipse-mosquitto
    restart: always
    user: 1000:1003
    ports:
      - 1883:1883
      - 1884:1884
      - 9001:9001
    volumes:
      - /home/dimitri/mosquitto:/mosquitto
    depends_on:
      - tydom2mqtt

  tydom2mqtt:
    image: fmartinou/tydom2mqtt
#    image: ghcr.io/tydom2mqtt/tydom2mqtt
    container_name: tydom2mqtt
    restart: always
    environment:
      - TYDOM_MAC=001A2xxxxxx
      - TYDOM_PASSWORD=xxxxxxx
      - TYDOM_IP=192.168.1.102
      - TYDOM_ALARM_HOME_ZONE=1
      - TYDOM_ALARM_NIGHT_ZONE=2
      - TYDOM_POLLING_INTERVAL=300
      - MQTT_HOST=mosquitto
      - MQTT_PORT=1883
      - MQTT_USER=mqtt-user
      - MQTT_PASSWORD=xxxxxxx
      - MQTT_SSL=false
      - LOG_LEVEL=DEBUG

When looking at MQTT explorer, I do not see anything.

Here is the logfile from tydom2mqtt:

Attaching to mosquitto, tydom2mqtt
tydom2mqtt  | 2025-07-21 15:05:34,326 - Starting tydom2mqtt
tydom2mqtt  | 2025-07-21 15:05:34,326 - Validating configuration ({
tydom2mqtt  |     "deltadore_login": null,
tydom2mqtt  |     "deltadore_password": "",
tydom2mqtt  |     "log_level": "DEBUG",
tydom2mqtt  |     "mqtt_host": "mosquitto",
tydom2mqtt  |     "mqtt_password": "m*******r",
tydom2mqtt  |     "mqtt_port": "1883",
tydom2mqtt  |     "mqtt_ssl": "false",
tydom2mqtt  |     "mqtt_user": "mqtt-user",
tydom2mqtt  |     "thermostat_cool_mode_temp_default": 26,
tydom2mqtt  |     "thermostat_custom_presets": null,
tydom2mqtt  |     "thermostat_heat_mode_temp_default": 16,
tydom2mqtt  |     "tydom_alarm_home_zone": "1",
tydom2mqtt  |     "tydom_alarm_night_zone": "2",
tydom2mqtt  |     "tydom_alarm_pin": "",
tydom2mqtt  |     "tydom_ip": "192.168.1.102",
tydom2mqtt  |     "tydom_mac": "001A2503E460",
tydom2mqtt  |     "tydom_password": "D*******1",
tydom2mqtt  |     "tydom_polling_interval": "300"
tydom2mqtt  | }
tydom2mqtt  | 2025-07-21 15:05:34,327 - The configuration is valid
tydom2mqtt  | 2025-07-21 15:05:34,327 - tydom.TydomClient    - DEBUG   - Initializing TydomClient Class
tydom2mqtt  | 2025-07-21 15:05:34,327 - tydom.TydomClient    - INFO    - Configure local mode (192.168.1.102)
tydom2mqtt  | 2025-07-21 15:05:34,328 - asyncio              - DEBUG   - Using selector: EpollSelector
tydom2mqtt  | 2025-07-21 15:05:34,329 - mqtt.MqttClient      - INFO    - Connecting to mqtt broker (host=mosquitto, port=1883, user=mqtt-user, ssl=false)
tydom2mqtt  | 2025-07-21 15:05:34,349 - tydom.TydomClient    - INFO    - Connecting to tydom
tydom2mqtt  | 2025-07-21 15:05:35,549 - tydom.TydomClient    - DEBUG   - Response headers
tydom2mqtt  | 2025-07-21 15:05:35,550 - tydom.TydomClient    - DEBUG   - Connection: close
tydom2mqtt  | WWW-Authenticate: Digest realm="Protected Area", qop="auth", nonce="809524ecccb9fba6101591b315ff8371", opaque="994e3429fbb239ff9a47b17920141d2c"
tydom2mqtt  | Content-Type: text/html
tydom2mqtt  | 
tydom2mqtt  | 
tydom2mqtt  | 2025-07-21 15:05:35,569 - tydom.TydomClient    - DEBUG   - Response code
tydom2mqtt  | 2025-07-21 15:05:35,569 - tydom.TydomClient    - DEBUG   - 401
tydom2mqtt  | 2025-07-21 15:05:35,569 - tydom.TydomClient    - DEBUG   - response
tydom2mqtt  | 2025-07-21 15:05:35,570 - tydom.TydomClient    - DEBUG   - b'<!doctype html>\r\n<html>\r\n<head><title>Error 401</title></head>\r\n<body>\r\n<h2>Error 401</h2>\r\n<p>Authorization required</p>\r\n</body>\r\n</html>\r\n'
tydom2mqtt  | 2025-07-21 15:05:35,571 - tydom.TydomClient    - DEBUG   - Upgrading http connection to websocket....
tydom2mqtt  | 2025-07-21 15:05:35,571 - tydom.TydomClient    - DEBUG   - Attempting websocket connection with Tydom hub
tydom2mqtt  | 2025-07-21 15:05:35,595 - websockets.client    - DEBUG   - = connection is CONNECTING
tydom2mqtt  | 2025-07-21 15:05:35,596 - mqtt.MqttClient      - WARNING - MQTT connection error : 'str' object has no attribute 'wrap_bio'
tydom2mqtt  | 2025-07-21 15:05:36,784 - websockets.client    - DEBUG   - > GET /mediation/client?mac=001A2503E460&appli=1 HTTP/1.1
tydom2mqtt  | 2025-07-21 15:05:36,784 - websockets.client    - DEBUG   - > Host: 192.168.1.102
tydom2mqtt  | 2025-07-21 15:05:36,785 - websockets.client    - DEBUG   - > Upgrade: websocket
tydom2mqtt  | 2025-07-21 15:05:36,785 - websockets.client    - DEBUG   - > Connection: Upgrade
tydom2mqtt  | 2025-07-21 15:05:36,785 - websockets.client    - DEBUG   - > Sec-WebSocket-Key: 7eCJ5A5GzsKJ5JmGWVdE7Q==
tydom2mqtt  | 2025-07-21 15:05:36,785 - websockets.client    - DEBUG   - > Sec-WebSocket-Version: 13
tydom2mqtt  | 2025-07-21 15:05:36,785 - websockets.client    - DEBUG   - > Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits
tydom2mqtt  | 2025-07-21 15:05:36,785 - websockets.client    - DEBUG   - > Authorization: Digest username="001A2503E460", realm="protected area", nonce="809524ecccb9fba6101591b315ff8371", uri="/mediation/client?mac=001A2503E460&appli=1", response="25b2b7e20b9ab1b00309b88927acfc50", qop="auth", nc=00000001, cnonce="52b8c72b02c1cddc"
tydom2mqtt  | 2025-07-21 15:05:36,785 - websockets.client    - DEBUG   - > User-Agent: Python/3.11 websockets/12.0
tydom2mqtt  | 2025-07-21 15:05:36,791 - websockets.client    - DEBUG   - < HTTP/1.1 101 Switching Protocols
tydom2mqtt  | 2025-07-21 15:05:36,791 - websockets.client    - DEBUG   - < Upgrade: websocket
tydom2mqtt  | 2025-07-21 15:05:36,791 - websockets.client    - DEBUG   - < Connection: Upgrade
tydom2mqtt  | 2025-07-21 15:05:36,791 - websockets.client    - DEBUG   - < Sec-WebSocket-Accept: dgBMdJb0QEohptlY0HVxwu5LmGo=
tydom2mqtt  | 2025-07-21 15:05:36,791 - websockets.client    - DEBUG   - = connection is OPEN
tydom2mqtt  | 2025-07-21 15:05:36,791 - tydom.TydomClient    - INFO    - Connected to tydom
tydom2mqtt  | 2025-07-21 15:05:36,791 - tydom.TydomClient    - INFO    - Setup tydom client
tydom2mqtt  | 2025-07-21 15:05:36,791 - tydom.TydomClient    - DEBUG   - Sending message to tydom (GET /info)
tydom2mqtt  | 2025-07-21 15:05:36,791 - websockets.client    - DEBUG   - > BINARY 47 45 54 20 2f 69 6e 66 6f 20 48 54 54 50 2f 31 ... 64 3a 20 30 0d 0a 0d 0a [103 bytes]
tydom2mqtt  | 2025-07-21 15:05:36,792 - tydom.TydomClient    - DEBUG   - running post_refresh
tydom2mqtt  | 2025-07-21 15:05:36,793 - tydom.TydomClient    - DEBUG   - Sending message to tydom (POST /refresh/all)
tydom2mqtt  | 2025-07-21 15:05:36,793 - websockets.client    - DEBUG   - > BINARY 50 4f 53 54 20 2f 72 65 66 72 65 73 68 2f 61 6c ... 64 3a 20 30 0d 0a 0d 0a [111 bytes]
tydom2mqtt  | 2025-07-21 15:05:36,793 - tydom.TydomClient    - DEBUG   - nb_poll_devices : 0
tydom2mqtt  | 2025-07-21 15:05:36,794 - tydom.TydomClient    - DEBUG   - Sending message to tydom (GET /configs/file)
tydom2mqtt  | 2025-07-21 15:05:36,794 - websockets.client    - DEBUG   - > BINARY 47 45 54 20 2f 63 6f 6e 66 69 67 73 2f 66 69 6c ... 64 3a 20 30 0d 0a 0d 0a [111 bytes]
tydom2mqtt  | 2025-07-21 15:05:36,794 - tydom.TydomClient    - DEBUG   - Sending message to tydom (GET /devices/cmeta)
tydom2mqtt  | 2025-07-21 15:05:36,795 - websockets.client    - DEBUG   - > BINARY 47 45 54 20 2f 64 65 76 69 63 65 73 2f 63 6d 65 ... 64 3a 20 30 0d 0a 0d 0a [112 bytes]
tydom2mqtt  | 2025-07-21 15:05:36,795 - tydom.TydomClient    - DEBUG   - Sending message to tydom (GET /devices/data)
tydom2mqtt  | 2025-07-21 15:05:36,795 - websockets.client    - DEBUG   - > BINARY 47 45 54 20 2f 64 65 76 69 63 65 73 2f 64 61 74 ... 64 3a 20 30 0d 0a 0d 0a [111 bytes]
tydom2mqtt  | 2025-07-21 15:05:36,796 - tydom.TydomClient    - DEBUG   - Sending message to tydom (GET /areas/data)
tydom2mqtt  | 2025-07-21 15:05:36,796 - websockets.client    - DEBUG   - > BINARY 47 45 54 20 2f 61 72 65 61 73 2f 64 61 74 61 20 ... 64 3a 20 30 0d 0a 0d 0a [109 bytes]
tydom2mqtt  | 2025-07-21 15:05:36,805 - websockets.client    - DEBUG   - < BINARY 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d ... 67 65 72 2e 6a 73 6f 6e [1024 bytes, continued]
tydom2mqtt  | 2025-07-21 15:05:36,944 - websockets.client    - DEBUG   - < CONT '": 0,\r\n12\r\n"bioclim.json": 0,\r\n16\r\n"dat...ltService", "available"' [text, 1024 bytes, continued]
tydom2mqtt  | 2025-07-21 15:05:36,944 - websockets.client    - DEBUG   - < CONT ':false},\r\n26\r\n{"protocol":"HTTP", "availabl...\r\n1\r\n}\r\n0\r\n\r\n' [text, 71 bytes]
tydom2mqtt  | 2025-07-21 15:05:36,944 - websockets.client    - DEBUG   - < BINARY 50 55 54 20 2f 64 65 76 69 63 65 73 2f 64 61 74 ... 0a 0d 0a 30 0d 0a 0d 0a [271 bytes]
tydom2mqtt  | 2025-07-21 15:05:36,944 - websockets.client    - DEBUG   - < BINARY 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d ... 64 3a 20 30 0d 0a 0d 0a [139 bytes]
tydom2mqtt  | 2025-07-21 15:05:36,945 - tydom.MessageHandler - DEBUG   - Message received detected as (msg_info)
tydom2mqtt  | 2025-07-21 15:05:36,945 - tydom.MessageHandler - DEBUG   - Incoming data parsed with success
tydom2mqtt  | 2025-07-21 15:05:36,945 - tydom.MessageHandler - DEBUG   - PUT /devices/data or /areas/data message detected !
tydom2mqtt  | 2025-07-21 15:05:36,945 - tydom.MessageHandler - DEBUG   - Message received detected as (msg_data)
tydom2mqtt  | 2025-07-21 15:05:36,946 - tydom.MessageHandler - WARNING - Unknown device name (1745492369_1745492369)
tydom2mqtt  | 2025-07-21 15:05:36,946 - tydom.MessageHandler - WARNING - Unknown device type (1745492369_1745492369)
tydom2mqtt  | 2025-07-21 15:05:36,946 - tydom.MessageHandler - INFO    - Device update (id=1745492369, endpoint=1745492369, name=, type=)
tydom2mqtt  | 2025-07-21 15:05:36,946 - tydom.MessageHandler - DEBUG   - Incoming data parsed with success
tydom2mqtt  | 2025-07-21 15:05:36,948 - websockets.client    - DEBUG   - < BINARY 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d ... 3a 22 22 2c 22 6e 61 6d [1024 bytes, continued]
tydom2mqtt  | 2025-07-21 15:05:36,952 - websockets.client    - DEBUG   - < CONT 'e":"équipement non géré","first_usage":"","anti...ation_start":false},{"p' [text, 1024 bytes, continued]
tydom2mqtt  | 2025-07-21 15:05:36,962 - websockets.client    - DEBUG   - < CONT 'icto":"","id_device":1722009481,"name":"Cuisine...rue,"is_group_user":fal' [text, 1024 bytes, continued]
tydom2mqtt  | 2025-07-21 15:05:36,962 - websockets.client    - DEBUG   - < CONT 'se,"name":"TOTAL","picto":"picto_smartplug"}],"....10 (1409)","areas":[]}' [text, 413 bytes]
tydom2mqtt  | 2025-07-21 15:05:36,962 - tydom.MessageHandler - DEBUG   - Message received detected as (msg_config)
tydom2mqtt  | 2025-07-21 15:05:36,963 - tydom.MessageHandler - DEBUG   - Configuration updated
tydom2mqtt  | 2025-07-21 15:05:36,963 - tydom.MessageHandler - DEBUG   - Incoming data parsed with success
tydom2mqtt  | 2025-07-21 15:05:36,968 - websockets.client    - DEBUG   - < BINARY 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d ... 59 22 2c 22 50 4f 57 45 [1024 bytes, continued]
tydom2mqtt  | 2025-07-21 15:05:36,977 - websockets.client    - DEBUG   - < CONT 'R"]}]}\r\n145\r\n,{"name":"oms","permission":"w...e":"station","type":"st' [text, 1024 bytes, continued]
tydom2mqtt  | 2025-07-21 15:05:36,977 - websockets.client    - DEBUG   - < CONT 'ring","enum_values":["TOTAL_ELEC","TI1","TI2","...[]}]}]\r\n\r\n0\r\n\r\n' [text, 321 bytes]
tydom2mqtt  | 2025-07-21 15:05:36,978 - tydom.MessageHandler - DEBUG   - Message received detected as (msg_cmetadata)
tydom2mqtt  | 2025-07-21 15:05:36,978 - tydom.MessageHandler - DEBUG   - Metadata configuration updated
tydom2mqtt  | 2025-07-21 15:05:36,978 - tydom.MessageHandler - DEBUG   - Incoming data parsed with success
tydom2mqtt  | 2025-07-21 15:05:36,989 - websockets.client    - DEBUG   - < BINARY 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d ... 2c 22 76 61 6c 69 64 69 [1024 bytes, continued]
tydom2mqtt  | 2025-07-21 15:05:36,989 - websockets.client    - DEBUG   - < CONT 'ty":"expired","value":false}\r\n3F\r\n,{"name":...e}\r\n3D\r\n,{"name":"l' [text, 1024 bytes, continued]
tydom2mqtt  | 2025-07-21 15:05:36,995 - websockets.client    - DEBUG   - < CONT 'oadSheddingOn","validity":"expired","value":fal...hvacMode","validity":"e' [text, 1024 bytes, continued]
tydom2mqtt  | 2025-07-21 15:05:37,001 - websockets.client    - DEBUG   - < CONT 'xpired","value":"NORMAL"}\r\n34\r\n,{"name":"ti...r\n74\r\n]}]},{"id":0,"' [text, 1024 bytes, continued]
tydom2mqtt  | 2025-07-21 15:05:37,013 - websockets.client    - DEBUG   - < CONT 'endpoints":[{"id":0,"error":15,"data":[{"name":...lse}\r\n41\r\n,{"name":' [text, 1024 bytes, continued]
tydom2mqtt  | 2025-07-21 15:05:37,014 - websockets.client    - DEBUG   - < CONT '"tempSensorShortCut","validity":"expired","valu...\n36\r\n,{"name":"absen' [text, 1024 bytes, continued]
tydom2mqtt  | 2025-07-21 15:05:37,020 - websockets.client    - DEBUG   - < CONT 'ce","validity":"expired","value":false}\r\n3F\r...n,{"name":"antifrostOn"' [text, 1024 bytes, continued]
tydom2mqtt  | 2025-07-21 15:05:37,026 - websockets.client    - DEBUG   - < CONT ',"validity":"expired","value":false}\r\n3D\r\n,...","value":"STOP"}\r\n3A' [text, 1024 bytes, continued]
tydom2mqtt  | 2025-07-21 15:05:37,027 - websockets.client    - DEBUG   - < CONT '\r\n,{"name":"hvacMode","validity":"expired","v...pCoeff","validity":"upT' [text, 1024 bytes, continued]
tydom2mqtt  | 2025-07-21 15:05:37,039 - websockets.client    - DEBUG   - < CONT 'oDate","value":30}\r\n46\r\n]}]},{"id":16863920...r\n,{"name":"energyInst' [text, 1024 bytes, continued]
tydom2mqtt  | 2025-07-21 15:05:37,045 - websockets.client    - DEBUG   - < CONT 'antTotElecP","validity":"expired","value":1404}...name":"energyScaleTi1P_' [text, 1024 bytes, continued]
tydom2mqtt  | 2025-07-21 15:05:37,051 - websockets.client    - DEBUG   - < CONT 'Min","validity":"expired","value":0}\r\n42\r\n,...InstantTi1I","validity"' [text, 1024 bytes, continued]
tydom2mqtt  | 2025-07-21 15:05:37,064 - websockets.client    - DEBUG   - < CONT ':"expired","value":6.460}\r\n44\r\n,{"name":"en...\n40\r\n,{"name":"energ' [text, 1024 bytes, continued]
tydom2mqtt  | 2025-07-21 15:05:37,064 - websockets.client    - DEBUG   - < CONT 'yInstantTi1I","validity":"expired","value":0.73...ue":null}\r\n37\r\n,{"n' [text, 1024 bytes, continued]
tydom2mqtt  | 2025-07-21 15:05:37,067 - websockets.client    - DEBUG   - < CONT 'ame":"timeDelay","validity":"expired","value":n...,"endpoints":[{"id":174' [text, 1024 bytes, continued]
tydom2mqtt  | 2025-07-21 15:05:37,067 - websockets.client    - DEBUG   - < CONT '5492369,"error":0,"data":[{"name":"energyIndexC...}]}]}]\r\n\r\n0\r\n\r\n' [text, 109 bytes]
tydom2mqtt  | 2025-07-21 15:05:37,069 - tydom.MessageHandler - DEBUG   - Message received detected as (msg_data)
tydom2mqtt  | 2025-07-21 15:05:37,069 - tydom.MessageHandler - INFO    - Device update (id=1722006643, endpoint=1722006643, name=Detecteur Fumée, type=smoke)
tydom2mqtt  | 2025-07-21 15:05:37,070 - tydom.MessageHandler - ERROR   - Error on parsing tydom response ('NoneType' object has no attribute 'publish')
tydom2mqtt  | 2025-07-21 15:05:37,070 - tydom.MessageHandler - ERROR   - Incoming data ([{"id":1609836510,"endpoints":[{"id":1609836510,"error":15,"data":[{"name":"authorization","validity":"expired","value":"HEATING"},{"name":"setpoint","validity":"expired","value":null},{"name":"thermicLevel","validity":"expired","value":"STOP"},{"name":"hvacMode","validity":"expired","value":"NORMAL"},{"name":"timeDelay","validity":"expired","value":0},{"name":"temperature","validity":"expired","value":24.940},{"name":"tempoOn","validity":"expired","value":false},{"name":"antifrostOn","validity":"expired","value":true},{"name":"loadSheddingOn","validity":"expired","value":false},{"name":"openingDetected","validity":"expired","value":false},{"name":"presenceDetected","validity":"expired","value":false},{"name":"absence","validity":"expired","value":false},{"name":"productionDefect","validity":"expired","value":false},{"name":"batteryCmdDefect","validity":"expired","value":false},{"name":"tempSensorDefect","validity":"expired","value":false},{"name":"tempSensorShortCut","validity":"expired","value":false},{"name":"tempSensorOpenCirc","validity":"expired","value":false},{"name":"boostOn","validity":"expired","value":false},{"name":"anticipCoeff","validity":"upToDate","value":30}]}]},{"id":1609914299,"endpoints":[{"id":1609914299,"error":15,"data":[{"name":"authorization","validity":"expired","value":"HEATING"},{"name":"setpoint","validity":"expired","value":null},{"name":"thermicLevel","validity":"expired","value":"STOP"},{"name":"hvacMode","validity":"expired","value":"NORMAL"},{"name":"timeDelay","validity":"expired","value":0},{"name":"temperature","validity":"expired","value":24.240},{"name":"tempoOn","validity":"expired","value":false},{"name":"antifrostOn","validity":"expired","value":true},{"name":"loadSheddingOn","validity":"expired","value":false},{"name":"openingDetected","validity":"expired","value":false},{"name":"presenceDetected","validity":"expired","value":false},{"name":"absence","validity":"expired","value":false},{"name":"productionDefect","validity":"expired","value":false},{"name":"batteryCmdDefect","validity":"expired","value":false},{"name":"tempSensorDefect","validity":"expired","value":false},{"name":"tempSensorShortCut","validity":"expired","value":false},{"name":"tempSensorOpenCirc","validity":"expired","value":false},{"name":"boostOn","validity":"expired","value":false},{"name":"anticipCoeff","validity":"upToDate","value":30}]}]},{"id":1609914462,"endpoints":[{"id":1609914462,"error":15,"data":[{"name":"authorization","validity":"expired","value":"HEATING"},{"name":"setpoint","validity":"expired","value":null},{"name":"thermicLevel","validity":"expired","value":"STOP"},{"name":"hvacMode","validity":"expired","value":"NORMAL"},{"name":"timeDelay","validity":"expired","value":0},{"name":"temperature","validity":"expired","value":null},{"name":"tempoOn","validity":"expired","value":false},{"name":"antifrostOn","validity":"expired","value":true},{"name":"loadSheddingOn","validity":"expired","value":false},{"name":"openingDetected","validity":"expired","value":false},{"name":"presenceDetected","validity":"expired","value":false},{"name":"absence","validity":"expired","value":false},{"name":"productionDefect","validity":"expired","value":false},{"name":"batteryCmdDefect","validity":"expired","value":false},{"name":"tempSensorDefect","validity":"expired","value":true},{"name":"tempSensorShortCut","validity":"expired","value":false},{"name":"tempSensorOpenCirc","validity":"expired","value":false},{"name":"boostOn","validity":"expired","value":false},{"name":"anticipCoeff","validity":"upToDate","value":30}]}]},{"id":0,"endpoints":[{"id":0,"error":15,"data":[{"name":"authorization","validity":"expired","value":"HEATING"},{"name":"setpoint","validity":"expired","value":null},{"name":"thermicLevel","validity":"expired","value":"STOP"},{"name":"hvacMode","validity":"expired","value":"NORMAL"},{"name":"timeDelay","validity":"expired","value":0},{"name":"temperature","validity":"expired","value":25.220},{"name":"tempoOn","validity":"expired","value":false},{"name":"antifrostOn","validity":"expired","value":true},{"name":"loadSheddingOn","validity":"expired","value":false},{"name":"openingDetected","validity":"expired","value":false},{"name":"presenceDetected","validity":"expired","value":false},{"name":"absence","validity":"expired","value":false},{"name":"productionDefect","validity":"expired","value":false},{"name":"batteryCmdDefect","validity":"expired","value":false},{"name":"tempSensorDefect","validity":"expired","value":false},{"name":"tempSensorShortCut","validity":"expired","value":false},{"name":"tempSensorOpenCirc","validity":"expired","value":false},{"name":"boostOn","validity":"expired","value":false},{"name":"anticipCoeff","validity":"upToDate","value":30}]}]},{"id":1,"endpoints":[{"id":0,"error":15,"data":[{"name":"authorization","validity":"expired","value":null},{"name":"setpoint","validity":"expired","value":null},{"name":"thermicLevel","validity":"expired","value":null},{"name":"hvacMode","validity":"expired","value":null},{"name":"timeDelay","validity":"expired","value":null},{"name":"temperature","validity":"expired","value":null},{"name":"tempoOn","validity":"expired","value":false},{"name":"antifrostOn","validity":"expired","value":false},{"name":"loadSheddingOn","validity":"expired","value":false},{"name":"openingDetected","validity":"expired","value":false},{"name":"presenceDetected","validity":"expired","value":false},{"name":"absence","validity":"expired","value":false},{"name":"productionDefect","validity":"expired","value":false},{"name":"batteryCmdDefect","validity":"expired","value":false},{"name":"tempSensorDefect","validity":"expired","value":false},{"name":"tempSensorShortCut","validity":"expired","value":false},{"name":"tempSensorOpenCirc","validity":"expired","value":false},{"name":"boostOn","validity":"expired","value":false},{"name":"anticipCoeff","validity":"upToDate","value":30}]}]},{"id":2,"endpoints":[{"id":0,"error":15,"data":[{"name":"authorization","validity":"expired","value":null},{"name":"setpoint","validity":"expired","value":null},{"name":"thermicLevel","validity":"expired","value":null},{"name":"hvacMode","validity":"expired","value":null},{"name":"timeDelay","validity":"expired","value":null},{"name":"temperature","validity":"expired","value":null},{"name":"tempoOn","validity":"expired","value":false},{"name":"antifrostOn","validity":"expired","value":false},{"name":"loadSheddingOn","validity":"expired","value":false},{"name":"openingDetected","validity":"expired","value":false},{"name":"presenceDetected","validity":"expired","value":false},{"name":"absence","validity":"expired","value":false},{"name":"productionDefect","validity":"expired","value":false},{"name":"batteryCmdDefect","validity":"expired","value":false},{"name":"tempSensorDefect","validity":"expired","value":false},{"name":"tempSensorShortCut","validity":"expired","value":false},{"name":"tempSensorOpenCirc","validity":"expired","value":false},{"name":"boostOn","validity":"expired","value":false},{"name":"anticipCoeff","validity":"upToDate","value":30}]}]},{"id":3,"endpoints":[{"id":0,"error":15,"data":[{"name":"authorization","validity":"expired","value":"HEATING"},{"name":"setpoint","validity":"expired","value":null},{"name":"thermicLevel","validity":"expired","value":"STOP"},{"name":"hvacMode","validity":"expired","value":"NORMAL"},{"name":"timeDelay","validity":"expired","value":0},{"name":"temperature","validity":"expired","value":25.090},{"name":"tempoOn","validity":"expired","value":false},{"name":"antifrostOn","validity":"expired","value":true},{"name":"loadSheddingOn","validity":"expired","value":false},{"name":"openingDetected","validity":"expired","value":false},{"name":"presenceDetected","validity":"expired","value":false},{"name":"absence","validity":"expired","value":false},{"name":"productionDefect","validity":"expired","value":false},{"name":"batteryCmdDefect","validity":"expired","value":false},{"name":"tempSensorDefect","validity":"expired","value":false},{"name":"tempSensorShortCut","validity":"expired","value":false},{"name":"tempSensorOpenCirc","validity":"expired","value":false},{"name":"boostOn","validity":"expired","value":false},{"name":"anticipCoeff","validity":"upToDate","value":30}]}]},{"id":1686392044,"endpoints":[{"id":1686392044,"error":15,"data":[{"name":"thermicDefect","validity":"expired","value":false},{"name":"level","validity":"expired","value":100},{"name":"onFavPos","validity":"expired","value":false}]}]},{"id":1686394223,"endpoints":[{"id":1686394223,"error":15,"data":[{"name":"jobsMP","validity":"upToDate","value":144},{"name":"softVersion","validity":"upToDate","value":"01.02.03"},{"name":"softPlan","validity":"upToDate","value":"23.63.00.11"},{"name":"energyTotIndexWatt","validity":"expired","value":12678173},{"name":"energyInstantTotElec","validity":"expired","value":6.000},{"name":"energyInstantTotElec_Min","validity":"expired","value":0.000},{"name":"energyInstantTotElec_Max","validity":"expired","value":48.000},{"name":"energyScaleTotElec_Min","validity":"expired","value":0.000},{"name":"energyScaleTotElec_Max","validity":"expired","value":30.000},{"name":"energyInstantTotElecP","validity":"expired","value":1404},{"name":"energyInstantTotElec_P_Min","validity":"expired","value":0},{"name":"energyInstantTotElec_P_Max","validity":"expired","value":10896},{"name":"energyScaleTotElec_P_Min","validity":"expired","value":0},{"name":"energyScaleTotElec_P_Max","validity":"expired","value":6000},{"name":"energyIndexTi1","validity":"expired","value":1350222},{"name":"energyInstantTi1I","validity":"expired","value":0.100},{"name":"energyInstantTi1I_Min","validity":"expired","value":0.000},{"name":"energyInstantTi1I_Max","validity":"expired","value":30.230},{"name":"energyScaleTi1I_Min","validity":"expired","value":0.000},{"name":"energyScaleTi1I_Max","validity":"expired","value":60.000},{"name":"energyInstantTi1P","validity":"expired","value":0},{"name":"energyInstantTi1P_Min","validity":"expired","value":0},{"name":"energyInstantTi1P_Max","validity":"expired","value":6863},{"name":"energyScaleTi1P_Min","validity":"expired","value":0},{"name":"energyScaleTi1P_Max","validity":"expired","value":15420},{"name":"energyIndexColdWater","validity":"expired","value":null},{"name":"leakWaterDetect","validity":"expired","value":false},{"name":"leakWaterVolume","validity":"expired","value":null}]}]},{"id":1722006643,"endpoints":[{"id":1722006643,"error":0,"data":[{"name":"config","validity":"upToDate","value":2},{"name":"battDefect","validity":"upToDate","value":false},{"name":"supervisionMode","validity":"upToDate","value":"LONG"},{"name":"techSmokeDefect","validity":"upToDate","value":false}]}]},{"id":1722007943,"endpoints":[{"id":1722007943,"error":15,"data":[{"name":"jobsMP","validity":"upToDate","value":144},{"name":"softVersion","validity":"upToDate","value":"01.02.02"},{"name":"softPlan","validity":"upToDate","value":"23.63.00.15"},{"name":"energyIndexTi1","validity":"expired","value":678654},{"name":"energyInstantTi1I","validity":"expired","value":6.460},{"name":"energyInstantTi1I_Min","validity":"expired","value":0.000},{"name":"energyInstantTi1I_Max","validity":"expired","value":17.930},{"name":"energyScaleTi1I_Min","validity":"expired","value":0.000},{"name":"energyScaleTi1I_Max","validity":"expired","value":35.860},{"name":"energyInstantTi1P","validity":"expired","value":1},{"name":"energyInstantTi1P_Min","validity":"expired","value":0},{"name":"energyInstantTi1P_Max","validity":"expired","value":4158},{"name":"energyScaleTi1P_Min","validity":"expired","value":0},{"name":"energyScaleTi1P_Max","validity":"expired","value":9200}]}]},{"id":1722009481,"endpoints":[{"id":1722009481,"error":15,"data":[{"name":"jobsMP","validity":"upToDate","value":144},{"name":"softVersion","validity":"upToDate","value":"01.02.02"},{"name":"softPlan","validity":"upToDate","value":"23.63.00.15"},{"name":"energyIndexTi1","validity":"expired","value":264470},{"name":"energyInstantTi1I","validity":"expired","value":0.730},{"name":"energyInstantTi1I_Min","validity":"expired","value":0.000},{"name":"energyInstantTi1I_Max","validity":"expired","value":28.960},{"name":"energyScaleTi1I_Min","validity":"expired","value":0.000},{"name":"energyScaleTi1I_Max","validity":"expired","value":57.920},{"name":"energyInstantTi1P","validity":"expired","value":1509},{"name":"energyInstantTi1P_Min","validity":"expired","value":0},{"name":"energyInstantTi1P_Max","validity":"expired","value":7900},{"name":"energyScaleTi1P_Min","validity":"expired","value":0},{"name":"energyScaleTi1P_Max","validity":"expired","value":15420}]}]},{"id":1736021088,"endpoints":[{"id":1736021088,"error":15,"data":[{"name":"authorization","validity":"expired","value":null},{"name":"setpoint","validity":"expired","value":null},{"name":"thermicLevel","validity":"expired","value":null},{"name":"hvacMode","validity":"expired","value":null},{"name":"timeDelay","validity":"expired","value":null},{"name":"temperature","validity":"expired","value":null},{"name":"tempoOn","validity":"expired","value":false},{"name":"antifrostOn","validity":"expired","value":false},{"name":"loadSheddingOn","validity":"expired","value":false},{"name":"openingDetected","validity":"expired","value":false},{"name":"presenceDetected","validity":"expired","value":false},{"name":"absence","validity":"expired","value":false},{"name":"productionDefect","validity":"expired","value":false},{"name":"batteryCmdDefect","validity":"expired","value":false},{"name":"tempSensorDefect","validity":"expired","value":false},{"name":"tempSensorShortCut","validity":"expired","value":false},{"name":"tempSensorOpenCirc","validity":"expired","value":false},{"name":"boostOn","validity":"expired","value":false},{"name":"anticipCoeff","validity":"upToDate","value":30}]}]},{"id":1745492369,"endpoints":[{"id":1745492369,"error":0,"data":[{"name":"energyIndexColdWater","validity":"upToDate","value":2769990}]}]}]
tydom2mqtt  | )
tydom2mqtt  | 2025-07-21 15:05:37,070 - tydom.MessageHandler - ERROR   - 'NoneType' object has no attribute 'publish'
tydom2mqtt  | Traceback (most recent call last):
tydom2mqtt  |   File "/app/tydom/MessageHandler.py", line 407, in parse_response
tydom2mqtt  |     await self.parse_devices_data(parsed=parsed)
tydom2mqtt  |   File "/app/tydom/MessageHandler.py", line 517, in parse_devices_data
tydom2mqtt  |     await self.parse_endpoint_data(endpoint, i["id"])
tydom2mqtt  |   File "/app/tydom/MessageHandler.py", line 806, in parse_endpoint_data
tydom2mqtt  |     await new_smoke.update()
tydom2mqtt  |   File "/app/sensors/Sensor.py", line 149, in update
tydom2mqtt  |     await self.setup()  # Publish config
tydom2mqtt  |     ^^^^^^^^^^^^^^^^^^
tydom2mqtt  |   File "/app/sensors/Sensor.py", line 136, in setup
tydom2mqtt  |     self.mqtt.mqtt_client.publish(
tydom2mqtt  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tydom2mqtt  | AttributeError: 'NoneType' object has no attribute 'publish'
tydom2mqtt  | 2025-07-21 15:05:37,073 - tydom.MessageHandler - DEBUG   - Incoming data parsed with success
tydom2mqtt  | 2025-07-21 15:05:37,108 - websockets.client    - DEBUG   - < BINARY 48 54 54 50 2f 31 2e 31 20 32 30 30 20 4f 4b 0d ... 0a 0d 0a 30 0d 0a 0d 0a [161 bytes]
tydom2mqtt  | 2025-07-21 15:05:37,109 - tydom.MessageHandler - WARNING - Unknown message type received ([]
tydom2mqtt  | )
tydom2mqtt  | 2025-07-21 15:05:37,109 - tydom.MessageHandler - DEBUG   - Incoming data parsed with success
tydom2mqtt  | 2025-07-21 15:05:56,817 - websockets.client    - DEBUG   - % sending keepalive ping
tydom2mqtt  | 2025-07-21 15:05:56,817 - websockets.client    - DEBUG   - > PING 55 91 6f 4d [binary, 4 bytes]
tydom2mqtt  | 2025-07-21 15:05:56,819 - websockets.client    - DEBUG   - < PONG '' [0 bytes]
tydom2mqtt  | 2025-07-21 15:06:16,838 - websockets.client    - DEBUG   - % sending keepalive ping
tydom2mqtt  | 2025-07-21 15:06:16,838 - websockets.client    - DEBUG   - > PING ad d2 10 6d [binary, 4 bytes]
tydom2mqtt  | 2025-07-21 15:06:16,840 - websockets.client    - DEBUG   - < PONG '' [0 bytes]

and the logfile from mosquitto:

1753110334: mosquitto version 2.0.22 starting
1753110334: Config loaded from /mosquitto/config/mosquitto.conf.
1753110334: Opening ipv4 listen socket on port 1883.
1753110334: Opening ipv6 listen socket on port 1883.
1753110334: mosquitto version 2.0.22 running
1753110335: New connection from 172.18.0.2:57956 on port 1883.
1753110335: Client <unknown> closed its connection.

Any help would be wonderful.
Thanks.

Look at environment variables for tydom2mqtt

You need to create the defined user in mosquitto. Login to mosquitto via command line and run commands

Hi.
Thanks for supporting.
I did create an user and password in mosquitto strictly following this great tuto.
my mosquitto conf file is the following one:

dimitri@HomeAssistant:~/mosquitto/config$ ls -al
total 16
drwxr-xr-x 2 dimitri dimitri 4096 Jul 21 16:33 ./
drwxrwxr-x 5 dimitri dimitri 4096 Jul 13 13:11 ../
-rw-rw-r-- 1 dimitri dimitri  372 Jul 21 16:33 mosquitto.conf
-rw-rw-r-- 1 dimitri dimitri  123 Jul 20 19:20 password.txt

dimitri@HomeAssistant:~/mosquitto/config$ more mosquitto.conf 
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
listener 1883

allow_anonymous false
password_file /mosquitto/config/password.txt

And the password file looks about like that:

dimitri@HomeAssistant:~/mosquitto/config$ more password.txt
mqtt-user:$7$101$bnjVGNpkSYcyfVG9$nRtxxfs2dDuknLJsRakmgCmphLqwcHP/FidVgCXrhljh6YAEBM3ZAinPGyxN7OQ==

I hope the password file is readable in mosquitto container…

I manage without issue to connect to the docker with mosquitto explorer using the login and password:

I even tried with “allow_anonymous true” without success.

if that can help, I am running ubuntu server 25.04 on Raspberry pi5.

Any help would be more than welcome.

Before or after I recommended to do so?

And you still get same error “client unknown”?

You provided mosquitto log but based on above mosquito seems ok. Can you give exact issue and log for paho2mqtt.

Hi.

I did it from the beginning when I first configure mosquitto.
So yes, before you recommended to do so.

I am away 8 days.
I come back early august to continue investigating.
Thanks.
Dimitri

Hi back.

To continue my investigation on understanding why Tydom2mqtt fails to publish messages on mosquitto, I did the following exercise:

  1. I used the following compose.yaml file:
services:
  mosquitto:
    container_name: mosquitto
    image: eclipse-mosquitto
    restart: always
    user: 1883:1883
    ports:
      - 1883:1883
      - 1884:1884
      - 9001:9001
    volumes:
      - /home/dimitri/mosquitto/config:/mosquitto/config
      - /home/dimitri/mosquitto/log:/mosquitto/log
      - /home/dimitri/mosquitto/data:/mosquitto/data

  tydom2mqtt:
    image: fmartinou/tydom2mqtt
    container_name: tydom2mqtt
    restart: always
    environment:
      - TYDOM_MAC=0blabla
      - TYDOM_PASSWORD=blabla
      - TYDOM_IP=192.168.1.102
      - TYDOM_ALARM_HOME_ZONE=1
      - TYDOM_ALARM_NIGHT_ZONE=2
      - TYDOM_POLLING_INTERVAL=300
      - MQTT_HOST=mosquitto
      - MQTT_PORT=1883
      - MQTT_USER=mqtt-user
      - MQTT_PASSWORD=mqtt-user
      - MQTT_SSL=false
      - LOG_LEVEL=DEBUG
  1. I ran the following command “docker compose up -d”

  2. I looked at the mosquitto.log file:

dimitri@HomeAssistant:~/mosquitto/log$ sudo tail -f mosquitto.log 
1754151972: mosquitto version 2.0.22 starting
1754151972: Config loaded from /mosquitto/config/mosquitto.conf.
1754151972: Opening ipv4 listen socket on port 1883.
1754151972: Opening ipv6 listen socket on port 1883.
1754151972: mosquitto version 2.0.22 running
1754151974: New connection from 172.18.0.2:55132 on port 1883.
1754151974: Client <unknown> closed its connection.
  1. I used, on my computer, the mqtt explorer to connect on mosquitto:

  2. I add a look at the mosquitto log file. I got the 2 following lines:

1754152009: New connection from 192.168.1.110:36156 on port 1883.
1754152009: New client connected from 192.168.1.110:36156 as mqtt-explorer-93c34a6a (p2, c1, k60, u'mqtt-user').

Out of this exercise, my conclusion is that the mosquitto docker seems to work properly…
As Tydom2mqtt is supposed to work… I cannot understand why it does not manage to stay connected to mosquitto.

Is there any kind of attention to put on users/files rights?
Mosquitto is working with 1883:1883 user:group.
I do not know if it matters with Tydom2mqtt.
(for your information, I tried to remove the line " user: 1883:1883" in compose.yaml file but no improvement and same outcomes)

Thanks for your support.

User / pass for mqtt works

Issue is tydom2mqtt. Can you look at logs for it for an login error? I would also consider asking at their github

Maybe try adding single quote to username
And password or maybe double quote. I forget which is which. Do both.

It look likes it is not logging in.

Also look at this

Thanks a lot for your link. I face strictly the same issue.
I will continue investigating within this post on he topic.
I close then my current post.

Thanks again.