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.

cancel
Showing results for 
Search instead for 
Did you mean: 
SOLVED

How to run Python-scripts on the ctrlX CORE via Node-RED

How to run Python-scripts on the ctrlX CORE via Node-RED

LunatiX
New Contributor

How can I run/activate a python script via node-red?

With the description above (YARC) it's possible for me. But I tried it with node-red and our ctrlx-datalayer-request node from node-red-contrib-ctrlx-automation. I try the following:

LunatiX_2-1618912922293.png

 

LunatiX_0-1618912849001.png

 

LunatiX_1-1618912883774.png

I did some tests with objects and with string as payload. But I always get the error message:

LunatiX_3-1618913025682.png

Any hint's? Thanks.

Additional question...

Do we have to run/activate a python script after every reboot of the control in this way? Or de we provide a mecanism to automaticly run a python script  inside the "active solution"? For me it make no sense to program python scripts, which I have to run/activate with another program/interface (REST, node-red, C++, ...).

 

2 REPLIES 2

CodeShepherd
Community Moderator
Community Moderator

First you have to choose the payload as "value + type (json)" because you are trying to handle over an complex data type.

CodeShepherd_0-1618918497768.png

 

Second your payload including the object have to look like this:

 

var newMsg = {};
newMsg.payload = {};
newMsg.payload.value = {"name":"MyInstance3","language":"python"};
newMsg.payload.type = "object";
return newMsg;

 

EDIT:

At the moment script instances are not persistent and so get deleted while a reboot. Also there is no automatism to start and run a script. We are already aware of this topic and are working on it.

See also examples in "node-red-contrib-ctrlx-automation". They can be imported in Node-RED directly:

Node-RED import ctrlX AUTOMATION examplesNode-RED import ctrlX AUTOMATION examples

drschiffler
Established Member

Hi,

you can have the functionality of a persistent python instance by using the init script.

See this post here

Icon--AD-black-48x48Icon--address-consumer-data-black-48x48Icon--appointment-black-48x48Icon--back-left-black-48x48Icon--calendar-black-48x48Icon--center-alignedIcon--Checkbox-checkIcon--clock-black-48x48Icon--close-black-48x48Icon--compare-black-48x48Icon--confirmation-black-48x48Icon--dealer-details-black-48x48Icon--delete-black-48x48Icon--delivery-black-48x48Icon--down-black-48x48Icon--download-black-48x48Ic-OverlayAlertIcon--externallink-black-48x48Icon-Filledforward-right_adjustedIcon--grid-view-black-48x48IC_gd_Check-Circle170821_Icons_Community170823_Bosch_Icons170823_Bosch_Icons170821_Icons_CommunityIC-logout170821_Icons_Community170825_Bosch_Icons170821_Icons_CommunityIC-shopping-cart2170821_Icons_CommunityIC-upIC_UserIcon--imageIcon--info-i-black-48x48Icon--left-alignedIcon--Less-minimize-black-48x48Icon-FilledIcon--List-Check-grennIcon--List-Check-blackIcon--List-Cross-blackIcon--list-view-mobile-black-48x48Icon--list-view-black-48x48Icon--More-Maximize-black-48x48Icon--my-product-black-48x48Icon--newsletter-black-48x48Icon--payment-black-48x48Icon--print-black-48x48Icon--promotion-black-48x48Icon--registration-black-48x48Icon--Reset-black-48x48Icon--right-alignedshare-circle1Icon--share-black-48x48Icon--shopping-bag-black-48x48Icon-shopping-cartIcon--start-play-black-48x48Icon--store-locator-black-48x48Ic-OverlayAlertIcon--summary-black-48x48tumblrIcon-FilledvineIc-OverlayAlertwhishlist