MQTT

Begonnen von smurfix, 21 Januar 2015, 09:26:49

Vorheriges Thema - Nächstes Thema

hexenmeister

Danke fürs Testen, schaue mir heute Abend an. Ich gehe erstmal davon aus, dass es einfach eine Warnung beim fehlenden Werten ist. Sonst funktioniert aber alles?
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

kumue

Bisher ist mir nicht weiter aufgefallen... aber der Tag ist ja noch lang  :D

Danke für die Module !

andies

Ich kannte weder MQTT noch Sonoff und arbeite mich langsam ein. Da ich ein Wiki-Fan bin, würde ich das gern umschreiben, das geht momentan etwas durcheinander. Dazu brauche ich sicher Hilfe. Aber vorab: Hat da jemand massiv Aktien dran, dem man auf die Füße treten könnte?
FHEM 6.1 auf RaspPi3 (Raspbian:  6.1.21-v8+; Perl: v5.32.1)
SIGNALduino (433 MHz) und HM-UART (868 MHz), Sonoff, Blitzwolf, Somfy RTS, CAME-Gartentor, Volkszähler, Keyence-Sensor, Homematic-Sensoren und -thermostat, Ferraris-Zähler für Wasseruhr, Openlink-Nachbau Viessmann

hexenmeister

Zitat von: kumue am 24 August 2017, 06:31:34
moin, habe die Module frisch installiert und bekomme im Log die Meldung
2017.08.24 06:23:31 1: PERL WARNING: Use of uninitialized value $msg{"qos"} in numeric eq (==) at ./FHEM/00_MQTT.pm line 567.

Wann kommt die  Meldung genau?
Probiere mal die angehängte Version.

Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

kumue

Moin, die Meldung kam gestern gleich nach/mit dem Neustart.
Habe die neue 00_MQTT soeben einspielt und FHEM neu gestartet.
Die Meldung kommt jetzt nicht mehr.  :)

Reinhart

ich habe gestern Abend ebenfalls diese Version eingespielt und neu gestartet, bei mir kamen allerdings keine Meldungen im Log (verbose 3).

LG
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

hexenmeister

Dann läuft es ja schon bei mindestens drei Installationen. Aus meiner Sicht können die Module eingecheckt werden. :)

Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

eisler

Hallo Alexander,

alle Module eingecheckt. ( https://svn.fhem.de/trac/changeset/14964 )

Grüße
Stephan

hexenmeister

Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Tobias

#144
Ich häng mich hier mal ran weil ich die neuen PerlAusdrücke beim MQTT_BRIDGE benötige.

Folgends Problem:

attr MQTT_Bridge_ML_DG subscribeSet_Play     {if ($message eq "1") fhem("set $devname play");;} /MPD_DG/set/Play

2017.09.25 13:59:57 5: publish received for /MPD_DG/set/Play, 1
2017.09.25 13:59:57 5: evaluating cmd: {if ($message eq "1" ) fhem("set $devname play"); 0}
2017.09.25 13:59:57 1: PERL WARNING: Bareword found where operator expected at (eval 2332) line 1, near ") fhem"
2017.09.25 13:59:57 1: PERL WARNING:    (Missing operator before fhem?)
2017.09.25 13:59:57 1: ERROR evaluating {if ($message eq "1" ) fhem("set $devname play"); 0}: syntax error at (eval 2332) line 1, near ") fhem"

2017.09.25 13:59:57 5: calling DoSet(MPD_DG,Play,1
2017.09.25 13:59:57 5: Notify for MPD_DG
2017.09.25 13:59:57 5: Play 1, 'Play 1', ''


Dann also mal so:
attr MQTT_Bridge_ML_DG subscribeSet_Play     {($message eq "2")?fhem("set $devname play"):0;;} /MPD_DG/set/Play

2017.09.25 14:14:52 5: publish received for /MPD_DG/set/Play, 2
2017.09.25 14:14:52 5: evaluating cmd: {($message eq "2")?fhem("set $devname play"):0;}
2017.09.25 14:14:52 1: ERROR evaluating {($message eq "2")?fhem("set $devname play"):0;}: Global symbol "$devname" requires explicit package name at (eval 8544) line 1.

2017.09.25 14:14:52 5: calling DoSet(MPD_DG,Play,2
2017.09.25 14:14:52 5: Notify for MPD_DG
2017.09.25 14:14:52 5: Play 2, 'Play 2', ''


Dann testweise mal so, und auf einmal gehts:
attr MQTT_Bridge_ML_DG subscribeSet_Play     {($message eq "2")?fhem("set MPD_DG play"):0;;} /MPD_DG/set/Play

2017.09.25 14:16:10 5: publish received for /MPD_DG/set/Play, 2
2017.09.25 14:16:10 5: evaluating cmd: {($message eq "2")?fhem("set MPD_DG play"):0;}
2017.09.25 14:16:10 5: Notify for MPD_DG
[....]


Die Frage, warum 1) nicht funktioniert und warum $devname nicht verfügbar ist? Habe ich etwas wichtiges vergessen?

Noch etwas, wenn ich ein existierendes subscribeSet_.* erneut überschreibe mit einer geänderten Perl Funktion, dann wird diese nichtbeim nächsten Event angewendet. Ich muss zuerst das Attribut löschen und dann neu anlegen. Dann wird es auch beim nächsten Event auch korrekt angewendet.

Alles in allem: ein super Modul mit enorm Potential :) :)
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

hexenmeister

eine gute Frage, warum "if" nicht funktioniert... Ich verwende einfach eval. Gibt es einen besseren Vorschlag?

      Log3($hash->{NAME},5,"evaluating cmd: $cmd");
      my $name = $hash->{NAME};
      my $device = $hash->{DEF};
      $do=eval($cmd);
      Log3($hash->{NAME},1,"ERROR evaluating $cmd: $@") if($@);


Mit $devname ist meine Schuld. In der Doku steht so, in Code dagegen $device. Muss natürlich angegliechen werden. Welchen Name nehmen wir?

Dass die Attribute-Änderung nicht funktioniert, ist mir auch schon aufgefallen. Hat wohl was damit zu tun, wie das Modul schon vor mir implementiert war. Ich befürchte, das bedarf einiges an Überarbeitung.

Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

Tobias

ich bin für $device.
Warum "if" nicht funktioniert kann ev. Rudi was dazu sagen..??
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

hexenmeister

mit dem $device ist einfach, habe Doku angepasst.
Stephan nimmst Du bitte die Änderung auf?
Mir dem "if" habe ich leider immer noch keine Idee  >:(
Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy

eisler

kann ich gerne machen... ist aber keine Änderung im 10_MQTT_BRIDGE.pm  ;)

hexenmeister

Ähem... Sorry. Verstehe zwar gerade nicht, wo ich was geändert habe. Ich mit meinen vielen Testinstanzen  ;D

Ein neuer Versuch...

Maintainer: MQTT_GENERIC_BRIDGE, SYSMON, SMARTMON, systemd_watchdog, MQTT, MQTT_DEVICE, MQTT_BRIDGE
Contrib: dev_proxy