livebox:hah_plugboard_v2

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revisionBoth sides next revision
livebox:hah_plugboard_v2 [2012/05/12 19:05] – [Basics] minerva9livebox:hah_plugboard_v2 [2014/01/03 02:31] – [BSC] 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. Best of all, once you get the basic knowledge under your belt, there is a whole world of possibility for rule based processing and actioning.+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://www.xapautomation.org/index.php?title=Getting_started|xAP]] works will help too. The extension library has been designed to do much of the 'hard work' for you. Best of all, once you get the basic knowledge under your belt, there is a whole world of possibility for rule based processing and actioning.
  
 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,uid) || Initialise an xAP application, bind with a hub if found and send a heartbeat every minute ||+|| void|| xap.init(source,uid)\\ **deprecated** || Initialise an xAP application, bind with a hub if found and send a heartbeat every minute\\ __source__ - a fully qualified 'vendorid.deviceid.instance' address. || 
 +|| void|| xap.init{vendorid=,deviceid=,instance=,uid=}\\ || Initialize an xAP application, bind with a hub if found and send a heartbeat every minute.\\ __vendorid__ - optional, default 'dbzoo'\\ __deviceid__ - optional, default to hostname or setting from /etc/xap.d/system.ini\\ __instance__ - mandatory, last component of 'vendorid.deviceid.instance' xAP address specification.\\ __uid__ - mandatory, a unique identifier ||
 || 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/Replace xap-header information in a message || || String || xap.expandShortMsg(msg) || Inject/Replace xap-header information in a message ||
 || void|| xap.sendShort(msg) || A shortcut for send(expandShortMsg(msg)) || || void|| xap.sendShort(msg) || A shortcut for send(expandShortMsg(msg)) ||
 +|| String || xap.buildXapAdddress{vendorid=,deviceid=,instance=} || Build an xAP address target string. vendorid and deviceid will default following the same rules as xap.init{} ||
 +|| String || xap.getDeviceID() || Returns the resolved deviceid, either hostname or /etc/xap.d/system.ini override ||
  
 In its most simplistic form a basic application would look like this; It wouldn't do much except send a heartbeat every minute but it's functional. In its most simplistic form a basic application would look like this; It wouldn't do much except send a heartbeat every minute but it's functional.
Line 85: Line 88:
 <code lua> <code lua>
 require("xap") require("xap")
-xap.init("dbzoo.lua.simple","FF00DD00")+xap.init{instance="simple",uid="FF00DD00"}
 xap.process() xap.process()
 </code> </code>
  
 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/testing mode.  More on writing Applets later. 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/testing mode.  More on writing Applets later.
- 
 ===== Frame ===== ===== Frame =====
  
Line 186: 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.
-<code>+<code lua>
   filter = xap.Filter()   filter = xap.Filter()
   filter:add("xap-header","class","xapbsc.event")   filter:add("xap-header","class","xapbsc.event")
Line 227: Line 229:
 end end
  
-xap.init("dbzoo.lua.test","FF00CC00")+xap.init{instance="test",uid="FF00CC00"}
 f = xap.Filter() f = xap.Filter()
 f:add("xap-hbeat","source",xap.FILTER_ANY) f:add("xap-hbeat","source",xap.FILTER_ANY)
Line 318: Line 320:
 end end
  
-xap.init("dbzoo.lua.socket","FF00CC00","br0")+xap.init{instance="socket",uid="FF00CC00"}
  
 print("Binding to host '" ..host.. "' and port " ..port.. "...") print("Binding to host '" ..host.. "' and port " ..port.. "...")
Line 368: Line 370:
 ^^ **Return Type** ^^ **Method** ^^ **Description** ^^ ^^ **Return Type** ^^ **Method** ^^ **Description** ^^
 || Endpoint || Endpoint(table) || Constructor: a container to hold endpoints || || Endpoint || Endpoint(table) || Constructor: a container to hold endpoints ||
 +|| nil || <obj>:destroy() || Destructor: remove the endpoint from existence ||
 || nil || <obj>:sendEvent() || Send xAPBSC.event for this endpoint || || nil || <obj>:sendEvent() || Send xAPBSC.event for this endpoint ||
 || nil || <obj>:sendInfo() || Send xAPBSC.info for this endpoint || || nil || <obj>:sendInfo() || Send xAPBSC.info for this endpoint ||
Line 382: Line 385:
 More about the Endpoint(table) constructor.  The key for the table may be one of the following: More about the Endpoint(table) constructor.  The key for the table may be one of the following:
  
-**name**: The unique, within the xAP source address, identifier for the endpoint.+**name** : Append the endpoint name. Completes the triple; vendorid.deviceid.instance(:name) 
 + 
 +**instance**: xAP address for the endpoint.  Completes the triple; vendorid.deviceid.(instance)
  
 **direction**: Has two possible values bsc.INPUT and bsc.OUTPUT **direction**: Has two possible values bsc.INPUT and bsc.OUTPUT
Line 405: Line 410:
  
 **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:relay.1 
  
 **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 428: Line 431:
 end end
  
-xap.init("dbzoo.livebox.test","FF0CC000")+xap.init{instance="test",uid="FF0CC000"}
  
 +-- Form 1 : Constructed using the xAP address from xap.init()
 +-- creates -> dbzoo.livebox.test:lcd, dbzoo.livebox.test:relay.1 etc..
 bsc.Endpoint{name="lcd", direction=bsc.OUTPUT, type=bsc.STREAM, cmdCB=lcdCmd} bsc.Endpoint{name="lcd", direction=bsc.OUTPUT, type=bsc.STREAM, cmdCB=lcdCmd}
 bsc.Endpoint{name="relay.1", direction=bsc.OUTPUT, type=bsc.BINARY, cmdCB=relayCmd, infoEventCB=relayInfoEvent} bsc.Endpoint{name="relay.1", direction=bsc.OUTPUT, type=bsc.BINARY, cmdCB=relayCmd, infoEventCB=relayInfoEvent}
 bsc.Endpoint{name="relay.2", direction=bsc.OUTPUT, type=bsc.BINARY, cmdCB=relayCmd} bsc.Endpoint{name="relay.2", direction=bsc.OUTPUT, type=bsc.BINARY, cmdCB=relayCmd}
 +
 +-- Form 2 : vendorid and deviceid default, remaining from instance is appended
 +-- creates -> dbzoo.livebox.my:relay.3
 +bsc.Endpoint{instance="my:relay.3", direction=bsc.OUTPUT, type=bsc.BINARY, cmdCB=relayCmd}
 +
 +-- Form 3 : vendorid defaults, override deviceid.
 +-- creates -> dbzoo.test.my:relay.4
 +bsc.Endpoint{deviceid="test", instance="my:relay.4", direction=bsc.OUTPUT, type=bsc.BINARY, cmdCB=relayCmd}
 +
 +-- Form 4 : full override all keys
 +-- creates -> hello.test.my:relay.4
 +bsc.Endpoint{vendorid="hello", deviceid="test", instance="my:relay.4", direction=bsc.OUTPUT, type=bsc.BINARY, cmdCB=relayCmd}
 +
 +-- Form 5 : Shorter way of doing form 4.
 +-- creates -> helloworld.test.my:relay.5
 +bsc.Endpoint{source="hithere.test.my:relay.5", direction=bsc.OUTPUT, type=bsc.BINARY, cmdCB=relayCmd}
  
 xap.process() xap.process()
Line 460: Line 481:
  
 function init() function init()
-  local e = bsc.Endpoint{source="dbzoo.livebox.Plugboard:gc", direction=bsc.INPUT, type=bsc.STREAM}+  -- Creates:  dbzoo.livebox.Plugboard:gc 
 +  local e = bsc.Endpoint{name="gc", direction=bsc.INPUT, type=bsc.STREAM}
   xap.Timer(update, 60, e):start()   xap.Timer(update, 60, e):start()
 end end
Line 504: Line 526:
 require("xap.bsc") require("xap.bsc")
  
-xap.init("dbzoo.livebox.test","FF00AA00")+xap.init{instance="test",uid="FF00AA00"}
  
 bsc.sendState("dbzoo.livebox.Controller:relay.1", "on") bsc.sendState("dbzoo.livebox.Controller:relay.1", "on")
Line 557: Line 579:
 end end
  
-xap.init("dbzoo.lua.example","FF00DD00")+xap.init{instance="example",uid="FF00DD00"}
 init() init()
 xap.process() xap.process()
  • livebox/hah_plugboard_v2.txt
  • Last modified: 2015/01/20 00:37
  • by brett