Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

CyberFlameGO/home-assistant-js

Open more actions menu
 
 

home-assistant-js Build Status (deprecated)

JavaScript backend in NuclearJS for Home Assistant. This was used by the Home Assistant Polymer frontend till version 0.37. It has since been deprecated and is no longer under active development.

Cool stuff

In this section some of the cool stuff that I built on top of NuclearJS.

The Rest API module holds the data that is being retrieved from the server. The Rest API module is based on the NuclearJS Rest API example. This module is the foundation for the entity, event and service modules. Each of these implement their own model, based on the ImmutableJS Record object.

The more-info module powers a UI component that shows more information about an entity. The only information that is stored in the store is the ID of the current selected entity. By using composable getters it is able to automatically serve the correct information when an entity is selected or updated. Another nice use of getters can be seen in the config module which allows the dynamic creation of getters to observe if a certain component is loaded.

The stream module streams all events from the Home Assistant server using the HTML5 EventSource API. It dispatches the same actions for received events as when the data would have been loaded using REST api calls.

The voice module allows the user to send voice commands to Home Assistant. The voice is being translated to text using the HTML5 SpeechRecognition API. (Only available in Chrome)

The preferences module tracks certain parts of the global app state and stores them in local storage to persist them between sessions. The preferences object is queried on launch of the application after which startSync() is called to keep the local storage synced with the global app state.

The navigation module keeps track of which part of the UI is currently visible. It will sync this state to the URL using the HTML5 History API. This allows the users to bookmark a current page in the application and enable the use of browser back and forward buttons. (Not available in Demo mode)

Home Assistant JS can be compiled with the DEMO flag enabled. This will override the callApi() method to return demo data. The Webpack define plugin is used to convert an environment variable to be available in JS. UglifyJS is used to strip out the demo parts when the demo mode is disabled so it will never ship to production.

About

🐝 JavaScript implementation of the Home Assistant API using NuclearJS

Resources

License

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Languages

  • JavaScript 100.0%
Morty Proxy This is a proxified and sanitized view of the page, visit original site.