MQTT: Probleme mit delete, subscribe; Anregung

Begonnen von Dr. Boris Neubert, 15 Januar 2017, 10:20:25

Vorheriges Thema - Nächstes Thema

Dr. Boris Neubert

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
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

eisler

Hallo Boris,

MQTT-Module habe ich übernommen.
Deine Auffälligkeiten nehme ich gerne mit auf.

Es besteht Hoffnung.

Grüße
Stephan

Dr. Boris Neubert

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

Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

eisler

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