IoTiX is a block- and form-based visual programming language and editor currently being developed by Petr John and Jiří Hynek at BUT FIT, primarily aimed at automating smart devices on mobile phones.
The first prototype was created through a collaboration between BUT FIT and Logimic as part of the project Services for Water Management and Monitoring Systems in Retention Basins.
More information is available on the Pocketix GitHub Organization.
IoTiX specifically refers to the current ecosystem of editors and interpreter built around the first version of the Pocketix scripting language.
The IoTiX Editor, available in React and Angular (pocketix-react and pocketixng respecively) versions, provides mobile interfaces for designing automation flows. These editors are ideal for non-programmers. Key features include block and form-based editing, configurable conditions and actions, device integration and workflow logic, and compatibility with the IoTiX scripting language.
The visual editor is composed of several integrated components that collectively support both graphical and textual programming. At its core, the Program module manages synchronization between the text and visual editors while maintaining an undo history. The Text Editor enables direct user input and ensures real-time updates to the graphical view, whereas the Visual Editor facilitates intuitive visual programming through recursively nested blocks, commands, and expressions. To enhance adaptability, the system supports Dynamic Language Modification, allowing runtime changes to accommodate diverse device models. Finally, Input Validation ensures correctness through syntactic checks in the text editor and semantic validation in the graphical interface.
The IoTiX Interpreter, is built around two core interfaces, IReferenceManager and ICommander, which abstract system-specific details and enable integration with diverse environments, including those with custom digital twins or non-JavaScript runtimes. IReferenceManager manages loading and storing of device parameters, while ICommander handles the dispatching of execution commands. Program execution begins with the creation of a ProgramRunner, which parses the program into an Abstract Syntax Tree (AST) and constructs a dependency table. Each block in the program can be evaluated and visually represented, ensuring alignment between graphical and textual logic. The evaluation process involves retrieving parameters, binding values, traversing the AST, and dispatching the resulting commands through the provided interfaces.
Through this architecture, the IoTiX Interpreter provides a powerful backend for executing IoTiX scripts, enabling consistent and adaptable automation across smart environments.
All IoTiX components are open-source under the MIT License. Contributions are warmly welcomed via pull requests on GitHub.