Filtrado de cargas útiles de lectura bajo demanda
Por defecto, el comando Lectura bajo demanda se inicia para un contador específico (dispositivo) y devuelve lecturas (datos de medida) para cada registro o canal (componente de medición) en el contador. Sin embargo, en algunas circunstancias, puede que en una implantación no se desee que se devuelvan medidas de todos los canales. Por ejemplo, puede que solo interesen o se necesiten datos relacionados con la facturación o solo un conjunto secundario de los datos que ha registrado el contador.
Las cargas útiles de medida recibidas a través de los comandos Lectura bajo demanda se pueden filtrar según la unidad de medida al añadir lógica personalizada a los ficheros XSL utilizados para enviar y recibir el comando Lectura bajo demanda.
Este filtrado se puede implantar mediante la edición del XSL adecuado que incluya una variable con una lista de "unidades de medida aprobadas" y la lógica que filtre la carga útil según la variable de la "lista aprobada".
Ejemplos
Las líneas con las notas “<!-- List of approved UOMS -->” (lista de unidades de medida aprobadas) y “<!-- UOM Filtering here -->” (filtrado de unidad de medida aquí) en los siguientes fragmentos de ficheros XSL de Landis+Gyr ilustran cómo se pueden editar los ficheros para aplicar el filtrado de unidades de medida.
Solicitud de notificación de cambio de lectura L+G (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>
...
XSL de solicitud de AsyncReply MeterReadings de CIM L+G SGG (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>
...
Ficheros XSL del sistema de recopilación de datos
En la tabla siguiente se indican los ficheros XSL que se pueden utilizar para filtrar cargas útiles mediante este enfoque para cada sistema de recopilación de datos.
Los ficheros XSL se pueden editar en el portal Contenido gestionado.
|
Sistema de recopilación de datos |
XSL |
Puntos de uso |
|---|---|---|
|
Landis+Gyr |
D3-CIMMeterReadingRequest.xsl |
Servicio web entrante (Rellamada de servicio de CIM) |
|
Landis+Gyr |
D3-ReadingChgNotifRequest.xsl |
Servicio web entrante (Notificación de cambio de lectura (rellamada)) |
|
Sensus |
D6-ReadingChgNotifRequest.xsl |
Servicio web entrante (Interfaz CB_Server de MultiSpeak de Sensus) |
|
Silver Spring Networks |
D7-GetMtrRdRsByJobIDResp.xsl |
XSL de mensaje de sistema externo (proporcionado por la implantación) |
