[GELÖST] ShellBefehl mit JSON String

Begonnen von Dlay, 21 Juni 2017, 21:29:54

Vorheriges Thema - Nächstes Thema

Dlay

Ich werd noch irre.. jetzt habe ich schon Stunden damit verbracht einen Shell-Befehl zu integrieren.

Der Befehl lautet:
mosquitto_pub -h 192.168.1.1 -t /zuhause/schalter/mqtt_sonoff_2/cmnd/IRSend -m '{"protocol": "NEC","bits": 32, "data": 1082099831}'

Ja am Ende ist ein JSON String. Dieser lässt sich warum auch immer nicht aus FHEM versenden.
Auf der Shell vom Raspi Pi geht der Befehl einwandfrei.

Ich hab mich jetzt schon verrückt gelesen und bekomme es einfach nicht hin.

Hintergrund:

Ich habe ein RGB Leuchtmittel mit Fernbedienung. Also habe ich ein IR Modul für einen Sonoff Basic gebastelt (siehe Wiki) und im Tasmota die IR Funktion auf GPIO14 aktiviert.
Auch in der Tasmote Console funktioniert ein IRSend Befehl mit meinen Parametern einwandfrei.

Ich möchte via dummy die Lampe anschalten und danach eine Lichtfarbe via oben genanntem Befehl setzen. Zwischen Einschalten und Farbe setzen sollte eine kleine Pause liegen. Ich weiß nicht wie schnell das Leuchtmittel bootet..
Dummy und notify funktionieren, aber wie bekomme ich die Lichtfarbe mit dem obigen Befehl dort hinein ?

Bitte helft mir.. ich verzweifle..

Vielen Dank !

P.S.:
Ich habe es auch schon mit dem cmdalias aus dem Wiki versucht:

mqttmsg
Schickt eine Nachricht an einen Mosquitto Message Broker

define c_mqttmsg cmdalias mqttmsg .* AS {qx(/usr/bin/mosquitto_pub -h 192.168.1.101 -t \'$EVTPART0\' -m \'$EVTPART1\')}

Ebenfalls ohne Erfolg

amenomade

Du musst warhscheinlich alle Sonderzeichen mit \ escapen.
system "mosquitto_pub -h 192\.168\.1\.1 -t /zuhause/schalter/mqtt_sonoff_2/cmnd/IRSend -m \'\{\"protocol\": \"NEC\",\"bits\": 32, \"data\": 1082099831\}\' "
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Dlay

Hallo amenomade,

dann ist in dem cmdalias wohl ein Fehler.
Der Befehl funktioniert, vielen Dank dafür!

Und wie bekomme ich nun das gewünschte verhalten ?

Die DEF meines notify mag nicht so recht

Licht_Wohnzimmer:on set mqtt_sonoff_2 ON; sleep 2; system "mosquitto_pub -h 192\.168\.1\.1 -t /zuhause/schalter/mqtt_sonoff_2/cmnd/IRSend -m \'\{\"protocol\": \"NEC\",\"bits\": 32, \"data\": 1082099831\}\' "

Dlay

Ich habe es jetzt selbst hinbekommen:

Licht_Wohnzimmer:on {
fhem ("set mqtt_sonoff_2 ON")};
{ fhem ("sleep 2")};
{ system "mosquitto_pub -h 192\.168\.1\.1 -t /zuhause/schalter/mqtt_sonoff_2/cmnd/IRSend -m \'\{\"protocol\": \"NEC\",\"bits\": 32, \"data\": 1082099831\}\' "}


Dann klappt es mit mehreren Befehlen.. :-)

amenomade

Mit Perl... ja.
Sonst hätte ich einfach "ohne system" vorgeschlagen:
Licht_Wohnzimmer:on set mqtt_sonoff_2 ON; sleep 2; "mosquitto_pub -h 192\.168\.1\.1 -t /zuhause/schalter/mqtt_sonoff_2/cmnd/IRSend -m \'\{\"protocol\": \"NEC\",\"bits\": 32, \"data\": 1082099831\}\' "
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

Mit
{ fhem ("sleep 2")};wird aber fhem 2 Sek lang komplett blockiert.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Dlay

#6
Ja, das ist mir bekannt, aber bei meiner Mini-Installation ist das egal. Hier läuft nichts kritisches.