Gosund Steckdose mit mech. Taster und SoftwareSwitch

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

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

Gosund Steckdose mit mech. Taster und SoftwareSwitch

Beitrag von Jojo »

Servus,

ich bringe es nicht hin, bitte helft mir:
Ich möchte eine WLAN Steckdose über Basic UI oder einem Taster an einem ESP8266 schalten.
Über BasicUI gehts, kein Problem. Aber ich bekomme den Taster nicht mit ins Spiel.
Ich habe eine Bridge mit Thing und Channel, ein Channel für die Steckdose und einer für den Taster

Code: Alles auswählen

Bridge mqtt:broker:JojoBroker [
host="192.168.188.36", 
username="xxxx", 
password ="yyyyy", 
secure="false"]{


// Steckdose 3 192.168.188.90
    Type switch : power1  "Steckdose 1"                   [ stateTopic="Stat/Steckdose1/POWER" , commandTopic="cmnd/Steckdose1/POWER", on="ON",off="OFF" ]
    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 Schalter "Schalter und Taster" @ "Schalter/Taster" {
    Channels:
// Taster PC Büro
   Type switch : PCschalten "PC schalten"                 [stateTopic="stat/Taster1/POWER", commandTopic="cmnd/Taster1/POWER",on="ON",off="OFF" ] 
   Type string : test                                     [stateTopic="stat/Taster1/POWER"]
  } 
Ich habe auch ein Item:

Code: Alles auswählen

Switch power1        "Steckdose 1 [MAP(de.map):%S]"         { channel="mqtt:topic:JojoBroker:Steckdosen:power1" [profile="follow"], channel="mqtt:JojoBroker:Schalter:PCschalten"}
Ich habe ein zusätzliches Item angelegt:

Code: Alles auswählen

String test           "TEST [%s]"                           { channel="mqtt:topic:JojoBroker:Schalter:test"}
an dem kann ich sehen ob der Taster geht

und eine Rule:

Code: Alles auswählen

rule "Schalter1 aus"
when
Item test changed to OFF
then
val actions = getActions("mqtt","mqtt:broker:JojoBroker")
//actions.publishMQTT("test/system/started","true")
actions.publishMQTT("cmnd/Steckdose1/POWER/","OFF")
end

rule "Schalter1 an"
when 
item test changed to "ON"
then
val actions = getActions("mqtt","mqtt:broker:JojoBroker")
actions.publishMQTT("cmnd/Steckdose1/POWER/","ON")
end 
Die Sitemap:

Code: Alles auswählen

 Switch item=power1      icon=poweroutlet
        Text item=test 
Wenn ich den Taster drücke geht das Item Test brav ON und OFF, die Steckdose tut gar nichts.
Mit dem switch geht sie wunderbar.

Was mache ich falsch ??

Vielen Dank
--

Gruß

Jojo

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

Re: Gosund Steckdose mit mech. Taster und SoftwareSwitch

Beitrag von udo1toni »

Es geht mal damit los, dass Du zweimal ein identisches Topic verwendest. Ich kann das nicht sicher sagen, aber allgemein wird ein Binding, sobald es einen Channel gefunden hat, an dem es seine Infos abliefern kann, mit der Suche nach dem zugehörigen Channel aufhören. Das bedeutet: Wenn Du bei zwei oder mehr Channels dasselbe Topic als stateTopic angibst, wird eventuell die Meldung nur in einem der Channels landen. Beim knx Binding ist das definitiv so, und ich würde dieses Verhalten grundsätzlich von allen Bindings erwarten.

Es gibt keinen Grund, das stateTopic zweimal anzugeben. openHAB empfängt über das stateTopic und sendet über das commandTopic. Entsprechend darf der Taster Channel gar kein commandTopic haben.

Deine Things sollten besser so aussehen:

Code: Alles auswählen

Bridge mqtt:broker:JojoBroker [
    host="192.168.188.36", 
    username="xxxx", 
    password ="yyyyy", 
    secure="false"
    ] {

// Steckdose 3 192.168.188.90
    Thing topic Steckdosen "Steckdose" @ "Steckdosen" {
    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" ]
   }
 
// Taster PC Büro
    Thing topic Schalter "Schalter und Taster" @ "Schalter/Taster" {
    Channels:
       Type switch : PCschalten "PC schalten"           [ stateTopic="stat/Taster1/POWER" ]
    }
}
Es ist unnötig, das default Verhalten für on und off explizit anzugeben.

Es sollte auch ein Item reichen, vorausgesetzt, Du gibst die korrekten Channel an:

Code: Alles auswählen

Switch power1 "Steckdose 1 [MAP(de.map):%s]" { channel="mqtt:topic:JojoBroker:Steckdosen:power1" [profile="follow"], channel="mqtt:topic:JojoBroker:Schalter:PCschalten"}
Sollte der Schalter nicht schalten :) kannst Du auch zwei Items und eine Rule nutzen:

Code: Alles auswählen

Switch power1 "Steckdose 1 [MAP(de.map):%s]" { channel="mqtt:topic:JojoBroker:Steckdosen:power1" }
Switch switch1                               { channel="mqtt:topic:JojoBroker:Schalter:PCschalten" }
und die Rule:

Code: Alles auswählen

rule "Steckdose mit Schalter1 schalten"
when
    Item switch1 changed
then
    power1.sendCommand(newState.toString)
end
Es ist nicht nötig, hier mit einer Action zu arbeiten, schließlich existiert ja ein Item für die zu schaltende Steckdose.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

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

Re: Gosund Steckdose mit mech. Taster und SoftwareSwitch

Beitrag von Jojo »

Servus Udo1Toni,

vielen Dank für deine Mühe.
Bedauerlicherweise geht's nicht.
Ohne Rule Schaltet der Taster nicht.
Mit Rule wirft die PaperUi folgenden Fehler aus:
[ERROR] [ntime.internal.engine.RuleEngineImpl] - Rule 'Steckdose mit Schalter1 schalten': The name 'newState' cannot be resolved to an item or type; line 27, column 24, length 8
Ich habe mal das new gelöscht, hilft nichts ...

UPDATE:
Habe mal die Rule geändert:

Code: Alles auswählen

rule "Steckdose mit Schalter1 schalten"
when
    Item switch1 changed to OFF
then
    power1.sendCommand(OFF)
end

rule "Steckdose mit Schalter1 schalten"
when
    Item switch1 changed to ON
then
    power1.sendCommand(ON)
end
und schon schaltet der Taster die Steckdose.

Was fehlt: Die On/Off Beschriftung am Schalter in der BasicUI und die zwischen den beiden Schaltern wie gerade der Status ist, da arbeitet jeder für sich
Wie gebe ich das denn weiter ? Der switch power1 steht auf profile="follow" ??

VG
--

Gruß

Jojo

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

Re: Gosund Steckdose mit mech. Taster und SoftwareSwitch

Beitrag von udo1toni »

Dann verwendest Du ein openHAB älter als OH2.5.8, kann das sein? newState ist relativ neu. Die Rule muss dann halt leicht geändert werden:

Code: Alles auswählen

rule "Steckdose mit Schalter1 schalten"
when
    Item switch1 changed
then
    power1.sendCommand(switch1.state.toString)
end
In diesem Fall könnte man sogar auf das .toString verzichten. Es reicht wirklich eine Rule. Selbst ohne die direkte Übernahme genügt es so:

Code: Alles auswählen

rule "Steckdose mit Schalter1 schalten"
when
    Item switch1 changed
then
    if(switch1.state == OFF)
        power1.sendCommand(OFF)
    else if(switch1.state == ON)
        power1.sendCommand(ON)
end
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

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

Re: Gosund Steckdose mit mech. Taster und SoftwareSwitch

Beitrag von Jojo »

2.4.0
Ich versuche mal ein Update
--

Gruß

Jojo

Antworten