This component allows you to tweet messages and control any xAP compliant device. The Livebox being such a device.
Due to the way in which Twitter works, you are not able to enter the same tweet twice. To work around this, the xap-twitter daemon will DELETE the tweet once it has processed it.
This means that you lose the audit trail of the commands you have sent. However, it has the benefit of giving active feedback that the command was accepted and processed. Only message beginning with the COMMAND PREFIX will be process by the daemon, and hence eligible for deletion.
Authentication is done via OAUTH so your password is not stored on the livebox.
This will result in the following xAP message being transmitted.
xap-header { v=12 hop=1 uid=FF00D900 class=alias source=dbzoo.livebox.Twitter } command { text=relay 1 on }
The commands you enter resolve the same way as the Google Calendar component (See calendar_aliases) and require an alias_interpreter to resolve these into appropriate actions. The diagram below shows the entire process.
cp /etc_ro_fs/plugboard/samples/aliasApplet.lua /etc/plugboard /etc/init.d/xap restart plugboard
The xap-twitter process can also be used to send TWEETs to twitter. This is really useful if you have other scripts or processing running and you wish to record events. Twitter can be that event recording system to notify when something happens. As tweets can be relayed to your phone, this gives you the ability to remotely monitor events.
Sample payload to create the tweet “Hello World”
xAP-header { v=12 hop=1 uid=FF00DB00 class=xAPBSC.cmd source=dbzoo.acme.test target=dbzoo.livebox.twitter } output.state.1 { id=* text=Hello World }
An alias engine is supplied on the HAH as a sample to install this
# cp /etc_ro_fs/plugboard/samples/aliasApplet.lua /etc/plugboard
This is how the default alias engine looks - You'll want to edit this as you add twitter and google calender command shortcuts.
--[[ Alias interpreter Use to perform actions based on xAP alias class messages emitted by both xap-twitter and xap-googlecal --]] module(...,package.seeall) require("xap") require("xap.bsc") require("string") rex = require("rex_posix") info={ version="1.1", description="Alias Interpreter" } pat={ [rex.new("(relay) ([1-4]) (on|off)")]=function(m) rfRelayCmd(m) end, [rex.new("(rf) ([0-9]+) (on|off)")]=function(m) rfRelayCmd(m) end, [rex.new("tweet (.*)")]=function(m) tweet(m) end, ["reboot"] = function() os.execute("reboot") end } function tweet(m) local msg = unpack(m) bsc.sendText("dbzoo.livebox.Twitter",msg) end function rfRelayCmd(t) local addr1,addr2,state = unpack(t) bsc.sendState(string.format("dbzoo.livebox.Controller:%s.%s",addr1,addr2),state) end function aliasEngine(frame) local alias = frame:getValue("command","text") for r,f in pairs(pat) do if type(r) == "string" then if r == alias then f() end else p={r:match(alias)} if #p > 0 then f(p) end end end end function init() local f = xap.Filter() f:add("xap-header","class","alias") f:add("command","text",xap.FILTER_ANY) f:callback(aliasEngine) end