Yombo Version 0.23.0 (02 November 2018)

From Yombo
Jump to: navigation, search
Release Notes
Version 0.23.0
Release date 02 November 2018

Gateway communciations revamp, new intents library, and stability fixes.


New intents library to handle voice processing, focused on gateway usage stabilization, reporting, and usability.

The intents library (still work in progress) will replace the old voice commands library to handle all processed speech to text input. The goal is to interface with alexa, google home, and other voice to text processes to generate actions, such as controlling devices.

New features

  • (40aec9c) - Can now delete permissions from roles.
  • (baf07f0) - Add crontabs to list of debug items.
  • (6729fbf) - Persistently be able to write to files using FileWriter utility.
  • (bb42c27) - Display number of items for each tab for devices.
  • (c65e029) - Locations listing now has tabs with location counts. Easier to sort through.
  • (0a8d3e6) - Add tab counters to scenes.
  • (b63cbb2) - When displaying events in the web interface, or through the API, now only search through the database columns as needed.
  • (4abb072), (935d9e7), (ccd0fcf), (cbe5f81) - New Intents library will serve as the basis for voice commands.
  • (8d0ea09) - Add check_valid to authkeys to match websessions function.
  • (220f049) - Add properties to the location library to get the gateway's logical location: location_id, location, area_id, and area.
  • (77a3f57) - Add ability to set default location for house/shed, and area: bedroom, den, etc.
  • (c57688f) - Add ability to save new location information in basic configs.
  • (ddad227) - Add ability to call save events externally, but not allow multiple iterations to run at same time.
  • (4749455), (ad62e09) - Add additional event types.
  • (7dbc642) - Add call to setup utils reference to _Yombo. This allows the utilities to access any Yombo library with ease.
  • (626234a) - When displaying states, add counts to the tabs.
  • (6acd602) - Now track how long TLS cert generation takes and store in events.
  • (def1492), (e190c9a) - SSLCert enhancements. Added status and status_msg to track what is going on between gateway and backend server. Now tracks if receiving the correct signed certificate using a hash of the CSR. This is a good start, and not the best way - it should be using the fingerprint of the cert. For another day...
  • (38e6bf2), (8efaa91) - Now able to view events from the from system menu.
  • (03000b7) - Modules can now extend event types with _event_types_ hook.
  • (91a5708) - Remove references to voice commands, use intents instead.

Breaking Changes

  • (b08c1e2) - Huge changes that needed to happen in bulk.
    1. Standardize the authentication system across users, websessions, and anything that can act like an auth.
    2. New mixin system started with users. Mixins just add basic functionality and helps the system be more flexible.
  • (a8927c3) - The file reader required it to be started, now it starts automatically, requiring one less call.
  • (ba423cd) - Locations will now add default 'none' locations for areas and location. Also, can now specify the location type to make lookup calls easier.
  • (5fe34c4) - The LocalDB library was getting large and unorganized. This commit splits it up some.
  • (6adb446) - Remove redundant feature_support_color.
  • (f4d0d68) - Change exception tossed to keyerror when looking up scene id.
  • (32a05a9) - Standardize hashids encode/decode arguments.
  • (91a5708) - Remove references to voice commands, use intents instead.

Non Breaking Changes

  • (f2b4fbd) - Event data attributes are now stored in individual columns within the database.
  • (220b2f4) - Remove extra javascript code from index page.
  • (960641d) - Stop logging sensitive information in the logs. Such as auth key ids and email addresses.
  • (643acf0) - Grouped database cleanups into a single function. This frees libraries from having to maintain anything and reduce chance of multiple database scrubs to occur at the same time.
  • (bcfe09e) - Safely store authentication checks into events.
  • (7beda6f) - Add some instrumentation to the localdb.
  • (b340bb3) - Within the web interface, move debug features out from under devtools. Originally, devtools was for everything, but it's now for interacting with Yombo API.
  • (de052c2) - Add webinterface reference to the request.
  • (a8ed901) - Webinterface tables can now show the headers at 45 degrees. Updated yombo.css file to include 'rotated' classes for table headers.
  • (45724d5) - Device instances are now responsible for handling YomboAPI calls for updates and SQLite database updates. Also: New feature: magicattributesmixin - Add references to libraries to any provided object
  • (b7df6dc) - Added ability to determine if a gateway is real or logical (cluster/local). Adding 'is_real' property to the gateway class. Primarily used internally.
  • (a91b9f9) - Add electric usage to the home page.
  • (65fb207) - Remove unused database indexes for the events table.
  • (02570dd) - Add 'intents' to possible permission items to the users constants file.
  • (3ec3ba2) - Update search fields for devices. Also, now search includes area label and full label. New feature: Added wait_for_command. Simply pass in a request_id and it'll wait until the command is complete, unless the timeout is reached.
  • (variable name is statistics save. Fix var) - Stop using deferred's where inlinecallbacks can work just fine, and it's cleaner.
  • (06c602b) - Add location_id, location, area_id, and area to templates. Also, automatically update globals if gateway location chan


  • (4749455) - Remove unused logger from permissions mixin.
  • (2df9232) - On events page load, save events from memory to DB, so they can be looked up.
  • (82458db) - Switch to normal file read, but use a thread instead. Kept bumping into limits.
  • (73c3bae), (e94d100), (dcb81e9), (ad62e09), (5f2e9a6) - Add ability to store user defined crontabs in the database. Not fully working, but just a start.
  • (4516366), (9ae1b50) - Minor revamp to installing python modules. More robust and faster. Added delete_file() to delete a single file.
  • (bde0caf) - Add raw_content when returning process results from the requests library.
  • (a866d1a) - Add _events reference to the webinterface template globals.
  • (a6fca3b) - Fix cache defaults.
  • (a0990be) - Remvoed simplejson as it didn't provide performance benefits.
  • (4981bce) - Removed sha3, sha2 is fine for our use cases.
  • (64a9da9) - Change twistar to use f strings for debugging. Remove need for 'six' module from twistar base.
  • (cae3b8c) -
  • (cae3b8c) - Change 'location_info' to 'detected_location_info', as it's detected and not a setting.
  • (14e9edc) - Location lib now uses already collected detected location information from config lib.
  • (0de3bc8), (528c5cb), (dda2538) - Standardize on ' instead of " for variable assignments and references. Also, use f-string where feasible.
  • (d9e0d8e) - Asks yombo api for list of master gateways when setting the master gateway in the system configs.


  • (a84d0ec) - Cache library no longer requires a name. If no name is provided, it looks up the calling module and function to determine a name.
  • (f7c1361) - Fix user auth logging.
  • (770d977) - Major revamp of the user/role permission system. Everything has been standardized for item permissions across roles and users.
  • (841bb46) - Each cache now has it's own flush lock. Also, give out the actual cache. :\
  • (3757c8e) - Configuration get function wasn't properly ignoring case of the config keys.
  • (82d46f1) - Fix library loading order.
  • (660ae36) - Properly handle energy_map from incoming configs.
  • (7a1e449) - Remove 'form-control' from select input fields. This was breaking the smart select dropdowns.
  • (c31aa11) - Fix energy calculations for devices.
  • (2fdab50) - Fix multiple issues with GPG:
    1. Create gpg key with gateway id instead of with uuid.
    2. Check that the current master key is associated with this gateway id.
    3. Fully use fingerprint id's instead of short id's.
    4. If decryption doesn't work with master keys, try all keys we have a private key for.
  • (68528e8) - Statistics would occasionally try to save duplicate data. Previous data for the current time is loaded and merged with live data. Not much more memory is used, but it saves time (SQL lookup) and prevents double entries.
  • (3c86e4a) - For statistics, use a default label if none is provided.
  • (3bd7bb0) - Loader wasn't sending python requirements lines to the utility function. It's now more talkative.
  • (563c34a) - The MQTT library now check authkeys and websessions to make sure it's valid.
  • (0122191) - Fix variable name is statistics save.
  • (5a643a2) - Cleanup location display page.
  • (1cde804) - Properly display tabs and tables for device commands.
  • (c8afe55) - Show the correct breadcrumb for the device commands items.
  • (d4600a3) - Add sanity checks to the cached decorator.
  • (8b41802) - If master is none, assume we are the master and return local gateway_id when requested.
  • (2800a62) - On new gateway installs, when there is no gpg key. This fixes an exception for new gateways.
  • (6c5a8c3) - Requests lib now report json decode errors.
  • (4b53c5a) - DNS settings page doesn't display "None" for NoneValue, now just displays empty values.
  • (202e0bf) - Remove 'sensor=false' for google map api call.
  • (3d0d89f) - Setup wizard now uses detected location for initial start location instead of san francisco. Also, properly set is_master to us if none.
  • (49087c0) - SSL Certs were not properly loaded if db was removed. Now they fully load.
  • (994e458) - Fix race condition if yombo.ini file is missing at critical times during startup.
  • (af96a41) - Revamp gateway coms to be more reliable and contains more information. 3rd party items will need to decode base64 + msgpack.


  • (a73569b) - Updating various static web resources. Metismenu, datatables, bootstrap select.
  • (c7cf34c) - Update requirements file with new versions.
  • (938e09d) - Removed 'enable-optimizations' when compiling python. This was taking several hours for Raspberry Pi 3, more than a night on anything less. Bumped to python 3.6.7.

{{#set: Year=2018 | Year=2018 | Month=November | Day=02 | Version=0.23.0 | Summary=Gateway communciations revamp, new intents library, and stability fixes. }}