This is a Homebridge plugin that adds HomeKit support to Tidbyt devices.

Overview

Tidbyt Platform Plugin verified-by-homebridge

This is a Homebridge plugin that adds HomeKit support to Tidbyt devices. Built with node-tidbyt.

This project is not endorsed or sponsored by Tidbyt Inc. and is for educational purposes only.

Features

Brightness Control

So far the integration is fairly limited. The device will show up on your network as a Lightbulb. You can adjust the brightness from 1-100%.

   

Note: Due to Tidbyt API limitations it is not possible to turn the screen completely off at this time. I will add support for turning the device on/off as soon as it is possible to do so.

Custom Apps

Using Custom Apps, you can configure your very own applets using Pixlet scripts.

You can schedule your applets to update and push to all of your devices at the same time to keep them updated.

Here is what it looks like to configure the Twitter Followers pixlet that I created last week:

This can also be configured manually in the config.json like this:

{
    ...
    "platforms": [
        ...
        {
            "discoverFrequency": 60000,
            "managedDevices": [
                {
                    "id": "mainly-awesome-viking-rabbit-2e1",
                    "authToken": "..."
                }
            ],
            "customApps": [
                {
                    "id": "TwitterFollowers",
                    "enabled": true,
                    "updateOnStartup": true,
                    "script": "/home/pi/tidbyt/twitter.star",
                    "schedule": "*/30 * * * *",
                    "config": [
                        {
                            "key": "screen_name",
                            "value": "npenree"
                        }
                    ]
                }
            ],
            "platform": "Tidbyt"
        }
    ]
}

And the final result on the Tidbyt:

More apps to try!

You can find more cool applets on Github and the Tidbyt Community forums.

Contributing

This project should be use in conjunction with the developer documentation. A full list of all supported service types, and their characteristics is available on this site.

Setup Development Environment

To develop Homebridge plugins you must have Node.js 12 or later installed, and a modern code editor such as VS Code. This plugin template uses TypeScript to make development easier and comes with pre-configured settings for VS Code and ESLint. If you are using VS Code install these extensions:

Install Development Dependencies

Using a terminal, navigate to the project folder and run this command to install the development dependencies:

npm install

Build Plugin

TypeScript needs to be compiled into JavaScript before it can run. The following command will compile the contents of your src directory and put the resulting code into the dist folder.

npm run build

Link To Homebridge

Run this command so your global install of Homebridge can discover the plugin in your development environment:

npm link

You can now start Homebridge, use the -D flag so you can see debug log messages in your plugin:

homebridge -D

Watch For Changes and Build Automatically

If you want to have your code compile automatically as you make changes, and restart Homebridge automatically between changes you can run:

npm run watch

This will launch an instance of Homebridge in debug mode which will restart every time you make a change to the source code. It will load the config stored in the default location under ~/.homebridge. You may need to stop other running instances of Homebridge while using this command to prevent conflicts. You can adjust the Homebridge startup command in the nodemon.json file.

Versioning

Given a version number MAJOR.MINOR.PATCH, such as 1.4.3, increment the:

  1. MAJOR version when you make breaking changes to your plugin,
  2. MINOR version when you add functionality in a backwards compatible manner, and
  3. PATCH version when you make backwards compatible bug fixes.

You can use the npm version command to help you with this:

# major update / breaking changes
npm version major

# minor update / new features
npm version update

# patch / bugfixes
npm version patch

Publish Package

When you are ready to publish your plugin to npm, make sure you have removed the private attribute from the package.json file then run:

npm publish

If you are publishing a scoped plugin, i.e. @username/homebridge-xxx you will need to add --access=public to command the first time you publish.

Publishing Beta Versions

You can publish beta versions of your plugin for other users to test before you release it to everyone.

# create a new pre-release version (eg. 2.1.0-beta.1)
npm version prepatch --preid beta

# publsh to @beta
npm publish --tag=beta

Users can then install the beta version by appending @beta to the install command, for example:

sudo npm install -g homebridge-tidbyt@beta
Comments
  • Bump normalize-url from 4.5.0 to 4.5.1

    Bump normalize-url from 4.5.0 to 4.5.1

    Bumps normalize-url from 4.5.0 to 4.5.1.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump lodash from 4.17.20 to 4.17.21

    Bump lodash from 4.17.20 to 4.17.21

    Bumps lodash from 4.17.20 to 4.17.21.

    Commits
    • f299b52 Bump to v4.17.21
    • c4847eb Improve performance of toNumber, trim and trimEnd on large input strings
    • 3469357 Prevent command injection through _.template's variable option
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Bump glob-parent from 5.1.1 to 5.1.2

    Bump glob-parent from 5.1.1 to 5.1.2

    Bumps glob-parent from 5.1.1 to 5.1.2.

    Release notes

    Sourced from glob-parent's releases.

    v5.1.2

    Bug Fixes

    Changelog

    Sourced from glob-parent's changelog.

    5.1.2 (2021-03-06)

    Bug Fixes

    6.0.2 (2021-09-29)

    Bug Fixes

    6.0.1 (2021-07-20)

    Bug Fixes

    • Resolve ReDoS vulnerability from CVE-2021-35065 (#49) (3e9f04a)

    6.0.0 (2021-05-03)

    ⚠ BREAKING CHANGES

    • Correct mishandled escaped path separators (#34)
    • upgrade scaffold, dropping node <10 support

    Bug Fixes

    • Correct mishandled escaped path separators (#34) (32f6d52), closes #32

    Miscellaneous Chores

    • upgrade scaffold, dropping node <10 support (e83d0c5)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • Configure Renovate

    Configure Renovate

    WhiteSource Renovate

    Welcome to Renovate! This is an onboarding PR to help you understand and configure settings before regular Pull Requests begin.

    🚦 To activate Renovate, merge this Pull Request. To disable Renovate, simply close this Pull Request unmerged.


    Detected Package Files

    • .github/workflows/build.yml (github-actions)
    • package.json (npm)
    • .nvmrc (nvm)

    Configuration Summary

    Based on the default config's presets, Renovate will:

    • Start dependency updates only once this onboarding PR is merged
    • Enable Renovate Dependency Dashboard creation
    • If semantic commits detected, use semantic commit type fix for dependencies and chore for all others
    • Ignore node_modules, bower_components, vendor and various test/tests directories
    • Autodetect whether to pin dependencies or maintain ranges
    • Rate limit PR creation to a maximum of two per hour
    • Limit to maximum 10 open PRs at any time
    • Group known monorepo packages together
    • Use curated list of recommended non-monorepo package groupings
    • Fix some problems with very old Maven commons versions
    • Ignore spring cloud 1.x releases
    • Ignore web3j 5.0.0 release
    • Ignore http4s digest-based 1.x milestones
    • Use node versioning for @types/node
    • Limit concurrent requests to reduce load on Repology servers until we can fix this properly, see issue 10133
    • Do not upgrade from Alpine stable to edge

    🔡 Would you like to change the way Renovate is upgrading your dependencies? Simply edit the renovate.json in this branch with your custom config and the list of Pull Requests in the "What to Expect" section below will be updated the next time Renovate runs.


    What to Expect

    With your current configuration, Renovate will create 11 Pull Requests:

    Pin dependencies
    Update dependency @​types/node to v14.18.12
    • Schedule: ["at any time"]
    • Branch name: renovate/node-14.x
    • Merge into: main
    • Upgrade @types/node to 14.18.12
    Update dependency eslint to v8.12.0
    • Schedule: ["at any time"]
    • Branch name: renovate/eslint-8.x
    • Merge into: main
    • Upgrade eslint to 8.12.0
    Update dependency homebridge to v1.4.0
    • Schedule: ["at any time"]
    • Branch name: renovate/homebridge-1.x
    • Merge into: main
    • Upgrade homebridge to 1.4.0
    Update dependency ts-node to v10.7.0
    • Schedule: ["at any time"]
    • Branch name: renovate/ts-node-10.x
    • Merge into: main
    • Upgrade ts-node to 10.7.0
    Update dependency typescript to v4.6.3
    • Schedule: ["at any time"]
    • Branch name: renovate/typescript-4.x
    • Merge into: main
    • Upgrade typescript to 4.6.3
    Update typescript-eslint monorepo to v5.18.0
    Update Node.js to v16
    • Schedule: ["at any time"]
    • Branch name: renovate/node-16.x
    • Merge into: main
    • Upgrade node to 16
    • Upgrade @types/node to 16.11.26
    Update actions/checkout action to v3
    • Schedule: ["at any time"]
    • Branch name: renovate/actions-checkout-3.x
    • Merge into: main
    • Upgrade actions/checkout to v3
    Update actions/setup-node action to v3
    • Schedule: ["at any time"]
    • Branch name: renovate/actions-setup-node-3.x
    • Merge into: main
    • Upgrade actions/setup-node to v3
    Update dependency got to v12
    • Schedule: ["at any time"]
    • Branch name: renovate/got-12.x
    • Merge into: main
    • Upgrade got to ^12.0.0

    🚸 Branch creation will be limited to maximum 2 per hour, so it doesn't swamp any CI resources or spam the project. See docs for prhourlylimit for details.


    ❓ Got questions? Check out Renovate's Docs, particularly the Getting Started section. If you need any further assistance then you can also request help here.


    This PR has been generated by WhiteSource Renovate. View repository job log here.

    opened by renovate[bot] 0
  • Apps as Accessories

    Apps as Accessories

    It would be awesome if Tidbit apps would show as accessories in Homekit. This would allow you to set scenes and issue voice commands to display data on the Tidbyt.

    Until the Tidbyt API returns the currently displayed app (I don't believe this information is available), the app should probably "auto-off" after being set, so the state is always "off" as toggling the switch would simply initiate a push action.

    I'm thinking it could be cool if the UI in the Home app allowed combined control of both the "switch" (app) and brightness (display configuration), so these could be automated. However, having these appear a ungrouped accessories may lead to less duplication.

    6soprmphbqu61

    enhancement 
    opened by joeyhoer 3
Releases(v0.7.0)
  • v0.7.0(Feb 25, 2022)

    • Adds support for device-specific custom apps

    Apps defined in the "Custom Apps" section outside of a device are global apps and will be installed on all devices.

    Source code(tar.gz)
    Source code(zip)
  • v0.6.5(Jan 12, 2022)

    NOTE: This update requires a configuration change after restart!

    To support multiple devices, each device needs its own API Key in addition to the device ID.

    I've adjusted the configuration schema to accommodate this, but it will require that you enter your API key for each device under the Devices section before the plugin is usable again. Sorry for the inconvenience.

    Changes

    • Add support for multiple devices
    • Optimize Pixlet render calls - render once, and send the same image to all managed devices
    Source code(tar.gz)
    Source code(zip)
  • v0.5.3(Jan 4, 2022)

  • v0.5.0(Dec 30, 2021)

  • v0.4.1(Dec 27, 2021)

    • Adds support for dynamic configuration parameters to be passed to the Pixlet render command.

    Config Scripts

    A config script is simply a Node.JS module that exports a function that returns a promise resolving to an array of key/value pair objects.

    The function will pass in the previously define configuration values (either static from customApp.config or the previously fetched values).

    Example:

    module.exports = (config) => {
      // Normally you'd do some async call and then build this array of key/value pairs
      return new Promise(resolve => ([
        { key: 'screen_name', value: 'npenree'
      ]);
    };
    
    Source code(tar.gz)
    Source code(zip)
  • v0.3.7(Dec 24, 2021)

Owner
Nicholas Penree
I write JavaScript for all the things.
Nicholas Penree
The Homebridge August plugin allows you to access your August/Yale Locks from HomeKit with Homebridge.

Homebridge August The Homebridge August plugin allows you to access your August & Yale Lock(s) from HomeKit with Homebridge. Installation Search for "

Donavan Becker 13 Dec 12, 2022
Homebridge plugin exposes to Apple's HomeKit devices

This Homebridge plugin exposes to Apple's HomeKit devices (lights, plugs, sensors, switches, ...) and virtual devices on a Crestron professor. Homebridge Crestron communicates with TCP.

null 23 Nov 21, 2022
Nest accessory developed with HAP-NodeJS to allow devices into HomeKit

Nest_accfactory This is a HAP-NodeJS accessory I have developed to allow Nest devices to be used with HomeKit including having support for HomeKit Sec

markh 9 Oct 9, 2022
A homebridge plugin to display the current consumption from your Tibber pulse as lux in Home kit.

homebridge-tibber-lightsensor Tibber lightsensor is a plugin for Homebridge. It fetches the current watt usage of your house and displays it as a ligh

Johan Runbert 2 Oct 11, 2022
🏠 Homebridge plugin for SmartRent installations

Homebridge SmartRent Unofficial Homebridge plugin for SmartRent, allowing you to control your SmartRent devices with Apple Home. ?? Supported Devices

Grant Burry 8 Aug 12, 2022
Playstation integration for Homebridge / HOOBS.

Homebridge Playstation Playstation integration for Homebridge / HOOBS. Hey Siri, turn on Playstation finally possible! This integration exposes a Swit

Flavio De Stefano 54 Jan 1, 2023
A mojo.js plugin that adds support for ejs templates.

A mojo.js plugin that adds support for ejs templates. The code of this plugin is a good example for learning to build new plugins, you're welcome to fork it.

Mojolicious 4 Jun 9, 2022
A jQuery plugin that adds cross-browser mouse wheel support.

jQuery Mouse Wheel Plugin A jQuery plugin that adds cross-browser mouse wheel support with delta normalization. In order to use the plugin, simply bin

jQuery 3.9k Dec 26, 2022
A small plugin for Frappe that adds the support of customizations to the attach control.

Frappe Better Attach Control A small plugin for Frappe that adds the support of customizations to the attach control. Table of Contents Requirements S

Ameen Ahmed 17 Dec 25, 2022
Query for CSS brower support data, combined from caniuse and MDN, including version support started and global support percentages.

css-browser-support Query for CSS browser support data, combined from caniuse and MDN, including version support started and global support percentage

Stephanie Eckles 65 Nov 2, 2022
Easy responsive tabs - is a lightweight jQuery plugin which optimizes normal horizontal or vertical tabs to accordion on multi devices

Easy responsive tabs - is a lightweight jQuery plugin which optimizes normal horizontal or vertical tabs to accordion on multi devices like: web, tablets, Mobile (IPad & IPhone). This plugin adapts the screen size and changes its action accordingly.

Samson Onna 600 Dec 8, 2022
Adds promise support (rejects(), doesNotReject()) to tape by decorating it using tape-promise.

Tape With Promises Adds promise support (rejects(), doesNotReject()) to tape by decorating it using tape-promise. Install npm install --save-dev @smal

Small Technology Foundation 3 Mar 21, 2022
Adds support for Blade templates to Prettier. (work in progress)

Laravel Blade support for Prettier ⚠️ This plugin is still a work-in-progress. If you're trying it out, please keep this in mind. This package include

Ryan Chandler 139 Sep 20, 2022
A simple dashboard to keep track of all your active devices/servers

Slashboard Pulsar A lightweight node js app designed to work with the Slashboard desktop client Built using Node.js Installation Clone this repository

Philippe Négrel-Jerzy 25 Dec 21, 2022
A web panel to manage TP-Link/Kasa smart home devices.

TP-Link Web Panel A web panel to manage TP-Link/Kasa smart home devices. Prerequisites Node.js v16.13.1 or higher Yarn Installation Run git clone http

Milan M 3 Apr 1, 2022
Ios-calculator-js - Calculator made with vanilla javascript and custom css based on the design of iOS devices.

ios-calculator-js This is a practice project in which I try to replicate iOS calculator's both logic and styling. In case you spot room for improvemen

Franco 1 Nov 10, 2021
Reorderable drag-and-drop lists for modern browsers and touch devices. No jQuery or framework required.

Sortable Sortable is a JavaScript library for reorderable drag-and-drop lists. Demo: http://sortablejs.github.io/Sortable/ Features Supports touch dev

SortableJS 26.1k Jan 5, 2023
This Plugin adds shortcodes with various prewritten phrases to improve quality and productivity of your writing.

Obsidian Phrasebank This Plugin adds shortcodes with various prewritten phrases to improve quality and productivity of your writing. Example :intro_pr

Viktor Bezdek 9 Jan 1, 2023
Obsidian plugin that adds autocomplete and auto-formatting to frontmatter tags.

Obsidian Front Matter Tag Wizard Tired of having to type # to get tag autocompletion in your Obsidian note front matter? I feel your pain. This plugin

Eric 10 Nov 5, 2022