Modul-Diskussion/Hilfe: MQTT_GENERIC_BRIDGE

Begonnen von Master_Nick, 11 Oktober 2018, 17:23:24

Vorheriges Thema - Nächstes Thema

Maui

Also ich konnte heute den Tag über keine negativen Effekte ausmachen bzgl. Leerzeilen.
Das hast du aber vermutlich noch nicht eingecheckt, oder?

hexenmeister

doch, morgen wird die neue Version per Update verfügbar

Dersch

Kann der Maintainer vom readingsProxy Modul da nicht abhilfe schaffen?

hexenmeister

Vermutlich. Ich habe reingeschaut, auf den ersten Blick wird da alles korrekt gemacht. Ich müsst das mal in dem Entwicklerbereich posten.

disaster123

Hallo,

ich versuche gerade FHEM dazu zu bekommen Werte per MQTT zu publishen. Aber es kommen keine Daten am MQTT server an. Die Verbindung wird erfolgreich aufgebaut. Ich sehe auch, dass FHEM sich für TOPICs subscribed hat aber publish geht nicht.

Config:

# grep -i mqtt fhem.cfg
attr global userattr cmdIcon devStateIcon:textField-long devStateStyle icon mqttAlias:textField-long mqttDefaults:textField-long mqttDisable:both,incoming,outgoing mqttForward:all,none mqttPublish:textField-long mqttSubscribe:textField-long sortby webCmd webCmdLabel:textField-long widgetOverride

attr Velux_0 mqttPublish EXECUTION|LASTCONTROL|LASTRUNSTATUS|LASTSTATUSREPLY|OPERATINGSTATE|PCT|STATE|TARGET:topic={"2og/dachfenster/$name"}
attr Velux_0 mqttSubscribe EXECUTION|LASTCONTROL|LASTRUNSTATUS|LASTSTATUSREPLY|OPERATINGSTATE|PCT|STATE|TARGET:stopic={"2og/dachfenster/$reading/set"}

define symcon_mqtt MQTT 172.18.0.2:1024
setuuid symcon_mqtt 5d065f76-f33f-304b-8aea-778a42dbae7d0df1

define mqttGeneric MQTT_GENERIC_BRIDGE
setuuid mqttGeneric 5d065f7d-f33f-304b-3b16-c7d9452d340e7a5a
attr mqttGeneric IODev symcon_mqtt
attr mqttGeneric globalDefaults sub:qos=2 pub:qos=0 retain=1


Ich finde den Fehler nicht ;-( Danke!

hexenmeister

Hm. Readings in GRO?BUCHSTABEN funktionieren nicht. Ich werde mal suchen warum nicht...

hexenmeister

Ähm. Nö, geht doch. Wenn man dummy richtig definiert...

Mein Testaufbau:
defmod dummy dummy
attr dummy mqttPublish EXECUTION|LASTCONTROL|LASTRUNSTATUS|LASTSTATUSREPLY|OPERATINGSTATE|PCT|STATE|TARGET:topic={"2og/dachfenster/$name"}
attr dummy mqttSubscribe EXECUTION|LASTCONTROL|LASTRUNSTATUS|LASTSTATUSREPLY|OPERATINGSTATE|PCT|STATE|TARGET:stopic={"2og/dachfenster/$reading/set"}
attr dummy readingList aaa EXECUTION LASTCONTROL LASTRUNSTATUS LASTSTATUSREPLY OPERATINGSTATE PCT STATE TARGET
attr dummy setList aaa EXECUTION LASTCONTROL LASTRUNSTATUS LASTSTATUSREPLY OPERATINGSTATE PCT STATE TARGET


und dann bei "set dummy LASTCONTROL test" kommen auch braw die Werte in MQTTExplorer.

Werden denn bei deinem Device Events generiert?

mlb

#307
Hello,

Any idea why MQTT_GENERIC_BRIDGE stopped seeing my device?
define mqtt MQTT2_CLIENT 192.168.254.20:1888
attr mqtt room zMQTT
attr mqtt username mqttuser
attr mqtt subscriptions /Mythz/+/set
attr mqtt debug 1
attr mqtt verbose 5

define mqttGeneric MQTT_GENERIC_BRIDGE mqtt Mythz
attr mqttGeneric IODev mqtt
attr mqttGeneric defaults sub:qos=2 pub:qos=0 retain=0
attr mqttGeneric globalPublish *:topic={"/$device/$reading"}
attr mqttGeneric room zMQTT


It was working before but after I updated fhem - I can only see
device-count 0


Debug shows strange excludes:
initialized: 1

device data records: $VAR1 = {
          ':global' => {
                         ':publish' => {
                                         '*' => {
                                                  'topic' => '{"/$device/$reading"}',
                                                  'mode' => 'R'
                                                }
                                       }
                       }
        };


subscriptionTab: $VAR1 = undef;


subscription helper array: $VAR1 = undef;


exclude type map: $VAR1 = {
          'sub' => {
                     'MQTT_GENERIC_BRIDGE' => '*',
                     'MQTT_BRIDGE' => 'transmission-state',
                     'MQTT_DEVICE' => 'transmission-state',
                     'FHEMWEB' => '*',
                     'telnet' => '*',
                     'MQTT' => 'transmission-state',
                     'Global' => '*'
                   },
          'pub' => {
                     'MQTT_DEVICE' => 'transmission-state',
                     'FHEMWEB' => '*',
                     'telnet' => '*',
                     'MQTT_BRIDGE' => 'transmission-state',
                     'MQTT_GENERIC_BRIDGE' => '*',
                     'Global' => '*',
                     'MQTT' => 'transmission-state'
                   }
        };


exclude reading map: $VAR1 = {};


exclude device map: $VAR1 = {};


When I restored Fhem files backup from April, it started working again (still, with debug info and device count = 0 as above).

LWZ 403SOL, FHEM + HomeAssistant

hexenmeister

yes, globalPublish was brocken. please try attached version.

savage7

Hi,

ich verwende schon seit einige Zeit mit Begeisterung dieses Modul. Jetzt habe ich gerade das erste Mal was gefunden, dass mir Probleme macht. Ich hoffe es kann vielleicht jemand weiterhelfen  :)

Ich hab testweise sowas angelegt:

attr kue.rolladen.links mqttSubscribe  test:stopic=/test/position test:expression={closeBlindAndTurnFibaro("kue.rolladen.links",0,0)}


Intention:
Ich möchte ein Topic erstellen das eine Perl Methode aufruft, welche bei meinen Rollos Position und Tilt gemeinsam steuert. closeBlindAndTurnFibaro ist eine Methode in meiner myUtils.pl die ich anderswo zb. in DOIFs verwende.

Problem:
Topic lässt ich aufrufen, nur findet der closeBlindAndTurnFibaro nicht. Bin zu wenig Perl bzw Fhem Experte :) Kann ich hier myModules inkluden oder mit einem Prefix die Methoden darin verwenden oder geht das generell nicht?

Log beim Aufruf des Topics:

2019.07.08 22:45:05 2: MQTT_GENERIC_BRIDGE: [mqttGeneric] onmessage: error while evaluating expression ('{closeBlindAndTurnFibaro("kue.rolladen.links",0,0)}'') eval error: Undefined subroutine &MQTT::GENERIC_BRIDGE::closeBlindAndTurnFibaro called at (eval 414992) line 1.


Danke!

hexenmeister

MQTT_GENERIC_BRIDGE verwendet Packages. Probiere der Methode "main::" vorranzustellen: "main::closeBlindAndTurnFibaro..."

savage7

Hat funktioniert! Vielen Dank für deine schnelle Antwort und Hilfe  :)!

Billy

Ich bin gerade dabei meine mqtt Welt zu optimieren.

Mit einem Device das 2 Stati hat kann ich mit:
state:topic=fhem/status/alarm/test_2 state:expression={($value eq 'off')?'stop':'on'}

problemlos z.B. zu meinem Home-Status-Display publishen.

Wie sieht es aus, wenn mein Device 3 Stati meldet!
Das geht schon lange über 3 notifies.
notify Waermebedarf:demand set Broker_Syn publish retain:1 fhem/status/alarm/hz_waermebedarf on
notify Waermebedarf:idle set Broker_Syn publish retain:1 fhem/status/alarm/hz_waermebedarf off
notify Waermebedarf:off set Broker_Syn publish retain:1 fhem/status/alarm/hz_waermebedarf stop


Gibt es einen Weg das einfacher wie im obigen Beispiel über --> state:expression={($value eq ...............?
in der Gerneric Bridge zu realisieren?

Gruß Billy
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*

Beta-User

Sollte sich eigentlich als "normale Abfragekaskade" erweitern lassen:
state:topic=fhem/status/alarm/test_2 state:expression={($value eq 'off')?'stop':($value eq 'idle')?'off':'on'}
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Billy

Danke super, wieder was gelernt. und Code gespart! :)

Billy
FHEM immer akt. auf 3 BeagleBoneBlack: 2xHMLAN 2xJeelink ;10x HM-CC-TC, 13x HM-CC-VD, 1x HM-ES-PMSw1-Pl, 3x HM-LC-SW1-PL2, viele ESP8266, Tasmota Scripting, Mqtt*