Rule: Variable übergeben?

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
noxx
Beiträge: 16
Registriert: 28. Dez 2017 13:08
Answers: 0

Rule: Variable übergeben?

Beitrag von noxx »

Hallo

aus dem eng Forum habe ich mir folgende Regel kopiert:

Code: Alles auswählen

import org.joda.time.* // I don't think this should be required but I get errors when I don't include it

// System started to calculate the current time period in case the time period changed when OH was down
rule "Get time period for right now"
when
    System started or
    Time cron "0 0 6 * * ? *" or           // Morning start
    Item Sunrise_Event received update ON or  // Day start
    Item Evening_Event received update ON or  // Evening start
    Time cron "0 0 22 * * ? *"             // Night start
then
    // Sleep for just a bit to make sure we are not exactly on the time period boundary
    Thread::sleep(50)

    // Get the time period start times for today
    val morningStart = now.withTimeAtStartOfDay.plusHours(6).millis 
    val sunriseStart = new DateTime((Sunrise_Time.state as DateTimeType).calendar.timeInMillis)
    val eveningStart = new DateTime((Twilight_Time.state as DateTimeType).calendar.timeInMillis)
    val nightStart   = now.withTimeAtStartOfDay.plusHours(22).millis

    // Calculate the current time period
    var currPeriod = "Night"
    if(now.isAfter(morningStart) && now.isBefore(sunriseStart))      currPeriod = "Morning"
    else if(now.isAfter(sunriseStart) && now.isBefore(eveningStart)) currPeriod = "Day"
    else if(now.isAfter(eveningStart) && now.isBefore(nightStart))   currPeriod = "Evening"

    // Send the current time of day if it has changed
    if(TimeOfDay.state.toString != currPeriod){
        TimeOfDay.sendCommand(currPeriod)
    }
end
Ich möchte nun die Variable "currPeriod" in einer zweiten Regel nutzen, wie übergibt man diese?

Code: Alles auswählen

...
then
if (currPeriod != "Day") ...
Im Moment gibt so einen Fehler: The name 'currPeriod' cannot be resolved to an item or type

Gruß

PS: Beim obrigen Script bekomme ich den hinweis: The type TimeOfDay is deprecated

Benutzeravatar
seppy
Beiträge: 738
Registriert: 24. Sep 2015 20:25
Answers: 4
Wohnort: Bonn

Re: Rule: Variable übergeben?

Beitrag von seppy »

Hi,
das geht so nicht! Du musst die Variable außerhalb der Regel definieren, also im Kopf der Ruledatei. Besser aus meiner Sicht ist es aber über Items zu gehen.
Grüße,
Seppy
Homematic und HomematicIP über Raspberrymatic (RaspPi 4 4GB) mit 2x HMLAN. Steuerung und Visualisierung durch OpenHAB2 auf RaspPi in Hutschienengehäuse im Sicherungskasten. Rund 100 Aktoren/Sensoren

- Abgesichert durch APC USV
- Bewässerungssteuerung mit Hunter Magnetventilen (HM-LC-Sw4-DR)
- Beleuchtungssteuerung Innen und Aussen (HM-LC-Sw4-DR + HM-LC-SW1-FM + HMW-IO-12-SW7-DR)
- Rolladensteuerung mit Beschattungsautomatik über Temperaturdifferenzsensor (HM-LC-Bl1PBU-FM)
- Wetter und Unwetterinformationen von wunderground
- Benachrichtigung der Bewohner via Pushover
- Multimediawand und Dreambox Steuerung (HM-LC-SW1-FM)
- Heizungssteuerung mit Komfort und Energiesparfunktionen (HM-CC-RT-DN + HM-Sec-SC-2 + HMIP-eTRV-2)
- Werkstatt Kompressorsteuerung (HMW-IO-12-SW7-DR)
- Weihnachtsbeleuchtung außen
- Präsenzerkennung über Geolocation (iCloud Binding), iBeacon und WLAN (Unifi Binding)
- Philips HUE & Tasmota Devices (Tuya) Einbindung

Antworten