Müssen Variablen deklariert werden

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Antworten
Skully
Beiträge: 25
Registriert: 26. Jan 2018 21:11
Answers: 0

Müssen Variablen deklariert werden

Beitrag von Skully »

Ich habe noch ein Frage die mich brennend interessiert:

Müssen Vaiablen in der .rules vorher deklariert werden. Ich kenne das so aus C++, dass Variablen am Anfang der Seite deklariert werden müssen. Ich habe beides schon getestet, mit vorher deklarieren und ohne. Und beides scheint irgendwie zu funktionieren. (Glaube ich zumindest :D )

Wenn ich Variablen mit:

Code: Alles auswählen

rule "Init virtual Items"

when
    System started
then

var Zahl_1                //oder
var Zahl_2 = 1          //oder
var double Zahl_3    

[...code...]
end
deklariere kommt bei mir ein Fehler. Oder müssen die Variablen in der .item deklariert werden? Oder funktioniert das nur mit .state?

Code: Alles auswählen

var Zahl_1.state 

hr3
Beiträge: 210
Registriert: 23. Mai 2017 21:41
Answers: 0

Re: Müssen Variablen deklariert werden

Beitrag von hr3 »

Variablen müssen deklariert werden. https://docs.openhab.org/configuration/rules-dsl.html

Code: Alles auswählen

var Zahl_1 
ist ungültig, da weder ein Type noch Value angegeben wurde.

Skully
Beiträge: 25
Registriert: 26. Jan 2018 21:11
Answers: 0

Re: Müssen Variablen deklariert werden

Beitrag von Skully »

Meine Regeln funktionieren aber auch ohne deklaration. Das finde ich ja das komische.
The Variable Declarations section can be used to declare variables that should be accessible to all rules in this file. You can declare variables with or without initial values and modifiable or read-only.
Das hört sich für mich an wie wenn ich keinen Wert deklarieren müsste. Was meinst du mit "Type"?

hr3
Beiträge: 210
Registriert: 23. Mai 2017 21:41
Answers: 0

Re: Müssen Variablen deklariert werden

Beitrag von hr3 »

Mit Type meine ich z.B. double, wie du es in deinem dritten Beispiel verwendet hast.
Dann poste doch bitte mal dein Beispiel ohne Deklaration.

Skully
Beiträge: 25
Registriert: 26. Jan 2018 21:11
Answers: 0

Re: Müssen Variablen deklariert werden

Beitrag von Skully »

Code: Alles auswählen

rule "Cron_Heizungs_Automatisierung"
when
	Time cron "5 0/5 * * * ?" //At second :05, every 5 minutes starting at minute :00, of every hour
then

var hour = now.getHourOfDay
var min = now.getMinuteOfHour
var wd = now.getDayOfWeek

	
// Wochentags (Mo - Fr) **Bad**
if (Badautomatik_Hz_ein_aus.state == 1 && wd <= 5){

		
		//6:00 Uhr Aufheizperiode Bad EIN
 
		if ((hour.state == 6 && min.state <= 5) && (TemperaturBad.state < 23)) { //23?C Maximal Temperatur dnach abregelung
		Heizung_Switch_Ba.sendCommand(ON)

		Bad.postUpdate(Badtemperatur_Soll_Setpoint)
	        Badtemperatur_Soll_Setpoint.postUpdate(23)
		}

		//7:00 Uhr Aufheizperiode Bad AUS

		if (hour.state == 7 && min.state <= 5) {
		Heizung_Switch_Ba.sendCommand(OFF)

		Badtemperatur_Soll_Setpoint.postUpdate(Bad)
		}		
}



// Wochentags (Mo - Fr) **Wohnzimmer**
if (Wonautomatik_Hz_ein_aus.state == 1 && wd <= 5){


		//15:30 Uhr Aufheizperiode Wohnzimmer EIN 
		if ((hour.state == 15 && min.state <= 30) && (TemperaturWon.state < 23)) { //23?C Maximal Temperatur
		Heizung_Switch_Won1.sendCommand(ON)
            	Heizung_Switch_Won2.sendCommand(ON)

		won.postUpdate(Wontemperatur_Soll_Setpoint)
		Wontemperatur_Soll_Setpoint.postUpdate(23)
		}

		//16:00 Uhr Aufheizperiode Wohnzimmer AUS
		if (hour.state == 16 && min.state <= 5) {
		Heizung_Switch_Won1.sendCommand(OFF)
            	Heizung_Switch_Won2.sendCommand(OFF)
		Wontemperatur_Soll_Setpoint.postUpdate(Won) //*************
		}
}
end

Hier zum Beispiel die Variable Won oder Bad. Sie taucht nur hier auf und dient zum Zwischenpeichern des aktuellen eingestellten Reglerwertes.
Ich habe sie so nicht vorher deklariert.

hr3
Beiträge: 210
Registriert: 23. Mai 2017 21:41
Answers: 0

Re: Müssen Variablen deklariert werden

Beitrag von hr3 »

Entweder handelt es sich um ein Item oder die Anweisung wird nicht ausgeführt.

Antworten