Tasmota GU10 LED Lampen

Damit unser Teich am Abend so richtig in Szene gesetzt wird, gibt es jetzt eine färbige Beleuchtung.

Der erste Versuch mit 12V Spots und einem Trafo im Freien hat nicht das gewünschte Ergebnis geliefert, daher wurde alles auf 230V GU10 Lampen geändert. Um auch Farbe ins Spiel zu bringen, wurden bereits mit tasmota geflashte GU10 LED-Lampen von athom besorgt.

Der erste Schritt ist wie bei allen tasmota Geräten gleich. Zuerst einmal die devices ins eigene WLAN bringen, dann die Verbindung zum MQTT Broker herstellen und dann noch eine statische IP Adresse vergeben. Ach ja, die neueste Version (derzeit 9.5.0) wird natürlich auch noch aufgespielt.

Da es sich um 3 Lampen handelt, macht es natürlich Sinn, diese auch gemeinsam anzusteuern. Dafür gibt es bei tasmota die Möglichkeit mit GroupTopics zu arbeiten.

Es wird also in der Console der zu verbindenden Geräte jeweils das gleiche GroupTopic angelegt, ich nenne es BridgeLight, den die Beleuchtung ist auf der Brücke montiert.
Um Device Groups zu erlauben, muss auf jedem device die Option 85 eingeschalten werden.

# tasmota console

grouptopic BridgeLight
SetOption85 1

Funktioniert perfekt, wenn man jetzt eine Lampe einschaltet, dann schalten sich auch die anderen beiden ein. Wechselt man zu einer bestimmten Farbe, so schalten alle drei Lampen auf diese Farbe.

Das einzige, das nicht synchron funktioniert sind die verschieden Schema, was bei einer zufälligen Farbauswahl ja ok ist, aber wenn man die Farben automatisch synchron wechseln lassen möchte, dann ist das noch nicht die richtige Lösung.

Daher habe ich beschlossen die gleichzeitige Ansteuerung der Lampen mit einer kleinen Programmierung im OH3 selber zu machen. Das hat auch den Vorteil, dass ich zusätzlich jede Lampe auch eigenständig ansteuern kann.
Also die SetOption85 wieder auf 0 stellen.

Da ich die Ansteuerung über MQTT machen möchte habe ich folgende Channels angelegt. Das Ganze natürlich mal 3, also für jede Lampe, das Gleiche gilt auch für die items, dort gibt es auch welche für die Gruppensteuerung. Da es nur ein topic gibt über das man die Lampenfarben, etc. steuern kann und ort ein JSON Format erwartet wird, muss dieses in der Regel zusammengebaut werden. Einige Beispiele sind unten angegeben.

// things file
 Thing topic tasmota12 "RGBW GU10 athom LED Lampe"@ "Garten"  {     
 Channels:        
   Type switch : t12Power  "t12 Power"            
     [stateTopic="stat/tasmota12/POWER", 
      commandTopic="cmnd/tasmota12/POWER",
      on="ON", off="OFF"]                                                                     
   Type string : t12Status  "t12 status"   
     [commandTopic="cmnd/tasmota12/Status" ] 
   Type string : t12Dimmer  "t12 Dimmer" 
     [stateTopic="stat/tasmota12/STATE", 
      commandTopic="cmnd/tasmota12/Dimmer", 
      transformationPattern="JSONPATH:$.Dimmer"]
   Type string : t12Dimmer_result "t12 Dimmer"
     [stateTopic="stat/tasmota12/RESULT", 
      transformationPattern="JSONPATH:$.Dimmer"]
   Type string : t12State "t12 state"
     [stateTopic="stat/tasmota12/STATUS", 
      commandTopic="cmnd/tasmota12/STATUS"] 
   Type colorHSB  : t12Color "t12 Farbe" 
     [stateTopic="tele/tasmota12/HSBColor", 
      commandTopic="cmnd/tasmota12/HSBColor" ]
            
   // CT 153=cold bis 500=warm
   Type number : t12CT "t12 Color Temperature" 
     [stateTopic="tele/tasmota12/STATE", 
      commandTopic="cmnd/tasmota12/CT", 
      transformationPattern="JSONPATH:$.CT"]
   Type number : t12CT_result "t12 Color Temperature" 
     [stateTopic="stat/tasmota12/RESULT", 
      transformationPattern="JSONPATH:$.CT"]

   
    Type number : t12White "t12 White" 
     [stateTopic="stat/tasmota12/STATE", 
      commandTopic="cmnd/tasmota12/White", 
      transformationPattern="JSONPATH:$.White" ]
    Type number : t12White_result    "t12 White"   
     [stateTopic="stat/tasmota12/RESULT", 
      transformationPattern="JSONPATH:$.White" ]

    Type string : t12StatusModul     "t12 tasmota Modul"     
      [stateTopic="tele/tasmota12/INFO1", 
       transformationPattern="JSONPATH:$.Module"] 
    Type datetime : t12StatusZeit    "t12 Zeit"              
      [stateTopic="tele/tasmota12/STATE", 
       transformationPattern="JSONPATH:$.Time"] 
    Type string : t12Hostname        "t12 Hostname"          
      [stateTopic="stat/tasmota12/STATUS5",
       transformationPattern="JSONPATH:$.StatusNET.Hostname"] 
    Type string : t12IP              "t12 IP Adresse"        
      [stateTopic="stat/tasmota12/STATUS5",
       transformationPattern="JSONPATH:$.StatusNET.IPAddress"] 
    Type string : t12WiFiSSID        "t12 SSID"              
      [stateTopic="tele/tasmota12/STATE",
       transformationPattern="JSONPATH:$.Wifi.SSId"] 
    Type string : t12WiFiRSSI        "t12 RSSI"             
      [stateTopic="tele/tasmota12/STATE", 
       transformationPattern="JSONPATH:$.Wifi.RSSI"]
    Type string : t12WiFiSignal      "t12 Signal"           
      [stateTopic="tele/tasmota12/STATE", 
       transformationPattern="JSONPATH:$.Wifi.Signal"]
            
    Type number : t12Scheme          "t12 Schema"            
      [stateTopic="stat/tasmota12/RESULT", 
       commandTopic="cmnd/tasmota12/Scheme", 
       transformationPattern="JSONPATH:$.Scheme"]
    Type number : t12Speed           "t12 Speed"            
      [stateTopic="stat/tasmota12/RESULT", 
       commandTopic="cmnd/tasmota12/Speed", 
       transformationPattern="JSONPATH:$.Speed"]
    }

Wie man bei einigen items sieht, gibt es zwei channels. Das bringt den Vorteil, dass die Information, die zuerst kommt auf das item übertragen wird. Das result topic wird z.B. nur geschickt, nachdem etwas published wurde.

// items file

// Gruppensteuerung für die 3 GU10 Lampen unter der Brücke
Switch g1Power        "g1 Power"    <switch>        
String g1Dimmer       "g1 Dimmer [%d %%]" ["Lighting"]                   
Color  g1Color        "g1 Farbe RGBCW" <rgb>        
Number g1CT           "g1 Color Temperature"        
Number g1White        "g1 White"                    
Number g1Scheme       "g1 Scheme"                   
Number g1Speed        "g1 Speed"                    

// athom GU10 LED Lampe
Switch t12Power        "t12 Power"    <switch>             
  {channel="mqtt:topic:mosquitto:tasmota12:t12Power" }
String t12Status       "t12 Status"                        
{channel="mqtt:topic:mosquitto:tasmota12:t12Status"} 
String t12Dimmer       "t12 Dimmer[%d %%]" ["Lighting"]    
{channel="mqtt:topic:mosquitto:tasmota12:t12Dimmer", channel="mqtt:topic:mosquitto:tasmota12:t12Dimmer_result"} 
Color  t12Color        "t12 Farbe RGBCW" <rgb>             
{channel="mqtt:topic:mosquitto:tasmota12:t12Color"}
Number t12CT           "t12 Color Temperature"             
{channel="mqtt:topic:mosquitto:tasmota12:t12CT", channel="mqtt:topic:mosquitto:tasmota12:t12CT_result"}
Number t12White        "t12 White"                         
{channel="mqtt:topic:mosquitto:tasmota12:t12White", channel="mqtt:topic:mosquitto:tasmota12:t12White_result"}
DateTime t12StatusZeit "t12 Zeit"                          
{channel="mqtt:topic:mosquitto:tasmota12:t12StatusZeit"}
String t12Hostname     "t12 Hostname"    (gHostname)       
{channel="mqtt:topic:mosquitto:tasmota12:t12Hostname" }
String t12IP           "t12 IP"          (gIP)             
{channel="mqtt:topic:mosquitto:tasmota12:t12IP" }
String t12WiFiSSID     "t12 SSID"        (gSSID)           
{channel="mqtt:topic:mosquitto:tasmota12:t12WiFiSSID" }
String t12WiFiRSSI     "t12 RSII"        (gRSII)           
{channel="mqtt:topic:mosquitto:tasmota12:t12WiFiRSSI" }
String t12WiFiSignal   "t12 Signal"      (gSignal)         
{channel="mqtt:topic:mosquitto:tasmota12:t12WiFiSignal" }
String t12Modul        "t12 tasmota Modul"                 
{channel="mqtt:topic:mosquitto:tasmota12:t12Modul" }
Number t12Scheme       "t12 Scheme"                        
{channel="mqtt:topic:mosquitto:tasmota12:t12Scheme" }
Number t12Speed        "t12 Speed"                        
 {channel="mqtt:topic:mosquitto:tasmota12:t12Speed" }
// sitemap file
Frame label="Teichbeleuchtung GU10 LED Gruppensteuerung"  {    
  Switch item=g1Power label="LED Power"
  Switch item=g1Color label="Farben []"	       icon="rgb"
         mappings=["0,100,100"="rot", "128,100,100"="grün", "256,100,100"="blau", "60,100,100"="gelb"]
  Slider item=g1Dimmer  label="Dimmer[%d %%]"  icon="light"	
  Colorpicker item=g1Color label="RGB"         icon="colorpicker"

  Slider item=g1White   label="Weiß [%d %%]"   icon="light-0"  minValue=1 maxValue=100  
  Slider item=g1CT      label="Farbtemeratur [%d]" icon="light-60" minValue=153 maxValue=500  
             	     
  Selection item=g1Scheme  label="g1 Scheme [%d]"  icon="video" 
    mappings=[0 = "single color for LED light (default)",
              1 = "start wake up sequence (same as Wakeup)",
              2 = "cycle up through colors using Speed option",
              3 = "cycle down through colors using Speed option",
              4 = "random cycle through colors using Speed and Fade"]
  Slider item=g1Speed         label="g1 Speed [%d]"       icon="motion" minValue=1 maxValue=40   
	
  Text label="LED Garagenseite" icon="rgb" {
  Frame label="Brücke Teichbeleuchtung GU10 LED Garagenseite"  {    // Lampe Garagenseite
    Switch item=t12Power 		label="Tasmota t12 Power" 
    Switch item=t12Color   	    label="Farben []"     icon="rgb" 	mappings=["0,100,100"="rot", "128,100,100"="grün", "256,100,100"="blau", "60,100,100"="gelb"]
    Slider item=t12Dimmer  	    label="Dimmer"        icon="light"
    Colorpicker item=t12Color 	label="RGB"           icon="colorpicker"
    Slider item=t12CT           label="Farbtemeratur" icon="light-0"  minValue=153 maxValue=500  
    Slider item=t12White        label="Weiß"          icon="light-60" minValue=1 maxValue=100  
    Selection item=t12Scheme    label="t12 Scheme"    icon="video" 
      mappings=[0 = "single color for LED light (default)",
                1 = "start wake up sequence (same as Wakeup)",
                2 = "cycle up through colors using Speed option",
                3 = "cycle down through colors using Speed option",
                4 = "random cycle through colors using Speed and Fade"]
    Slider item=t12Speed        label="t12 Speed" icon="motion" minValue=1 maxValue=40   
  }	
}
rule "Teichbeleuchtung Power"
when 
  Item g1Power changed 
then
  t12Power.sendCommand(g1Power.state.toString)
  t13Power.sendCommand(g1Power.state.toString)
  t14Power.sendCommand(g1Power.state.toString)
end 

rule "Teichbeleuchtung Dimmer"
when 
  Item g1Dimmer changed 
then
  g1Power.sendCommand(ON)
  t12Dimmer.sendCommand(g1Dimmer.state.toString)
  t13Dimmer.sendCommand(g1Dimmer.state.toString)
  t14Dimmer.sendCommand(g1Dimmer.state.toString)
end 

rule "sh3BtnRed pressed"
when
  Item sh3BtnColor changed to 1  // red
then
  var jsonString = "{"
      jsonString = jsonString + "\"turn\":" + "\"on\""
      jsonString = jsonString + ",\"red\":" + " 255"
      jsonString = jsonString + ",\"green\":" + " 0" 
      jsonString = jsonString + ",\"blue\":" + " 0"
      jsonString = jsonString + ",\"gain\": 100"
      jsonString = jsonString + ",\"effect\": 0" 
      jsonString = jsonString + "}"
      sh3Set0.sendCommand(jsonString)
end
CategoriesOpenHAB

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Begin typing your search above and press return to search. Press Esc to cancel.