Hast du in der configuration.yaml auch was festgelegt?
Den Teil erledigt hier ein separater reaktivierter PI, der die Daten auch sauber an die erwartete Stelle (zigbee_pi) liefert: zigbee_pi:zigbee2mqtt/bridge/state:.* state
In der yaml steht hier unter mqtt die Angabe "client_id: 'zigbee_pi'".
Nur tauchen daneben weitere MQTT2-Devices auf mit immer wieder anderen Nummern. Bin mittlerweile aber ziemlich sicher, dass es daran liegt, dass ich keinen anderen Broker mehr am laufen habe und für die ersten Geh-Versuche noch ein 00_MQTT-Gerät (mit der externen IP des FHEM-Servers, da es über localhost nicht wollte) und zwei Leuchtmittel als Xiaomi-MQTT-Devices definiert sind. Irgendwie muß man ja rausbekommen, was da an Verkehr stattfindet.
Mehr zur eigenen Doku noch folgendes:
Das letztgenanntes Modul ist so aufgebaut, dass man ein Gerät als Bridge definieren muß, aber an dem gibt es eigentlich nicht viel mehr wie den Befehl "set <Bridge> pair 1", der im mosquitto_sub dann folgendes erzeugt:
'zigbee2mqtt/bridge/config/permit_join', ... (4 bytes))
true
'xiaomi/cmnd/bridge/pair', ... (3 bytes))
220
Alles, was nicht direkt mit der Bridge zu tun hat, kommt über
zigbee_pi:zigbee2mqtt/<bulb id>:.* { json2nameValue($EVENT) }
rein, für das set wird ein set angefügt:
zigbee2mqtt/<bulb id>/set:.* {<json> }
Der set-Code unterscheidet sich kaum von dem, was die Milights benötigen, sieht z.B. so aus:
{"brightness":"135"}
{"state":"ON"}
Dürfte also kein Hexenwerk sein, das vollends nur mit MQTT2 zu machen.
(Spannender wird ggf. der nächste Schritt, auf MQTT ganz zu verzichten, aber das ist was für 2019...)
EDIT: Im Modulcode für Xiaomi-MQTT steht zu den 'xiaomi/cmnd/bridge...'-Messages immer ein "Backwards compability" drin. Scheint also verzichtbar zu sein;
weitere Spezial-Messages:
zigbee2mqtt/bridge/config/remove", message => $hash->{SID} (SID ist wohl das, was oben mit <bulb id> bezeichnet ist)
zigbee2mqtt/bridge/config/devices", message => "" für "update devices"