Community Tip - Did you get an answer that solved your problem? Please mark it as an Accepted Solution so others with the same problem can find the answer easily. X
Has anyone seen any toolsets for working with these new Industrial Things, specifically talking about creating and configuring bound properties without just clicking through the process in "New Composer"?
Essentially, IIRC, the properties on an Industrial Thing come through a Industrial Gateway Thing, but in the end, if you look at the XML, the Industrial Thing itself just ends up with remote properties with some new aspects related to its Industrial Gateway and scan rate etc. I was expecting SetRemotePropertyBinding() to have additional inputs for these new aspects, or maybe a similar service with a different name... found nothing.
Even better, is there support for these new Things from within the Java Extension SDK?
Any help would be appreciated, thanks!
Alex
Solved! Go to Solution.
Thanks all.
After some renewed digging, I found it! Turns out I was not fully up to date. The 8.0 platform (and extension SDK) provides a new SetRemotePropertyBinding that takes a JSON input called "aspects," which is the critical element. Now that being said, you have to know what you are doing to know what to put in there (unless there is some documentation I missed... possible). But still, I've been asking for a few months since the new Kepware/Industrial Things model came out (7.4 I think?), and its here now, so thanks!
This is basically the only toolset I critically needed, but if I run into others I will add on here or link it or something.
Here's a screengrab of the new service for reference.
- Alex
Hi, Alex.
We'll get a person who can help you find an answer to this.
Steven Marchessault , is this something you can help with?
-- Craig A.
Thanks Craig, I'll be interested to see if what I'm looking for exists anywhere.
As an update, my suspicion is that it does NOT exist anywhere for right now. Looking at the Industrial Things CSV importer(available on the marketplace), it simply builds the xml with the proper aspects and then imports the entities. While I'm sure this CSV use case has its place, you can pretty easily see the need for a toolset that builds the property bindings from runtime JS (or, again, in the Java extension SDK) on already existing Things. Yes, you could write a service to edit the XML or JSON metadata and then import or POST that, but obviously thats not ideal or even workable in a production environment.
If I am correct and this does type of toolset does not exist, I would love to bend R&D's ear on it. It seems critical to the new model, and I would be shocked if I'm the only one wanting this.
I don't know if this is what you are searching for, but basically to Add Up Bindings with Kepware you must use, AddItems service on RemoteKepware thing which expects a datashape with name KEPAddItems which are the aspects that you can set.
This at least until 7.4 and 8.0, I don't know if this versions with the new connectivity work the same ( but should be similar ).
Carles.
Hi Alex,
Adding to Carles' point above, it appears you already familiar with using the NextGen Composer (ThingWorx 8.0) to connect with the newest release of KEPServerEX (v6.2), as an Industrial Gateway Thing. There is a new service available in ThingWorx when connecting these versions:
GetDiagnosticDigest. This is an Industrial Gateway service that allows validation of either a Static or Dynamic KEPServerEX tag, and is a means of testing in advance of property creation.
Going back to your original question, I cannot offer much input on the new Java Extension SDK. At the very least, I am not yet aware of a use-case with that extension that leverages the Industrial Gateway bindings.
However, it seems in broader sense, you are interested in leveraging the capabilities of ThingWorx with the data that is being brought in from KEPServerEX. Is this true? If so, you might consider trying our newly released ThingWorx Manufacturing Apps, which have been designed for exactly this purpose. You can start with this page:
Getting Started with the ThingWorx Manufacturing Apps Community
Follow through with the steps outlined in that document to register with the portal, download and install the Manufacturing Apps, and more.
Please let us know your thoughts, or if you have additional questions about any of this.
Best regards,
Steven M
Thanks all.
After some renewed digging, I found it! Turns out I was not fully up to date. The 8.0 platform (and extension SDK) provides a new SetRemotePropertyBinding that takes a JSON input called "aspects," which is the critical element. Now that being said, you have to know what you are doing to know what to put in there (unless there is some documentation I missed... possible). But still, I've been asking for a few months since the new Kepware/Industrial Things model came out (7.4 I think?), and its here now, so thanks!
This is basically the only toolset I critically needed, but if I run into others I will add on here or link it or something.
Here's a screengrab of the new service for reference.
- Alex
I guess its worth mentioning that you easily figure out what you need to input for aspects by looking at a sample result from GetRemotePropertyBinding, which now returns the aspects as JSON blob as you would expect...
Ex:
}
"industrialDataType": "Float",
"tagAddress": "Channel1.Device1.FilterLife",
"scanRate": 1000,
"tagType": "Static",
"readOnly": "false"
}
Hi, after reading this discussion, I tried the suggestions but was unsuccessful in making the connection. I was hoping to see if anybody did manage to successfully make a connection to the Kepware Thing via services instead of using the New Composer --> discover method.
This is my attempt, which failed:
I created a new RemoteThing with remote property named 'dc1Temp2' with propertyType INTEGER. I left everything else blank. Then I added this service to the RemoteThing.
var aspects = {
"industrialDataType": "Short",
"tagAddress": "MyChannel.MyMachine.DC1_Temp2",
"scanRate": 1000,
"tagType": "Static",
"readOnly": "true"
}
var params = {
propertyName: 'dc1Temp2' /* STRING */,
pushThreshold: 0 /* NUMBER */,
aspects: aspects /* JSON */,
foldType: undefined /* STRING */,
sourcePropertyName: undefined /* STRING */,
timeout: 0 /* INTEGER */,
pushType: 'VALUE' /* STRING */,
cacheTime: undefined /* INTEGER */
};
me.SetRemotePropertyBinding(params);
The code would work if it was on a RemoteThing which was already binded via New Composer --> discover.
But if I use the same piece of code on a new RemoteThing, it doesn't work. I was hoping the tag address would be able to help it identify.
But I realise that it probably isn't aware of the KepServerEx Thing (representing Kepware). How do I actually make the connection?
Even using the UI to create a remote property, I believe it is possible too, but I couldn't get it to work. I believe remote prop name works the same as the tagAddress property in aspects. But I must be connected first. The "connection" to the KepServerEx Thing is the missing puzzle I presume.
I notice that after new composer binds the entity via new composer --> discover, you can see the remote property on clicking manage bindings.
Whereas this is not the case when it isn't connected (e.g. a new RemoteThing) create from composer (not new composer).
Any clue on how to get it connected without using the new composer --> discover?
Tough for me to say exactly whats causing you trouble, but it might be worth a quick review of your model. Make sure you have two things:
1. A Thing that implements the IndustrialThing ThingShape - this represents your end device in the field, lets call this DeviceThing
2. A Thing that inherits the IndustrialGateway ThingTemplate - this represents your kepserver in the field, lets call this GatewayThing
Now, make sure that your DeviceThing has its "IndustrialThing" property (that comes with the IndustrialThing ThingShape) set to the GatewayThing.
I know the wording here is not ideal. In my mind, that "IndustrialThing" property really needs to be named "IndustrialGateway"....
Once you have this setup, go ahead and run that SetRemoteProperty code from the DeviceThing.
Let me know how you make out here, my suspicion is that you do not have that IndustrialThing property set on your DeviceThing, or something like that.
FWIW I can confirm that I have it working without using New Composer at all.
This was it! Thanks so much Alex! I didn't notice there is the IndustrialThing ThingShape. Thanks so much for your guidance! This is great
Have an awesome week ahead