Garagentor Rule mit Zeitraum

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

dreamerbb
Beiträge: 1
Registriert: 3. Okt 2017 13:25

Re: Garagentor Rule mit Zeitraum

Beitrag von dreamerbb »

Hallo Smarthomeler,

ich habe leider vergeblich versucht, eine etwas modizifierte Regel anzuwenden. Anwendungsfall ist ebenfalls ein Garagentoröffner, der bei einem offenstehenden Kontakt von mehr als 5 Minuten eine Nachricht raussendet.

Habt Ihr eine Idee, woran das liegen könnte?

Vielen Dank und viele Grüße,
db

Hier meine Rule:


rule "Nebeneingangstüre ist länger als 1 Minute geöffnet"

when

Item zwave_device_5d01b5c9_node12_sensor_door changed from CLOSED to OPEN

then
if (zwave_device_5d01b5c9_node12_sensor_door.state == OPEN)
(zwave_device_5d01b5c9_node12_sensor_door.changedSince(now.minusMinutes(1))){


sendMail("8sxwzdy1gj@pomail.net", "**Nebeneingangstüre ist >1min geöffnet!**", "**Nebeneingangstüre schließen!**")}

end

sami77
Beiträge: 85
Registriert: 25. Sep 2017 19:04
Answers: 1

Re: Garagentor Rule mit Zeitraum

Beitrag von sami77 »

Hallo hallo,


ich bin noch ein relative Newbie und möchte einen ähnlichen Fall umsetzen, warte aber noch auf meine Schalter und Sensoren. Wie verwaltet ihr eure Rulesets? In HABmin, New, und dann quellcode rein?

Stelle ich mir das so richtig vor?

1000 Dank!

VG
Uwe

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

Re: Garagentor Rule mit Zeitraum

Beitrag von Cyrelian »

hallo Ihr zwei,

so hab ich das gelöst:

Code: Alles auswählen

/* -------------  Garage ist offen (länger als 15 Minuten zwischen 18:00 - 08:00) --------------------
*/

 rule "Garage ist länger als 15 Minuten geöffnet (18:00 - 08:00)"
 	when
		Time cron "0 0/15 18-8 * * ?"
	then
		if (GarageTorsensor.state == OFF && !GarageTorsensor.changedSince(now.minusMinutes(15))){
			var String sensorState = transform("MAP","contact.map",GarageTorsensor.state.toString)
	        logInfo(filename, "Garage ist länger als 15 Minuten geöffnet")
	        //sendTelegram("MyopenHABbot","Garagentor ist " + sensorState)
	        pushover("Garagentor ist " + sensorState)
			//Lautstärke setzen
			gSonosNotificationVolume?.members.forEach[sonosV |
                logInfo(filename, "Setze Notify Lautstärke auf \"50\" für Sonos Member \"" + sonosV.name + "\"")
                sonosV.sendCommand(50 as Number)
        	]
        	//Sende Notification
			say ("Die Garage ist noch offen")

		} else {
		logInfo(filename, "Garagentor ist geschlossen")
		}
 end
Damit solltet ihr Eur Vorhaben umsetzen können ;) .
CYA
Cyrelian

sami77
Beiträge: 85
Registriert: 25. Sep 2017 19:04
Answers: 1

Re: Garagentor Rule mit Zeitraum

Beitrag von sami77 »

Danke für den Tipp!!!

Du hattest das vorher mit WhatsApp, statt mit Sonos. Lief das nicht so gut mit den Mitteilungen per WhatsApp?

Das funktioniert doch auch genau so in openHAB 2, oder?

1000 Dank und Gruß!
Uwe

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

Re: Garagentor Rule mit Zeitraum

Beitrag von Cyrelian »

Hi Uwe,

WhatsApp lief nicht wirklich rund. Ich habe alles jetzt auf Pushover und Sonos umgestellt. Das läuft super stabil.
Ja, mit OH2 läuft das. Das ist meine aktuelle Rule in OH2.

CU
Cyrelian

sami77
Beiträge: 85
Registriert: 25. Sep 2017 19:04
Answers: 1

Re: Garagentor Rule mit Zeitraum

Beitrag von sami77 »

Super Danke!

Das mit dem Pushover muss ich mir noch mal anschauen, mit dem Sonos würde meine Frau verrückt werden! :-)

Dein Sensorstate ist "OFF", ich dachte meiner ist "Closed", wie finde ich das denn raus?

1000 Dank und Gruß!
Uwe

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

Re: Garagentor Rule mit Zeitraum

Beitrag von Cyrelian »

HI Uwe,

das liegt an dem Sensor den ich habe. Das ist der hm-sec-tis. Der kennt nur ON/OFF. Den findest du ganz einfach über die REST Api im openHAB raus. Einfach unter ITEMS\GET.
Ja, der WAF (woman acceptance factor) ist sehr wichtig bei der Hausautomatisierung :D

CU
Cyrelian

sami77
Beiträge: 85
Registriert: 25. Sep 2017 19:04
Answers: 1

Re: Garagentor Rule mit Zeitraum

Beitrag von sami77 »

Hi Cyrelian,

ich hab deine Rule ein bisschen auf meine Sensoren angepasst und ein paar Fehlermeldungen bekommen:
2017-10-23 13:48:04.407 [INFO ] [el.core.internal.ModelRepositoryImpl] - Refreshing model 'Garage.rules'
2017-10-23 13:48:04.450 [WARN ] [el.core.internal.ModelRepositoryImpl] - Configuration model 'Garage.rules' is either empty or cannot be parsed correctly!
2017-10-23 13:48:05.510 [INFO ] [el.core.internal.ModelRepositoryImpl] - Validation issues found in configuration model 'Garage.rules', using it anyway:
There is no context to infer the closure's argument types from. Consider typing the arguments or put the closures into a typed context.
2017-10-23 13:48:05.529 [INFO ] [el.core.internal.ModelRepositoryImpl] - Loading model 'Garage.rules'
==> /var/log/openhab2/events.log <==
2017-10-23 13:48:20.203 [vent.ItemStateChangedEvent] - ZWaveNode9_DoorSensor changed from CLOSED to OPEN
==> /var/log/openhab2/openhab.log <==
2017-10-23 13:49:00.687 [ERROR] [ntime.internal.engine.ExecuteRuleJob] - Error during the execution of rule Garage ist länger als 15 Minuten geöffnet (13:00 - 08:00): An error occurred during the script execution: The name 'filename' cannot be resolved to an item or type.
Kannst du mir da aus dem Stehgreif ein bisschen was zu sagen?

In diesem Teil der Rule:
if (ZWaveNode9_DoorSensor.state == CLOSED && !ZWaveNode9_DoorSensor.changedSince(now.minusMinutes(1))){
var String sensorState = transform("MAP","contact.map",ZWaveNode9_DoorSensor.state.toString)
logInfo(filename, "Garage ist länger als 1 Minuten geöffnet")
Ich verstehe das so, dass nach dem Ablauf der einen Minute der SensorState in einen String verwandelt wird, der dann später bei pushover eingesetzt wird. Was ist denn die "contact.map", ist das die Sitemap auf der dann der Status angezeigt wird?
Verstehe ich es weiter richtig, dass dann ein Logfile mit dem Namen "Garage ist länger als 1 Minute geöffnet" erzeugt wird, was dann die Stati listet?

Sorry für die vielen Fragen, bin eben noch dabei mich da reinzufuchsen... :-)

VG Uwe

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

Re: Garagentor Rule mit Zeitraum

Beitrag von Cyrelian »

Hi Uwe,
2017-10-23 13:49:00.687 [ERROR] [ntime.internal.engine.ExecuteRuleJob] - Error during the execution of rule Garage ist länger als 15 Minuten geöffnet (13:00 - 08:00): An error occurred during the script execution: The name 'filename' cannot be resolved to an item or type.
Du musst ganz oben in der Rule-Datei das eintragen:

Code: Alles auswählen

val String filename = "XXX.rules"
Das XXX durch den Namen der Rule-Datei ersetzen.

Code: Alles auswählen

Ich verstehe das so, dass nach dem Ablauf der einen Minute der SensorState in einen String verwandelt wird, der dann später bei pushover eingesetzt wird.
Absolut richtig ;)
Was ist denn die "contact.map", ist das die Sitemap auf der dann der Status angezeigt wird?

Auch das ist korrekt. Das habe ich in meiner contact.map:

Code: Alles auswählen

CLOSED=geschlossen
OPEN=offen
ON=geschlossen
OFF=offen
-=-Fehler bei der Initialisierung-
Verstehe ich es weiter richtig, dass dann ein Logfile mit dem Namen "Garage ist länger als 1 Minute geöffnet" erzeugt wird, was dann die Stati listet?
Nein, dadurch wird keine neu LOG-Datei erzeugt, sondern in der openhab.log folgender Eintrag:

Code: Alles auswählen

2017-10-23 18:00:00.053 [INFO ] [.smarthome.model.script.system.rules] - Garage ist länger als 15 Minuten geöffnet
CU
Cyrelian

sami77
Beiträge: 85
Registriert: 25. Sep 2017 19:04
Answers: 1

Re: Garagentor Rule mit Zeitraum

Beitrag von sami77 »

Danke noch mal!

Ich hatte die ganze Zeit noch keine Zeit, das mal zu testen und nun hab ich mir folgendes gedacht, denkst du das könnte so passen?

Konnte es noch nicht richtig testen...

Code: Alles auswählen

var String filename = Garage.rules


/* -------------  Garage ist offen (länger als 15 Minuten zwischen 17:00 - 08:00) --------------------
*/
rule "Garage ist länger als 15 Minuten geöffnet (17:00 - 08:00)"
	when
		Time cron "0 0/15 17-8 * * ?"
then
	if (ZWaveNode9_DoorSensor.state == OPEN && ZWaveNode9_DoorSensor.changedSince(now.minusMinutes(15)))
	{ logInfo(filename, "Garage ist länger als 15 Minuten geöffnet")
		
  
//Sende Notification
	sendMail("harry@hirsch.com", "**Garagentor ist >15min geöffnet!**", "**Garagentor schließen!**")}

	else {
    sendMail("harry@hirsch.com", "**Garage ist zu!**", "**Garage**")}
		
end
Fällt dir noch was auf, würdest du was anders machen?

VG Uwe

Antworten