You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

166 lines
3.6 KiB

#!/usr/bin/ruby
### config
user=""
pass=""
ip="192.168.x.x"
### No need to change anything below
require "httparty"
url="http://#{user}:#{pass}@#{ip}/white"
## funkce
def rgbwstatus(url,channel=0)
page_data = HTTParty.get("#{url}/#{channel}")
responses = page_data.parsed_response
return responses
end
def rgbwtoggle(url,channel=0)
if rgbwstatus(url,channel)["ison"] == true then
page_data = HTTParty.get("#{url}/#{channel}?turn=off")
status = page_data.parsed_response
else
page_data = HTTParty.get("#{url}/#{channel}?turn=on")
status = page_data.parsed_response
end
end
def rgbwbrup(url,channel=0)
brightness = rgbwstatus(url,channel)["brightness"].to_i
brightness = brightness+5
if brightness > 100 then brightness=100 end
if brightness < 5 then brightness=5 end
page_data = HTTParty.get("#{url}/#{channel}?brightness=#{brightness}")
status = page_data.parsed_response
end
def rgbwbrdown(url,channel=0)
brightness = rgbwstatus(url,channel)["brightness"].to_i
brightness = brightness-5
if brightness > 100 then brightness=100 end
if brightness < 5 then brightness=5 end
page_data = HTTParty.get("#{url}/#{channel}?brightness=#{brightness}")
status = page_data.parsed_response
end
def rgbwbright(url,brightness,channel=0)
brightness=brightness.to_i
if brightness > 100 then
brightness=100
end
if brightness < 5 then
brightness=5
end
page_data = HTTParty.get("#{url}/#{channel}?brightness=#{brightness}")
status = page_data.parsed_response
end
def rgbwtoggle(url,channel=0)
if rgbwstatus(url,channel)["ison"] == true then
page_data = HTTParty.get("#{url}/#{channel}?turn=off")
status = page_data.parsed_response
else
page_data = HTTParty.get("#{url}/#{channel}?turn=on")
status = page_data.parsed_response
end
end
def rgbwoff(url,channel=0)
page_data = HTTParty.get("#{url}/#{channel}?turn=off")
status = page_data.parsed_response
end
def rgbwon(url,channel=0)
page_data = HTTParty.get("#{url}/#{channel}?turn=on")
status = page_data.parsed_response
end
## Ovladani
command, *parametry = ARGV
case command
when "on"
if ! parametry[0].nil? then
channel = parametry[0].to_i
if ! channel.between?(0,3) then
puts "Neplatny kanal, hodnota musi byt v rozsahu 0 - 3"
exit
end
rgbwon(url,channel)
else
rgbwon(url)
end
when "off"
if ! parametry[0].nil? then
channel = parametry[0].to_i
if ! channel.between?(0,3) then
puts "Neplatny kanal, hodnota musi byt v rozsahu 0 - 3"
exit
end
rgbwoff(url,channel)
else
rgbwoff(url)
end
when "toggle"
if ! parametry[0].nil? then
channel = parametry[0].to_i
if ! channel.between?(0,3) then
puts "Neplatny kanal, hodnota musi byt v rozsahu 0 - 3"
exit
end
rgbwtoggle(url,channel)
else
rgbwtoggle(url)
end
when "up"
if ! parametry[0].nil? then
channel = parametry[0].to_i
if ! channel.between?(0,3) then
puts "Neplatny kanal, hodnota musi byt v rozsahu 0 - 3"
exit
end
rgbwbrup(url,channel)
else
rgbwbrup(url)
end
when "down"
if ! parametry[0].nil? then
channel = parametry[0].to_i
if ! channel.between?(0,3) then
puts "Neplatny kanal, hodnota musi byt v rozsahu 0 - 3"
exit
end
rgbwbrdown(url,channel)
else
rgbwbrdown(url)
end
when "brightness"
if parametry[0].nil? then
puts "Musite zadat hodnotu intenzity v procentech (5-100)"
exit 1
else
brightness=parametry[0].to_i
end
if ! parametry[1].nil? then
channel = parametry[1].to_i
if ! channel.between?(0,3) then
puts "Neplatny kanal, hodnota musi byt v rozsahu 0 - 3"
exit
end
rgbwbright(url,brightness,channel)
else
rgbwbright(url,brightness)
end
end