Dyson MQTT broker goes offline after about an hour

I have had Dyson Heater Fan successfully connected to openHab for quite some years now.
Setup from this thread: Integrate Dyson Pure Cool Link - #92 by Frank_Sie
Lately it has started going offline and I’m at a loss as to why.

I have enabled trace logging for mqtt:

Starting out, the connection to the broker, aka the fan itself, is offline:


Then, after power cycling the fan, it goes online, and is controllable through the sitemap/rules.

It will stay online for just over an hour, then drop offline again, with status as above. The logs does not say much. While online:

2024-07-10 17:33:30.202 [DEBUG] [qtt.generic.AbstractMQTTThingHandler] - Successfully published value {"msg":"REQUEST-CURRENT-STATE", "time":"2024-07-10T17:33:30.184Z"} to topic 455/PT4-EU-PDA6549A/command
2024-07-10 17:34:00.202 [DEBUG] [qtt.generic.AbstractMQTTThingHandler] - Successfully published value {"msg":"REQUEST-CURRENT-STATE", "time":"2024-07-10T17:34:00.184Z"} to topic 455/PT4-EU-PDA6549A/command
2024-07-10 17:34:30.202 [DEBUG] [qtt.generic.AbstractMQTTThingHandler] - Successfully published value {"msg":"REQUEST-CURRENT-STATE", "time":"2024-07-10T17:34:30.183Z"} to topic 455/PT4-EU-PDA6549A/command

goes offline here ...........

2024-07-10 17:34:57.751 [INFO ] [.reconnect.PeriodicReconnectStrategy] - Try to restore connection to '192.168.1.7'. Next attempt in 60000ms
2024-07-10 17:34:57.755 [INFO ] [.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection to '192.168.1.7' with clientid c1c81672-f7ce-482d-88b7-51eda951f1e6
2024-07-10 17:35:57.757 [INFO ] [.reconnect.PeriodicReconnectStrategy] - Try to restore connection to '192.168.1.7'. Next attempt in 60000ms
2024-07-10 17:35:57.761 [INFO ] [.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection to '192.168.1.7' with clientid c1c81672-f7ce-482d-88b7-51eda951f1e6
2024-07-10 17:36:57.763 [INFO ] [.reconnect.PeriodicReconnectStrategy] - Try to restore connection to '192.168.1.7'. Next attempt in 60000ms
2024-07-10 17:36:57.765 [INFO ] [.transport.mqtt.MqttBrokerConnection] - Starting MQTT broker connection to '192.168.1.7' with clientid c1c81672-f7ce-482d-88b7-51eda951f1e6

.thing

Bridge mqtt:broker:dyson455broker [ host="192.168.1.7", port="1883", secure=false, username="PT4-EU-PDA6549A", password="retracted", enableDiscovery=false, qos=1 ] 
{
    Thing topic dyson455  {
    Channels:
        Type string : dyson_status [ stateTopic="455/PT4-EU-PDA6549A/status/current", postCommand="true" ]
        Type string : dyson_request [ commandTopic="455/PT4-EU-PDA6549A/command", postCommand="true" ]
    }
}

Have tried pinging the fan 192.168.1.7 (MAC assigned IP from DHCP) for more than an hour. No packet loss. Fan is just 1.5m from the WiFi AP.

Other changes done before problem started:

  • introduced a Netgate 1100 with pfsense+
  • changed the WiFi AP, but also tried the old one, so same result with two different APs
  • haven’t tried restoring the original AP as Router, as I cannot believe pfsense+ is causing this?
  • I have updated OH for every Milestone release, and am now on 4.2.0 Release

Could anything in the MQTT binding cause this?
Any suggestions are most welcome.

Side note:
When the fan got online, why is a selection of my other binding channels logged in mqtt?

2024-07-11 00:57:31.522 [TRACE] [.MqttChannelStateDescriptionProvider] - Providing command description for channel deconz:temperaturesensor:lydhus:0017880104b75bff020402:temperature
2024-07-11 00:57:31.525 [TRACE] [.MqttChannelStateDescriptionProvider] - Providing command description for channel squeezebox:squeezeboxplayer:CampingServer:000420227012:control
2024-07-11 00:57:31.528 [TRACE] [.MqttChannelStateDescriptionProvider] - Providing command description for channel deconz:colortemperaturelight:lydhus:000b57fffe2d940101:brightness
2024-07-11 00:57:31.529 [TRACE] [.MqttChannelStateDescriptionProvider] - Providing command description for channel deconz:lightgroup:lydhus:5:color
2024-07-11 00:57:31.531 [TRACE] [.MqttChannelStateDescriptionProvider] - Providing command description for channel deconz:colortemperaturelight:lydhus:000b57fffe27001501:color_temperature
2024-07-11 00:57:31.533 [TRACE] [.MqttChannelStateDescriptionProvider] - Providing command description for channel deconz:lightgroup:lydhus:5:color_temperature
2024-07-11 00:57:31.535 [TRACE] [.MqttChannelStateDescriptionProvider] - Providing state description for channel mqtt:topic:dyson455broker:dyson455:dyson_request
2024-07-11 00:57:31.537 [TRACE] [.MqttChannelStateDescriptionProvider] - Providing state description for channel mqtt:topic:dyson455broker:dyson455:dyson_request
2024-07-11 00:57:31.538 [TRACE] [.MqttChannelStateDescriptionProvider] - Providing command description for channel mqtt:topic:dyson455broker:dyson455:dyson_request
2024-07-11 00:57:31.539 [TRACE] [.MqttChannelStateDescriptionProvider] - Providing state description for channel mqtt:topic:dyson455broker:dyson455:dyson_request
2024-07-11 00:57:31.540 [TRACE] [.MqttChannelStateDescriptionProvider] - Providing command description for channel deconz:extendedcolorlight:lydhus:00178801040516920b:color
2024-07-11 00:57:31.542 [TRACE] [.MqttChannelStateDescriptionProvider] - Providing command description for channel deconz:colortemperaturelight:lydhus:000b57fffe27001501:brightness
2024-07-11 00:57:31.544 [TRACE] [.MqttChannelStateDescriptionProvider] - Providing command description for channel deconz:colortemperaturelight:lydhus:000b57fffe2d940101:color_temperature
2024-07-11 00:57:31.546 [TRACE] [.MqttChannelStateDescriptionProvider] - Providing command description for channel onkyo:onkyoUnsupported:aeb01731-7b17-31b9-541e-31097bb972cb:zone1#volume
2024-07-11 00:57:31.548 [TRACE] [.MqttChannelStateDescriptionProvider] - Providing command description for channel deconz:extendedcolorlight:lydhus:00178801040516920b:color
2024-07-11 00:57:31.550 [TRACE] [.MqttChannelStateDescriptionProvider] - Providing command description for channel deconz:extendedcolorlight:lydhus:00178801040516920b:color
2024-07-11 00:57:31.553 [TRACE] [.MqttChannelStateDescriptionProvider] - Providing command description for channel hue:0210:00212E027775:13:color
2024-07-11 00:57:31.555 [TRACE] [.MqttChannelStateDescriptionProvider] - Providing command description for channel deconz:colortemperaturelight:lydhus:000b57fffe2d940101:brightness
2024-07-11 00:57:31.556 [TRACE] [.MqttChannelStateDescriptionProvider] - Providing command description for channel deconz:extendedcolorlight:lydhus:00178801040516920b:color_temperature
2024-07-11 00:57:31.558 [TRACE] [.MqttChannelStateDescriptionProvider] - Providing state description for channel mqtt:topic:dyson455broker:dyson455:dyson_status
2024-07-11 00:57:31.559 [TRACE] [.MqttChannelStateDescriptionProvider] - Providing state description for channel mqtt:topic:dyson455broker:dyson455:dyson_status
2024-07-11 00:57:31.560 [TRACE] [.MqttChannelStateDescriptionProvider] - Providing command description for channel mqtt:topic:dyson455broker:dyson455:dyson_status
2024-07-11 00:57:31.561 [TRACE] [.MqttChannelStateDescriptionProvider] - Providing state description for channel mqtt:topic:dyson455broker:dyson455:dyson_status
2024-07-11 00:57:31.564 [TRACE] [.MqttChannelStateDescriptionProvider] - Providing command description for channel harmonyhub:device:Lydhus:64174787:buttonPress
2024-07-11 00:57:38.817 [DEBUG] [qtt.generic.AbstractMQTTThingHandler] - Successfully published value {"msg":"STATE-SET","time":"2024-07-11T00:57:38.783Z","mode-reason":"LAPP","data":{"fmod":"AUTO"}} to topic 455/PT4-EU-PDA6549A/command
2024-07-11 00:58:00.209 [DEBUG] [qtt.generic.AbstractMQTTThingHandler] - Successfully published value {"msg":"REQUEST-CURRENT-STATE", "time":"2024-07-11T00:58:00.184Z"} to topic 455/PT4-EU-PDA6549A/command

Update: it has stayed online through the night … a first. Only thing I did was re-save the .things file after removing a newline.

I finally figured it out.
The Dyson fan is calling home, punching a hole in the firewall and disables local control.


Denying the fan access to the internet fixes the issue.
Adding this DENY rule for the fan IP 192.168.1.7 does the trick:

Stays Online now. :slight_smile: