Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mririgoyen/homeassistant_node
Home Assistant Node.js library
https://github.com/mririgoyen/homeassistant_node
home-assistant homeassistant
Last synced: about 1 month ago
JSON representation
Home Assistant Node.js library
- Host: GitHub
- URL: https://github.com/mririgoyen/homeassistant_node
- Owner: mririgoyen
- License: mit
- Created: 2017-05-11T01:33:27.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2022-12-09T08:15:40.000Z (almost 2 years ago)
- Last Synced: 2024-04-14T21:54:09.658Z (7 months ago)
- Topics: home-assistant, homeassistant
- Language: JavaScript
- Homepage:
- Size: 201 KB
- Stars: 48
- Watchers: 5
- Forks: 5
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Funding: .github/FUNDING.yml
- License: LICENSE
Awesome Lists containing this project
README
node-homeassistant
==================[Home Assistant](https://home-assistant.io/) API Node.js library.
It wraps the [Home Assistant RESTful API](https://home-assistant.io/developers/rest_api/) in easy-to-use, Promise-based functions.[![NPM Badge](https://nodei.co/npm/homeassistant.png?downloads=true&stars=true)](https://npmjs.org/package/homeassistant)
Install
=======
```bash
npm install homeassistant
```Usage
=====
```javascript
const HomeAssistant = require('homeassistant');
const hass = new HomeAssistant({
// Your Home Assistant host
// Optional, defaults to http://locahost
host: 'http://example.com',// Your Home Assistant port number
// Optional, defaults to 8123
port: 8123,// Your long lived access token generated on your profile page.
// Optional
token: '810a8c43-f22e-4ec4-b34e-c1e4741d4802',// Your Home Assistant Legacy API password
// Optional
// password: 'api_password',// Ignores SSL certificate errors, use with caution
// Optional, defaults to false
ignoreCert: false
});hass.services.call('toggle', 'switch', 'lights_3_0')
.then(res => console.log('Toggled lights', res))
.catch(err => console.error(err));
```Interface
=========
All functions return Promises.Configuration
-------------
```javascript
// Returns if the API is up and running
hass.status();// Returns the current configuration
hass.config();// Returns basic information about the Home Assistant instance
hass.discoveryInfo();// Returns all data needed to bootstrap Home Assistant
hass.bootstrap();
```Camera
------
```javascript
// Returns the image from the specified camera entity
hass.camera.image('entityId');
```Events
------
```javascript
// Returns an array of event objects
hass.events.list();// Fires an event
// Requires the event name and an event data JSON object
hass.events.fire('call_service', {
domain: 'switch',
service: 'toggle',
service_data: {
entity_id: 'switch.lights_3_0'
}
});
```History
-------
```javascript
// Returns an array of state changes in the past
// Requires a datetime in YYYY-MM-DDTHH:MM:SSZ format
// An optional entityId can be provided to filter the results
hass.history.state('2017-05-01T12:00:00-04:00', 'sensor.temperature');
```Logs
----
```javascript
// Returns all errors logged during the current session of Home Assistant
hass.logs.errors();
```Services
--------
```javascript
// Returns an array of all service objects
hass.services.list();// Calls a service
// Requires the service, the domain, and the entity
// Alternatively, you can provide a service data JSON object as the third parameter
hass.services.call('toggle', 'switch', 'lights_3_0');
hass.services.call('toggle', 'switch', {
entity_id: 'switch.lights_3_0'
});
```States
------
```javascript
// Returns an array of all state objects
hass.states.list();// Returns a state object for a specified entity
// Requires the domain and entity
hass.states.get('sensor', 'temperature');// Updates or creates the current state of an entity
// Requires the domain, entity, and a JSON object with a `state` attribute
hass.states.update('sensor', 'temperature', {
state: 80,
attributes: {
unit_of_measurement: '°F'
}
});
```Templates
---------
```javascript
// Renders a Home Assistant template: https://home-assistant.io/topics/templating/
hass.templates.render('Mike is at {{ states("device_tracker.mike") }}.');
```License
-------
MIT