Autor Thema: MQTT publishSet mit Leerzeichen und #  (Gelesen 1438 mal)

Offline smeagel

  • New Member
  • *
  • Beiträge: 37
MQTT publishSet mit Leerzeichen und #
« am: 05 Februar 2018, 11:00:17 »
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


Offline smeagel

  • New Member
  • *
  • Beiträge: 37
Antw:MQTT publishSet mit Leerzeichen und #
« Antwort #1 am: 05 Februar 2018, 11:24:22 »
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

Offline pula

  • Sr. Member
  • ****
  • Beiträge: 687
Antw:MQTT publishSet mit Leerzeichen und #
« Antwort #2 am: 07 Februar 2018, 22:17:53 »
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, FritzBox, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, dash, HomeConnect, Sonoff/Tasmota, espRGBWW, Telegram

Offline smeagel

  • New Member
  • *
  • Beiträge: 37
Antw:MQTT publishSet mit Leerzeichen und #
« Antwort #3 am: 09 Februar 2018, 08:47:17 »
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

Offline fh168

  • Sr. Member
  • ****
  • Beiträge: 790
Antw:MQTT publishSet mit Leerzeichen und #
« Antwort #4 am: 09 Februar 2018, 15:43:52 »
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-

Offline smeagel

  • New Member
  • *
  • Beiträge: 37
Antw:MQTT publishSet mit Leerzeichen und #
« Antwort #5 am: 10 Februar 2018, 19:24:48 »
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

Offline pula

  • Sr. Member
  • ****
  • Beiträge: 687
Antw:MQTT publishSet mit Leerzeichen und #
« Antwort #6 am: 12 Februar 2018, 12:25:00 »
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, FritzBox, Kodi, vdr, Onkyo, squeezeplayers, nanoCUL, wifilight (Ethernet-Bridge), Heizungssteuerung (python/vncdotool), doorpi, ESP/Arduinos/MQTT, Alexa, dash, HomeConnect, Sonoff/Tasmota, espRGBWW, Telegram

Offline jlu

  • Newbie
  • Beiträge: 2
Antw:MQTT publishSet mit Leerzeichen und #
« Antwort #7 am: 19 Februar 2018, 16:05:11 »
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