Item Aktualisieren wenn 2 item auf einem Channel.

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
mad-mike
Beiträge: 490
Registriert: 6. Jan 2021 18:05
Answers: 3

Item Aktualisieren wenn 2 item auf einem Channel.

Beitrag von mad-mike »

Moin zusammen.

Ich habe ein Relaisboard, dort habe ich 8 Ausgänge. Diese habe über http Thing und dann 8 Channel verknüpft.

Die Channel habe ich dann halt jeweils 1 Item verknüpft.

Channel 8 ist meine Außensteckdose. Diese funktioniert auch mit "ON/OFF"

Weiter habe ich ein Switch (day) erstellt, welche über eine rule vom Astro Binding geschalten wird.

Das funktioniert auch.


Ich habe nun vom Relais Board Channel 8 auch mit dem day Item verknüpft und auf Profil folgen geklickt....

Die Steckdose wurde ordnungsgemäß ein und ausgeschalten, (über das day Item)

Aber: das eigentliche Item der Steckdose wurde dabei nicht aktualisiert.

Dies ist demnach auf dem Halbpanel und in der sitemap falsch dargestellt.

Day ist ON, Relais ist auch ON aber Item Steckdose außen blieb auf OFF....


Kann man dies noch optimieren?


Danke und Gruß
Gruss mad-mike

openHABian 4.3.5 auf Raspberry Pi 4 Mod. b (8GB) ;)

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

Re: Item Aktualisieren wenn 2 item auf einem Channel.

Beitrag von udo1toni »

Die Frage ist, wie der Channel definiert ist. Wichtig ist, dass der Channel bidirektional funktioniert, also nicht nur Schaltbefehle von openHAB zum Relaisboard gesendet werden, sondern da Relaisboard auch die Zustände der Relais aktiv meldet (notfalls, indem openHAB den Zustand zyklisch abfragt).
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

mad-mike
Beiträge: 490
Registriert: 6. Jan 2021 18:05
Answers: 3

Re: Item Aktualisieren wenn 2 item auf einem Channel.

Beitrag von mad-mike »

Feedback vom board gibts noch nicht...
Weiss garnicht wie man dies Umsetzt... :oops:

Erstellt habe ich dies Über die UI.
Thing:

Code: Alles auswählen

UID: http:url:0de4fe720f
label: HTTP URL Thing
thingTypeUID: http:url
configuration:
  authMode: BASIC
  ignoreSSLErrors: false
  baseURL: http://192.168.178.199:80
  delay: 0
  stateMethod: GET
  refresh: 30
  commandMethod: GET
  contentType: application/xml
  timeout: 3000
  bufferSize: 2048
channels:
  - id: km1
    channelTypeUID: http:switch
    label: km1
    description: ""
    configuration:
      mode: WRITEONLY
      onValue: FF0101
      offValue: FF0100
      commandExtension: "%2$s"
  - id: km2
    channelTypeUID: http:switch
    label: km2
    configuration:
      mode: WRITEONLY
      onValue: FF0201
      offValue: FF0200
      commandExtension: "%2$s"
  - id: km3
    channelTypeUID: http:switch
    label: km3
    configuration:
      mode: WRITEONLY
      onValue: FF0301
      offValue: FF0300
      commandExtension: "%2$s"
  - id: km4
    channelTypeUID: http:switch
    label: km4
    configuration:
      mode: WRITEONLY
      onValue: FF0401
      offValue: FF0400
      commandExtension: "%2$s"
  - id: km5
    channelTypeUID: http:switch
    label: km5
    configuration:
      mode: WRITEONLY
      onValue: FF0501
      offValue: FF0500
      commandExtension: "%2$s"
  - id: km6
    channelTypeUID: http:switch
    label: km6
    configuration:
      mode: WRITEONLY
      onValue: FF0601
      offValue: FF0600
      commandExtension: "%2$s"
  - id: km7
    channelTypeUID: http:switch
    label: km7
    configuration:
      mode: WRITEONLY
      onValue: FF0701
      offValue: FF0700
      commandExtension: "%2$s"
  - id: km8
    channelTypeUID: http:switch
    label: km8
    configuration:
      mode: READWRITE
      onValue: FF0801
      offValue: FF0800
      stateExtension: 192.168.178.199/status.xml
      commandExtension: "%2$s"
  - id: last-success
    channelTypeUID: http:request-date-time
    label: Last Success
    configuration: {}
  - id: last-failure
    channelTypeUID: http:request-date-time
    label: Last Failure
    configuration: {}
Im Channel steht der Wert auf ""Nur Schreiben""

Ich hatte dies schon mal geändert, funktionierte aber nicht.

das Board kann mit einen Status ausgeben, wo ich aber keine Ahnung habe, wie damit umgehen...
unter der IP:

Code: Alles auswählen

http://192.168.178.199/status.xml
kommt eine solche Tabelle:

Code: Alles auswählen

<response>
<relay0>1</relay0>
<relay1>0</relay1>
<relay2>0</relay2>
<relay3>0</relay3>
<relay4>0</relay4>
<relay5>0</relay5>
<relay6>0</relay6>
<relay7>0</relay7>
<relay8>0</relay8>
</response>

Ich habe nunmal auf Lesen und Schreiben geklickt, und einfach mal die IP vom Status.xml in den Channel eingetragen.

Das das nicht funktioniert, war mir vorher klar. Dennoch habe ich es ausprobiert. es muss ja irgendwie noch das Relay 8 rausgefiltert werden?? :?:

Gruss
Gruss mad-mike

openHABian 4.3.5 auf Raspberry Pi 4 Mod. b (8GB) ;)

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

Re: Item Aktualisieren wenn 2 item auf einem Channel.

Beitrag von udo1toni »

ja, Du musst halt die Status-URL mit angeben und den Wert passend parsen. Leider muss dazu auch die Senderichtung umgebaut werden, weil OnValue und OffValue für bei Richtungen gleich sein sollten... Glücklicherweise sind die Änderungen aber "minimal" ;)

Code: Alles auswählen

UID: http:url:0de4fe720f
label: HTTP URL Thing
thingTypeUID: http:url
configuration:
  authMode: BASIC
  ignoreSSLErrors: false
  baseURL: http://192.168.178.199:80
  delay: 0
  stateMethod: GET
  refresh: 30
  commandMethod: GET
  contentType: application/xml
  timeout: 3000
  bufferSize: 2048
channels:
  - id: last-failure
    channelTypeUID: http:request-date-time
    label: Last Failure
    configuration: {}
  - id: last-success
    channelTypeUID: http:request-date-time
    label: Last Success
    configuration: {}
  - id: km1
    channelTypeUID: http:switch
    label: km1
    configuration:
      mode: READWRITE
      onValue: "1"
      offValue: "0"
      stateExtension: status.xml
      commandExtension: FF010%2$s
      stateTransformation:
        - REGEX:.*<relay0>(.)</relay0>.*
  - id: km2
    channelTypeUID: http:switch
    label: km2
    configuration:
      mode: READWRITE
      onValue: "1"
      offValue: "0"
      stateExtension: status.xml
      commandExtension: FF020%2$s
      stateTransformation:
        - REGEX:.*<relay1>(.)</relay1>.*
  - id: km3
    channelTypeUID: http:switch
    label: km3
    configuration:
      mode: READWRITE
      onValue: "1"
      offValue: "0"
      stateExtension: status.xml
      commandExtension: FF030%2$s
      stateTransformation:
        - REGEX:.*<relay2>(.)</relay2>.*
  - id: km4
    channelTypeUID: http:switch
    label: km4
    configuration:
      mode: READWRITE
      onValue: "1"
      offValue: "0"
      stateExtension: status.xml
      commandExtension: FF040%2$s
      stateTransformation:
        - REGEX:.*<relay3>(.)</relay3>.*
  - id: km5
    channelTypeUID: http:switch
    label: km5
    configuration:
      mode: READWRITE
      onValue: "1"
      offValue: "0"
      stateExtension: status.xml
      commandExtension: FF050%2$s
      stateTransformation:
        - REGEX:.*<relay4>(.)</relay4>.*
  - id: km6
    channelTypeUID: http:switch
    label: km6
    configuration:
      mode: READWRITE
      onValue: "1"
      offValue: "0"
      stateExtension: status.xml
      commandExtension: FF060%2$s
      stateTransformation:
        - REGEX:.*<relay5>(.)</relay5>.*
  - id: km7
    channelTypeUID: http:switch
    label: km7
    configuration:
      mode: READWRITE
      onValue: "1"
      offValue: "0"
      stateExtension: status.xml
      commandExtension: FF070%2$s
      stateTransformation:
        - REGEX:.*<relay6>(.)</relay6>.*
  - id: km8
    channelTypeUID: http:switch
    label: km8
    configuration:
      mode: READWRITE
      onValue: "1"
      offValue: "0"
      stateExtension: status.xml
      commandExtension: FF080%2$s
      stateTransformation:
        - REGEX:.*<relay7>(.)</relay7>.*
Wichtig für den Hinterkopf: der Status wird nur alle 30 Sekunden abgefragt, im ungünstigen Fall könnte also 29 Sekunden lang der falsche Status angezeigt werden. Entweder Du verkürzt das Abfrageinterval (da muss man halt schauen, wie sehr das Board dadurch belastet wird) oder man geht komplett anders an das Problem heran, indem man den Status über eine Rule abfragt, die man dann bei Bedarf ausführt.

Ich habe die Konfiguration bei mir nicht wirklich getestet. Also achte auf Tippfehler meinerseits... ;)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

mad-mike
Beiträge: 490
Registriert: 6. Jan 2021 18:05
Answers: 3

Re: Item Aktualisieren wenn 2 item auf einem Channel.

Beitrag von mad-mike »

Moin,
In der Konfig vom Channel hat sich dann noch eine eckige Klammer mit eingetragen unter:

Code: Alles auswählen

Status-Transformation
diese habe ich entfernt...

Kurze info:

Code: Alles auswählen

 NOTE: <relay0>0</relay0> Reserved for other function (do not use in user program)
Bedeutet relay 1 ist = Status Relay 1

Ob das Item bis zu 30 Sekunden benötigt zum aktualisieren, ist mir eigentlich egal. In der Regel bekomme ich von dem Schaltvorgang gar nichts mit. Das läuft alleine.

Fakt ist, es Funktioniert, Item wird aktualisiert Danke dafür. :!: 8-)

PS: Es handelt sich um ein KMTronic WEB Relay Board.

Code: Alles auswählen

UID: http:url:0de4fe720f
label: HTTP URL Thing
thingTypeUID: http:url
configuration:
  authMode: BASIC
  ignoreSSLErrors: false
  baseURL: http://192.168.178.199:80
  delay: 0
  stateMethod: GET
  refresh: 30
  commandMethod: GET
  contentType: application/xml
  timeout: 3000
  bufferSize: 2048
channels:
  - id: km1
    channelTypeUID: http:switch
    label: km1
    description: ""
    configuration:
      mode: READWRITE
      onValue: "1"
      offValue: "0"
      stateExtension: status.xml
      commandExtension: FF010%2$s
      stateTransformation: REGEX:.*<relay1>(.)</relay1>.*
  - id: km2
    channelTypeUID: http:switch
    label: km2
    configuration:
      mode: READWRITE
      onValue: "1"
      offValue: "0"
      stateExtension: status.xml
      commandExtension: FF020%2$s
      stateTransformation: REGEX:.*<relay2>(.)</relay2>.*
  - id: km3
    channelTypeUID: http:switch
    label: km3
    configuration:
      mode: READWRITE
      onValue: "1"
      offValue: "0"
      stateExtension: status.xml
      commandExtension: FF030%2$s
      stateTransformation: REGEX:.*<relay3>(.)</relay3>.*
  - id: km4
    channelTypeUID: http:switch
    label: km4
    configuration:
      mode: READWRITE
      onValue: "1"
      offValue: "0"
      stateExtension: status.xml
      commandExtension: FF040%2$s
      stateTransformation: REGEX:.*<relay4>(.)</relay4>.*
  - id: km5
    channelTypeUID: http:switch
    label: km5
    configuration:
      mode: READWRITE
      onValue: "1"
      offValue: "0"
      stateExtension: status.xml
      commandExtension: FF050%2$s
      stateTransformation: REGEX:.*<relay5>(.)</relay5>.*
  - id: km6
    channelTypeUID: http:switch
    label: km6
    configuration:
      mode: READWRITE
      onValue: "1"
      offValue: "0"
      stateExtension: status.xml
      commandExtension: FF060%2$s
      stateTransformation: REGEX:.*<relay6>(.)</relay6>.*
  - id: km7
    channelTypeUID: http:switch
    label: km7
    configuration:
      mode: READWRITE
      onValue: "1"
      offValue: "0"
      stateExtension: status.xml
      commandExtension: FF070%2$s
      stateTransformation: REGEX:.*<relay7>(.)</relay7>.*
  - id: km8
    channelTypeUID: http:switch
    label: km8
    configuration:
      mode: READWRITE
      onValue: "1"
      offValue: "0"
      stateExtension: status.xml
      commandExtension: FF080%2$s
      stateTransformation: REGEX:.*<relay8>(.)</relay8>.*
  - id: last-success
    channelTypeUID: http:request-date-time
    label: Last Success
    configuration: {}
  - id: last-failure
    channelTypeUID: http:request-date-time
    label: Last Failure
    configuration: {}
Gruss mad-mike

openHABian 4.3.5 auf Raspberry Pi 4 Mod. b (8GB) ;)

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

Re: Item Aktualisieren wenn 2 item auf einem Channel.

Beitrag von udo1toni »

mad-mike hat geschrieben: 3. Nov 2024 10:39 Bedeutet relay 1 ist = Status Relay 1
Das hab ich dann falsch interpretiert :) aber die Hauptsache ist ja, dass es jetzt passt :)
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Antworten