Makrobeispiel: Abwesenheitserkennung

Programmierung der FHZ-Zentralen mit contronics homeputer Standard / homeputer Studio & WEB-Server

Moderator: Co-Administratoren

Antworten
fsommer1968
Beiträge: 230
Registriert: 16.02.2008, 17:05
Danksagung erhalten: 9 Mal

Makrobeispiel: Abwesenheitserkennung

Beitrag von fsommer1968 » 12.11.2011, 19:09

Heute möchte ich meine neue Lösung zur "Abwesenheitserkennung" vorstellen.

Zur weiteren Optimierung der Heizkosten habe ich nach einer Möglichkeit gesucht, meine PC-basierte FHZ-Steuerung (Homeputer Studio) selbbsttätig erkennen zu lassen wenn niemand im Haus ist, um nach einer gewissen Zeit die Heizung vom Normalbetrieb auf den Sparbetrieb (Absenkung) umzuschalten. Eine manuelle Lösung mithilfe eines neben der Haustür plazierten Schalter, der manuell betätigt werden muß um eine Abwesenheit zu signalisieren, kommt für mich nicht infrage.

Ich habe auch im Internet einen sog. "Riegelschaltkontakt" (von Abus: http://www.abus-sc.de/silver.econtent/c ... der/RS1000) gefunden, der, im Türrahmen eingebaut, erkennt, wenn die Tür verriegelt ist. Unter obigem Link findet man u.a. die Dokumentation zum Schaltkontakt. Normalerweise wird über solch einen Schalter eine Alarmanlage automatisch scharf geschaltet. Diesen Schalter habe ich hinter dem Türbeschlag eingebaut und an einen HMS 100TFK angeschlossen.

Wenn ich das Haus verlasse schließe ich grundsätzlich ab, dadurch wird der Riegelschaltkontakt aktiviert und via HMS100TFK eine Meldung (geschlossen) an die FHZ-Zentrale abgesetzt. Insoweit habe ich jetzt den folgenden Vorschlag umgesetzt: http://homematic-forum.de/forum/viewtop ... 179#p25031. Die Zentrale schaltet nach 15 Minuten die Heizung in den Absenkbetrieb. Wenn ich wiederkomme wird beim Aufschließen der Riegelschalter zurückgestellt und eine Meldung (offen) an die Zentrale abgesetzt. Die Heizung wird wieder in den Automatikbetrieb versetzt.

Zusätzlich habe ich noch eine Erkennung für längere Abwesenheit eingebaut. Wenn die Tür länger als ca. 2 Tage ununterbrochen verschlossen ist geht die Zentrale davon aus, daß ich im Urlaub bzw. längere Zeit abwesend bin. Dann werden die automatisierten Thermostate noch um ein weiteres Grad abgesenkt.

So sieht der Türbeschlag mit eingebautem Riegelschaltkontakt aus:
RIMG5851.JPG
Türbeschlag mit Riegelschaltkontakt
Das Makro für den HMS100TFK:

Code: Alles auswählen

**! ============================================================
**! OBJEKT Haustuer
**! ============================================================
**! OBJEKT-TYP              : TuerFenster
**! BEZEICHNUNG             : Haustuer
**! STARTWERT               : offen
**! ------------------------------------------------------------
**! AUSFÜHRUNGSINTERVALL    : nein
**! AUSFÜHRUNG BEI EINGABE  : ja
**! AUSFÜHRUNG BEI EMPFANG  : ja
**!
**! ============================================================
**! VARIABLENDEFINITIONEN
**! ============================================================
**! NAME                TYP                 STARTWERT
**! ------------------------------------------------------------

Kueche_buzzer einschalten
wenn geschaltet(Haustuer) und Haustuer geschlossen und Uhrzeit zwischen "05:00:00" und "21:00:00" dann
    ** Weniger als 15 min. Abwesenheit wird ignoriert
    erledigt(Haustuer)
    warte("00:15:00")
    ** Nur wenn auch der Beamer ausgeschaltet ist, ist niemand zuhause
    wenn beamer_steckdose ausgeschaltet dann
       abwesend einschalten
    wenn-block-ende
 sonst
    wenn geschaltet(Haustuer) und Haustuer offen und abwesend eingeschaltet dann
        wenn abwesend.urlaub eingeschaltet dann
           ** Im Urlaub abwesenheit erst nach 7 min. aktivieren, weil evtl. die Nachbarn nur die Blumen gießen
           erledigt(Haustuer)
           warte("00:07:00")
        endewenn
        abwesend.urlaub ausschalten
        abwesend ausschalten
    endewenn
endewenn
erledigt(Haustuer)
Ich habe die Türüberwachung so konfiguriert, daß nur tagsüber zwischen 0500 und 2100 auf den Riegelkontakt reagiert wird. Zur Nachtruhe wird nämlich auch die Tür abgeschlossen, das ist i.a. erst nach 21:00 der Fall:

Code: Alles auswählen

wenn geschaltet(Haustuer) und Haustuer geschlossen und Uhrzeit zwischen "05:00:00" und "21:00:00" dann
Zusätzlich wird aber erkannt wenn der Beamer läuft, dann kann die Steuerung davon ausgehen, daß doch jemand im Haus ist, egal wie spät es ist.

Code: Alles auswählen

   wenn beamer_steckdose ausgeschaltet dann
       abwesend einschalten
    wenn-block-ende
Erst nach 15 Minuten verschlosssener Haustür wird ggf. die Heizung runtergeschaltet.

Code: Alles auswählen

   ** Weniger als 15 min. Abwesenheit wird ignoriert
    erledigt(Haustuer)
    warte("00:15:00")
Wenn die Haustür wieder aufgeschlossen wird, soll die Heizung wieder hochgeschaltet werden.

Code: Alles auswählen

  wenn geschaltet(Haustuer) und Haustuer offen und abwesend eingeschaltet dann
     .
     .
     abwesend.urlaub ausschalten
     abwesend ausschalten
  endewenn
Sofern aber der "Urlaubsmodus" aktiv ist, zählt weniger als 7 Minuten offene Tür nicht (Nachbarn gießen evtl. die Blumen).

Code: Alles auswählen

   wenn abwesend.urlaub eingeschaltet dann
           ** Im Urlaub abwesenheit erst nach 7 min. aktivieren, weil evtl. die Nachbarn nur die Blumen gießen
           erledigt(Haustuer)
           warte("00:07:00")
        endewenn
Die einschlägigen Operationen zur Steuerung der Heizung werden in diesem Makro vorgenommen:

Code: Alles auswählen

**! ============================================================
**! OBJEKT Abwesend
**! ============================================================
**! OBJEKT-TYP              : Schalter
**! BEZEICHNUNG             : Abwesend
**! STARTWERT               : aus
**! ------------------------------------------------------------
**! AUSFÜHRUNGSINTERVALL    : nein
**! AUSFÜHRUNG BEI EINGABE  : ja
**! AUSFÜHRUNG BEI ÄNDERUNG : ja
**!
**! ============================================================
**! VARIABLENDEFINITIONEN
**! ============================================================
**! NAME                TYP                 STARTWERT
**! ------------------------------------------------------------
**! urlaub              Schalter            aus
**! schalte_d           Datum
**! schalte_t           Uhr

Wenn abwesend eingeschaltet und abwesend.urlaub eingeschaltet dann
   ** Urlaub ist aktiv wenn die Tuer länger t+2  abgeschlossen ist (wird im alarmsenden makro gesetzt)
   ** Temperatur noch um ein Grad reduzieren
   Buero setzen auf 16,5
   Wohnzimmer setzen auf 16,5
   Esszimmer setzen auf 16,5
   gaestezimmerneu setzen auf 16,5
   Badezimmer setzen auf 16,5
  sonst
    Wenn abwesend eingeschaltet und abwesend.urlaub ausgeschaltet dann
       ** Bei einfacher Abwesenheit auf Absenktemperatur schalten
       abwesend.schalte_d := datum
       abwesend.schalte_t := Uhrzeit
       Buero.Modus setzen auf Manuell
       Wohnzimmer.Modus setzen auf Manuell
       Esszimmer.Modus setzen auf Manuell
       gaestezimmerneu.modus setzen auf manuell
       Badezimmer.modus setzen auf manuell
       Buero setzen auf Buero.Absenktemperatur
       Wohnzimmer setzen auf Wohnzimmer.Absenktemperatur
       Esszimmer setzen auf Esszimmer.Absenktemperatur
       gaestezimmerneu setzen auf GaestezimmerNeu.Komforttemperatur
       Badezimmer setzen auf Badezimmer.Absenktemperatur
     sonst
        wenn abwesend ausgeschaltet dann
          ** Bei Anwesenheit wieder auf Automatikbetrieb schalten
          ** Automatikbetrieb via Partyfunktion setzt aktuelle Temperatur lt. Profil
          abwesend.schalte_t := Uhrzeit + "00:15:00"
          Wohnzimmer.Modus      := abwesend.schalte_t
          Esszimmer.Modus       := abwesend.schalte_t
          Gaestezimmerneu.Modus := abwesend.schalte_t
          Buero.Modus           := abwesend.schalte_t
          Badezimmer.Modus      := abwesend.schalte_t
        endewenn
     endewenn
endewenn
Die folgende Sequenz (kurzzeitig auf Partymodus schalten) ist eine Methode mit der man die Thermostate wieder in den Automatikbetrieb und sofort auf die aktuell gültige Temperatur schalten kann. Weniger als 15 Minuten sollte man nicht wählen, damit jedes Thermostat mit hinreichender Wahrscheinlichkeit auch das Kommando rechtzeitig empfängt und korrekt verarbeitet.:

Code: Alles auswählen

   abwesend.schalte_t := Uhrzeit + "00:15:00"
   Wohnzimmer.Modus := abwesend.schalte_t
Ein kleines "Hilfmakro" (Der Makroname "alarmsenden" ist mißverständlich! In diesem Makro steuere ich eine ganze Reihe von Funktionen die einmal am Tag ausgeführt werden sollen. Für den Zweck der hier vorgestellten Abwesenheitserkennung habe ich nur die relevanten Teile im Makro dringelassen).

Code: Alles auswählen

  
**! ============================================================
**! OBJEKT alarmsenden
**! ============================================================
**! OBJEKT-TYP              : Makro
**! BEZEICHNUNG             : alarmsenden
**! STARTWERT               :
**! ------------------------------------------------------------
**! AUSFÜHRUNGSINTERVALL    : bei Tageswechsel
**! AUSFÜHRUNG BEI EINGABE  : nein
**! AUSFÜHRUNG BEI ÄNDERUNG : nein
**!
**! ============================================================
**! VARIABLENDEFINITIONEN
**! ============================================================
**! NAME                TYP                 STARTWERT
**! ------------------------------------------------------------
**! today           Datum

** hier steht alles drin, was einmal am Tag geprüft werden muß

** pruefen wie lange die haustuer abgeschlossen bzw abwesend gesetzt ist,ggf. Urlaub
today := datum - abwesend.schalte_d
wenn abwesend eingeschaltet und abwesend.urlaub ausgeschaltet und today > 2 dann
    abwesend.urlaub einschalten
    makro starten abwesend
endewenn
Beim Tageswechsel wird in diesem Makro überprüft, ob schon seit mindestens T+2 Tagen die Heizung ununterbrochen im Abwesenheitsmodus ist. Wenn ja geht die Steuerung von längerer Abwesenheit aus, und schaltet die Heizung noch um ein Grad runter und aktiviert das "Abwesenheit.Urlaub"-Flag, weil die Nachbarn ggf. mal kurz vorbeikommen um nach dem Rechten zu sehen (und in diesem speziellen Fall soll nicht sofort die Heizung wieder eingeschaltet werden, wenn die mal für sieben Minuten die Tür aufschließen).


Gruß

F.Sommer

Claus
Beiträge: 18
Registriert: 30.12.2010, 22:12

Re: Makrobeispiel: Abwesenheitserkennung

Beitrag von Claus » 14.11.2012, 22:08

Moin, ich weiss nicht ob die Problematik aktuell ist aber ich gebe mal meinen Senf dazu.
Eben zu diesem Thema hab ich lange getüftelt und habe das verschliessen mit dem Riegel im Rahmen gelöst aber....tritt einer die tür auf wird er freundlich vom Homesystem (ist bei mir so ,mit status bericht)begrüsst, weil das System annimmt das aufgeschossen wurde , letztendlich also mist.
Lösung:
Türschloss ausbauen und zerlegen dann einen Microschalter einbauen der das rausschieben des Riegels registriert. Dieser zustand wird dann per Kabel auf meine K8055 überträgt.
Somit erkennt das System das abschliessen zuverlässig.
Oben an der Tür habe ich ein Magnetkontakt angebaut der sagt dem System ob die tür auf oder zu ist, ist die tür offen und es wird abgeschlosen sagt das system( Sprachausgabe über Steffi) probeschliessung und es werden keine veränderung vorgenommen.
Ist die tür zu und schliessung erfolgt checkt das system ob alle fenster zu sind und ob der Herd aus ist dann wird meine flurcam über die k8055 eingeschaltet (mit Motion alarm) wenn das erledigt ist meldet sich die cam mit aktueller IP und ich weiss, alles klar. Sollte jemand dann reinkommen mit tür eintreten macht die cam erstmal 5 freundliche bilder(infrarot) die auf mein IPhone aufschlagen und dann bricht das Inferno über den ungebetenen gast herein ,der flurlautsprecher weisst ihn darauf hin das er gefilmt wurde und schon alarm ausgelöst wurde und er nun abhauen oder warten kann (die blauen) und dann folgt das tierische heulen von einem U Boot Alarm wer da nocht bleibt ist krank.
Und da ich aus Trekki fan bin hab ich aus einer Folge die Sprachausgabe geklaut " Automatische verteidigungsprozeduren gestartet" das zaubert den zuhörern doch mal ein kleines grinsen in gesicht.

Antworten

Zurück zu „homeputer Studio / Standard: Programmierbeispiele“