AMON es un formato de datos apropiado para la descripción del intercambio de datos de medición y monitorización de dispositivos que usa JSON.
Se puede usar gratuitamente y está licenciado vía http://creativecommons.org/licenses/by/2.0/uk/ que permite la copia, distribución, trabajos derivados y uso comercial.
El estándar AMON ha sido desarrollado por AMEE UK Limited con la asistencia de muchas otros empresas expertas en la toma de medidas y monitorización de dispositivos industriales.
Sin embargo, AMON no es el único estándar en el campo del intercambio de datos de medida y monitorización entre dispositivos, una alternativa es el Sensor Model Language (SensorML) de la OGC (Open GeoSpatial Consortium).
Las diferencias entre estos dos estándares son:
· El desarrollo de AMON es abierto; el de SensorML no sigue un modelo abierto, cualquier cambio del estándar debe ser validado por miembros técnicos del OGC
· El estándar de intercambio de datos AMON usa JSON en lugar de XML
· AMON es mucho más fácil de empezar a usarlo ya que su documentación es más sencilla (5 páginas frente a 180)
· AMON es más actual, la última actualización de SensorML se produjo en 2007 mientras que la última versión v3.1 es de 2012
· AMON es usado activamente en UK (Energy Saving Trust (http://www.energysavingtrust.org.uk/) y Technology Strategy Board (https://www.innovateuk.org/))
· AMON se centra puramente en el intercambio de datos de la forma más rápida y eficiente posible
· AMON es extensible mediante metadata y no tiene restricciones en que tipos de datos pueden ser representados
Aquí podemos ver el formato de Datos AMON al completo:
{
"devices": [
{
"deviceId": required string UUID,
"entityId": required string UUID,
"parentId": optional string UUID,
"meteringPointId": optional string UUID,
"description": optional string,
"privacy": required string, either "private" or "public",
"location": {
"name": optional string,
"latitude": optional latitude in degrees,
"longitude": optional longitude in degrees
},
"metadata": {
optional JSON object
},
"readings": [
{
"type": required string,
"unit": optional string,
"resolution": optional number,
"accuracy": optional number,
"period": required string, either "INSTANT", "CUMULATIVE" or "PULSE",
"min": optional number,
"max": optional number,
"correction": optional boolean,
"correctedUnit": optional string,
"correctionFactor": optional number,
"correctionFactorBreakdown": optional string
},
],
"measurements": [
{
"type": required string, must match a defined reading type,
"timestamp": required RFC 3339 string,
"value": number, boolean or string, required unless "error" (below) is present,
"error": string, required unless "value" (above) is present,
"aggregated": optional boolean
},
]
}
],
"meteringPoints": [
{
"meteringPointId": required string UUID,
"entityId": required string UUID,
"description": optional string,
"metadata": {
optional JSON object
}
}
],
"entities": [
{
"entityId": required string UUID,
"deviceIds": [ optional array of string UUIDs, empty array permitted ],
"meteringPointIds": [ optional array of string UUIDs, empty array permitted ]
}
]
}
Consiste de tres principales secciones:
devices: Representa a los dispositivos físicos o virtuales y sus datos (entre ellos su geolocalización)
meteringPoints: Se usa para representar puntos de medición separados de los datos de los dispositivos (ej: si el dispositivo falla)
entities: Representa entidades del mundo real o virtuales que podrían estar relacionadas con el dispositivo o los meteringPoints (propiedades, edificios, etc…)
Existen definidos muchos tipos de datos de lectura
| Type Name | Default Unit | JSON Type |
| absoluteHumidity | g/Kg | Number |
| barometricPressure | mbar | Number |
| co2 | ppm | Number |
| currentSignal | mA | Number |
| electricityAmps | Amps | Number |
| electricityConsumption | kWh | Number |
| electricityExport | kWh | Number |
| electricityFrequency | Hz | Number |
| electricityGeneration | kWh | Number |
| electricityImport | kWh | Number |
| electricityKiloVoltAmpHours | kVArh | Number |
| electricityKiloWatts | kW | Number |
| electricityVolts | V | Number |
| electricityVoltAmps | VA | Number |
| electricityVoltAmpsReactive | VAr | Number |
| flowRateAir | m^3/h | Number |
| flowRateLiquid | Ls^-1 | Number |
| gasConsumption | m^3, ft^3, kWh | Number |
| heatConsumption | kWh | Number |
| heatExport | kWh | Number |
| heatGeneration | kWh | Number |
| heatImport | kWh | Number |
| heatTransferCoefficient | W/m^2.K | Number |
| liquidFlowRate | Litres/5min | Number |
| oilConsumption | m^3, ft^3, kWh | Number |
| powerFactor | Number (0-1) | |
| pulseCount | Number | |
| relativeHumidity | %RH | Number |
| relativeHumidity | wm-2 | Number |
| solarRadiation | W/m^2 | Number |
| status | Number (0/1) | |
| temperatureAir | C | Number |
| temperatureAmbient | C | Number |
| temperatureFluid | C | Number |
| temperatureGround | C | Number |
| temperatureRadiant | C | Number |
| temperatureSurface | C | Number |
| thermalEnergy | kWhth | Number |
| time | millisecs | Number |
| voltageSignal | mV | Number |
| waterConsumption | L | Number |
| windDirection | degrees | Number |
| windSpeed | ms^-1 | Number |
Un ejemplo JSON en formato AMON que muestra un dispositivo medidor de potencia eléctrica sería el siguiente
{
"devices": [
{
"deviceId": "c1810810-0381-012d-25a8-0017f2cd3574",
"entityId": "50af27e0-e61a-11e1-aff1-0800200c9a66",
"description": "Example 2 Device",
"meteringPointId": "c1759810-90f3-012e-0404-34159e211070",
"readings": [
{
"type": "apparentPower",
"unit": "kVAh",
"accuracy": 0.01
},
{
"type": "reactivePower",
"unit": "kVArh",
"accuracy": 0.2
}
],
"measurements": [
{
"type": "apparentPower",
"timestamp": "2010-07-02T11:39:09Z",
"value": 7.23
},
{
"type": "reactivePower",
"timestamp": "2010-07-02T11:44:09Z",
"value": 6.8
}
]
}
],
"meteringPoints": [
{
"meteringPointId": "c1759810-90f3-012e-0404-34159e211070",
"description": "Example 2 Metering Point"
}
]
}
Más información en http://amee.github.io/AMON/#goals


Deja un comentario