Sonoff 3 Kanal Taster

Geflasht oder ungeflasht ...

Moderatoren: Cyrelian, udo1toni

Jojo
Beiträge: 206
Registriert: 5. Mär 2019 21:13
Answers: 2
Wohnort: Ingolstadt

Sonoff 3 Kanal Taster

Beitrag von Jojo »

Servus zusammen,

nach langer Zeit beschäftige ich mich wieder mit Openhab und, ZACK, ein Problem 8-)
Ich habe OH2 auf einen Raspberry 4 am laufen, soweit gut.
Unter anderen hängt die Anlage an einer ( mit Tasmota geflashten ) Steckdose und lässt sich per Switch vom Handy einschalten ( macht sogar meine Frau ).
Nun dachte ich mir, das geht noch besser und habe im Esszimmer einen 3 Kanal Sonoff Taster installiert. Taste 1 macht Licht, klappt auch über Openhab.
Taste 2 soll die Anlage einschalten, DAS klappt nicht. Klar, die Taste ist nicht mit dem Stromnetz verbunden schickt aber eine MQTT Nachricht ins Haus.
Ich zeig euch mal den Code:
In den Things:

Code: Alles auswählen

Type switch : LichtEssZ "Licht Esszimmer"               [stateTopic="stat/tasmotaEssZ/POWER1", commandTopic="cmnd/tasmotaEssZ/POWER1"]
Type switch : Radio "Anlage "                           [stateTopic="stat/tasmotaEssZ/POWER2", commandTopic="cmnd/tasmotaEssZ/POWER2"]
Die Items für den Taster:

Code: Alles auswählen

Switch LichtEssZ    "Licht EssZimmer [MAP(de.map):%S]"            {channel="mqtt:topic:JojoBroker:Sonoff:LichtEssZ" [profile="follow"]}
Switch Radio  "Taster Anlage unten [MAP(de.map):%S]"              { channel="mqtt:topic:JojoBroker:Sonoff:Radio"  [profile="follow"]}
Das dieser Eintrag in den Sitemap:

Code: Alles auswählen

Switch item=LichtEssZ     icon=lightbulb
        Switch item=Radio
Und diese Rule:

Code: Alles auswählen

rule "Radio unten Taster ein 2"
when
    Item Radio changed from OFF to ON                          
then
    power9.sendCommand (ON) 
end

rule "Radio unten Taster aus 2"
when 
    Item Radio changed from ON to OFF
then 
    power9.sendCommand (OFF)
end
Wenn ich den Sitemap Schalter betätige geht die Anlage wenn ich den Taster am Sonoff drücke klackt das Relais im Sonoff aber die Anlage bleibt aus.
Die Konsole vom Taster sagt:
17:20:23.036 MQT: stat/tasmotaEssZ/RESULT = {"POWER2":"ON"}
17:20:23.041 MQT: stat/tasmotaEssZ/POWER2 = ON

MQTT.FX hört auf dem Kanal: stat/tasmotaEssZ/POWER2 ein OF oder ein OFF, je nachdem

So, viel Text und wahrscheinlich wird jemand ( sehr wahrscheinlich Udo ) mich mit einem Satz in eine tiefe Depression stürzen weil die Lösung so simpel ist.
Dennoch vielen Dank im Voraus

Vielen Dank im Voraus
--

Gruß

Jojo

Benutzeravatar
udo1toni
Beiträge: 13859
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Sonoff 3 Kanal Taster

Beitrag von udo1toni »

Leider sind die Informationen so nicht ausreichend.
Es gibt auch ein paar Seltsamkeiten in der Konfiguration.

Aber die erste Frage wäre, was passiert, wenn Du den Taster 1 und den Taster 2 drückst (und zwar im Log von openHAB).

Auf den ersten Blick sind keine Fehler erkennbar.
Da es sich um ein openHAB2 handelt und Du augenscheinlich die Konfiguration über Textdatei vorgenommen hast: Hast Du openHAB schon mal neu gestartet?

Hintergrund: Evtl. hast Du zunächst den ersten Channel angelegt, nachdem dieser funktionierte dann den zweiten. Das geht dann schief, weil es im Update Mechanismus , die things-Dateien betreffend einen Fehler gibt.

Bezüglich der Rules gibt es Verbesserungspotential:

Code: Alles auswählen

rule "Radio unten Taster ein/aus 2"
when
    Item Radio changed
then
    power9.sendCommand(newState.toString) 
end
Es ginge auch komplett ohne Rule, wichtig ist dafür lediglich, dass der Parameter "follow" korrekt verwendet wird. Leider fehlt die Anbindung des Radios (power9), so dass ich nicht zeigen kann, wie es richtig funktioniert.

Oder man möchte das Radio nicht nur über den Schalter an der Wand schalten, dann wäre es sinnvoll, dass der Schalter immer den Status des Radios hat:

Code: Alles auswählen

rule "Radio unten Taster ein/aus"
when
    Item Radio changed
then
    if(power9.state != newState)
        power9.sendCommand(newState.toString) 
end

rule "Radio unten Status an Taster"
when 
    Item power9 changed
then 
    if(Radio.state != newState)
        Radio.sendCommand(newState.toString)
end
Ändert sich der Status des Tasters, so wird der neue Status als Befehl an das Radio geschickt, falls der aktuelle Status vom neuen Status abweicht.
Ändert sich der Status des Radios, so wird der neue Status als Befehl an den Taster geschickt, falls der aktuelle Status vom neuen Status abweicht.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Jojo
Beiträge: 206
Registriert: 5. Mär 2019 21:13
Answers: 2
Wohnort: Ingolstadt

Re: Sonoff 3 Kanal Taster

Beitrag von Jojo »

Danke Udo,

kann gerade die Infos nicht bringen, melde ich zügig.
--

Gruß

Jojo

Jojo
Beiträge: 206
Registriert: 5. Mär 2019 21:13
Answers: 2
Wohnort: Ingolstadt

Re: Sonoff 3 Kanal Taster

Beitrag von Jojo »

Guten Morgen,

im Log von OH passiert nichts, wenn ich die Taster drücke :|

Neu gestartet habe ich die ganze Gaudi schon mehrfach.

Vielen Dank für deinen Einsatz, Udo !!!
--

Gruß

Jojo

Benutzeravatar
udo1toni
Beiträge: 13859
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Sonoff 3 Kanal Taster

Beitrag von udo1toni »

Dann ist das Thing nicht online.

Es kann sein, dass die Things-Datei fehlerhaft ist (fehlende Klammer, ein Komma zu viel... irgend so ein sch**ß kleiner Tippfehler) irgendwo in der Datei, schon funktioniert die Datei als Ganzes nicht mehr.
Das sollte bei einem Neustart allerdings im Log sichtbar werden (file xyz.things has errors, therefor ignoring it)
Oder das Thing kollidiert mit einem anderen Thing (gerne auch dateiübergreifend oder auch über die UI angelegt, vielleicht auch eines, was "früher mal" vorhanden war)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Jojo
Beiträge: 206
Registriert: 5. Mär 2019 21:13
Answers: 2
Wohnort: Ingolstadt

Re: Sonoff 3 Kanal Taster

Beitrag von Jojo »

Servus Udo,

ich habe ein Thing für das komplette MQTT. Und das ist online. Beim Start kommt auch kein Fehler im Log.
Würde mir nicht auch Visual Studio Code einen Fehler melden ?
Was ich gerade feststelle: Wenn ich in der Paper UI das Thing update gibt es eine Fehlermeldung (Error 409 conflict) Oder kommt der, weil ich es als Textdatei angelegt habe ?
Macht es Sinn dir Broker Connection mal zu löschen ?
Oder das ganze Thing ?
Ich habe nur irgendwie in Erinnerung, dass es schwieriger ist für jedes Topic ein Thing anzulegen ??
Fragen über Fragen ;-)

Stress dich nicht, ich gehe jetzt mal in den Biergarten
--

Gruß

Jojo

Benutzeravatar
udo1toni
Beiträge: 13859
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Sonoff 3 Kanal Taster

Beitrag von udo1toni »

Zeig mal bitte das komplette Thing, nicht nur den Auszug.

Gewöhnlich sollte man pro echtem Gerät ein Thing anlegen. Der Wandtaster sollte also ein Thing sein, mit 3 + x Channels, eben für jeden echten Kanal am Taster ein Channel in openHAB, plus evtl. weitere Channel, um noch andere Daten einzusammeln (Wifi Erreichbarkeit, Laufzeit, whatever, was halt interessiert...)
Es ist auch nicht weiter schwer, das so anzulegen, gerade über die Textdatei ist das eigentlich ein Klacks.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Jojo
Beiträge: 206
Registriert: 5. Mär 2019 21:13
Answers: 2
Wohnort: Ingolstadt

Re: Sonoff 3 Kanal Taster

Beitrag von Jojo »

Guten Morgen,

Dein Wunsch sei mir Befehl:

Code: Alles auswählen

Bridge mqtt:broker:JojoBroker [
host="192.168.65.4", 
//username="XXXX", 
//password ="YYYYY", 
secure="false"]{

Thing topic espkeller "ESP8266 Keller" @ "ESP8266" {
    Channels:
// Keller und außen
    Type string : TempKeller "Kellerabgang "        [ stateTopic="tele/TempSensUG/SENSOR", transformationPattern="JSONPATH:$.DS18B20-2.Temperature"]
    Type string : TempTerrasse "Terrasse"           [ stateTopic="tele/TempSensUG/SENSOR", transformationPattern="JSONPATH:$.DS18B20-1.Temperature"]       
    //Type string : TempKellerInnen "Keller Innen " [ stateTopic="tele/Temperaturen/SENSOR", transformationPattern="JSONPATH:$.DS18B20-3.Temperature"]
    
 }
Thing topic espunten "ESP8266 Unten"@ "ESP8266"{
    Channels:
// Erdgeschoß    
    Type string : TempGang "Gang EG "             [ stateTopic="tele/TempSensEG/SENSOR", transformationPattern="JSONPATH:$.DS18B20.Temperature"]
    Type string : TempWohnz "Temp Wohnzimmer "    [ stateTopic="tele/TempSensEG/SENSOR", transformationPattern="JSONPATH:$.DHT11-14.Temperature"]
    Type string : TempKeller2 "Keller2 "          [ stateTopic="tele/TempSensEG/SENSOR", transformationPattern="JSONPATH:$.AM2301-12.Temperature"]
    Type string : HumKeller "Luftfeuchte Keller " [ stateTopic="tele/TempSensEG/SENSOR", transformationPattern="JSONPATH:$.AM2301-12.Humidity"]
    Type string : HumEG "Luftfeuchte Wohnzimmer " [ stateTopic="tele/TempSensEG/SENSOR", transformationPattern="JSONPATH:$.DHT11-14.Humidity"]
 }    

Thing topic espoben "ESP8266 Oben" @"ESP8266"{
    Channels:
// 1.ter Stock    
    Type string : TempSchlaf "Schlafzimmer "                [ stateTopic="tele/TempSensOG/SENSOR", transformationPattern="JSONPATH:$.DS18B20-1.Temperature"]
    Type string : TempBuero "Büro          "                [ stateTopic="tele/TempSensOG/SENSOR", transformationPattern="JSONPATH:$.DS18B20-2.Temperature"]
    Type string : TempBuero2 "Büro 2       "                [ stateTopic="tele/TempSensOG/SENSOR", transformationPattern="JSONPATH:$.AM2301.Temperature"]
    Type string : HumBuero "Luftfeuchte    "                [ stateTopic="tele/TempSensOG/SENSOR", transformationPattern="JSONPATH:$.AM2301.Humidity"]
 }

Thing topic espgarage "ESP Garage" @ "ESP8266"{
    Channels:
// auf der Garage
    Type string : TempGA "Garage"                           [stateTopic="tele/TempSensGA/SENSOR", transformationPattern="JSONPATH:$.DS18B20.Temperature"]
 }

Thing topic Steckdose1 "Steckdose 1" @ "Gosund" {
    Channels:
// Steckdose 1 192.168.65.91
    Type switch : power1  "Steckdose 1"                   [ stateTopic="Stat/Steckdose1/POWER" , commandTopic="cmnd/Steckdose1/POWER" ]
    Type number : ptotal1 "Verbrauch total 1"             [ stateTopic="tele/Steckdose1/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Total"]
    Type number : paktuell1 "aktueller Verbrauch 1"       [ stateTopic="tele/Steckdose1/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Current"]
 }

Thing topic Steckdose2 "Steckdose 2" @"Gosund"{
    Channels:
//Steckdose Musik 192.168.65.92    
    Type switch : powermusik  "Power Musik"                  [ stateTopic="stat/Steckdose2/POWER" , commandTopic="cmnd/Steckdose2/POWER"]
    Type number : ptotalmusik "Verbrauch total Musik"        [ stateTopic="tele/Steckdose2/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Total"]    
    Type number : paktuellmusik "aktueller Verbrauch  Musik" [ stateTopic="tele/Steckdose2/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Current"]  
 } 

Thing topic Steckdose3 "Steckdose 3" @ "Gosund" {
    Channels:
// Steckdose 3 192.168.65.93
    Type switch : power3     "Steckdose 3"                      [ stateTopic="Stat/Steckdose3/POWER1" , commandTopic="cmnd/Steckdose3/POWER1" ]
    Type switch : power3USB  "Steckdose 3 USB Port"             [ stateTopic="tele/Steckdose3/POWER2" , commandTopic="cmnd/Steckdose3/POWER2" ]
    Type number : ptotal3 "Verbrauch total 3"                   [ stateTopic="tele/Steckdose3/SENSOR",  transformationPattern="JSONPATH:$.ENERGY.Total"]
    Type number : paktuell3 "aktueller Verbrauch 3"             [ stateTopic="tele/Steckdose3/SENSOR",  transformationPattern="JSONPATH:$.ENERGY.Current"]
    Type string : statepower3 "aktueller Schaltzustand 3"       [ stateTopic="tele/Steckdose3/STATE",   transformationPattern="JSONPATH:$.POWER1"]
    Type number : Leistung    " aktuelle Watt"                  [ stateTopic="tele/Steckdose3/SENSOR",  transformationPattern="JSONPATH:$.ENERGY.Power"]
 }
Thing topic Steckdose4 "Steckdose 4" @ "Gosund" {
    Channels:
//Steckdose PC 192.168.65.94
    Type switch : powerpc "Power PC"                        [ stateTopic="stat/Steckdose4/POWER" , commandTopic="cmnd/Steckdose4/POWER" ]
    Type switch : power4USB  "Steckdose 4 USB Port"         [ stateTopic="Stat/Steckdose4/POWER2" , commandTopic="cmnd/Steckdose4/POWER2" ]
    Type number : ptotalpc "Verbrauch total PC"             [ stateTopic="tele/Steckdose4/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Total"]
    Type number : paktuellpc "aktueller Verbrauch PC"       [ stateTopic="tele/Steckdose4/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Current"]
 }

Thing topic Steckdose5 "Steckdose 5" @ "Gosund" {
    Channels:
//Steckdose Fernseher 192.168.65.95
	Type switch : powertv     "Power TV"                     [ stateTopic="stat/Steckdose5/POWER", commandTopic="cmnd/Steckdose5/POWER"  ]
    Type switch : power5USB  "Steckdose 5 USB Port"          [ stateTopic="Stat/Steckdose5/POWER2" , commandTopic="cmnd/Steckdose5/POWER2" ]
    Type number : ptotaltv    "Verbrauch total TV "          [ stateTopic="tele/Steckdose5/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Total"]
    Type number : paktuelltv "aktueller Verbrauch TV"        [ stateTopic="tele/Steckdose5/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Current"]
 }

Thing topic Steckdose6 "Steckdose 6" @ "Gosund" {
    Channels:
//Steckdose 192.168.65.96
    Type switch : power6 "Steckdose 6    "                  [ stateTopic="stat/Steckdose6/POWER", commandTopic="cmnd/Steckdose6/POWER"] 
    Type switch : power6USB  "Steckdose 6 USB Port"         [ stateTopic="Stat/Steckdose6/POWER2" , commandTopic="cmnd/Steckdose6/POWER2" ]  
    Type number : ptotal6    "Verbrauch total 6 "           [ stateTopic="tele/Steckdose6/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Total"]
    Type number : paktuell6 "aktueller Verbrauch 6"         [ stateTopic="tele/Steckdose6/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Current"]
 }
 
 Thing topic SteckdosenleisteEG "Steckdosenleiste" @ "Gosund" {
 // Steckdosenleiste Anlage unten 192.168.65.111
    Channels:
    Type switch: power7 "TV unten"                          [ stateTopic="stat/SteckdosenleisteEG/POWER1", commandTopic="cmnd/SteckdosenleisteEG/POWER1"]
    Type switch: power8 "CD und Phono unten"                [ stateTopic="stat/SteckdosenleisteEG/POWER2", commandTopic="cmnd/SteckdosenleisteEG/POWER2"]
    Type switch: power9 "Musik unten"                       [ stateTopic="stat/SteckdosenleisteEG/POWER3", commandTopic="cmnd/SteckdosenleisteEG/POWER3"]
    Type switch: power7USB "Steckdosenleiste USB"           [ stateTopic="stat/SteckdosenleisteEG/POWER4", commandTopic="cmnd/SteckdosenleisteEG/POWER4" ]
    Type number : ptotal7   "Verbrauch total Leiste "       [ stateTopic="tele/SteckdosenleisteEG/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Total"]
    Type number : paktuell7 "aktueller Verbrauch Leiste"    [ stateTopic="tele/SteckdosenleisteEG/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Current"]
 }


Thing topic TasterDesk "Schalter und Taster" @ "Schalter/Taster" {
    Channels:
// Taster 1 PC Büro
   Type string : Taster1 "Köpfe und Co. ein"           [stateTopic="stat/TasterBuero/POWER1"] 
   Type switch : Taster2 "Anlage ein/aus"              [stateTopic="stat/TasterBuero/POWER2", transformationPattern="JSONPATH:$" ] 
   //Type switch : taster4 "PC ein/aus"                  [stateTopic="stat/TasterBuero/POWER4", commandTopic="cmnd/TasterBuero/POWER4" ] 
   
} 

Thing topic Anlage "Steuerung Anlage " @ "Anlage"  {
// Pearl ucc 192.168.65.100
   Channels:
    Type string : Verstein "Verstärker an"          [stateTopic="stat/IRWLAN2/Result", commandTopic="cmnd/IRWLAN/IRSEND"]
    Type string : Protocol "Protokoll"              [stateTopic="tele/IRWLAN2/RESULT", transformationPattern="JSONPATH:$.IrReceived.Data"]
    Type string : Befehl "Befehl"                   [stateTopic="tele/IRWLAN2/RESULT", transformationPattern="JSONPATH:$.IrReceived.Data"]
    //Type string : DataLSB "Daten LSB"               [stateTopic="tele/IRWLAN/RESULT", transformationPattern="JSONPATH:$.IrReceived.DataLSB"]
// Pearl ucc 192.168.18.106     
    Type string : Befehlo "Befehl oben"             [stateTopic="tele/IRWLAN2/RESULT", transformationPattern="JSONPATH:$.IrReceived.Data"]
  }

Thing topic Shellies "Shelly WLAN Schalter" @ "Schalter/Taster"  {
// Shelley Licht Esszimmer 192.168.65.121
   Channels:
    //Type switch : ShellyESSZ "Licht Esszimmer"        [stateTopic="Shellies/shellyESSZ/relay/0", commandTopic="Shellies/shellyESSZ/relay/0/command"]
    Type switch : ShellyBuero "Licht Büro"            [stateTopic="Shellies/shellyBuero/relay/0", commandTopic="Shellies/shellybuero/relay/0/command"]
    Type switch : ShellyKeller "Raspberry Keller"     [stateTopic="Shellies/shellyKeller/relay/0", commandTopic="Shellies/shellyKeller/relay/0/command"]
    
  }
Thing topic Sonoff "Sonoff" @ "Schalter/Taster"{
    // Sonoff Wandschalter
    Channels:
    Type switch : LichtEssZ "Licht Esszimmer"               [stateTopic="stat/tasmotaEssZ/POWER1", commandTopic="cmnd/tasmotaEssZ/POWER1"]
    Type switch : Radio "Anlage "                           [stateTopic="stat/tasmotaEssZ/POWER2", commandTopic="cmnd/tasmotaEssZ/POWER2"]
    Type switch : Sonoff2 "Taster 3"                        [stateTopic="stat/tasmotaEssZ/POWER3", commanTopic="cmnd/tasmotaEssZ/POWER3"]
}
Thing topic Entfernung "Entfernungsmesser"{
      //ESP8266 Tasmota HC-SR04 1-3
   Channels:
      Type string : Laenge1 "TOF Sensor 1"                  [stateTopic="tele/Laser1/SENSOR", transformationPattern="JSONPATH:$.VL53L0X_1.Distance"]
  }
Thing topic Wasser "Wassermelder im Keller"{
    //ESP82366 Tasmota Wasser im Keller
    Channels:
    Type number : Waschkeller "Wassermelder im Waschkeller" [stateTopic="tele/FeuchteKeller/SENSOR", transformationPattern="JSONPATH:$.ANALOG.A0"]

  } 
Thing topic Thorens "Umschalter Plattenspieler" @ "Schalter/Taster"{
   //ESP8266 Tasmota 192.168.65.134
   Channels:
    //Type string : PowerD1 "Taster links"                [stateTopic="stat/Dreher/RESULT", transformationPattern="JSONPATH:$.POWER1"]
    Type string : PowerD2 "Taster rechts"               [stateTopic="stat/Dreher/RESULT", transformationPattern="JSONPATH:$.POWER2"]
    Type switch : PowerD3 "LED links"                   [stateTopic="stat/Dreher/POWER3", commandTopic="cmnd/Dreher/POWER3"]
    Type switch : PowerD4 "LED rechts"                  [stateTopic="stat/Dreher/POWER4", commandTopic="cmnd/Dreher/POWER4"]
    Type switch : PowerD5 "Umschalt - Relais"           [stateTopic="stat/Dreher/POWER5", commandTopic="cmnd/Dreher/POWER5"]
  }
Thing topic Uhr "Star Wars Uhr"{
    Channels:
    Type number : uhr "Entfernung"                      [stateTopic="home/data/uhr"]
}
}
Wenn ich für jedes Gerät ein Thing anlege, was muss ich beachten ?

Und wieder: Vielen Dank !!!
--

Gruß

Jojo

Benutzeravatar
udo1toni
Beiträge: 13859
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Sonoff 3 Kanal Taster

Beitrag von udo1toni »

Aber Du hast ja schon alle Geräte als einzelne Things angelegt!

An einigen Stellen hast Du vermutlich Tippfehler drin... z.B. Stat anstatt stat an fünf Stellen.
Beim Thing Anlage hast Du teilweise IRWLAN, teilweise IRWLAN2, allerdings in einem Channel gemischt. Es ist eher unwahrscheinlich, dass das korrekt ist.

Beim Thing, mit dem Du Probleme hast, fehlt beim 3. Channel ein d bei commandTopic. Eventuell verursacht das ein Problem mit diesem Thing.

Ich versuche immer, mindestens innerhalb eines Things die Bereiche (Type, Label, Parameter) gleich einzurücken, dann fallen solche Fehler schneller auf. Hier im Forum ist es immens wichtig, möglichst die Tabs durch jeweils vier Leerzeichen zu ersetzen, die Forensoftware verwendet acht Leerzeichen als Einrückung, so dass oftmals die Formatierung komplett verloren geht.

Code: Alles auswählen

Bridge mqtt:broker:JojoBroker [
    host="192.168.65.4",
    // username="XXXX",
    // password ="YYYYY",
    secure="false"
 ] {

    Thing topic espkeller "ESP8266 Keller" @ "ESP8266" {                   // Keller und außen
    Channels:
        Type string : TempKeller      "Kellerabgang"                 [ stateTopic="tele/TempSensUG/SENSOR",   transformationPattern="JSONPATH:$.DS18B20-2.Temperature" ]
        Type string : TempTerrasse    "Terrasse"                     [ stateTopic="tele/TempSensUG/SENSOR",   transformationPattern="JSONPATH:$.DS18B20-1.Temperature" ]
     // Type string : TempKellerInnen "Keller Innen"                 [ stateTopic="tele/Temperaturen/SENSOR", transformationPattern="JSONPATH:$.DS18B20-3.Temperature" ]
        
    }
    Thing topic espunten "ESP8266 Unten"@ "ESP8266" {                      // Erdgeschoß
    Channels:
        Type string : TempGang        "Gang EG"                      [ stateTopic="tele/TempSensEG/SENSOR", transformationPattern="JSONPATH:$.DS18B20.Temperature" ]
        Type string : TempWohnz       "Temp Wohnzimmer"              [ stateTopic="tele/TempSensEG/SENSOR", transformationPattern="JSONPATH:$.DHT11-14.Temperature" ]
        Type string : TempKeller2     "Keller2"                      [ stateTopic="tele/TempSensEG/SENSOR", transformationPattern="JSONPATH:$.AM2301-12.Temperature" ]
        Type string : HumKeller       "Luftfeuchte Keller"           [ stateTopic="tele/TempSensEG/SENSOR", transformationPattern="JSONPATH:$.AM2301-12.Humidity" ]
        Type string : HumEG           "Luftfeuchte Wohnzimmer"       [ stateTopic="tele/TempSensEG/SENSOR", transformationPattern="JSONPATH:$.DHT11-14.Humidity" ]
    }

    Thing topic espoben "ESP8266 Oben" @"ESP8266" {                          // 1.ter Stock
    Channels:
        Type string : TempSchlaf      "Schlafzimmer"                 [ stateTopic="tele/TempSensOG/SENSOR", transformationPattern="JSONPATH:$.DS18B20-1.Temperature" ]
        Type string : TempBuero       "Büro"                         [ stateTopic="tele/TempSensOG/SENSOR", transformationPattern="JSONPATH:$.DS18B20-2.Temperature" ]
        Type string : TempBuero2      "Büro 2"                       [ stateTopic="tele/TempSensOG/SENSOR", transformationPattern="JSONPATH:$.AM2301.Temperature" ]
        Type string : HumBuero        "Luftfeuchte"                  [ stateTopic="tele/TempSensOG/SENSOR", transformationPattern="JSONPATH:$.AM2301.Humidity" ]
    }

    Thing topic espgarage "ESP Garage" @ "ESP8266" {                        // auf der Garage
    Channels:
        Type string : TempGA           "Garage"                      [ stateTopic="tele/TempSensGA/SENSOR", transformationPattern="JSONPATH:$.DS18B20.Temperature" ]
    }

    Thing topic Steckdose1 "Steckdose 1" @ "Gosund" {                       // Steckdose 1 192.168.65.91
    Channels:
        Type switch : power1           "Steckdose 1"                 [ stateTopic="stat/Steckdose1/POWER" , commandTopic="cmnd/Steckdose1/POWER" ]
        Type number : ptotal1          "Verbrauch total 1"           [ stateTopic="tele/Steckdose1/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Total" ]
        Type number : paktuell1        "aktueller Verbrauch 1"       [ stateTopic="tele/Steckdose1/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Current" ]
    }

    Thing topic Steckdose2 "Steckdose 2" @"Gosund" {                        // Steckdose Musik 192.168.65.92
    Channels:
        Type switch : powermusik       "Power Musik"                 [ stateTopic="stat/Steckdose2/POWER" , commandTopic="cmnd/Steckdose2/POWER" ]
        Type number : ptotalmusik      "Verbrauch total Musik"       [ stateTopic="tele/Steckdose2/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Total" ]
        Type number : paktuellmusik    "aktueller Verbrauch  Musik"  [ stateTopic="tele/Steckdose2/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Current" ]
    }

    Thing topic Steckdose3 "Steckdose 3" @ "Gosund" {                        // Steckdose 3 192.168.65.93
    Channels:
        Type switch : power3           "Steckdose 3"                 [ stateTopic="stat/Steckdose3/POWER1",  commandTopic="cmnd/Steckdose3/POWER1" ]
        Type switch : power3USB        "Steckdose 3 USB Port"        [ stateTopic="tele/Steckdose3/POWER2",  commandTopic="cmnd/Steckdose3/POWER2" ]
        Type number : ptotal3          "Verbrauch total 3"           [ stateTopic="tele/Steckdose3/SENSOR",  transformationPattern="JSONPATH:$.ENERGY.Total" ]
        Type number : paktuell3        "aktueller Verbrauch 3"       [ stateTopic="tele/Steckdose3/SENSOR",  transformationPattern="JSONPATH:$.ENERGY.Current" ]
        Type string : statepower3      "aktueller Schaltzustand 3"   [ stateTopic="tele/Steckdose3/STATE",   transformationPattern="JSONPATH:$.POWER1" ]
        Type number : Leistung         "aktuelle Watt"               [ stateTopic="tele/Steckdose3/SENSOR",  transformationPattern="JSONPATH:$.ENERGY.Power" ]
    }
    Thing topic Steckdose4 "Steckdose 4" @ "Gosund" {                        // Steckdose PC 192.168.65.94
    Channels:
        Type switch : powerpc          "Power PC"                    [ stateTopic="stat/Steckdose4/POWER",  commandTopic="cmnd/Steckdose4/POWER" ]
        Type switch : power4USB        "Steckdose 4 USB Port"        [ stateTopic="stat/Steckdose4/POWER2", commandTopic="cmnd/Steckdose4/POWER2" ]
        Type number : ptotalpc         "Verbrauch total PC"          [ stateTopic="tele/Steckdose4/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Total" ]
        Type number : paktuellpc       "aktueller Verbrauch PC"      [ stateTopic="tele/Steckdose4/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Current" ]
    }

    Thing topic Steckdose5 "Steckdose 5" @ "Gosund" {                        // Steckdose Fernseher 192.168.65.95
    Channels:
        Type switch : powertv          "Power TV"                    [ stateTopic="stat/Steckdose5/POWER",  commandTopic="cmnd/Steckdose5/POWER" ]
        Type switch : power5USB        "Steckdose 5 USB Port"        [ stateTopic="stat/Steckdose5/POWER2", commandTopic="cmnd/Steckdose5/POWER2" ]
        Type number : ptotaltv         "Verbrauch total TV"          [ stateTopic="tele/Steckdose5/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Total" ]
        Type number : paktuelltv       "aktueller Verbrauch TV"      [ stateTopic="tele/Steckdose5/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Current" ]
    }

    Thing topic Steckdose6 "Steckdose 6" @ "Gosund" {                        // Steckdose 192.168.65.96
    Channels:
        Type switch : power6           "Steckdose 6"                 [ stateTopic="stat/Steckdose6/POWER",  commandTopic="cmnd/Steckdose6/POWER" ]
        Type switch : power6USB        "Steckdose 6 USB Port"        [ stateTopic="stat/Steckdose6/POWER2", commandTopic="cmnd/Steckdose6/POWER2" ]
        Type number : ptotal6          "Verbrauch total 6"           [ stateTopic="tele/Steckdose6/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Total" ]
        Type number : paktuell6        "aktueller Verbrauch 6"       [ stateTopic="tele/Steckdose6/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Current" ]
    }
    
    Thing topic SteckdosenleisteEG "Steckdosenleiste" @ "Gosund" {           // Steckdosenleiste Anlage unten 192.168.65.111
    Channels:
        Type switch: power7            "TV unten"                    [ stateTopic="stat/SteckdosenleisteEG/POWER1", commandTopic="cmnd/SteckdosenleisteEG/POWER1" ]
        Type switch: power8            "CD und Phono unten"          [ stateTopic="stat/SteckdosenleisteEG/POWER2", commandTopic="cmnd/SteckdosenleisteEG/POWER2" ]
        Type switch: power9            "Musik unten"                 [ stateTopic="stat/SteckdosenleisteEG/POWER3", commandTopic="cmnd/SteckdosenleisteEG/POWER3" ]
        Type switch: power7USB         "Steckdosenleiste USB"        [ stateTopic="stat/SteckdosenleisteEG/POWER4", commandTopic="cmnd/SteckdosenleisteEG/POWER4" ]
        Type number: ptotal7           "Verbrauch total Leiste"      [ stateTopic="tele/SteckdosenleisteEG/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Total" ]
        Type number: paktuell7         "aktueller Verbrauch Leiste"  [ stateTopic="tele/SteckdosenleisteEG/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Current" ]
    }

    Thing topic TasterDesk "Schalter und Taster" @ "Schalter/Taster" {       // Taster 1 PC Büro
    Channels:
        Type string: Taster1           "Köpfe und Co. ein"           [ stateTopic="stat/TasterBuero/POWER1" ]
        Type switch: Taster2           "Anlage ein/aus"              [ stateTopic="stat/TasterBuero/POWER2", transformationPattern="JSONPATH:$" ]
     // Type switch: taster4           "PC ein/aus"                  [ stateTopic="stat/TasterBuero/POWER4", commandTopic="cmnd/TasterBuero/POWER4" ]
    }

    Thing topic Anlage "Steuerung Anlage " @ "Anlage" {                      // Pearl ucc 192.168.65.100
    Channels:
        Type string: Verstein          "Verstärker an"               [ stateTopic="stat/IRWLAN2/Result", commandTopic="cmnd/IRWLAN/IRSEND" ]
        Type string: Protocol          "Protokoll"                   [ stateTopic="tele/IRWLAN2/RESULT", transformationPattern="JSONPATH:$.IrReceived.Data" ]
        Type string: Befehl            "Befehl"                      [ stateTopic="tele/IRWLAN2/RESULT", transformationPattern="JSONPATH:$.IrReceived.Data" ]
     // Type string: DataLSB           "Daten LSB"                   [ stateTopic="tele/IRWLAN/RESULT",  transformationPattern="JSONPATH:$.IrReceived.DataLSB" ]
     // Pearl ucc 192.168.18.106
        Type string: Befehlo           "Befehl oben"                 [ stateTopic="tele/IRWLAN2/RESULT", transformationPattern="JSONPATH:$.IrReceived.Data" ]
    }

    Thing topic Shellies "Shelly WLAN Schalter" @ "Schalter/Taster" {        // Shelley Licht Esszimmer 192.168.65.121
    Channels:
     // Type switch: ShellyESSZ        "Licht Esszimmer"             [ stateTopic="Shellies/shellyESSZ/relay/0",   commandTopic="Shellies/shellyESSZ/relay/0/command" ]
        Type switch: ShellyBuero       "Licht Büro"                  [ stateTopic="Shellies/shellyBuero/relay/0",  commandTopic="Shellies/shellybuero/relay/0/command" ]
        Type switch: ShellyKeller      "Raspberry Keller"            [ stateTopic="Shellies/shellyKeller/relay/0", commandTopic="Shellies/shellyKeller/relay/0/command" ]
    }

    Thing topic Sonoff "Sonoff" @ "Schalter/Taster" {                        // Sonoff Wandschalter
    Channels:
        Type switch: LichtEssZ         "Licht Esszimmer"             [ stateTopic="stat/tasmotaEssZ/POWER1", commandTopic="cmnd/tasmotaEssZ/POWER1" ]
        Type switch: Radio             "Anlage"                      [ stateTopic="stat/tasmotaEssZ/POWER2", commandTopic="cmnd/tasmotaEssZ/POWER2" ]
        Type switch: Sonoff2           "Taster 3"                    [ stateTopic="stat/tasmotaEssZ/POWER3", commandTopic="cmnd/tasmotaEssZ/POWER3" ]
    }

    Thing topic Entfernung "Entfernungsmesser" {                             // ESP8266 Tasmota HC-SR04 1-3
    Channels:
        Type string: Laenge1           "TOF Sensor 1"                [ stateTopic="tele/Laser1/SENSOR", transformationPattern="JSONPATH:$.VL53L0X_1.Distance" ]
    }

    Thing topic Wasser "Wassermelder im Keller" {                            // ESP82366 Tasmota Wasser im Keller
    Channels:
        Type number: Waschkeller       "Wassermelder im Waschkeller" [ stateTopic="tele/FeuchteKeller/SENSOR", transformationPattern="JSONPATH:$.ANALOG.A0" ]
    }

    Thing topic Thorens "Umschalter Plattenspieler" @ "Schalter/Taster" {    // ESP8266 Tasmota 192.168.65.134
    Channels:
     // Type string: PowerD1           "Taster links"                [ stateTopic="stat/Dreher/RESULT", transformationPattern="JSONPATH:$.POWER1" ]
        Type string: PowerD2           "Taster rechts"               [ stateTopic="stat/Dreher/RESULT", transformationPattern="JSONPATH:$.POWER2" ]
        Type switch: PowerD3           "LED links"                   [ stateTopic="stat/Dreher/POWER3", commandTopic="cmnd/Dreher/POWER3" ]
        Type switch: PowerD4           "LED rechts"                  [ stateTopic="stat/Dreher/POWER4", commandTopic="cmnd/Dreher/POWER4" ]
        Type switch: PowerD5           "Umschalt - Relais"           [ stateTopic="stat/Dreher/POWER5", commandTopic="cmnd/Dreher/POWER5" ]
    }

    Thing topic Uhr "Star Wars Uhr" {
    Channels:
        Type number: uhr               "Entfernung"                  [ stateTopic="home/data/uhr"]
    }
}
Wie gesagt hast Du ja schon fast alle Geräte in einzelne Things gruppiert, bis auf die Shellies.

Ansonsten empfehle ich immer, die Things und speziell die Channelnamen allgemein zu halten. Im Label dürfen sie gerne spezifisch sein. Beispiel:

Code: Alles auswählen

    Thing topic Steckdose6 "Steckdose 6" @ "Gosund" {                        // Steckdose 192.168.65.96
    Channels:
        Type switch : power6           "Steckdose 6"                 [ stateTopic="stat/Steckdose6/POWER",  commandTopic="cmnd/Steckdose6/POWER" ]
        Type switch : power6USB        "Steckdose 6 USB Port"        [ stateTopic="stat/Steckdose6/POWER2", commandTopic="cmnd/Steckdose6/POWER2" ]
        Type number : ptotal6          "Verbrauch total 6"           [ stateTopic="tele/Steckdose6/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Total" ]
        Type number : paktuell6        "aktueller Verbrauch 6"       [ stateTopic="tele/Steckdose6/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Current" ]
    }
Die Information, dass es sich um die sechste Steckdose handelt, hast Du sowohl im Thingnamen als auch im Channelnamen drin, aber beide sind Teil der zu setzenden UID, diese Information ist also redundant.

Ich nutze für die Channel eher allgemeine Begriffe, z.B. ch1 für den Switch, der das Relais einer WLAN Steckdose steuert, weil ich auch teilweise mehrfachsteckdosen habe, die dann ch2, ch3 usw. heißen. ch1Pow ist dann der aktuielle Verbrauch usw. Auf Hardwareebene ist die konkrete Funktion für mich im Label ersichtlich. Das führt zu mehr Einheitlichkeit beim Anlegen der zugehörigen Items (z.B. alle Switches für Relais enden mit chx, wobei x die Nummer des Relais am konkreten Gerät ist. Dadurch wird in einer Items Datei die Lesbarkeit ebenfalls erhöht. und Tippfehler fallen eher ins Auge.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Jojo
Beiträge: 206
Registriert: 5. Mär 2019 21:13
Answers: 2
Wohnort: Ingolstadt

Re: Sonoff 3 Kanal Taster

Beitrag von Jojo »

Schon beeindruckend was du so drauf hast!!!!
Die 5 "S" hab ich geändert.
Mit IRWLAN hast du Recht, aber das funktioniert. Werde es aber ändern!
Das fehldende "d" ist drin und openhab startet gerade neu.
Ich mache auch einen reboot und melde mich morgen wieder

MEGA Dank!!!!!
Du bist unglaublich !!!!
--

Gruß

Jojo

Antworten