MQTT2_Device autocreate Devicenamen

Begonnen von ToKa, 26 Februar 2020, 19:36:17

Vorheriges Thema - Nächstes Thema

ToKa

Hallo zusammen,

ich nutze seit kurzem MQTT zur Verbindung zweier FHEM Instanzen. Das funktioniert mit MQTT2_Device sehr gut und ich verwende die autocreate Funktion.

Jetzt zu meiner Fragen:
1. Gibt es eine Möglichkeit dem autocreate beizubringen, dass nicht jedes neue Device mit MQTT2_ anfängt?
Also anstelle "MQTT2_E1_fl_FWS_Beleuchtung" nur "E1_fl_FWS_Beleuchtung" auf Basis meiner bridgeRegexp Definition.
2. Wenn das nicht geht, kann ich die automatisch erzeugten Devices umbenennen, ohne dass dies die Funktion beeinträchtigt bzw. wieder neue Devices mit dem Präfix angelegt werden?

Beste Grüße
Torsten
RaspberryPi3 mit RaZberry2 und Conbee II
Fibaro: FGWPE/F-101 Switch & FIBARO System FGWPE/F Wall Plug Gen5, FGSD002 Smoke Sensor
EUROtronic: SPIRIT Wall Radiator Thermostat Valve Control
Shelly2.5 Rollladenaktoren
Zipato Bulb 2, Osram und InnrLight

rudolfkoenig

1. nein, MQTT2_ als Prefix ist hartkodiert.
2. Soweit ich sehe ja, ich habe es aber nicht getestet. Bin aber bereit es zu fixen, wenn es nicht tut :)

Umbenennen kann man auch automatisch:fhem> defmod m2rename notify global:DEFINED.MQTT2_.* { my $n=$EVTPART1;; $n =~ s/^MQTT2_//;; fhem "rename $EVTPART1 $n"}

ToKa

Hallo Rudi,

danke für die schnelle Rückmeldung. War mal mutig und habe es mit einem Device probiert. Es funktioniert, die Daten werden ans und vom Device weiter übertragen bzw. es wird kein neues angelegt.

Das notify ist natürlich genial :)

Beste Grüße
Torsten
RaspberryPi3 mit RaZberry2 und Conbee II
Fibaro: FGWPE/F-101 Switch & FIBARO System FGWPE/F Wall Plug Gen5, FGSD002 Smoke Sensor
EUROtronic: SPIRIT Wall Radiator Thermostat Valve Control
Shelly2.5 Rollladenaktoren
Zipato Bulb 2, Osram und InnrLight

obi

Hallo zusammen,

bei mir funktioniert das mit dem Notify leider nicht wie bei Thorsten, obwohl das Event DEFINED im Eventmonitor erscheint.

@Rudi: wäre es zu viel verlangt den Device Prefix welcher durch das Modul vergeben wird per Attribut dem Modul hinzuzufügen, dass der User dies selbst einstellen kann?

VG Sebastian


rudolfkoenig

Ich moechte Attribute nur dann einfuehren, wenn das nichts ander geht, oder es vielen Leuten die Arbeit erleichtert.
Viele Attribute bedeuten viel Doku (== viel zu lesen), schlechtere Bedienbarkeit, mehr Pflegeaufwand.

=>
- Wieso geht es nicht mit dem notify? Wie schauen die global:DEFINED Events aus? Gibt es eine Fehlermeldung?
- Falls 3 oder mehr Leute der Ansicht sind, dass ein Attribut doch sein soll, dann baue ich es ein.

obi

Du hast natürlich recht wegen dem Aufwand.

Es hat sich jetzt auch erledigt. Jetzt funktioniert das Notify.

kennymc.c

Sorry fürs hochholen aber ich habe genau dieses Problem und durch die aktuellen Probleme mit dem alten MQTT Modul werden vermutlich bald viele auf das neue umsteigen müssen und nicht mehr ihre alten Device Namen behalten können. Das ist gerade fürs Logging ungünstig. Da ich außerhalb dieses Threads auch nirgends Infos zum hardgecodeten Prefix finden konnte, wäre etwas mehr Doku dazu eventuell sowieso sinnvoll. Ideal wäre beim autocreate angeben zu können, wie viele MQTT Topicebenen beim Devicenamen berücksichtig werden sollen. Bei ZigBee2MQTT hätte man mit ausschließlich der letzten Ebene automatisch den friendlyName, der auch in ZigBee2MQTT auftaucht und dem Verhalten des alten XiaomiMQTTDevice Moduls entspricht.

rudolfkoenig

Ich bleibe dabei: es ist einfacher per Hand die Geraete umzubenennen, als in den Tiefen der Doku einen Parameter dafuer zu finden.
Die Perfektionisten koennen das rename-notify von oben verwenden.

BAfH

Guten Morgen,
ich nutze MQTT2 jetzt ständig und bin total begeistert, nimmt mir viel Arbeit ab. Habe viele Shellys und nutze Zigbee2MQTT.
Zum Thema Autocreate mal ne Frage.
Mein Shelly1PM ist schon in meinem System definiert, nach dem Autocreate habe ich es ordungsgemäß mit
rename MQTT2_shelly1pm-F4CFA2E38878 PoolpumpeShellyumbenannt.
Ist auch sauber im System vorhanden
defmod PoolpumpeShelly MQTT2_DEVICE shelly1pm-F4CFA2E38878

Leider wird mir immer das Gerät wieder neu angelegt.

MQTT2_DEVICE set MQTT2_shelly1pm_F4CFA2E38878 x_mqttcom announce
autocreate: define MQTT2_shelly1pm_F4CFA2E38878 MQTT2_DEVICE shelly1pm_F4CFA2E38878 MQTT2Server

und wird angezeigt
defmod MQTT2_shelly1pm_F4CFA2E38878 MQTT2_DEVICE shelly1pm_F4CFA2E38878
Was kann ich da machen?
Danke
passt auf Euch auf
Gruß Thorben
mit sonnige Grüße aus Schönow

rudolfkoenig

Was mirt einfaellt:

Fall 1:
Die MQTT2_DEVICE Instanz wurde automatisch angelegt, nicht wesentlich modifiziert und das Geraet hat die MQTT clientId geaendert. Wenn man dem Geraet das Wechseln nicht abgewoehnen kann, dann kann man im readingList alle clientIds entfernen. Das wird bei neuen Topics vom Geraet weiterhin zum Neuanlegen fuehren.

Fall 2:
in der MQTT2_DEVICE Definition wurde clientId entfernt, und das Geraet schickt neue topics. Loesung: ClientId wieder korrekt setzen.

Wenn weder / noch zutrifft, dann brauche ich die MQTT2_DEVICE Definition samt MQTT2_SERVER verbose 5 Log kurz bis zu dem autocreate Aufruf.