Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revisionBoth sides next revision | ||
livebox:hah_plugboard_v2 [2012/04/18 12:15] – minerva9 | livebox:hah_plugboard_v2 [2013/12/27 04:08] – [Select] brett | ||
---|---|---|---|
Line 70: | Line 70: | ||
===== Basics ===== | ===== Basics ===== | ||
+ | The first thing to note is that using the plugboard generally takes a little personal effort. There are sample scripts available to help get you going, but it is assumed that you can prepare a script, get it onto the HAH and run it. Being familiar with tools such as FTP & vi, together with a basic knowledge of some Unix commands will make your work with the plugboard a lot easier. Familiarity of how [[http:// | ||
There are only two calls that are needed to build an xAP Lua application. | There are only two calls that are needed to build an xAP Lua application. | ||
^^ **Return Type** ^^ **Method** ^^ **Description** ^^ | ^^ **Return Type** ^^ **Method** ^^ **Description** ^^ | ||
- | || void|| xap.init(source, | + | || void|| xap.init(source, |
+ | || void|| xap.init{vendorid=, | ||
|| void|| xap.process() || Enter the xAP processing loop || | || void|| xap.process() || Enter the xAP processing loop || | ||
|| void|| xap.send(msg) || Send RAW data on the well known xAP UDP port 3639 || | || void|| xap.send(msg) || Send RAW data on the well known xAP UDP port 3639 || | ||
|| String || xap.expandShortMsg(msg) || Inject/ | || String || xap.expandShortMsg(msg) || Inject/ | ||
|| void|| xap.sendShort(msg) || A shortcut for send(expandShortMsg(msg)) || | || void|| xap.sendShort(msg) || A shortcut for send(expandShortMsg(msg)) || | ||
+ | || String || xap.buildXapAdddress{vendorid=, | ||
+ | || String || xap.getDeviceID() || Returns the resolved deviceid, either hostname or / | ||
In its most simplistic form a basic application would look like this; It wouldn' | In its most simplistic form a basic application would look like this; It wouldn' | ||
Line 84: | Line 88: | ||
<code lua> | <code lua> | ||
require(" | require(" | ||
- | xap.init("dbzoo.lua.simple"," | + | xap.init{instance=" |
xap.process() | xap.process() | ||
</ | </ | ||
When building plugboard applets these calls won't need to be made as the plugboard engine will take care of it. They will be needed if writing standalone Lua applications something you'll do whilst in development/ | When building plugboard applets these calls won't need to be made as the plugboard engine will take care of it. They will be needed if writing standalone Lua applications something you'll do whilst in development/ | ||
- | |||
===== Frame ===== | ===== Frame ===== | ||
Line 185: | Line 188: | ||
The constructor can also accept a set of filter patterns directly; these are equivalent. | The constructor can also accept a set of filter patterns directly; these are equivalent. | ||
- | < | + | < |
filter = xap.Filter() | filter = xap.Filter() | ||
filter: | filter: | ||
Line 226: | Line 229: | ||
end | end | ||
- | xap.init("dbzoo.lua.test"," | + | xap.init{instance=" |
f = xap.Filter() | f = xap.Filter() | ||
f: | f: | ||
Line 317: | Line 320: | ||
end | end | ||
- | xap.init("dbzoo.lua.socket"," | + | xap.init{instance=" |
print(" | print(" | ||
Line 360: | Line 363: | ||
===== BSC ===== | ===== BSC ===== | ||
- | This class allows the easy construction of [[http:// | + | This class allows the easy construction of [[http:// |
* responding to a xAPBSC.query with an xAPBSC.info message | * responding to a xAPBSC.query with an xAPBSC.info message | ||
* sending a xAPBSC.info message every 2 mins | * sending a xAPBSC.info message every 2 mins | ||
Line 371: | Line 374: | ||
|| nil || < | || nil || < | ||
|| nil || < | || nil || < | ||
- | || nil || < | + | || nil || < |
- | || state || decodeState(string) || helper function to decode a string into a bsc STATE constant, the following | + | || state || decodeState(string) || helper function to decode a string into a BSC state constant, the following |
- | The following constants can be used when dealing with the state. | + | The following constants can be used when dealing with the state: |
* bsc.STATE_ON | * bsc.STATE_ON | ||
* bsc.STATE_OFF | * bsc.STATE_OFF | ||
* bsc.STATE_TOGGLE | * bsc.STATE_TOGGLE | ||
- | More about the Endpoint(table) constructor. | + | More about the Endpoint(table) constructor. |
- | **name**: | + | **name** : Append |
+ | |||
+ | **instance**: | ||
**direction**: | **direction**: | ||
Line 404: | Line 409: | ||
**displaytext** An additional parameter that may be include in an EVENT of INFO message, configurable with a infoEventCB callback function. | **displaytext** An additional parameter that may be include in an EVENT of INFO message, configurable with a infoEventCB callback function. | ||
- | |||
- | **source** The fully qualified target endpoint name. Such as dbzoo.livebox.plugboard: | ||
**uid** UID key. If nothing is provide one will be automatically assigned based on the order of BSC endpoints created so far. | **uid** UID key. If nothing is provide one will be automatically assigned based on the order of BSC endpoints created so far. | ||
Line 427: | Line 430: | ||
end | end | ||
- | xap.init("dbzoo.livebox.test"," | + | xap.init{instance=" |
+ | -- Form 1 : Constructed using the xAP address from xap.init() | ||
+ | -- creates -> dbzoo.livebox.test: | ||
bsc.Endpoint{name=" | bsc.Endpoint{name=" | ||
bsc.Endpoint{name=" | bsc.Endpoint{name=" | ||
bsc.Endpoint{name=" | bsc.Endpoint{name=" | ||
+ | |||
+ | -- Form 2 : vendorid and deviceid default, remaining from instance is appended | ||
+ | -- creates -> dbzoo.livebox.my: | ||
+ | bsc.Endpoint{instance=" | ||
+ | |||
+ | -- Form 3 : vendorid defaults, override deviceid. | ||
+ | -- creates -> dbzoo.test.my: | ||
+ | bsc.Endpoint{deviceid=" | ||
+ | |||
+ | -- Form 4 : full override all keys | ||
+ | -- creates -> hello.test.my: | ||
+ | bsc.Endpoint{vendorid=" | ||
+ | |||
+ | -- Form 5 : Shorter way of doing form 4. | ||
+ | -- creates -> helloworld.test.my: | ||
+ | bsc.Endpoint{source=" | ||
xap.process() | xap.process() | ||
Line 459: | Line 480: | ||
function init() | function init() | ||
- | local e = bsc.Endpoint{source="dbzoo.livebox.Plugboard: | + | |
+ | | ||
xap.Timer(update, | xap.Timer(update, | ||
end | end | ||
Line 472: | Line 494: | ||
* bsc.sendText(target, | * bsc.sendText(target, | ||
* bsc.sendLevel(target, | * bsc.sendLevel(target, | ||
- | * bsc.send{} -- takes table of elements. | + | * bsc.send{} -- takes table of elements. |
- | Its a RAW low level control function that is utilized by the higher level functions: | + | It' |
STATE can be any of the following: on, off, true, false, 1, 0, toggle (Nominally you would use on and off) | STATE can be any of the following: on, off, true, false, 1, 0, toggle (Nominally you would use on and off) | ||
Line 503: | Line 525: | ||
require(" | require(" | ||
- | xap.init("dbzoo.livebox.test"," | + | xap.init{instance=" |
bsc.sendState(" | bsc.sendState(" | ||
Line 530: | Line 552: | ||
</ | </ | ||
- | The **init()** function will be invoked when the applet | + | The **init()** function will be invoked when the applet |
To be automatically loaded they must be placed in the / | To be automatically loaded they must be placed in the / | ||
Line 556: | Line 578: | ||
end | end | ||
- | xap.init("dbzoo.lua.example"," | + | xap.init{instance=" |
init() | init() | ||
xap.process() | xap.process() | ||
Line 570: | Line 592: | ||
====== More samples ====== | ====== More samples ====== | ||
- | Whilst there is flash space some samples will be included with the firmware | + | Whilst there is flash space available, |
< | < | ||
cd / | cd / |