OpenMQTTGateway -> MQTT und RollingCode .... mal wieder

Begonnen von Dattel01, 15 September 2019, 21:13:13

Vorheriges Thema - Nächstes Thema

Beta-User

..."bereinigen" würde ich das nicht nennen...

Das "Problem": Ich habe etwas Skrupel, einfach "alle" Zweige auszuwerten, die vielleicht von einem OpenMQTTGateway her kommen. Deswegen ist im Moment vercoded, dass der 2. Teil des Topic-Trees mit "O" zu beginnen hat und danach irgendwo ein "M" und dann ein "G" zu kommen haben...
(Auf die xytoMQTT-Endungen könnte man evtl. prüfen, das hat aber den Nachteil, dass nicht immer alles/dasselbe vorhanden ist - je nachdem, für was man das Teil einsetzt bzw. wie es konfiguriert ist. Gibt ja nicht nur BT.)

Z.B. die Benennung OMG_oben und OMG_unten sollte daher funktionieren (aktuelle template-Fassung vorausgesetzt).
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

andre07

Ich habe template mqtt2.template 21232 2020-02-20 03:05:33Z Beta-User $
ist das die aktuelle denn so richtig will es nicht funktionieren.
oder soll ich die aus dem svn nehmen?

Andre

Beta-User

In der letzten Änderung war nur was zu anderen templates drin, ist also (für hier) egal.

Spezifiziere bitte "so richtig will es nicht funktionieren", wenn du Hilfe haben willst. Hast du beide GW's jetzt (in den versendeten Topics) auf OMG_oben bzw. OMG_unten umbenannt?
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

andre07

 Der Reihe nach es wird nur ein Device MQTT2_OMG und nach zuordung als mcu
MQTT2_oMQTTgw_BT angelegt. In MQTT2_OMG finde ich beide readings
von den gateways unten und oben.
Internals:
   .triggerUsed 1
   CFGFN     
   CID        OMG
   DEF        OMG
   DEVICETOPIC MQTT2_OMG
   FUUID      5e53d7e9-f33f-0b03-b8d2-2cf9a1ca14dfe24f
   IODev      MQTTServer
   LASTInputDev MQTTServer
   MQTTServer_MSGCNT 1725
   MQTTServer_TIME 2020-02-24 15:40:04
   MSGCNT     1725
   NAME       MQTT2_OMG
   NR         1044
   STATE      <a href="http://192.168.178.72" target="_blank">
LWT
</a>Version: version
   TYPE       MQTT2_DEVICE
   .attraggr:
   .attrminint:
   OLDREADINGS:
   READINGS:
     2020-02-24 15:38:37   SSID            unifinet2g
     2020-02-24 15:38:33   Sys_SSID        FRITZ!Box 7490
     2020-02-24 15:38:33   Sys_freeMem     54140
     2020-02-24 15:38:33   Sys_ip          192.168.178.72
     2020-02-24 15:38:33   Sys_mac         B4:E6:2D:FB:24:59
     2020-02-24 15:38:33   Sys_modules     BT
     2020-02-24 15:38:33   Sys_rssi        -73
     2020-02-24 15:38:33   Sys_uptime      9772
     2020-02-24 15:40:04   distance        5.3
     2020-02-24 15:38:56   fer             39.0
     2020-02-24 15:38:37   freeMem         53612
     2020-02-24 15:40:03   id              7c:2f:80:ad:bc:7d
     2020-02-24 15:38:37   ip              192.168.178.75
     2020-02-24 15:39:54   lux             135.0
     2020-02-24 15:38:38   mac             3C:71:BF:FD:3E:7C
     2020-02-24 15:40:04   manufacturerdata �4���}��
     2020-02-24 15:38:38   modules         BT
     2020-02-24 15:40:03   moi             5.0
     2020-02-24 15:40:04   rssi            -74
     2020-02-24 15:40:03   servicedata     712098003eed4e628d7cc40d08100105
     2020-02-24 15:40:03   servicedatauuid 0000fe95-0000-1000-8000-00805f9b34fb
     2020-02-24 15:19:53   subscriptions   unten/OMG/commands/#
     2020-02-24 15:38:58   tem             22.8
     2020-02-24 15:38:37   uptime          3389
   helper:
     bm:
       MQTT2_DEVICE_Attr:
         cnt        155
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        24.02. 15:06:18
         max        0.233376979827881
         tot        1.25598216056824
         mAr:
           set
           MQTT2_OMG
           bridgeRegexp
           oben/OMG/BTtoMQTT/([0-9A-Z]+):.* "oMQTTgw_BT"
  oben/OMG/433toMQTT:.* "oMQTTgw_433"
  oben/OMG/IRtoMQTT:.* "oMQTTgw_IR"
  oben/OMG/CLIMAtoMQTT/([a-zA-Z0-9]+):.* "OMG_$1"
       MQTT2_DEVICE_Define:
         cnt        1
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        24.02. 15:04:25
         max        0.0213229656219482
         tot        0.0213229656219482
         mAr:
           HASH(0x55d43ac1a208)
           MQTT2_OMG MQTT2_DEVICE OMG MQTTServer
       MQTT2_DEVICE_Get:
         cnt        2
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        24.02. 15:05:27
         max        4.60147857666016e-05
         tot        9.01222229003906e-05
         mAr:
           HASH(0x55d43ac1a208)
           MQTT2_OMG
           ?
       MQTT2_DEVICE_Set:
         cnt        2559
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        24.02. 15:06:18
         max        0.900350093841553
         tot        1.46201157569885
         mAr:
           HASH(0x55d43ac1a208)
           MQTT2_OMG
           attrTemplate
           OpenMQTTGateway_MCU
Attributes:
   DbLogExclude .*
   IODev      MQTTServer
   bridgeRegexp oben/OMG/BTtoMQTT/([0-9A-Z]+):.* "oMQTTgw_BT"
  oben/OMG/433toMQTT:.* "oMQTTgw_433"
  oben/OMG/IRtoMQTT:.* "oMQTTgw_IR"
  oben/OMG/CLIMAtoMQTT/([a-zA-Z0-9]+):.* "OMG_$1"
   devStateIcon online:10px-kreis-gruen offline.*:10px-kreis-rot
   icon       mqtt
   model      OpenMQTTGateway_MCU
   readingList oben/OMG/LWT:.* LWT
  oben/OMG/version:.* version
  oben/OMG/SYStoMQTT:.* { json2nameValue($EVENT,'Sys_')}
  homeassistant/[^/]*sensor/[^/]+/config:.* { $EVENT =~ m,OMG, ? json2nameValue($EVENT,"HASS_") : undef }
OMG:unten/OMG/SYStoMQTT:.* { json2nameValue($EVENT) }
OMG:oben/OMG/SYStoMQTT/uptime:.* uptime
OMG:oben/OMG/SYStoMQTT/freeMem:.* freeMem
OMG:oben/OMG/SYStoMQTT/rssi:.* rssi
OMG:oben/OMG/SYStoMQTT/SSID:.* SSID
OMG:oben/OMG/SYStoMQTT/ip:.* ip
OMG:oben/OMG/SYStoMQTT/mac:.* mac
OMG:oben/OMG/SYStoMQTT/modules:.* modules
OMG:unten/OMG/SYStoMQTT/uptime:.* uptime
OMG:unten/OMG/SYStoMQTT/freeMem:.* freeMem
OMG:unten/OMG/SYStoMQTT/rssi:.* rssi
OMG:unten/OMG/SYStoMQTT/SSID:.* SSID
OMG:unten/OMG/SYStoMQTT/ip:.* ip
OMG:unten/OMG/SYStoMQTT/mac:.* mac
OMG:unten/OMG/SYStoMQTT/modules:.* modules
OMG:oben/home_presence/OMG:.* { json2nameValue($EVENT) }
OMG:oben/OMG/BTtoMQTT/C47C8D625126/id:.* id
OMG:oben/OMG/BTtoMQTT/C47C8D625126/rssi:.* rssi
OMG:oben/OMG/BTtoMQTT/C47C8D625126/distance:.* distance
OMG:oben/OMG/BTtoMQTT/C47C8D625126/servicedata:.* servicedata
OMG:oben/OMG/BTtoMQTT/C47C8D625126/servicedatauuid:.* servicedatauuid
OMG:oben/OMG/BTtoMQTT/C47C8D625126/lux:.* lux
OMG:oben/OMG/BTtoMQTT/C47C8D624EED/id:.* id
OMG:oben/OMG/BTtoMQTT/C47C8D624EED/rssi:.* rssi
OMG:oben/OMG/BTtoMQTT/C47C8D624EED/distance:.* distance
OMG:oben/OMG/BTtoMQTT/C47C8D624EED/servicedata:.* servicedata
OMG:oben/OMG/BTtoMQTT/C47C8D624EED/servicedatauuid:.* servicedatauuid
OMG:oben/OMG/BTtoMQTT/C47C8D624EED/lux:.* lux
OMG:unten/home_presence/OMG:.* { json2nameValue($EVENT) }
OMG:unten/OMG/BTtoMQTT/7C2F80ADBC7D:.* { json2nameValue($EVENT) }
OMG:unten/OMG/BTtoMQTT/7C2F80ADBC7D/id:.* id
OMG:unten/OMG/BTtoMQTT/7C2F80ADBC7D/manufacturerdata:.* manufacturerdata
OMG:unten/OMG/BTtoMQTT/7C2F80ADBC7D/rssi:.* rssi
OMG:unten/OMG/BTtoMQTT/7C2F80ADBC7D/distance:.* distance
OMG:unten/OMG/BTtoMQTT/C47C8D625126:.* { json2nameValue($EVENT) }
OMG:unten/OMG/BTtoMQTT/C47C8D625126/id:.* id
OMG:unten/OMG/BTtoMQTT/C47C8D625126/rssi:.* rssi
OMG:unten/OMG/BTtoMQTT/C47C8D625126/distance:.* distance
OMG:unten/OMG/BTtoMQTT/C47C8D625126/servicedata:.* servicedata
OMG:unten/OMG/BTtoMQTT/C47C8D625126/servicedatauuid:.* servicedatauuid
OMG:unten/OMG/BTtoMQTT/C47C8D625126/lux:.* lux
OMG:unten/OMG/BTtoMQTT/CB80D6CC11DE:.* { json2nameValue($EVENT) }
OMG:unten/OMG/BTtoMQTT/CB80D6CC11DE/id:.* id
OMG:unten/OMG/BTtoMQTT/CB80D6CC11DE/manufacturerdata:.* manufacturerdata
OMG:unten/OMG/BTtoMQTT/CB80D6CC11DE/rssi:.* rssi
OMG:unten/OMG/BTtoMQTT/CB80D6CC11DE/distance:.* distance
OMG:unten/OMG/BTtoMQTT/C47C8D624EED:.* { json2nameValue($EVENT) }
OMG:unten/OMG/BTtoMQTT/C47C8D624EED/id:.* id
OMG:unten/OMG/BTtoMQTT/C47C8D624EED/rssi:.* rssi
OMG:unten/OMG/BTtoMQTT/C47C8D624EED/distance:.* distance
OMG:unten/OMG/BTtoMQTT/C47C8D624EED/servicedata:.* servicedata
OMG:unten/OMG/BTtoMQTT/C47C8D624EED/servicedatauuid:.* servicedatauuid
OMG:unten/OMG/BTtoMQTT/C47C8D624EED/lux:.* lux
OMG:oben/OMG/BTtoMQTT/C47C8D624EED/tem:.* tem
OMG:oben/OMG/BTtoMQTT/C47C8D625126/tem:.* tem
OMG:unten/OMG/BTtoMQTT/C47C8D625126/fer:.* fer
OMG:unten/OMG/BTtoMQTT/C47C8D624EED/fer:.* fer
OMG:oben/OMG/BTtoMQTT/C47C8D624EED/moi:.* moi
OMG:oben/OMG/BTtoMQTT/C47C8D625126/fer:.* fer
OMG:unten/OMG/BTtoMQTT/C47C8D624EED/moi:.* moi
OMG:unten/OMG/BTtoMQTT/C47C8D625126/moi:.* moi
OMG:unten/OMG/BTtoMQTT/C47C8D624EED/tem:.* tem
OMG:unten/OMG/BTtoMQTT/3EF975D66B71:.* { json2nameValue($EVENT) }
OMG:unten/OMG/BTtoMQTT/3EF975D66B71/id:.* id
OMG:unten/OMG/BTtoMQTT/3EF975D66B71/manufacturerdata:.* manufacturerdata
OMG:unten/OMG/BTtoMQTT/3EF975D66B71/rssi:.* rssi
OMG:unten/OMG/BTtoMQTT/3EF975D66B71/distance:.* distance
OMG:oben/OMG/BTtoMQTT/C47C8D625126/moi:.* moi
OMG:oben/OMG/BTtoMQTT/C47C8D624EED/fer:.* fer
OMG:oben/OMG/BTtoMQTT/3EF975D66B71/id:.* id
OMG:oben/OMG/BTtoMQTT/3EF975D66B71/manufacturerdata:.* manufacturerdata
OMG:oben/OMG/BTtoMQTT/3EF975D66B71/rssi:.* rssi
OMG:oben/OMG/BTtoMQTT/3EF975D66B71/distance:.* distance
OMG:unten/OMG/BTtoMQTT/C47C8D625126/tem:.* tem
OMG:unten/OMG/BTtoMQTT/00B1E549945C:.* { json2nameValue($EVENT) }
OMG:unten/OMG/BTtoMQTT/00B1E549945C/id:.* id
OMG:unten/OMG/BTtoMQTT/00B1E549945C/manufacturerdata:.* manufacturerdata
OMG:unten/OMG/BTtoMQTT/00B1E549945C/rssi:.* rssi
OMG:unten/OMG/BTtoMQTT/00B1E549945C/distance:.* distance
OMG:unten/OMG/BTtoMQTT/32F95EA8028C/id:.* id
OMG:unten/OMG/BTtoMQTT/32F95EA8028C/manufacturerdata:.* manufacturerdata
OMG:unten/OMG/BTtoMQTT/32F95EA8028C/rssi:.* rssi
OMG:unten/OMG/BTtoMQTT/32F95EA8028C/distance:.* distance
OMG:oben/OMG/BTtoMQTT/7C2F80ADBC7D/id:.* id
OMG:oben/OMG/BTtoMQTT/7C2F80ADBC7D/manufacturerdata:.* manufacturerdata
OMG:oben/OMG/BTtoMQTT/7C2F80ADBC7D/rssi:.* rssi
OMG:oben/OMG/BTtoMQTT/7C2F80ADBC7D distance:.* distance
   room       MQTT2_DEVICE
   setList    restart:noArg oben/OMG/commands/MQTTtoSYS/config {"cmd":"restart"}
   stateFormat <a href="http://Sys_ip" target="_blank">
LWT
</a>Version: version



Aber Aber bt-scanner ignoriert gateway "unten" ,wenn ich die ReadingList um dies hier ergänze
unten/OMG/BTtoMQTT/([0-9A-Z]+):.* { $TOPIC =~ m,BTtoMQTT/([0-9A-Z]+),;;json2nameValue($EVENT,"$1"."_") }
unten/home_presence/OMG:.* { return undef unless $EVENT =~ m,(..):(..):(..):(..):(..):(..),;; json2nameValue($EVENT,"BT_".uc($1.$2.$3.$4.$5.$6)."_");; {"last"=>uc($1.$2.$3.$4.$5.$6)}}

und OMG_CB80D6CC11DE (gtag) so anpasse die beiden letzten Zeilen hinzugefügt
oben/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT/CB80D6CC11DE:.* { $TOPIC =~ m,oben/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT,;; json2nameValue($EVENT, "${1}_") }
  oben/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT/CB80D6CC11DE:.* { $TOPIC =~ m,oben/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT,;; {"last_IO"=>"$1"}}
unten/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT/CB80D6CC11DE:.* { $TOPIC =~ m,unten/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT,;; json2nameValue($EVENT, "${1}_") }
  unten/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT/CB80D6CC11DE:.* { $TOPIC =~ m,unten/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT,;; {"last_IO"=>"$1"}}

scheint es zu funktionieren nur das reading bestRecentGW bleibt auf OMG
Noch ein list der MQTT2_oMQTTgw_BT


Internals:
   CFGFN     
   CID        oMQTTgw_BT
   DEF        oMQTTgw_BT
   DEVICETOPIC MQTT2_oMQTTgw_BT
   FUUID      5e53d86b-f33f-0b03-4bdb-7097f17ec8a25cf8
   IODev      MQTTServer
   LASTInputDev MQTTServer
   MQTTServer_MSGCNT 401
   MQTTServer_TIME 2020-02-24 15:58:32
   MSGCNT     401
   NAME       MQTT2_oMQTTgw_BT
   NR         1072
   STATE      Last: C47C8D624EED
   TYPE       MQTT2_DEVICE
   .attraggr:
   .attrminint:
   OLDREADINGS:
   READINGS:
     2020-02-24 15:58:32   C47C8D624EED_distance 23.44428
     2020-02-24 15:54:09   C47C8D624EED_fer 37
     2020-02-24 15:58:32   C47C8D624EED_id c4:7c:8d:62:4e:ed
     2020-02-24 15:58:32   C47C8D624EED_lux 279
     2020-02-24 15:57:24   C47C8D624EED_moi 5
     2020-02-24 15:58:32   C47C8D624EED_rssi -90
     2020-02-24 15:58:32   C47C8D624EED_servicedata 71209800aded4e628d7cc40d071003170100
     2020-02-24 15:58:32   C47C8D624EED_servicedatauuid 0000fe95-0000-1000-8000-00805f9b34fb
     2020-02-24 15:56:19   C47C8D624EED_tem 22.9
     2020-02-24 15:58:28   C47C8D625126_distance 15.12852
     2020-02-24 15:54:08   C47C8D625126_fer 30
     2020-02-24 15:58:28   C47C8D625126_id c4:7c:8d:62:51:26
     2020-02-24 15:55:12   C47C8D625126_lux 779
     2020-02-24 15:57:23   C47C8D625126_moi 8
     2020-02-24 15:58:28   C47C8D625126_rssi -85
     2020-02-24 15:58:28   C47C8D625126_servicedata 71209800a22651628d7cc40d0710036d0300
     2020-02-24 15:58:28   C47C8D625126_servicedatauuid 0000fe95-0000-1000-8000-00805f9b34fb
     2020-02-24 15:56:18   C47C8D625126_tem 22.5
     2020-02-24 15:06:37   associatedWith  MQTT2_OMG
     2020-02-24 15:58:32   last            C47C8D624EED
   helper:
     bm:
       MQTT2_DEVICE_Attr:
         cnt        13
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        24.02. 15:10:27
         max        0.00660109519958496
         tot        0.027907133102417
         mAr:
           set
           MQTT2_oMQTTgw_BT
           readingList
           oben/OMG/BTtoMQTT/C47C8D625126:.* { json2nameValue($EVENT) }
oben/OMG/BTtoMQTT/C47C8D624EED:.* { json2nameValue($EVENT) }
unten/OMG/BTtoMQTT/C47C8D625126:.* { json2nameValue($EVENT) }
unten/OMG/BTtoMQTT/C47C8D624EED:.* { json2nameValue($EVENT) }
       MQTT2_DEVICE_Define:
         cnt        1
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        24.02. 15:06:35
         max        0.021183967590332
         tot        0.021183967590332
         mAr:
           HASH(0x55d43e284078)
           MQTT2_oMQTTgw_BT MQTT2_DEVICE oMQTTgw_BT MQTTServer
       MQTT2_DEVICE_Get:
         cnt        34
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        24.02. 15:42:46
         max        6.91413879394531e-05
         tot        0.00127530097961426
         mAr:
           HASH(0x55d43e284078)
           MQTT2_oMQTTgw_BT
           ?
       MQTT2_DEVICE_Set:
         cnt        471
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        24.02. 15:19:54
         max        0.924324989318848
         tot        1.3415858745575
         mAr:
           HASH(0x55d43e284078)
           MQTT2_oMQTTgw_BT
           attrTemplate
           OpenMQTTGateway_BT_gtag
           CB80D6CC11DE
Attributes:
   DbLogExclude .*
   IODev      MQTTServer
   model      OpenMQTTGateway_BT_scanner
   readingList oben/OMG/BTtoMQTT/([0-9A-Z]+):.* { $TOPIC =~ m,BTtoMQTT/([0-9A-Z]+),;;json2nameValue($EVENT,"$1"."_") }
oben/home_presence/OMG:.* { return undef unless $EVENT =~ m,(..):(..):(..):(..):(..):(..),;; json2nameValue($EVENT,"BT_".uc($1.$2.$3.$4.$5.$6)."_");; {"last"=>uc($1.$2.$3.$4.$5.$6)}}

   room       MQTT2_DEVICE
   setList    BT_scan_now:noArg oben/OMG/commands/MQTTtoBT/config {"interval":0}
  BT_scan_interval:textField oben/OMG/commands/MQTTtoBT/config {"interval":$EVTPART1}
  BT_blacklist:textField oben/OMG/commands/MQTTtoBT/config {"black-list":[$EVTPART1]}
  BT_whitelist:textField oben/OMG/commands/MQTTtoBT/config {"white-list":[$EVTPART1]}
  BT_minrssi:slider,-110,1,0 oben/OMG/commands/MQTTtoBT/config {"minrssi":$EVTPART1}}
  deleteReadings:noArg {fhem "deletereading -q $NAME (?!associatedWith).*"}
   stateFormat Last: last

Ich hoffe ich habe mich verständlich ausgedrückt

Andre


Beta-User

Es wird zumindest etwas klarer...

Du hast also nicht das Device im Sketch umbenannt, sondern andere Base-IDs angegeben, also das "home" mit "oben" bzw. "unten" ersetzt, nicht den Namen ("OpenMQTTGateway").

Wir sollten es m.E. dabei belassen, dass man zwar "home" durch "irgendwas" ersetzten kann, aber das bitte einheitlich. Und dann die Namen passend vergeben, also hier z.B. "OMG_unten" bzw. "OMG_oben".

Und damit alles in den BT-Scanner läuft, muß da noch was geändert werden, nämlich stattBASE_ID/DEVNAME/BTtoMQTT/([0-9A-Z]+):.* { $TOPIC =~ m,BTtoMQTT/([0-9A-Z]+),;;json2nameValue($EVENT,"$1"."_") }\sollte dort stehen:
BASE_ID/]O[^/]*M[^/]*G[^/]*/BTtoMQTT/([0-9A-Z]+):.* { $TOPIC =~ m,BTtoMQTT/([0-9A-Z]+),;;json2nameValue($EVENT,"$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

Beta-User

Hmm, muß da vermutlich gedanklich nochmal ran...

Der BT-scanner hat ja auch ein paar setter, die man dann so umbauen muß, dass es auch auf mehrere GW's paßt bzw. so erweitern, dass es auch dann noch ok ist, wenn man nicht nur eines hat. Oder sollten wir gleich mit wildcards arbeiten und die setter auf alle GW's wirken lassen?

Könnte dann (ungetestet) so aussehen:
BT_scan_now:noArg home/+/commands/MQTTtoBT/config {"interval":0}
bzw. mit Eingabe des Ziels:
BT_scan_now:textField {"home/$EVTPART1/commands/MQTTtoBT/config {\"interval\":0}}
BT_scan_interval:textField {"home/$EVTPART1/commands/MQTTtoBT/config {\"interval\":$EVTPART2}}
[/code](Bin noch ratlos bzw. ohne eigene Meinung...).
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

andre07

Als Gateway Name habe ich jeweils OMG vergeben
und als Base Topic oben und unten.
#ifndef Gateway_Name
  #define Gateway_Name "OMG"
#endif

#define Base_Topic "oben/"

Das größte Problem ist ja das im reading "bestRecentGW"
immer der Name vom Gateway steht und der ist
ja in beiden Fällen OMG.Müsste dort nicht oben oder unten
stehen?
Ich kann zwar sehen das das gateway wechselt (anhand des
Reading rssi) aber da der Name in beiden gleich ist bleibt
es wohl auf OMG stehen.
Wenn ich verschiedene Gateway Namen vergebe werden zwei
OpenMqttGateway erkannt und angelegt aber das soll
ja wohl nicht so sein. oder doch?
2 Gateway ein Device in Fhem

Andre

PS: Deinen Code  noch schnell einfügen Namen wieder ändern
und neu anlegen in Fhem.Melde mich dann wenn ich fertig bin


andre07

Das hier paßt nicht fhem meckert fehlender Stringterminator


BT_scan_now:textField {"home/$EVTPART1/commands/MQTTtoBT/config {\"interval\":0}}

BT_scan_interval:textField {"home/$EVTPART1/commands/MQTTtoBT/config {\"interval\":$EVTPART2}}


Beta-User

So sollte das besser sein:
BT_scan_now:textField {"home/$EVTPART1/commands/MQTTtoBT/config {\"interval\":0}"}
BT_scan_interval:textField {"home/$EVTPART1/commands/MQTTtoBT/config {\"interval\":$EVTPART2}"}

Kann sein, dass man statt $EVTPART1 ${EVTPART1} schreiben muß.

Btw.: Wenn ich schreibe, dass etwas "ungetestet" ist, ist das auch die Bitte, ggf. bei Fehlern selbst erst mal darüber nachzudenken, was verbessert werden kann/muß. So habe ich im Ergebnis mehr Arbeit, wie wenn ich das selbst austeste. Kann ich auch machen, aber dann mache ich das dann, wenn ich Lust oder Bedarf habe...
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

andre07

Ich versuch zu helfen wo es geht.

Alles noch mal neu angelegt Namen geändert in Device Name OpenMQTTGateway
und Base-IDs OMG_unten OMG_oben.
Deine Änderungen eingefügt und ergänzt

defmod MQTT2_oMQTTgw_BT MQTT2_DEVICE oMQTTgw_BT
attr MQTT2_oMQTTgw_BT DbLogExclude .*
attr MQTT2_oMQTTgw_BT IODev MQTTServer
attr MQTT2_oMQTTgw_BT model OpenMQTTGateway_BT_scanner
attr MQTT2_oMQTTgw_BT readingList OMG_oben/OpenMQTTGateway/BTtoMQTT/([0-9A-Z]+):.* { $TOPIC =~ m,BTtoMQTT/([0-9A-Z]+),;;;;json2nameValue($EVENT,"$1"."_") }\
OMG_oben/home_presence/OpenMQTTGateway:.* { return undef unless $EVENT =~ m,(..):(..):(..):(..):(..):(..),;;;; json2nameValue($EVENT,"BT_".uc($1.$2.$3.$4.$5.$6)."_");;;; {"last"=>uc($1.$2.$3.$4.$5.$6)}}\
OMG_oben/]O[^/]*M[^/]*G[^/]*/BTtoMQTT/([0-9A-Z]+):.* { $TOPIC =~ m,BTtoMQTT/([0-9A-Z]+),;;;;json2nameValue($EVENT,"$1"."_") }\
OMG_unten/]O[^/]*M[^/]*G[^/]*/BTtoMQTT/([0-9A-Z]+):.* { $TOPIC =~ m,BTtoMQTT/([0-9A-Z]+),;;;;json2nameValue($EVENT,"$1"."_") }\
OMG_oben/home_presence/OpenMQTTGateway:.* { return undef unless $EVENT =~ m,(..):(..):(..):(..):(..):(..),;;;; json2nameValue($EVENT,"BT_".uc($1.$2.$3.$4.$5.$6)."_");;;; {"last"=>uc($1.$2.$3.$4.$5.$6)}}\
OMG_unten/home_presence/OpenMQTTGateway:.* { return undef unless $EVENT =~ m,(..):(..):(..):(..):(..):(..),;;;; json2nameValue($EVENT,"BT_".uc($1.$2.$3.$4.$5.$6)."_");;;; {"last"=>uc($1.$2.$3.$4.$5.$6)}}
attr MQTT2_oMQTTgw_BT room MQTT2_DEVICE
attr MQTT2_oMQTTgw_BT setList BT_scan_now:textField {"home/$EVTPART1/commands/MQTTtoBT/config {\"interval\":0}"}\
  BT_scan_interval:textField {"home/$EVTPART1/commands/MQTTtoBT/config {\"interval\":$EVTPART2}"}\
  BT_blacklist:textField  {"home/$EVTPART1/commands/MQTTtoBT/config    {\"black-list\":$EVTPART2}"}\
  BT_whitelist:textField  {"home/$EVTPART1/commands/MQTTtoBT/config    {\"white-list\":$EVTPART2}"}\
  BT_minrssi:slider,-110,1,0 {"home/$EVTPART1/commands/MQTTtoBT/config  {\"white-list\":$EVTPART2}"}\
  deleteReadings:noArg {fhem "deletereading -q $NAME (?!associatedWith).*"}\
  \
  \
\

attr MQTT2_oMQTTgw_BT stateFormat Last: last




Wobei ich mir nicht sicher bin ob das mir der readingList so hinhaut (Wildcards wären die lösung) habe ich einfach mein zweites Gateway hinzugefügt.Vieleicht schaust mal drüber ob das so paßt
Für mein Mi Band dann ein Device erzeugt

defmod OMG_CB80D6CC11DE MQTT2_DEVICE CB80D6CC11DE
attr OMG_CB80D6CC11DE userattr maxPresenceAge maxReadingsAge
attr OMG_CB80D6CC11DE DbLogExclude .*
attr OMG_CB80D6CC11DE IODev MQTTServer
attr OMG_CB80D6CC11DE autocreate 0
attr OMG_CB80D6CC11DE event-min-interval 300
attr OMG_CB80D6CC11DE icon temperature_humidity
attr OMG_CB80D6CC11DE maxPresenceAge 1200
attr OMG_CB80D6CC11DE maxReadingsAge 500
attr OMG_CB80D6CC11DE model OpenMQTTGateway_BT_gtag
attr OMG_CB80D6CC11DE readingList OMG_oben/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT/CB80D6CC11DE:.* { $TOPIC =~ m,OMG_oben/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT,;;;; json2nameValue($EVENT, "${1}_") }\
  OMG_oben/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT/CB80D6CC11DE:.* { $TOPIC =~ m,OMG_oben/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT,;;;; {"last_IO"=>"$1"}}\
  OMG_unten/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT/CB80D6CC11DE:.* { $TOPIC =~ m,OMG_unten/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT,;;;; json2nameValue($EVENT, "${1}_") }\
  OMG_unten/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT/CB80D6CC11DE:.* { $TOPIC =~ m,OMG_unten/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT,;;;; {"last_IO"=>"$1"}}
attr OMG_CB80D6CC11DE room MQTT2_DEVICE
attr OMG_CB80D6CC11DE stateFormat Last IO: last_IO
attr OMG_CB80D6CC11DE userReadings bestRecentGW:.*_rssi.* {identifyMyBestGW($name)}

Auch hier mußte ich mein zweites Gateway in der readingList ergänzen.
Man kann erkennen anhand des rssi  wo man sich gerade befindet funktioniert also.
Die beiden Readings (bestRecentGW und last_IO) zeigen aber
auf den Device Namen und der ist ja bei beiden gleich dort sollte doch eher die Base-IDs  stehen.
Oder man baut die Template so um das für jedes Gateway ein MCU definiert werden kann und
es so möglich ist verschiedene Namen im Device zu setzen.

Andre




Beta-User

Zitat von: Beta-User am 24 Februar 2020, 16:11:50
Wir sollten es m.E. dabei belassen, dass man zwar "home" durch "irgendwas" ersetzten kann, aber das bitte einheitlich. Und dann die Namen passend vergeben, also hier z.B. "OMG_unten" bzw. "OMG_oben".
Das scheint nicht hinreichend klar gewesen zu sein: die base-id interessiert uns nicht wirklich (außer dass es für alle einheitlich (!) sein soll), der NAME (jetzt 2*OpenMQTTGateway) _muss_ (nach dem jetzigen Code) bei allen Gateways unterschiedlich sein...

Das mit der setList wird so auch nicht klappen: wenn du mit $EVTPART1 und $EVTPART2 arbeiten willst, muß $EVTPART1 im Textfeld eingegeben werden, und zwar wäre dann dort _der GW-Name_ anzugeben (u.a. deswegen sollte man NUR den Namen anpassen...). Das macht in Verbindung mit slider gar keinen Sinn, da landet der Rückgabewert in $EVTPART1, und $EVTPART2 gibt es gar nicht  ;) .

Und auch der Code für das Mi-Band wird nicht funktionieren, weil der in der Perl-Auswertung $1 (geschrieben als ${1}) verwendet, was aber bei deiner Konfiguration ja nach wie vor gar nicht unterschiedlich ist...

Hoffe, das ist jetzt einigermaßen klar?

(Du kannst das gerne anders machen, aber dann paß bitte den Code auch entsprechend an und liefere mir Argumente, warum das so sein soll. Jedenfalls  bis hierher kann ich nicht erkennen, dass irgendwas dafür spräche, die Base-ID zum Unterscheidungsmerkmal zu machen, und nicht den Namen (außer, dass man in der Namensgebung _etwas_ eingeschränkt ist)).
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

andre07

Man oh man da lag ich ja wieder mal auf dem Holzweg und dabei hatte ich das in meinen ersten Versuch so gemacht...
Wir sollten es m.E. dabei belassen, dass man zwar "home" durch "irgendwas" ersetzten kann, aber das bitte einheitlich. Und dann die Namen passend vergeben, also hier z.B. "OMG_unten" bzw. "OMG_oben
so  werden natürlich auch 2 gateway's angelegt.Werde das heute Abend gleich nochmal versuchen.

Danke noch mal mit deiner Geduld
Andre

andre07

#102
Kurzer Zwischenbericht   ::)
Unknown command home/home_presence/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT/CB80D6CC11DE:.*, try help.
Unknown command home/home_presence/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT,;;, try help.
Unknown command home/home_presence/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT/CB80D6CC11DE:.*, try help.
Unknown command home/home_presence/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT,;;, try help.

Kommt wenn ich versuche ein OpenMQTTGateway_BT_gtag anzulegen Device wird zwar angelegt
aber jetzt landen alle readings vom BT Scanner mit im Device wo  sie nicht hingehören.
An den von mir neu eingefügten Zeilen im template kann es wohl nicht liegen ist wohl eine
andere Baustelle.



BASE_ID/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT/BT_ID:.* { $TOPIC =~ m,BASE_ID/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT,;; json2nameValue($EVENT, "${1}_") }\
  BASE_ID/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT/BT_ID:.* { $TOPIC =~ m,BASE_ID/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT,;; {"last_IO"=>"$1"}}

dies wird wohl beanstandet.
Andre

andre07

#103
Dies wird erzeugt wenn ich das Device mit
set  MQTT2_oMQTTgw_BT attrTemplate OpenMQTTGateway_BT_gtag 7C2F80ADBC7D anlege

Internals:
   CFGFN     
   CHANGED   
   CID        7C2F80ADBC7D
   DEF        7C2F80ADBC7D
   DEVICETOPIC OMG_7C2F80ADBC7D
   FUUID      5e568bbb-f33f-0b03-1c78-48a9622ea399234b
   IODev      MQTTServer
   LASTInputDev MQTTServer
   MQTTServer_MSGCNT 158
   MQTTServer_TIME 2020-02-26 16:17:25
   MSGCNT     158
   NAME       OMG_7C2F80ADBC7D
   NR         13992
   STATE      Last IO: last_IO
   TYPE       MQTT2_DEVICE
   .attraggr:
   .attrminint:
     300
   READINGS:
     2020-02-26 16:17:18   0C4B5ED4B4B9_distance 27.75274
     2020-02-26 16:17:18   0C4B5ED4B4B9_id 0c:4b:5e:d4:b4:b9
     2020-02-26 16:17:18   0C4B5ED4B4B9_manufacturerdata
     2020-02-26 16:17:18   0C4B5ED4B4B9_rssi -92
     2020-02-26 16:17:09   4767F48023CD_distance 13.81901
     2020-02-26 16:17:09   4767F48023CD_id 47:67:f4:80:23:cd
     2020-02-26 16:17:09   4767F48023CD_manufacturerdata
     2020-02-26 16:17:09   4767F48023CD_rssi -84
     2020-02-26 16:17:18   7C2F80C379B6_distance 11.4949
     2020-02-26 16:17:18   7C2F80C379B6_id 7c:2f:80:c3:79:b6
     2020-02-26 16:17:18   7C2F80C379B6_manufacturerdata �4��y���
     2020-02-26 16:17:18   7C2F80C379B6_rssi -82
     2020-02-26 16:17:17   C47C8D624EED_distance 8.651812
     2020-02-26 16:16:46   C47C8D624EED_fer 25
     2020-02-26 16:17:17   C47C8D624EED_id c4:7c:8d:62:4e:ed
     2020-02-26 16:17:17   C47C8D624EED_lux 100
     2020-02-26 16:17:17   C47C8D624EED_rssi -79
     2020-02-26 16:17:17   C47C8D624EED_servicedata 712098009ded4e628d7cc40d071003640000
     2020-02-26 16:17:17   C47C8D624EED_servicedatauuid 0000fe95-0000-1000-8000-00805f9b34fb
     2020-02-26 16:17:10   C47C8D625126_distance 16.54559
     2020-02-26 16:16:47   C47C8D625126_fer 20
     2020-02-26 16:17:10   C47C8D625126_id c4:7c:8d:62:51:26
     2020-02-26 16:17:17   C47C8D625126_lux 534
     2020-02-26 16:17:10   C47C8D625126_rssi -86
     2020-02-26 16:17:10   C47C8D625126_servicedata 71209800922651628d7cc40d071003160200
     2020-02-26 16:17:10   C47C8D625126_servicedatauuid 0000fe95-0000-1000-8000-00805f9b34fb
     2020-02-26 16:17:18   CB80D6CC11DE_distance 27.75274
     2020-02-26 16:17:18   CB80D6CC11DE_id cb:80:d6:cc:11:de
     2020-02-26 16:17:18   CB80D6CC11DE_manufacturerdata W
     2020-02-26 16:17:18   CB80D6CC11DE_rssi -92
     2020-02-26 16:17:25   _ENERGY_ApparentPower 22
     2020-02-26 16:17:25   _ENERGY_Current 0.096
     2020-02-26 16:17:25   _ENERGY_Factor  0.50
     2020-02-26 16:17:03   _ENERGY_Period  0.2
     2020-02-26 16:17:25   _ENERGY_Power   11
     2020-02-26 16:17:25   _ENERGY_ReactivePower 19
     2020-02-26 16:17:25   _ENERGY_Today   0.177
     2020-02-26 16:17:25   _ENERGY_Total   84.639
     2020-02-26 16:17:25   _ENERGY_TotalStartTime 2019-03-11T11:20:09
     2020-02-26 16:17:25   _ENERGY_Voltage 224
     2020-02-26 16:17:25   _ENERGY_Yesterday 0.263
     2020-02-26 16:17:24   _Heap           27
     2020-02-26 16:17:24   _LoadAvg        19
     2020-02-26 16:17:24   _MqttCount      7
     2020-02-26 16:17:24   _POWER1         off
     2020-02-26 16:16:23   _POWER2         off
     2020-02-26 16:17:23   _SSID           FRITZ!Box 7490
     2020-02-26 16:17:24   _Sleep          50
     2020-02-26 16:17:24   _SleepMode      Dynamic
     2020-02-26 16:17:25   _Time           2020-02-26T16:17:25
     2020-02-26 16:17:24   _Uptime         1T02:54:19
     2020-02-26 16:17:24   _UptimeSec      96859
     2020-02-26 16:17:24   _Wifi_AP        2
     2020-02-26 16:17:24   _Wifi_BSSId     5C:49:79:26:EA:FB
     2020-02-26 16:17:24   _Wifi_Channel   6
     2020-02-26 16:17:24   _Wifi_Downtime  0T00:00:06
     2020-02-26 16:17:24   _Wifi_LinkCount 1
     2020-02-26 16:17:24   _Wifi_RSSI      88
     2020-02-26 16:17:24   _Wifi_SSId      FRITZ!Box 7490
     2020-02-26 16:17:24   _Wifi_Signal    -56
     2020-02-26 16:17:18   _distance       27.75274
     2020-02-26 16:17:23   _freeMem        54008
     2020-02-26 16:17:18   _id             cb:80:d6:cc:11:de
     2020-02-26 16:17:23   _ip             192.168.178.72
     2020-02-26 16:17:23   _mac            B4:E6:2D:FB:24:59
     2020-02-26 16:17:18   _manufacturerdata W
     2020-02-26 16:17:23   _modules        BT
     2020-02-26 16:17:23   _rssi           -61
     2020-02-26 16:17:23   _uptime         360
   helper:
     bm:
       MQTT2_DEVICE_Attr:
         cnt        8
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        26.02. 16:16:12
         max        0.00186491012573242
         tot        0.00199770927429199
         mAr:
           set
           OMG_7C2F80ADBC7D
           readingList
           .* { $TOPIC =~ m,BTtoMQTT/([0-9A-Z]+),;;json2nameValue($EVENT,"$1"."_") }
       MQTT2_DEVICE_Define:
         cnt        1
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        26.02. 16:16:11
         max        0.033801794052124
         tot        0.033801794052124
         mAr:
           HASH(0x55b22b682b30)
           OMG_7C2F80ADBC7D MQTT2_DEVICE 7C2F80ADBC7D
       MQTT2_DEVICE_Get:
         cnt        1
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        26.02. 16:16:42
         max        4.22000885009766e-05
         tot        4.22000885009766e-05
         mAr:
           HASH(0x55b22b682b30)
           OMG_7C2F80ADBC7D
           ?
       MQTT2_DEVICE_Set:
         cnt        53
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        26.02. 16:16:31
         max        0.0135269165039062
         tot        0.0168287754058838
         mAr:
           HASH(0x55b22b682b30)
           OMG_7C2F80ADBC7D
           ?
Attributes:
   DbLogExclude .*
   IODev      MQTTServer
   autocreate 0)
   event-min-interval 300
   icon       temperature_humidity
   model      OpenMQTTGateway_BT_gtag
   readingList .* { $TOPIC =~ m,BTtoMQTT/([0-9A-Z]+),;;json2nameValue($EVENT,"$1"."_") }
   room       MQTT2_DEVICE
   stateFormat Last IO: last_IO



Dann habe ich mal versucht das händisch anzulegen

Internals:
   CFGFN     
   CID        CB80D6CC11DE
   DEF        CB80D6CC11DE
   DEVICETOPIC OMG_CB80D6CC11DE
   FUUID      5e5689d5-f33f-0b03-32bd-ed60e36904372fdd
   IODev      MQTTServer
   LASTInputDev MQTTServer
   MQTTServer_MSGCNT 88
   MQTTServer_TIME 2020-02-26 17:37:56
   MSGCNT     88
   NAME       OMG_CB80D6CC11DE
   NR         13862
   STATE      Last IO: OMG_oben
   TYPE       MQTT2_DEVICE
   .attraggr:
   .attrminint:
     300
   .userReadings:
     HASH(0x55b22f3a20b0)
   READINGS:
     2020-02-26 17:37:56   OMG_oben_distance 0.708318
     2020-02-26 17:37:56   OMG_oben_id     cb:80:d6:cc:11:de
     2020-02-26 17:37:56   OMG_oben_manufacturerdata W
     2020-02-26 16:12:23   OMG_oben_name   MI Band 2
     2020-02-26 17:37:56   OMG_oben_rssi   -57
     2020-02-26 17:37:17   OMG_unten_distance 32.73764
     2020-02-26 17:37:17   OMG_unten_id    cb:80:d6:cc:11:de
     2020-02-26 17:37:17   OMG_unten_manufacturerdata W
     2020-02-26 17:37:17   OMG_unten_rssi  -94
     2020-02-26 17:31:48   bestRecentGW    OMG_oben_rssi
     2020-02-26 17:37:56   last_IO         OMG_oben
   helper:
     bm:
       MQTT2_DEVICE_Attr:
         cnt        14
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        26.02. 16:08:07
         max        0.00410604476928711
         tot        0.00445699691772461
         mAr:
           set
           OMG_CB80D6CC11DE
           readingList
           home/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT/CB80D6CC11DE:.* { $TOPIC =~ m,home/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT,;; json2nameValue($EVENT, "${1}_") }
  home/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT/CB80D6CC11DE:.* { $TOPIC =~ m,home/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT,;; {"last_IO"=>"$1"}}

       MQTT2_DEVICE_Define:
         cnt        1
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        26.02. 16:08:05
         max        0.0316240787506104
         tot        0.0316240787506104
         mAr:
           HASH(0x55b22e00a2c0)
           OMG_CB80D6CC11DE MQTT2_DEVICE CB80D6CC11DE
       MQTT2_DEVICE_Get:
         cnt        9
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        26.02. 17:24:28
         max        7.10487365722656e-05
         tot        0.000393867492675781
         mAr:
           HASH(0x55b22e00a2c0)
           OMG_CB80D6CC11DE
           ?
       MQTT2_DEVICE_Set:
         cnt        61
         dmx        -1000
         dtot       0
         dtotcnt    0
         mTS        26.02. 16:23:07
         max        0.000150918960571289
         tot        0.00397777557373047
         mAr:
           HASH(0x55b22e00a2c0)
           OMG_CB80D6CC11DE
           ?
Attributes:
   DbLogExclude .*
   IODev      MQTTServer
   autocreate 0
   event-min-interval 300
   icon       temperature_humidity
   maxPresenceAge 1200
   maxReadingsAge 700
   model      OpenMQTTGateway_BT_gtag
   readingList home/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT/CB80D6CC11DE:.* { $TOPIC =~ m,home/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT,;; json2nameValue($EVENT, "${1}_") }
  home/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT/CB80D6CC11DE:.* { $TOPIC =~ m,home/(O[^/]*M[^/]*G[^/]*)/BTtoMQTT,;; {"last_IO"=>"$1"}}

   room       MQTT2_DEVICE
   stateFormat Last IO: last_IO
   userReadings bestRecentGW:.*_rssi.* {identifyMyBestGW($name)}
   userattr   maxPresenceAge maxReadingsAge



Wie man sieht paßt die Readingslist vom ersten nicht
da wird einfach alles was ankommt ins Device geschrieben
Zitat.* { $TOPIC =~ m,BTtoMQTT/([0-9A-Z]+),;;json2nameValue($EVENT,"$1"."_") }

Beim Reading bestRecentGW wird nur OMG  geschrieben  _unten oder _oben wird abgeschnitten.
Das Reading last_IO zeigt hingegen auf das richtige Gateway hier OMG_unten

In deinen Code das hier noch verändert
$bestGW =~/([a-z])\w+/g
zeigt mir jetzt auch das Gateway an im Reading.
So  weit funktioniert das jetzt bei mir ich kann nun ganz
gut bestimmen wo im Haus ich mich gerade befinde.
Nur das automatische anlegen mit template gtag geht bei mir nicht
obwohl es bei meinen ersten Versuchen geklappt hat damit.

Andre

Beta-User

...muß wohl mal die ganzen Bausteinchen etwas sortieren, wird aber dauern...

zu dem:
Zitat$bestGW =~/([a-z])\w+/g
Die vorletzte Zeile in dem "identifyMyBestGW"-Code dürfte wohl besser so aussehen:
$bestGW =~ s/_rssi//g;
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