Autor Thema: Modul-Vorstellung: MQTT_GENERIC_BRIDGE  (Gelesen 5336 mal)

Offline ergerd

  • Full Member
  • ***
  • Beiträge: 134
Antw:Modul-Vorstellung: MQTT_GENERIC_BRIDGE
« Antwort #45 am: 16 September 2018, 19:08:28 »
Hallo aisberg,

ja, "stopic" verwende ich auch. Zusätzlich hat ein Schalter hat bei mir auch immer ein Publish:

defmod wz_schrank FS20 af5f 05
attr wz_schrank userattr lightSceneParamsToSave lightSceneRestoreOnlyIfChanged:1,0 mqttAlias:textField-long mqttDefaults:textField-long mqttDisable:both,incoming,outgoing mqttPublish:textField-long mqttSubscribe:textField-long
attr wz_schrank DbLogExclude .*
attr wz_schrank IODev CUNO
attr wz_schrank alexaName schrank
attr wz_schrank alexaRoom alexa
attr wz_schrank alias schrank
attr wz_schrank genericDeviceType switch
attr wz_schrank group _Steckdose_
attr wz_schrank model fs20st
attr wz_schrank mqttPublish *:topic={"/SmartHome/$device/$reading"}
attr wz_schrank mqttSubscribe state:stopic={"/SmartHome/$device/set"}
attr wz_schrank room 01_wohnzimmer,alexa

Grüße
Rainer
FHEM auf RasPi 3 und B+, FHEM2FHEM, CUNO, FS20, 1Wire2WLAN, DS2423, C-Control II, Buderus KM200, nanoCUL433, LaCrosseGateway, PCA301, LIGHTIFY, alexa-fhem, LuftdatenInfo

Offline aisberg

  • Jr. Member
  • **
  • Beiträge: 55
Antw:Modul-Vorstellung: MQTT_GENERIC_BRIDGE
« Antwort #46 am: 16 September 2018, 19:17:32 »
@SamNitro
was so ein kleines "s" für set doch ausmacht - perfekt!
Vielen Dank!!

Offline hexenmeister

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4215
    • tech_LogBuch
Antw:Modul-Vorstellung: MQTT_GENERIC_BRIDGE
« Antwort #47 am: 16 September 2018, 19:56:51 »
topic / stopic / atopic... wieso habe ich denn nur so fleißig die Texte für Commandref geschrieben  ??? ;)
Übrigens, es können auch 'verständlichere' Namen verwendet werden:
topic  = readings-topic
stopic = set-topic
atopic = attr-topic
(Diesbezüglich muss ich die Doku noch anpassen).
In Verwendung: HM, EnOcean, 1wire, Firmata, MySensors, ESPEasy, MQTT*, NodeRED, Alexa, Telegram,..
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy
Kaffeekasse: https://www.paypal.me/s6z

Offline hexenmeister

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4215
    • tech_LogBuch
Antw:Modul-Vorstellung: MQTT_GENERIC_BRIDGE
« Antwort #48 am: 16 September 2018, 20:03:58 »
defmod tempGefrierschrank dummy
attr tempGefrierschrank userattr mqttAlias:textField-long mqttDefaults:textField-long mqttDisable:both,incoming,outgoing mqttPublish:textField-long mqttSubscribe:textField-long
attr tempGefrierschrank genericDeviceType thermometer
attr tempGefrierschrank mqttSubscribe state:topic={"/Esp1wire@14211345/28.ff9b3b811402.f1/Temperature"}

Offensichtlich gibt es eine Unschärfe wenn ein Ampersand im Topic verwendet wird. Kann ich das selbst korrigieren ohne meine Esp's neu flashen  zu müssen?

Moin!
Du verwendest {} im Topic. Das ist ein Hinweis für das Modul, das Topic kein Text, sondern eine Perl-Expression ist. Daher kommt auch das Problem. Man könnte das Zeichen Maskieren (mit \), aber in Deinem Fall gibt es da nichts zu interpretieren. Entferne die Klammern und auch die Anführungzeichen.

In Verwendung: HM, EnOcean, 1wire, Firmata, MySensors, ESPEasy, MQTT*, NodeRED, Alexa, Telegram,..
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy
Kaffeekasse: https://www.paypal.me/s6z

Offline ergerd

  • Full Member
  • ***
  • Beiträge: 134
Antw:Modul-Vorstellung: MQTT_GENERIC_BRIDGE
« Antwort #49 am: 16 September 2018, 20:31:30 »
Danke hexenmeister!

Du machst deinem Namen alle Ehre :-)

Ich liebe dieses Modul!

Grüße
Rainer
FHEM auf RasPi 3 und B+, FHEM2FHEM, CUNO, FS20, 1Wire2WLAN, DS2423, C-Control II, Buderus KM200, nanoCUL433, LaCrosseGateway, PCA301, LIGHTIFY, alexa-fhem, LuftdatenInfo

Offline Billy

  • Hero Member
  • *****
  • Beiträge: 1016
Antw:Modul-Vorstellung: MQTT_GENERIC_BRIDGE
« Antwort #50 am: 18 September 2018, 20:02:17 »
@Hexenmeister
Habe mir heute deine neueste Version $Id: 10_MQTT_GENERIC_BRIDGE.pm 17363 2018-09-17 12:58:39Z hexenmeister $
eingespielt.
Vorab, läuft hervorragend, die Ansteuerung meiner Sonoff klappt. :)

Ich musste allerdings die userattr zum Device von Hand anlegen. Habe also
mqttAlias:textField-long mqttDefaults:textField-long mqttDisable:both,incoming,outgoing mqttPublish:textField-long mqttSubscribe:textField-longeinfach in userattr des Device reinkopiert.
Vermutlich liegt das aber an mir, da ich die global userattr gelöscht hatte.
Das also nur am Rande.
Ich vermute, dass das bei einer kompletten Neuanlage funktioniert oder habe ich da was übersehen?

Vielen Dank für deine Arbeit, jetzt ist das ziemlich rund.

Gruß Billy
« Letzte Änderung: 18 September 2018, 20:04:20 von Billy »
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink 13x PCA 301;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 1x KFM100, 3x HM-LC-SW1-PL2, ESP8266, Sonoff, Mqtt*

Offline Billy

  • Hero Member
  • *****
  • Beiträge: 1016
Antw:Modul-Vorstellung: MQTT_GENERIC_BRIDGE
« Antwort #51 am: 19 September 2018, 10:27:16 »
Was ich jetzt bezüglich userattr nachstellen konnte sieht so aus.
Wenn ich die Bridge z.B. mit
defmod mqttGeneric MQTT_GENERIC_BRIDGE mqtt myTest1 myTest2definiere

wird nur beim ersten Device das userattr angelegt.
userattr mqttAlias:textField-long mqttDefaults:textField-long mqttDisable:both,incoming,outgoing mqttPublish:textField-long mqttSubscribe:textField-long

mit defmod mqttGeneric MQTT_GENERIC_BRIDGE mqtt myTest2kann ich dann auch für das Device myTest2 das userattr   anlegen.
Ist das so gewollt?
Billy
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink 13x PCA 301;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 1x KFM100, 3x HM-LC-SW1-PL2, ESP8266, Sonoff, Mqtt*

Offline hexenmeister

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4215
    • tech_LogBuch
Antw:Modul-Vorstellung: MQTT_GENERIC_BRIDGE
« Antwort #52 am: 19 September 2018, 19:38:55 »
Das soll natürlich nicht sein. Ich sehe mir das an.
Workaround bis dahin: gar keine Geräte angeben (dann wird im global definiert), oder eben per Hand erstellen.
In Verwendung: HM, EnOcean, 1wire, Firmata, MySensors, ESPEasy, MQTT*, NodeRED, Alexa, Telegram,..
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy
Kaffeekasse: https://www.paypal.me/s6z

Offline Billy

  • Hero Member
  • *****
  • Beiträge: 1016
Antw:Modul-Vorstellung: MQTT_GENERIC_BRIDGE
« Antwort #53 am: 19 September 2018, 21:12:26 »
Das soll natürlich nicht sein. Ich sehe mir das an.
Workaround bis dahin: gar keine Geräte angeben (dann wird im global definiert), oder eben per Hand erstellen.

Ich für mich bevorzuge das Erstellen per Hand ab dem 2ten Device im userattr.
Dann habe ich mehr Übersicht.
Ansonsten wie schon erwähnt bin ich mit der Funktionalität sehr zufrieden. :)
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink 13x PCA 301;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 1x KFM100, 3x HM-LC-SW1-PL2, ESP8266, Sonoff, Mqtt*

Offline hexenmeister

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4215
    • tech_LogBuch
Antw:Modul-Vorstellung: MQTT_GENERIC_BRIDGE
« Antwort #54 am: 22 September 2018, 23:34:14 »
Die userattr funktionieren wieder, wie sie sollen. :)

Außerdem sind in morgigen Update folgende Änderungen enthalten:

- Topics-Ausgabe (subscribe in devinfo) jetzt alphabetisch sortiert
- Trennung der zu ueberwachenden Geraete ist jetzt mit Kommas,  Leezeichen, Kommas mit Leerzeichen  oder einer Mischung davon moeglich.
- Unterstuetzung (fast) beliebiger variablen in defaults / global defaults (und nicht nur $base). Ansonsten ist die Verwendung wie bei $base.  z.B. hugo wird zum $hugo in Topics/Expression
- Neue Option: resendOnConnect für mgttPublish Bewirkt, dass wenn keine mqtt-Connection besteht, die zu sendende Nachrichten in einer Warteschlange gespeichet werden. Wird die Verbindung aufgebaut, werden die Nachrichten verschickt.
Moegliche Optionen:
  -- none  - alle verwerfen,
  -- last  - immer nur die letzte Nachricht speichern,
  -- first - immer nur die erste Nachricht speichern,  danach folgende verwerfen,
  -- all   - alle speichern,  allerdings existiert eine Obergrenze von 100, wird es mehr, werden aelteste ueberzaelige Nachrichten verworfen.
Beispiel: attr genericBridge globalPublish *:resendOnConnect=last
- zusätzlich zu 'topic' und 'stopic' gibt es jetzt 'atopic' - damit können Inhalte von gesetztenm Attributen gesendet und auch enpfangen werden.
- anstatt topic, stopic, atopic können jetzt auch etwas sprechendere Bezeichner verwendet werden: reading-topic, set-topic und attr-topic
« Letzte Änderung: 23 September 2018, 10:55:47 von hexenmeister »
In Verwendung: HM, EnOcean, 1wire, Firmata, MySensors, ESPEasy, MQTT*, NodeRED, Alexa, Telegram,..
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy
Kaffeekasse: https://www.paypal.me/s6z

Offline hopgeq

  • New Member
  • *
  • Beiträge: 37
Antw:Modul-Vorstellung: MQTT_GENERIC_BRIDGE
« Antwort #55 am: 23 September 2018, 22:22:20 »
Bei mir funktioniert das Modul super. Sehr viel angenehmer als die alte MQTT_BRIDGE! :-)
Eine Frage zur Verwendung von Wildcards bei mqttSubscribe.

Kann ich mit einer Zeile alle set-Befehle eines Devices via MQTT verfügbar machen? Bsp. ein als Bilderrahmen fungierendes AMAD-Device ist bei mir derzeit wie folgt konfiguriert:
attr AMAD_Kueche mqttSubscribe state:stopic={"/fhem/AMAD_Kueche/set"}\
bluetooth:stopic={"/fhem/AMAD_Kueche/bluetooth/set"}\
screen:stopic={"/fhem/AMAD_Kueche/screen/set"}\
volume:stopic={"/fhem/AMAD_Kueche/volume/set"}\
volumeNotification:stopic={"/fhem/AMAD_Kueche/volumeNotification/set"}

Kann ich die unteren vier Zeilen ersetzen durch sowas in der Art von
attr AMAD_Kueche mqttSubscribe *:stopic={"/fhem/AMAD_Kueche/$irgendwas/set"}\

oder besser noch

attr AMAD_Kueche mqttSubscribe *:stopic={"/fhem/AMAD_Kueche/$irgendwas/set"}\
*:atopic={"/fhem/AMAD_Kueche/$irgendwas/aset"}

Geht sowas bereits mit dem bestehenden Modul? Ich hab es mit $reading versucht aber das hat nicht geklappt.



Offline Billy

  • Hero Member
  • *****
  • Beiträge: 1016
Antw:Modul-Vorstellung: MQTT_GENERIC_BRIDGE
« Antwort #56 am: 24 September 2018, 08:19:19 »
Die userattr funktionieren wieder, wie sie sollen. :)


Kann ich bestätigen. Danke! :)

FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink 13x PCA 301;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 1x KFM100, 3x HM-LC-SW1-PL2, ESP8266, Sonoff, Mqtt*

Offline hexenmeister

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4215
    • tech_LogBuch
Antw:Modul-Vorstellung: MQTT_GENERIC_BRIDGE
« Antwort #57 am: 24 September 2018, 23:18:31 »
attr AMAD_Kueche mqttSubscribe *:stopic={"/fhem/AMAD_Kueche/$irgendwas/set"}\
*:atopic={"/fhem/AMAD_Kueche/$irgendwas/aset"}

Geht sowas bereits mit dem bestehenden Modul? Ich hab es mit $reading versucht aber das hat nicht geklappt.

Sollte eigentlich.
Folgendes gerade ausprobiert:
*:topic={"/XTEST/$reading/ttt"}Dann auf '/XTEST/mynew/ttt' gesendet. Reading wurde anlgelegt.
auch mit:
*:atopic={"/XTEST/$reading/aaa"} und senden an '/XTEST/group/aaa' funktioniert.
Das Device muss natürlich einen entsprechenden Attribut überhaupt zulassen.

Welche Version setzt Du ein?
In Verwendung: HM, EnOcean, 1wire, Firmata, MySensors, ESPEasy, MQTT*, NodeRED, Alexa, Telegram,..
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy
Kaffeekasse: https://www.paypal.me/s6z

Offline hopgeq

  • New Member
  • *
  • Beiträge: 37
Antw:Modul-Vorstellung: MQTT_GENERIC_BRIDGE
« Antwort #58 am: 25 September 2018, 00:35:12 »
Jetzt funktioniert es bei mir auch. Nach Update auf neuste Version. Wunderbar!

Die Beispiele könnten vielleicht mit in die Doku für mqttSubscribe? Also


höre auf beliebigen set-Befehl mit Parameter, z.B. /fhem/MeinDevice/volume/set 10
attr MeinDevice mqttSubscribe *:stopic={"/fhem/MeinDevice/$reading/set"}

höre auf beliebigen set-Befehl ohne Parameter, z.B. /fhem/MeinDevice/set statusRequest
attr MeinDevice mqttSubscribe state:stopic={"/fhem/MeinDevice/set"}

höre auf beliebigen attr-Befehl, z.B. /fhem/MeinDevice/room/attr Bad  (vielleicht nicht wirklich klug)
attr MeinDevice mqttSubscribe *:atopic={"/fhem/MeinDevice/$reading/attr"}

höre auf beliebigen setreading-Befehl, z.B. /fhem/MeinDevice/currentMedia/setreading DVD
attr MeinDevice mqttSubscribe *:topic={"/fhem/MeinDevice/$reading/setreading"}
« Letzte Änderung: 25 September 2018, 00:43:04 von hopgeq »

Offline Joe9

  • New Member
  • *
  • Beiträge: 7
Antw:Modul-Vorstellung: MQTT_GENERIC_BRIDGE
« Antwort #59 am: 27 September 2018, 14:33:31 »
Zunächst vielen Dank für das neue Modul, welches ich als sehr praktisch einschätze.

Leider habe ich ein Problem bei der Definition des Moduls mit den zu nutzenden Geräten [devspec]

Ich nutze structure für die Zusammenfassung von mehreren Geräten, z.B.  stat_eg.

1. Wenn ich alle Geräte [devspec,devspec,...] definierte und später etwas ergänze, werden die Attribute mqttPublish in allen Geräten gelöscht und ich muss sie neu angeben.

2. Wenn ich die Geräteangaben bei der Definition von MQTT_GENERIC_BRIDGE weglasse, funktioniert es zwar, aber es werden die Attribute wie z.B. mqttPublish mit auf die Elternelemente von structure vererbt. Das will ich nicht.

3. Wenn ich als workaround nur ein Gerät angebe und die anderen Geräte über das manuelle Hinzufügen von userattr konfiguriere, funktioniert es zwar, aber bei einem Neustart sind die Attribute (mqttPublish) wieder entfernt.

Hab ich etwas übersehen?

 

decade-submarginal