現在値読取ペイロードのフィルタ
デフォルトでは、特定のメーター(設備)に対して現在値読取コマンドが開始され、メーターの各指針またはチャネル(計量コンポーネント)の検針(測定データ)が返されます。ただし、状況によっては、実装ですべてのチャネルに対して測定を返す必要がない場合があります。たとえば、請求関連データのみ、またはメーターによって記録されたデータのサブセットのみが必要な場合があります。
現在値読取コマンドで受信した測定ペイロードは、現在値読取コマンドの送受信に使用されるXLSファイルにカスタム・ロジックを追加することで、単位(UOM)に基づいてフィルタできます。
このフィルタを実装するには、適切なXSLを編集して、承認済単位リストのリストを含む変数と、承認済リスト変数に基づいてペイロードをフィルタするロジックを含めます。
例
Landis+GyrのXSLファイルからの次の抜粋の"<!-- List of approved UOMS -->"および"<!-- UOM Filtering here -->"で示された行は、ファイルを編集して単位フィルタを適用する方法を示しています。
L+G - ReadingChangedNotification要求(D3-ReadingChgNotifRequest.xsl)
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet exclude-result-prefixes="soap11 soap12 ns1" xmlns:ns1="http://www.multispeak.org/Version_3.0" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope" xmlns:soap11="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:import href="D3-MultiSpeakMsgHeader.xsl"/>
<!-- List of approved UOMS -->
<xsl:variable name="Approved_UOMs">|kWh|</xsl:variable>
<xsl:template match="soap11:Envelope">
<xsl:apply-templates select="//ns1:ReadingChangedNotification"/>
...
<xsl:template match="ns1:readingValues">
<xsl:for-each select="./ns1:readingValue">
<readingValue>
<extensions>
<xsl:value-of select="./ns1:extensions"/>
</extensions>
<extensionsList>
<xsl:apply-templates select="./ns1:extensionsList"/>
</extensionsList>
<units>
<xsl:value-of select="./ns1:units"/>
</units>
<value>
<xsl:value-of select="./ns1:value"/>
</value>
<!-- UOM Filtering here -->
<xsl:if test="contains($Approved_UOMs, concat('|', ./ns1:name , '|'))">
<name>
<xsl:value-of select="./ns1:name"/>
</name>
</xsl:if>
<dateTime>
<xsl:value-of select="./ns1:dateTime"/>
</dateTime>
</readingValue>
</xsl:for-each>
</xsl:template>
...
SGG L+G CIM AsyncReply MeterReadings要求XSL (D3-CIMMeterReadingRequest.xsl)
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet exclude-result-prefixes="xsl env sec msg mtr ede xsi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ede="http://iec.ch/TC57/2009/EndDeviceEvents#" xmlns:mtr="http://iec.ch/TC57/2009/MeterReadings#" xmlns:msg="http://www.iec.ch/TC57/2008/schema/message" xmlns:sec="http://www.landisgyr.com/iec61968/2010/03" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output indent="yes" encoding="utf-8" method="xml"/>
<!-- List of approved UOMS -->
<xsl:variable name="Approved_UOMs">|kWh|</xsl:variable>
<xsl:template match="env:Envelope">
<xsl:apply-templates select="./env:Body/msg:ResponseMessage"/>
</xsl:template>
...
<xsl:template match="mtr:Readings">
<xsl:if test="string-length(./*) > 0">
<Readings>
<timeStamp>
<xsl:value-of select="./mtr:timeStamp"/>
</timeStamp>
<xsl:apply-templates select="./mtr:value" mode="copyif"/>
<xsl:for-each select="./ReadingQualities[string-length(./mtr:quality) > 0]">
<ReadingQualities>
<quality>
<xsl:value-of select="./mtr:quality"/>
</quality>
</ReadingQualities>
</xsl:for-each>
<xsl:if test="string-length(./mtr:ReadingType/@ref) > 0">
<!-- UOM Filtering here -->
<xsl:if test="contains($Approved_UOMs, concat('|', ./mtr:ReadingType/@ref, '|'))">
<ReadingTypeRef>
<xsl:value-of select="./mtr:ReadingType/@ref"/>
</ReadingTypeRef>
</xsl:if>
</xsl:if>
</Readings>
</xsl:if>
</xsl:template>
...
ヘッドエンド・システムのXSLファイル
次の表は、ヘッドエンド・システムごとにこの方法を使用してペイロードをフィルタするために使用できるXSLファイルを示しています。
XSLファイルは、「管理対象コンテンツ」ポータルを使用して編集できます。
ヘッドエンド・システム |
XSL |
使用場所 |
---|---|---|
Landis+Gyr |
D3-CIMMeterReadingRequest.xsl |
インバウンドWebサービス(CIMサービス・コールバック) |
Landis+Gyr |
D3-ReadingChgNotifRequest.xsl |
インバウンドWebサービス(検針変更済通知(コールバック)) |
Sensus |
D6-ReadingChgNotifRequest.xsl |
インバウンドWebサービス(Sensus MultiSpeak CB_Serverインタフェース) |
Silver Spring Networks |
D7-GetMtrRdRsByJobIDResp.xsl |
外部システム・メッセージXSL (実装により提供) |