Advertisement
boomx

RFID 3.2 off

Sep 23rd, 2016
412
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.27 KB | None | 0 0
  1. --[[
  2. %% properties
  3. 399 value
  4. %% events
  5. %% globals
  6. --]]
  7.  
  8. -- notwendige IDs
  9. local sensorID = {327,112} -- IDs der Sensoren
  10. local phoneID = {62} -- IDs der Handys
  11. local doorlockID = {} -- IDs der doorlocks
  12.  
  13. -- zusätzliche Optionen
  14. local own_action = true -- eigene Aktionen ausführen; Funktionen müssen befüllt werden
  15. local disarmed_bug = true -- Firmware Bug umgehen
  16.  
  17. -- eigene Funktionen
  18. function actionsafterArmed()
  19. fibaro:debug('Führe eigene Funktionen nach dem Schärfen aus')
  20. end
  21.  
  22. function actionsafterDisarmed()
  23. fibaro:debug('Führe eigene Funktionen nach dem Entschärfen aus')
  24. end
  25.  
  26. -- AB HIER NICHTS MEHR ÄNDERN
  27. local trigger = fibaro:getSourceTrigger()
  28. local rfid_value_status = ''
  29.  
  30. Debug = function ( color, message )
  31. fibaro:debug(string.format('<%s style="color:%s;">%s</%s>', "span", color, message, "span"))
  32. end
  33.  
  34. function armedcheckSensorID(array)
  35. for j=1, #sensorID do
  36. if sensorID[j] ~= nil then
  37. if (tonumber(fibaro:getValue(sensorID[j], 'armed')) ~= 0) then
  38. return false
  39. end
  40. end
  41. end
  42. return true
  43. end
  44.  
  45. -- Funktion für die Öffnung der Tür
  46. function openDoor()
  47. if (doorlockID[0] ~= nil) then
  48. fibaro:debug('Türschlösser werden geöffnet.')
  49. for j=0, #doorlockID do
  50. if doorlockID[j] ~= nil then
  51. fibaro:call(doorlockID[j],'unsecure')
  52. end
  53. end
  54. end
  55. end
  56.  
  57. -- Funktion zum Versenden der Push
  58. function sendPush(text)
  59. if (phoneID[1] ~= nil) then
  60. for i=1, #phoneID do
  61. if phoneID[i] ~= nil then
  62. fibaro:debug('Versende Push an ID ' ..phoneID[i])
  63. fibaro:call(phoneID[i],'sendPush', text, 'alarm')
  64. end
  65. end
  66. end
  67. end
  68.  
  69. function setArmedStatus(set_status)
  70. if set_status then
  71. fibaro:debug('Sensoren werden scharf geschaltet.')
  72. for k=1, #sensorID do
  73. if sensorID[k] ~= nil then
  74. if (tonumber(fibaro:getValue(sensorID[k], 'value')) == 0) then
  75. fibaro:call(sensorID[k], 'setArmed', '1')
  76. else
  77. local sensorname = fibaro:getName(sensorID[k])
  78. local sensorroom = fibaro:getRoomNameByDeviceID(sensorID[k])
  79. fibaro:debug('ACHTUNG: ' .. sensorname .. ' im Raum: ' .. sensorroom .. ' nicht sicher. Sende Push.')
  80. sendPush('ACHTUNG: ' .. sensorname .. ' im Raum: ' .. sensorroom .. ' nicht sicher.')
  81. end
  82. end
  83. end
  84. else
  85. fibaro:debug('Sensoren werden entschärft.')
  86. for j=1, #sensorID do
  87. if sensorID[j] ~= nil then
  88. if (disarmed_bug) then
  89. setArmed(sensorID[j])
  90. else
  91. fibaro:call(sensorID[j], 'setArmed', '0')
  92. end
  93. end
  94. end
  95. end
  96. end
  97.  
  98. function setArmed(deviceId)
  99. local dev = api.get('/devices/' .. deviceId)
  100. dev.properties.armed = false
  101. api.put('/devices/' .. deviceId, dev)
  102. end
  103.  
  104. -- Funktion zum Anlegen einer Globalen Variablen
  105. function globalVar(var,val)
  106. local http = net.HTTPClient()
  107. http:request("http://127.0.0.1:11111/api/globalVariables", {
  108. options = {
  109. method = 'POST',
  110. headers = {},
  111. data = '{"name":"'..var..'","value":"'..val..'"}',
  112. timeout = 10000
  113. },
  114. success = function(response)
  115. local result = response.data;
  116. if response.status == 200 or response.status == 201 then
  117. fibaro:debug('Status: ' ..response.status.. ' - Variable wurde angelegt')
  118. else
  119. fibaro:debug('Error: ' ..response.status.. ' - Zugriff verweigert')
  120. end
  121. end,
  122. error = function(err)
  123. fibaro:debug('[ERROR] ' .. err)
  124. end
  125. })
  126. end
  127.  
  128. if (trigger['type'] == 'property') then
  129. fibaro:debug('RFID-Szene 3.2 (Official) gestartet.')
  130. local rfid_ID = tonumber(trigger['deviceID'])
  131. local rfid_value = tonumber(fibaro:getValue(rfid_ID, 'value'))
  132. if (rfid_value == 1) then
  133. rfid_value_status = 'Away'
  134. Debug('red', 'Status ' ..rfid_value_status.. ' gesetzt.')
  135. setArmedStatus(true)
  136. if (fibaro:getGlobal('PresentState') ~= nil) then
  137. fibaro:debug('Benötigte Variable PresentState erkannt.')
  138. fibaro:setGlobal('PresentState', 'Away')
  139. else
  140. fibaro:debug('Benötigte Variable PresentState NICHT erkannt. Wird erstellt.')
  141. globalVar('PresentState', 'Away')
  142. end
  143. local delay = tonumber(fibaro:getValue(sensorID[1], "armDelay"))
  144. if (delay ~= 0) then
  145. fibaro:debug('Arm-Delay erkannt. Arm-Delay: ' ..delay)
  146. delay = delay + 1
  147. fibaro:sleep(delay*1000)
  148. end
  149. if (not armedcheckSensorID(sensorID)) then
  150. if (own_action) then
  151. actionsafterArmed()
  152. end
  153. sendPush('ALARMANLAGE aktiv!')
  154. end
  155. elseif (rfid_value == 0) then
  156. rfid_value_status = 'Home'
  157. Debug('green', 'Status ' ..rfid_value_status.. ' gesetzt.')
  158. setArmedStatus(false)
  159. if (fibaro:getGlobal('PresentState') ~= nil) then
  160. fibaro:debug('Benötigte Variable PresentState erkannt.')
  161. fibaro:setGlobal('PresentState', 'Home')
  162. else
  163. fibaro:debug('Benötigte Variable PresentState NICHT erkannt. Wird erstellt.')
  164. globalVar('PresentState', 'Home')
  165. end
  166. if (own_action) then
  167. actionsafterDisarmed()
  168. end
  169. sendPush('ALARMANLAGE inaktiv!')
  170. openDoor()
  171. end
  172. else
  173. fibaro:debug('Szene manuell gestartet. Widget-Support deaktiviert.')
  174. fibaro:debug('Hier werden noch weitere Funktionen folgen.')
  175. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement