The following post talks about entering the processor bootloader.  Entering the bootloader could have unintended consequences should the wrong commands be entered.  Proceed at your own risk.

Note, this is for a series 3 JNIOR that went out of production in 2015. You can upgrade to Series 4 JNIORs easily in most cases.

Most JNIOR3 batteries should be dead and therefore removing power to reboot should restore the default accounts. If the battery is still doing its job you can force your way in using the following:

  1. Connect USB-to-Serial cable to COM/RS-232 port.
  2. Open Terminal program of your choice (Support Tool). Serial settings are 115200 baud, 8 data bits, 1 stop bit, and No Parity. No hardware buffer control. We are hoping that the DTR line (pin 4) is wired through the cable and is asserted by default.
  3. Access the JNIOR and prove to yourself that you cannot log in. Try jnior:jnior and admin:admin.
  4. With jumper (or screwdriver) short jumper next to COM port briefly (1/2 second).
  5. Immediately hit repeated (at least 3 or so) ENTER keystrokes. The bootloader banner should appear.
  6. Enter: B 02 <ENTER>
  7. Enter: F 00 0000 0100 <ENTER>
  8. Enter: E <ENTER>
  9. The JNIOR should reboot. Note the above switches to the Block for the Heap Memory (Bank 2); Clears the first 256 bytes of the Heap damaging its structure; And, then Exits restarting the system.
  10. Note in the dialog the indication “Blast HEAP”. This restores the original /etc/passwd file with the default credentials.
  11. Eventually log in using jnior:jnior

If shorting the jumper pins or inserting the jumper briefly does not reboot the JNIOR and accept your ENTER keystrokes, then DTR is not wired or asserted.

This test was done using Putty on an Ubuntu system with an old USB-to_Serial adapter.

Name Version Release Date Size MD5
Tasker v3.2 Jun 18 2020 958.1 KB 953712536000b330ad267047b7ee274d
  • + added 4-20ma modules
  • + added 10v modules
  • + added email send attachment option

Go to the Tasker Application page for more information. The Tasker Knowledge-base has helpful information on how to use the features in Tasker.

Tasker 3.1 May 1, 2020

Name Version Release Date Size MD5
Tasker v3.1 May 05 2020 942.1 KB 47e03374e8a8791ec0a922f38e62f174
  • Added If / Else Block Task Action
  • Added While Loop Task Action
  • Added SNMP Trap Task Action - Tutorial
  • Help pages are in progress
  • Upload and download workspaces
  • Delete a workspace (Workspace is backed up)

Go to the Tasker Application page for more information. The Tasker Knowledge-base has helpful information on how to use the features in Tasker.

Tasker 3.0 April 20, 2020

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.

For more information go to the Tasker Page

Tasker is an add-on application. This means that Tasker is not loaded on the JNIOR before we ship it. This may change in the future.

To load Tasker you will need to get the JNIOR Support Tool and the Tasker update project.

Once you have installed the JNIOR Support Tool, open it and go to the Update tab. Here we will open the Tasker update project that was downloaded. Do not unzip the update project file. You should see the following…

This image shows the Update project for Tasker version 3.1 from May 5th 2020
This image shows the Update project for Tasker version 3.1 from May 5th 2020

Click Publish and select the JNIOR or JNIORs that you wish the load the Tasker Application on to. The Update project will run until all of the selected JNIORs have been updated.

Once complete, you can go to the Tasker Web Application in your browser. Simply go to http://JNIOR_IP_ADDRESS/tasker.

Name Version Release Date Size MD5
Tasker v3.1 May 05 2020 942.1 KB 47e03374e8a8791ec0a922f38e62f174
  • Added If / Else Block Task Action
  • Added While Loop Task Action
  • Added SNMP Trap Task Action – Tutorial
  • Help pages are in progress
  • Upload and download workspaces
  • Delete a workspace (Workspace is backed up)

Go to the Tasker Application page for more information. The Tasker Knowledge-base has helpful information on how to use the features in Tasker.

Tasker 3.0 April 20, 2020

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.

For more information go to the Tasker Page

--- 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

One of the useful things about Tasker, is that it can include communicating with other devices within its tasks. This is possible by including a networks action, but before those actions can be used devices need to be added to a Tasker application. This post will explain how to create devices to be used in actions for tasks.

To start, we’ll begin by going to the devices tab of the Tasker application.

Device tab in Tasker

Here we can select the “Add Device” button which brings up a dialog box to add a device to the current workspace. 

Device dialog box in Tasker

In this dialog, two things need to be defined to create the device. This first value needed is the name of the device. The second value needed is the device type, which can either be an Ethernet or SNMP Device. Depending which Device type you choose changes the what information you can configure for the device after creating it.

Creating an Ethernet Device

If the Ethernet Device type was selected, the configurable option for the created device should look like this:

Ethernet Device example in Tasker

Two values of the Ethernet Device need configured in order to use it in a Task action, the IP Address and the TCP Port values. These need to be set to the IP Address and TCP Port values on the device, so that when they are used in actions, the JNIOR can properly communicate with the device. Another post has an example of using a TCP Send with an Ethernet Device.

Creating an SNMP Device

If the SNMP Device type was selected, the configurable option for the created device should look like this:

SNMP Device example in Tasker

Three values of the SNMP Device need configured in order to use it in a  Task action which are, the IP Address, the UDP Port, and the Community Name. These are needed for the JNIOR to connect to the SNMP Device and you obtain them from the SNMP Device. A different post shows how to use a SNMP Device with an SNMP Trap.

With this, you should have created devices in Tasker that can be implemented in actions.

Schedules add functionality to task created in Tasker because it gives them the ability to place a time for when the tasks should occur. This post will explain the different types of schedules that can be created, and how they can configured.

Creating a Schedule

To start, we’ll go to the Schedule tab of the Tasker application in order to create a schedule.

Schedule tab in Tasker

After going to the Schedule tab, the first thing to do is add a schedule in the Schedule tab. After giving it a name, the new schedule will have 3 parts to it, the name, the rules, and the task to be executed from it.

The Name section already has the name you gave it when it was created, but that section also gives you the options to edit the name, have the schedule enabled or not by checking the checkbox, or delete the schedule.

The Task Name section allow you to select a task from a drop down list or manual enter the name of a task that will execute at when the schedule is set.

Adding Rules to a Schedule

The Schedule Rules section is what allows the schedule to determine the times that which the Task selected in the Task Name section will execute. Clicking the “Add Rule” button opens the rules dialog box.

Schedule Rule dialog box

When adding rules to a schedule, there are 4 types of rules you can add, reboot, sunrise, sunset, and schedule. The first three are similar, where you simply click on the Schedule Type and select sunrise, sunset, or reboot from the drop down list. This will make it so that the task you set with that schedule will run at either sunrise, sunset, or on reboot, depending on which one you picked and no other options need to be selected. 

Schedule Rule type

Picking the Schedule option in the Schedule Type, lets you set the custom options for creating a schedule. The first option after the Schedule Type is the Start On option. This lets you select what day the schedule will begin to activate. Once the date reaches the day you selected it will run that schedule from then on. 

Schedule date option

After that is the Start Time option. This allows you to select from the hours and minutes in a 24 hour format when the scheduled task will begin. 

Schedule start time

Next is the Repeat Every option, which lets you how often in a time interval you want the task to reoccur. It adds a End Time option once a value has been added to the Repeat Every option. It can be set similar to the Start Time option that will decide when the Task will stop repeating by. 

Schedule interval

After that is the Date Selection Type option, which lets you choose between letting the task execute None (Which is one time), Daily, Weekly, or Monthly. Depending on what option you choose, this changes the Recur Every option. Picking the None option  will make the task only run on the Start On date you picked. The Daily option will let you choose how many days between the task should run. The Weekly option will let you choose what days of the week the task should run. The Monthly option will let you choose what days of  month the task should run.

Schedule date selection

With this, you should be able to assign schedules for any task you have created.

Workspaces are files that contain configuration for Tasker. Tasks, Devices, Loggers, Signals, Triggers, and Schedules are all saved in a Workspace file.

Multiple Workspace files can be loaded on the JNIOR at the same time allowing you to load more complex logic. Using multiple Workspaces allows you to logically group the features together that rely on each other.

Tasker will not have any Workapces loaded when it is first loaded. You will be presented with a screen alerting you to that fact and telling you that you must create a new Workspace.

Tasker Empty Workspace

You can click the green button to Create a new Workspace or use the New option in the File menu.

Tasker File Dropdown

Once a Workspace is created and saved the screen will appear differently the next time you visit Tasker. Here we have created two Workspaces to illustrate this.

Example Workspace in Tasker

You can now click on of the Workspace files or use the Open option in the File menu.

Selecting Example Tasker Workspace

This feature is available in Tasker v3.1 and later.

The SNMP application offers built-in Traps when the digital inputs and relay outputs change. Tasker takes this further allowing you to send a SNMP Trap as a part of a Task. The value of the Trap can be custom and dynamic based on the message building rules of Tasker. An example of using a custom SNMP message in Tasker is below.

The first thing we need to do is make sure that SNMP is running. The feature covered in this post is available in SNMP v2.6 and greater. Once we know that SNMP is running we can Create or Open a Tasker Workspace.

To send a SNMP Trap we will need to add the SNMP Trap action to a Task. You can create a new Task for this action or add it to an already existing Task. The action will ask for the SNMP OID (Object Identifier), the message to send and the device to send the Trap to. The device to receive the Trap can be the built-in Trap Host that is defined in the SNMP application or a new one can be defined in the Devices Tab.

Upon selecting the SNMP Trap action you will be presented with the following

Send SNMP Trap empty

Here is what it will look like after entering some information

Send SNMP Trap example

Without defining a SNMP Device, the Trap will be sent to the Trap Host that is defined in the SNMP application. You can optionally define a new Trap Host by clicking + Add Device in the Devices Tab.

Tasker Add Device Action

You will be presented with a Dialog asking for a Device Name and the Device Type. Enter any name and select SNMP Device from the Device Type drop down.

Tasker Create New Device dialog

Now you can enter the Trap Host information as shown here.

Device tab in Tasker

Now back in our Task Action we will see this Device as an option.

SNMP Trap Action with Device in Tasker

Save the Workspace in the File menu and your Custom Trap will be able to be sent!

Advanced Usage

You can send a dynamic message. A dynamic message is one that has different data based on our message building rules. Here we will send the current temperature.

SNMP Trap Action Example

A defined Signal could also be used here instead of temp[1].f and a Trigger could be used to cause the Trap to get sent as described in the using signals and triggers post.

To build dynamic messages you will use the text replacer syntax. Using {{ }} will allow the message engine to find the appropriate portion of the text and replace it with the value of the evaluated text that is contained within the {{ }} syntax.

Available Conditionals

Internal I/O

din[#].state din[#].counter din[#].usagemeter
rout[#].state rout[#].usagemeter

Temperature Sensor

temp[#].fahrenheit or temp[#].f for short
temp[#].celsius or temp[#].c for short

Environmental Sensor

env[#].fahrenheit or env[#].f for short
env[#].celsius or env[#].c for short
env[#].humidity

Registry

registry("key_name")or reg("key_name") for short. Just replace key_name with the registry key name.

Date

date.currentmillis where the value is the number of milliseconds since January 1st 1970. date.format("format_string") where the format_string is of the following format:

MM two digit month
dd two digit day
yy two digit year
yyyy four digit year
HH two digit 24 hour
hh two digit 12 hour
mm two digit minute
fff milliseconds
aa am / pm
zzz timezone string

for example. date.format("MM-dd-yyyy HH:mm:ss.fff")

Examples

Tasker Action Example
Tasker Action Example
Tasker Action Example
drop

The TaskerApplication has a lot of different functionality built into its actions, but it also can handle logic too. One of those actions that you can create in Tasker is the If block action. This post will create two If blocks in Tasker, one being the If block and the other being the If/else block.

Create an If Block

To start, create a new workspace by going to the File Drop-Down and selecting new. After that, go into the Task tab of Tasker and select the “Add Task” button. Once you name your Task, you’ll click on it and select the “Add Action” button. This will bring up the Action Dialog box. Here we need to select the If block action in the Control Structures section of the Action Dialog box. Once we have our If block in the task, we’ll want to add one more action inside of the If block by selecting the “Add Action” button inside of the If block. Here we’ll also select the Pulse Output Relay action.

Tasker If Example empty

Setting the If Block Actions

Now that our actions have been added to the Task, we can now configure them to do what we want. For this example, we are going to configure the if statement to activate when Input 1 goes high. To check if the input is high, for the If block value field we’ll enter din[1].state == 1.

With this, the If block will Pulse Output Relay 1 for 1 second if Input 1 is high.

Tasker If Example

Create an If/Else Block

In the workspace, go into the Task tab of Tasker and select the “Add Task” button. Once you name your Task, you’ll click on it and select the “Add Action” button. This will bring up the Action Dialog box. Here we need to select the If/else block action in the Control Structures section of the Action Dialog box. Once we have our If block in the task, we’ll want to add two more actions inside of the If/else block by selecting the “Add Action” button inside of the If/else block. Here we’ll select the Pulse Output Relay action inside the conditional part of the If/else block , and the Pulse Output Relay action inside for the “else” part of the If/else block.

Tasker If/Else Example empty

Setting the If/Else Block Actions

With the actions being added to the Task, we can now configure them to do what we want. For this example, we are going to configure the If block to Pulse Output Relay 1 when Input 1 goes high, and Pulse Output Relay 2 when Input 1 isn’t high. For the If/else block value field, to check if the input is high we’ll enter din[1].state == 1. For the first Pulse Output Relay, we’ll set the channel to 1, and for the other pulse relay we’ll set the channel to 2.

With this, the If/else block should Pulse Output Relay 1 for 1 second when Input 1 is high, and Pulse Output Relay 2 for 1 second when Input 1 is not high.

Tasker If/Else Example

The Tasker application has been made to handle lots of different types of functionality. This post will go over an example that looks into different actions in Tasker such as a While Loop, If Statement, TCP Send and Set Variable action. It will also create devices in Tasker that would be sent to. The example should monitor output 1’s state, and when it turns on it will send string commands out to devices we declared. 

Actions In Example

The Set Variable Action

Tasker Set Variable Action

The Set Variable Action allows you to create a variable in the first value field of the action, and then assign it a value in the second value field.

The If Statement Action

An If Block Action creates a condition using a variable, that activates other actions when the condition is meet.

The While Loop Action

The While Loop Action makes actions within it reiterate until the conditional in the value field is met. 

The TCP Send Action

The TCP Send Action allows you to select a device created in the device tab, and send it the info you define. The device value created in the device tab uses an IP address and port number of the device. This is used to create the TCP connection you send on.

Device Example

Note: Values in this example will most likely differ from your. Information you enter here depends on what settings your Ethernet device listens on.

In this Example, before we create the Tasks, we need to create the devices that will receive commands we send, like shown above. To start, go to the device tab and click the “Add Device” button. Add as many devices you plan to send to. Each device you’ll enter its IP address, and TCP Port number.

After creating the devices to send macros to, you’ll start creating the task. It starts with the Set Variable action. This action is used to define the variable of the while loop to know when to end the Task. We set this variable to true so the while loop never stops until we set the variable to false. Once this value is defined, a while loop is added to the task. We’ll set this loop to check the conditional of the variable we created. After that, we add an if block and set the conditional of it.  This evaluates output 1 on the JNIOR, and if the output’s state is on, then if begins doing the actions inside the if block. When output 1 does go high, it sends the devices we created the string ‘test’ using TCP Send actions. It also sets the conditional for the while loop to false, so the task no longer loops, and ends.

With this, you should have a task that constantly monitors output 1 on the JNIOR. If output 1 goes high, it sends the string ‘test’ to all the defined devices.

Signals and Triggers are very useful tools in the Tasker application. Signals are I/O values on either the JNIOR or a compatible expansion module with the JNIOR. Triggers are reactions to when a signal occurs. This post will explain all the parts of the Signal and Trigger tabs in detail.

The Signal Tab

To start, since signals in the Signal tab can be used in triggers we’ll start with Signals. Signals are I/O values on either the JNIOR or a compatible expansion module with the JNIOR. Each Signal values has what device the Signal is coming from, the channel number of the value, and then the type of value its getting. These can be used either in a Trigger or to set/evaluate the value of a variable defined in a task.

Tasker Signal Example

The Trigger Tab

The Trigger is a reaction to a Signal value. Triggers are made up of first, a Trigger value that watches a Signal to react to, along with what the Signal value needs to be to activate the Trigger. Second, is the Reset value that monitors a Signal like the Trigger value does. This is optional and a reset value is not required. If you don’t set a reset value for a Trigger, the Trigger value will always activate the Trigger. If you do add a Reset value, a Trigger that has activated won’t activate again until the reset value condition is met. Lastly, a task name is selected as the task to run when the Trigger value is met and the Trigger activates.

There are currently 5 types of events that can be added as a value for a trigger or reset. The first is a discrete signal, which consists of Input or Output changes going High or Low. The second is a continuous signal, which pertains to the temperature and 4-20ma/10volt values that are constantly being reported and updated. Discrete and continuous values use the signals created in the Signal Tab as the values available in a trigger. Third is the control panel switch signal, which as is name suggests is for when a switch on the control panel is pressed. Forth is the multi-switch control panel signal, which is that same as the normal control panel signal but is activated from two switches being pressed at the same time. Lastly, is the delayed Reset which activates a reset after a certain duration. As the name suggests, this is only available for the reset and can’t be used as a trigger signal. The control panel and delay reset values do not need to be made as signals in the Signal Tab to be used in a trigger, while the discrete and continuous signals do.

Tasker Trigger Example

These steps show show you how to properly create a Signal and Trigger.

Example

The example below will show you how to make a Trigger activate when Relay output 1 on the JNIOR goes High.

We’ll create two Signals with the first ones values being: Device is the Relay Output states of a JNIOR, the channel 1, and the type being the state. The second ones values would be: Device is the Relay Output states of a JNIOR, the channel 2, and the type being the state.

Tasker Signal Reset

Afterwards you would begin configuring a Trigger. The Trigger values would be the Example Signal we created, and its trigger value will be high. For the Reset values, we’ll select the Example Signal Reset we created as the Reset value, and its reset value will be high as well. Lastly, we’ll pick whichever task we want to run during the Trigger activation as the Task value. In this example my task I created is Example Task. The final product of this example is a trigger that will activate when Relay Output 1 goes high. It won’t activate again though until Relay Output 2 goes high.

When working in Tasker, at some point you might need to move a workspace from one PC to another. You also might want to have the workspaces saved on your PC rather than in the JNIOR. The upload and download functionality in Tasker allows you to save workspaces as JSON files, as well as upload them onto the Tasker application as a workspace.

To start, its good to know what a workspace is. It is configuration settings for the Tasker application. While the current configuration is the one you currently view when accessing the Tasker Web Page, other tasker configurations could have been created and sit in the background. Upload and Download are ways to access these different configurations that have been created and saved.

To download a workspace from Tasker, you’ll want to click on the file tab and in the drop-down select the download option.

Tasker Download Workspace

When selecting the download option, it immediately begins the download of a JSON file. This is the file that can be uploaded as the chosen JSON file for the current workspace.

To upload a workspace from Tasker, you’ll want to click on the file tab and in the drop-down select the upload option.

Tasker Upload Workspace

Clicking the upload option  will prompt you if you wish to continue. This is because uploading a workspace gets rid of the one you are currently making. Make sure that if you want to keep your current workspace configuration, that you save it before you continue with the upload. Uploading will place the JSON file into the workspace folder inside the Tasker directory on the JNIOR.

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.

For more information go to the Tasker Page

The Tasker application has a lot of different functionality built into its actions, but it also can handle logic. One of those logic actions that you can create in Tasker is the loop action. This post will create two loops in Tasker, one being the for loop and the other being the while loop.

Creating a For Loop

To start, create a new workspace, by going to the File Drop-Down and selecting new. After that, go into the Task tab of Tasker and select the “Add Task” button. Once you name your Task, you’ll click on it and select the “Add Action” button. This will bring up the Action Dialog box. Here we need to select the for loop action in the Control Structures section of the Action Dialog box. Once we have our loop in the task, we’ll want to add two more actions inside of the loop by selecting the “Add Action” button inside of the loop. Here we’ll also select the Pulse Relay action and the Sleep action.

Setting the For Loop Action Values

Now that we have our Task’s actions added, we can configure their values to what we want, which is to have our loop use a variable to pulse relays 1 – 3 for 2 seconds, with a 1 second delay between them. To do this, we’ll start by setting the variable in the first field value of the loop action, which in this example we will make ‘a’. The other loop fields are to set how many times the loop will repeat, and since we want to pulse 3 relays we’ll set the second loop field to 1 and the third to 3.

Next for the Pulse Relays action, the first field will be replaced with the variable we created in the first field of the loop action, ‘a’. After that we’ll want the second field set to 1, since we want it to pulse for 1 seconds. Lastly, we’ll set the sleep action to 2 seconds so that no relay is pulsing at the same time as another, and has 1 second delay between each other.

With this, your loop should be configured properly. Now it will loop through output relays 1 – 3 on your JNIOR, pulsing each relay for 1 second with a 1 second delay between each relay pulsing.

Creating a While Loop

For creating a while loop, in your workspace go into the Task tab of Tasker and select the “Add Task” button. Once you name your Task, you’ll click on it and select the “Add Action” button. This will bring up the Action Dialog box. Here we need to select the while loop action in the Control Structures section of the Action Dialog box. Once we have our loop in the task, we’ll want to add two more actions inside of the loop by selecting the “Add Action” button inside of the loop. Here we’ll also select the Pulse Relay action and the Sleep action.

Tasker While Loop Action empty

Setting the While Loop Action Values

Now that we have our Task’s actions added, we can configure their values to what we want, which is to have our loop use a variable to check the state of input 1, and if its high (equal to 1) to pulse output 1 for 1 second with a one second delay between it every time it pulses. To do this, we’ll start by setting the variable in the field value of the loop action to din[1].state == 1 to check if input 1’s state is high. Then we’ll set the pulse output of whichever relay we wish to pulse for 1 second, with a second sleep so it will pulse for 1 second, and then wait 1 second.

Tasker While Loop Action

Tasker is able to perform many different things, one of which is the ability to log information. Tasker contains a Logger tab that can create Logger profiles to record data. These Loggers tell what needs logged and which file it should be stored in when used in a task. This post will show how to record temperature values from an environmental sensor using Tasker.

In order to setup Tasker to record temperatures from a environmental sensor, there are a few step we need to take:

  1. First we need to create Signals in the Signal Tab. These will be used in the Logger tab to record their values.
  2. Next we create a Logger in the Logger tab. Here we use the Signals to document their values in log files.
  3. After creating the Logger, we now go to the Task tab and create a task that includes the Logger that was just created.
  4. Finally, once the task is created, in the Schedule tab we create a Schedule that runs the task for however often we wish to record the environmental sensor values.

NOTE: In step 4 you can also use a Trigger, but this example will focus on using a Schedule.

Creating Signals

Signals are Input/Output values from the JNIOR or from expansion modules compatible with the JNIOR. In this example we are using a environmental sensor expansion module to record these values. First we’ll create a new workspace using the File Drop-Down. Then in the Signals tab, After clicking the “Add Signal” button, we’ll create a new signal called Temp_1. After the Signal is created, it has three value fields to fill out. The first one is the Signal drop down value, where you will pick where we are getting the Input/Output values from. As stated previously, we are grabbing these values from a environmental sensor, so we’ll select it from the drop down options. Next is the channel for the environmental sensor. Each channel represents a different environmental sensor. Since we are only using one sensor, we’ll select channel 1. Lastly is the variable type, and while the values you can get are either Celsius, Fahrenheit, or humidity, we are going to be logging the info in Fahrenheit, so that’s what we’ll chose.

Signal tab in Tasker

Creating a Logger

Now that the Signal is created, we can create a Logger to record those values to a file. We’ll go to the Logger tab and select “Add Logger”. The first value is the File Name, which is where you define what the name of the log will be when its created, and the file path on the JNIOR where it will be saved. In our example, we used the file path /flash/tasker/logging/temps-{{date(“YYMMDD”)}}.log. If you run this logger and go to the directory on the JNIOR where you saved this log, you’ll see the date(“YYMMDD”) will be replaced with the date the log was created. After this is the Headers field which create headers in the log right above where values will be added. We define a header in the example that will add Temperature to the top of the log. The next field is the Timestamp Format, which defines how the time is recorded next to the value being logged, leaving this blank will used the grayed-out default (MM/dd/yy HH:mm:ss zzz).  After that is the Schema field, which lets you define what values should be logged when the logger activates, here we simply log the temperature from a Temp sensor connected to the JNIOR by entering {{temp[1].tempf}}. Lastly, is the file retention count. All this does is decide how many files of information Logger will create before overwriting previous files, so if the number is set to 10, once Logger has created 10 files of information, next file it create will overwrite the previous 1st Logger file. This example uses 30.

Here is the resulting log on the JNIOR created from the Logger.

Creating a Task

With the Logger being created, we now need a task that uses our Logger so it will activate and record the data we want. In the Task tab, we’ll select the button “Add Task”. Once the Task is named, click on its name and select “Add Action”. The Action Dialog box with all the actions a task can perform will appear. Here we’ll select the Log Profile action, which we can use to call the Logger we created in the Task. Once the action is added, the only value to enter is the name of the Logger we just created. This will now make the Task activate the Logger each time it runs.

Task tab in Tasker

Creating a Schedule

Lastly, having a task activate a Logger is good, but it will only record when you activate it. Adding the task to a schedule will allow us to record these values on a time interval. Going to the Schedule tab, you’ll click on the “Add Schedule” button. After naming the Schedule, there will be two options to fill out. The first one appears by selecting the “Add Rule” button, which will bring up the Rule Dialog box where you can configure when the schedule is timed. For this example we will set the Schedule type to schedule so we have more options rules to pick from. The start on date is  the date for whenever you want the schedule to begin activating the task you set with it. Next is the Start Time, Repeat Every, and End Time options (End Time appears after you edit Repeat Every). We set both the Start and End Time to Midnight so that the interval is always running. Repeat Every is set to 2.5 minutes so that with the Start and End time set, the task will run every 2.5 minutes for an entire day. For the Date Selection type, we used daily in this example so we can set the Recur Every option to 1. This will make the task run every day. Lastly, after completing the Rules for the schedule, we add a task that we want the schedule to activate based off the rules we set for it, which will be the task we created in the Tasks tab.

Scheduling Tasks in Tasker

Once the Schedule is completed, the Logger will now record the Signal values of the environmental sensor as values in a .csv file from a task that is scheduled to run every 2.5 minutes, every day.