Riegelkontakt für Anwesenheitssteuerung

Hi Leute,
Ich habe eine Idee und würde eure Hilfe brauchen zu prüfen ob sie realisierbar ist.

Ich möchte in mein Schloss der Wohnungstüre eine sogenannten Riegelkontakt einbauen lassen.
Das ist ein potentialfreue Umschhalter, der aktiviert wird, sobald die Türe versperrt ist.

An diese Türe kommt ein Fibaro Tür/Fenster Sensor und ich möchte den Schaltkontakt dieses Sensors dazu verwenden an meine HC2 weiterzumelden ob zugesperrt ist oder nicht.
Dahinter kann ich dann eine simple Anwesenheitssteuerung machen.
Tür versperrt, niemand zu Hause, Tür nur ins Schloss gefallen (=nicht versperrt) Personen anwesend.
Spricht irgendwas erfahrungsgemäß gegen diese Lösung?

Hier noch der Link zu solchen Kontakten, falls es euch interessiert:
http://secure.effeff.de/index.php?key=produktkatalog&lang=de&c=effeff&treeID=2285

Wirklich niemand eine Idee dazu?
Der Plan lautet wie folgt:

1.) Ist das Haus versperrt, dann ist der Fibaro TK geschlossen.
In diesem Zustand soll ein Email, SMS oder Push Nachricht verschickt werden sobald einer von 5 Tür oder Fensterkontakten ausgelöst wird.

2.) Ist das Haus unversperrt, dann ist der Fibaro TK offen
Dann sollen keine Email, SMS oder Push Nachrichten verschickt werden wenn man die 5 Kontakte auslöst.

Ich hab schon viele ANsätze hier gefunden, die möglicherweise passen,
a.) http://www.siio.de/board/thema/fenster-ueberpruefen-beim-verlassen-des-hauses/
b.) http://www.siio.de/sicherheitalarm/so-nutzt-du-das-fibaro-alarmpanel-des-homecenters-update/
c.) http://www.siio.de/szenen-steuern-mit-dem-fibaro-tuerfensterkontakt-gehts/

Habe allerdings noch zu wenig Lua Erfahrung mir das selber zu schreiben.
Würde mich über ein paar Codeschnipsel oder bracuhbare Links freuen…

Hast du die Kontakte - in Verbindung mit dem Türsensor - schon ausprobiert ? Funktioniert das ? Gruß

Was ich derzeit fertig habe ist das Skript, welches meine Türkontakte dazu bringt, die Email zu schicken

--[[
%% properties
30 value
99 value 
113 value
119 value
%% events
%% globals
--]]
--local handyID = 233 -- ID des Handys
local trigger = fibaro:getSourceTrigger()
local deviceID = tonumber(trigger['deviceID'])
local DeviceValue = tonumber(fibaro:getValue(deviceID, "value"))

if (DeviceValue == 1) then
   local room = fibaro:getRoomNameByDeviceID(deviceID)
	fibaro:debug( ' '.. room .. ' - Türe geöffnet')
	local subject = ' '.. room .. ' - Türe geöffnet'
	local message = ' '.. room .. ' - Türe geöffnet'
	fibaro:call(2, "sendEmail", subject, message)
   else
	local room = fibaro:getRoomNameByDeviceID(deviceID)
   fibaro:debug(' '.. room .. ' - Türe geschlossen')
   	local subject = ' '.. room .. ' - Türe geschlossen'
	local message = ' '.. room .. ' - Türe geschlossen'
	fibaro:call(2, "sendEmail", subject, message)
 end

Da der Einbau des automatischen Kontaktes in mein Schloss, relativ teuer ist, möchte ich vorher mal testen ob das so funktioniert wie ich mir das vorstelle.
1.) Ausbaustufe:
Die Szene oben soll also nur laufen, wenn der Kontakt in der Türe geschlossen ist!
Ansonsten nicht!

2.) Ausbaustufe:
Es soll ein Alarm aktiviert werden, der mir einige Lampen einschaltet und/oder eine RGB Leiste in LPD-Farben aktiviert.
Dieser muss aber von der Ferne übers Handy zu quitieren sein!

Die Frage ist:
Soll ich das gleich übers Alarmpanel machen, oder soll ich das ganze lieber vorerst über ein Skript steuern.
Leider noch keine Erfahrung, wie das vernünftig und stabil implementiert werden kann!

Hi,

mach das am Besten über das Alarmpanel. Wie erfährst du hier:

http://www.siio.de/sicherheitalarm/so-nutzt-du-das-fibaro-alarmpanel-des-homecenters-update/

Gruß

Hallo pblacky,

ich habe auch einen Rigelkontakt über den UBS in der Haustüre verbaut.
Ich mache genau das, was du vor hast… ich schärfe die Fensterkontakte und den Türkontakt.

Allerdings lasse ich mir keine Mails, sondern eine Push-Info per Pushover senden.
Die Variable “Abwesend” setze ich nicht, da ich z.B. auch die Haustüre abschließe wenn noch jemand im Haus ist. Z.B in der Nacht.
Würde ich “Abwesend” setzen, dann würde z.B. die Anwesenheitssimulation nach Sonnenuntergang starten :slight_smile:

Die “Abwesenheit” wird per iButton vor der Haustüre gesetzt. Somit ist sicher gestellt, dass niemand im Haus ist und die Bewegungsmelder können zusätzlich zu den Fenster/Tür Kontakten zur Überwachung geschärft werden.

Hier ist mein Skript.
Vielleicht kannst du etwas davon brauchen.

--[[
%% properties
124 value
%% globals
--]]

------------------------------
--###---- Variablen ----###--
------------------------------
  local windowID = {83,84,30} -- IDs der Sensoren die ge-/entschärft werden sollen
  local countID = 200
  local riegel = 124 -- ID Riegelkontakt
  local prio = "0"
  local dvc = "iPhone_6,iPhone_5c"

-- Alarm an--
  local scharf = (os.date("Haustüre abgeschlossen. Die Fenster und die Haustüre sind scharf! (%d.%m.%Y)"))
  local ttl_on = "Alarm Aktiviert"
  local msg_on = ""..scharf..""
  local snd_on = "intermission"
-- Alarm aus--
  local unscharf = (os.date("Haustüre aufgeschlossen. Der Alarm wurde um %H:%M Uhr deaktiviert. (%d.%m.%Y)"))
  local ttl_off = "Alarm Deaktiviert"
  local msg_off = ""..unscharf..""
  local snd_off = "none"

------------------------------
--###---- Funktionen ----###--
------------------------------

-- An --
function Notify_on()
	 local requestBody = '&priority=' ..prio .. '&title=' ..ttl_on .. '&message=' ..msg_on .. '&sound=' ..snd_on .. '&device=' ..dvc
	 fibaro:setGlobal("pushNotify", requestBody)
end

-- Aus --
function Notify_off()
	 local requestBody = '&priority=' ..prio .. '&title=' ..ttl_off .. '&message=' ..msg_off .. '&sound=' ..snd_off .. '&device=' ..dvc
	 fibaro:setGlobal("pushNotify", requestBody)
end

--- Arm-Check ---
function armedcheckSensorID(array)
  for j=1, countID do
    if windowID[j] ~= nil then
      if (tonumber(fibaro:getValue(windowID[j], 'armed')) == 0) then
          return false
      end
    end
  end
  return true
end

---Disarm Check ---
function disarmedcheckSensorID(array)
  for j=1, countID do
    if windowID[j] ~= nil then
      if (tonumber(fibaro:getValue(windowID[j], 'armed')) == 1) then
          return false
      end
    end
  end
  return true
end

------------------------------
--###---- Skript ----###--
------------------------------

--- Schärfen ---
if ( (tonumber(fibaro:getValue(riegel, "value")) == 1 ) ) then
      fibaro:debug('Türe Abgeschlossen')
      for j=1, countID do
      if windowID[j] ~= nil then
      if (tonumber(fibaro:getValue(windowID[j], 'value')) == 0) then
      fibaro:call(windowID[j], 'setArmed', '1')
      else
      local sensorname = fibaro:getName(windowID[j])
      local sensorroom = fibaro:getRoomNameByDeviceID(windowID[j])
      fibaro:debug('ACHTUNG: ' .. sensorname .. ' im Raum: ' .. sensorroom .. ' nicht sicher.')

     local requestBody = '&priority=' ..prio .. '&title= Alarm-Hautüre' .. '&message=ACHTUNG: Fenster im Raum: ' .. sensorroom .. ' noch offen. &sound=tugboat' .. '&device=' ..dvc
	 fibaro:setGlobal("pushNotify", requestBody)
        
end
   end
      end
if (armedcheckSensorID(windowID)) then
fibaro:debug('Alle Sensoren scharf.');
Notify_on()
end
else
              --fibaro:debug('Es konnten nicht alle Sensoren scharf geschaltet werden');
end

--- Entschäfen ---
if ( (tonumber(fibaro:getValue(riegel, "value")) == 0 ) ) then
      fibaro:debug('Türe Aufgeschlossen')
      for j=1, countID do
      if windowID[j] ~= nil then
      if (tonumber(fibaro:getValue(windowID[j], 'value')) == 0) then
      fibaro:call(windowID[j], 'setArmed', '0')
      else
      local sensorname = fibaro:getName(windowID[j])
      local sensorroom = fibaro:getRoomNameByDeviceID(windowID[j])
      fibaro:debug('ACHTUNG: ' .. sensorname .. ' im Raum: ' .. sensorroom .. ' nicht sicher.')
---Hier Push einfügen
end
   end
      end
if (disarmedcheckSensorID(windowID)) then
fibaro:debug('Alle Sensoren entschärft.');
Notify_off();
end
else
              --fibaro:debug('Es konnten nicht alle Sensoren scharf geschaltet werden');
end

Hallo pblacky, die Idee hatte ich auch schon mal geschrieben und finde dies eigentlich eine der praktischsten. Zumindest für mich und meine Frau. Türe abgeschlossen, bedeutet auch automatisch keiner Zuhause und Alarm wird auch scharfgeschaltet. Abends wenn man nach Hause kommt, Türe aufsperren und Alarm ist unscharf. Eigentlich einfach und sehr zuverlässig zugleich. Nur habe ich dies noch nicht umgesetzt, da ich den Riegelkontakt erst noch bestellen muss.

Wie löst ihr das Problwm, wenn jemand die Haustür aufbricht? Dann sollte der Riegel ja unacharf stellen.

@Knallfrosch
Der Riegelkontakt sollte als Ruhekontakt konfiguriert sein!
Wenn jemand die Haustüre aufbricht, dann wird ind den meisten Fällen der Riegel vom Kontakt oder sogar das Kabel getrennt und somit der Alarm ausgelöst.

@Trixxon
Ich habe inzwischen einen Schlosser gefunden, der mir das einbaut. Kostet ca. 250,- bis 400,- je nach Türbeschaffenheit.
Mit den Kontakten kennt sich leider nicht jeder Schlosser aus!
Die Firma EFF (sie 2.Beitrag in diesem Thread) produziert nicht nur diese Kontakte, sondern war mir auch behilflich einen Schlosser zu finden der sich mit dem EInbau auskennt!

@nevv
Dein Skript ist ja schon 90% von dem was ich brauche, vielen Dank dafür!!

Hab mal meine IDs eingefügt und einen Türkontakt statt dem Riegelkontakt verwendet.
Funktioniert grundsätzlich sehr gut!
Wenn man es startet zeigt es alle Zustände korrekt an auch der Alarm wird richtig ausgelöst!

Ich muss es allerdings händisch jedes mal starten damit es läuft.
Wie startest du denn das Skript bei dir?

Hallo pblacky,

schön, dass du vom Code was brauchen kannst.
Hast du die Trigger-ID auch für dich angepasst!?

--[[
%% properties
124 value <----- Ändern
%% globals
--]]

Bei mir ist es der “Riegelkontakt” mit der ID 124. Wenn sich der Zustand ändert, dann wird die Szene ausgelöst.

Was sind den die restlichen 10% die dir fehlen :slight_smile:
Grüße

Habs schon gefunden, der Fibaro Türkontakt hat mehrere IDs, ich hatte die falsche verwendet.
Jetzt löst das Skript richtig aus!

Die 10% die fehlen ändern sich laufend, da mich dein Skript und der Praxistest zu vielen Dingen inspirieren :wink:

Das Wichtigste ist:

1.) Push Meldung auf mein Handy wenn beim Absperren irgendein Kontakt unsicher ist und
2.) ein Email mit der Information aus möglichst vielen Variablen, wenn sich der Status des Riegel Kontaktes ändert.
Ich habe schon ein Skript laufen, das mir Emails schickt, die technischen Grundlagen sind also vorhanden!

Ich habe gesehen dass du da einige Variablen füllst, als LUA Anfänger, tu ich mir noch schwer zu verstehen wie die zusammenhängen und wie ich die als Push oder Email aufs Handy bekomme!

Habe dein Skript versuchsweise um folgendes ergänzt:


--bei den Variablen:
local handyID = 23 -- ID meines Handys
-- unter deiner Zeile: 
---Hier Push einfügen
     fibaro:call(2, "sendEmail", pushNotify) -- zum Testen für Email
     fibaro:call(handyID, 'sendPush', pushNotify) -- zum Testen für Push

Hat aber beides nicht geklappt!
Ist der Platz im Skript der Richtige?

Ich habe auch noch nicht verstanden was

 local countID = 200
  local prio = "0"
  local dvc = "iPhone_6,iPhone_5c"

für eine Bedeutung haben. Nur dass du an das “dvc” einen Sound schickst, der genaue technische Weg ist mir aber noch nicht klar :wink:

Sorry für die vielen Fragen, aber ich versuche gerade aus deinem Skript was zu lernen, da es für mich in der Praxis schon recht gut funktioniert…
Falls ich dir auf die Nerven gehe bitte sag Bescheid…

Hi.

Ich arbeite nicht mit dem Fibaro Push-Service sondern mit “Pushover”. Deshalb gibt es viele Variabelen die für dich unnötig sind.
Hier gibt es ein Tutorial: Tutorial Pushover

Ich habe dir kurz den code angepasst und die unnötigen Zeilen gelöscht und neue hinzugefügt.
Die Stelle wo eine Mail gesendet wird ist in den Funktionen “Notify_on” und “Notify_off”. Ich habe in dem Fall mit einer E-Mail Benachrichtigung gearbeitet.

Ich habe auch schon deine Handy ID (23) angepasst :slight_smile:

--[[
%% properties
124 value
%% globals
--]]

------------------------------
--###---- Variablen ----###--
------------------------------
  local windowID = {83,84,30} -- IDs der Sensoren die ge-/entschärft werden sollen
  local countID = 200
  local riegel = 124 -- ID Riegelkontakt

-- Alarm an--
  local message_on = (os.date("Haustüre abgeschlossen. Die Fenster und die Haustüre sind scharf! (%d.%m.%Y)"))
  local subject_on = "Alarm Aktiviert"

-- Alarm aus--
  local message_off = (os.date("Haustüre aufgeschlossen. Der Alarm wurde um %H:%M Uhr deaktiviert. (%d.%m.%Y)"))
  local subject_off = "Alarm Deaktiviert"

------------------------------
--###---- Funktionen ----###--
------------------------------

-- An --
function Notify_on()

--->> Hier muss der Code rein wenn der Alarm aktiviert wurde <<---
fibaro:call(23, "sendEmail", subject_on, message_on)

end

-- Aus --
function Notify_off()

--->> Hier muss der Code rein wenn der Alarm deaktiviert wurde <<---
fibaro:call(23, "sendEmail", subject_off, message_off)

end

--- Arm-Check ---
function armedcheckSensorID(array)
  for j=1, countID do
    if windowID[j] ~= nil then
      if (tonumber(fibaro:getValue(windowID[j], 'armed')) == 0) then
          return false
      end
    end
  end
  return true
end

---Disarm Check ---
function disarmedcheckSensorID(array)
  for j=1, countID do
    if windowID[j] ~= nil then
      if (tonumber(fibaro:getValue(windowID[j], 'armed')) == 1) then
          return false
      end
    end
  end
  return true
end

------------------------------
--###---- Skript ----###--
------------------------------

--- Schärfen ---
if ( (tonumber(fibaro:getValue(riegel, "value")) == 1 ) ) then
      fibaro:debug('Türe Abgeschlossen')
      for j=1, countID do
      if windowID[j] ~= nil then
      if (tonumber(fibaro:getValue(windowID[j], 'value')) == 0) then
      fibaro:call(windowID[j], 'setArmed', '1')
      else
      local sensorname = fibaro:getName(windowID[j])
      local sensorroom = fibaro:getRoomNameByDeviceID(windowID[j])
      fibaro:debug('ACHTUNG: ' .. sensorname .. ' im Raum: ' .. sensorroom .. ' nicht sicher.')

   local subject_unsafe = "ACHTUNG"
   local massage_unsafe = "Fenster im Raum: ' .. sensorroom .. ' noch offen."
   fibaro:call(23, "sendEmail", subject_unsafe, massage_unsafe)

        
end
   end
      end
if (armedcheckSensorID(windowID)) then
fibaro:debug('Alle Sensoren scharf.');
Notify_on()
end
else

end

--- Entschäfen ---
if ( (tonumber(fibaro:getValue(riegel, "value")) == 0 ) ) then
      fibaro:debug('Türe Aufgeschlossen')
      for j=1, countID do
      if windowID[j] ~= nil then
      if (tonumber(fibaro:getValue(windowID[j], 'value')) == 0) then
      fibaro:call(windowID[j], 'setArmed', '0')
      else
      local sensorname = fibaro:getName(windowID[j])
      local sensorroom = fibaro:getRoomNameByDeviceID(windowID[j])
      fibaro:debug('ACHTUNG: ' .. sensorname .. ' im Raum: ' .. sensorroom .. ' nicht sicher.')
end
   end
      end
if (disarmedcheckSensorID(windowID)) then
fibaro:debug('Alle Sensoren entschärft.');
Notify_off();
end
else

end

Nein du gehst mir nicht auf die Nerven :slight_smile:
Es ist doch schön, wenn man etwas weitergeben kann.

PS: Dein Test hat nicht geklappt weil du zwar mit der Zeile:
fibaro:call(handyID, 'sendPush', pushNotify)
eine Pushnachricht sendest, aber ich denke du hast irgendwo den Content (pushNotify) definiert.
Oder hast weiter oben irgendwo local pushNotify = "Inhalt" geschrieben!?

Hallo Nervv,
Danke für die Änderungen, jetzt tu ich mir leichter die nötigen Teile des Skriptes zu verstehen.
Habe es nun mal angepasst und etwas getestet.

Status:
Ich bekomme ein Email mit Datum und Uhrzeit wenn auf oder zugesperrt wird.
Ich bekomme eine PUSH Nachricht, wenn beim Zusperren eine Fenster der Alarmkette offen ist!
Der Alarme löst richtig aus und ich kann ihn auf der Weboberfläche der HC2 bestätigen.

Am Donnerstag kommt der Schlosser und baut mir den Riegelkontakt ein, dann geht das Ganze in die Praxis. Mal sehen welche Herausforderungen oder Ideen dann noch kommen …

Ich finde Ausbaustufe1 ist damit abgeschlossen :wink:
Grosses Danke an dich NERVV für deine Hilfe!!

Wenn ihr wollt, kann ich das fertige Skript nun nochmal posten.

Ich finde die Idee mit dem Riegelschaltkontakt spannend. Kenne mich in der Materie nur nich5 so ganz aus. Daher meine Frage : Muss der Kontakt mit extra Strom belegt/ versorgt werden ? Würde es zb. mit einem Fibaro Türsensor funktionieren? Das erkennen ob auf oder zu um eine Szene zu starten ?

Der Riegelkontakt ist ein potentialfreier Schalter, der mechanisch EIN/AUS geschaltet wird, wenn das Schloss versperrt wird.
Er braucht KEINEN Strom und ich werde ihn mit einem Fibaro Türkontakt über den Schalteingang des Türkontaktes abfragen und dann damit die Szene steuern.

Nähere Infos zur Verwendung des Schalteinganges findest du hier:
http://www.siio.de/szenen-steuern-mit-dem-fibaro-tuerfensterkontakt-gehts

Ich kann auch gerne wenn ich nächste Woche fertig bin, hier ein paar Infos oder Fotos posten…

Ja, Fotos von dem Projekt wären cool ?

Ich kann campos nur zustimmen, mach das mit den Bildern :slight_smile:

So, nun ist es volbracht, mein Riegelkontakt ist eingebaut!
Anbei ein paar Fotos, wie versprochen.

2016-09-01-Riegelkontakt-Eingebaut.jpg

2016-09-01-Riegelkontakt-Hintransicht.jpg

2016-09-01-Riegelkontakt-Innen.jpg