FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Dlay am 21 Juni 2017, 21:29:54

Titel: [GELÖST] ShellBefehl mit JSON String
Beitrag von: Dlay am 21 Juni 2017, 21:29:54
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
Titel: Antw:ShellBefehl mit JSON String
Beitrag von: amenomade am 21 Juni 2017, 21:40:19
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\}\' "
Titel: Antw:ShellBefehl mit JSON String
Beitrag von: Dlay am 21 Juni 2017, 21:58:07
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\}\' "
Titel: Antw:[GELÖST] ShellBefehl mit JSON String
Beitrag von: Dlay am 21 Juni 2017, 22:13:59
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.. :-)
Titel: Antw:[GELÖST] ShellBefehl mit JSON String
Beitrag von: amenomade am 21 Juni 2017, 22:20:16
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\}\' "
Titel: Antw:[GELÖST] ShellBefehl mit JSON String
Beitrag von: amenomade am 21 Juni 2017, 22:21:01
Mit
{ fhem ("sleep 2")};wird aber fhem 2 Sek lang komplett blockiert.
Titel: Antw:[GELÖST] ShellBefehl mit JSON String
Beitrag von: Dlay am 22 Juni 2017, 00:03:03
Ja, das ist mir bekannt, aber bei meiner Mini-Installation ist das egal. Hier läuft nichts kritisches.