Moving spaceapi endpoint and OAC door status checking here
This commit is contained in:
@@ -2,6 +2,42 @@ class DoorLog < ActiveRecord::Base
|
||||
attr_accessible :data, :key
|
||||
require 'open-uri'
|
||||
|
||||
def self.show_status
|
||||
door_logs = DoorLog.where(key: ["door_1_locked","door_2_locked"]).order('created_at DESC').take(2)
|
||||
door_1_locked = parse_locked_status(door_logs, "door_1_locked")
|
||||
door_2_locked = parse_locked_status(door_logs, "door_2_locked")
|
||||
|
||||
# Doors are unlocked if 1 AND 2 are NOT locked
|
||||
status = {:unlocked => (!door_1_locked && !door_2_locked), :door_1_locked => door_1_locked, :door_2_locked => door_2_locked }
|
||||
end
|
||||
|
||||
def self.parse_locked_status(door_logs, door_key)
|
||||
door_logs_selected = door_logs.select{|s| s.key == door_key }
|
||||
if door_logs_selected.present?
|
||||
door_data = door_logs_selected.first.data
|
||||
if door_data == 0 # 0 = unlocked
|
||||
return false
|
||||
else
|
||||
return true # 1 = locked
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def self.download_status
|
||||
# load config values
|
||||
door_access_url = APP_CONFIG['door_access_url']
|
||||
door_access_password = APP_CONFIG['door_access_password']
|
||||
|
||||
# query for status
|
||||
source = open("#{door_access_url}?9").read
|
||||
# expect {"armed"=>255, "activated"=>255, "alarm_3"=>1, "alarm_2"=>1, "door_1_locked"=>1, "door_2_locked"=>1}
|
||||
# See https://github.com/heatsynclabs/Open_Access_Control_Ethernet for more info
|
||||
@status = JSON.parse(source)
|
||||
@status.each do |key,value|
|
||||
DoorLog.create!({:key => key, :data => value})
|
||||
end
|
||||
end
|
||||
|
||||
def self.download_from_door
|
||||
# load config values
|
||||
door_access_url = APP_CONFIG['door_access_url']
|
||||
|
||||
Reference in New Issue
Block a user