{ "_source": "JSONRPC.Introspect sur 192.168.1.75, 2026-08-25 — plugin 1.15.2+etm15 (194 méthodes / 101 notifications au total, dont 20/14 pour NymeaEnergy.*).", "_note": "nymea rejette toute clé inconnue AVANT le handler (jsonvalidator.cpp:143). Ce que la box déclare fait donc autorité sur ce que l'app a le droit d'envoyer. mechanism, lock, faultCode, budget et timestamp sont OPTIONNELS (o:) — omis, jamais nuls.", "GetLoadTelemetry": { "description": "Get a snapshot of the arbitration runtime state: surplus budget, per-load allocation, availability, fault code, active lock (seconds remaining), mechanism payload and decision reason. Reason and fault are CODES with numeric params - never human-readable sentences: the client renders them in the user's language. Identical payload to the LoadTelemetryChanged notification. 'timestamp' is the end of the last arbitration cycle and is omitted while no cycle has run yet.", "params": {}, "permissionScope": "PermissionScopeControlThings", "returns": { "degradedMode": "Bool", "loads": [ { "allocatedW": "Double", "available": "Bool", "decision": { "code": "String", "params": "Variant" }, "loadId": "String", "o:faultCode": "String", "o:lock": { "kind": "String", "remainingS": "Int" }, "o:mechanism": { "kind": "String", "o:chargingEnabled": "Bool", "o:currentA": "Double", "o:estimatedPowerW": "Double", "o:maxPowerW": "Double", "o:maxStageW": "Double", "o:percent": "Double", "o:phaseCount": "Uint", "o:pluggedIn": "Bool", "o:setpointW": "Double", "o:stageW": "Double", "o:state": "Int" } } ], "o:budget": { "allocatedW": "Double", "evReservedW": "Double", "recreditedW": "Double", "remainingW": "Double", "surplusW": "Double" }, "o:timestamp": "String" } }, "LoadTelemetryChanged": { "description": "Emitted whenever the arbitration runtime state changed significantly, and periodically (heartbeat) even when unchanged, so that a frozen arbitrator is detectable by a timestamp that stops advancing. Same payload as GetLoadTelemetry.", "params": { "degradedMode": "Bool", "loads": [ { "allocatedW": "Double", "available": "Bool", "decision": { "code": "String", "params": "Variant" }, "loadId": "String", "o:faultCode": "String", "o:lock": { "kind": "String", "remainingS": "Int" }, "o:mechanism": { "kind": "String", "o:chargingEnabled": "Bool", "o:currentA": "Double", "o:estimatedPowerW": "Double", "o:maxPowerW": "Double", "o:maxStageW": "Double", "o:percent": "Double", "o:phaseCount": "Uint", "o:pluggedIn": "Bool", "o:setpointW": "Double", "o:stageW": "Double", "o:state": "Int" } } ], "o:budget": { "allocatedW": "Double", "evReservedW": "Double", "recreditedW": "Double", "remainingW": "Double", "surplusW": "Double" }, "o:timestamp": "String" } }, "ClearLoadFault": { "description": "Clear the fault latch of a controllable load (ECS-410). Deliberate operator action: the fault never clears by itself.", "params": { "loadId": "String" }, "permissionScope": "PermissionScopeControlThings", "returns": { "energyError": "$ref:EnergyError" } }, "SetLoadConfig_params": { "loadConfigs": [ { "adapter": "String", "enabled": "Bool", "id": "String", "label": "String", "mode": "String", "o:domain": "String", "o:maxPowerW": "Uint", "o:minOffS": "Uint", "o:minOnS": "Uint", "o:needs": { "o:dailyDeadline": "String", "o:minEnergyWhPerDay": "Uint" }, "o:powerLevels": [ "Uint" ], "o:relays": [ { "powerW": "Uint", "thingId": "String" } ], "o:sgReady": { "o:minStateHoldS": "Uint", "o:states": [ { "estimatedPowerW": "Double", "relays": [ "String" ], "state": "Uint" } ] }, "priority": "Uint" } ] }, "LoadConfigChanged": { "description": "Emitted whenever the controllable load configuration changed.", "params": { "loadConfigs": [ "$ref:LoadConfig" ] } } }