Seite 1 von 1

Zeitangabe im HabPanel - OpenHAB 3 & Temperatursensor

Verfasst: 20. Mai 2021 06:33
von Wolle39
Hallo zusammen.

Diese Rule funktioniert soweit wunderbar.
An einer Sonoff 4ChPro habe ich einen Temperatursensor DS18B20 rangelötet.
Temperatur wird angezeigt und Channel 2 & 4 werden jetzt mal zusammen geschaltet.

Das Problem ist, das dies Werte (Temperatur) quasi fest hinterlegt sind.
Ich bräuchte die Möglichkeit, im HabPanel die Temperatur Min. und Max. auszuwählen.

Code: Alles auswählen

// globale Variablen werden vor der ersten Rule definiert
var Timer tDelay = null

rule "Hühnerhaus Heizlampe"
when
    Item Sonoff1_Sonoff1_Temperatur changed

then
    var Temperatur = (Sonoff1_Sonoff1_Temperatur.state as Number).floatValue
    if (Temperatur <= 22|°C) {
        Sonoff1_Sonoff1_Kanal2.sendCommand (ON)   
       Sonoff1_Sonoff1_Kanal4.sendCommand (ON)
        tDelay?.cancel
    }
    if (Temperatur >=25|°C) {
        Sonoff1_Sonoff1_Kanal2.sendCommand (OFF)
        tDelay = createTimer(now.plusSeconds(5), [ |
            Sonoff1_Sonoff1_Kanal4.sendCommand (OFF)
        ])
    }
end
Am liebsten noch mit Zeitfunktion.

z.B.
Wenn <=22| °C ab 08.00 Uhr - 13.00 Uhr

Geht sowas?

Danke für eure Hilfe.

Gruß Wolle

Re: Zeitangabe im HabPanel - OpenHAB 3 & Temperatursensor

Verfasst: 20. Mai 2021 07:07
von Pepe1907
Wolle39 hat geschrieben:Hallo zusammen.

Diese Rule funktioniert soweit wunderbar.
An einer Sonoff 4ChPro habe ich einen Temperatursensor DS18B20 rangelötet.
Temperatur wird angezeigt und Channel 2 & 4 werden jetzt mal zusammen geschaltet.

Das Problem ist, das dies Werte (Temperatur) quasi fest hinterlegt sind.
Ich bräuchte die Möglichkeit, im HabPanel die Temperatur Min. und Max. auszuwählen.

Code: Alles auswählen

// globale Variablen werden vor der ersten Rule definiert
var Timer tDelay = null

rule "Hühnerhaus Heizlampe"
when
    Item Sonoff1_Sonoff1_Temperatur changed

then
    var Temperatur = (Sonoff1_Sonoff1_Temperatur.state as Number).floatValue
    if (Temperatur <= 22|°C) {
        Sonoff1_Sonoff1_Kanal2.sendCommand (ON)   
       Sonoff1_Sonoff1_Kanal4.sendCommand (ON)
        tDelay?.cancel
    }
    if (Temperatur >=25|°C) {
        Sonoff1_Sonoff1_Kanal2.sendCommand (OFF)
        tDelay = createTimer(now.plusSeconds(5), [ |
            Sonoff1_Sonoff1_Kanal4.sendCommand (OFF)
        ])
    }
end
Am liebsten noch mit Zeitfunktion.

z.B.
Wenn <=22| °C ab 08.00 Uhr - 13.00 Uhr

Geht sowas?

Danke für eure Hilfe.

Gruß Wolle
Dann nimmst du einfach 2 separate Regeln die eine die um 8 Uhr triggert und dann Temperatur abfragt und die andere die um 13 Uhr triggert und alles ausschaltet :)

Gesendet von meinem SM-G981B mit Tapatalk


Re: Zeitangabe im HabPanel - OpenHAB 3 & Temperatursensor

Verfasst: 20. Mai 2021 07:19
von Wolle39
Schon klar.

Allerdings geht es darum im HabPanel die Temperatur oder Zeit einstellen zu können, die dann von der Rule abgegriffen wird.
Wie bekomme ich eine Zeitauswahl von - bis und eine Temperaturauswahl von - bis ins HabPanel?

Re: Zeitangabe im HabPanel - OpenHAB 3 & Temperatursensor

Verfasst: 24. Mai 2021 12:42
von Wolle39
Hat hier niemand einen Rat?

Re: Zeitangabe im HabPanel - OpenHAB 3 & Temperatursensor

Verfasst: 24. Mai 2021 17:41
von udo1toni
Die Temperaturauswahl machst Du über ein passendes Item.
Für die Uhrzeit musst Du Dir halt entsprechende Felder bauen, denn die Entwickler von openHAB wollen bis heute nicht einsehen, dass man in einem Smarthome unbedingt weiterhin unsmarte Herangehensweisen umsetzen muss ;)

Spaß beiseite: Es gibt für die "Schaltuhr" Funktion diverse Beispiele, die teils mit hohem Aufwand dafür sorgen, dass man mit den zur Verfügung stehenden Feldern Stunde, Minute und teilweise Wochentag auswählen kann. Mit passenden Regeln wird dann die Schaltzeit entsprechend ausgeführt.

Eleganter wäre es, einen Terminkalender anzuflanschen und in diesem die Schaltzeiten einzutragen (ging z.B. mit dem gcal Binding gegen den Google Kalender super bequem). Die Bedienung der Schaltzeiten erfolgt dann halt nicht über die openHAB Oberfläche, aber die ist halt auch nicht für solche Aktionen gedacht.
Das Ändern von Schaltzeiten übernimmt erfahrungsgemäß der Administrator der Anlage ;) oftmals geht es auch gar nicht darum, die Uhrzeit minutengenau als Uhrzeit auszuwählen, sondern z.B. für Schichtdienstler eine von z.B. fünf möglichen Zeiten auszuwählen. Wenn man das dann noch automatisiert vom Dienstplan ableiten kann, will niemand mehr einen Knopf in der UI ;)

Re: Zeitangabe im HabPanel - OpenHAB 3 & Temperatursensor

Verfasst: 29. Mai 2021 10:38
von Wolle39
Hallo Udo.

Ok, scheint gar nicht so einfach zu sein.
Was ganz einfaches... Wie bekomme ich ein Item das z. B. Ja, Nein, Später zur Auswahl hat. Danke schon mal.
Gruß Wolfi

Re: Zeitangabe im HabPanel - OpenHAB 3 & Temperatursensor

Verfasst: 29. Mai 2021 13:40
von udo1toni
Nicht auf direktem Weg, da Ja/Nein/Später nicht im Itemmodell vorgesehen ist.

Du kannst stattdessen ein Number Item verwenden, dessen Werte Du z.B. auf 0, 1 oder 2 setzt.
Dann legst Du ein Mapping an, welches die Werte 0, 1 und 2 auf Nein, Ja und Später mappt.
Abschließend definierst Du die Eingabe über Schaltflächen, die Du entsprechend mit Nein, Ja und Später beschriftest.
Alternativ kannst Du auch ein String Item verwenden und die Worte direkt hinterlegen, das ist aber eigentlich nicht so gut (schon weil das Wort Später einen Umlaut enthält).


Gesendet von iPad mit Tapatalk

Re: Zeitangabe im HabPanel - OpenHAB 3 & Temperatursensor

Verfasst: 9. Jun 2021 09:31
von Wolle39
Hallo Udo,

habe den Weg zum Testen mal über Model -Item (String) anlegen genommen.
Im neuen Items über die State Description 1=1, 5=5 eingegeben.
Entsprechend dann das Items in der Sitemap zur Auswahl eingebunden. Dort kann ich jetzt die 1 oder 5 auswählen.
Im Visual Studio Code in der Rule steht mal folgender Code.

Code: Alles auswählen

rule "Hühnerhaus_Licht_Zeitschaltung"
when 
	Item Sonoff1_Sonoff1_Kanal1 changed from OFF to ON
then
createTimer(now.plusMinutes(Timer_Hühnerhaus_Licht))
        [|
            sendCommand(Sonoff1_Sonoff1_Kanal1, OFF)
        ]
end
Beim Timer_Hühnerhaus_Licht wird beim Mauszeiger auch dann (in meinem Fall) die 1 angezeigt.
Jedoch greift die 1 dann nicht. Wenn ich dort eine Zahl statt Timer_Hühnerhaus_Licht eingebe funktioniert die Rule.

Was mache ich da falsch?

Gruß Wolle

Re: Zeitangabe im HabPanel - OpenHAB 3 & Temperatursensor

Verfasst: 9. Jun 2021 21:16
von udo1toni
Ich habe keine Ahnung, was Du da beschreibst. Es ergibt keinerlei Sinn.

Punkt 1: Die State Description legt fest, wie der Status angezeigt wird. Man kann dort aber keine Wertepaare hinterlegen.
Punkt 2: plusMinutes erwartet Integer als Parameter. Du schreibst ein Item rein. Aber selbst, wenn Du (wenigstens) Item.state eingetragen hättest, wäre dieser Status ja immer noch ein Status. Und Da Du das Item als String definiert hast (wenn ich das korrekt verstanden habe) wäre es immer noch maximal ein String, kein Integer.
Punkt 3: Ich hatte ja eigentlich was anderes beschrieben. So:
Item:

Code: Alles auswählen

Number Timer_Huehnerhaus_Licht "Einschaltdauer [%.0f]"
Rule:

Code: Alles auswählen

var Timer tChicken = null

rule "Licht Huehnerhaus"
when
    Item Sonoff1_Sonoff1_Kanal1 changed
then
    tChicken?.cancel
    var Integer iTime = 5 // Default Value
    if(Timer_Huehnerhaus_Licht.state instanceof Number)
        iTime = (Timer_Huehnerhaus_Licht.state as Number).intValue
    if(Sonoff1_Sonoff1_Kanal1.state == ON)
        tChicken = createTimer(now.plusMinutes(iTime),[|
            Sonoff1_Sonoff1_Kanal1.sendCommand(OFF)
        ])
end
Sitemap:

Code: Alles auswählen

Setpoint item=Timer_Huehnerhaus_Licht minValue=2 maxValue=20 step=1// Wert einstellbar
Switch item=Timer_Huehnerhaus_Licht mappings=[2="2",5="5",9="neun",20="max"] // Auswahl über Schaltflächen
Selection item=Timer_Huehnerhaus_Licht mappings=[2="2",5="5",9="neun",20="max"] // Auswahl über Liste
Im HABpanel kann man die Widgets ebenso abbilden, muss dann halt dort konfiguriert werden. Die Main UI kann das natürlich auch (in anderer Form).

Die Rule kümmert sich auch darum, den Timer zu canceln, falls das Licht vorzeitig abgeschaltet wird.