MQTT API is now available in beta

The latest Smart Lock 3.0 Pro Beta FW 3.4.4 does contain the MQTT API v1.2

Please carefully read the description on how to enable the beta and the remarks about the restrictions of the current implementation in section 2.1 of the specification.

Have fun! :vulcan_salute:

5 Likes

Updated the lock, published MDNS record, added access to Mosquitto, put and now I’m receiving MQTT updates from the lock and I’ve been able to lock and unlock it through published messages as well.
Are there any specific thing you’d like to have tested? I will work out a config to add the lock to Home Assistant and post it here when I have something working.

I’m having troubles getting the custom mDNS or DNS record published. Mosquitto is running on Docker on a Synology NAS with port 1883 exposed. On Mosquitto I have created the nuki account with the SHA256 hash of my WiFi password as the password for this account (and also try with anonymous access). I use Pihole for custom DNS but for some reason it doesnt resolve mqtt as it probably isnt a FQDN and misses a dot in the domainname. I have no clue on how to publish a mDNS record for a different service from outside the Mosquitto container to make it resolve to my Synology NAS (where Mosquitto is listening on port 1883 from a Docker container). Does anyone have some pointers on how to proceed?

Most important feedback would be strange or abnormal behavior that you notice during regular use. e.g. delay in messages, lost messages, …

Not sure how this works on your system, but on linux /raspberries avahi is usually used to publish MDSN messages.

My avahi config in the /etc/avahi/avahi-daemon.conf looks like this:

[server]
host-name=mqtt
domain-name=local

I can resolve the host on every other client in my network. e.g. “ping mqtt.local” works on every mac / pc in the same LAN. If this does not work for you there are tools (MDNS browser) available that allow you to see what is published via MDNS in your network.

is pihole also your dhcp server? check this post.

Thanx. I’m aware avahi can be used on Linux but since Mosquitto runs in a Docker container with only port 1883 exposed this is not going to work. I could perhaps check if I can change the config of the host (the Synology NAS) but I dont want to mess with it to much as it’s the heart of my home network in various ways.

Nope, I have an Edgerouter X that is running the DHCP server. Still gonna check the post for inspiration though, thanx.

So you might want to check this post.

Thanx, turns out Pihole might not be the problem. I was using ping mqtt on a Windows machine and appearently ping doesnt work without a dot in the domain. Doing ping mqtt. does resolve so I assume that DNS mqtt is resolving correctly to the IP address of my NAS within my network. So there must be something else not working but I’m away for the weekend. To be continued at a later time.

Did you configure DHCP Option 119 (Domain Search List) in the EdgeRouter’s DHCP service?
That option tells the client to append a specific domain name if the hostname is not FQDN.

Linux dhcp client honors that setting, Windows does since Windows 10 version 1803. I guess the Nuki Bridge DHCP client respects it too, if it’s linux based.

I use OPNsense DHCP service with that option and it works as expected, both on Linux/Windows clients.

Windows client (no fqdn, no dot suffix):

image

Linux client:

image

Thanks for the tip. I have not explicitly set that option. I needs to be set through the CLI on the edgerouter but I’m a little unclear on the exact command. Not much information on this. Only a generic page on how to set custom DHCP options. Will look into it when I get back, not gonna mess with my router from remote.

You can also use dnsmasq on the edgerouter (see here), I’d switch to that, dnsmasq is extremely reliable and allows you to configure a lot of things, and you have a lot of documentation available for every use case.

No need to rush these things, take your time and do it when you can experiment. :slight_smile:

Spend a couple of hours on this now and I’m giving up. I’ll await the final version.

mqtt is resolving within my network now correctly to the IP of Mosquitto but I’m still not seeying any status topics . Have also tried with anonymous access on Mosquitto to no avail. Have no clue as to why this isnt working for me.

Did have a lot of trouble getting the built-in WiFi to pick up my network with strange unexplained error like network not available or even incorrect password. The Unifi access point is within 2 meter and the password is correct. Flicking the built-in WiFi off and on and trying multiple times eventually gets it connected but this is definitely not how it should be.

A few things that might help:

  1. If you have problems with the Nuki connecting to a unifi network you might try this settings: Underlaying reasons for guest network - #2 by Juergen

  2. Disabling/Enabling WiFi on the SL3P is asynchronous. If you do it in too fast succession it might end up in reassociation problems (which is shown as wrong password), because the device has not been properly been disconnected from the wifi before. Some routers seem to have some sort of grace period that needs to pass between attempts to join the network.

  3. I was able to have my EdgeRouter resolve any hostname by adding entries via the Config Tree UI to system > static-host-mapping > host-name. Works with fully qualified domain names as well as only local hostnames.

Thanx. Today I tried again and without changing anything to my setup I’m now seeying the topics on my Mosquitto instance. Not sure why it wasnt working before. I’ll start testing now.