[gelöst] MQTT2 Shelly TRV autocreate legt neues Device vom Typ MQTT2_SERVER an

Begonnen von hneu, 10 Oktober 2022, 15:22:36

Vorheriges Thema - Nächstes Thema

hneu

Hallo!

Ich habe folgenden Stand:

  • MQTT2 Server Instanz auf meinem FHEM eingerichtet
Hier die entsprechende Konfiguration.

defmod MQTT2_FHEM_Server MQTT2_SERVER 1883 global
attr MQTT2_FHEM_Server DbLogExclude .*
attr MQTT2_FHEM_Server autocreate complex
attr MQTT2_FHEM_Server disable 0
attr MQTT2_FHEM_Server disabledForIntervals 0
attr MQTT2_FHEM_Server icon mqtt

Wenn ich nun in meinem Shelly TRV die MQTT Einstellungen vornehme, erkennt der Server den neuen Client (nrclients+1), aber es wird kein MQTT2_DEVICE angelegt, sondern ein Device vom TYPE MQTT2_SERVER!

Sollte ich das Wiki richtig verstanden haben, sollte autocreate ein Device vom TYPE MQTT2_DEVICE anlegen.

Was mache ich hier falsch?

Vielen Dank!

LG
Helmut

Beta-User

Dass MQTT2_SERVER _auch_ eine eigene M2-Server-Instanz anlegt für jede Verbindung ist normal.

Lösche mal disabledForIntervals, das klappt so eh' nicht, und ob dir "complex" irgendwas hilft, kann ich dir nicht beantworten...

Ansonsten stellt sich die Frage, wie die Einstellungen auf dem Shelly sind. Hin und wieder kommt es vor, dass User die Voreinstellungen etwas unglücklich ändern und dann Doppelungen mit bereits vorhandenen readingList-Einträgen gegeben sind und/oder die ClientID bereits vergeben war/ist. Kann man von ferne schlecht erkennen, im Zweifel mal "show MQTT traffic" am M2-Server aktivieren und schauen, was da so kommt, wenn man das Ding neu startet (falls das geht).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

hneu

Ich habe die Änderungen am M2 Server gemacht und den TRV neugestartet.

Welche Logeinträge sind von Interesse?

Es gibt
/online
/announce
/info

Beta-User

Kein Log, sondern das, was in dem genannten Feld dann angezeigt wird. Da müßte im mindesten Fall die ClientID kommen und der "last will". Wenn da "zu viel anderes" kommt, müßtest du einen passenden Filter setzen (was aber wiederum voraussetzt, dass du bereits weißt, nach was wir eigentlich suchen).
Du kannst aber auch die Einstellungen im Web-Interface des Shelly überprüfen. Du müßtest ja wissen, ob/was du da ggf. geändert hast.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Beta-User

Zitat von: hneu am 10 Oktober 2022, 15:44:53
Es gibt
/online
/announce
/info
Sorry, zu spät gesehen. Wenn da nichts vorher kommt, hast du an der falschen Stelle irgendwas gelöscht.

Beispiel von hier für "/info":
shellytrv_BC33AC034B28 shellies/shellytrv-BC33AC034B28/info
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

hneu

Es kommt folgendes:

/announce


{
  "id": "shellytrv-60A4XXXXXXXX",
  "model": "SHTRV-01",
  "mac": "60A4XXXXXXXX",
  "ip": "192.168.XXX.XXX",
  "new_fw": false,
  "fw_ver": "20220223-203921/v2.1.3@d255ad74+"
}

/settings
{
  "device": {
    "type": "SHTRV-01",
    "mac": "60A4XXXXXXX",
    "hostname": "shellytrv-60A4XXXXXXXXX",
    "num_outputs": 0
  },
  "wifi_ap": {
    "enabled": false,
    "ssid": "shellytrv-60A4XXXXXX"
  },
  "wifi_sta": {
    "enabled": true,
    "ssid": "MI6",
    "ipv4_method": "static",
    "ip": "192.168.XXX.XXX",
    "gw": "192.168.XXX.XXX",
    "mask": "255.255.255.0",
    "dns": "192.168.XXX.XXX"
  },
  "mqtt": {
    "enable": true,
    "server": "192.168.XXX.XXX:1883",
    "user": null,
    "id": "shellytrv-60A4XXXXXXXX",
    "clean_session": true,
    "max_qos": 0,
    "retain": false,
    "update_period": 60
  },
  "sntp": {
    "server": "time.google.com",
    "enabled": true
  },
  "login": {
    "enabled": false,
    "unprotected": false,
    "username": "admin",
    "default_username": "admin"
  },
  "pin_code": "",
  "name": "TRV01",
  "fw": "20220223-203921/v2.1.3@d255ad74+",
  "discoverable": true,
  "build_info": {
    "build_id": "20220223-203921/v2.1.3@d255ad74+",
    "build_timestamp": "2022-02-23T20:39:21Z",
    "build_version": "2022022320"
  },
  "cloud": {
    "enabled": false
  },
  "coiot": {
    "enabled": false,
    "update_period": 3600,
    "peer": "192.168.XXX.XXX:5683"
  },
  "timezone": "Europe/Berlin",
  "lat": X,
  "lng": Y,
  "tzautodetect": true,
  "tz_utc_offset": 7200,
  "tz_dst": false,
  "tz_dst_auto": true,
  "time": "16:09",
  "child_lock": false,
  "display": {
    "brightness": 4,
    "flipped": true
  },
  "hwinfo": {
    "hw_revision": "dev-prototype",
    "batch_id": 0
  },
  "sleep_mode": {
    "period": 60,
    "unit": "m"
  },
  "thermostats": [
    {
      "target_t": {
        "enabled": true,
        "value": 18,
        "units": "C",
        "accelerated_heating": true
      },
      "schedule": true,
      "schedule_profile": 2,
      "schedule_profile_names": [
        "Livingroom",
        "Livingroom 1",
        "Bedroom",
        "Bedroom 1",
        "Holiday"
      ],
      "schedule_rules": [
        "0700-0123456-21",
        "0830-0123456-17",
        "1630-0123456-21",
        "2300-0123456-17"
      ],
      "temperature_offset": 0,
      "ext_t": {
        "enabled": false
      },
      "boost_minutes": 30,
      "valve_min_percent": 0,
      "force_close": false
    }
  ]
}



Beta-User

Wenn du die ClientID (z.B. shellytrv-60A4XXXXXXXXX) gefunden hast, müßte
list CID=shellytrv_60A4XXXXXXXXX
was liefern. Bindestriche bitte durch Unterstriche ersetzen.

Ansonsten bitte ClientID, Topic und Payload zusammen angeben (von mir aus anonymisiert). Sonst kann ich daraus keine Suche über deine Devices ableiten...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

hneu

Ein
list CID=shellytrv_60A4XXXXXXXX

Im FHEM Eingabefeld liefert nichts!

ZitatTopic und Payload zusammen angeben (von mir aus anonymisiert). Sonst kann ich daraus keine Suche über deine Devices ableiten...

Wo finde ich das?

Für jeden restart des TRV legt FHEM eine weitere Instanz des MQTT2 Server an. Diese unterscheiden sich im Nmen nach der IP Adresse des Shelly z.B. _52432 oder _52441.
nrclient wird entsprechend um 1 hochgezählt.

Ein M2_DEVICE wird nicht erstellt!

Weitere DEVICES habe ich noch nicht per MQTT an FHEM gekoppelt.

Beta-User

Diese nachträglichen Edits sind nicht hilfreich, zumal nicht wirklich klar ist, wo das "/annunce" denn jetzt herkommt. Ist das MQTT oder ein Abschnitt aus der Web-Konfiguration? Man weiß es nicht.

Gefragt war nach "Show MQTT traffic", und bei mir kommt da am Server z.B. so eine Zeile für eine eingehende Nachricht:
m2client cmnd/tasmota_2AB16F/POWER2 1
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

hneu

Hier noch die Infos laut WIKI:

Zitateingesetzter MQTT-Server? (=> MQTT2_SERVER oder externer Serverdienst wie mosquitto?)
MQTT2_SERVER FHEM

ZitatWenn MQTT2_SERVER: list beifügen und klären, ob dieser von der jeweiligen Komponente aus im Netzwerk zu erreichen ist:
steht auf "global"!
        allowed nicht definiert, und netzwerkseitig erreichbar

ZitatModifikationen am autocreate-Attribut?
keine

ZitatBitte einen Hinweis, falls MQTT_GENERIC_BRIDGE definiert ist bzw. auch ein list von der MQTT_GENERIC_BRIDGE.
Nicht definiert!

TYPE des eigentlichen MQTT-Devices (MQTT2_DEVICE, MQTT_DEVICE, TASMOTA_DEVICE, ...)
Shelly TRV original Firmware Version 20220223-203921/v2.1.3@d255ad74+

Beta-User

Zitat von: hneu am 10 Oktober 2022, 16:23:32
Für jeden restart des TRV legt FHEM eine weitere Instanz des MQTT2 Server an. Diese unterscheiden sich im Nmen nach der IP Adresse des Shelly z.B. _52432 oder _52441.
nrclient wird entsprechend um 1 hochgezählt.
Das klingt danach, als würden die Instanzen nicht wieder zugemacht. FHEM bzw. die MQTT2-Module sind aktuell?

Im Zweifel kannst du alle temporären Instanzen auch einfach löschen, und lösche bitte sicherheitshalber auch das "disable"-Attribut am M2S.

Spätestens mit einem Neustart sollte dann nur eine weitere Verbindung angelegt werden.
Zitat
Weitere DEVICES habe ich noch nicht per MQTT an FHEM gekoppelt.
OK, dann müßte "alles" auch mit diesem Befehl angezeigt werden:
list TYPE=MQTT2_DEVICE
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

hneu

Zitat von: Beta-User am 10 Oktober 2022, 16:38:21
Diese nachträglichen Edits sind nicht hilfreich, zumal nicht wirklich klar ist, wo das "/annunce" denn jetzt herkommt. Ist das MQTT oder ein Abschnitt aus der Web-Konfiguration? Man weiß es nicht.
Mit den nachtraglichen Änderungen sehe ich ein ;-). Werde mich bessern!

Die Infos kommen aus der FHEM Web UI, wenn ich auf im Device des M2 Servers auf "Show MQTT traffic" klicke

Zitat
Gefragt war nach "Show MQTT traffic", und bei mir kommt da am Server z.B. so eine Zeile für eine eingehende Nachricht:
m2client cmnd/tasmota_2AB16F/POWER2 1
Wo, wie kann ich mir den MQTT traffic anzeigen lassen?


Update:
Erledigt! Ich war blind! Die Lösung autocreate war global deaktiviert.

Jezt wurde ein Device angelegt!
Danke an Beta-User für die Geduld!

LG
Helmut

Beta-User

Zitat von: hneu am 10 Oktober 2022, 17:02:46
Update:
Erledigt! Ich war blind! Die Lösung autocreate war global deaktiviert.
;D Kleine Sache, große Wirkung. Daran hatte ich zugegebenermaßen auch nicht mehr gedacht, und in der "Liste" im Wiki steht es fast zu prominent...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

rudolfkoenig

ZitatDas klingt danach, als würden die Instanzen nicht wieder zugemacht.
Falls die Gegenseite keepalive gesetzt hat, dann wird die alte Verbindung spaetestens nach 1.5*keepalive zugemacht.
Es sei denn der Server kriegt die PINGREQ Nachrichten weiterhin auf dem alten Kanal.

Die alte Verbindung wird auch dann zugemacht, falls  mit dem gleichen ClientID vom gleichen Rechner/IP sich erneut anmeldet, ohne die alte Verbindung zu schliessen. Wenn ich mich recht erinneren, ist das bei Tasmota ein beliebtes Muster.

Mit "list TYPE=MQTT2_SERVER lastMsgTime" kann man den Zeitstempel der letzten Nachrichten pruefen.