Skip to content

eliona-smart-building-assistant/abb-free-at-home-app

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ABB-free@home App

This app enables connecting ABB-free@home devices to Eliona environment.

Configuration

The app needs environment variables and database tables for configuration. To edit the database tables the app provides an own API access.

Registration in Eliona

To start and initialize an app in an Eliona environment, the app has to be registered in Eliona. For this, entries in database tables public.eliona_app and public.eliona_store are necessary.

This initialization can be handled by the reset.sql script.

Environment variables

  • CONNECTION_STRING: configures the Eliona database. Otherwise, the app can't be initialized and started (e.g. postgres://user:pass@localhost:5432/iot).

  • INIT_CONNECTION_STRING: configures the Eliona database for app initialization like creating schema and tables (e.g. postgres://user:pass@localhost:5432/iot). Default is content of CONNECTION_STRING.

  • API_ENDPOINT: configures the endpoint to access the Eliona API v2. Otherwise, the app can't be initialized and started. (e.g. http://api-v2:3000/v2)

  • API_TOKEN: defines the secret to authenticate the app and access the Eliona API.

  • API_SERVER_PORT(optional): define the port the API server listens. The default value is 3000.

  • LOG_LEVEL(optional): defines the minimum level that should be logged. The default level is info.

Database tables

The app requires configuration data that remains in the database. To do this, the app creates its own database schema abb_free_at_home during initialization. To modify and handle the configuration data the app provides an API access. Have a look at the API specification how the configuration tables should be used.

  • abb_free_at_home.configuration: Contains configuration of the app. Editable through the API.

  • abb_free_at_home.asset: Provides asset mapping. Maps broker's asset IDs to Eliona asset IDs.

Generation: to generate access method to database see Generation section below.

Adding devices support

To add new devices, define:

  • Asset type in /resources/asset-types
  • Struct in model.go
  • Case in broker.go:GetSystems() (map functions and datapoints)
  • Supported function ID in model.GetFunctionIDsList() (the query requests only supported function IDs)

References

App API

The app provides its own API to access configuration data and other functions. The full description of the API is defined in the openapi.yaml OpenAPI definition file.

Generation: to generate api server stub see Generation section below.

Eliona assets

This app creates Eliona asset types and attribute sets during initialization.

The data is written for each device, structured into different subtypes of Elinoa assets. The following subtypes are defined:

  • Info: Static data which provides information about a device like address and firmware info.
  • Status: Device status information, like battery level.
  • Input: Current values reported by ABB-free@home sensors.

Continuous asset creation

Assets for all devices connected to the ABB-free@home account are created automatically when the configuration is added.

To select which assets to create, a filter could be specified in config. The schema of the filter is defined in the openapi.yaml file.

Possible filter parameters are defined in the structs in broker.go and marked with eliona:"attribute_name,filterable" field tag.

To avoid conflicts, the Global Asset Identifier is a manufacturer's ID prefixed with asset type name as a namespace.

Dashboard

An example dashboard meant for a quick start or showcasing the apps abilities can be obtained by accessing the dashboard endpoint defined in the openapi.yaml file.

Tools

Generate API server stub

For the API server the OpenAPI Generator for go-server is used to generate a server stub. The easiest way to generate the server files is to use one of the predefined generation script which use the OpenAPI Generator Docker image.

.\generate-api-server.cmd # Windows
./generate-api-server.sh # Linux

Generate Database access

For the database access SQLBoiler is used. The easiest way to generate the database files is to use one of the predefined generation script which use the SQLBoiler implementation. Please note that the database connection in the sqlboiler.toml file have to be configured.

.\generate-db.cmd # Windows
./generate-db.sh # Linux

Generate asset type descriptions

For generating asset type descriptions from field-tag-annotated structs, asse-from-struct tool can be used.

About

ABB Free@Home app for Eliona Smart Building Assistant

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages