Seite 1 von 1

MQTT Topic senden rule oder nicht?

Verfasst: 4. Okt 2020 17:46
von djuscha
Ich möchte über MQTT meine GyverLampe einschalten und ausschalten. Dazu muss ich auf den Topic

Code: Alles auswählen

LedLamp/LedLamp_00295919/cmnd

entweder P_ON oder PN_OFF senden .Über MQTT Explorer geht das.
Das möchte ich jetzt über Openhab machen
ist es zwingend das ich das über Rules mache oder würde das nur über Konfiguration von Thing und Ithem gehen
Über rules hab ich das hinbekommen

Code: Alles auswählen

val actions = getActions("mqtt","mqtt:broker:mosquitto")

rule "Gyver Lampe"
when
 Item AqaraTastSH1 received update double
    then
        if(LampSS.state == "P_OFF")actions.publishMQTT("LedLamp/LedLamp_00295919/cmnd","P_ON")
    else  actions.publishMQTT("LedLamp/LedLamp_00295919/cmnd","P_OFF")

end

Code: Alles auswählen

Thing topic LedLamp  "GyverLamp"(mqtt:broker:mosquitto)  @ "MQTT"  {

      Channels:
          
          Type string : devicestate"GyverLamp State" 
          [stateTopic="LedLamp/LedLamp_00295919/state"]
  
          Type string : switch"Schalter"            
            [commandTopic="LedLamp/LedLamp_00295919/cmnd", on="P_ON" , off="P_OFF" ,stateTopic="LedLamp/LedLamp_00295919/cmnd"]
 
          
}

Code: Alles auswählen

String	Lamp	"Gyver Lampe State"     {channel="mqtt:topic:mosquitto:LedLamp:devicestate"}
Switch  LampS   "Gyver Lampe "          {channel="mqtt:topic:mosquitto:LedLamp:switch"}
String  LampSS  "Gyver Lampe "          {channel="mqtt:topic:mosquitto:LedLamp:switch"}
aber über den Switch LampS "Gyver Lampe " geht das nicht.

MQTT Topic senden rule oder nicht?

Verfasst: 4. Okt 2020 23:42
von udo1toni
Du musst als Type switch nehmen, ebenso als Itemtyp.

Außerdem ist switch im Thing ein Schlüsselwort. NIEMALS Schlüsselworte als Namen verwenden!

Gesendet von iPad mit Tapatalk

Re: MQTT Topic senden rule oder nicht?

Verfasst: 5. Okt 2020 20:30
von djuscha
meinst du das so

Code: Alles auswählen

Thing topic LedLamp  "GyverLamp"(mqtt:broker:mosquitto)  @ "MQTT"  {
      Channels:
          Type string : devicestate"GyverLamp State" 
          [stateTopic="LedLamp/LedLamp_00295919/state"]
          Type switch: switch"Schalter"            
           [commandTopic="LedLamp/LedLamp_00295919/cmnd", on="P_ON" , off="P_OFF" ,stateTopic="LedLamp/LedLamp_00295919/cmnd"
          
das ist doch Switch Item Switch LampS ?

Code: Alles auswählen

String	Lamp	"Gyver Lampe State"     {channel="mqtt:topic:mosquitto:LedLamp:devicestate"}
Switch  LampS   "Gyver Lampe "          {channel="mqtt:topic:mosquitto:LedLamp:switch"}
Switch  LampSS  "Gyver Lampe "          {channel="mqtt:topic:mosquitto:LedLamp:switch"}
Außerdem ist switch im Thing ein Schlüsselwort. NIEMALS Schlüsselworte als Namen verwenden!
das verstehe ich nicht :?

Re: MQTT Topic senden rule oder nicht?

Verfasst: 6. Okt 2020 15:47
von udo1toni
Wie gesagt, das Schlüsselwort switch ist reserviert. Das DARFST Du nicht für andere Dinge verwenden!
Thing:

Code: Alles auswählen

Thing topic LedLamp  "GyverLamp"(mqtt:broker:mosquitto)  @ "MQTT"  {
    Channels:
    Type string : devicestate "GyverLamp State" [ stateTopic="LedLamp/LedLamp_00295919/state"]
    Type switch : sw "Schalter"                        [ commandTopic="LedLamp/LedLamp_00295919/cmnd", on="P_ON" , off="P_OFF" ]
}
Items:

Code: Alles auswählen

String  Lamp "Gyver Lampe State" {channel="mqtt:topic:mosquitto:LedLamp:devicestate"}
Switch LampS "Gyver Lampe"       {channel="mqtt:topic:mosquitto:LedLamp:sw"}
Je nachdem, was da als Status zurückgeliefert wird, kannst Du auch auf das 2. Item verzichten. aber dazu müsstest Du schon vollständige Infos liefern ;)

Re: MQTT Topic senden rule oder nicht?

Verfasst: 11. Okt 2020 14:22
von djuscha
Ups das hatte ich bei allen Sonoffs so drin

Code: Alles auswählen

Type switch: switch"Schalter"  
und es ging , hatte auch keine Fehlermeldungen :roll:
hab jetzt überall geändert auf swit

Code: Alles auswählen

Type switch: swit"Schalter"
gibt es noch andere Schlüsselworte die reserviert sind?

Re: MQTT Topic senden rule oder nicht?

Verfasst: 11. Okt 2020 22:36
von udo1toni
ALLE Schlüsselwörter sind reserviert. Das ist ein Teil der Bedeutung des Wortes "Schlüsselwort" im Kontext der IT ;)

Itemtypen (Switch, String, Number, Rollershutter, Contact usw.), die Addonbezeichnungen der installierten OH1 Addons (z.B. http, ntp, weather usw.), das Wort "channel"... Thing-Schlüsselworte (Bridge, Thing, Type, switch, rollershutter, contact) und natürlich alle Befehle und Begriffe in den Rules (rule, when, then, end, Item, Member, of, changed, if, else, Timer, Boolean, Integer, int ...) Die Liste ist sehr lang, aber eigentlich sollte da jeder selbst drauf kommen können, dass man ein Wort, welches eine spezielle Bedeutung hat, nicht einfach für eine andere Bedeutung verwenden darf.
Um nicht in Versuchung zu geraten, sollte man grundsätzlich auch darauf verzichten, eine anDerE SchReibWeise zu verwenden, nur, weil damit dieses Verbot umgangen wird...

Re: MQTT Topic senden rule oder nicht?

Verfasst: 11. Okt 2020 22:55
von djuscha
Vielen Dank!