Help
  • Explore Community
  • Get Started
  • Ask the Community
  • How-To & Best Practices
  • Contact Support
Notifications
Login / Register
Community
Community
Notifications
close
  • Forums
  • Knowledge Center
  • Events & Webinars
  • Ideas
  • Blogs
Help
Help
  • Explore Community
  • Get Started
  • Ask the Community
  • How-To & Best Practices
  • Contact Support
Login / Register
Sustainability
Sustainability

Join our "Ask Me About" community webinar on May 20th at 9 AM CET and 5 PM CET to explore cybersecurity and monitoring for Data Center and edge IT. Learn about market trends, cutting-edge technologies, and best practices from industry experts.
Register and secure your Critical IT infrastructure

SBO REST Provider cannot read IO Points

SmartConnector Forum

Schneider Electric support forum about SmartConnector applications for integration of other building management systems (BMS) into EcoStruxure Building Operation.

cancel
Turn on suggestions
Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • Home
  • Schneider Electric Community
  • EcoStruxure Building
  • SmartConnector
  • SmartConnector Forum
  • SBO REST Provider cannot read IO Points
Options
  • Subscribe to RSS Feed
  • Mark Topic as New
  • Mark Topic as Read
  • Float this Topic for Current User
  • Bookmark
  • Subscribe
  • Mute
  • Printer Friendly Page
Invite a Co-worker
Send a co-worker an invite to the portal.Just enter their email address and we'll connect them to register. After joining, they will belong to the same company.
You have entered an invalid email address. Please re-enter the email address.
This co-worker has already been invited to the Exchange portal. Please invite another co-worker.
Please enter email address
Send Invite Cancel
Invitation Sent
Your invitation was sent.Thanks for sharing Exchange with your co-worker.
Send New Invite Close
Top Experts
User Count
JeffBowman
Sisko JeffBowman Sisko
164
ardak
ardak Schneider Alumni (Retired)
34
sesa180908_brid
Commander sesa180908_brid Commander
34
mike_meirovitz
Commander mike_meirovitz
21
View All

Invite a Colleague

Found this content useful? Share it with a Colleague!

Invite a Colleague Invite
Solved Go to Solution
Back to SmartConnector Forum
Solved
SteveGregory
Commander SteveGregory Commander
Commander

Posted: ‎2018-07-01 07:01 PM

0 Likes
10
1519
  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Link copied. Please paste this link to share this article on your social media post.

‎2018-07-01 07:01 PM

SBO REST Provider cannot read IO Points

I have a site with both the SBO REST Provider and the SOAP REST Provider configured. With the SBO REST Provider, I cannot read IO bus points or field controller points. Even when a Get/Containers/{id}/Children, the IO bus and BACnet interfaces do not show up. However, this works fine with the SOAP REST Provider.

Has anyone else had this issue?

Reply
  • All forum topics
  • Previous Topic
  • Next Topic

Accepted Solutions
JeffBowman
Sisko JeffBowman Sisko
Sisko

Posted: ‎2018-07-02 07:05 AM

1 Like
2
1427
  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Link copied. Please paste this link to share this article on your social media post.

‎2018-07-02 07:05 AM

Hi Steven,

The SboEwsRestProvider is based partially based on the CSP protocol that EBO uses natively to communicate between servers, while the SoapEwsRestProvider is wholey based on EWS. Because of this, while the SboEwsRestProvider has access to some additional features of the EWS Rest Provider (such as bulk get requests, and create requests), it also lacks in certain areas due to CSP being a bit non-intuitive and convoluted (for example, exactly what you are running into right now!)

Here's where this answer becomes super convoluted, and might make you wanna go back to using the SOAP Provider unless you have a very good reason to be on the SBO  one .

Because of the many unknowns with regards to objects relation to EWS types, and types in CSP, a new table was added to the Smart Connector database in 2.3. It is called ComlEwsMappings. This table maps CSP COML Types to EWS Object types. This table is used, to help some requests (for example the /Containers/{id}/Children) determine which objects that it receives from SBO should actually be returned in the response. There are some default types added to this table when the Smart Connector database is installed, but it is in no way complete. I just ran some tests, and to even find a BACnet analog value object, in a IP BACnet device in my ES, I needed to add the below 4 records to this table.

23bacnet.IPDataLink0Structure
24bacnet.BACnetApplicationProxy0Structure
25bacnet.Application0Folder
27bacnet.pointproxy.analog.Value1Double

From my perspective, this isn't ideal, and while this is the initial implementation of the SboEwsRestProvider, there has been talk about re-doing this to be more generic in the future (e.g. without the table if we can figure it out). When the SboEwsRestProvider was written, this was the best way that could be determined due to a lack of certain documentation on 'certain' protocols.

So, to determine what types you need to add to this table, I would use the following process.

For each object that is in the path of the object (for example, BACnet interface>BACnet Network>BACnet device>Application folder>Object)

  1. Make sure the object is created in SBO
  2. Open the properties of the object and expand the 'General Information' section.
  3. Mouse over the value of the 'Type' property (see below for example). Make a note of what pops up (and it is cap sensitive). See below screenshot for example of doing this on the IP Network of a BACnet Interface.
  4. Add this type to the ComlEwsMappings table like below:
    • ComlType = bacnet.IPDataLink
    • EwsType = 0
    • EwsSubType = Structure (For Containers, this isn't super important, as no real functionality is determined by the SubType of a container, for Value Items,this is very important though)

Note: Once you have completed this step for everything, restart the Smart Connector service as these mappings are only added to Memory the first time they are required, the service needs to be restarted in order for the new ones to be added to memory.

The EwsTypes and SubType options are detailed below.

0 = Container Item

     EwsSubType options for for Container Items are:

    • Folder
    • Structure
    • Device
    • Server
    • Service

1 = Value Item

     EwsSubType options for Value Items are:

    • String
    • Double
    • Long (used for Integers)
    • Boolean
    • DateTime

2 = History Item

3 = Alarm Item

Let me know of any questions you may have!


Regards,

-Jeff

See Answer In Context

Reply
Replies 10
JeffBowman
Sisko JeffBowman Sisko
Sisko

Posted: ‎2018-07-02 07:05 AM

1 Like
2
1428
  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Link copied. Please paste this link to share this article on your social media post.

‎2018-07-02 07:05 AM

Hi Steven,

The SboEwsRestProvider is based partially based on the CSP protocol that EBO uses natively to communicate between servers, while the SoapEwsRestProvider is wholey based on EWS. Because of this, while the SboEwsRestProvider has access to some additional features of the EWS Rest Provider (such as bulk get requests, and create requests), it also lacks in certain areas due to CSP being a bit non-intuitive and convoluted (for example, exactly what you are running into right now!)

Here's where this answer becomes super convoluted, and might make you wanna go back to using the SOAP Provider unless you have a very good reason to be on the SBO  one .

Because of the many unknowns with regards to objects relation to EWS types, and types in CSP, a new table was added to the Smart Connector database in 2.3. It is called ComlEwsMappings. This table maps CSP COML Types to EWS Object types. This table is used, to help some requests (for example the /Containers/{id}/Children) determine which objects that it receives from SBO should actually be returned in the response. There are some default types added to this table when the Smart Connector database is installed, but it is in no way complete. I just ran some tests, and to even find a BACnet analog value object, in a IP BACnet device in my ES, I needed to add the below 4 records to this table.

23bacnet.IPDataLink0Structure
24bacnet.BACnetApplicationProxy0Structure
25bacnet.Application0Folder
27bacnet.pointproxy.analog.Value1Double

From my perspective, this isn't ideal, and while this is the initial implementation of the SboEwsRestProvider, there has been talk about re-doing this to be more generic in the future (e.g. without the table if we can figure it out). When the SboEwsRestProvider was written, this was the best way that could be determined due to a lack of certain documentation on 'certain' protocols.

So, to determine what types you need to add to this table, I would use the following process.

For each object that is in the path of the object (for example, BACnet interface>BACnet Network>BACnet device>Application folder>Object)

  1. Make sure the object is created in SBO
  2. Open the properties of the object and expand the 'General Information' section.
  3. Mouse over the value of the 'Type' property (see below for example). Make a note of what pops up (and it is cap sensitive). See below screenshot for example of doing this on the IP Network of a BACnet Interface.
  4. Add this type to the ComlEwsMappings table like below:
    • ComlType = bacnet.IPDataLink
    • EwsType = 0
    • EwsSubType = Structure (For Containers, this isn't super important, as no real functionality is determined by the SubType of a container, for Value Items,this is very important though)

Note: Once you have completed this step for everything, restart the Smart Connector service as these mappings are only added to Memory the first time they are required, the service needs to be restarted in order for the new ones to be added to memory.

The EwsTypes and SubType options are detailed below.

0 = Container Item

     EwsSubType options for for Container Items are:

    • Folder
    • Structure
    • Device
    • Server
    • Service

1 = Value Item

     EwsSubType options for Value Items are:

    • String
    • Double
    • Long (used for Integers)
    • Boolean
    • DateTime

2 = History Item

3 = Alarm Item

Let me know of any questions you may have!


Regards,

-Jeff

Reply
SteveGregory
Commander SteveGregory Commander
Commander

Posted: ‎2018-07-02 04:22 PM

0 Likes
0
1427
  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Link copied. Please paste this link to share this article on your social media post.

‎2018-07-02 04:22 PM

I think I understand....So does this apply to IO points also? I would have thought that the table entries for the IO bus would already exisit??

Reply
SteveGregory
Commander SteveGregory Commander
Commander

Posted: ‎2018-07-04 03:02 AM

0 Likes
0
1427
  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Link copied. Please paste this link to share this article on your social media post.

‎2018-07-04 03:02 AM

So I have created the following entries:

23 bacnet.IPDataLink 0 Structure

24 bacnet.BACnetApplicationProxy 0 Structure

25 bacnet.Application 0 Folder

26 bacnet.pointproxy.analog.Value 1 Double

27 bacnet.MSTPDataLink 0 Structure

28 bacnet.pointproxy.analog.Input 1 Double

29 bacnet.pointproxy.digital.Input 1 Boolean

30 io.IOBus 0 Folder

31 io.UI16 0 Device

32 io.DI16 0 Device

33 io.AOV8 0 Device

34 io.DOFA12 0 Device

35 io.point.VoltageInput 1 Double

36 io.point.DigitalInput 1 Boolean

37 io.point.TemperatureInput 1 Double

38 io.point.CurrentInput 1 Double

39 io.point.CounterInput 1 Double

40 io.point.VoltageOutput 1 Double

41 io.point.CurrentOutput 1 Double

42 io.point.DigitalOutput 1 Boolean

...and points on the BACnet interface seem to work fine, but I am getting an error when I try to read the IO bus. I can now discover the IO Bus as a Child of the Server, but when I try to get Containers of the IO Bus, i get a 'not found error', and it seems to create a 'contract violation' in the log. I have tried changing the EwsSubtype for the IO bus and IO modules but still the same result. See log below.

2018-07-04 19:42:33.1616,Error,CspClient,StevenGr,Code=NoUserSession, DisplayInfo='The user session is lost, no specific reason has been set.', TechnicalInfo='[error created at 'SE.WorkStation.Communication.SP1WP3.CspProxy+CreateWebExceptionResult']', Module=Workstation, ModuleCode=0

   at Mongoose.Csp.CspClient.ExecuteAndLogCall[TRequest,TResponse,TRecordType](String methodName, TRequest request, Func`2 methodToLog)

   at Mongoose.Csp.CspClient.<>c__DisplayClass25_0.<RetrieveObject>b__0(Object <p0>)

   at Mongoose.Csp.CspClient.ExecuteAndLogCall[TRequest,TResponse](String methodName, TRequest request, Func`2 methodToLog)

,["54D761B736D04236B00AF72E4F90D8B9"],

2018-07-04 19:42:33.1616,Error,RestServe,StevenGr,{"Message":"Value Id /20 MartinPlace/Servers/AS-21-1/"},IO Bus not found

2018-07-04 19:42:34.1908,Error,CspClient,imcd,Code=CommunicationContractViolation, DisplayInfo='ASN.1 Decode error @ offset 0:

Unexpected end-of-buffer encountered.', TechnicalInfo='[error created at 'SE.WorkStation.Communication.SP1WP3.Commands.CommunicationCommand`1+SendCspCommandRequestAndDecodeAsn1']', Module=Workstation, ModuleCode=0

   at Mongoose.Csp.CspClient.ExecuteAndLogCall[TRequest,TResponse,TRecordType](String methodName, TRequest request, Func`2 methodToLog)

,["50ABD369EDC843EE8F89F8C1CC136486"],

2018-07-04 19:42:34.1908,Error,CspClient,imcd,Code=CommunicationContractViolation, DisplayInfo='ASN.1 Decode error @ offset 0:

Unexpected end-of-buffer encountered.', TechnicalInfo='[error created at 'SE.WorkStation.Communication.SP1WP3.Commands.CommunicationCommand`1+SendCspCommandRequestAndDecodeAsn1']', Module=Workstation, ModuleCode=0

   at Mongoose.Csp.CspClient.ExecuteAndLogCall[TRequest,TResponse,TRecordType](String methodName, TRequest request, Func`2 methodToLog)

   at Mongoose.Csp.CspClient.<>c__DisplayClass25_0.<RetrieveObject>b__0(Object <p0>)

   at Mongoose.Csp.CspClient.ExecuteAndLogCall[TRequest,TResponse](String methodName, TRequest request, Func`2 methodToLog)

,["3B617EEC85694267BF537F3ED5660615"],

Reply
JeffBowman
Sisko JeffBowman Sisko
Sisko

Posted: ‎2018-07-05 08:05 AM

0 Likes
0
1427
  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Link copied. Please paste this link to share this article on your social media post.

‎2018-07-05 08:05 AM

Hi Steven,

I have tried this out myself, and I was able to discover an IO Bus with no problems using the mappings you posted above. If you haven't I would try to restart your Smart Connector service. The mappings are lazily loaded into memory the first time they are required, so if you added them to the DB table after they have already been accessed, they will not be updated again until the Smart Connector service is restarted (as that clears the in-memory cache.)

In case this was your issues, I have added this step to my initial post above.

If this doesn't fix your issue, let me know, and I will dig deeper.

Regards,

-Jeff

Reply
SteveGregory
Commander SteveGregory Commander
Commander

Posted: ‎2018-07-05 12:10 PM

0 Likes
2
1427
  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Link copied. Please paste this link to share this article on your social media post.

‎2018-07-05 12:10 PM

I tried restarting several times with no luck. I can discover the io bus but not the modules or points under it. If I get values of a point, it causes an error and I have to get another token before anything will work. Will give it another go.

Reply
JeffBowman
Sisko JeffBowman Sisko
Sisko

Posted: ‎2018-07-05 01:27 PM

0 Likes
1
1427
  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Link copied. Please paste this link to share this article on your social media post.

‎2018-07-05 01:27 PM

Hi Steven,

What version of SBO is installed on the AS? I am wondering if there is some version mismatch somewhere.

Regards,

-Jeff

Reply
SteveGregory
Commander SteveGregory Commander
Commander

Posted: ‎2018-07-08 04:47 PM

0 Likes
0
1427
  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Link copied. Please paste this link to share this article on your social media post.

‎2018-07-08 04:47 PM

We are using SBO 1.9.3. IO modules are returning values now, it looks like the additional entries in the SQL table did fix the problem. Will continue with the integration testing and let you know if we have any further issues. Thanks Jeff Bowman​

Reply
SteveGregory
Commander SteveGregory Commander
Commander

Posted: ‎2018-08-15 06:41 PM

0 Likes
1
1427
  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Link copied. Please paste this link to share this article on your social media post.

‎2018-08-15 06:41 PM

Thanks Jeff. Note Get/Trends function seems to have the same issue and only searches the ES, not the Automation servers.

Reply
JeffBowman
Sisko JeffBowman Sisko
Sisko

Posted: ‎2018-08-16 07:24 AM

1 Like
0
1427
  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Link copied. Please paste this link to share this article on your social media post.

‎2018-08-16 07:24 AM

Thanks Steven,

The fix that I will be putting in will result in this being fixed for all cases. The fix included adding a new property to the SboEwsRestProvider called "SearchInSubservers'. Because I added a new property, this will result in your needing to recreate your SboEwsRestProvider so that you can get access to this property. In any case though, the reason for adding a property instead of making it always search in sub servers, is performance. Searching in an ES and ASes can be quite a long process, and it may not be necessary.

I plan on releasing Smart Connector with this change today. It will be announced on this exchange forum when it has been released.

As far as whether or not the SBO Rest Provider can read properties, it cannot today, as it only reads objects, not properties.


Regards,

-Jeff

Reply
SteveGregory
Commander SteveGregory Commander
Commander

Posted: ‎2018-08-16 07:27 AM

0 Likes
0
1427
  • Mark as New
  • Bookmark
  • Subscribe
  • Mute
  • Subscribe to RSS Feed
  • Permalink
  • Print
  • Email to a Friend
  • Report Inappropriate Content

Link copied. Please paste this link to share this article on your social media post.

‎2018-08-16 07:27 AM

Thanks Jeff.

Reply
Preview Exit Preview

never-displayed

You must be signed in to add attachments

never-displayed

 
To The Top!

Forums

  • APC UPS Data Center Backup Solutions
  • EcoStruxure IT
  • EcoStruxure Geo SCADA Expert
  • Metering & Power Quality
  • Schneider Electric Wiser

Knowledge Center

Events & webinars

Ideas

Blogs

Get Started

  • Ask the Community
  • Community Guidelines
  • Community User Guide
  • How-To & Best Practice
  • Experts Leaderboard
  • Contact Support
Brand-Logo
Subscribing is a smart move!
You can subscribe to this board after you log in or create your free account.
Forum-Icon

Create your free account or log in to subscribe to the board - and gain access to more than 10,000+ support articles along with insights from experts and peers.

Register today for FREE

Register Now

Already have an account? Login

Terms & Conditions Privacy Notice Change your Cookie Settings © 2025 Schneider Electric

This is a heading

With achievable small steps, users progress and continually feel satisfaction in task accomplishment.

Usetiful Onboarding Checklist remembers the progress of every user, allowing them to take bite-sized journeys and continue where they left.

of