Integration with Tibber, with Pulse and Watty support.
- Price changed
- Current price is at today's lowest
- Current price is at today's highest
- Current price is at its lowest among the next [x] hours
- Current price is at its highest among the next [x] hours
- Current price is [x] percent below today's average
- Current price is [x] percent above today's average
- Current price is [x] percent below average of the next [y] hours
- Current price is [x] percent above average of the next [y] hours
- Current price is one of today's lowest [x] prices
- Current price is one of today's highest [x] prices
- Consumption is reported (triggers when new data is available, normally once a week. Every hour if you have a Pulse device)
- Current price below/above
- Current price is at today's lowest
- Current price is at today's highest
- Current price is at its lowest among the next [x] hours
- Current price is at its highest among the next [x] hours
- Current price is [x] percent below today's average
- Current price is [x] percent above today's average
- Current price is [x] percent below average of the next [y] hours
- Current price is [x] percent above average of the next [y] hours
- Current price is one of the [x] lowest prices between [y] and [z]
- Current price is one of today's lowest [x] prices
- Current price is one of today's highest [x] prices
- Send push notification (through Tibber app)
- Power changed
- Consumption since midnight changed
- Cost since midnight changed
- Daily consumption is reported
The app provides an API that can be used by other Homey apps.
Your app can use the permission homey:app:com.tibber
to request access to the Tibber app.
The following API endpoints can then be used:
-
HTTP
GET /home-devices[?name=<string>]
List Home devices, optionally filtered by
name
-
HTTP
GET /pulse-devices[?name=<string>]
List Pulse/Watty devices, optionally filtered by
deviceId
-
HTTP
GET /home-device-data[?deviceId=<string>]
Read current device data
In addition, the app can publish real-time events for price and Pulse/Watty live measurement updates. Register the event with name data-update-event
the following way to receive data updates:
this.tibberAppApi = this.homey.api.getApiApp('com.tibber');
this.tibberAppApi.on(
'data-update-event',
async (event, data) => {
// ...
});
Contributions are very welcome in the form of a pull request. We cannot guarantee that all pull requests will be accepted (we have to balance individual users' needs and wants with the user base as a whole), but we will do our best to review and work with you to get them in a good state and merge them.
Currently, our focus is very divided, and we may not be actively monitoring the repository activity on a daily basis, so please be patient if we don't respond immediately.
The app uses OAuth authentication with client ID and client secret. Since these are sensitive data, it is not possible to run the app locally with the same authentication as the production app.
If you want to contribute, or just run your own fork of the app, you need to use your own personal access token to be able to run the app on your Homey (either connected to a local computer, or over your LAN) while talking to the Tibber API.
The process is as follows:
-
Create a personal access token at https://developer.tibber.com/
-
Create an
env.json
file in the root of the app -
Paste the following:
{ "ACCESS_TOKEN": "..." }
Where
...
is your personal access token.
Now the app uses your personal token for API access.
Note that env.json
is in .gitignore
so there should be no risk of mistakenly committing the file to the repository.
If you want to debug app startup you may want to set the environment variable WAIT_FOR_DEBUGGER
; there are example VS Code launch configurations available in launch.json
Run npm test
to run the test suite.
The project uses both ESLint and Prettier (as an ESLint plugin) for code formatting and linting. If you are making a PR, ensure to run this before requesting a review.
Run npm run lint
to run ESLint.
- Added app Web API to enable other apps to access device data; see README in source code on GitHub for details
- Updated
cross-spawn
dependency - Internal instrumentation change
- Imported/exported power accumulated capabilities
- Updated dependencies
- Reintroduce changes from 1.9.0
- Reduce resource utilization
- Improve trigger reliability
- Rollback nonfunctional changes
- Revert caching
- Performance improvements
- Updated dependencies
- Added caching of yesterday's prices
- Added a new condition card: current price is one of the [x] lowest prices between [y] and [z]
- Added new icons
- Added source link to manifest
- Small API refactoring
- Updated dependencies
- Updated dependencies
- Updated required Homey version
- Added fallback price currency EUR and areas BE, DE-LU, FI and NL
- Prices no longer have internally truncated decimals when updated, but are still shown with two decimals
- Updated dependencies
- Properly clean up websockets on Homey Bridge
- Improved real time device handling during startup and when device is removed from user's account
- Fixed an error during test version package build
- Improved websocket subscription handling
- Retrieve websocket subscription URL dynamically
- Improved error handling
- Added global tokens for lowest and highest price today
- Fixed timezone issue with price on Homey Bridge
- Updated dependencies
- Automatically disable pulse/watty when paired home not present anymore
- Instrumentation cleanup
- Support for web socket sub protocol graphql-transport-ws
- Fixed timezone issue fetching fallback Nord Pool price on Homey Bridge
- Fixed device pairing not always working
- Fixed highest/lowest price cards not always working as intended
- Improved reliability of triggers/updates
- Improved reliability of fetching prices
- Reverted to using 5 price levels
- Fixed price sometimes failing to update
- Show price device indicator with 2 decimals.
- Safer handling of current updates and triggers
- Breaking change: Outdoor temperature capability for Home has been removed. Please use a separate weather app if you need temperature actions for your flows (there are plenty). Any flows that were using this need to be set up anew.
- Support for Homey Bridge
- Add trigger and condition for top/bottom X hours today
- Using updated price information from the Tibber API
- Fix parsing high prices
- Bug fix for price fetch scheduling
- Update readme to include price level trigger
- Add price level capability automatically
- Change price level to an enumeration
- Deactivate device if home can't be found anymore. Add price level indicator. Fix current triggers for L2 and L3.
- Fix push notification flow
- Fix crash related to Pulse/Watty trigger registration
- Update readme
- Set description and support URL
- Update readme
- New triggers for currents reported by Pulse and Watty
- Bug fix for keeping track of last logged daily consumption
- Bug fix for calculating amount of hours to be fetched for consumption report
- Rewrite of Tibber API data access to reduce load at hour shift
- Use a cache for day-ahead-prices for today and tomorrow
- Home non-real time consumption report is now enabled with an advanced parameter (default to false)
- Support for displaying real time current per phase for Pulse and Watty
- Increase data fetch timeout. Fix data fetch retry logic.
- New Dark Sky API key
- Improved API request tracing
- Improved query tracing
- Increase GraphQL client timeout
- Set timeout for GraphQl queries
- Fix Tibber icon color dropped by homey cli
- Avoid error in price triggers when last price is not populated
- Logo and brand color
- Tibber logo and brand color
- Tibber logo and brand color
- New Tibber logo
- Allow production power being reported less frequently than power
- Update measure_power even when it's 0 or same as previous
- Support for retrieving production power from Pulse
- Added a note about re-adding a Pulse/Watty device in case fetching data timeouts
- Fixed fetching current temperature for home location
- Bug fix for missing flow card id
- Correct Watty images
- Support for pairing Watty and bug fixes
- Support for Energy API - Pulse and Watty show up as a cumulative devices in the Homey energy section
- Fixed app crashing on API timeout (#14)
- Fixed weather forecast (#13)
- Fixed #12
- Added 4 new trigger and 4 new condition cards for price at today's lowest/highest and above/below a set average
- Added fallback code for re-initiating Pulse subscription if no data for 10 minutes
- Added condition cards for lowest/highest price among the next [x] hours
- Added cost calculation to Pulse for users without a (paying) subscription, based on Nord Pool prices. Note: Net spot prices/without any taxes, fees, etc.
- Minor fixes
- Fixed flow triggers broken in 2.0
- Registering capability value before triggering flow action (fixed issue #5)
- Added support for Pulse without a (paying) subscription (N.B. cost is not available without subscription so accumulated cost will never have any value and cost related triggers will never fire)
- Added trigger cards for lowest/highest price among the next [x] hours
- Initial public version
- Currently, the user's Tibber subscription needs to be confirmed or started to use the Tibber app.