(FHEM) 00 MQTT2 CLIENT.pm
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.
([^/]+)