--- Bundled --- FTP Client JBakup MODBUS Server 1.9.268 Serial Control 7.2.61 Serial To Ethernet 6.2.70 Slaving Service 3.2.156 SNMP 3.1.667 Bundled Web Pages
--- Bundled --- FTP Client JBakup MODBUS Server 1.9.268 Serial Control 7.2.61 Serial To Ethernet 6.2.70 Slaving Service 3.2.156 UPDATED SNMP 3.1.667 Bundled Web Pages
--- Bundled --- FTP Client JBakup UPDATED MODBUS Server 1.9.268 Serial Control 7.2.61 Serial To Ethernet 6.2.70 Slaving Service 3.1.133 SNMP 3.1.667 Bundled Web Pages
--- Bundled --- FTP Client JBakup MODBUS Server 1.9.268 Serial Control 7.2.61 Serial To Ethernet 6.2.70 Slaving Service 3.1.133 SNMP 3.1.667 Bundled Web Pages
--- Bundled --- FTP Client JBakup MODBUS Server 1.9.268 UPDATED Serial Control 7.2.47 UPDATED Serial To Ethernet 6.2.70 UPDATED Slaving Service 3.1.120 UPDATED SNMP 3.1.498 UPDATED Bundled Web Pages ADDED
All-In-One 211215 December 15, 2021
This Update was pushed to support manufacturing and the supply chain issues brought on by COVID-19. Component workarounds were needed and a bump to the OS was required to support those component changes. Units built after this date will not be able to roll back to previous versions of the OS.
--- Bundled --- FTP Client JBakup ADDED MODBUS Server 1.7.236 Serial Control 7.0.31 Serial To Ethernet 6.1.53 UPDATED Slaving Service 2.0.104 SNMP 3.1.667 Tasker REMOVED [Has its own installer]
All-In-One 210304 March 4, 2021
--- Core --- JANOS 2.0 build 1.0 UPDATED DCP 3.0.1 UPDATED (moved from flash/www.zip to flash/www/config/zip)
--- Bundled --- FTP Client MODBUS Server 1.7.236 Serial Control 7.0.31 Serial To Ethernet 6.0.48 Slaving Service 2.0.104 SNMP 3.1.667 Tasker 6.0.1601 Task Manager 7.0.351
All-In-One 210202 February 2, 2021
--- Core --- JANOS 2.0 UPDATED DCP 2.4
--- Bundled --- FTP Client MODBUS Server 1.7.236 Serial Control 7.0.31 UPDATED Serial To Ethernet 6.0.48 Slaving Service 2.0.104 UPDATED SNMP 3.1.667 UPDATED Tasker 5.0.1505 ADDED Task Manager 7.0.351
All-In-One 200501 May 1, 2020
--- Core --- JANOS 1.9 UPDATED DCP 2.4
--- Bundled --- FTP Client MODBUS Server 1.7.236 Serial Control 5.0.122.1501 Serial To Ethernet 6.0.48 Slaving Service 1.5.1810.225 SNMP 2.6.532 UPDATED Task Manager 7.0.351
All-In-One 200203 February 3, 2020
--- Core --- JANOS 1.9 UPDATED DCP 2.4 UPDATED
--- Bundled --- FTP Client MODBUS Server 1.7.236 Serial Control 5.0.122.1501 Serial To Ethernet 6.0.48 Slaving Service 1.5.1810.225 SNMP 2.4.1.494 Task Manager 7.0.351
All-In-One 190618 June 18, 2019
--- Core --- JANOS 1.8 DCP 2.3
--- Bundled --- FTP Client MODBUS Server 1.7.236 Serial Control 5.0.122.1501 Serial To Ethernet 6.0.48 Slaving Service 1.5.1810.225 SNMP 2.4.1.494 Task Manager 7.0.351
--- Bundled --- FTP Client JBakup MODBUS Server 1.9.268 Serial Control 7.2.61 Serial To Ethernet 6.2.70 Slaving Service 3.2.156 UPDATED SNMP 3.1.667 Bundled Web Pages
--- Bundled --- FTP Client JBakup UPDATED MODBUS Server 1.9.268 Serial Control 7.2.61 Serial To Ethernet 6.2.70 Slaving Service 3.1.133 SNMP 3.1.667 Bundled Web Pages
--- Bundled --- FTP Client JBakup MODBUS Server 1.9.268 Serial Control 7.2.61 Serial To Ethernet 6.2.70 Slaving Service 3.1.133 SNMP 3.1.667 Bundled Web Pages
--- Bundled --- FTP Client JBakup MODBUS Server 1.9.268 UPDATED Serial Control 7.2.47 UPDATED Serial To Ethernet 6.2.70 UPDATED Slaving Service 3.1.120 UPDATED SNMP 3.1.498 UPDATED Bundled Web Pages ADDED
All-In-One 211215 December 15, 2021
This Update was pushed to support manufacturing and the supply chain issues brought on by COVID-19. Component workarounds were needed and a bump to the OS was required to support those component changes. Units built after this date will not be able to roll back to previous versions of the OS.
--- Bundled --- FTP Client JBakup ADDED MODBUS Server 1.7.236 Serial Control 7.0.31 Serial To Ethernet 6.1.53 UPDATED Slaving Service 2.0.104 SNMP 3.1.667 Tasker REMOVED [Has its own installer]
All-In-One 210304 March 4, 2021
--- Core --- JANOS 2.0 build 1.0 UPDATED DCP 3.0.1 UPDATED (moved from flash/www.zip to flash/www/config/zip)
--- Bundled --- FTP Client MODBUS Server 1.7.236 Serial Control 7.0.31 Serial To Ethernet 6.0.48 Slaving Service 2.0.104 SNMP 3.1.667 Tasker 6.0.1601 Task Manager 7.0.351
All-In-One 210202 February 2, 2021
--- Core --- JANOS 2.0 UPDATED DCP 2.4
--- Bundled --- FTP Client MODBUS Server 1.7.236 Serial Control 7.0.31 UPDATED Serial To Ethernet 6.0.48 Slaving Service 2.0.104 UPDATED SNMP 3.1.667 UPDATED Tasker 5.0.1505 ADDED Task Manager 7.0.351
All-In-One 200501 May 1, 2020
--- Core --- JANOS 1.9 UPDATED DCP 2.4
--- Bundled --- FTP Client MODBUS Server 1.7.236 Serial Control 5.0.122.1501 Serial To Ethernet 6.0.48 Slaving Service 1.5.1810.225 SNMP 2.6.532 UPDATED Task Manager 7.0.351
All-In-One 200203 February 3, 2020
--- Core --- JANOS 1.9 UPDATED DCP 2.4 UPDATED
--- Bundled --- FTP Client MODBUS Server 1.7.236 Serial Control 5.0.122.1501 Serial To Ethernet 6.0.48 Slaving Service 1.5.1810.225 SNMP 2.4.1.494 Task Manager 7.0.351
All-In-One 190618 June 18, 2019
--- Core --- JANOS 1.8 DCP 2.3
--- Bundled --- FTP Client MODBUS Server 1.7.236 Serial Control 5.0.122.1501 Serial To Ethernet 6.0.48 Slaving Service 1.5.1810.225 SNMP 2.4.1.494 Task Manager 7.0.351
Added hysteresis to garbage collection to eliminate GC storming
Fixed web server memory leak
Enhanced command line RM/DEL command to override confirmation on wildcard use
Allow multiple commands on a single command line using separators like ‘;’
Implemented command line ‘|’ piping capability
Enhanced CAT command with HEAD and TAIL usage to support piping
Implemented command line conditional execution && and || syntax
Enhanced GC -M and GC -B memory analysis to report Java class information
Applications can optionally log to external SYSLOG server
Hostname in SYSLOG report includes jrS/N Birthname
Corrected direct JMP connection not forwarding console output
Corrected direct JMP connection File Read failure
Fixed issue with Java Sockets SoTimeout exceptions
Improved inter-process messaging to avoid queue assertions
Added command line real-time network sniffer with filtering
Added Email queue management
Corrected REGEX matching issue
Eliminated memory leak with JSON decode
Fixed Web Authentication. No longer gets stuck in loop.
Expanded command line history to 200 commands
Eliminated dormant message queue issues
Fixed FTPClient class issue with retrieving data
Corrected buffer overrun by command line parameters
Eliminated null pointer issue in network race condition
Enhanced MANIFEST to use optional database
Prevent illegal IP address settings blocking network use
Corrected buffer overrun caused by security scanners
Eliminated Resource Deadlock after assertion
JANOS 2.3 Release February 2, 2023
The release fixed an issue with the Ethernet becoming "locked up". The JNIOR could become unresponsive while servicing the network on busy networks.
Build 1.0
Corrected memory issue with KILL and message loop use
Corrected garbage collection issue with static classes in the JVM
Corrected memory issue with serial port buffer resizing
Delayed Java Thread startup to insure completion of initialization
Added KILL -A feature to terminate all applications
Initial (January 25 2023)
Initialized the Working Directory for command line scripting
Increased network frame buffers to improve throughput
Increased number of available application watchdogs from 8 to 16
Added WDT_SILENT so watchdogs can be used to schedule programs and not logged as triggered
Updated PS process listings to display pending watchdogs as scheduled execution
Improved PING statistics
Eliminated assertion in loading classes using InvokeDynamic
Eliminated memory leak in JVM class caching
Corrected IO signature performance with IO changes
Corrected TAB auto-complete issue with second parameter
PHP Registry lists now sorted by name
Eliminated chance of socket deadlock that would require a hard reboot
Added check for network during boot logging to avoid reboot loop
JANOS 2.2 Release June 28, 2022
This release was issued to support manufacturing and component changes forced by supply chain issues. Because of this, an update to the OS was required to handle this change. Units made June 22nd, 2022 or later will NOT be able to roll back to earlier version of JANOS.
Corrected bug in creating multidimensional arrays
Improved DEFLATE compression performance with binary files
Corrected issue with '%' sign when logging to the syslog
Fixed dropped serial character when port is closed
We have released JANOS v1.9 which has several changes and bug fixes. Most notably with TCP packet generation. While it is not wrong to send data in multiple TCP packets, many devices incorrectly implement TCP clients and fail when this case arises. This version adjusted the release of socket data to reduce the chances that a message might be split across separate TCP packets. This had been a recent issue with some MODBUS client devices.
Added support for Reverse LLMNR allowing network scanners to label IP addresses with hostnames
Adjusted the release of socket data to reduce the chances that a message might be split across separate TCP packets
Corrected Sockets race condition that caused occasional reception delays and blocking
Fixed the incorrect signed display of large input counter values in JRMON and JMP Protocol
Adds a BEACON announcement in the event of an IP conflict
Improved NONCE management eliminating possible issues in the presence of port scanners
Eliminated chance of buffer overrun occurring in FTP transfer
Beacon REBOOT now works in all cases
Eliminated potential difficulty in obtaining network capture file
We have released JANOS v1.8 which adds the JMP Protocol. The JANOS Management Protocol (JMP) is essentially the JSON message interface utilized by JANOS Websockets. The JMP Protocol has been exposed on its own TCP/IP port. This encloses the JSON messaging in a JSON array along with the JSON Object length making reception of the messages easy. The JMP Protocol will be used by the QSC Q-SYS JNIOR component.
Implements the JANOS Management Protocol JMP
Adds "Block" command to JSON interfaces
Web Server limits the effects of extremely slow connections.
When creating a device in the Support Tool to send macros to, there is a predefined list of devices you can select from. If the device you are trying to send to isn’t listed, you can still send to it. The Doremi is one of these devices, and Cinema has preset commands implemented to send to it. This post should explain how to use these preset commands to communicate with it via Ethernet.
Note: This functionality requires that you have Cinema 6.0 or greater. Also, if you are unfamiliar with creating macro and device files, check out this post first to better understand how.
To communicate with any device that doesn’t exist in the predefined device list, you need to choose the Raw Ethernet device from that list. This is placeholder that you can use to define whatever Ethernet device you are trying to connect to. In order to use the preset command for the Doremi, all you need to do is name the device “doremidcp”, and assign the IP of the Doremi and its Port number. Unless you changed the Doremi’s default port number, it should be 11730. With this the Doremi Device file should be good to save and publish.
Next you’ll want to link the device file in the Macro tab of the Support Tool, add and name a macro to the macro view, and then add and name an action to the action view. The Doremi has hex commands which it uses to let other devices send it commands. Cinema has been updated to convert 5 of these hex commands as preset strings for the Doremi commands: Play, Pause, Eject, Shutdown, and Reboot. In order to create an action in the action view for sending one of these Doremi commands, you’ll select the Doremi Device you created as the device in the action, choose the send action, and for the data being sent you’ll enter ‘command:’ followed by the command you want to send. For example, if you want to send the Play command to the Doremi, you’ll enter ‘command:play’. After that you simply add the action to the macro and publish it to the JNIOR.
Note: As mentioned previously these preset commands were made from hex commands that the Doremi uses. There are other commands the Doremi can receive using hex, but these presets were made for the more commonly used ones.
With that, you should have a macro that sends to your Doremi via Ethernet! If you need other commands or additional assistance, reach out to our support team and we’ll help you further.
Sometimes when changing around the configuration on the JNIOR, you may be changing different registry keys to get your desired setup. Some point in the future, being able to check when those registry keys were changed can be useful. Doing the reg [registry key name] -m command allows you to get the timestamp of the last a time a registry key was changed. The timestamp format is [YYMMDDHHMM]
For example, if you wanted to see the last time the IP of your JNIOR changed, you can type ‘reg IpConfig/IPAddress -m’ in the JNIOR command line, and it will return the last time the registry key for the JNIOR’s IP changed.
You can also do this command for registry folders, which will return the last time each registry key in that folder has changed.
+ Allow you to query the temperature sensor via a HTTP Request. A JSON representation of the device will be returned.
As of now the only available devices are Type28 and Type7E...
Type28 is the temperature probe and Type7E is the environmental sensor.
To enable this you will need to set the AppData/Cinema/WebServer/Port registry key. The JNIOR will need to be rebooted after this key has been changed. In this example I chose 8081. Port 80 or 443 is normally the default web server port. This web server port is an additional web server that cinema is hosting to handle these types of requests.
Digitally triggering inputs on the JNIOR can be usefully for testing setups that use these inputs to trigger automation. A way to do this is by inverting an input. When an input is inverted, its state gets set to the opposite of what it should be. This post goes over two ways to invert an input on the JNIOR; using the configuration tab in the JNIOR Web Pages, and setting the invert registry key from a command line.
Web Page Input Inversion
Inverting an input is done easily from the JNIOR Web Page. You can easily get to the JNIOR’s web page by opening an internet browser of your choosing, and in the URL enter your JNIOR’s IP address. Once on the JNIOR Web Page, you’ll want to select the Configuration Tab. Under the Inputs section of this tab is where inputs can be inverted. Each input has a row of options for it, and one these options is an invert checkbox. When the invert checkbox is selected, that input is inverted!
Command Line Input Inversion
NOTE: Editing the Registry as described below is for the Series 4 JNIOR. When editing the Series 3 JNIOR registry, use the ‘registry’ command and edit the same registry key as shown below for the Series 4, except use True/False instead of Enabled/Disabled.
There may be a situation where you can’t access the JNIOR Web Page to do inversion. Luckily, you can still invert the input through a command line connection. You’ll first need to create a command line connection. An easy way to do this is from the JNIOR support tool, by right clicking a JNIOR in the Beacon tab and selecting Tools->Open Telnet.
Once the command line connection is made to the JNIOR, you can now use it to set the registry key to invert the input. For this example, we will invert input one. To do this after we log into the JNIOR we will use the ‘reg’ command to edit the registry, entering the path to the registry key along with the value we want to set it to. So since we want to invert input 1, the command to do so would be ‘reg IO/Inputs/din1/Inversion = enabled’. To disable it, you just set the same registry key to ‘disabled’. To do this for other inputs, just change the number after ‘din’ to the input you want inverted.
While the Cinema application has the functionality to send a UDP command to another JNIOR, did you know that it can do a UDP broadcast command also? This allows the JNIOR to send a UDP command to any JNIORs listening on that UDP port at the same time. This post will explain how to set this up. This post assumes you’ve already installed the Cinema application on your JNIOR. If you haven’t, here is a post that shows you how to install Cinema on your JNIOR.
Device File
First, to setup the broadcast you need to create a RAW UDP device in the support tool under the device tab. Here you can add a device from the ‘Add’ button at the bottom of the Device tab, and after naming it (I’ve named it ‘UDP_Broadcast’ for this example) you assign it as a RAW UDP device type. For the IP Address, it needs to be set to 255.255.255.255 so when this device is sent to from a macro command, it will send to any device listening on the same UDP port. The UDP port will be whatever UDP port you want to broadcast on. Just make sure the devices you are broadcasting to are also listening on that same UDP port (This example uses port 5554).
Macro File
Once this device is setup, you’ll save the device file locally and publish it to the JNIOR that will be broadcasting the command. You’ll then move onto the Macro tab in the JNIOR support tool. The first thing to do here is to select the ‘Link Devices’ option and select the device file you just created. This allows you to reference the ‘UDP_Broadcast’ device you created in your macros. Here in the Macro tab, a macro can be made that sends a command out to JNIORs via the UDP_Broadcast device. You’ll select the ‘Add’ button at the bottom left of the Macro tab, and this will add a macro in the macro view. You’ll name the macro (I’ve named it ‘Hello’ for this example) and then you’ll add an action to this macro. You’ll select the ‘Add’ button at the bottom right of the Macro tab this time, and add an action to the action view. Here you’ll name the action (I’ve named it ‘Broadcast Hello’ for this example) and then you’ll set the action’s device to the ‘UDP_Broadcast’ device from the device file we created. After this you’ll select the ‘send’ action for the macro, and for the data you can enter the whatever data you want to broadcast to other devices (I’ve made the data ‘Hello’ for this example). Lastly, you’ll select the macro ‘Hello’ and the action ‘Broadcast Hello’ at the same time, and then select the ‘<-‘ button between the Macro and Action views. This will add the ‘Broadcast Hello’ action to the ‘Hello’ Macro. After this you’ll save the macro file locally and publish it to the JNIOR that will be broadcasting the command.
Setting Cinema UDP Port
Your JNIOR should now be setup so when the ‘Hello’ macro is activated, it will broadcast to any JNIOR listening on port 5554 the command ‘Hello’. If you are trying to broadcast to other JNIOR’s running Cinema, you can send UDP commands to their Cinema application directly. Just make sure you have Cinema’s UDP port setup for each JNIOR that should be listening for those UDP commands. You can do this by going to the registry of a JNIOR, and under AppData/Cinema/ you set the registry key UdpServerPortNumber to the UDP port Cinema should be listening on. After setting this registry key, make sure to reboot that JNIOR so the change takes effect.
[+] variables that start with $$ are global variables. These are global WITHIN the workspace.
[+] added Control Panel Switch implementation
[+] added a tasks.get WebSocket handler
[+] added a task.list WebSocket handler
[+] added http post functionality
[!] scheduling changes take effect immediately when a workspace is reloaded
[+] validation on task names, device names, logger names, signal names, trigger names, and schedule names to prevent spaces and bad characters. Names can only be alphanumeric and can include underscores.
3.9, 18 nov 2020
[!] fix error where parameters used to have to be named starting with $.
3.8, 07 oct 2020
[!] fix error for only handling 8 output triggers.
[!] fix error where a temp probe couldnt be assigned to a variable.
[+] added http post functionality.
3.7, 02 oct 2020
[+] Added tracking the parent workspace name so that all of the tasks can be removed from the collection that belong to a workspace that is updated or removed.
3.6
[+] Added a tasks.get handler.
[+] Added a tasks.list message.
3.5
[+] Added a user.alert message.
3.4
[+] removed the requirement for the schedule start day.
[+] fixed the schedule reloading so that the new schedule takes effect and does not require a reboot.
It has been a while since Tasker was released. Tasker was a quick attempt at making a replacement for the Task Manager application that has been around for more than a decade, starting on the Series 3.
Ample time has now been taken to create a fully capable application that will be every bit as functional as Task Manager but offer the benefits of a rewrite, using configuration files and the latest web technology.
Some of the changes and new features are as follows:
Faster– The tasks are executed much faster and the triggers and schedule are monitored in real-time instead of once every 5 – 10 seconds.
Workspaces - Separate configuration logic into multiple workspaces. Then multiple workspaces can be loaded on the JNIOR at the same time.
Tasks are now separate from triggers. In Task Manager a Task was created and a Trigger was configured to get the Task to execute. In Tasker 3.0 Tasks are a separate entity that can be executed several different way including manual execution from the configuration page and being requested via an ASCII TCP connection.
Tasks can now send data via an Ethernet connection. To do this, a Device must be created so that the action can specify which device to send the data to. Multiple devices can be configured.
New Actions – We implemented actions that were previously available in Task Manager but are introducing many new actions like external module control, TCP communication and control structures.
Drag n Drop – Drag and Drop functionality makes it easier to design your Task logic.
Signals are now created to assign a specific property of a I/O point or sensor a name. The name can then be used in Tasks, Triggers or Loggers.
Loggers can be created to define the file name and schema or what data should be logged to that file. Each line in a Logger will be prepended with a timestamp followed by a comma. Loggers also allow you to define the number of files that should be kept with the given naming pattern. Name patterns can include date patterns. This will help you create a file per day for example.
Schedule – The schedule has additional options.
JSON Configuration files are used now instead of registry keys. Registry keys were limiting in size. The Series 3 could only store 255 characters in a registry key. It is much easier to upload configuration files to other JNIORs to replicate setups.
User Interface – The User Interface is now a native HTML application that uses the latest web technology. The latest web technology uses native HTML controls and Web-sockets to communicate with the JNIOR from your browser. This will allow accessibility over remote connections as long as port 80 is available. This is now consistent with the communication method used by the DCP. Task Manager had always used Java Applets. The Java Applets have not been able to launch in browsers for several years as they became frowned upon as security vulnerabilities.
This was just a short list of changes and new features. The documentation for Tasker should explain these topics as well as many others. If there is anything you don't understand please reach out to us for help. Additionally, if you have any suggestions or need the JNIOR to do something specific for you, please let us know.
The release fixed an issue with the Ethernet becoming “locked up”. The JNIOR could become unresponsive while servicing the network on busy networks.
Build 1.0
Corrected memory issue with KILL and message loop use
Corrected garbage collection issue with static classes in the JVM
Corrected memory issue with serial port buffer resizing
Delayed Java Thread startup to insure completion of initialization
Added KILL -A feature to terminate all applications
Initial (January 25 2023)
Initialized the Working Directory for command line scripting
Increased network frame buffers to improve throughput
Increased number of available application watchdogs from 8 to 16
Added WDT_SILENT so watchdogs can be used to schedule programs and not logged as triggered
Updated PS process listings to display pending watchdogs as scheduled execution
Improved PING statistics
Eliminated assertion in loading classes using InvokeDynamic
Eliminated memory leak in JVM class caching
Corrected IO signature performance with IO changes
Corrected TAB auto-complete issue with second parameter
PHP Registry lists now sorted by name
Eliminated chance of socket deadlock that would require a hard reboot
Added check for network during boot logging to avoid reboot loop
JANOS 2.2 Release June 28, 2022
This release was issued to support manufacturing and component changes forced by supply chain issues. Because of this, an update to the OS was required to handle this change. Units made June 22nd, 2022 or later will NOT be able to roll back to earlier version of JANOS.
Corrected bug in creating multidimensional arrays
Improved DEFLATE compression performance with binary files
Corrected issue with '%' sign when logging to the syslog
Fixed dropped serial character when port is closed
We have released JANOS v1.9 which has several changes and bug fixes. Most notably with TCP packet generation. While it is not wrong to send data in multiple TCP packets, many devices incorrectly implement TCP clients and fail when this case arises. This version adjusted the release of socket data to reduce the chances that a message might be split across separate TCP packets. This had been a recent issue with some MODBUS client devices.
Added support for Reverse LLMNR allowing network scanners to label IP addresses with hostnames
Adjusted the release of socket data to reduce the chances that a message might be split across separate TCP packets
Corrected Sockets race condition that caused occasional reception delays and blocking
Fixed the incorrect signed display of large input counter values in JRMON and JMP Protocol
Adds a BEACON announcement in the event of an IP conflict
Improved NONCE management eliminating possible issues in the presence of port scanners
Eliminated chance of buffer overrun occurring in FTP transfer
Beacon REBOOT now works in all cases
Eliminated potential difficulty in obtaining network capture file
We have released JANOS v1.8 which adds the JMP Protocol. The JANOS Management Protocol (JMP) is essentially the JSON message interface utilized by JANOS Websockets. The JMP Protocol has been exposed on its own TCP/IP port. This encloses the JSON messaging in a JSON array along with the JSON Object length making reception of the messages easy. The JMP Protocol will be used by the QSC Q-SYS JNIOR component.
Implements the JANOS Management Protocol JMP
Adds "Block" command to JSON interfaces
Web Server limits the effects of extremely slow connections.
--- Bundled --- FTP Client JBakup UPDATED MODBUS Server 1.9.268 Serial Control 7.2.61 Serial To Ethernet 6.2.70 Slaving Service 3.1.133 SNMP 3.1.667 Bundled Web Pages
--- Bundled --- FTP Client JBakup MODBUS Server 1.9.268 Serial Control 7.2.61 Serial To Ethernet 6.2.70 Slaving Service 3.1.133 SNMP 3.1.667 Bundled Web Pages
--- Bundled --- FTP Client JBakup MODBUS Server 1.9.268 UPDATED Serial Control 7.2.47 UPDATED Serial To Ethernet 6.2.70 UPDATED Slaving Service 3.1.120 UPDATED SNMP 3.1.498 UPDATED Bundled Web Pages ADDED
All-In-One 211215 December 15, 2021
This Update was pushed to support manufacturing and the supply chain issues brought on by COVID-19. Component workarounds were needed and a bump to the OS was required to support those component changes. Units built after this date will not be able to roll back to previous versions of the OS.
--- Bundled --- FTP Client JBakup ADDED MODBUS Server 1.7.236 Serial Control 7.0.31 Serial To Ethernet 6.1.53 UPDATED Slaving Service 2.0.104 SNMP 3.1.667 Tasker REMOVED [Has its own installer]
All-In-One 210304 March 4, 2021
--- Core --- JANOS 2.0 build 1.0 UPDATED DCP 3.0.1 UPDATED (moved from flash/www.zip to flash/www/config/zip)
--- Bundled --- FTP Client MODBUS Server 1.7.236 Serial Control 7.0.31 Serial To Ethernet 6.0.48 Slaving Service 2.0.104 SNMP 3.1.667 Tasker 6.0.1601 Task Manager 7.0.351
All-In-One 210202 February 2, 2021
--- Core --- JANOS 2.0 UPDATED DCP 2.4
--- Bundled --- FTP Client MODBUS Server 1.7.236 Serial Control 7.0.31 UPDATED Serial To Ethernet 6.0.48 Slaving Service 2.0.104 UPDATED SNMP 3.1.667 UPDATED Tasker 5.0.1505 ADDED Task Manager 7.0.351
All-In-One 200501 May 1, 2020
--- Core --- JANOS 1.9 UPDATED DCP 2.4
--- Bundled --- FTP Client MODBUS Server 1.7.236 Serial Control 5.0.122.1501 Serial To Ethernet 6.0.48 Slaving Service 1.5.1810.225 SNMP 2.6.532 UPDATED Task Manager 7.0.351
All-In-One 200203 February 3, 2020
--- Core --- JANOS 1.9 UPDATED DCP 2.4 UPDATED
--- Bundled --- FTP Client MODBUS Server 1.7.236 Serial Control 5.0.122.1501 Serial To Ethernet 6.0.48 Slaving Service 1.5.1810.225 SNMP 2.4.1.494 Task Manager 7.0.351
All-In-One 190618 June 18, 2019
--- Core --- JANOS 1.8 DCP 2.3
--- Bundled --- FTP Client MODBUS Server 1.7.236 Serial Control 5.0.122.1501 Serial To Ethernet 6.0.48 Slaving Service 1.5.1810.225 SNMP 2.4.1.494 Task Manager 7.0.351
--- Bundled --- FTP Client JBakup MODBUS Server 1.9.268 Serial Control 7.2.61 Serial To Ethernet 6.2.70 Slaving Service 3.1.133 SNMP 3.1.667 Bundled Web Pages
--- Bundled --- FTP Client JBakup MODBUS Server 1.9.268 UPDATED Serial Control 7.2.47 UPDATED Serial To Ethernet 6.2.70 UPDATED Slaving Service 3.1.120 UPDATED SNMP 3.1.498 UPDATED Bundled Web Pages ADDED
All-In-One 211215 December 15, 2021
This Update was pushed to support manufacturing and the supply chain issues brought on by COVID-19. Component workarounds were needed and a bump to the OS was required to support those component changes. Units built after this date will not be able to roll back to previous versions of the OS.
--- Bundled --- FTP Client JBakup ADDED MODBUS Server 1.7.236 Serial Control 7.0.31 Serial To Ethernet 6.1.53 UPDATED Slaving Service 2.0.104 SNMP 3.1.667 Tasker REMOVED [Has its own installer]
All-In-One 210304 March 4, 2021
--- Core --- JANOS 2.0 build 1.0 UPDATED DCP 3.0.1 UPDATED (moved from flash/www.zip to flash/www/config/zip)
--- Bundled --- FTP Client MODBUS Server 1.7.236 Serial Control 7.0.31 Serial To Ethernet 6.0.48 Slaving Service 2.0.104 SNMP 3.1.667 Tasker 6.0.1601 Task Manager 7.0.351
All-In-One 210202 February 2, 2021
--- Core --- JANOS 2.0 UPDATED DCP 2.4
--- Bundled --- FTP Client MODBUS Server 1.7.236 Serial Control 7.0.31 UPDATED Serial To Ethernet 6.0.48 Slaving Service 2.0.104 UPDATED SNMP 3.1.667 UPDATED Tasker 5.0.1505 ADDED Task Manager 7.0.351
All-In-One 200501 May 1, 2020
--- Core --- JANOS 1.9 UPDATED DCP 2.4
--- Bundled --- FTP Client MODBUS Server 1.7.236 Serial Control 5.0.122.1501 Serial To Ethernet 6.0.48 Slaving Service 1.5.1810.225 SNMP 2.6.532 UPDATED Task Manager 7.0.351
All-In-One 200203 February 3, 2020
--- Core --- JANOS 1.9 UPDATED DCP 2.4 UPDATED
--- Bundled --- FTP Client MODBUS Server 1.7.236 Serial Control 5.0.122.1501 Serial To Ethernet 6.0.48 Slaving Service 1.5.1810.225 SNMP 2.4.1.494 Task Manager 7.0.351
All-In-One 190618 June 18, 2019
--- Core --- JANOS 1.8 DCP 2.3
--- Bundled --- FTP Client MODBUS Server 1.7.236 Serial Control 5.0.122.1501 Serial To Ethernet 6.0.48 Slaving Service 1.5.1810.225 SNMP 2.4.1.494 Task Manager 7.0.351
String Converter is an application that works as a middle man between two devices trying to communicate with each other, converting the commands between them so they can understand one another. This post aims to explain how this application is setup to work after installing it on your JNIOR.
To configure StringConverter, you’ll first open a web browser and enter the in the URL your JNIOR’s IP address followed by “stringconverter”. For example, if your JNIOR’s IP address is 10.0.0.100, StringConverter’s URL in the web browser will be “10.0.0.100/stringconverter”.
After accessing StringConverter’s Web Page, the first thing you’ll need to do is setup the connection settings at the top of the page. There are two connections you are setting up: one for the device sending to the JNIOR (Server Settings), and one for device the JNIOR is sending to (Client Settings). This communication can go from Client, to JNIOR, to Server as well though.
Ethernet and Serial Connections
When settings up the connections for String Converter, you can either have a Serial connection or an Ethernet connection for the Server and Client. Serial and Ethernet connections will require different settings to connect, but will always have a field for the Termination String. So before explaining the settings of each type of connection we’ll go over the Termination String. The Termination String is used to determine when the end of a command has been reached. Termination Strings are not required, but if not entered String Converter will wait for a timeout. This means after a device has sent to a command to the String Converter application, it will wait for small amount of time and if nothing else was sent it assumes the command has been fully sent.
Ethernet Settings
For the Ethernet settings, for the Server Settings only the port number value is listed, because the IP will always be the JNIOR’s IP. The port value should be set to listen for the device sending to it. (If the device is sending on port 9222, the set the server port number value to 9222) For the Client, the IP field will be there and requires the IP and port number of the device the JNIOR is sending to.
Serial Settings
For both Server and Client Serial Settings, you only have to declare if the Serial connection is going to the AUX or COM (RS-232) port of the JNIOR.
If the device connecting to the JNIOR has specific Serial settings, you’ll need to set the JNIOR to match them. This is set on the JNIOR Web Page in the Serial I/O section under the Configuration Tab.
Lastly, when entering the connection settings for the Server and Client, fields other then the termination string can’t be left empty. This is true for both Serial AND Ethernet connections of the Server and Client, meaning if you are using a Serial connection for the Server or Client, the Ethernet settings for them cannot be left blank even while hidden. String Converter’s web page will not let you save if a field (other then the Termination String) in the Server or Client’s connections settings is left blank. Dummy data can be entered to get around this.
Conversions
Once the connection settings have been entered, the next section to setup is the Conversions. In this section there are conversions from the Server to the Client, and conversions from the Client to the Server.
The arrows between the conversions indicate what the command is being converted to. For example if under Server to Client Conversions you have “test >>> testing”, that means that if the Server sends “test” to the String Converter application, it will convert it to “testing” and pass that command over to the Client.
NOTE: When making conversions, make sure a command doesn’t have multiple conversions. An example would be having one conversion be “test >>> testing” and another conversion be “test >>> tester”. StringConverter wouldn’t know which conversion to use for test because it has more then one defined, and will not save if you do this.
Hex
Hex can be entered in conversions regardless if its being sent from the Server or Client. Hex values should be formatted as \x00 for each hex value with no spaces between them.
Regex
Regex or Regular Expression, is a sequence of characters that represents a search pattern in text. Regex can be used to represent certain parts of text without specifically entering them. A good example of how this is useful is if you are trying to make conversions in StringConverter for commands that set the volume of device. If the devices range of volume is 1 – 100, and you want conversions to handle each volume level, you’d have to make one hundred conversions! To avoid that, you can use a regex pattern to represent the digit of the volume, while specifying the rest of the command that would be used to set the volume. When implementing Regex for each grouping of values, they can each be substituted in for by order. In the order they are defined in the conversion from left to right, the first grouping is represented by %1, the second by %2, the third by %3, etc. regexr.com is a good place to try out testing and understanding regular expressions if you are unfamiliar with them.
Saving
After you have defined your connection settings and conversions correctly. You’ll want to save your settings for StringConverter. Either at the bottom right or top right of the page should have a Save button. Select this, and if there are no errors in your configuration it will save. If it doesn’t save, then that means you need to look back through and make sure you have everything filled out, that no commands have multiple conversions for themselves, and that the Serial setting aren’t set to the same Serial port. After saving, the last step is to restart the StringConverter application. The easiest way to do this is by rebooting the JNIOR. This is needed to make sure the JNIOR is listening and connecting on the right connection settings. Now StringConverter should be ready to convert commands between your two devices!
We have given the knowledge-bases a new look and feel. This is intended to make finding information easier. Once within the knowledge-base, a new vertical navigation menu on the left hand side will help you find similar posts while staying within that knowledge-base section. For every post, headers distinguish different sections on the right hand side of the page, allowing readers to jump to ones that they are interested in. Topics in each section focus on specific features that each Knowledge base highlights. There are 5 different Knowledge Bases that were created based off the amount of content on our site pertaining to an application or use for the JNIOR. Here is a brief overview of each knowledge base.
General Knowledge Base
The General Knowledge Base focuses on providing posts that explain configuring and using the JNIOR Web UI and Support Tool, the hardware capabilities of the JNIOR, and steps that can be taken to troubleshoot when things don’t work. This Knowledge Base is where general questions about the JNIOR can be solved.
Tasker Knowledge Base
The Tasker Knowledge Base contains posts going over specific features of the Tasker application. It explains creating and managing workspaces, setting up connections to different devices through Tasker, and setting up Triggers and Schedules to activate tasks in Tasker.
Cinema Knowledge Base
The Cinema Knowledge Based contains posts over specific features of the Cinema application. It can explain how to create and execute macros, setup the Preshow and Cinema Server Clients, and how to troubleshoot connections made to the Cinema application.
DMX Knowledge Base
The DMX Knowledge Based contains posts over specific features of the DMX application. It can explain how to create triggers, scripts, and fixtures, how to potentially use a JNIOR 410 as a DMX controller, and how to use the JNIOR as a DMX fixture itself.
Embedded Programming Knowledge Base
The Embedded Programming Knowledge Base contains a wide variety of coding examples to create applications that run on the JNIOR. Here the JANOS runtime library can be downloaded and used in projects. Each section contains examples of short applications that can show how to do certain functionality on the JNIOR.
The tail command is used to display the last n lines of a specified file. By default the tail command displays the last 10 lines of a file. This can be changed by using the -n argument and specifying a new value. If the specified file does not contain at least n lines then a the .bak version of the file will be prepended, if it exists.
Another powerful feature of the tail command is its ability to monitor and display file changes in real-time. The specified file in monitored for changes once a second and only the changed portion of the file is displayed.
How to Install tail
Below is an update project you can apply to your JNIOR to get the tail application.
The number of lines that should be displayed from the end of the file
-f
–follow
Monitor the file in real-time
Default Usage
The default usage will show the last 10 lines of the specified file.
Specify number of lines to show
We can use the -n or --lines option to specify 20 lines.
Update the file in real-time
Use -f or --follow to follow the file in real-time. New entries will be displayed. This command will not return to the prompt until ANY key is pressed.
The JNIOR 410 is capable of handling RS-485. To do this you need to wire it correctly.
While RS-485 is commonly referred to as 2 wire, it really should include a third wire for ground. You can get away with 2 wires as long as there is a common ground between all devices. This is hard to guarantee, especially on long runs. Including the third wire is always a good idea.
RS-485 should also include termination resistors at the end of the bus. This helps prevent reflection on the wire from corrupting the communications.
Again, while referred to as 2 wire, a ground wire is good practice. In this wiring scenario D- will be landed on pin 3 and a small jumper wire will be used to connect pin 3 to pin 2. D+ will be landed on pin 7 or pin 8 and a small jumper wire will be used to connect pin 7 to pin 8.
Signal DB-9
-------------------- ------
Signal Ground (GND) 5
Data (D-) 2, 3
Data (D+) 7, 8
4 wire
While referred to as 4 wire, a ground wire is good practice.
Signal DB-9
-------------------- ------
Signal Ground (GND) 5
RS485 TX- 2
RS485 RX- 3
RS485 RX+ 7
RS485 TX+ 8
DB9 Breakout Connector
You can make wiring of the DB9 connector easier by obtaining a breakout board like this one from Amazon.
Here is an example of wires landing on pins 7 and 8 with a small jumper wire.
RS485 to RS232 converter
Use an RS485 to RS232 converter and let the JNIOR handle the RS232 data. This will enable 412 and 414 JNIORs to handle RS485.
DMX requires RS485 communication at 500K baud. The JNIOR 412 DMX handles this inherently. The JNIOR 410 has the ability to handle RS485. An additional application must be loaded to get the DMX data to be streamed out the AUX port. You can read about using the JNIOR 410 and a 412 DMX Alternative. The downside of this is that there is additional overhead on the JNIOR and that the AUX port is not properly isolated. In most cases the lack of isolation is not an issue but it could be given certain circumstances.
At the time of writing this article, in 2022, we have found it hard to acquire the components needed to build the 412DMX unit due to supply chain issues and chip shortages.
While using the 410 as a DMX alternative would work, some people like the IO mix on the 412. So we decided to look at what it would take to use the 412 as a DMX alternative. It turns out that an RS232 to RS485 adapter with a NULL modem will do the trick. Here are links to the components that we tested an commanded DMX fixtures with here in the office.
The PowerEventLog application uses an immutable array to keep track of when the JNIOR turns on and off. It takes the values in an immutable array and stores them in a log file called powereventlog.
The application starts by checking if another instance of itself is already running. If there is one already running, the instance of it trying to launch terminates itself. After checking that, it then gets the time that the application started on the JNIOR. The Immutable block is then returned (or created if it doesn’t exist yet.) to hold/retrieve the values of when the JNIOR last turned off and when it booted up again. The stop and start times of the JNIOR are re-formatted as date strings to be more readable. The log files being created are then checked to see if a backup needs to be created. Lastly, the stop and start times of the JNIOR are written to the log file, and then the times are updated for the next time the JNIOR turns off.
JBakup is an application that is running on the JNIOR to help extend the life of your log files. It does this by monitoring the filesystem for the creating of a .log.bak file. This logic runs just once every 15 minutes. When a .log.bak file is found that has NOT been previously processed then it is added to the .zip of the same name in the flash/baks directory.
The JAVA application doesnt take care of the zipping of the backup file data but rather creates a script that the OS executes using the ARC command.
After configuring the JNIOR properly, a way to send an email from it is to use the MailComposer class. This function has the user define the email being sent by building different parts of the email (Email address being sent to, Attachments to add, anyone that needs CC’d, subject, message, etc). Once these are all defined, you can use the MailComposer’s send() function to submit the email.
package emailexample;
import com.integpg.system.JANOS;
import com.integpg.system.MailComposer;
public class EmailExample {
public static MailComposer mail = new MailComposer();
public static void main(String[] args) {
mail.setToAddress("YOUR EMAIL HERE");
mail.setSubject("MailComposer Test");
mail.setMessage("This was built and sent using the MailComposer Class.");
mail.send();
}
}
I put the built jar file of this example application into the JNIOR’s flash folder and ran it from the Web UI’s console tab. After it had successfully run, I checked my email and received one from the MailComposer example.