Skip to content

Features Roadmap

coldfire84 edited this page Jan 25, 2020 · 99 revisions

Feature development list / progress as below.


Google Home Integration now complete, testing underway - if you want access contact me via node-red@cb-net.co.uk


Release Plan

Release 0.3

  • Initial beta test release, no state monitoring

Release 0.4

  • [State] Show state in Alexa App
  • [User] Show Device Count on My Device page
  • [Device Admin] Add total device count
  • [User Admin] Add Total User Count
  • [User Admin] Add User Device Count
  • [Analytics] Re-enable Google Analytics/ Integrate into new APIs, look to cover
    • Page view/ web site visits/ user journey flow
    • Event logging for
      • Command API
      • Discovery API
      • Get State API
    • Total API calls
    • Per-User Total API calls
    • Per-Device API calls

Release 0.5

  • [Capability] Add support for Alexa.PercentageController
  • [Capability] Break-out state data for colorBrightness and brightness
  • [Capability] Add support for Alexa.Speaker
  • [PlaybackController] Add support for FastForward, Next, Previous, Rewind, StartOver
  • [Capability] Add support for Alexa.TemperatureSensor
  • [Device] Create "dummy" state data on device creation, will make usability much easier
  • [Alexa Skill] Availability in en-US, en-CA, en-IN, en-AU markets
  • [Alexa Skill Marketplace] translations for:
    • Spanish es-ES
    • German de-DE
    • Japanese jp-JP
    • Italian it-IT
  • [Lambda] Define function in East US 1 region
  • [Lambda] Define function in Asia Pacific Tokyo region
  • [API] Addition of API Rate Limiter
    • getstate Web API limiter
    • Lambda RATE_LIMIT_EXCEEDED event handler
  • [Capability] Add support for Alexa.ChannelController
    • Lambda updates
    • Node-RED Contrib updates
    • Web Service updates
  • [Branding] Rebrand website to "Node-RED Alexa Smart Home" in-line with node-red-contrib branding
  • [Login] Display alert/ banner if account not linked with Amazon Account
  • [User "My Account" Page] Create new user page to edit/ update details, change password and delete user account
  • [Superuser] Change post-login behaviour to go to management interface, disable My Devices/ My Account
  • [Capability]"<Device Name> doesn't support that" feedback now provided on unsupported command/ directive

Release 0.6

  • [Web API] Deprecate rotating-file-system logs in favour of Winston logging to console / Docker logs (container-based architecture favours this)
  • [Terms of Service] TOS updated/ links configured on login and register pages, modal code added for ease of consumption. Alexa Skill updated in each market with TOS link
  • [Privacy Policy] Links configured on login and register pages, modal code added for ease of consumption
  • [API] Define throttling on a per-router basis
    • getstate (in-place as of release 0.5)
    • login
    • newuser
    • devices
    • catch-all
  • [Web UI] Add tooltips to each capability to help with user selection

Release 0.7

  • [Branding] Website branding changed to Node-RED Smart Home
  • [Branding] Logo created, updated across Alexa Skill and Google Home Skill
  • [Branding] Change to red.cb-net.co.uk (inc SSL/ NGINX conf etc - leaving existing hostnames for Web API and MQTT in-play)
  • [Google Assistant] Enable use of both Alexa and Google Home services - high-level plan:
    • MongoDB Schema Changes:
      • Google Home device data staging (available via /admin/update-schema):
        • Create new "attributes" element (mixed):
          • Create new attributes.colorModel element (string)
          • Create new element attributes.colorTemperatureRange : {temperatureMinK (number), temperatureMaxK (number)}
          • Move existing validRange values for colorTemperature
          • Create new element attributes.temperatureRange : {temperatureMin (number), temperatureMax (number)}
          • Create new element attributes.temperatureScale (string)
          • Create new element attributes.thermostatModes (array of strings)
          • Move existing validRange values for temperature
          • Modify getstate, setstate, device creation to use new elements
          • Create new element attributes.sceneReversible(boolean)
          • Add attribute element "translation" for Google Home and Alexa
    • API Add new routers for
      • SYNC
        • Add ReplaceCapability function to translate stored capabilities for Google Home:
          • PowerController >> action.devices.traits.OnOff
          • BrightnessController >> action.devices.traits.Brightness
          • ColorController & ColorTemperatureController >> action.devices.traits.ColorSetting
          • SceneController >> action.devices.traits.Scene
          • ThermostatController >> action.devices.traits.TemperatureSetting
        • Add gHomeReplaceType function to translate stored types for Google Home
          • ACTIVITY_TRIGGER >> action.devices.types.SCENE
          • LIGHT >> action.devices.types.LIGHT
          • SMARTPLUG >> action.devices.types.OUTLET
          • SWITCH >> action.devices.types.SWITCH
          • THERMOSTAT >> action.devices.types.THERMOSTAT
      • EXEC
      • QUERY
      • DISCONNECT

Release 0.8

  • [Web API] Change service to modular architecture, based on express.router to better divide up code. Single monolithic index.js is too difficult to maintain
  • [Google Home] add 'roomHint' (string) attribute/ text box on device creation to populate
  • [Command API] Moved response construction to NodeJS instance as opposed to Lambda
  • [Google Home] Add support for Async State Updates
  • [Alexa] Add support for Async state updates/ Alexa Authorization directive
  • [Service Management] maintenance functions for:
    • AccessToken cleanup (handled via TTL index)
    • MongoDB Sessions (not needed)
  • [Logging] Introduced Cloudwatch support for logs
  • [Google Home] add support for mediaState trait (Alexa equiv. PlaybackController) / TV device type (experimental)
  • [Google Home] add support for volume trait (Alexa equiv. Speaker)/ Speaker device type (experimental)
  • [Google Home] add 2FA (PIN) check to Smart Lock device type (optional)

Release 0.9 [Development Branch]

  • [Node-RED Contrib] Move Request Library to HTTPS due to ehcd curve errors
  • [Capability] Add Alexa Contact Sensor capability
  • [User] Add My Account option to remove OAuth tokens
  • [API] Add State Update validation to API (was already built-in to Node-RED contrib, this is a fail-safe)
  • [Node-RED Contrib] Added handler/ GUI-based warnings for unsupported commands
  • [Node-RED Contrib] Add 'message/' topic / alerting capability in Node-RED interface for bad OOB state updates (those hosting their own must run the commands outlined here. (Work in Progress)
  • [Alexa] Add support for ContactSensor
  • [Alexa] Add support for MotionSensor
  • [State API] Enable Change Reports/ status changes to GHome and Alexa for ContactSensor and MotionSensor

Release 0.10

  • [Google Home] Fix multi-command/ partial success responses
  • [Google Home] add Traits
    • Open/Close
    • FanSpeed
  • [Google Home] add device types
    • Fan
    • Internal/ External Blinds
  • [Alexa] add device types
    • Fan
    • Internal/ External Blinds
  • [Alexa] add capability:
    • RangeController, customised for Blinds and general device types
  • [Website] Translations for supported skill languages
  • [Node-RED Nodes] multiple fixes:
    • Resolve state node being "first" to register causing MQTT connection failure
    • Removed the need/ requirement for payload.acknowledged to be set in state updates

Release 0.11 (current development branch)

  • Re-structure service in preparation for further async/ event driven execution
    • Add .env file to reduce command complexity
    • Add .ghomejwt file to simplify env definitions
    • Introduce new async function to check for JWT/ kick off Home Graph API OAuth
  • Streamlined passport authentication/ strategies code, consolidating into app.js (for now) and removing duplicate code from alexa, ghome, auth and default routes
  • New MongoDB Indexes to improve Admin UI performance (aggregate query times significantly improved, changed table presentation to be on document load).
  • Add email verification flow on account creation
  • Add limitAttempts to passport-local-mongoose config to track lastLogin information
  • Force all new user accounts to be lower case, lots of same-named accounts (for same email address!) with different case, clearly this was causing confusion!
  • Add Dark Mode theme to UI via https://github.com/sandoche/Darkmode.js
  • Change changePassword to use landing page, preventing token use by email scanning services that check URLs
  • Add isVerified to Admin/ Users page
  • Add functionality to enable/ disable users via /admin/users interface
  • Bump all depends to vCurrent (at time of writing), including EJS which required changes on file includes within templates
  • Add TOC / nav pane on /docs using https://github.com/afeld/bootstrap-toc
  • Add sitemap using: https://www.npmjs.com/package/sitemap#example-of-using-sitemapjs-with-express
  • Add robots.txt via https://www.npmjs.com/package/express-robots-txt
  • Rewrite Alexa and Google functions to Async/ Await, consolidate functions to reduce code duplicate/ overlap
  • Add support for branding/ brand name via .env file
  • Add state reporting for fans, blinds (internal and external)
  • Add support for mosquitto-auth-go plugin, replacing the now deprecated mosquitto-auth-plug
  • Add require 2FA PIN on Smart Lock device for Google Home-enabled users when creating / editing a Smart Lock
  • Add check for duplicate device name on create new device
  • Ongoing

Backlog

  • [Response/ State Node] Review possibility to merge
    • [State] ? move to conf node and offer checkbox/ auto-select if device.state.resportState == true
  • [Device Admin] Edit
  • [Device Admin] Disable Device
  • [Device Admin] Reset Device State Element
  • [User Admin] Reset Password
  • [Node-RED Nodes] Translations for supported skill languages
  • Alexa device types:
    • Camera - Alexa Show stream On TV or Echo Show
    • Door - Lock / Open + Confirm and Icon to display Locked/closed
    • Doorbell to pass notifications
    • Garage - Alexa is the Garage door locked / Alexa open / close
    • Network HW - Alexa to confirm status UP / Down etc