(FHEM) 00 MQTT2 CLIENT.pm

Aus TippvomTibb
Zur Navigation springen Zur Suche springen

[Zurueck Uebersicht]

 MQTT2_CLIENT ist eine Reinraumimplementierung eines MQTT-Clients (der eine Verbindung zu einem externen Server wie mosquitto herstellt) ohne Perl-Bibliotheken. Es dient als IODev für MQTT2_DEVICES.

Steckbrief

Define define <name> MQTT2_CLIENT <host>:<port>
Set publish [-r] topic value Verschickt eine Nachricht an den Topic; -r setzt das retain Flag
password <password> value Setzt das Passwort, welches in FHEM/FhemUtils/uniqueID gespeicher ist. Wenn kein <passwort> uebergeben wird, wird das Passwort geloescht.
connect Dient zum manuellen Verbinden an den Broker.
disconnect Dient zum manuellen Unterbrechen der Verbindung zum Broker.
Get  
Readings  
Attributes simple|complex]" siehe Erlaeuterung
binaryTopicRegexp <regular-expression>
ignoreRegexp
clientId <name> setzt die ClientId
clientOrder [MQTT2_DEVICE] [MQTT_GENERIC_BRIDGE]
connectTimeout <seconds>
disable
disabledForIntervals
disconnectAfter <seconds>
keepaliveTimeout <seconds;>
lwt
lwtRetain
mqttVersion 3.1,3.1.1
msgAfterConnect [-r] topic message
msgBeforeDisconnect [-r] topic message
qosMaxQueueLength <number>
rawEvents <topic-regexp>
subscriptions <subscriptions>
SSL
sslargs
username <username>

Erlaeuterungen

Es wird nur QoS 0 und 1 unterstuetzt.


Saetze evtl. zum Einbauen.

Ich nutze ebenfalls MQTT_GENERIC_BRIDGE zum "Weiterbefördern" relevanter Informationen von den Nebensystemen zum Hauptsystem.
Das Trennen der vom Nebensystem angelieferten Informationen übernimmt dabei das Attribut bridgeRegexp eines allgemeinen MQTT2_DEVICEs auf dem Hauptsystem.

Was bei mir gefehlt hat war die "base" Definition sowie eine Bridge mit dem entsprechenden Filter

bridgeRegexp \ SmartHome/MqttGenericBridge2/([A-Za-z0-9]*)/.*:.* "mgb2_$1"\

Das Autocreate hat nach den Anpassungen dann auch funktioniert. Die letzte Herausforderung ist nun, dass ich auf dem Slavesystem Namen mit einem Underscore habe und diese abgeschnitten werden. Experimente mit der RegEx Definition hatten bisher noch keinen Erfolg.

Da dieser Matchingparameter [([A-Za-z0-9]*)] bei den Underscores aufhört bei der Deviceerstellung, habe ich eine Wildcard [.*] genutz... ist aber nicht effektiv, da alle Radings in einem Device landen

([A-Za-z0-9]...*) weitere Varianten


hat das Problem mit den _ in den Devicenamen gelöst.

([^/]+)

https://forum.fhem.de/index.php?topic=98206.0