mqtt2.template für RFbridge von Sonoff entwickeln

Begonnen von Tueftler1983, 27 März 2019, 10:02:44

Vorheriges Thema - Nächstes Thema

Beta-User

Wir benötigen ein Bridge mqtt2_device mit passender bridgeRegexp => template+anpassen.Kurz, da  mobil
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

onkel-tobi

Vermutlich hab ich dich nicht richtig verstanden.
Habe nun:
Internals:
   CFGFN     
   CID        m2c
   DEF        m2c
   DEVICETOPIC MQTT2_m2c
   FUUID      5cd4845f-f33f-daf3-5eeb-8512fbafff932dd3
   IODev      m2c
   LASTInputDev m2c
   MSGCNT     1
   NAME       MQTT2_m2c
   NR         1202
   STATE      ???
   TYPE       MQTT2_DEVICE
   m2c_MSGCNT 1
   m2c_TIME   2019-05-09 21:50:11
   OLDREADINGS:
   READINGS:
Attributes:
   IODev      m2c
   autocreate 1
   bridgeRegexp attr MQTT2 bridgeRegexp \
  /Smarthome[/]([^/]+)[/]([^/]+)[/](tele|cmnd|stat)[/].*:.* "$2"\
  shellies[/]([^/]+)[/].*:.* "$1"\
  (ESPClient_[^/]+)[/].*:.* "$1"
   room       MQTT2_DEVICE


Und :
Internals:
   CFGFN     
   CID        MQTT2_GeneralBridge
   DEF        MQTT2_GeneralBridge
   DEVICETOPIC MQTT2_GeneralBridge
   FUUID      5cd484d7-f33f-daf3-ad4d-fb43c0d1326f2124
   IODev      m2c
   NAME       MQTT2_GeneralBridge
   NR         1215
   STATE      ???
   TYPE       MQTT2_DEVICE
   OLDREADINGS:
   READINGS:
Attributes:
   IODev      m2c
   autocreate 1
   bridgeRegexp attr MQTT2 bridgeRegexp \
  /Smarthome[/]([^/]+)[/]([^/]+)[/](tele|cmnd|stat)[/].*:.* "$2"\
  shellies[/]([^/]+)[/].*:.* "$1"\
  (ESPClient_[^/]+)[/].*:.* "$1"
   comment    Do not use very open bridgeRegexp expressions! This might lead to irritating results...
   model      A_00_MQTT2_CLIENT_general_bridge
   room       MQTT2_MQTT2_m2c
   setStateList on off


Dabei ist es egal, ob die bridgeexp in dem 1. oder 2 device drin ist. Weitere devices werden nicht angelegt.

Beta-User

Das erste "/" in der bridgeRegexp bitte mal innerhalb [] und (Schritt 2) vorneweg .* anfügen.
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

onkel-tobi

#63
Du meinst beide Versionen aus Thread #58? Habe ich, aber ohne Erfolg.

Beta-User

Zitat von: onkel-tobi am 09 Mai 2019, 22:21:08
Du meinst beide Versionen aus Thread #58? Habe ich, aber ohne Erfolg.
Ok, danke für die Rückmeldung dazu.

An den topic-Strukturen hattest du nichts verändert, oder?

Wenn nein, habe ich im Moment keine Idee, an was es klemmt. Wenn man https://regexr.com/ nutzt, um die erste bridgeRegexp zu checken (mit der vollen Version "[^/]*[/]Smarthome[/]([^/]+)[/]([^/]+)[/](tele|cmnd|stat)[/].*" (das folgende ":.*" ist bei den anderen auch erwiesenermaßen unschädlich...) mit dem Topicstring (einschl. CID) "MQTT2:/Smarthome/Buero/DVES_9EFABC/tele/LWT" kommt das korrekte Ergebnis raus.


Anmerkungen:
- Ich gehe davon aus, dass irgendwas gesendet wurde von den ESP's. (wg. reboot oä; die readingList-Einträge sind beide leer, da sollte eigentlich was stehen ??? ).
- Es reicht, wenn die bridgeRegexp an einem Gerät steht, die andere kannst du löschen. Da jedes Mal beim Ändern die readingList gelöscht wird, hatte ich das damals auf ein eigens dafür geschaffenes Device gelegt, damit man ggf. die readingList vom "Sammeldevice" (bei dir: MQTT2_m2c)noch hat und da ggf. dann manuell eingreifen kann. Das würde ich hier auch bevorzugen. Also: MQTT2_GeneralBridge für die bridgeRegexp-Änderungen, MQTT2_m2c für das Rüfen, ob dort (immer noch) die Readings landen, wenn was gesendet wird, ohne dass die bridgeRegexp greift.
(Ich hoffe, das halbwegs verständlich erläutert zu haben; wenn man damit ein wenig gespielt hat, wird es in der Regel klarer...)

Vielleicht machst du zum besseren Verständnis mal noch einen zusätzlichen bridgeRegexp-Eintrag:
.*DVES_(9EFABC).* "$1"
Damit sollte in jedem Fall nach irgendeinem Lebenszeichen von dem DVES_9EFABC ein neues MQTT2_DEVICE mit Namen MQTT2_9EFABC und der CID 9EFABC angelegt werden (vorausgesetzt, die andere "smarthome"-bridgeRegexp greift nicht, aber auch dann gibt es ein (etwas anderes) neues 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

onkel-tobi

Hi,

jetzt bekomme ich zwar grad was, aber ein dev wird nicht angelegt :(

Internals:
   CFGFN     
   CID        m2c
   DEF        m2c
   DEVICETOPIC MQTT2_m2c
   FUUID      5cd5ca42-f33f-daf3-7e1b-72445b475b02dd0f
   IODev      m2c
   LASTInputDev m2c
   MSGCNT     1
   NAME       MQTT2_m2c
   NR         1133
   STATE      ???
   TYPE       MQTT2_DEVICE
   m2c_MSGCNT 1
   m2c_TIME   2019-05-10 21:06:50
   OLDREADINGS:
   READINGS:
     2019-05-10 21:06:50   Time            2019-05-10T20:06:49
     2019-05-10 21:06:50   Uptime          2T00:45:20
     2019-05-10 21:06:50   Vcc             3.142
     2019-05-10 21:06:50   Wifi_AP         1
     2019-05-10 21:06:50   Wifi_APMac      0E:EC:DA:1A:9C:57
     2019-05-10 21:06:50   Wifi_RSSI       78
     2019-05-10 21:06:50   Wifi_SSId       HA
Attributes:
   IODev      m2c
   readingList m2c:/Smarthome/DG/sonoffrf/tele/STATE:.* { json2nameValue($EVENT) }
m2c:/Smarthome/Buero/DVES_9EFABC/tele/UPTIME:.* { json2nameValue($EVENT) }
m2c:/Smarthome/DG/sonoffrf/tele/UPTIME:.* { json2nameValue($EVENT) }
   room       MQTT2_DEVICE


Und:
Internals:
   CID        MQTT2_GeneralBridge
   DEF        MQTT2_GeneralBridge
   DEVICETOPIC MQTT2_GeneralBridge
   FUUID      5cd5ca61-f33f-daf3-a0c2-87dc908a82bcac9d
   IODev      m2c
   NAME       MQTT2_GeneralBridge
   NR         1056
   STATE      ???
   TYPE       MQTT2_DEVICE
Attributes:
   IODev      m2c
   autocreate 1
   bridgeRegexp attr MQTT2 bridgeRegexp \
  [^/]*[/]Smarthome[/]([^/]+)[/]([^/]+)[/](tele|cmnd|stat)[/].* "$2"\
  shellies[/]([^/]+)[/].*:.* "$1"\
  (ESPClient_[^/]+)[/].*:.* "$1"
   comment    Do not use very open bridgeRegexp expressions! This might lead to irritating results...
   model      A_00_MQTT2_CLIENT_general_bridge
   room       MQTT2_DEVICE
   setStateList on off

Beta-User

Hättest du die RL in MQTT2_m2c gelöscht?
Wie ist es, wenn du die bridgeRegex wie vorgeschlagen mit dem konkreten Namen ergänzt?
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

onkel-tobi

Zitat von: Beta-User am 11 Mai 2019, 07:45:24
Hättest du die RL in MQTT2_m2c gelöscht?
Ja, habe ich gestern mal beim rumspielen probiert.

Den Namen in der bridgeRegex, wie mach ich das genau? In der general bridge dann einfach Zeile einfügen im bridgeRegex attr?

Beta-User

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

onkel-tobi

#69
Leider auch keine Veränderung :(
Verstehe das einfach nicht. Denn die Tage hatte ich ja zumindest mal das RF1, was gar nicht so schlecht aussah...

Autocreate bei beiden (*_m2c und generalbridge) ist aber korrekt?

BridgeRegex sieht so aus:
attr MQTT2 bridgeRegexp \
  [^/]*[/]Smarthome[/]([^/]+)[/]([^/]+)[/](tele|cmnd|stat)[/].* "$2"\
  shellies[/]([^/]+)[/].*:.* "$1"\
  (ESPClient_[^/]+)[/].*:.* "$1"\
  .*DVES_(9EFABC).* "$1"

Beta-User

Hmmm, fhem ist aktuell, oder?
Und du löschst nach jeder Änderung der bridgeRegex die rL des MQTT2_m2c bzw. das ganze device? Anschließend einen der ESPs neu starten?
Wenn ja: sehr komisch...
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

onkel-tobi

Hi,

also nach jd. Änderung das *_mc device habe ich nicht gelöscht.
Werde ich dann jetzt mal probieren.
Das general_bridge lasse ich aber drin?

Gruß,
Tobi

Beta-User

Ja, die GeneralBridge ist zum "Sortieren" da, und soll das, was zusammen gehört jeweils in genau ein Device weiterleiten, aber eben trennen, was nicht zusammen gehört...Muss also bleiben.
Sortiert werden aber nur _unbekannte_ Topics. Deswegen muss das andere bzw die rL vereinfacht gelöscht werden (bereinigen würde reichen...).
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

onkel-tobi

#73
Nochmals vielen Dank für deine Geduld!
Ich habe das Gefühl ich mache noch grundsätzlich was falsch.
Hatte jetzt mal das MQTT2_m2c gelöscht, damit bleibt also der mqqt2_client (m2c):
Internals:
   BUF       
   CFGFN      FHEM/vccu.cfg
   DEF        127.0.0.1:1883
   DeviceName 127.0.0.1:1883
   FD         88
   FUUID      5cd5c8be-f33f-daf3-1854-333afde33c9e5e0e
   NAME       m2c
   NR         42
   PARTIAL   
   STATE      opened
   TYPE       MQTT2_CLIENT
   WBCallback
   clientId   m2c
   lastMsgTime 1557557123.32289
   nextOpenDelay 5
   READINGS:
     2019-05-11 08:42:53   state           opened
Attributes:
   autocreate simple


Und die generalBridge:
Internals:
   CID        MQTT2_GeneralBridge
   DEF        MQTT2_GeneralBridge
   DEVICETOPIC MQTT2_GeneralBridge
   FUUID      5cd5ca61-f33f-daf3-a0c2-87dc908a82bcac9d
   IODev      m2c
   NAME       MQTT2_GeneralBridge
   NR         1055
   STATE      ???
   TYPE       MQTT2_DEVICE
Attributes:
   IODev      m2c
   autocreate 1
   bridgeRegexp attr MQTT2 bridgeRegexp \
  [^/]*[/]Smarthome[/]([^/]+)[/]([^/]+)[/](tele|cmnd|stat)[/].* "$2"\
  shellies[/]([^/]+)[/].*:.* "$1"\
  (ESPClient_[^/]+)[/].*:.* "$1"
   comment    Do not use very open bridgeRegexp expressions! This might lead to irritating results...
   model      A_00_MQTT2_CLIENT_general_bridge
   room       MQTT2_DEVICE
   setStateList on off

BridgeRegexp hatte ich in beiden Versionen probiert...
Und ich starte die bridge nach jd. Änderung durch.
Aber ich bekomme nichts mehr. Das sah bei dem mqtt2_m2c device noch anders aus, da kam zumindest was ins rL.

Update:
ICh werde nun noch mal alles löschen außer dem MQQT2_client.
Diesen setze ich auf autocreate simple?
Dann sollte ein MQTT2_client device entstehen, bei dem ich dann autocreat auf 1 stelle?
Außerdem attrTemplate anwende mit general bridge.
Dann entsteht das generalBridge device, dass ich dann auf jd. Fall mit autocreate 1 setze und in dem ich die bridgeRegex wie oben anpasse.
Entsprechend das rL in MQTT2_m2c löschen, die sonoff bridge neustarten und es sollte die 1. Bridge erstellt werden?

Beta-User

RAW-Events am IO ansehen => was kommt rein...

Sorry für Kurzfassung, bin nur mobil.
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