Keymatic makro - Verständnissproblem

Programmierung der HomeMatic CCU mittels contronics homeputer CL

Moderator: Co-Administratoren

Antworten
anbercht
Beiträge: 5
Registriert: 28.10.2014, 11:14

Keymatic makro - Verständnissproblem

Beitrag von anbercht » 03.10.2015, 22:37

Hallo,
ich habe nachfolgendes Szenario in ähnlicher weise schon im WebUi laufen gehabt.
Nun möchte ich es mit HP programmieren und habe das Problem, nicht alles zum Laufen zu bringen.
Mein Logik Verständnis für HP ist noch in den Kinderschuhen und die Hilfe zu den Befehlen hilft mir auch nicht wirklich weiter.
Hab es in verschiedensten Varianten versucht, aber immer funktioniert nur ein Teil, und schiesst
einen anderen Teil ab.
Wär super wenn einer helfen könnte.

An meiner Haustür ist eine Keymatic und ein optischer TFK. Wenn die Tür geschlossen wird soll nach ca 1 min. verriegelt werden.
Solange die Tür geöffnet ist natürlich nicht.
Mit dem öffnen der Tür und einem betimmten Helligkeitswert des Bewegungsmelders
soll das Licht für 5 Min eingeschaltet werden.
Ausserdem, und das war mein Problem soll 2x am Tag zwischen z.B. 6:00 und 7:00 die Tür automatisch ent- bzw danach wieder verriegelt werden.
Entweder es funktionierte gar nicht oder es wurde gleich wieder verriegelt.

Objekte:
Haustuer_Keymatic, Email ist zur Funktionsprüfung wird später nicht benötigt.

Code: Alles auswählen

//! ============================================================
//! OBJEKT Haustuer_Keymatic
//! ============================================================
//! OBJEKT-TYP              : Keymatic
//! BEZEICHNUNG             : KEQ085xxx2_1
//! STARTWERT               : verriegelt
//! ------------------------------------------------------------
//! AUSFÜHRUNGSINTERVALL    : nein
//! AUSFÜHRUNG BEI EINGABE  : nein
//! AUSFÜHRUNG BEI EMPFANG  : nein
//! AUSFÜHRUNG BEI ÄNDERUNG : ja
//! ------------------------------------------------------------
//! KONF.:5DAD2B4A0A7BAABA5A
//! VISU.:2DADBB9A997DABFA1DD92DEB4988B81A2B2B6B2BBD4A5DA94D2B09C8F85A9B7B1B7B7D0A2DE928F839588849788ADD8A5BCD4D8D9B1B8D1DCD8AEAFD5D0D4A6BBD0DBCCDDAED98092848F878397B
//!
//! ============================================================
//! ZEIT-TABELLE (kann [noch] nicht im Editor verändert werden)
//! ============================================================
//! WERT                TAG             UHRZEIT
//! ------------------------------------------------------------
//! entriegelt          Montag-Freitag  08:18:00
//! verriegelt          Montag-Freitag  08:35:00
//! entriegelt          Montag-Freitag  16:48:00
//! verriegelt          Montag-Freitag  17:05:00
//!
//! ============================================================
//! VARIABLENDEFINITIONEN
//! ============================================================
//! NAME                TYP                 STARTWERT
//! ------------------------------------------------------------
//! MailText            Zeichen


wenn Haustuer_Keymatic entriegelt dann
sendemail("xxxxxx@xxxxx.com"," Datum, Uhrzeit ", "Automatik entriegelt")
endewenn

wenn Haustuer_Keymatic verriegelt dann
sendemail("xxxxxx@xxxxx.com"," Datum, Uhrzeit ", "Automatik verriegelt")
endewenn  
Haustuer_Kontakt

Code: Alles auswählen

//! ============================================================
//! OBJEKT Haustuer_Kontakt
//! ============================================================
//! OBJEKT-TYP              : TuerFenster
//! BEZEICHNUNG             : LEQxxx2834_1
//! STARTWERT               : geschlossen
//! ------------------------------------------------------------
//! AUSFÜHRUNGSINTERVALL    : nein
//! AUSFÜHRUNG BEI EINGABE  : nein
//! AUSFÜHRUNG BEI EMPFANG  : ja
//! AUSFÜHRUNG BEI ÄNDERUNG : nein
//! ------------------------------------------------------------
//! KONF.:4DAD2BDD7BAABA5A
//! VISU.:3D9DABEA89280968C869D8984A69A8286ACB0B4B4BDD6A4D390968492988282A7988797BDD8A5BCD4D8D9B1B8D0DCD8AEAFD5D0D4A6BBD0DBCCDDAED98092848F878397B
//!
//! ============================================================
//! VARIABLENDEFINITIONEN
//! ============================================================
//! NAME                TYP                 STARTWERT
//! ------------------------------------------------------------
//! MailText            Zeichen


// Variable "MailText" anlegen; Typ Zeichen!
wenn Haustuer_Kontakt geöffnet dann
WARTE ("00:00:05")
MailText := "Die Haustuer ist" +" "+ Haustuer_Kontakt +" "+ Haustuer_Keymatic +" "+  Uhrzeit +" "+ Datum + "!"
Sendemail("xxxxxx@xxxxx.com","Info Haustuer",MailText)

	  endewenn

wenn Haustuer_Kontakt geschlossen dann
WARTE ("00:00:05")
MailText := "Die Haustuer ist" +" "+ Haustuer_Kontakt +" "+  Uhrzeit +" "+ Datum + "!"
Sendemail("andreas.berch@googlemail.com","Info Haustuer",MailText)
WARTE ("00:05:00")
MailText := "Die Haustuer ist" +" "+ Haustuer_Kontakt +" "+ Haustuer_Keymatic +" "+  Uhrzeit +" "+ Datum + "!"
Sendemail("xxxxxx@xxxxx.com","Info Haustuer",MailText)

	  endewenn
zu Steuerung hab ich ein Objekt angelegt vom Typ Makro
Haustuersteuerung

Code: Alles auswählen

//! ============================================================
//! OBJEKT Haustuersteuerung
//! ============================================================
//! OBJEKT-TYP              : Makro
//! BEZEICHNUNG             : Haustuersteuerung
//! STARTWERT               :
//! ------------------------------------------------------------
//! AUSFÜHRUNGSINTERVALL    : alle 10 Sekunden
//! AUSFÜHRUNG BEI EINGABE  : ja
//! AUSFÜHRUNG BEI EMPFANG  : nein
//! AUSFÜHRUNG BEI ÄNDERUNG : nein
//! ------------------------------------------------------------
//! KONF.:7DAD2DC3DDD7BAABA5A
//!
//! ============================================================
//! VARIABLENDEFINITIONEN
//! ============================================================
//! NAME                TYP                 STARTWERT
//! ------------------------------------------------------------


//schaltet Licht beim oeffnen fuer 5 Minuten
wenn Haustuer_Kontakt geöffnet und
  HofEingangvorne_Helligkeit kleiner 70 dann
   LichtGarageEingang einschalten für "00:05:00"
endewenn


// So-Mo-Di-Mi-Do-Fr-Sa
wenn Uhrzeit zwischen "08:17:00" und "08:36:00" dann
  wenn Wochentag =+ "0111110" dann
       Haustuer_Keymatic entriegeln
verlassen
   endewenn
endewenn


// So-Mo-Di-Mi-Do-Fr-Sa
wenn Uhrzeit zwischen "16:47:00" und "17:06:00" dann
  wenn Wochentag =+ "0111110" dann
       Haustuer_Keymatic entriegeln
verlassen
   endewenn
endewenn


//verhindert verriegeln bei offener Tuer
wenn Haustuer_Kontakt geöffnet dann
erledigt
	endewenn


//verriegelt zeitversetzt nach schliessen der Tuer
wenn Haustuer_Kontakt geschlossen dann
 wenn Stoppuhr(Haustuer_Kontakt.ct) groesser "00:01:30" dann
         Haustuer_Keymatic verriegeln
   endewenn
endewenn


Der erste Punkt funktioniert (Licht an bei Tür auf)
Hatte die Entriegelung Zeiten zuerst direkt im makro, was nicht funktionierte oder gleich darauf wieder verriegelt wurde.
Was mich auf die idee brachte es mit der Zeittabelle ent- bzw verriegeln und im makro es in diesen Zeiten zu verbieten - leider wars das auch nicht.

Hoffe ich hab alle Infos geschrieben, damit mir geholfen werden kann.


Viele Grüsse Andreas

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: Keymatic makro - Verständnissproblem

Beitrag von buempi » 04.10.2015, 09:30

Hallo Andreas

Wenn auf einen Zustand reagiert werden soll, macht es keinen Sinn, alle paar Sekunden "nachzufragen", ob sich der Zustand vielleicht geändert habe und es etwas zu tun geben könnte!

Das Schalten des Lichts beim Öffnen der Tür gehört deshalb in das Objekt Haustuer_Kontakt, wo du Ausführung bei Änderung ja schon aktiviert hast (im Objekt Haustürsteuerung unbedingt löschen!). Dann erfolgt die Reaktion auch unverzüglich und nicht erst bis zu 10 Sekunden später!

Code: Alles auswählen

//schaltet Licht beim oeffnen fuer 5 Minuten
wenn Haustuer_Kontakt geöffnet und
  HofEingangvorne_Helligkeit kleiner 70 dann
  LichtGarageEingang einschalten für "00:05:00"
endewenn
Analog das Verriegeln bei geschlossener Tür. Das muss im Objekt Haustürsteuerung gelöscht und wie folgt ins Objekt Haustuer_Kontakt eingestellt werden.

Code: Alles auswählen

wenn Haustuer_Kontakt = "geschlossen" dann
   warte("00:01:30")
   Haustuer_Keymatic verriegeln
endewenn
Das mit den Schaltzeiten ist vollständig falsch gelöst! In einem Makro, welches alle 10 Sekunden ausgeführt wird, eine Zeitspanne von rund 20 Minuten als Bedingung vorzugeben, bedeutet, dass ALLE 10 SEKUNDEN die entsprechende Aktion ausgeführt wird.

Da beim Verriegeln auch noch darauf geachtet werden sollte, dass die Tür nicht zufällig offen steht, empfehle ich, das Makro Haussteuerung werktags um z.B. 08:00 Uhr und am Wochenende um z.B. 10:00 Uhr ausführen zu lassen, alles zu löschen und durch dieses Makro zu ersetzen:

Code: Alles auswählen

// Bzw. die von dir für wochentags/Wochenende gewählten Zeitpunkte:
wenn Uhrzeit = "08:00:00" oder Uhrzeit = "10:00:00" dann
   Haustuer_Keymatic entriegeln
   Nochmals:
   warte("00:01:00)
   wenn Haustuer_Kontakt = "geschlossen" dann
      Haustuer_Keymatic verriegeln
   sonst
      Gehezu Nochmals
   endewenn
endewenn
Ausführungsintervall in diesem Makro unbedingt entfernen!

Viele Grüsse
Bümpi

anbercht
Beiträge: 5
Registriert: 28.10.2014, 11:14

Re: Keymatic makro - Verständnissproblem

Beitrag von anbercht » 04.10.2015, 20:38

Hallo Buempi,
danke für deine schnelle Hilfe.

Hab es nun so gemacht, wie von Dir beschrieben und bis
auf eine Sache die ich ungenau Beschrieben habe funktioniert es.

Ich brauche von Montag bis Freitag täglich 2 Zeitfenster in der die Keymatic ca. 15 Minuten entriegeln soll,
einmal Morgens und einmal Nachmittags.
Am Wochenende nicht, wär aber nicht schlimm wenn der Aufwand das reinzukriegen zu groß ist.
Kann ich das mit der Wochenmaske machen?

Code: Alles auswählen

Wochentag =+ "0111110"
In diesen Zeitfenstern soll entriegelt sein und auch beim schliessen entriegelt bleiben
bis zum Ende des Zeitfensters dann wieder verriegelt werden soll.
Das habe ich mit deinem Skript in Haustuersteuerung auch geschafft.

Aber es funkt mir leider mein Haustuer_Kontakt, der nach schliessen und ca 1 Min. verriegelt soll,
was es auch macht da Ausführung bei Empfang ausgewählt ist dazwischen.

Welche Möglichkeit gibt es, das Verriegeln des Haustuer_Kontakt

Code: Alles auswählen

//verriegeln nach Tuer schliessen
wenn Haustuer_Kontakt = "geschlossen" dann
   warte("00:01:00")
   Haustuer_Keymatic verriegeln
   endewenn

während meiner zwei Zeitfenster zu verhindern

Code: Alles auswählen

// täglich gewählten Zeitpunkte:
   wenn Uhrzeit zwischen "8:45:00" und "09:00:00" oder Uhrzeit zwischen "15:00:00" und "15:15:00" dann
    Haustuer_Keymatic entriegeln
   Nochmals:
   warte("00:01:00)
   wenn Haustuer_Kontakt = "geschlossen" dann
      Haustuer_Keymatic verriegeln
   sonst
      Gehezu Nochmals
   endewenn
endewenn

Viele Grüsse
Andreas

Antworten

Zurück zu „homeputer CL“