Snapshot
Nejúplnější výpis senzorů wallboxu — moduly ac-module, ev-meter, temp-block, control-pilot a session, snapshot jednoho nodu i export hodnot do CSV.
Získání úplného obrazu všech senzorů a nastavení
Endpoint
GET /admin-panel/v1/external/history/snapshot/{deviceId}Parametry
- deviceId (string, povinný) - Identifikátor vašeho zařízení
- timestamp (string, volitelný) - Časové razítko pro historický snapshot
/external/history/snapshot/{deviceId}Získat Snapshot zařízení
Získejte kompletní snapshot všech senzorů, stavů a nastavení vašeho zařízení. Tento endpoint poskytuje nejdetailnější pohled na aktuální stav zařízení.
Autentizace
Parametry
Příklady kódu
curl -X GET "https://cloud.mybox.pro/admin-panel/v1/external/history/snapshot/{deviceId}" \
-u "YOUR_API_KEY:YOUR_API_SECRET" \
-H "Accept: application/json"Příklad odpovědi
{
"status": 1,
"data": [
{
"id": "qfeb-od13-ul2c-sgrl",
"name": "MyBox Home",
"firmwareVersion": "7",
"firmwareName": "1.6.1-7",
"state": "ready",
"nodes": [
{
"formattedId": "ac-module-V1",
"id": "ac-module",
"sensors": [
{
"id": "evse-state",
"value": "Unplugged"
},
{
"id": "car-state",
"value": "STATE A"
},
{
"id": "max-charge-current",
"value": "32"
}
]
},
{
"id": "ev-meter",
"sensors": [
{
"id": "ev-meter-energy",
"value": "2661.43"
},
{
"id": "ev-meter-power",
"value": "0.00"
}
]
}
]
}
]
}Struktura odpovědi
Snapshot poskytuje nejkompletnější data ze všech endpointů - obsahuje VŠECHNY senzory, nastavení a stavy.
{
"data": [
{
"id": "abc1-def2-ghi3-jkl4",
"name": "Nabíječka 1",
"firmwareVersion": "7",
"firmwareName": "1.6.1-7",
"state": "ready",
"nodes": [...]
}
]
}Struktura Node (modulu)
Každý node obsahuje skupinu souvisejících senzorů:
{
"formattedId": "ac-module-V1",
"id": "ac-module",
"rootTopic": "ac-module/automatic-session-end",
"sensors": [...],
"options": [],
"telemetry": []
}Hlavní moduly (nodes) a jejich senzory
AC-Module - Nabíjecí modul
Nejdůležitější modul pro sledování nabíjení.
{
"id": "ac-module",
"sensors": [
{
"id": "evse-state",
"value": "Unplugged" // Stav konektoru
},
{
"id": "car-state",
"value": "STATE A" // Stav vozidla
},
{
"id": "max-charge-current",
"value": "32" // Max nabíjecí proud (A)
},
{
"id": "cable-type",
"value": "Fixed32" // Typ kabelu
},
{
"id": "cable-locked",
"value": "false" // Zámek kabelu
},
{
"id": "pwm-on",
"value": "false" // PWM signál aktivní
}
]
}Klíčové hodnoty:
evse-state- Unplugged/Plugged/Charging/Errorcar-state- STATE A/B/C/PAUSE/FAILmax-cb-current- Jistič (16A, 25A, 32A...)nlb-node-current- Aktuální proud
EV-Meter - Elektroměr
Měření spotřeby energie a výkonu.
{
"id": "ev-meter",
"sensors": [
{
"id": "ev-meter-energy",
"value": "2661.43" // Celková energie (kWh)
},
{
"id": "ev-meter-power",
"value": "0.00" // Aktuální výkon (kW)
},
{
"id": "ev-meter-current-l1",
"value": "0.02" // Proud fáze L1 (A)
},
{
"id": "ev-meter-current-l2",
"value": "0.00" // Proud fáze L2 (A)
},
{
"id": "ev-meter-current-l3",
"value": "4.08" // Proud fáze L3 (A)
}
]
}Hodnoty po fázích:
ev-meter-energy-l1/l2/l3- Energie na fázi (kWh)ev-meter-power-l1/l2/l3- Výkon na fázi (kW)ev-meter-current-l1/l2/l3- Proud na fázi (A)
Temp-block - Teplotní senzory
Sledování teplot kritických komponent.
{
"id": "temp-block",
"sensors": [
{
"id": "temp-amb",
"value": "25.3" // Okolní teplota (°C)
},
{
"id": "temp-evse",
"value": "32.1" // Teplota EVSE modulu (°C)
},
{
"id": "temp-mcu",
"value": "45.2" // Teplota procesoru (°C)
}
]
}Control-pilot - Komunikace s vozidlem
PWM signály pro komunikaci s elektromobilem.
{
"id": "control-pilot",
"sensors": [
{
"id": "cp-car-state",
"value": "STATE A"
},
{
"id": "cp-high",
"value": "11980" // Vysoká úroveň PWM (mV)
},
{
"id": "cp-low",
"value": "-11980" // Nízká úroveň PWM (mV)
},
{
"id": "cp-max-current",
"value": "32" // Max povolený proud (A)
}
]
}Session - Nabíjecí relace
Informace o aktuální nabíjecí relaci.
{
"id": "session",
"sensors": [
{
"id": "session-meter-energy-start",
"value": "2650.12" // Stav elektroměru na začátku (kWh)
},
{
"id": "session-price",
"value": "65.50" // Cena relace (Kč)
},
{
"id": "session-duration",
"value": "3600" // Délka relace (s)
},
{
"id": "session-energy-used",
"value": "11.31" // Nabito energie (kWh)
}
]
}Praktické využití snapshot dat
Kompletní monitoring stavu
async function getCompleteStatus(deviceId) {
const snapshot = await fetchSnapshot(deviceId);
const device = snapshot.data[0];
// Najít AC modul
const acModule = device.nodes.find(n => n.id === 'ac-module');
const evseState = acModule.sensors.find(s => s.id === 'evse-state');
// Najít elektroměr
const evMeter = device.nodes.find(n => n.id === 'ev-meter');
const power = evMeter.sensors.find(s => s.id === 'ev-meter-power');
return {
state: evseState.value,
power: parseFloat(power.value),
timestamp: new Date()
};
}Export všech senzorů do CSV
import csv
import json
def export_snapshot_to_csv(snapshot_data, filename):
with open(filename, 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(['Module', 'Sensor', 'Value', 'Unit'])
for node in snapshot_data['nodes']:
for sensor in node.get('sensors', []):
writer.writerow([
node['id'],
sensor['id'],
sensor.get('value', ''),
sensor.get('unit', '')
])Detekce změn stavu
let previousSnapshot = null;
async function detectChanges(deviceId) {
const currentSnapshot = await fetchSnapshot(deviceId);
if (previousSnapshot) {
// Porovnat hodnoty
const changes = compareSnapshots(previousSnapshot, currentSnapshot);
if (changes.length > 0) {
console.log('Detekované změny:', changes);
// Poslat notifikaci, uložit do DB, atd.
}
}
previousSnapshot = currentSnapshot;
}
// Spustit každých 30 sekund
setInterval(() => detectChanges('device-id'), 30000);Důležité poznámky
Formát hodnot
Všechny hodnoty v snapshot jsou typu string. Vždy je převádějte na správný datový typ:
const power = parseFloat(sensor.value); // Pro desetinná čísla
const state = sensor.value === 'true'; // Pro booleanOptimalizace
Snapshot obsahuje hodně dat. Pro běžný monitoring používejte raději Live Data endpoint, který je rychlejší.
Snapshot konkrétního nodu
GET /external/history/snapshot/{deviceId}/{nodeId}Získá historický snapshot konkrétního nodu v zařízení. Užitečné pro detailní analýzu jednotlivých komponent.
Parametry
deviceId- ID zařízenínodeId- ID nodu (např.ac-measurement,reports,control)from- Začátek období (ISO 8601)to- Konec období (ISO 8601)
Příklad odpovědi - AC Sensor node "ac-measurement"
{
"data": [{
"node": {
"formattedId": "ac-measurement-V1",
"id": "ac-measurement",
"rootTopic": "ac-measurement/ac-current-1",
"sensors": [
{
"id": "ac-current-1",
"value": "0.00",
"rootTopic": "ac-measurement/ac-current-1"
},
{
"id": "ac-current-2",
"value": "0.57",
"rootTopic": "ac-measurement/ac-current-2"
},
{
"id": "ac-current-3",
"value": "6.27",
"rootTopic": "ac-measurement/ac-current-3"
},
{
"id": "ac-phase-connection",
"value": "L1",
"rootTopic": "ac-measurement/ac-phase-connection"
},
{
"id": "distribution-system",
"value": "4-wire",
"rootTopic": "ac-measurement/distribution-system"
}
],
"options": [],
"telemetry": []
},
"owner": {
"id": 1694444441651503,
"email": "user@example.com",
"first_name": "John",
"last_name": "Doe"
}
}],
"status": 1
}Příklad použití - Python
import requests
from requests.auth import HTTPBasicAuth
from datetime import datetime, timedelta
def get_node_snapshot(device_id, node_id, hours_back=24):
"""Získá historický snapshot konkrétního nodu"""
API_URL = "https://cloud.mybox.pro/admin-panel/v1/external"
to_date = datetime.now()
from_date = to_date - timedelta(hours=hours_back)
response = requests.get(
f"{API_URL}/history/snapshot/{device_id}/{node_id}",
params={
'from': from_date.isoformat() + 'Z',
'to': to_date.isoformat() + 'Z'
},
auth=HTTPBasicAuth(API_KEY, API_SECRET)
)
if response.status_code == 200:
data = response.json()
if data['data']:
node_data = data['data'][0]['node']
# Zpracuj senzory
sensors = {}
for sensor in node_data.get('sensors', []):
sensors[sensor['id']] = sensor['value']
return {
'node_id': node_data['id'],
'sensors': sensors,
'telemetry': node_data.get('telemetry', []),
'options': node_data.get('options', [])
}
return None
# Použití
snapshot = get_node_snapshot('device-xxx', 'ac-measurement')
if snapshot:
print(f"Node: {snapshot['node_id']}")
print(f"AC Current L1: {snapshot['sensors'].get('ac-current-1', 'N/A')} A")
print(f"AC Current L2: {snapshot['sensors'].get('ac-current-2', 'N/A')} A")
print(f"AC Current L3: {snapshot['sensors'].get('ac-current-3', 'N/A')} A")Use cases pro node snapshots
- DLM monitoring - Sledování jednotlivých modulů v DLM systému
- Detailní diagnostika - Analýza specifických komponent
- Porovnání stavů - Srovnání různých nodů nebo časových období
- Audit změn - Sledování změn v konfiguraci nodů
Související endpointy
- Live Data - Rychlejší endpoint pro aktuální data
- Telemetrie - Historie konkrétních hodnot
- Informace o zařízení - Základní informace
- Node-level Monitoring - Kompletní dokumentace pro práci s nody