Szene in der ETS über openHAB ansteuern

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Markus_JE
Beiträge: 138
Registriert: 6. Okt 2019 13:20
Answers: 0

Re: Szene in der ETS über openHAB ansteuern

Beitrag von Markus_JE »

HI Udo,
ja die gehen an. Und die Jalousien fahren runter runter.
Allerdings nicht via openhab "taster"

Markus_JE
Beiträge: 138
Registriert: 6. Okt 2019 13:20
Answers: 0

Re: Szene in der ETS über openHAB ansteuern

Beitrag von Markus_JE »

Hallo zusammen,

hat jemand noch eine Idee was hier falsch läuft?
Jalousien fahren herunter aber die Lichter bei Aufruf Szene Fernsehabend gehen nicht an.

Code: Alles auswählen

Thing device TasterHauseingang "Taster Hauseingang" @ "KNX" //[address="1.1.12", fetch=false, pingInterval=600, readInterval=300]    
    {   
    Type number         : Temperatur_FlurEG "Temperatur Flur EG" [ ga="9.001:4/0/1" ]
    Type number-control : Leave_Home        "Leave Home"         [ ga="17.001:6/1/1" ] // Szene Fersehabend
    Type number-control : Leave_Home        "Leave Home"         [ ga="17.001:6/1/0" ] // Szene Sonnenschutz
    }

Item:

Code: Alles auswählen

Number Szene "Leave Home [%d]"                                               <jalousie>          (EG_Flur)              {channel="knx:device:bridge:TasterHauseingang:Leave_Home"}[/quote]

sitemap:

Code: Alles auswählen

        Text label="Szenen" icon="party" {
            Selection item=Szene   label="Leave Home" mappings=[0="Fernsehabend", 1="Sonnenschutz 50%"]
        }

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

Re: Szene in der ETS über openHAB ansteuern

Beitrag von udo1toni »

Kann ich nicht nachvollziehen, bei mir funktioniert die Szenensteuerung exakt so.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Darkwin101
Beiträge: 424
Registriert: 6. Mär 2019 11:19
Answers: 14

Re: Szene in der ETS über openHAB ansteuern

Beitrag von Darkwin101 »

Dürfen denn die Beiden Type number-control gleich heißen ?

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

Re: Szene in der ETS über openHAB ansteuern

Beitrag von udo1toni »

Oh. Nein, das darf natürlich nicht sein. :) Komplett übersehen...

Jede Bridge eines Addons muss einen eindeutigen Namen haben.
Jedes Thing innerhalb einer Bridge muss einen eindeutigen Namen haben.
Jeder Channel innerhalb eines Thing muss einen eindeutigen Namen haben.

Eigentlich logisch, sonst könnnte man die beiden Channel ja nicht unterscheiden...
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Steffen987
Beiträge: 2
Registriert: 11. Jan 2023 19:13
Answers: 0

Re: Szene in der ETS über openHAB ansteuern

Beitrag von Steffen987 »

Hallo, der Beitrag ist zwar nicht mehr der neuste, ich hätte aber trotzdem eine Frage die hier gut rein passt.

Ich habe ebenfalls ein KNX System, von welchem ich die Szenennummer zu Openhab 3 übertage und auch wieder zurück, um Licht etc. zu schalten. Mit dem Trick hier dpt 17.001 zu verwenden funktioniert es vom Prinzip auch. Von Openhab zu KNX geht es Problemlos, allerdings habe ich ein kleiens Problem von KNX zu Openhab. Ich möchte hier über eine Regel die Szenennumer auswerten, um andere Aktionen am Server zu schalten (zum Beispiel Musik an). Wenn ich das Signal von Openhab aus schicke funktioniert die Regel auch, wenn das Signal allerdings von KNX aus kommt funktioniert es nicht.

In der Karaf console sind die Nummern auch unterschiedlich dargstellt. Wenn es von Openahb kommt ist es immer eine Ganze zahl, kommt es von der KNX Seite, ist es immer eine Zahl mit.0 am Ende, siehe Beispiel unten.

Änderung durch KNX Schalter: Item Item 'KNXGeraete_OGBadLichtSzene' changed from 1.0 to 2.0
Änderung durch Openhab Schalter: Item 'KNXGeraete_OGBadLichtSzene' changed from 1.0 to 2

Könnte hier das Problem mit der Regel liegen und wenn ja, wie kann ich das Signal in Openhab so interpretieren, dass hier keine Nachkommastelle vorhanden ist?

Zur Info hier die Regel:

Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      itemName: KNXGeraete_OGBadLichtSzene
      state: "2"
    type: core.ItemStateChangeTrigger
  - id: "4"
    configuration:
      itemName: KNXGeraete_OGBadLichtSzene
      state: "1"
    type: core.ItemStateChangeTrigger
conditions:
  - inputs: {}
    id: "5"
    configuration:
      itemName: OG_Bad_Radio_EINAUS
      state: OFF
      operator: =
    type: core.ItemStateCondition
actions:
  - inputs: {}
    id: "2"
    configuration:
      command: ON
      itemName: OG_Bad_Radio_EINAUS
    type: core.ItemCommandAction
  - inputs: {}
    id: "3"
    configuration:
      command: "20"
      itemName: OG_Bad_Radio_Volume
    type: core.ItemCommandAction
Vielen Dnak schon mal für die Hilfe.

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

Re: Szene in der ETS über openHAB ansteuern

Beitrag von udo1toni »

Ja, das ist ein bekanntes Problem. Du kannst das so nicht lösen, die simple when-then-but=only=if-Variante ist dazu nicht universell genug.
Der Punkt ist, openHAB interpretiert leider 17.001 ankommend als Float-Wert (das ist natürlich verkehrt).
Außerdem "glaubt" ;) openHAB, es bestünde ein Unterschied zwischen 1 und 1.0, und zwar groß genug, um das nicht als Trigger zu werten.
Du könntest nun beide Schreibweisen angeben:

Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      itemName: KNXGeraete_OGBadLichtSzene
      state: "2"
    type: core.ItemStateChangeTrigger
  - id: "2"
    configuration:
      itemName: KNXGeraete_OGBadLichtSzene
      state: "2.0"
    type: core.ItemStateChangeTrigger
  - id: "3"
    configuration:
      itemName: KNXGeraete_OGBadLichtSzene
      state: "1"
    type: core.ItemStateChangeTrigger
  - id: "4"
    configuration:
      itemName: KNXGeraete_OGBadLichtSzene
      state: "1.0"
    type: core.ItemStateChangeTrigger
...
oder einfach nur einen allgemeine Trigger verwenden

Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      itemName: KNXGeraete_OGBadLichtSzene
...
und dafür als Action Code verwenden, der die "richtigen" Werte herausfiltert, z.B. als Rule-Code:

Code: Alles auswählen

actions:
  - inputs: {}
    id: "2"
    configuration:
      type: application/vnd.openhab.dsl.rule
      script: |-
        var nScene = 0
        if(newState instanceof Number)
            nScene = (newState as Number).intValue
        if((nScene == 1 || nScene == 2) && OG_Bad_Radio_EINAUS.state == OFF) {
            OG_Bad_Radio_EINAUS.sendCommand(ON)
            OG_Bad_Radio_Volume.sendCommand(20)
        }
    type: script.ScriptAction
Den But-only-if Teil brauchst Du dann nicht, das erledigt der Code mit.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Steffen987
Beiträge: 2
Registriert: 11. Jan 2023 19:13
Answers: 0

Re: Szene in der ETS über openHAB ansteuern

Beitrag von Steffen987 »

Hallo udo1toni,

danke für den Hinweis, dann mache ich es über den "Umweg" und nehme jede Änderung als Trigger und schreibe dann in den Code alles rein.

Antworten