Skip to content

Releases: qui3xote/ottoscript

v0.4 - The one about stability

11 Feb 21:43
02a1805

Choose a tag to compare

v0.4 brings a lot of 'under the hood' work to make features that existed in 0.3 more reliable, as well as more predictable.

User facing changes:

  • SWITCH statement replaces the old 'CASE'. The new SWITCH is cleaner to write, with less 'END' statements.
  • Access attributes on entities, dictionaries (and variables containing those things) by using :attrname on the end.
  • Entities now have some special OttoScript attributes: name & domain, so that you can check what entity is held by a variable.
  • Trigger variables are now available in every automation, by default as @trigger. You can switch that name for something else if you like.
  • Much improved debugging output to the logs.

What's Changed

Full Changelog: v0.3...v0.4

v0.3 - Areas, Trigger Variables, Time Triggers and Automation Controls

02 Feb 14:10
9c4f465

Choose a tag to compare

A big step forward for OttoScript:

  • Name your automations and choose a mode (single vs restart)
  • Time triggers (WHEN 07:00 on mon, tue, 30 MINUTES AFTER SUNRISE)
  • @trigger a special variable containing information about what triggered this execution
  • Areas now supported
  • AND area shortcuts! Finally, group your areas into larger areas! And group your area groups into even larger areas!
  • Global Vars - variables assigned outside an automation are now available read-only within your automations (same file only)

What's Changed

Full Changelog: v0.2...v0.3

Fancy Logic, Variables and call any HA service!

12 Jan 21:43
df4d864

Choose a tag to compare

v0.2 brings OttoScript from proof of concept to a very usable language:

New Features:

  • Variable support! Variables can be assigned (@brightness = 50%) and used within the same automation (DIM light.office to @brightness)
  • CASE Statement - works just like 'Choose' in Home assistant.
  • IF/THEN/ELSE Support!
  • Nested logic - you can now embed IF/THEN/ELSE inside another conditional statement (see readme)
  • CALL command - call any HomeAssistant service on any entity and pass any number of arguments (see readme)
  • Expanded readme with more examples and list of supported commands

Language/Breaking Changes

  • Conditional statements now must be closed off with the END keyword
  • Dictionaries - you can pass dictionaries to service calls (brightness_pct=50, color='XXXX')
  • THEN keyword is now optional (may be removed entirely in future release)

Developer Changes

  • Lots of code linting for readability
  • Significant module reorganization for clarity
  • Conditionals now refactored to control their own evaluation and command execution
  • Base class moved from vocab to OttoBase.

What's Changed

Full Changelog: 0.1...0.2

OttoScript Proof of Concept

05 Jan 15:02
2e0ffd3

Choose a tag to compare

The 0.1 release brings a fully working( I think!) proof-of-concept DSL to HomeAssistant. Working features include:

  1. State-based triggers, including specifying old and new states
  2. Working IF statements, with full support for AND/OR/NOT chaining of comparisons, and support standard = > < != etc.
  3. Ability to get the current state of entities and their attributes (currently limited to one attribute at a time)
  4. A working suite of simple commands (TURN ON,TURN OFF, WAIT, TOGGLE, LOCK, UNLOCK, and DIM)
  5. Support for Interpreter classes that can communicate Otto expressions to HomeAssistant or other automation systems.
  6. Specify time values in timestamp (00:00:00) or relative 45 MINUTES formats.

Known Issues:
Variable assignments and references are grammatically supported but lack scaffolding to actually work in practice.