Renault Binding - Script

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
DJFlaxi
Beiträge: 27
Registriert: 16. Apr 2020 19:40
Answers: 0

Renault Binding - Script

Beitrag von DJFlaxi »

Hallo zusammen,

zuerst einmal ein gutes neues Jahr Euch allen!
Ich habe da mal eine Bitte:

Beim Renault-Binding wird in der Doku ein Script angegeben, den man in OH3 unter Scripts einfach einfügen kann. Das funktioniert auch soweit.

Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      itemName: RenaultZOEBatterylevel
    type: core.ItemStateUpdateTrigger
  - id: "2"
    configuration:
      itemName: RenaultCar_ChargeLimit
    type: core.ItemStateUpdateTrigger
  - id: "3"
    configuration:
      itemName: RenaultZOEPlugstatus
    type: core.ItemStateUpdateTrigger
conditions: []
actions:
  - inputs: {}
    id: "4"
    configuration:
      type: application/vnd.openhab.dsl.rule
      script: >
        if ( RenaultZOEPlugstatus.state.toString == 'PLUGGED' ) {
          if ( RenaultZOEBatterylevel.state as Number >= RenaultCar_ChargeLimit.state as Number ) {
            if (RenaultZOEChargingmode.state.toString != 'SCHEDULE_MODE' ) {
              RenaultZOEChargingmode.sendCommand("SCHEDULE_MODE")
            }
          } else {
            if (RenaultZOEChargingmode.state.toString != 'ALWAYS_CHARGING' ) {
              RenaultZOEChargingmode.sendCommand("ALWAYS_CHARGING")
            }
          }
        } else {
          if (RenaultZOEChargingmode.state.toString != 'ALWAYS_CHARGING' ) {
            RenaultZOEChargingmode.sendCommand("ALWAYS_CHARGING")
          }
        }
    type: script.ScriptAction
Ich arbeite aber eigentlich hauptsächlich mit VS-Code.
Kann mir einer das o.g. Script eventuell als Renault.script-Datei umändern, sodass ich das in den Configs abspeichern kann?

Vielen Dank schon mal vorab!

Viele Grüße
DJFlaxi

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

Re: Renault Binding - Script

Beitrag von udo1toni »

Wenn Du lieber mit VSCode arbeitest, schau Dir bitte die Rules DSL an, die hast Du ja im Code schon vor Dir. Es fehlt lediglich der Rahmen, den eine per Textdatei erstellte Rule haben muss:

Code: Alles auswählen

rule "Name der Rule - äöü und ß sind erlaubt"
when // Schlüsselwort leitet die Liste der Trigger ein

then // schlüsselwort leitet den Block des auszuführenden Codes ein

end
Die zitierte Rule sieht dann also so aus:

Code: Alles auswählen

rule "Setze Renault Lademodus"
when
    Item RenaultZOEBatterylevel received update or
    Item RenaultCar_ChargeLimit received update or
    Item RenaultZOEPlugstatus received update
then
    if ( RenaultZOEPlugstatus.state.toString == 'PLUGGED' ) {
        if ( RenaultZOEBatterylevel.state as Number >= RenaultCar_ChargeLimit.state as Number ) {
            if (RenaultZOEChargingmode.state.toString != 'SCHEDULE_MODE' ) {
                RenaultZOEChargingmode.sendCommand("SCHEDULE_MODE")
            }
        } else {
            if (RenaultZOEChargingmode.state.toString != 'ALWAYS_CHARGING' ) {
                RenaultZOEChargingmode.sendCommand("ALWAYS_CHARGING")
            }
        }
    } else {
        if (RenaultZOEChargingmode.state.toString != 'ALWAYS_CHARGING' ) {
            RenaultZOEChargingmode.sendCommand("ALWAYS_CHARGING")
        }
    }
end
Die Rule lässt sich so oder so effizienter gestalten :)

Code: Alles auswählen

rule "Setze Renault Lademodus"
when
    Item RenaultZOEBatterylevel changed or
    Item RenaultCar_ChargeLimit changed or
    Item RenaultZOEPlugstatus changed
then
    var strSoll = 'ALWAYS_CHARGING'

    if((RenaultZOEPlugstatus.state.toString == 'PLUGGED') && (RenaultZOEBatterylevel.state as Number) >= (RenaultCar_ChargeLimit.state as Number))
        strSoll = 'SCHEDULE_MODE'

    if(RenaultZOEChargingmode.state.toString != strSoll)
        RenaultZOEChargingmode.sendCommand(strSoll)
end
Es gibt keinen Grund, auf Updates zu triggern, wenn sich gegenüber dem vorigen Zustand nichts geändert hat, wird sich auch das Ergebnis nicht ändern.
Die String Variable hält den Lademodus, wie er gesetzt werden soll. Es gibt zwei Zustände, die beide erfüllt sein müssen, damit der Lademodus auf SCHEDULE_MODE gesetzt wird. ansonsten soll ALWAYS_CHARGING gesetzt werden, weshalb dies auch die Vorbelegung der Variablen ist.
Sind die beiden Bedingungen erfüllt, wird die Variable verändert.

Abschließend wird geprüft, ob der Sollmodus bereits besteht, nur bei Abweichung wird der Befehl gesendet.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

DJFlaxi
Beiträge: 27
Registriert: 16. Apr 2020 19:40
Answers: 0

Re: Renault Binding - Script

Beitrag von DJFlaxi »

Vielen lieben Dank.
Das hat funktioniert.

Liebe Grüße
DJFlaxi

Antworten