code checkin unter fhem/lib/FHEM

Begonnen von herrmannj, 07 Februar 2022, 09:26:44

Vorheriges Thema - Nächstes Thema

herrmannj

Ich werde gern unter fhem/lib/FHEM/Utilities etwas code einchecken, welcher dafür gedacht ist, dass beliebige Module auch MQTT topics abonnieren können. Das Unterverzeichnis müsste erstellt werden. Recht es wenn ich das via svn commit mache?

CoolTux

Hallo Jörg

Es reicht wenn Du es entsprechend commitest. Funktioniert ohne Probleme. Die entsprechenden Module müssen natürlich Dein Modul einbinden. Und es wäre zu empfehlen das Du es entsprechend als package machst.


Grüße
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.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

herrmannj

Zitat von: CoolTux am 07 Februar 2022, 09:31:38
Hallo Jörg

Es reicht wenn Du es entsprechend commitest. Funktioniert ohne Probleme. Die entsprechenden Module müssen natürlich Dein Modul einbinden. Und es wäre zu empfehlen das Du es entsprechend als package machst.


Grüße
perfekt, danke. package: check, einbinden (use ..): check. Noch ein wenig Qualitätskontrolle, dann checke ich das ein. Manual als pod, ich stelle das dann aber auch hier nochmal vor, mit Anleitung und Beispiel wie man es einbindet.

Sidey

Wenn Du es als Package bereitstellst, dann kannst Du es auch gleich im richtigen Lib VZ bereitstellen:

https://svn.fhem.de/fhem/trunk/fhem/lib/FHEM/
Signalduino, Homematic, Raspberry Pi, Mysensors, MQTT, Alexa, Docker, AlexaFhem

Maintainer von: SIGNALduino, fhem-docker, alexa-fhem-docker, fhempy-docker

herrmannj

und da liegt es jetzt auch. :)

NAME
FHEM::Utility::MQTT2_Dispatcher - Subscribe to MQTT messages in fhem modules

SYNOPSIS
       package main;
       
        use FHEM::Utility::MQTT2_Dispatcher qw( :DEFAULT );

        sub X_Define {
                ...

                $hash->{Listener} = on_mqtt('home/#', sub {
                        X_MQTT($hash, @_);
                }) or do {
                        Log3($hash, 2, $@);
                };
        };
       
        sub X_MQTT {
                my ($hash, $topic, $value, $io_name) = @_;
        };

        # required for rereadcfg etc
        sub X_Undef {
                ...
                del_mqtt($hash->{Listener});
                return;
        };


DESCRIPTION
This module provides a couple of helper functions to let a fhem module subscripe to MQTT topics using a defined MQTT2_SERVER or MQTT2_CLIENT.

FUNCTIONS
on_mqtt ($topic, sub {})
This function subscribes to a given $topic. MQTT wildcards are allowed. The MQTT2 IO device, of course, must receive that topic. The coderef can be an anonyious sub or a variable holding one. This function receive 3 params: the $topic (unicode), the $value (raw) and the $name of the receiving IO device.

Returns an identifier that is used to delete that handler at any time. Undef in case of an error.

Multiple handlers can be installed at the same time.

del_mqtt ($id)
This function removes (deletes) the handler specified with $id. It must be called in X_Undef function of the embedding fhem module.