Loading ...
Sorry, an error occurred while loading the content.

Update to BACnet/WS extensions - Add-135-2010am

Expand Messages
  • Dave Robin
    XML and IT members, At long last, here is an updated version of the BACnet/WS proposal. This incorporates all the feedback received at, and since, the Chicago
    Message 1 of 2 , Apr 11, 2012
    • 0 Attachment
      XML and IT members,

      At long last, here is an updated version of the BACnet/WS proposal.  This incorporates all the feedback received at, and since, the Chicago meeting.  I believe it addresses all the comments and overall I'm pretty happy with the way it has gelled. More powerful and less complicated is a good combination.  (of course, "less complicated" is in the eye of the beholder).  I've tried to follow the so called "Einstein's razor" principle that the best solution is the one that is as simple as possible, but no simpler.  

      I pursued consistency, not for consistency's sake, but to reduce the amount of text it takes to explain the solution.  But it's still pretty big. I think the document has grown and has a lot of redundancy that could be eliminated with some restructuring, but I've spent all my time so far on content, not the presentation. And there may be some dark corners that I haven't read in a while that are now incorrect.  I gave it a final once over read today, but I could have missed something.

      I'm excited to say that we've been invited to submit this for review by a team at Berkeley as well, who are doing amazing things with RESTful web services for energy and building data from their many systems on their campus and over at LBNL.   I greatly look forward to their feedback.

      Here is the list of changes since Chicago:

      Major Changes..
      • Overhauled and simplified log buffers and csv digests: only two formats now, and you can poll and  subscribe to the digests (hourly/daily, etc)
      • Added unified/simple way to read/write/subscribe to multiple data paths in both plain text and CSML. (à la RPM/WPM/SCOVM)
      • Added talk about "physical" vs "logical" views and provide a standard way to <link> between the views
      • Added section describing all the ways to "Read Range" of various things, including a "By Sequence' capability for BACnet log buffers
      • Really removed SOAP: Replaced the "N.12 Services" clause with a "N.12 Migrating from SOAP Services" clause showing how to do everything the new way. Every SOAP service now has a direct and simple REST equivalent
      • Reproduced the capabilities of the simple plain text getHistoryPeriodic() and added back the requested "trend period statistics" now that we have an easy way to do it.
      • Eliminated ".changes" node by defining that any feed is subscribable and any node can be represented as a feed with alt=feed (plays nicely with ".multi")
      Minor Changes...
      • Brought in the entire text of Annex N to simplify review and show all changes in context.
      • For declaring interfaces, added "Implements" and 'implements' attributes.
      • Added missing attributes 'nodeType', 'nodeSubType', 'inAlarm', 'overridden', etc. to CSML so the client doesn't have to switch to plain text for those.
      • Given the above XML attribute additions, the distinction between "database attributes" and "XML attribute" faded enough to remove the nascent designation 'facets' and return to 'attributes'.
      • Given the high unlikeliness of actually implementing this with an OData library, removed OData-specific names: $skip, $top, $filter, $select become 'skip', 'top', 'filter', 'select'; and $count and $value are just :Count and :Value., and removed the "bacnet.svc" prefix everywhere
      • Made 'skip' and 'top' work on Array Attributes to replace the SOAP getArrayRange() service
      • Woke up the latent feature for attributes of attributes (in a very limited way: only required for getting the "Count" of array attributes) to replace the SOAP getArraySize()
      • To deal with large strings (i.e. Read/WriteFile), made the 'skip' and 'top' query parameters work on <String> and <OctetString> primitives as well.
      • Removed the overly-generalized "atom-..." filters and brought back simpler query parameters 'published-gt', 'published-le', etc.
      • Changed the default separator for returning array attributes from semicolon to newline to make equivalents for SOAP getArray() and getArrayRange().
      • Allow changing the array attribute separator to emulate getValue() or for other client parsing desires
      To Be Done still...
      • TBD: more examples... e.g. examples of top/skip on array attributes.
      • TBD: create PICS for WS: logical only; physical only; locales, etc; 
      • TBD: how to support unknown ASN as gateway?  context tagged data becomes <What>?
      • TBD: add back 'depth' and 'truncated'?
      • TBD: examine how the new linking concept of  rel=logical-geo/logical-others play with existing Reference/Alias concept
    • Hans R. Kranz
      Dear Dave, a real great work (I am missing more powerful words in English)...! I hope in the next edition of my German BACnet book I can refere to the new WS
      Message 2 of 2 , Apr 11, 2012
      • 0 Attachment
        Dear Dave,

        a real great work (I am missing more powerful words in English)...!
        I hope in the next edition of my German BACnet book I can refere to the new WS section.
        The latest one is announced (in English will follow soon):

        by the way: I just received the message, that the doughter of Bill Swan got a son:
        Ethan John Weitzel, Born April 10, 2012  to Sean and Elizabeth Weitzel. 
        8Lbs 12 oz, 20 inches tall.

        Best regards -- Meilleurs salutations -- Vsego horoshego С уважением
        -- Saludos -- Med vänlig hälsning -- As-salamu alaikum -- sou sou -- בכבוד רב,
        Mit freundlichen Grüssen 
        Hans R. Kranz



        Am 11. April 2012 21:30 schrieb Dave Robin <yahoo@...>:
        XML and IT members,

        At long last, here is an updated version of the BACnet/WS proposal.  This incorporates all the feedback received at, and since, the Chicago meeting.  I believe it addresses all the comments and overall I'm pretty happy with the way it has gelled. More powerful and less complicated is a good combination.  (of course, "less complicated" is in the eye of the beholder).  I've tried to follow the so called "Einstein's razor" principle that the best solution is the one that is as simple as possible, but no simpler.  

        I pursued consistency, not for consistency's sake, but to reduce the amount of text it takes to explain the solution.  But it's still pretty big. I think the document has grown and has a lot of redundancy that could be eliminated with some restructuring, but I've spent all my time so far on content, not the presentation. And there may be some dark corners that I haven't read in a while that are now incorrect.  I gave it a final once over read today, but I could have missed something.

        I'm excited to say that we've been invited to submit this for review by a team at Berkeley as well, who are doing amazing things with RESTful web services for energy and building data from their many systems on their campus and over at LBNL.   I greatly look forward to their feedback.

        Here is the list of changes since Chicago:

        Major Changes..
        • Overhauled and simplified log buffers and csv digests: only two formats now, and you can poll and  subscribe to the digests (hourly/daily, etc)
        • Added unified/simple way to read/write/subscribe to multiple data paths in both plain text and CSML. (à la RPM/WPM/SCOVM)
        • Added talk about "physical" vs "logical" views and provide a standard way to <link> between the views
        • Added section describing all the ways to "Read Range" of various things, including a "By Sequence' capability for BACnet log buffers
        • Really removed SOAP: Replaced the "N.12 Services" clause with a "N.12 Migrating from SOAP Services" clause showing how to do everything the new way. Every SOAP service now has a direct and simple REST equivalent
        • Reproduced the capabilities of the simple plain text getHistoryPeriodic() and added back the requested "trend period statistics" now that we have an easy way to do it.
        • Eliminated ".changes" node by defining that any feed is subscribable and any node can be represented as a feed with alt=feed (plays nicely with ".multi")
        Minor Changes...
        • Brought in the entire text of Annex N to simplify review and show all changes in context.
        • For declaring interfaces, added "Implements" and 'implements' attributes.
        • Added missing attributes 'nodeType', 'nodeSubType', 'inAlarm', 'overridden', etc. to CSML so the client doesn't have to switch to plain text for those.
        • Given the above XML attribute additions, the distinction between "database attributes" and "XML attribute" faded enough to remove the nascent designation 'facets' and return to 'attributes'.
        • Given the high unlikeliness of actually implementing this with an OData library, removed OData-specific names: $skip, $top, $filter, $select become 'skip', 'top', 'filter', 'select'; and $count and $value are just :Count and :Value., and removed the "bacnet.svc" prefix everywhere
        • Made 'skip' and 'top' work on Array Attributes to replace the SOAP getArrayRange() service
        • Woke up the latent feature for attributes of attributes (in a very limited way: only required for getting the "Count" of array attributes) to replace the SOAP getArraySize()
        • To deal with large strings (i.e. Read/WriteFile), made the 'skip' and 'top' query parameters work on <String> and <OctetString> primitives as well.
        • Removed the overly-generalized "atom-..." filters and brought back simpler query parameters 'published-gt', 'published-le', etc.
        • Changed the default separator for returning array attributes from semicolon to newline to make equivalents for SOAP getArray() and getArrayRange().
        • Allow changing the array attribute separator to emulate getValue() or for other client parsing desires
        To Be Done still...
        • TBD: more examples... e.g. examples of top/skip on array attributes.
        • TBD: create PICS for WS: logical only; physical only; locales, etc; 
        • TBD: how to support unknown ASN as gateway?  context tagged data becomes <What>?
        • TBD: add back 'depth' and 'truncated'?
        • TBD: examine how the new linking concept of  rel=logical-geo/logical-others play with existing Reference/Alias concept





      Your message has been successfully submitted and would be delivered to recipients shortly.