IDE for IoT & friends
npm install -g control-freak
npm install control-freak
git clone https://github.com/xblox/control-freak.git
No matter its installed locally or globally, control-freak will create a user workspace at /home/user/.control-freak.
Localally / Git
npm run start
To specifify your user directory :
control-freak --user="antother path"
Now open the url provided in the console, ie:
Example user workspace
There is a example workspace:
How does that work ?
First you connect your device, then you build "commands" for your device's functionality and as last you drag those commands on GUI elements like buttons.
As last step, you export the whole thing The IDE deploys your scripts to the OSX, Windows, Linux, Raspberry-PI, ARM-6+ or to your preferred web server.
See here for a more illustrative information here.
Notice, you don't need to dig deep in this software. Since it supports SSH you can build some automation or interfaces in minutes by calling just certain scripts.
So what is it good for?
Its designed for rapid prototyping and authoring web-interfaces for your connected devices & services.
See more features here.
Can I freely edit my HTML application? Yes, its based on open standard and sources.
Can I add or use my own Node-JS code to build connectivity? Yes!
Can I use my own source code editors? Yes! All file changes will properly update the IDE.
Pre-Compiled IDE & Server
Here links to all-in-one bundles. It includes the server (MongoDB, PHP, NodeJS) and the desktop application (custom "Chromium app", except the web server version).
Chat with us or send us an email here.
Hosted version here
Video - Tutorials
Basic and detail steps
iOT / MQTT with "Control - Freak"
Wiring to thethings.io
Visual - Editor Basics
Keyboard & Mouse
Please post issues here
Change - Log
21.10.2016 - 30.04.2017
- Removed PHP, Nginx & Mongo dependencies
- Fixed: Driver view - instance now refreshed after device reconnected.
- Improved: Performance by removing redundant network messages
- Improved: App-Performance by caching internal queries in stores
- Improved: IDE boot performance by creating driver instances half only
- Fixed: Exporter update to latest foundation code
- Fixed: Lots of VE bugs
- Fixed: XBLOX destroy
- Added: VE: pseudo script tag
- Improved: VLC Driver: Diagnose command, sound card selection
- Improved: VE: outline tree navigation, outline will restore state now after editor changes
- Improved: VLC Driver: accepts now specific selection. Accepts video files
- Added: XBLOX: New Block: File/Read JSON
Fixed: Exporter: Loaded wrong default app-module
Fixed: Exporter: Device-Server wrong hashing, so client - devices were not the same as on the server
Fixed: Exporter: crashed here and there during export
Fixed: white spaces in paths
Fixed: Exporter: system scope wasn't loaded
Fixed: Web-Server-Release: IDE didn't load for certain user languages
Improved: Device-Server has now additional arguments: --mongo=false/true/path | --mqtt=false/true (to support non MQTT/Mongo-Setups)
Improved: Device-Server now proceeds booting when MongoDB server is offline
Improved: User & System scope has now its own XBlox space, useful to have system/user variable being used in any other scope.
Fixed: Url issues with web-dist on ARM devices
## 29.09.2016 - 2
Fixed: Url issues with web-dist on ARM devices
- Changed: Device/Driver tree view sorted by name per default
- Fixed/Improved: IDE CSS cleanup
- Fixed: VE output didn't work well on IE-Edge
- Added: Support for FF
- Added: Support for MS-Edge
28.09.2016 - 2
- Fixed: VE: Memory leaks in davinci/ve/States
- Fixed: Redundant variable updates
- Fixed: VLC driver updated "Current Index" wrong
- Fixed: Regression bug crashed device server
- Fixed: Memory leaks when marking blocks
- Improved: File-IO in App mode uses now direct FS API instead of network requests
- Improved: Paste device asks now for new title
- Added: Paste driver implemented
- Improved: VE: New Action Widget/Show in outline
- Fixed: VLC driver
- Improved: Device server restarts automatically
- Fixed: Commands stop/pause/play
- Improved: VE : Driver - Variable - Changed event fired when scene is loaded
- VLC driver added
- Folder - Picker added
- Improved: XBlox : Set Variable block
- Added: XBlox : Stop/Pause Command block
- Added: Platform : linux_32
- Improved: node js server directories
- Improved: Documentation: new page for device server
- Fixed: XBlox : clipboard
- Improved: XBlox now accepts clipboard buffers from global
- Improved: Custom drivers can now populate GUI in IDE
- Fixed: Device tree view: variable/command duplicates
- Improved: VE: CSSState now accepts CSS class names
- Fixed: Device Server: removed file change debug messages
- Fixed: VE: StyleState/CSSState now accepts integers as style names
- Improved: added action "View/Show/Highlight" in block grids.
- Improved: added extra space in block grid, fixes #68
- Improved: added toggle for enable/disable device
- Improved: added new command field "Special/Type"
- Improved: XBlox: Set Variable: applies now arguments from prev. results
- Improved: VE: new action Widget/Focus: scrolls to widget if out of view
- Fixed: many device server inconsistencies on Windows, caused reconnecting the same server or client
- Improved: XBlox - Set Variable has now flags to preserve network updates
- Improved: Performance : removed effects in dark, gray, and white but not blue theme.
- Fixed: XBlox: some crashes
- Fixed: XBlox: Step/Back was not working anymore
- Changed: XBlox: merged "Wait for Response" into flag in Command block
- Added: System Driver/Device "Audio-Player"
- Updated: to Electron@1.3.5
- Fixed: Delimiter wasn't working in console for Udp
- Fixed: VE : Slider selection & move
- Fixed: Status bar messages when sending commands
- Fixed: Error messages in dev-tools for new drivers created
- Fixed: Removed "abort re-connect" when manually stopping user
- Fixed: Device status icon not updated right
- Improved: Device connect actions have now keyboard shortcuts
- Improved: Device server disconnection will now re-store all prev. connected devices
- Improved: Introduced 2 new driver methods: destroy & onLostServer. These methods are auto-chained
- Improved: Introduced auto-chained destroy method for protocols (server side)
- Improved: General performance in apps
- Improved: "Abort Reconnect" action in "device disconnected"
- Improved: response variable "value" has new "getString" method
- Improved: having "Commands" in response blocks will receive the "value" as argument. Needed for server mode.
- Improved: setVariable method for drivers has 3 new arguments: save, publish & highlight
- Fixed: Device server didn't recognize same devices correctly, causing new connections
- Improved: General flag "Server" in devices. This is implemented for TCP only. It does what it says and creates a TCP socket server.
- Added: "Driver - View" actions : "View/Layout/Save Layout" & "View/Layout/Restore Layout"
- Improved: General tabs have now red indicators when the content changed, til content is saved.
- Fixed: VE: some crashes when right click on body element
04.09.2016 - 1
- Fixed: user directories with white spaces on windows
- Fixed: update2.bat now pulls lfs explicit on windows
- Fixed: VE: preview was missing custom user directory in RPC url
- Fixed: VE: preview was not loading Font-Awesome
- Fixed: VE: scene reloads too often
- Fixed: VE: crash in surround action
03.09.2016 - 1
- Added: VE: added View/Float && View/Dock action = moves all sub panels into floating pane
- Fixed: VE: various bugs when resizing panels
- Fixed: VE: stage's body size style attributes ignored (couldn't scroll full size)
02.09.2016 - 2
- Changed: VE: removed view split actions
02.09.2016 - 1
- Fixed: VE: background image urls in preview
- Fixed: VE: incorrect CSS file loaded in preview
- Fixed: VE: user directory not taken into account in preview
01.09.2016 - 2
- Fixed: File picker now starting with source mount
- Changed: Mark hex off by default
- Fixed: "Global Console" text formatting
- Fixed: "Driver Console" text formatting
01.09.2016 - 1
- Improved: Menus have now all a separators
- Improved: Context menus action separators
- Improved: Block actions grouping
- Fixed: Multi-delimiter
- Fixed: "Emit value" in responses was not working
- Fixed: VE : Scene's CSS resources loaded wrong
- Fixed: VE : Scene's JS resources loaded wrong
- Improved: VE : native events will forward its value to the block group
- Fixed: VE : Set-Style block in final app didn't collect objects correctly in "By Id mode"
- Improved: VE : Set-Style block now accepts variables in style string
- Added: XBLOX : Generic "Switch" block. This block will be feeded with "arguments".
- Changed: XBLOX : "Variable Switch" and "Switch" no longer creates default blocks.
- Implemented: Window->Open Folder action to open new user directory (will relaunch)
- Updated: "Electron" to 1.3.3
- Fixed: regression bugs in Driver - View
- Fixed: Drivers : Hex - Display
- Fixed: VE : various things
- Added: Devices : clipboard actions
- Added: Devices : source edit action
- Fixed: Duplicate popups
- Fixed: Driver Hot - Reloading
- Fixed: VE : "Preview in Browser" on Windows fixed
- Fixed: VE : ComboBox
- Added: VE : Select
- Added: VE : Accordion, TabBar, ViewStack, Panel added
- Fixed: VE: lots of small things
- Added: Drivers: MPD raw driver
- Improved: VE : outline view navigation and rendering, context menu added
- Improved: VE : outline view context menu
- Fixed: VE: id generation
- Fixed: VE: visibility toggle in outline
- Improved: File picker uses now standard panel
- Changed: commands are send now as byte array streams. This is tested for TCP, UDP and serial.
IE: checking $80 is in the byte array : return [value].getBytes().indexOf(128) !==-1; //getBytes() returns an integer array with the decimal values of the string.
IE: checking $80 is in the hex string : return [value].hexString().indexOf('80') !==-1; //hexString returns a string of hex values of the byte array "80 ..."
- Fixed: Device's "Driver Options" flag "Show Debug Messages" will spit log messages on the device server console for all protocols.
- Fixed: Blocks with "Send on Startup" didn't trigger anymore: Re-Save driver.
- Removed: various debug messages in chrome console
- Fixed: "Johnny-Five library"
- Improved: re-connect to device server and its notifications
- Changed: coloring for sent/receiving device messages in global console
- Fixed: VE->File/Preview In Browser : Scene CSS was not loaded correctly and crashed the whole app
- Improved: delimiter will be applied (response construction) across multiple packages (MAX total buffer = 512 chars)
- Fixed: Dojo error message in device server
- Fixed: Exported apps didn't connect to device server on other machines
- Changed: serial protocol: default baudrate set to 9600s
- Updated: Documentation regarding serial protocol defaults
- Fixed: a number of issues for the device server
- Added: preview version of the "app" exporter
- Breaking: due to the changes for the app exporter, any scene file must be updated:
- Fixed: Add block actions in toolbars
- Changed: Command block: auto send field removed due to redundant field "interval"
- Changed: Driver console: split/hex
Closed & fixed issues:
- New Command #22
- Call Command #21
- Context menu in basic commands allows addition of blocks #20
- Copy/Cut/Paste in Response window is erratically pasting in variable window as well #17
- Paste icon not active after copy or cut #16
- Save In General Properties on expression #15
- Variable default & persistent values #14
- Changing variable name not updating in expressions #13
- Response window expression disappearing #12
- Toolbar/Header settings #11
- Variable Add not updating variable menu #10
- Dialog Box Save #9
- In line editor for Set variable #8
- variables & expressions #5
- Expression files text #4
- Fixed: XBLOX - Set Variable : memory leaks, response variable "value" not shown, inline edit added for value
- Fixed: Driver - View: bottom grids actions not shown in quick toolbar
- Fixed: internal: grid click event duplicates caused un-necessary overhead
- Changed: XBLOX - If-Block has now else/else - if (context menu)
- Changed: Documentation menu entry points now to ./docs
- Fixes for issues #1, #2, #3, #4, #5
- Fixed - XBLOX: Set - Variable didn't update new variable properly
- Fixed - XBLOX: Run Script didn't replace variables
- Changed: The device server path is now at server/nodejs instead of Code/utils/app/xide
- Changed: All files moved to the repo's root level instead of having them in "Control-Freak"
- Lots & lots of fixes for Visual Editor ("VE")
- Added: "Set-Style" block
- Added: "flags" for commands blocks
- Fixed: driver settings (input was not possible)
- Fixed: some CSS for the IDE
- Changed: Js libraries now minified
- Breaking changes VE: HTML - Base - Url points now to the surrounding folder instead of the workspace url
- Updated: Electron to version 1.1.2
- Fixed: Device server did create block scopes regardless of the "Runs on server" flag being off