Hallo,
hat der neue Maintainer Stephan (eisler) die MQTT-Module schon übernommen?
Ich frage das, weil ich folgende Auffälligkeiten habe:
- delete löscht ein MQTT_DEVICE nicht
- wenn man ein gleichamiges Reading mit demselben Namen auf ein anderes Topic subscribed, dann funktioniert das nicht, und es wird die vorherige Subskription auch nicht gelöscht
Beides zusammen erschwert das Basteln doch erheblich und ich mag mich nicht in das Modul einarbeiten müssen, um das zu fixen. Besteht Hoffnung, dass ich das nicht tun muss?
Die Art, wie Subskriptionen auf Readings gemappt werden, ist meiner Meinung nach "FHEM-unlike". Der natürliche Weg wäre m.E. attr myMqttDevice subscribeReadings reading1:topic1,reading2:topic2,...
Viele Grüße
Boris
Hallo Boris,
MQTT-Module habe ich übernommen.
Deine Auffälligkeiten nehme ich gerne mit auf.
Es besteht Hoffnung.
Grüße
Stephan
Danke Stephan.
Die Hardware, für die wir MQTT einsetzen, ist jetzt recht weit. Durch kleine Erweiterungen an FileLog und logProxy ist es möglich, alle Funktionalitäten zu nutzen, ohne ein eigenes Modul dafür bauen zu müssen. In diesem Zusammenhang haben sich noch weitere Wünsche ergeben: Grundidee ist, dass die Hardware per MQTT konfiguriert und gesteuert wird. M.E. ist dafür die folgende (generische) Syntax für ein MQTT-Device sinnvoll:
Readings
Topics auf Readings mappen und subscriben:
attr devicename subscribeReadings reading1:topic1,reading2:topic2,...
Automatisches Mapping aller Readings mit Wildcards:
attr devicename autoSubscribeReadings topicwildcard1,topicwildcard2,...
Attribute
Topics auf Attribute mappen:
attr devicename publishAttributes attribute1:topic1,attribute2:topic2,...
Dazu dann Konfiguration des Geräts = einmaliges publish (value ist optional):
attr devicename attribute1 value
Kommandos
Topics auf Set-Kommandos mappen:
attr devicename publishSetters command1:topic1,command2:topic2,...
Dazu dann Set-Kommando des Geräts = einmaliges publish (value ist optional):
set devicename command1 value
Topics auf Get-Kommandos mappen:
attr devicename publishGetters command1:topic1,command2:topic2,...
Dazu dann Get-Kommando des Geräts = einmaliges publish (value ist optional):
get devicename command1 value
Beispiel
define ade MQTT_DEVICE
attr ade autoSubscribeReadings Node52/ADE7953/values/+
attr ade publishAttributes updateTime:Node52/ADE7953/Control/updateTime,write:Node52/ADE7953/Control/Write
attr ade publishSetters measureV:Node52/ADE7953/getValues/V_INST
attr ade updateTime 5000
attr ade write AVGAIN,0x40A3B2
set ade measureV
Bei Interesse unterstütze ich Dich gerne bei der Weiterentwicklung des Moduls.
Eine Alternative dazu wäre übrigens, ECMD so zu ertüchtigen, dass es neben Kommunikation mit seriellen oder per TCP/IP angebundenen Geräten auch mit MQTT-Brokern reden kann. Mit ECMD bekommt man den ganzen Kode zum Mapping schon geschenkt (ich bin der Autor ;-).
Viele Grüße
Boris
Hallo Boris,
vielen Dank für das Angebot. Unterstützung für die Weiterentwicklung des Moduls könnte ich in der Tat gebrauchen.
Grüße
Stephan