Rolladen in Ausgangsposition(previous state) fahren

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Rolladen in Ausgangsposition(previous state) fahren

Beitrag von Cyrelian »

Hallo zusammen,

mit folgender Rule fahre ich meine Rolladen wieder in die Ausgangsposition zurück.

Code: Alles auswählen

import java.util.Map


var Map shutterPreviousState = null


rule "Küche lüften (öffnen)"

when
		Item EGKuecheFenstersensor changed from CLOSED to OPEN
then
		if (EGKuecheRolladenFenster.state == 100){
			logInfo("AbschattungRules:Rolladen Küche lüften", "Küche lüften (öffnen)")
			shutterPreviousState = storeStates(EGKuecheRolladenFenster)
			logInfo("AbschattungRules:Rolladen Küche lüften", "Küche lüften (öffnen)"+ shutterPreviousState)
			sendCommand(EGKuecheRolladenFenster, 80)
		}
end


rule "Küche lüften (schließen)"

when
		Item EGKuecheFenstersensor changed from OPEN to CLOSED
then
		if (EGKuecheRolladenFenster.state != 100){
			logInfo("AbschattungRules:Rolladen Küche lüften", "Küche lüften (schließen)")
			restoreStates(shutterPreviousState)
			shutterPreviousState = null
		}
end
Was mir noch fehlt, währe in der

Code: Alles auswählen

rule "Küche lüften (schließen)"
eine Abfrage auf die

Code: Alles auswählen

shutterPreviousState
, ob hier der vorherige State = 100 ist. Leider ist mir das bisher noch nicht gelungen, da das

Code: Alles auswählen

{EGKuecheRolladenFenster (Type=RollershutterItem, State=100)=100}
der Output der

Code: Alles auswählen

shutterPreviousState
ist und ich nicht weiß wie man das filtert. Alles was ich bisher im Netz dazugefunden habe, war "für mich" zu kompliziert :)

@Seppy, danke für den Tip mit dem "var MAP"

Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Re: Rolladen in Ausgangsposition(previous state) fahren

Beitrag von Cyrelian »

Hi,

hab mittlerweile ne Lösung die sehr gut funktioniert.

Code: Alles auswählen

rule "Küche (öffnen)"

when
		Item EGKuecheFenstersensor changed from CLOSED to OPEN
then
		if (EGKuecheRolladenFenster.state == 100){
			logInfo("RolladenRules:Rolladen Küche", "Fenster (öffnen)")
			shutterPreviousState = storeStates(EGKuecheRolladenFenster)
			//logInfo("RolladenRules:Rolladen Küche", "Fenster (öffnen)"+ shutterPreviousState)
			sendCommand(EGKuecheRolladenFenster, 80)
		}
end


rule "Küche (schließen)"

when
		Item EGKuecheFenstersensor changed from OPEN to CLOSED
then
		if (EGKuecheRolladenFenster.state != 100){
			logInfo("RolladenRules:Rolladen Küche", "Fenster (schließen)")
			restoreStates(shutterPreviousState)
			shutterPreviousState = null
		}
end
vg

Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Re: Rolladen in Ausgangsposition(previous state) fahren

Beitrag von Cyrelian »

Hi,
nun würde ich das gerne noch erweitern um die Abfrage auf den "shutterPreviousState.state"

das scheint aber nicht zu klappen. Designer sagt zwar OK, aber die Rule zieht nicht :(

Code: Alles auswählen

var Map shutterPreviousState = null
Das steht in der "shutterPreviousState "

Code: Alles auswählen

{EGKuecheRolladenFenster (Type=RollershutterItem, State=100)=100}

Code: Alles auswählen

rule "Küche (schließen)"

when
		Item EGKuecheFenstersensor changed from OPEN to CLOSED
then
		if (EGKuecheRolladenFenster.state != 100 && shutterPreviousState.get(EGKuecheRolladenFenster.state) == 100){
			logInfo("RolladenRules:Rolladen Küche", "Fenster (schließen)")
			restoreStates(shutterPreviousState)
			shutterPreviousState = null
		}
end
vg

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

Re: Rolladen in Ausgangsposition(previous state) fahren

Beitrag von seppy »

Ich bin mir nicht sicher, aber wenn dann so

Code: Alles auswählen

shutterPreviousState.get(EGKuecheRolladenFenster).state
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

Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Re: Rolladen in Ausgangsposition(previous state) fahren

Beitrag von Cyrelian »

Hi,

da meckert der Designer

Code: Alles auswählen

Couldn't resolve reference to JvmIdentifiableElement 'state'.

snowy
Beiträge: 12
Registriert: 8. Jan 2016 11:22
Answers: 0

Re: AW: Rolladen in Ausgangsposition(previous state) fahren

Beitrag von snowy »

Also von der Syntax musst du das state weglassen.

Gesendet von meinem A0001 mit Tapatalk 2
- Homematic über 1x HMLAN an homegear.
- Hue u. Osram Ligthtify über Philips Bridge 2.0

Steuerung und Visualisierung durch OpenHAB auf RaspPi.
(PINE 64 bestellt :-)..)

Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Re: Rolladen in Ausgangsposition(previous state) fahren

Beitrag von Cyrelian »

würde also so aussehen?

Code: Alles auswählen

shutterPreviousState.get(EGKuecheRolladenFenster)==100
aber woher weiß er das ich den state will? :?:

snowy
Beiträge: 12
Registriert: 8. Jan 2016 11:22
Answers: 0

Re: Rolladen in Ausgangsposition(previous state) fahren

Beitrag von snowy »

Sorry ich habe nicht gesehen das es eine Map ist (Ist eine Map eine HashMap -> Java??)

Bist du dir sicher, dass das Objekt shutterPreviousState != null ist?

Code: Alles auswählen

shutterPreviousState.get(EGKuecheRolladenFenster.state)
Ich habe erst mit openHab angefangen, aber ich kann java programmieren. Deshalb muss ich noch sehen wie das alles zusammen spielt.

Eine Map geht ja so, dass du hier z.B (string,int) hast

Code: Alles auswählen

shutterPreviousState.put("EGKuecheRolladenFensterPos1", EGKuecheRolladenFenster.state)
wenn du dann den Wert willst musst du dann

Code: Alles auswählen

if (shutterPreviousState.get("EGKuecheRolladenFensterPos1") == 1000) {
tue was
}
- Homematic über 1x HMLAN an homegear.
- Hue u. Osram Ligthtify über Philips Bridge 2.0

Steuerung und Visualisierung durch OpenHAB auf RaspPi.
(PINE 64 bestellt :-)..)

Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Re: Rolladen in Ausgangsposition(previous state) fahren

Beitrag von Cyrelian »

Hi,

also die Rule "Küche öffnen" setzt den shutterPreviousState.

Dann ist sieht der Inhalt so aus. Das habe ich gerade nochmal gecheckt.

Code: Alles auswählen

{EGKuecheRolladenFenster (Type=RollershutterItem, State=100)=100}
Ob die Map = einer HashMap ist, weiß ich leider nicht.

Benutzeravatar
Cyrelian
Beiträge: 601
Registriert: 24. Sep 2015 17:55
Answers: 4

Re: Rolladen in Ausgangsposition(previous state) fahren

Beitrag von Cyrelian »

würde das dann so aussehen?

Code: Alles auswählen

if (EGWohnzimmerRolladenTuer.state == 100 && shutterPreviousState.get("State") == 100){

Antworten