Buttons - ResgreenGroup/Botway-Documentation GitHub Wiki
Current Location: Home->Customizing BotWay->Buttons
Buttons are peripheral devices set up to interact with BotWay and its connected robots. Buttons can be configured to perform a variety of functions like adding a job, releasing a robot, or managing staging areas. Buttons are intended to be used by workers that need to interact with robots. Click Here to visit the accessories page about RGGI's Pushbuttons.
The "Edit Buttons" button on the toolbar allows for Buttons to be configured to perform actions within BotWay.
![](https://private-user-images.githubusercontent.com/104447688/250612161-7c89c9f4-c3f0-4c0b-a348-314c86948216.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyODc0NzMsIm5iZiI6MTczOTI4NzE3MywicGF0aCI6Ii8xMDQ0NDc2ODgvMjUwNjEyMTYxLTdjODljOWY0LWMzZjAtNGMwYi1hMzQ4LTMxNGM4Njk0ODIxNi5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQxNTE5MzNaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT02YjY2ODI5ZDg0MGIwMGI4ZTBmYTg5ZDA2NTY4MTM1Y2E3NzVmMjdlZjdiMmUzNmZkOWM5MTlmZDVkNzQ0MmIzJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.pFAZ-zhQwDSS3YlQuY6t6hYlNavdbmQRHD0g2O_0sd8)
After logging in, click the "Edit" Button and then hit the "Buttons" button to display the edit dialog for buttons.
![](https://private-user-images.githubusercontent.com/104447688/250610096-af4cf5f3-b92b-455e-9656-c7a5ded6f076.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyODc0NzMsIm5iZiI6MTczOTI4NzE3MywicGF0aCI6Ii8xMDQ0NDc2ODgvMjUwNjEwMDk2LWFmNGNmNWYzLWI5MmItNDU1ZS05NjU2LWM3YTVkZWQ2ZjA3Ni5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQxNTE5MzNaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT00OTYzZjUwMWVkOTk2NTc1ODNlNjZmNGRkMTRjMGVlODkwNzM3NWNiNGZhN2JkMDg4YjkwYjc4N2I2N2QwODJmJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.ol0jg_MigmNlsyGuBKgIL8QGoeWBk6mprwdUx4oaZ8o)
Every button configured in the "Buttons" configurator must be given a button type, a device ID number, and a button number; RGGI pushbuttons and footpedals may contain multiple pedals or buttons on the actual device. This third number specifies which button or pedal on a device will trigger the specific action being created. These fields are visible at the top right of the button dialog and take the form of dropdown menus. A list of Buttons types that can currently be configured is listed below.
A button with the type "Job Add" will add a job to a job queue in BotWay.
![](https://private-user-images.githubusercontent.com/104447688/250609506-7a5e19ee-cf8c-444c-95ec-39cfc1c7dcd8.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyODc0NzMsIm5iZiI6MTczOTI4NzE3MywicGF0aCI6Ii8xMDQ0NDc2ODgvMjUwNjA5NTA2LTdhNWUxOWVlLWNmOGMtNDQ0Yy05NWVjLTM5Y2ZjMWM3ZGNkOC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQxNTE5MzNaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1lN2I0NDQ2OTJlZGY1NmYyNjI4ZGVkNGMzOTViMzc4MDY2ODdhYjYyNWM4MjNhODk3Zjg4NGVlMDc2M2U3OGM0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.5FXVwiXBygB1p5kRj6KYAvuKZkrHnzFH6JKuQd3FhLk)
Queue
specifies which job queue to add the job to when the button is pressed. It is limited to queues from the jobdata.xml file.
Type
specifies the inclusivity of a job between Concurrent, Consecutive, and Exclusive.
Start Route
specifies what route to switch to when the job is accepted.
End Route
along with End Tag
specify the combination that will trigger a status change in the job from active to whatever the user sets in the Status at End
field.
Start Status
allows the user to specify the state of a job when a robot accepts it. The robot will immediately begin jobs whose starting state have been set to "Active." When a robot accepts a job whose starting status has been set to "Staged," it will not immediately start the job; instead, the robot will wait to receive an external command that releases it.
Status at end
specifies what the job status will change to when the robot reaches the end tag while on the end route.
Completor ID
and Completor Number
fields are only used when a job has a status at end of "Staged" instead of "Completed." These fields specify the Device ID and button/pedal number on the device that will change the job status from "Staged" to "Completed."
Stage time limit
used on Jobmonitor application to flag jobs that are in the "Staged" state for too long.
Buttons of this type are used to complete staged jobs.
![](https://private-user-images.githubusercontent.com/104447688/250609603-9dd81122-ee49-401d-ba1c-f53cac8a984e.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyODc0NzMsIm5iZiI6MTczOTI4NzE3MywicGF0aCI6Ii8xMDQ0NDc2ODgvMjUwNjA5NjAzLTlkZDgxMTIyLWVlNDktNDAxZC1iYTFjLWY1M2NhYzhhOTg0ZS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQxNTE5MzNaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wZDgyZGRjNGJjYzE1MDliZmM4Y2FjNzc3OThmOGI3NWZjMmMxZGM4NDE1NzgyZjVlMmE2MTBiZTU4ZjI1ZTcyJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.pT6k-vnqVF--qZRrJGeZK27Wp744Yerv3F-r1-ACwGM)
When a job is added, its status at the end may be set to "Staged" instead of "Completed." These staged jobs require input from a "Job Complete" button to change their status to "Completed." The Device ID and button/pedal number must match the Completor ID and Completor number of an existing job. When a robot reaches an end tag while on an end route of a job that has a completor button, the job will not be completed until the Completor button is pressed.
Buttons with this type have the simple function of releasing a robot from an indefinite hold by sending it a "Go" command when the button is pressed.
![](https://private-user-images.githubusercontent.com/104447688/250609646-28c1c892-0755-4ce7-b212-caa6025b1310.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyODc0NzMsIm5iZiI6MTczOTI4NzE3MywicGF0aCI6Ii8xMDQ0NDc2ODgvMjUwNjA5NjQ2LTI4YzFjODkyLTA3NTUtNGNlNy1iMjEyLWNhYTYwMjViMTMxMC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQxNTE5MzNaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wNmY5ZDQyYzBlYTc5YmFjMTNjMTMwZjAxYjQ2NGE4NGJlMmUxNjM4N2FhNzUzNjQzYWQyYzg0ZDNkODJlYjA2JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.giQZ3RkP7roOQ_U2gdK40nN_BLk7VNUyv538a_QIlHo)
Station Tag
specifies what tag this button will release from.
Release Route
specifies a new route to release the robot to. If left blank, the robot will continue on its current route.
When a button is assigned this type, it will pause a job queue. Paused queues will not distribute any more jobs until resumed, but jobs in progress will still be completed and new jobs may still be added to the queue.
![](https://private-user-images.githubusercontent.com/104447688/250609635-889c3ebe-73be-4f1c-a163-35ed92466a8a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyODc0NzMsIm5iZiI6MTczOTI4NzE3MywicGF0aCI6Ii8xMDQ0NDc2ODgvMjUwNjA5NjM1LTg4OWMzZWJlLTczYmUtNGYxYy1hMTYzLTM1ZWQ5MjQ2NmE4YS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQxNTE5MzNaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04ZjM0YTBiODJhYzM4NmE2NzI4MWI4Y2Q0NDI4Mzc4M2NkMDlhMjU5NDMzZjc0YzMxMWQ5OTliYWM3NDQ4ZWYxJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.rcbelsUFUYgnvFMRUT85bN_IpC8JjRHiyC2QtxPhBCQ)
Queue Name
specifies which Queue to pause.
A button of this type will resume a paused job queue when pressed.
![](https://private-user-images.githubusercontent.com/104447688/250609653-bb4e65c7-50e8-4ded-bac4-64aba21403c1.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyODc0NzMsIm5iZiI6MTczOTI4NzE3MywicGF0aCI6Ii8xMDQ0NDc2ODgvMjUwNjA5NjUzLWJiNGU2NWM3LTUwZTgtNGRlZC1iYWM0LTY0YWJhMjE0MDNjMS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQxNTE5MzNaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT03OWFhMzkwMTY0YjRjZWYyMzM1ODFlN2M3ZTRkYTBhOTc5NjVlNjk4YmYxMmZmNDIyZWY4Nzg5MTUxNDAxOTE3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.Xt7TmHZ05FpcPrthl0O72I9IqH1oGFSZJfm21P0UqUU)
Queue Name
specifies which Queue to resume.
Buttons with this type will immediately send a "stop" command to every robot connected to BotWay.
![](https://private-user-images.githubusercontent.com/104447688/250609696-0c66cd36-c45c-4b68-afa2-ed23d720d566.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyODc0NzMsIm5iZiI6MTczOTI4NzE3MywicGF0aCI6Ii8xMDQ0NDc2ODgvMjUwNjA5Njk2LTBjNjZjZDM2LWM0NWMtNGI2OC1hZmEyLWVkMjNkNzIwZDU2Ni5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQxNTE5MzNaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1hZjk4M2VkNjY0NTA2ZjczMjk0MWRhOWY3NGVjNGE3OGIwZjlmZjExY2VkMGMwOTRkOTU2NDQ2ZDQ2ODFiMDY5JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.DfuQpohElXXhOZSO1HCU_vPh-XxIfTmeSQ6-6uLWfo4)
When buttons are assigned this type, they become activation components for triggers. A trigger may have the state of a button as a token in its conditional statement.
![](https://private-user-images.githubusercontent.com/104447688/250609708-941f2527-227e-4661-87ad-56e359a384d5.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyODc0NzMsIm5iZiI6MTczOTI4NzE3MywicGF0aCI6Ii8xMDQ0NDc2ODgvMjUwNjA5NzA4LTk0MWYyNTI3LTIyN2UtNDY2MS04N2FkLTU2ZTM1OWEzODRkNS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQxNTE5MzNaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1kODFiOWVkMWM1MmZlOTE2NmFjZDgzYTBjMjY1ZDNlMzg2NGRlNjgyOGJiYmZjN2NjYTkzNzA2ZWU0MWNjNjBiJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.f8HcipHLEwy45F7MS6nxI2ch6-zSE3Pz9vsghA11SqI)
Exclusively used with the JobMonitor tablet extension of BotWay. See the JobMonitor page for more details.
![](https://private-user-images.githubusercontent.com/104447688/250609677-22ffc2b6-e316-4de0-94a8-e43744396b13.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkyODc0NzMsIm5iZiI6MTczOTI4NzE3MywicGF0aCI6Ii8xMDQ0NDc2ODgvMjUwNjA5Njc3LTIyZmZjMmI2LWUzMTYtNGRlMC05NGE4LWU0Mzc0NDM5NmIxMy5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjExJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIxMVQxNTE5MzNaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT0wYmI1YmY0MDhmYTgzNWIzZTY2ZTVlYTI5OWYxYjgyM2MxOTVkZjljMDYwYTA2NWVjOGIzNTk0NGUwOWUzYjc1JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.RKa1kv18w6H0gAwSBUCrTAqTq3SATvQHR0bEm9nNw9o)
Job Status Change
specifies new status for associated job
Give Go
specifies if the Robot running the associated job should be given a Go command after job status is changed
<buttonList rev="1">
<button>
<id>VD000001.1</id>
<type>JOB_ADD</type>
<queue>Q1-Line</queue>
<jobType>CONCURRENT</jobType>
<jobStartTag>100</jobStartTag>
<jobStartRoute>10</jobStartRoute>
<jobEndRoute>30</jobEndRoute>
<jobEndTag>201</jobEndTag>
<startJobStatus>ACTIVE</startJobStatus>
<jobStatusAtEndTag>COMPLETED</jobStatusAtEndTag>
<jobCompletorId/>
<stationTimeLimit>10</stationTimeLimit>
</button>
<button>
<id>VD000001.2</id>
<type>JOB_COMPLETE</type>
</button>
<button>
<id>VD000001.3</id>
<type>RELEASE</type>
<tagId>A10</tagId>
<releaseRoute>20</releaseRoute>
</button>
<button>
<id>VD000001.4</id>
<type>PAUSE_JOBS</type>
<queue>Q1-Line</queue>
</button>
<button>
<id>VD000001.5</id>
<type>RESUME_JOBS</type>
<queue>Q1-Line</queue>
</button>
<button>
<id>VD000001.6</id>
<type>TRIGGER</type>
</button>
<button>
<id>VD000001.7</id>
<type>STOP_ALL</type>
</button>
<button>
<id>VD000001.8</id>
<type>JOB_STATUS</type>
<newJobStatus>STAGED</newJobStatus>
<goAfterJobStatus>true</goAfterJobStatus>
</button>
</buttonList>