Skip to content
simen edited this page May 3, 2017 · 17 revisions


What is freebird-base?

freebird-base provides three base classes used by freebird IoT framework. These classes are abstractions of the network controller, network device, and real appliance, respectively.

Class Description Example
[[ Netcore Netcore Class]] A network controller responsible for message transportation and network management.
[[ Device Device Class]] A wired/wireless machine in the network.
[[ Gadget Gadget Class]] Something specific and functional in our life.


Why Netcore, Device, and Gadget?


The concept of Netcore, Device, and Gadget in freebird framework well separates the machine management and application management from each other. This brings developers a more clear, convenient and flexible way in building up a IoT machine network.


To explain why we need these three base classes, let's take a wifi weather station in a machine network for example:

  • The weather station is made up of a temperature, a humidity, and a pm2.5 sensor, where each sensor is a gadget living on the WiFi-connected device.
  • A device, such as an Arduino(wifi-connected), ESP8266, MT7688, RaspberryPi or Beaglebone, is the carrier of applications(gadgets).
  • Now we know, this weather station has 3 gadgets on it, but only has a single device in it.

Here is another example:

  • We have a bluetooth low-energy (BLE) light switch in the network.
  • It is a simple one-device-with-one-gadget machine.
  • We can say "there is only one gadget(a light switch) implemented on a TI CC2540 BLE SoC device."

The last question here is who manages the machine network? Obviously, it's the Netcore which starts a network, permits devices to join the network, removes a device from the network, and bans a device, like so.


Ready-made Netcores


Here are the list of ready-made netcores that can be used directly with freebird.js:

  • freebird-netcore-ble
    • Required hardware: TI CC2540 EVM, TI CC2541 USB Dongle, CSR8510 USB Dongle
    • Install: npm install freebird-netcore-ble --save
  • freebird-netcore-zigbee
    • Required hardware: TI CC2530 EVM, TI CC2531 USB Dongle
    • Install: npm install freebird-netcore-zigbee --save
  • freebird-netcore-mqtt
    • Required hardware: Ethernet or WiFi
    • Install: npm install freebird-netcore-mqtt --save
  • freebird-netcore-coap
    • Required hardware: Ethernet or WiFi
    • Install: npm install freebird-netcore-coap --save