FORUM CTRLX AUTOMATION
ctrlX World Partner Apps for ctrlX AUTOMATION
Dear Community User! We have started the migration process.
This community is now in READ ONLY mode.
Read more: Important
information on the platform change.
12-11-2023 04:20 PM
Is there a system variable or an option to read the name of the loaded/selected recipe and write it to a PLC variable?
Thanks in advance.
Solved! Go to Solution.
12-11-2023 04:32 PM
No, because WebIQ does not know about any recipe status - it simply applies all of the values in the recipe to the defined items - nothing more.
You can however simply add an item to your recipe that contains a specific name you want to display as the "currently running recipe"
12-19-2023 10:41 AM
Hello webiq-sk,
That's what I had thought, but the customer doesn't like it very much because you have to make sure that you write the same name in both places to avoid confusion.
Thanks for the reply.
12-19-2023 03:33 PM - edited 12-19-2023 03:34 PM
You can also use the Visuals API to access recipe data, including the name. Here is an example of printing out all stored recipes.
(function () {
/**
* replace module name with a custom name for the local-script.
*
* All local-script should be attached to the "custom.ls" package.
* If more than one script is required for an application, a common root package
* should be created (e.g. "custom.ls.customerName.*").
*/
var MODULE_NAME = "getRecipeName",
ENABLE_LOGGING = false,
RECORD_LOG = false,
logger = shmi.requires("visuals.tools.logging").createLogger(MODULE_NAME, ENABLE_LOGGING, RECORD_LOG),
fLog = logger.fLog,
log = logger.log,
module = shmi.pkg( MODULE_NAME );
// MODULE CODE - START
/* private variables */
/* private functions */
function listTemplatesCallback(response,err){
if(!err){
for(template in response.templates){
rm.listRecipes(response.templates[template].id,{},listRecipesCallback);
}
} else {
console.log("Error getting templates: " + err);
}
};
function listRecipesCallback(response,err){
if(!err){
for(recipe in response.recipes){
console.log(response.recipes[recipe].name);
}
} else {
console.log("Error getting recipes: " + err);
}
};
/**
* Implements local-script run function.
*
* This function will be called each time a local-script will be enabled.
*
* @param {LocalScript} self instance reference of local-script control
*/
module.run = function (self) {
// Get recipe manager
rm = shmi.visuals.session.RecipeManager;
// Retrieve all templates and corresponding recipes
rm.listTemplates({}, listTemplatesCallback);
//Place your Code here
/* called when this local-script is disabled */
self.onDisable = function () {
self.run = false; /* from original .onDisable function of LocalScript control */
};
};
// MODULE CODE - END
fLog("module loaded");
})();
10-28-2024 04:35 PM
Hello Sgilk,
Your script works, but is there any option to be able to read the index or row number selected in the table and use your Script or in UI-Action with the selected pointer.
I am interested in reading the picture data.
Thanks.
10-28-2024 08:30 PM
@David08 ,
There are not configurable UI actions for the Recipe List widget. You will have to query for the element in Javascript and programatically add event handlers if you want to go that route.
10-31-2024 05:16 PM
Thanks Sgilk for the reply,
I don't have the necessary knowledge in JavaScript with event handlers to do the function. Only the client asks me to write in a PLC variable of type String the name of the recipe applied when applying the recipe.
10-31-2024 05:24 PM