Seite 2 von 2

Re: Szene in der ETS über openHAB ansteuern

Verfasst: 13. Nov 2020 14:26
von Markus_JE
HI Udo,
ja die gehen an. Und die Jalousien fahren runter runter.
Allerdings nicht via openhab "taster"

Re: Szene in der ETS über openHAB ansteuern

Verfasst: 20. Nov 2020 10:40
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%"]
        }

Re: Szene in der ETS über openHAB ansteuern

Verfasst: 20. Nov 2020 11:55
von udo1toni
Kann ich nicht nachvollziehen, bei mir funktioniert die Szenensteuerung exakt so.

Re: Szene in der ETS über openHAB ansteuern

Verfasst: 20. Nov 2020 12:24
von Darkwin101
Dürfen denn die Beiden Type number-control gleich heißen ?

Re: Szene in der ETS über openHAB ansteuern

Verfasst: 20. Nov 2020 15:15
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...

Re: Szene in der ETS über openHAB ansteuern

Verfasst: 11. Jan 2023 19:26
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.

Re: Szene in der ETS über openHAB ansteuern

Verfasst: 12. Jan 2023 01:48
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.

Re: Szene in der ETS über openHAB ansteuern

Verfasst: 14. Jan 2023 08:14
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.