MQTT publishSet mit Leerzeichen und #

Begonnen von smeagel, 05 Februar 2018, 11:00:17

Vorheriges Thema - Nächstes Thema

smeagel

Hi,

ich habe ein kleines Problemchen und komme nun leider nicht mehr weiter.

Ich habe die RF Bridge von Sonoff mit Tasmota.
Wenn ich einen Schalter anleege und im publishSet folgenden Wert eintrage: OFF cmnd/Bridge1/rfcode #44451
passiert gar nichts.
Wenn ich jedoch OFF cmnd/Bridge1/rfcode eingebe, gibt mir die RF Bdridge eine Rückmeldung.
Wenn ich über die Konsole ein: mosquitto_pub -h 127.0.0.1 -t cmnd/Bridge1/rfcode -m "#444551" absetze, wird der Schaltvorgang ausgeführt.

Ich habe das Gefühl das #44451 nicht mit übermittelt wird.

Hat jemand eine Idee was ich tun kann/muss damit fhem mir den Befehl cmnd/Bridge1/rfcode #44451 sauber übermittelt?


VG
Smeagel


smeagel

Nachtrag:

Wenn ich über fhem direkt ein

{system('mosquitto_pub -h 127.0.0.1 -t cmnd/Bridge1/rfcode -m "#444551"');;}

absetze, funktioniert der Schaltvorgang.


VG
Smeagel

pula

Hi,

das könnte evtl daran liegen, daß # ein wildcard in MQTT ist?
Ich habe kein Sonoff und kann das daher auch nicht testen. Aber könntest Du das Topic so umstellen, daß es kein # mehr enthält?

Cheers,

Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

smeagel

Hi,

nein, leider nicht.
Sonoff erwartet für den Schaltcode explizit den Befehl

rfcode #444551

und ich weiß nicht wie ich den via fhem absetzen soll/kann

VG
Smeagel

fh168

ich habe das so gemacht

sub RFSendMQTT($) {
   my ($mqttcode) = @_;
   my $cmd = "mosquitto_pub -h 192.168.178.67 --quiet -t /Smarthome/Buero/sonoffrf/cmnd/RfCode  -m '$mqttcode'";
   system( "$cmd" );
   return undef;
}


aufruf mit

{RFSendMQTT("#145154")}

LG
/robin
Hue, Lacrosse, PCA301, MySensors, V 1.67 CUL 868 V3.4, Lacrosse-WLAN-Gateway, Tasmota RF-

smeagel

Hi,

vielen Dank für den Input.
Hatte gehofft das man das über einen normalen, einzeiligen MQTT-Befehl hinbekommt.
Scheint leider nicht so zu sein.

Dennoch, vielen Dank für die Hinweise

VG
Smeagel

pula

Ich habe mir den Code der MQTT-Module noch einmal angeschaut.
Da ist scheinbar etwas drin, was das # als Wildcard interpretiert (wie es dem Standard entspricht).
Daher ist der "Umweg" über mosquitto nötig...

Cheers,
Pula
fhem (debian auf proxmox), HM-LAN und wired, MySensors, FritzBoxes, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, HomeConnect, Sonoff/Tasmota, espRGBWW, esphome, Telegram

jlu

Das '#' ist aber nicht im Topic, sondern in den Daten, und da sollte das funktionieren. Wenn das wirklich am MQTT-Modul liegt, dürfte das ein Bug sein.

Meine Vermutung ist aber eine andere: '#' leitet in Perl (und in der fhem.cfg) einen Kommentar ein. Hast Du mal probiert den Wert in Anführungszeichen zu setzen? Also im publishSet OFF cmnd/Bridge1/rfcode "#44451".


Bis dann dann:
  Jochen