Both sides previous revision Previous revision Next revision | Previous revision |
livebox:hah_hahnode:nanode_gateway [2013/06/02 05:34] – brett | livebox:hah_hahnode:nanode_gateway [2014/01/20 09:11] (current) – [Operation] brett |
---|
{{:livebox:hah_hahnode:nanode_block.png|}} | {{:livebox:hah_hahnode:nanode_block.png|}} |
| |
How we are going to use this it to have it pretend to be an [[livebox/xap_serial]] device. This way we don't need to constantly change its firmware when new Nodes are added or removed onto the network. Nor do we need to change its firmware if new types of messages are introduced. All this backend encoding/decoding will be taken care by our LUA scripting engine. | source: {{:livebox:hah_hahnode:rfgateway.zip|}} |
===== Architecture ===== | ===== Architecture ===== |
| |
This one embedded device can replace the base jeenode + xap-serial running on the livebox. The diagram below shows on the left the traditional livebox solution using a Base node to receive RF communication which is relayed to xap-serial and on the right how this can be done using just a Nanode. | How we are going to use this is to have it pretend to be an [[livebox/xap_serial]] device. This way we don't need to constantly change its firmware when new Nodes are added or removed onto the network. Nor do we need to change its firmware if new types of messages are introduced. All this backend encoding/decoding will be taken care by our Lua scripting engine. |
| |
| This one embedded device can replace the base jeenode + xap-serial running on the livebox. The diagram below shows on the left the traditional Livebox solution using a Base node to receive RF communication which is relayed to xap-serial and on the right how this can be done using just a Nanode. |
| |
{{:livebox:hah_hahnode:nanodegateway.png|}} | {{:livebox:hah_hahnode:nanodegateway.png|}} |
| |
This device acts as a pseudo xap-serial service and will transmit a packet conforming to the xAP Serial Schema, however as its not been programmed to be a true xap-serial device it will only generate Serial.Received class messages. | It does this by acting as a pseudo xap-serial service, however it will only generate Serial.Received class messages (for now). |
| |
===== Operation ===== | ===== Operation ===== |
| |
Once the firmware is flashed the only details that requires configuration are the NODE ID, Group and RF Frequency these must be done via the serial interface use to flash the device. The firmware will obtain an IP address via DHCP. | Once the firmware is flashed, the only details that require configuration are the NODE ID, Group and RF Frequency. These must be done via the serial interface used to flash the device. The firmware will obtain an IP address via DHCP. |
| |
Once operational it will transmit onto the Ethernet a xAP heartbeat every minute to let you know its alive. | Once operational, it will transmit onto the Ethernet a xAP heartbeat every minute to let you know it's alive. |
<code> | <code> |
xap-hbeat | xap-hbeat |
</code> | </code> |
| |
An RF packet that can be decoded will be emitted using the pseudo port /dev/ttyUSB0 this is to allow easier integration into the Livebox LUA plugboard backend where the full decode of the data stream is performed. | An RF packet that can be decoded will be emitted using the pseudo port /dev/ttyUSB0 this is to allow easier integration into the Livebox Lua plugboard backend where the full decode of the data stream is performed. |
<code> | <code> |
xap-header | xap-header |
</code> | </code> |
| |
Integration into the [[livebox/hah_hahnode#configuring_the_jeenodeappletlua|jeenodeApplet.lua]] require a minor change. | Integration into the [[livebox/hah_hahnode#configuring_the_jeenodeappletlua|jeenodeApplet.lua]] requires a minor change. |
<code> | <code> |
function init() | function init() |
monitor({ target="dbzoo.nanode.gateway", port="/dev/ttyUSB0" }, | monitor({ target="dbzoo.nanode.gateway", port="/dev/ttyUSB0" }, |
{ [2] = RoomNode{base="dbzoo.nanode.jeenode:2", endpoints={lobat=1,temp=1,light=1},ttl=900}, | { [2] = RoomNode{deviceid="nanode",instance="jeenode:2", endpoints={lobat=1,temp=1,light=1},ttl=900}, |
[3] = RoomNode{base="dbzoo.nanode.jeenode:3", endpoints={lobat=1,temp=1,light=1},ttl=900}, | [3] = RoomNode{deviceid="nanode",instance="jeenode:3", endpoints={lobat=1,temp=1,light=1},ttl=900}, |
[4] = RoomNode{base="dbzoo.nanode.jeenode:4", endpoints={lobat=1,temp=1,light=1},ttl=900}, | [4] = RoomNode{deviceid="nanode", instance="jeenode:4", endpoints={lobat=1,temp=1,light=1},ttl=900}, |
[7] = RoomNode{base="dbzoo.nanode.jeenode:7", endpoints={lobat=1,temp=1,humi=1},ttl=900} | [5] = RoomNode{deviceid="nanode", instance="jeenode:5", endpoints={temp=1,lobat=1,light=1,humi=0,moved=1}, ttl=900}, |
| [7] = RoomNode{deviceid="nanode", instance="jeenode:7", endpoints={lobat=1,temp=1,humi=1},ttl=1800}, |
}) | }) |
end | end |