Verwirrung bei den verschiedenen Scriptsprachen und: wenn temp. unter -3 , Heizung einschalten...

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
habuser1
Beiträge: 21
Registriert: 1. Nov 2021 13:08
Answers: 0

Verwirrung bei den verschiedenen Scriptsprachen und: wenn temp. unter -3 , Heizung einschalten...

Beitrag von habuser1 »

Moin zusammen,

ich bin noch etwas durcheinander mit den verschiedenen Scriptsprachen.
Habe gelesen, dass Rules-DSL langfristig abgeschafft werden soll. Folgendes scheint in Rules-DSL geschrieben zu sein, - Scipte in dsl finde ich unter Admin -> Einstellungen -> Scripts.

Dort habe ich nur ein paar Schnipsel zum Mailversand - erstellt aus den Rules.

Code: Alles auswählen

val mailActions = getActions("mail","mail:smtp:11cb3f4cd5")
mailActions.sendHtmlMail("xxx", "openhabTest subject", "<h1>Header1</h1>This is the mail content.") 
Viele Beispiele findet man aber in dieser Sprache.
Als Anfänger nutze ich für die Regeln aber lieber das was ich bei "Rules" vorfinde ;-)
Dort habe ich jeden Morgen die Heizungen eingeschaltet. Jedoch möchte ich jetzt zusätzlich um 5 Uhr prüfen, ob es unter -3 Grad hat, und wenn ja, in dem Fall dann schon die Heizung einzuschalten.
Beispiele zu ähnlichen Fragestellungen finde ich nur in Rules-DSL.

Was ist das für eine Scriptsprache bei "Rules" und habt ihr eine Idee, wie ich das damit umsetze?

Code: Alles auswählen

triggers:
  - id: "1"
    configuration:
      itemName: Wetterinformationen_GefuhlteTemperatur
      state: <=3
      previousState: ""
    type: core.ItemStateChangeTrigger
  - id: "2"
    configuration:
      cronExpression: 0 0 6 ? * MON,TUE,WED,THU,FRI *
    type: timer.GenericCronTrigger
conditions: []
actions:
  - inputs: {}
    id: "3"
    configuration:
      itemName: Thermostat2_Thermostatmode
      command: "1"
    type: core.ItemCommandAction
  - inputs: {}
    id: "4"
    configuration:
      itemName: Thermostat3_Thermostatmode
      command: "1"
    type: core.ItemCommandAction
Danke und Grüße

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

Re: Verwirrung bei den verschiedenen Scriptsprachen und: wenn temp. unter -3 , Heizung einschalten...

Beitrag von udo1toni »

Also... Die DSL (DomainSpecificLanguage) war mal abgekündigt, das ist aber aktuell vom Tisch. Dazu muss man vielleicht noch wissen, dass es bei der Entwicklung von OH3 ursprünglich Befürchtungen gab, die DSL würde das System ausbremsen und/oder instabil machen. Das hat sich aber als unbegründet herausgestellt. Die DSL ist etwas langsamer als andere Scriptsprachen, ist aber eben DomainSpecific, das heißt, man hat sehr einfachen Zugriff auf die Standardfunktionen, die bei den anderen Scriptsprachen teilweise umständlich eingebunden werden müssen.

Grundsätzlich kann man die Rules DSL standalone nutzen (in Textdateien im Verzeichnis /etc/openhab/rules/), aber man kann den Code genauso gut auch in UI Rules verwenden, mit kleinen Einschränkungen (dieselben Einschränkungen gelten im Übrigen für alle anderen Scriptsprachen in gleicher Weise, das ist also kein "Haken" der DSL, sondern ein Haken der UI Rules).

Die "Scriptsprache" in Deinem Beispiel ist gar keine Scriptsprache, sondern einfach die Definition einer Rule. Der Code ist yaml.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

habuser1
Beiträge: 21
Registriert: 1. Nov 2021 13:08
Answers: 0

Re: Verwirrung bei den verschiedenen Scriptsprachen und: wenn temp. unter -3 , Heizung einschalten...

Beitrag von habuser1 »

ahh danke Dir für die Erklärung.
Ich fürchte nun, dass ich mit yaml bzw dem klickibunti-Script-Generator an dieser Stelle mit meinem Temperaturvorhaben nicht weiterkomme und das nur per dsl-script machbar ist, oder?
Wäres unhöflich hierbei nach Hilfe zu fragen? ;)

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

Re: Verwirrung bei den verschiedenen Scriptsprachen und: wenn temp. unter -3 , Heizung einschalten...

Beitrag von udo1toni »

Du hast ja schon eine Rule, die Du über die UI angelegt hast, die sich um 6 Uhr darum kümmert, die Heizung einzuschalten. Du brauchst nun nur eine zweite Rule, welche eben um 5 Uhr ausgelöst wird. Nur fügst Du noch zusätzlich im Bereich "But only if" die Bedingung Außentemperatur < -3 ein.
openHAB4.3.5 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

habuser1
Beiträge: 21
Registriert: 1. Nov 2021 13:08
Answers: 0

Re: Verwirrung bei den verschiedenen Scriptsprachen und: wenn temp. unter -3 , Heizung einschalten...

Beitrag von habuser1 »

Hallo!
ja das war ja einfach :) danke für den Tip! Das macht ja Hoffnung, dass ich doch noch eine Weile mit der GUI auskommen kann ;-)

habuser1
Beiträge: 21
Registriert: 1. Nov 2021 13:08
Answers: 0

Re: Verwirrung bei den verschiedenen Scriptsprachen und: wenn temp. unter -3 , Heizung einschalten...

Beitrag von habuser1 »

Moin!
nun habe ich eine weitere Idee... ob das noch mit yaml geht? Ich glaube, ich benötige nun eine Variable... und zwar möchte ich die Heizungsregelung mit einem Fensterkontakt verbinden - wenn Fenster offen, dann Heizung aus (wenn sie an war...). Wenn dann das Fenster wieder geschlossen wird, soll sie wieder den vorherigen Status bekommen. Also nicht zwingend wieder angehen. Habe es grad mit der Temperatur gelöst.. ist aber nicht sinnvoll...

Habe es derzeit so:

Code: Alles auswählen

triggers:
  - id: "1"
    configuration:
      itemName: WindowStrip1_DoorSensor
      state: OPEN
    type: core.ItemStateChangeTrigger
conditions:
  - inputs: {}
    id: "3"
    configuration:
      itemName: ZWaveNode005SpiritThermostatOE_Thermostatmode
      state: "1"
      operator: =
    type: core.ItemStateCondition
actions:
  - inputs: {}
    id: "2"
    configuration:
      itemName: ZWaveNode005SpiritThermostatOE_Thermostatmode
      command: "11"
    type: core.ItemCommandAction


Wie kann ich bei "But only if" eine OR Verknüpfung machen?
Die Heizung soll ausgehen, wenn sie auf HEAT (1) oder FULL POWER (15) ist.
..oder, wenn sie "nicht aus" ist?

Code: Alles auswählen

triggers:
  - id: "1"
    configuration:
      itemName: WindowStrip1_DoorSensor
      state: CLOSED
    type: core.ItemStateChangeTrigger
conditions:
  - inputs: {}
    id: "3"
    configuration:
      itemName: ThermostatOE_Currenttemperature
      state: "20.5"
      operator: <
    type: core.ItemStateCondition
actions:
  - inputs: {}
    id: "2"
    configuration:
      itemName: ZWaveNode005SpiritThermostatOE_Thermostatmode
      command: "1"
    type: core.ItemCommandAction
Danke und grüße!

Antworten