FHEM Forum

FHEM - Hausautomations-Systeme => MQTT => Thema gestartet von: smeagel am 05 Februar 2018, 11:00:17

Titel: MQTT publishSet mit Leerzeichen und #
Beitrag von: smeagel 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

Titel: Antw:MQTT publishSet mit Leerzeichen und #
Beitrag von: smeagel 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
Titel: Antw:MQTT publishSet mit Leerzeichen und #
Beitrag von: pula 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
Titel: Antw:MQTT publishSet mit Leerzeichen und #
Beitrag von: smeagel 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
Titel: Antw:MQTT publishSet mit Leerzeichen und #
Beitrag von: fh168 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
Titel: Antw:MQTT publishSet mit Leerzeichen und #
Beitrag von: smeagel 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
Titel: Antw:MQTT publishSet mit Leerzeichen und #
Beitrag von: pula 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
Titel: Antw:MQTT publishSet mit Leerzeichen und #
Beitrag von: jlu 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