Skip to content

Instantly share code, notes, and snippets.

@brange
Created April 26, 2019 11:46
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save brange/caf7009227b002088530f50c69494ace to your computer and use it in GitHub Desktop.
Save brange/caf7009227b002088530f50c69494ace to your computer and use it in GitHub Desktop.
Telldus live Lua script
function onInit()
local sus = require 'sus.Client'
if sus == nil then
print("Initcheck: SUS plugin is not installed")
return
else
print("Initcheck: SUS plugin is loaded")
sus:send{msg='Telldus LUA SUS is loaded'}
end
return
end
local b='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/' -- You will need this for encoding/decoding
-- encoding
function enc(data)
return ((data:gsub('.', function(x)
local r,b='',x:byte()
for i=8,1,-1 do r=r..(b%2^i-b%2^(i-1)>0 and '1' or '0') end
return r;
end)..'0000'):gsub('%d%d%d?%d?%d?%d?', function(x)
if (#x < 6) then return '' end
local c=0
for i=1,6 do c=c+(x:sub(i,i)=='1' and 2^(6-i) or 0) end
return b:sub(c+1,c+1)
end)..({ '', '==', '=' })[#data%3+1])
end
-- decoding
function dec(data)
data = string.gsub(data, '[^'..b..'=]', '')
return (data:gsub('.', function(x)
if (x == '=') then return '' end
local r,f='',(b:find(x)-1)
for i=6,1,-1 do r=r..(f%2^i-f%2^(i-1)>0 and '1' or '0') end
return r;
end):gsub('%d%d%d?%d?%d?%d?%d?%d?', function(x)
if (#x ~= 8) then return '' end
local c=0
for i=1,8 do c=c+(x:sub(i,i)=='1' and 2^(8-i) or 0) end
return string.char(c)
end))
end
function onDeviceStateChanged(device, state, stateValue)
local sus = require 'sus.Client'
if state == 1 then
status = "ON"
elseif state == 2 then
status = "OFF"
end
name = device:name()
report = enc(name) .. " " .. status
print("Report: " .. report)
local ret = sus:send{msg=report .. "\n"}
print("Ret: " .. ret)
end
@brange
Copy link
Author

brange commented Apr 26, 2019

device:name() should be something else. maybe device:id().

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment