Skip to content

Message formats

Gunnar Skjold edited this page Aug 24, 2024 · 19 revisions

JSON payload sent to MQTT

System data

{
    "id" : "",
    "name" : "",
    "up" : 0,
    "vcc" : 0.000,
    "rssi": 0,
    "temp": 0.00,
    "version": ""
}

List 1

{
    "id" : "",       # WiFi MAC address
    "name" : "",     # MQTT Client ID
    "up" : 0,        # Uptime in seconds
    "t" : 0,         # Package timestamp in unixtime
    "vcc" : 0.000,   # ESP voltage
    "rssi": 0,       # WiFi RSSI
    "temp": 0.00,    # Temperature
    "data" : {       # Data extracted from MBUS datagram
        "P" : 0      # Active power
    },
    "realtime" : {   # Data from realtime calculator
        "h" : 0.00,  # Consumption this hour
        "d" : 0.0,   # Consumption total today
        "t" : 0,     # Current active month threshold
        "x" : 0.00,  # Maximum usage for a single hour this month,
        "he" : 0.00, # Export this hour
        "de" : 0.00  # Export total today
    }
}

List 2

{
    "id" : "",       # WiFi MAC address
    "name" : "",     # MQTT Client ID
    "up" : 0,        # Uptime in seconds
    "t" : 0,         # Package timestamp in unixtime
    "vcc" : 0.000,   # ESP voltage
    "rssi": 0,       # WiFi RSSI
    "temp": 0.00,    # Temperature
    "data" : {       # Data extracted from MBUS datagram
        "lv" : "",   # List version
        "id" : "",   # Meter ID
        "type" : "", # Meter model
        "P" : 0,     # Active import
        "Q" : 0,     # Reactive import
        "PO" : 0,    # Active export
        "QO" : 0,    # Reactive export
        "I1" : 0.00, # L1 current
        "I2" : 0.00, # L2 current
        "I3" : 0.00, # L3 current
        "U1" : 0.00, # L1 voltage
        "U2" : 0.00, # L2 voltage
        "U3" : 0.00  # L3 voltage
    },
    "realtime" : {   # Data from realtime calculator
        "h" : 0.00,  # Consumption this hour
        "d" : 0.0,   # Consumption total today
        "t" : 0,     # Current active month threshold
        "x" : 0.00,  # Maximum usage for a single hour this month,
        "he" : 0.00, # Export this hour
        "de" : 0.00  # Export total today
    }
}

List 3

{
    "id" : "",       # WiFi MAC address
    "name" : "",     # MQTT Client ID
    "up" : 0,        # Uptime in seconds
    "t" : 0,         # Package timestamp in unixtime
    "vcc" : 0.000,   # ESP voltage
    "rssi": 0,       # WiFi RSSI
    "temp": 0.00,    # Temperature
    "data" : {       # Data extracted from MBUS datagram
        "lv" : "",   # List version
        "id" : "",   # Meter ID
        "type" : "", # Meter model
        "P" : 0,     # Active import
        "Q" : 0,     # Reactive import
        "PO" : 0,    # Active export
        "QO" : 0,    # Reactive export
        "I1" : 0.00, # L1 current
        "I2" : 0.00, # L2 current
        "I3" : 0.00, # L3 current
        "U1" : 0.00, # L1 voltage
        "U2" : 0.00, # L2 voltage
        "U3" : 0.00  # L3 voltage
        "tPI" : 0.0, # Accumulated active import
        "tPO" : 0.0, # Accumulated active export
        "tQI" : 0.0, # Accumulated reactive import
        "tQO" : 0.0, # Accumulated reactive export
        "rtc" : 0    # Meter timestamp
    },
    "realtime" : {   # Data from realtime calculator
        "h" : 0.00,  # Consumption this hour
        "d" : 0.0,   # Consumption total today
        "t" : 0,     # Current active month threshold
        "x" : 0.00,  # Maximum usage for a single hour this month,
        "he" : 0.00, # Export this hour
        "de" : 0.00  # Export total today
    }
}

List 4

{
    "id" : "",       # WiFi MAC address
    "name" : "",     # MQTT Client ID
    "up" : 0,        # Uptime in seconds
    "t" : 0,         # Package timestamp in unixtime
    "vcc" : 0.000,   # ESP voltage
    "rssi": 0,       # WiFi RSSI
    "temp": 0.00,    # Temperature
    "data" : {       # Data extracted from MBUS datagram
        "lv" : "",   # List version
        "id" : "",   # Meter ID
        "type" : "", # Meter model
        "P" : 0,     # Active import
        "Q" : 0,     # Reactive import
        "PO" : 0,    # Active export
        "QO" : 0,    # Reactive export
        "I1" : 0.00, # L1 current
        "I2" : 0.00, # L2 current
        "I3" : 0.00, # L3 current
        "U1" : 0.00, # L1 voltage
        "U2" : 0.00, # L2 voltage
        "U3" : 0.00  # L3 voltage
        "PF" : 0.00, # Power factor
        "PF1" : 0.00,# Power factor phase 1
        "PF2" : 0.00,# Power factor phase 2
        "PF3" : 0.00,# Power factor phase 3
        "tPI" : 0.0, # Accumulated active import
        "tPO" : 0.0, # Accumulated active export
        "tQI" : 0.0, # Accumulated reactive import
        "tQO" : 0.0, # Accumulated reactive export
        "rtc" : 0    # Meter timestamp
    },
    "realtime" : {   # Data from realtime calculator
        "h" : 0.00,  # Consumption this hour
        "d" : 0.0,   # Consumption total today
        "t" : 0,     # Current active month threshold
        "x" : 0.00,  # Maximum usage for a single hour this month,
        "he" : 0.00, # Export this hour
        "de" : 0.00  # Export total today
    }
}

Prices

{
    "id" : "B4:E6:2D:97:17:91",                  # WiFi MAC address
    "prices" : {
        "0" : 0.0000,                            # Price for current hour
        "1" : 0.0000,                            # Price one hour from now
        "2" : 0.0000,                            # Price two hour from now
        "3" : 0.0000,                            # Price three hour from now
        "4" : 0.0000,                            # Price four hour from now
        "5" : 0.0000,                            # Price five hour from now
        "6" : 0.0000,                            # Price six hour from now
        "7" : 0.0000,                            # Price seven hour from now
        "8" : 0.0000,                            # Price eight hour from now
        "9" : 0.0000,                            # Price nine hour from now
        "10" : 0.0000,                           # Price ten hour from now
        "11" : 0.0000,                           # Price eleven hour from now
        "min" : 0.0000,                          # Lowest known price ahead
        "max" : 0.0000,                          # Highest known price ahead
        "cheapest1hr" : "2022-01-01T00:00:00Z",  # Timestamp for cheapest hour
        "cheapest3hr" : "2022-01-01T00:00:00Z",  # Timestamp for cheapest combined 3 hour period
        "cheapest6hr" : "2022-01-01T00:00:00Z"   # Timestamp for cheapest combined 6 hour period
    }
}

http://<ams_hostname>/data.json

{
    "im" : 0,            # Maximum power consuption (calculated from fuse size)
    "om" : 0,            # Maximum power production
    "mf" : 0,            # Main fuse size
    "i" : 0,             # Active import
    "e" : 0,             # Active export
    "w" : 0,             # Combined active import and export
    "ri" : 0,            # Reactive import
    "re" : 0,            # Reactive export
    "ic" : 0.0,          # Accumulated import
    "ec" : 0.0,          # Accumulated export
    "ric" : 0.0,         # Accumulated reactive import
    "rec" : 0.0,         # Accumulated reactive export
    "l1" : {             # Phase 1
        "u" : 0.00,      # Voltage
        "i" : 0.00,      # Amperage
        "p" : 0,         # Active Power
        "q" : 0,         # Reactive power
        "f" : 0.00       # Power factor
    },
    "l2" : {             # Phase 2
        "u" : 0.00,      # Voltage
        "i" : 0.00,      # Amperage
        "p" : 0,         # Active Power
        "q" : 0,         # Reactive power
        "f" : 0.00,      # Power factor
        "e" :%s          # Indicator if L2 current is present
    },
    "l3" : {             # Phase 3
        "u" : 0.00,      # Voltage
        "i" : 0.00,      # Amperage
        "p" : 0,         # Active Power
        "q" : 0,         # Reactive power
        "f" : 0.00       # Power factor
    },
    "f" : 0.00,          # Power factor
    "v" : 0.00,          # ESP voltage
    "r" : 0,             # WiFi RSSI
    "t" : 0.0,           # Temperature
    "u" : 0,             # Uptime in seconds
    "m" : 0,             # Free memory in bytes
    "em" : 0,            # ESP status
    "hm" : 0,            # HAN status
    "wm" : 0,            # WiFi status
    "mm" : 0,            # MQTT status
    "me" : 0,            # Last MQTT error
    "p" : 0.00,          # Current import price
    "px" : 0.00,         # Current export price
    "mt" : 0,            # Meter type
    "ds" : 0,            # Distribution system
    "ea" : {             # Energy accounting
        "x" : 0.0,       # Max average of configured amount of hours
        "p" : [0.0, 0.0],# Peak hourly consumption this month. Relates to Norwegian tariff
        "t" : 0,         # Current active month threshold
        "h" : {          # Real time calculation this hour
            "u" : 0.00,  # Consumption
            "c" : 0.00,  # Cost
            "p" : 0.00,  # Production
            "i" : 0.00   # Income
        },
        "d" : {          # Real time calculation today
            "u" : 0.00,  # Consumption
            "c" : 0.00,  # Cost
            "p" : 0.00,  # Production
            "i" : 0.00   # Income
        },
        "m" : {          # Real time calculation this month
            "u" : 0.00,  # Consumption
            "c" : 0.00,  # Cost
            "p" : 0.00,  # Production
            "i" : 0.00   # Income
        }
    },
    "c" : 0              # Clock
}

http://<ams_hostname>/energyprice.json

{
    "currency": "NOK",   # The currency unit for the prices
    "source": "EOE",     # What source the prices was fetched from. (EOE = ENTSO-E, EDS = Energi Data Service, HKS = Hvakosterstrommen.no)
    "00": 1.3967,        # Price for current hour
    "01": 1.3756,        # Price for next hour
    "02": 1.3687,        # Price in two hours
    "03": 1.3586,        # and so on...
    "04": 1.3656,
    "05": 1.3898,
    "06": 1.3975,
    "07": 1.3771,
    "08": 1.5074,
    "09": 1.5368,
    "10": 1.3063,
    "11": 1.2278,
    "12": 1.1522,
    "13": 1.0898,
    "14": 0.9210,
    "15": null,          # Price for this hour is unknown
    "16": null,
    "17": null,
    "18": null,
    "19": null,
    "20": null,
    "21": null,
    "22": null,
    "23": null,
    "24": null,
    "25": null,
    "26": null,
    "27": null,
    "28": null,
    "29": null,
    "30": null,
    "31": null,
    "32": null,
    "33": null,
    "34": null,
    "35": null
}

http://<ams_hostname>/dayplot.json

{
    "i00": 4.91, # Import at UTC hour 0, CET hour 1, CEST hour 2
    "i01": 4.92, # Import at UTC hour 1
    "i02": 4.91, # and so on...
    "i03": 4.92,
    "i04": 4.94,
    "i05": 3.47,
    "i06": 1.10,
    "i07": 1.04,
    "i08": 0.70,
    "i09": 0.30,
    "i10": 0.34,
    "i11": 1.53,
    "i12": 1.42,
    "i13": 2.05,
    "i14": 0.90,
    "i15": 0.89,
    "i16": 0.90,
    "i17": 1.06,
    "i18": 1.29,
    "i19": 1.60,
    "i20": 2.27,
    "i21": 1.19,
    "i22": 1.11,
    "i23": 0.74,
    "e00": 0.00, # Export at UTC hour 0
    "e01": 0.00, # and so on...
    "e02": 0.00,
    "e03": 0.00,
    "e04": 0.00,
    "e05": 0.00,
    "e06": 0.00,
    "e07": 0.00,
    "e08": 0.00,
    "e09": 0.00,
    "e10": 0.00,
    "e11": 0.00,
    "e12": 0.00,
    "e13": 0.00,
    "e14": 0.00,
    "e15": 0.00,
    "e16": 0.00,
    "e17": 0.00,
    "e18": 0.00,
    "e19": 0.00,
    "e20": 0.00,
    "e21": 0.00,
    "e22": 0.00,
    "e23": 0.00
}

http://<ams_hostname>/monthplot.json

{
    "i01": 22.18, # Import for first day of the month (ex. 01.01.2023)
    "i02": 46.66, # Import for the second day
    "i03": 45.38, # and so on...
    "i04": 32.02,
    "i05": 38.53,
    "i06": 30.46,
    "i07": 15.66,
    "i08": 23.59,
    "i09": 20.64,
    "i10": 42.78,
    "i11": 54.78,
    "i12": 30.84,
    "i13": 30.84,
    "i14": 30.84,
    "i15": 30.84,
    "i16": 30.84,
    "i17": 51.91,
    "i18": 29.73,
    "i19": 29.73,
    "i20": 27.56,
    "i21": 46.39,
    "i22": 63.33,
    "i23": 24.21,
    "i24": 19.85,
    "i25": 22.14,
    "i26": 22.50,
    "i27": 47.31,
    "i28": 48.27,
    "i29": 45.82,
    "i30": 31.02,
    "i31": 18.83,
    "e01": 0.00, # Export for first day of the month
    "e02": 0.00, # and so on...
    "e03": 0.00,
    "e04": 0.00,
    "e05": 0.00,
    "e06": 0.00,
    "e07": 0.00,
    "e08": 0.00,
    "e09": 0.00,
    "e10": 0.00,
    "e11": 0.00,
    "e12": 0.00,
    "e13": 0.00,
    "e14": 0.00,
    "e15": 0.00,
    "e16": 0.00,
    "e17": 0.00,
    "e18": 0.00,
    "e19": 0.00,
    "e20": 0.00,
    "e21": 0.00,
    "e22": 0.00,
    "e23": 0.00,
    "e24": 0.00,
    "e25": 0.00,
    "e26": 0.00,
    "e27": 0.00,
    "e28": 0.00,
    "e29": 0.00,
    "e30": 0.00,
    "e31": 0.00
}