Skip to content

Commit

Permalink
Initial commit
Browse files Browse the repository at this point in the history
  • Loading branch information
StefanNienhuis committed Oct 2, 2021
0 parents commit 413c334
Show file tree
Hide file tree
Showing 16 changed files with 5,616 additions and 0 deletions.
48 changes: 48 additions & 0 deletions .eslintrc.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
{
"env": {
"es2020": true,
"node": true
},
"extends": [
"eslint:recommended",
"plugin:@typescript-eslint/recommended"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 11,
"sourceType": "module"
},
"plugins": [
"@typescript-eslint"
],
"rules": {
"indent": [
"error",
4,
{
"MemberExpression": "off"
}
],
"linebreak-style": [
"error",
"unix"
],
"quotes": [
"error",
"single",
{
"avoidEscape": true
}
],
"semi": [
"error",
"always"
],
"prefer-const": [
"off"
],
"@typescript-eslint/no-explicit-any": [
"off"
]
}
}
155 changes: 155 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
### macOS ###
# General
.DS_Store
.AppleDouble
.LSOverride

# Icon must end with two \r
Icon


# Thumbnails
._*

# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent

# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

### Node ###
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*

# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov

# Coverage directory used by tools like istanbul
coverage
*.lcov

# nyc test coverage
.nyc_output

# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt

# Bower dependency directory (https://bower.io/)
bower_components

# node-waf configuration
.lock-wscript

# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release

# Dependency directories
node_modules/
jspm_packages/

# Snowpack dependency directory (https://snowpack.dev/)
web_modules/

# TypeScript cache
*.tsbuildinfo

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env
.env.test
.env.production

# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache

# Next.js build output
.next
out

# Nuxt.js build / generate output
.nuxt
dist

# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public

# vuepress build output
.vuepress/dist

# Serverless directories
.serverless/

# FuseBox cache
.fusebox/

# DynamoDB Local files
.dynamodb/

# TernJS port file
.tern-port

# Stores VSCode versions used for testing VSCode extensions
.vscode-test

# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*

### Node Patch ###
# Serverless Webpack directories
.webpack/

# Build output
build/
37 changes: 37 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<span align="center">

# Homebridge Bold

[![Downloads](https://img.shields.io/npm/dt/homebridge-bold)](https://www.npmjs.com/package/homebridge-bold)
[![Version](https://img.shields.io/npm/v/homebridge-bold)](https://www.npmjs.com/package/homebridge-bold)
<br/>
[![Issues](https://img.shields.io/github/issues/StefanNienhuis/homebridge-bold)](https://github.com/StefanNienhuis/homebridge-bold/issues)
[![Pull requests](https://img.shields.io/github/issues-pr/StefanNienhuis/homebridge-bold)](https://github.com/StefanNienhuis/homebridge-bold/pulls)

This [Homebridge](https://homebridge.io) plugin brings HomeKit support for the Bold Smart Locks.

</span>

## Installation
First, install Homebridge<br/>
`npm install --global homebridge`

Then, install the Programmable HTTP Switch plugin<br/>
`npm install --global homebridge-bold`

## Configuration
The easiest way to configure this plugin is by using the [Config UI](https://github.com/oznu/homebridge-config-ui-x), as this plugin provides a login flow for the authentication token.

*Note:* A Bold Connect hub is required for this plugin to function. This plugin will only expose locks that are linked to a Bold Connect hub to HomeKit.

### Manual configuration
An example configuration can be found in the [config.example.json](config.example.json) file.

| Property | Type | Details |
| ----------- | -------- | ------------------------------------------------------- |
| `platform` | `string` | **Required**<br/>Must always be `Bold`. |
| `authToken` | `string` | **Required**<br/>Authentication token for the Bold API. |

## Credits

Thanks to [Erik Nienhuis](https://github.com/ErikNienhuis) for helping with reverse-engineering the Bold API and providing me with the Bold API documentation.
23 changes: 23 additions & 0 deletions config.example.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{
"bridge": {
"name": "Homebridge",
"username": "CC:22:3D:E3:CE:30",
"manufacturer": "homebridge.io",
"model": "homebridge",
"port": 51826,
"pin": "031-45-154"
},
"description": "This is an example configuration file with one fake accessory and one fake platform. You can use this as a template for creating your own configuration file containing devices you actually own.",
"ports": {
"start": 52100,
"end": 52150,
"comment": "This section is used to control the range of ports that separate accessory (like camera or television) should be bind to."
},
"accessories": [],
"platforms": [
{
"platform": "Bold",
"authToken": "<authentication token>"
}
]
}
17 changes: 17 additions & 0 deletions config.schema.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
{
"pluginAlias": "Bold",
"pluginType": "platform",
"singular": true,
"customUi": true,
"schema": {
"type": "object",
"properties": {
"authToken": {
"title": "Authentication token",
"type": "string",
"pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$",
"description": "This authentication token will be refreshed automatically"
}
}
}
}
Loading

0 comments on commit 413c334

Please sign in to comment.