Amazon DynamoDB Persistence - jfederico/openhab GitHub Wiki
Please note that this plugin is still in development and not officially available.
This service allows you to persist state updates using the Amazon DynamoDB database. Also query functionality is fully supported. Users are recommended to familiarize with AWS Pricing before using this plugin.
General:
- Writing/reading information to relational database systems.
- Database Table Name configurable
- Automatic creation of tables
- Set-up Amazon account as described below (see Setting up Amazon account)
- For installation of this persistence bundle, please follow the same steps as if you would install a binding.
- Place a persistence file called dynamodb.persist in the
${openhab.home}/configuration/persistence
folder. This has the standard format as described in Persistence. - Configure openhab.cfg (see Openhab configuration below)
- Sign up for Amazon AWS
- Select the AWS region in the AWS console using these instructions. Note the region identifier in the url (e.g.
https://eu-west-1.console.aws.amazon.com/console/home?region=eu-west-1
means that region id iseu-west-1
) - Create user for openhab with IAM
- Open Services -> IAM -> Users -> Create new Users. Enter
openhab
to User names, keep Generate an access key for each user checked, and finally click Create. - Show User Security Credentials and record the keys displayed
- Configure user policy to have access for dynamodb
- Open Services -> IAM -> Policies
- Check AmazonDynamoDBFullAccess and click Policy actions -> Attach
- Check the user created in step 2 and click Attach policy
Configure addon using openhab.cfg, for example
dynamodb:accessKey=foo
dynamodb:secretKey=bar
dynamodb:region=eu-west-1
The accessKey
and secretKey
correspond to credentials shown in IAM when creating the AWS user. Region needs to match the region what was used to create the user.
Alternatively, instead of specifying accessKey
, secretKey
, one can configure profilesConfigFile
(path to Amazon credentials file) and profile
(name of profile to use). For example,
dynamodb:profilesConfigFile=/home/openhab/aws_creds
dynamodb:profile=fooprofile
dynamodb:region=eu-west-1
Example of credentials file (/home/openhab/aws_creds
):
[fooprofile]
aws_access_key_id=testAccessKey
aws_secret_access_key=testSecretKey
Please note that the user that runs openhab must have approriate read rights to the credential file. For more details on the Amazon credential file format, see Amazon documentation.
Other configuration parameters for the dynamodb addon:
-
readCapacityUnits
, read capacity for the created tables. Defaults to1
. -
writeCapacityUnits
, write capacity for the created tables. Defaults to1
. -
tablePrefix
, table prefix used in the name of created tables. Defaults toopenhab-
.
Refer to amazon documentation on provisioned throughput on details on read/write capacity.
When item is persisted via this addon, a table is created if necessary. Currently the addon will create at most two tables for different item types. The tables will be named <PREFIX><ITEMTYPE>
, where <PREFIX>
matches the tablePrefix
configuration; while the <ITEMTYPE>
is either bigdecimal
(numeric items) or string
(string and complex items).
Each table will have three columns: itemname
(item name), timeutc
(in ISO 8601 format with millisecond accuracy), and itemstate
(either number or string representing item state).
- When the tables are created, the read/write capacity is configured according to configuration. However, the addon does not modify the capacity of existing tables. As a workaround you can modify the read/write capacity of existing tables using Amazon console.
Please note that there might be charges from Amazon when using this addon to query/store data to DynamoDB. See Amazon DynamoDB pricing pages for more details. Please also note possible Free Tier benefits.
This addon is provided "AS IS", and the user takes full responsibility of any charges, damage to amazon data.