WebServiceSource
Appearance
This script needs to be placed in /var/www/lmce-ws/index.rb
#!/usr/bin/ruby
require 'rubygems'
require 'json'
require 'cgi'
require 'mysql'
def hashresult(query)
# Execute SQL query and return result as an array, one entry per row
# setup sql database
db = Mysql.new("localhost", "root", "")
db.select_db("pluto_main")
result = db.query(query)
arr = Array.new
#result.each_hash(with_table=true) do |row|
result.each do |row|
arr << row
end
return arr
end
def getlights()
# return list of lights (devices with (DeviceTemplate.FK_DeviceCategory = 73)
query = "SELECT Device.PK_Device, Device.Description, Device.State, Device.FK_Room FROM Device,DeviceTemplate WHERE (Device.FK_DeviceTemplate = DeviceTemplate.PK_DeviceTemplate) AND (DeviceTemplate.FK_DeviceCategory = 73) ORDER BY PK_Device ASC"
return hashresult(query)
end
def getrooms()
# return list of all rooms
query = "SELECT Room.PK_Room, Room.Description FROM Room ORDER BY Room.Description ASC"
return hashresult(query)
end
def getscenarios()
query = "SELECT CommandGroup.PK_CommandGroup, CommandGroup.Description, CommandGroup.Hint, CommandGroup.FK_Template, CommandGroup_Room.FK_Room
FROM CommandGroup, CommandGroup_Room
WHERE (CommandGroup_Room.FK_CommandGroup = CommandGroup.PK_CommandGroup)
ORDER BY Sort ASC;"
return hashresult(query)
end
def gettemplates()
query = "
SELECT PK_Template, Description
FROM Template
;"
return hashresult(query)
end
def sendcommand(id,command)
return `/usr/pluto/bin/MessageSend localhost 0 #{id} 1 #{command}`
end
# Send header to http client
puts "Content-type: text/html\r\n\r\n"
#puts "Content-type: application/json\r\n\r\n"
# Process CGI arguments
c=CGI.new
cmd=c['cmd']
return_obj = case cmd
when 'getLights' then getlights()
when 'getRooms' then getrooms()
when 'getScenarios' then getscenarios()
when 'getTemplates' then gettemplates()
when 'sendCommand' then sendcommand(c['id'], c['command'])
else "use cmd=xxx where xxx is getLights, getRooms, getScenarios, getTemplates"
end
# Send the return object as JSON
puts return_obj.to_json