Hauptmenü

Werte per MQTT senden

Begonnen von rodnic, 29 März 2020, 20:34:40

Vorheriges Thema - Nächstes Thema

rodnic

Hallo,

ich habe einen LED Strip an einen ESP8266 angeschlossen.
Den mit ESP Easy geflasht.
Nun möchte ich diesen mit MQTT mit Werten aus dem FHEM füttern.

Wie kann ich nun am besten per MQTT Werte an z.B.  das Topic "cmd/HAB-Display-01/ledfarbe1" senden?

Otto123

Ich mach mal einen Querverweis: https://forum.fhem.de/index.php/topic,109632.msg1036267.html#new
Und kann mir etwas generelles nicht verkneifen ;)
https://tty1.net/smart-questions_de.html#beprecise

Ich denke es ist schon mal erheblich ob Du MQTT oder MQTT2 einsetzt.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

rodnic

Hallo,

ich möchte nun nach auslösen des Signals OUT.Aktie:Dow:.*
per MQTT den Minutenwert übertragen.
Dazu habe ich die Variable $min aus fhem genutzt.
Für die anderen MQTT Publish's verwende ich feste Zahlen.
Klappt aber leider nicht.
Was könnte da in der Syntax falsch sein?

OUT.Aktie:Dow:.*      set Mosquitto publish cmd/HAB-Display-01/lednr "$min";
                               set Mosquitto publish cmd/HAB-Display-01/ledfarbe1 26;
                set Mosquitto publish cmd/HAB-Display-01/ledfarbe2 1;
                set Mosquitto publish cmd/HAB-Display-01/ledfarbe3 25;

Beta-User

Na ja, wenn du Perl-Variablen nutzen willst, mußt du auch auf die Perl-Ebene.

Ergänzend: Da das ein Tasmota ist, kannst du das auch zusammengefaßt auf backlog publishen.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

rodnic

Hm, Tasmota ist es zwar nicht ich nutze ESP Easy.

Wollte nur gern wissen wie ich in dem Befehl
set Mosquitto publish cmd/HAB-Display-01/lednr 23;

statt der 23 die Variable $min verwende, in etwa so

set Mosquitto publish cmd/HAB-Display-01/lednr $min;

Leider klappt das so nicht, also was könnte ich noch tuen?

Beta-User

Bitte selbst in Grundlagen einlesen. Die Antwort auf die Frage stand schon hier:
Zitat von: Beta-User am 30 März 2020, 10:27:03
Na ja, wenn du Perl-Variablen nutzen willst, mußt du auch auf die Perl-Ebene.
Offizieller Weg:
https://fhem.de/commandref_DE.html#perl

Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

rodnic

Leider komme ich da nicht weiter.
Könnten sie mir bitte weiter helfen?

Wollte nur gern wissen wie ich in dem Befehl
set Mosquitto publish cmd/HAB-Display-01/lednr 23;

statt der 23 die Variable $min verwende, in etwa so

set Mosquitto publish cmd/HAB-Display-01/lednr $min;

rodnic

so kalppt es:
OUT.Aktie:Dow:.*      {
               if ($min ==2)
               {
                   fhem("set Mosquitto publish cmd/HAB-Display-01/lednr 2");
                                            fhem("set Mosquitto publish cmd/HAB-Display-01/ledfarbe1 2");
                   fhem("set Mosquitto publish cmd/HAB-Display-01/ledfarbe2 0");
                   fhem("set Mosquitto publish cmd/HAB-Display-01/ledfarbe3 0");
                }

ist aber irgendwie zu aufwendig.

Beta-User

...na geht doch, du kannst $min vermutlich auch direkt in die _doppelten Quotes_ rein schreiben...

Jetzt noch aus https://fhem.de/commandref_DE.html#command die richtigen Schlüse ziehen, dann wird es wieder etwas einfacher:
ZitatMehrere FHEM-Kommandos hintereinander werden mittels Semikolon ( ;) getrennt. Weil Semikola auch in perl-Code oder Shell-Programmen benutzt werden, müssen sie mittels doppelten Semikola geschützt werden. Lesen Sie sich bitte die Bermerkungen des notify-Abschnittes zu Kommandoparametern und Regeln durch.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

rodnic

so geht es eben nicht

set Mosquitto publish cmd/HAB-Display-01/lednr $min;

Otto123

#10
OUT.Aktie:Dow:.* {
    fhem("set Mosquitto publish cmd/HAB-Display-01/lednr $min");
    fhem("set Mosquitto publish cmd/HAB-Display-01/ledfarbe1 2");
    fhem("set Mosquitto publish cmd/HAB-Display-01/ledfarbe2 0");
    fhem("set Mosquitto publish cmd/HAB-Display-01/ledfarbe3 0")
}

oder so (korrigiert)
OUT.Aktie:Dow:.* {
    fhem("set Mosquitto publish cmd/HAB-Display-01/lednr $min;;
        set Mosquitto publish cmd/HAB-Display-01/ledfarbe1 2;;
        set Mosquitto publish cmd/HAB-Display-01/ledfarbe2 0;;
        set Mosquitto publish cmd/HAB-Display-01/ledfarbe3 0")
}
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Beta-User

Das sollte auch funktionieren:
OUT.Aktie:Dow:.* {
fhem("
  set Mosquitto publish cmd/HAB-Display-01/lednr $min;;
  set Mosquitto publish cmd/HAB-Display-01/ledfarbe1 2;;
  set Mosquitto publish cmd/HAB-Display-01/ledfarbe2 0;;
  set Mosquitto publish cmd/HAB-Display-01/ledfarbe3 0;;
");
}


(@Otto: schneller edit... Aber es fehlt vermutlich je ein ";").
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Otto123

stimmt :)  :-[
Hab es editiert - doppelt gemoppelt  8)
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

rodnic

Super,

vielen lieben Dank, das hat funktioniert.
Nun hab ich ne Uhr aus nem LED Strip.

Danke

Otto123

Zitat von: rodnic am 30 März 2020, 12:51:58
Wollte nur gern wissen wie ich in dem Befehl
set Mosquitto publish cmd/HAB-Display-01/lednr 23;

statt der 23 die Variable $min verwende, in etwa so

set Mosquitto publish cmd/HAB-Display-01/lednr $min;
Nur der Vollständigkeit halber, was prinzipiell auch geht:
set Mosquitto publish cmd/HAB-Display-01/lednr {($min)}
Diese Form nennt sich set magic (siehe commandref). Meist ist es besser, den kompletten Ausführungsteil in Perl zu setzen.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz