mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-02-01 07:19:24 +00:00
feature: support for MQTT2 -> publish
git-svn-id: https://svn.fhem.de/fhem/trunk@17755 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
8a4c98881a
commit
89dbd4b3e3
@ -30,11 +30,14 @@
|
|||||||
#
|
#
|
||||||
# CHANGE LOG
|
# CHANGE LOG
|
||||||
#
|
#
|
||||||
# 15.11.2018 0.9.9
|
# 15.11.2018 1.0.0
|
||||||
# fix : Pruefung im Parse auf das richtige IODev gefixt (mqtt2).
|
# fix : Pruefung im Parse auf das richtige IODev gefixt (mqtt2).
|
||||||
# fix : Trigger-Event bei Aenderung der Attribute (mqtt2).
|
# fix : Trigger-Event bei Aenderung der Attribute (mqtt2).
|
||||||
# feature : Beim publish (global publish related) pruefen, ob das Geraet
|
# feature : Beim publish (global publish related) pruefen, ob das Geraet
|
||||||
# dem devspec im DEF entspricht (falls vorhanden)
|
# dem devspec im DEF entspricht (falls vorhanden)
|
||||||
|
# feature : Unterstuetzung fuer MQTT2 -> publish (IOWrite)
|
||||||
|
# retain-Flag sollte funktionieren, qos nicht,
|
||||||
|
# wie qos uebermittelt werden soll ist noch unklar
|
||||||
#
|
#
|
||||||
# 14.11.2018 0.9.9
|
# 14.11.2018 0.9.9
|
||||||
# feature : Unterstuetzung fuer MQTT2 -> subscribe (Parse)
|
# feature : Unterstuetzung fuer MQTT2 -> subscribe (Parse)
|
||||||
@ -234,7 +237,7 @@ use warnings;
|
|||||||
|
|
||||||
#my $DEBUG = 1;
|
#my $DEBUG = 1;
|
||||||
my $cvsid = '$Id$';
|
my $cvsid = '$Id$';
|
||||||
my $VERSION = "version 0.9.9 by hexenmeister\n$cvsid";
|
my $VERSION = "version 1.0.0 by hexenmeister\n$cvsid";
|
||||||
|
|
||||||
my %sets = (
|
my %sets = (
|
||||||
);
|
);
|
||||||
@ -1488,6 +1491,7 @@ sub UpdateSubscriptions($) {
|
|||||||
updateDevCount($hash);
|
updateDevCount($hash);
|
||||||
|
|
||||||
return unless isIODevMQTT($hash); #if $hash->{+HELPER}->{+IO_DEV_TYPE} eq 'MQTT2_SERVER';
|
return unless isIODevMQTT($hash); #if $hash->{+HELPER}->{+IO_DEV_TYPE} eq 'MQTT2_SERVER';
|
||||||
|
# TODO: MQTT2 subscriptions
|
||||||
|
|
||||||
my $topicMap = {};
|
my $topicMap = {};
|
||||||
my $gmap = $hash->{+HS_TAB_NAME_DEVICES};
|
my $gmap = $hash->{+HS_TAB_NAME_DEVICES};
|
||||||
@ -1543,6 +1547,7 @@ sub RemoveAllSubscripton($) {
|
|||||||
my ($hash) = @_;
|
my ($hash) = @_;
|
||||||
|
|
||||||
return unless isIODevMQTT($hash); #if $hash->{+HELPER}->{+IO_DEV_TYPE} eq 'MQTT2_SERVER';
|
return unless isIODevMQTT($hash); #if $hash->{+HELPER}->{+IO_DEV_TYPE} eq 'MQTT2_SERVER';
|
||||||
|
# TODO MQTT2 Subscriptions
|
||||||
|
|
||||||
# alle Subscription kuendigen (beim undefine)
|
# alle Subscription kuendigen (beim undefine)
|
||||||
if (defined($hash->{subscribe}) and (@{$hash->{subscribe}})) {
|
if (defined($hash->{subscribe}) and (@{$hash->{subscribe}})) {
|
||||||
@ -2071,8 +2076,13 @@ sub doPublish($$$$$$$$) {
|
|||||||
|
|
||||||
if (isIODevMQTT2($hash)){ #if ($hash->{+HELPER}->{+IO_DEV_TYPE} eq 'MQTT2_SERVER') {
|
if (isIODevMQTT2($hash)){ #if ($hash->{+HELPER}->{+IO_DEV_TYPE} eq 'MQTT2_SERVER') {
|
||||||
# TODO: publish MQTT2
|
# TODO: publish MQTT2
|
||||||
|
# TODO qos / retain ?
|
||||||
return 'unsupported IODev';
|
$topic.=':r' if $retain;
|
||||||
|
IOWrite($hash, $topic, $message);
|
||||||
|
readingsSingleUpdate($hash,"transmission-state","outgoing publish sent",1);
|
||||||
|
$hash->{+HELPER}->{+HS_PROP_NAME_OUTGOING_CNT}++;
|
||||||
|
readingsSingleUpdate($hash,"outgoing-count",$hash->{+HELPER}->{+HS_PROP_NAME_OUTGOING_CNT},1);
|
||||||
|
return undef;
|
||||||
} elsif (isIODevMQTT($hash)) { #elsif ($hash->{+HELPER}->{+IO_DEV_TYPE} eq 'MQTT') {
|
} elsif (isIODevMQTT($hash)) { #elsif ($hash->{+HELPER}->{+IO_DEV_TYPE} eq 'MQTT') {
|
||||||
#Log3($hash->{NAME},1,"MQTT_GENERIC_BRIDGE:DEBUG:> doPublish for $devn, $reading, $value, topic: $topic, message: $message");
|
#Log3($hash->{NAME},1,"MQTT_GENERIC_BRIDGE:DEBUG:> doPublish for $devn, $reading, $value, topic: $topic, message: $message");
|
||||||
my $msgid;
|
my $msgid;
|
||||||
@ -2294,7 +2304,7 @@ sub Attr($$$$) {
|
|||||||
# CallBack-Handler fuer IODev beim Connect
|
# CallBack-Handler fuer IODev beim Connect
|
||||||
sub ioDevConnect($) {
|
sub ioDevConnect($) {
|
||||||
my $hash = shift;
|
my $hash = shift;
|
||||||
return if isIODevMQTT2($hash); #if $hash->{+HELPER}->{+IO_DEV_TYPE} eq 'MQTT2_SERVER'; # TODO
|
#return if isIODevMQTT2($hash); #if $hash->{+HELPER}->{+IO_DEV_TYPE} eq 'MQTT2_SERVER'; # TODO
|
||||||
|
|
||||||
# ueberraschenderweise notwendig fuer eine subscribe-Initialisierung.
|
# ueberraschenderweise notwendig fuer eine subscribe-Initialisierung.
|
||||||
MQTT::client_start($hash) if isIODevMQTT($hash);
|
MQTT::client_start($hash) if isIODevMQTT($hash);
|
||||||
@ -2325,7 +2335,7 @@ sub ioDevConnect($) {
|
|||||||
# CallBack-Handler fuer IODev beim Disconnect
|
# CallBack-Handler fuer IODev beim Disconnect
|
||||||
sub ioDevDisconnect($) {
|
sub ioDevDisconnect($) {
|
||||||
my $hash = shift;
|
my $hash = shift;
|
||||||
return if isIODevMQTT2($hash); #if $hash->{+HELPER}->{+IO_DEV_TYPE} eq 'MQTT2_SERVER';
|
#return if isIODevMQTT2($hash); #if $hash->{+HELPER}->{+IO_DEV_TYPE} eq 'MQTT2_SERVER';
|
||||||
|
|
||||||
#Log3($hash->{NAME},1,"MQTT_GENERIC_BRIDGE:DEBUG:> ioDevDisconnect");
|
#Log3($hash->{NAME},1,"MQTT_GENERIC_BRIDGE:DEBUG:> ioDevDisconnect");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user