01-07-2017, 12:50:31
(Dieser Beitrag wurde zuletzt bearbeitet: 01-07-2017, 12:54:46 von maxreiner.)
Hallo,
ich bin am Verzweifeln und brauche Hilfe:
Ich möchte in einer rule eine einfache Rechenoperation ausführen und zwar will ich die Differenz zweier Helligkeitswerte (von zwei Bewegungsmeldern, einer an der Nordost- und einer an der Südwestseite des Hauses) bilden. Das Ganze soll dazu dienen, festzustellen ob die Sonne scheint oder ob es nur einfach sehr hell ist (z.B. Sonnenschein nachmittags = Differenz => 5). Das scheint mir nur mit openhab realisierbar zu sein. Also eine rule kreiert:
var number Vorn = EingangsbereichHaustR_Helligkeit.state //Sensor auf der Hausvorderseite
var number Hinten = TerrassenHelligkeit.state //Sensor auf der Hausrückseite
rule "Sonnenschein"
when
Item Ausloeser1 changed //Auslöser nur hilfsweise zum probieren
then
var number Diff = Hinten - Vorn
sendCommand (Helligkeitsdifferenz, Diff) //Item, das nur in Openhab existiert und zur Anzeige des Ergebnisses dienen soll.
end
Und es passiert: nichts!
Wenn ich jetzt die Differenzbildung weglasse (var number Diff = Hinten ) oder (var number Diff = Vorn ), wird der jeweils aktuelle Helligkeitswert angezeigt, offenbar funktioniert also nur die Rechenoperation nicht.
Ich habe den Eindruck, dass es mit den Datentypen zusammenhängen könnte, denn wenn ich in den Deklarationen schreibe:
var int Vorn = <irgendeine Zahl, z.B. 10>
var int Hinten = <irgendeine Zahl, z.B 17>
var int Diff = Hinten - Vorn
geht es problemlos und es wird 7 angezeigt. Ebenso ganz ohne Datentyp, aber eben mit Zahlen. Mit number als Datentyp funktioniert es aber auch mit Zahlen nicht.
Und mit den Helligkeits-Items.state kann ich Datentypen einsetzen wie ich will - nichts geht.
Kann mir da jemand weiterhelfen? Meine Programmierkenntnisse sind leider sehr rudimentär.
Reiner
ich bin am Verzweifeln und brauche Hilfe:
Ich möchte in einer rule eine einfache Rechenoperation ausführen und zwar will ich die Differenz zweier Helligkeitswerte (von zwei Bewegungsmeldern, einer an der Nordost- und einer an der Südwestseite des Hauses) bilden. Das Ganze soll dazu dienen, festzustellen ob die Sonne scheint oder ob es nur einfach sehr hell ist (z.B. Sonnenschein nachmittags = Differenz => 5). Das scheint mir nur mit openhab realisierbar zu sein. Also eine rule kreiert:
var number Vorn = EingangsbereichHaustR_Helligkeit.state //Sensor auf der Hausvorderseite
var number Hinten = TerrassenHelligkeit.state //Sensor auf der Hausrückseite
rule "Sonnenschein"
when
Item Ausloeser1 changed //Auslöser nur hilfsweise zum probieren
then
var number Diff = Hinten - Vorn
sendCommand (Helligkeitsdifferenz, Diff) //Item, das nur in Openhab existiert und zur Anzeige des Ergebnisses dienen soll.
end
Und es passiert: nichts!
Wenn ich jetzt die Differenzbildung weglasse (var number Diff = Hinten ) oder (var number Diff = Vorn ), wird der jeweils aktuelle Helligkeitswert angezeigt, offenbar funktioniert also nur die Rechenoperation nicht.
Ich habe den Eindruck, dass es mit den Datentypen zusammenhängen könnte, denn wenn ich in den Deklarationen schreibe:
var int Vorn = <irgendeine Zahl, z.B. 10>
var int Hinten = <irgendeine Zahl, z.B 17>
var int Diff = Hinten - Vorn
geht es problemlos und es wird 7 angezeigt. Ebenso ganz ohne Datentyp, aber eben mit Zahlen. Mit number als Datentyp funktioniert es aber auch mit Zahlen nicht.
Und mit den Helligkeits-Items.state kann ich Datentypen einsetzen wie ich will - nichts geht.
Kann mir da jemand weiterhelfen? Meine Programmierkenntnisse sind leider sehr rudimentär.
Reiner