Autor Thema: Neue Module: MQTT2_SERVER und MQTT2_DEVICE  (Gelesen 3502 mal)

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 19374
Neue Module: MQTT2_SERVER und MQTT2_DEVICE
« am: 10 August 2018, 13:55:08 »
Ziel: Anbindung von MQTT Geraeten an FHEM zu vereinfachen.

MQTT2_SERVER: eine "cleanroom" Implementierung eines MQTT Servers in FHEM, ersetzt (mit weniger Features) einen externen Server wie mosquitto.
MQTT2_DEVICE: Geraeterepresentation von angeschlossenen Geraeten.

Beispiel (Anbindung eines Sonoff TH10 mit Tasmota Firmware):
define m2s MQTT2_SERVER 1883 global

define sonoff_th10 MQTT2_DEVICE
attr sonoff_th10 readingList tele/sonoff/S.* { MQTT2_JSON($EVENT) }
attr sonoff_th10 setList\
   on tasmota/sonoff/cmnd/Power1 on\
   off tasmota/sonoff/cmnd/Power1 off

Zu meinem bedauern konnte ich MQTT_DEVICE nicht verwenden, da es viel zu stark mit den externen Bibliotheken und den anderen MQTT Modulen zusammenhaengt.
Ich habe einige "Labortests" durchgefuehrt, aber mit wenig "echten" Geraeten getestet, am Anfang ist also mit Problemen zu rechnen. Probleme/Feedback/etc bitte im MQTT Bereich des Forums kundtun.


Nebeneffekte der Implementierung:
- Dispatch in fhem.pl hat einen zusaetzlichen optionalen Parameter ($nounknown), falls gesetzt, werden nicht automatisch Geraete angelegt.
- die allowed Anbindung ist generischer geworden: ein Modul signalisiert mit gesetztem CanAuthenticate, dass es kompatibel ist (MQTT2_SERVER ist kompatibel), was eine Warnung erzeugt, falls kein Passwort gesetzt ist. Der Wert 1 veranlasst FHEMWEB passwort vorzuschlagen (telnet),  bei 2 wird basicAuth vorgeschlagen (FHEMWEB und MQTT2_SERVER).

Nachtrag:
Inzwischen hat MQTT2_SERVER ein autocreate Attribut bekommen, damit sollte das Anlegen einfacher gehen. D.h. erst Server anlegen:
define m2s MQTT2_SERVER 1883 global
attr m2s autocreate
Danach MQTT Endgeraet fuer diesen Host+Port konfigurieren. Die MQTT2_DEVICE Instanzen werden in FHEM damit automatisch angelegt, und auch das readingList Attribut wird automatisch ergaenzt beim ersten Eintreffen eines Nachrichtentyps. Man muss nur noch setList per Hand setzen.
« Letzte Änderung: 04 Oktober 2018, 09:42:06 von rudolfkoenig »
Gefällt mir Gefällt mir x 2 Liste anzeigen

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15220
  • s/fhem\.cfg/configDB/g
Antw:Neue Module: MQTT2_SERVER und MQTT2_DEVICE
« Antwort #1 am: 10 August 2018, 18:02:29 »
Funktioniert erstmal nicht.

2018.08.10 17:53:08 1: reload: Error:Modul 00_MQTT2_SERVER deactivated:
 Experimental keys on scalar is now forbidden at ./FHEM/00_MQTT2_SERVER.pm line 75.

2018.08.10 17:53:08 0: Experimental keys on scalar is now forbidden at ./FHEM/00_MQTT2_SERVER.pm line 75.

patch gibts hier: https://forum.fhem.de/index.php/topic,90145.0.html



Und auf der ganzen Welt, heißt die zentrale MQTT Instanz "Broker" und nicht "Server"...
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg-Stammtisch: 14.12.2018 - 18:30 Uhr

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 19374
Antw:Neue Module: MQTT2_SERVER und MQTT2_DEVICE
« Antwort #2 am: 10 August 2018, 18:13:52 »
Zitat
Funktioniert erstmal nicht.
Haengt vom Perl version wohl ab, 5.18 meldet keine Fehler, 5.26 mag tatsaechlich nicht.

Zitat
patch gibts hier: https://forum.fhem.de/index.php/topic,90145.0.html
Danke, habs eingecheckt.

Zitat
Und auf der ganzen Welt, heißt die zentrale MQTT Instanz "Broker" und nicht "Server"...
In der aktuellen spec (http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/os/mqtt-v3.1.1-os.html) gibt es keinen broker mehr, nur noch server.

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15220
  • s/fhem\.cfg/configDB/g
Antw:Neue Module: MQTT2_SERVER und MQTT2_DEVICE
« Antwort #3 am: 10 August 2018, 20:27:01 »
Alles in allem: Gute Arbeit! Danke!

Das wird in der Mehrzahl der Fälle, in denen MQTT innerhalb einer einzelnen FHEM Installation verwendet werden soll, völlig ausreichen.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg-Stammtisch: 14.12.2018 - 18:30 Uhr
Gefällt mir Gefällt mir x 1 Zustimmung Zustimmung x 1 Liste anzeigen

Offline CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 16820
Antw:Neue Module: MQTT2_SERVER und MQTT2_DEVICE
« Antwort #4 am: 10 August 2018, 20:31:32 »
Alles in allem: Gute Arbeit! Danke!

Das wird in der Mehrzahl der Fälle, in denen MQTT innerhalb einer einzelnen FHEM Installation verwendet werden soll, völlig ausreichen.

Ich gebe Udo da Recht. Wirklich gute Arbeit. Danke Rudi.
MQTT ist/war unter FHEM bisher Kraut und Rüben
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.me/MOldenburg
Mein GitHub: https://github.com/LeonGaultier
kein Support für cfg Editierer

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15220
  • s/fhem\.cfg/configDB/g
Antw:Neue Module: MQTT2_SERVER und MQTT2_DEVICE
« Antwort #5 am: 10 August 2018, 20:38:28 »
MQTT ist/war unter FHEM bisher Kraut und Rüben

Nein. Aber es war nicht komplett in FHEM lösbar, ohne externe Ressourcen zu brauchen.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg-Stammtisch: 14.12.2018 - 18:30 Uhr

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 19374
Antw:Neue Module: MQTT2_SERVER und MQTT2_DEVICE
« Antwort #6 am: 07 November 2018, 20:04:00 »
Inspiriert durch die Diskussion hier, habe ich ein MQTT2_CLIENT Modul gebaut, fuer die, die einen externen MQTT2_SERVER bevorzugen.
Gefällt mir Gefällt mir x 4 Liste anzeigen

Offline hexenmeister

  • Developer
  • Hero Member
  • ****
  • Beiträge: 4275
    • tech_LogBuch
Antw:Neue Module: MQTT2_SERVER und MQTT2_DEVICE
« Antwort #7 am: 07 November 2018, 21:07:50 »
Finde ich gut. Da ist aber noch was zu testen, lief bei mir nicht auf anhieb. @Rudi machst Du 'nen neuen Thread für?
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 betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15220
  • s/fhem\.cfg/configDB/g
Antw:Neue Module: MQTT2_SERVER und MQTT2_DEVICE
« Antwort #8 am: 09 November 2018, 14:42:31 »
Wieso muss man den user als Attribut setzen und das password mit set? Das ist doch völlig unlogisch, da die credentials ohnehin zusammengehören.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg-Stammtisch: 14.12.2018 - 18:30 Uhr

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 19374
Antw:Neue Module: MQTT2_SERVER und MQTT2_DEVICE
« Antwort #9 am: 09 November 2018, 15:02:45 »
Damit beim versehentlichen Posten des fhem.cfg das Passwort nicht angezeigt wird.
Und damit ich keine leidige Diskussion ueber Passwort in Klartext fuehren muss. Derjenige, der das Passwort findet, stellt die Frage vmtl. nicht :)
Wird bei den anderen Modulen (z.Bsp. FBAHAHTTP) auch so gemacht.
Gefällt mir Gefällt mir x 4 Liste anzeigen

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15220
  • s/fhem\.cfg/configDB/g
Antw:Neue Module: MQTT2_SERVER und MQTT2_DEVICE
« Antwort #10 am: 09 November 2018, 16:26:24 »
Die Frage ist doch eher: warum wird nicht auch der Username in die Schlüsseldatei geschrieben, wie es viele andere Module, die nicht von Rudi stammen, auch tun?

Dann könnte man username:password direkt beim erstmaligen define angeben.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg-Stammtisch: 14.12.2018 - 18:30 Uhr

Offline betateilchen

  • Developer
  • Hero Member
  • ****
  • Beiträge: 15220
  • s/fhem\.cfg/configDB/g
Antw:Neue Module: MQTT2_SERVER und MQTT2_DEVICE
« Antwort #11 am: 09 November 2018, 16:28:27 »
Und wo wir gerade beim Thema sind: Wenn man ein mqtt2_client aus FHEM löscht, sollten auch die credentials aus der Schlüsseldatei gelöscht werden.
-----------------------
Unaufgeforderte Anfragen per email werden von mir nicht beantwortet. Dafür ist das Forum da.
-----------------------
Nächster Hamburg-Stammtisch: 14.12.2018 - 18:30 Uhr

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 19374
Antw:Neue Module: MQTT2_SERVER und MQTT2_DEVICE
« Antwort #12 am: 09 November 2018, 21:27:50 »
Zitat
Wenn man ein mqtt2_client aus FHEM löscht, sollten auch die credentials aus der Schlüsseldatei gelöscht werden.
Habs gefixt.
Bitte Diskussion und Fehlermeldungen in den passenden Forumsbereich fuehren, Ankuendigungen ist nicht fuer sowas da.