# Moria API documentation # API Documentation ## List of Routes 1. **Google OAuth Callback** - **Method:** `GET` - **URL:** `/oauth/google/callback` - **Description:** Handles the callback from Google OAuth and redirects to the UI callback with the authentication token. 2. **User Information** - **Method:** `GET` - **URL:** `/auth/userinfo` - **Description:** Retrieves user information. - **Pre-handler:** Requires authentication check. 3. **Get User Data** - **Method:** `GET` - **URL:** `/auth/user/data` - **Description:** Retrieves user-specific data based on provided keys. - **Query Parameters:** - `keys` (string, required): Comma-separated list of keys. - **Pre-handler:** Requires authentication check. 4. **Set User Data** - **Method:** `POST` - **URL:** `/auth/user/data` - **Description:** Sets user-specific data. - **Request Body:** - `entries` (object, required): Key-value pairs of data to set. - **Pre-handler:** Requires authentication check. 5. **Delete User Data** - **Method:** `DELETE` - **URL:** `/auth/user/data` - **Description:** Deletes user-specific data based on provided keys. - **Request Body:** - `keys` (array of strings, required): List of keys to delete. - **Pre-handler:** Requires authentication check. 6. **Generate New Auth Token** - **Method:** `POST` - **URL:** `/auth/token` - **Description:** Generates a new authentication token. - **Pre-handler:** Requires authentication check. 7. **List Things** - **Method:** `GET` - **URL:** `/auth/list-things` - **Description:** Lists things with optional query parameters for filtering. - **Query Parameters:** - `query` (string): Query string for filtering. - `status` (string): Status filter. - `offset` (integer): Offset for pagination. - `limit` (integer): Limit for pagination. - **Pre-handler:** Requires authentication check. 8. **Tail Log** - **Method:** `GET` - **URL:** `/auth/tail-log` - **Description:** Retrieves aggregated logs with optional query parameters. - **Query Parameters:** - `key` (string, required): Log key. - `type` (string): Log type filter. - `tag` (string): Log tag filter. - `start` (integer): Start timestamp filter. - `end` (integer): End timestamp filter. - `offset` (integer): Offset for pagination. - `limit` (integer): Limit for pagination. - **Pre-handler:** Requires authentication check. 9. **Query Actions Batch** - **Method:** `GET` - **URL:** `/auth/actions/batch` - **Description:** Retrieves a batch of actions based on provided IDs. - **Query Parameters:** - `ids` (string, required): Comma-separated list of action IDs. - **Pre-handler:** Requires authentication check. 10. **Query Actions** - **Method:** `GET` - **URL:** `/auth/actions/:type` - **Description:** Queries actions based on type and optional filters. - **Path Parameters:** - `type` (string, required): Action type. - **Query Parameters:** - `gt` (integer): Greater than timestamp filter. - `gte` (integer): Greater than or equal to timestamp filter. - `lt` (integer): Less than timestamp filter. - `lte` (integer): Less than or equal to timestamp filter. - `limit` (integer): Limit for pagination. - `reverse` (boolean): Reverse order. - **Pre-handler:** Requires authentication check. 11. **Get Action** - **Method:** `GET` - **URL:** `/auth/actions/:type/:id` - **Description:** Retrieves an action based on type and ID. - **Path Parameters:** - `type` (string, required): Action type. - `id` (integer, required): Action ID. - **Pre-handler:** Requires authentication check. 12. **Push Action** - **Method:** `POST` - **URL:** `/auth/actions/voting` - **Description:** Pushes a new action for voting. - **Request Body:** - `query` (object, required): Action query. - `action` (string, required): Action name. - `params` (array, required): Action parameters. - **Pre-handler:** Requires authentication check. 13. **Vote Action** - **Method:** `PUT` - **URL:** `/auth/actions/voting/:id/vote` - **Description:** Votes on a specific action. - **Path Parameters:** - `id` (integer, required): Action ID. - **Request Body:** - `approve` (boolean, required): Approval status. - **Pre-handler:** Requires authentication check. 14. **Cancel Action** - **Method:** `DELETE` - **URL:** `/auth/actions/voting/:id/cancel` - **Description:** Cancels a specific action. - **Path Parameters:** - `id` (integer, required): Action ID. - **Pre-handler:** Requires authentication check. # **Tail Log Responses** ## Powermeter Log ### Tail Log - **Type:** powermeter - **Tag:** t-powermeter #### Log Object Example ```json { "ts": 1709266500000, "aggrTsRange": "", "alerts_aggr": {}, "site_power_w": 0 } ``` - **ts:** Timestamp of the log. - **aggrTsRange:** Aggregated timestamp range (empty in the example). - **alerts_aggr:** Aggregated alerts (empty in the example). - **site_power_w:** Site power in watts. ## Miner Log ### Tail Log - **Type:** miner - **Tag:** t-miner #### Log Object Example ```json { "ts": 1709266500000, "aggrTsRange": "", "hashrate_mhs_1m_sum_aggr": 601432498437.9084, "hashrate_mhs_1m_group_sum_aggr": { "bitdeer-10a": 25975985839.820015, "bitdeer-7a": 25975095509.82001, "bitdeer-9a": 25975245509.840008, ... }, "hashrate_mhs_1m_avg_aggr": 139177113.16929212, "hashrate_mhs_1m_cnt_aggr": 3977, "hashrate_mhs_1m_cnt_active_aggr": 3977, "power_w_sum_aggr": 16701560, "power_w_avg_aggr": 4370, "uptime_ms_avg_aggr": 35954523.79965192, "efficiency_w_ths_avg_aggr": 20.299284582893115, "frequency_mhz_avg_aggr": 507.5, "temperature_c_avg_aggr": 92.49276373420878, "temperature_c_group_avg_aggr": { "bitdeer-10a": 100.01470000000003, "bitdeer-7a": 99.91800000000005, ... }, "temperature_c_group_max_aggr": { "bitdeer-10a": null, "bitdeer-7a": null, ... }, "alerts_aggr": { "critical": 8901, "medium": 3977, "high": 1231 }, "offline_cnt": {}, "error_cnt": {}, ... "nominal_hashrate_mhs_avg_aggr": 197931022.72239617, "nominal_efficiency_w_ths_avg_aggr": 24.83928901885104, "nominal_hashrate_mhs_sum_aggr": 741423000000, "nominal_efficiency_w_ths_sum_aggr": 98707.59999999966 } ``` - `ts`: Timestamp of the log. - `aggrTsRange`: Aggregated timestamp range (empty in the example). - `hashrate_mhs_1m_sum_aggr`: Sum of 1-minute average hashrates across all miners. - `hashrate_mhs_1m_group_sum_aggr`: Sum of 1-minute average hashrates grouped by miner. - `hashrate_mhs_1m_avg_aggr`: Average 1-minute hashrate across all miners. - `hashrate_mhs_1m_cnt_aggr`: Count of 1-minute hashrate entries. - `hashrate_mhs_1m_cnt_active_aggr`: Count of active 1-minute hashrate entries. - `power_w_sum_aggr`: Sum of power consumption in watts. - `power_w_avg_aggr`: Average power consumption in watts. - `uptime_ms_avg_aggr`: Average miner uptime in milliseconds. - `efficiency_w_ths_avg_aggr`: Average efficiency in watts per terahash. - `frequency_mhz_avg_aggr`: Average miner frequency in megahertz. - `temperature_c_avg_aggr`: Average miner temperature in degrees Celsius. - `temperature_c_group_avg_aggr`: Average temperature grouped by miner. - `temperature_c_group_max_aggr`: Maximum temperature grouped by miner (null if not applicable). - `alerts_aggr`: Aggregated count of critical, medium, and high alerts. - `offline_cnt`, `error_cnt`, `power_mode_sleep_cnt`, `power_mode_low_cnt`, `power_mode_normal_cnt`, `power_mode_high_cnt`: Counts for various miner states and power modes. - `type_cnt`: Count of different miner types. - `offline_type_cnt`, `error_type_cnt`, `power_mode_sleep_type_cnt`, `power_mode_low_type_cnt`, `power_mode_normal_type_cnt`, `power_mode_high_type_cnt`: Counts for different miner states and power modes by type. - `hashrate_mhs_1m_type_group_sum_aggr`: Sum of 1-minute average hashrates grouped by miner type. - `hashrate_mhs_1m_type_group_avg_aggr`: Average 1-minute hashrate grouped by miner type. - `efficiency_w_ths_type_group_avg_aggr`: Average efficiency grouped by miner type. - `hashrate_mhs_1m_container_group_sum_aggr`: Sum of 1-minute average hashrates grouped by mining container. - `hashrate_mhs_1m_container_group_avg_aggr`: Average 1-minute hashrate grouped by mining container. - `efficiency_w_ths_container_group_avg_aggr`: Average efficiency grouped by mining container. - `nominal_hashrate_mhs_avg_aggr`: Average nominal hashrate across all miners. - `nominal_efficiency_w_ths_avg_aggr`: Average nominal efficiency in watts per terahash. - `nominal_hashrate_mhs_sum_aggr`: Sum of nominal hashrates across all miners. - `nominal_efficiency_w_ths_sum_aggr`: Sum of nominal efficiencies across all miners. ## Container Log ### Tail Log - **Type:** container - **Tag:** t-container #### Log Object Example ```json { "ts": 1709267100000, "aggrTsRange": "", "alerts_aggr": {}, "container_status_aggr": { "bitdeer-10a": "stopped" }, "container_power_w_aggr": { "bitdeer-10a": 63400 }, "container_specific_stats_group_aggr": { "bitdeer-10a": { "cold_temp_c_1_group": 44, "cold_temp_c_2_group": 44, "hot_temp_c_1_group": 0, "hot_temp_c_2_group": 27.7, "cold_temp_c_w_1_group": 0, "cold_temp_c_w_2_group": 26.6, "hot_temp_c_w_1_group": 0, "hot_temp_c_w_2_group": 27.2 }, "antspace-hydro-1": { "distribution_box1_power_group": 44, "distribution_box2_power_group": 44, "supply_liquid_flow_group": 44, "supply_liquid_pressure_group": 44, "return_liquid_pressure_group": 44, "supply_liquid_temp_group": 44, "return_liquid_temp_group": 44 } }, "container_nominal_hashrate_mhs_sum_aggr": 22032000000, "container_nominal_hashrate_mhs_avg_aggr": 22032000000, "container_nominal_efficiency_w_ths_avg_aggr": 26, "container_nominal_miner_capacity_sum_aggr": 108 } ``` - **ts**: Timestamp of the log. - **aggrTsRange**: Aggregated timestamp range (empty in the example). - **alerts_aggr**: Aggregated count of critical, medium, and high alerts. - **container_status_aggr**: Aggregated container status, indicating whether the container is running, stopped, or offline. - *Example*: "bitdeer-10a": "stopped" - **container_power_w_aggr**: Aggregated power consumption of the container in watts. - *Example*: "bitdeer-10a": 63400 - **container_specific_stats_group_aggr**: Aggregated specific statistics grouped by container, providing detailed metrics such as temperature, liquid flow, pressure, etc. - *for "bitdeer"*: - `cold_temp_c_1_group`: 44 - `cold_temp_c_2_group`: 44 - `hot_temp_c_1_group`: 0 - `hot_temp_c_2_group`: 27.7 - `cold_temp_c_w_1_group`: 0 - `cold_temp_c_w_2_group`: 26.6 - `hot_temp_c_w_1_group`: 0 - `hot_temp_c_w_2_group`: 27.2 - *for "antspace"*: - `distribution_box1_power_group`: 44 - `distribution_box2_power_group`: 44 - `supply_liquid_flow_group`: 44 - `supply_liquid_pressure_group`: 44 - `return_liquid_pressure_group`: 44 - `supply_liquid_temp_group`: 44 - `return_liquid_temp_group`: 44 - **container_nominal_hashrate_mhs_sum_aggr**: Sum of nominal hashrates across all miners within the container. - **container_nominal_hashrate_mhs_avg_aggr**: Average nominal hashrate across all miners within the container. - **container_nominal_efficiency_w_ths_avg_aggr**: Average nominal efficiency in watts per terahash within the container. - **container_nominal_miner_capacity_sum_aggr**: Sum of the nominal capacity of all miners within the container. ## Miner Pool Log ### Tail Log - **Type:** minerpool - **Tag:** t-minerpool #### Log Object Example ```json { "ts": 1709230800000, "aggrTsRange": "", "pool_snap": { "haven7346": { "success": true, "raw_errors": [], "stats": { "timestamp": 1709230798880, "balance": 0.0003474447999510195, "unsettled": 0.0003474447999510195, "revenue_24h": 0, "hashrate": 279670375560265, "hashrate_1h": 114320268444850, "hashrate_24h": 657474469695248, "hashrate_stale_1h": 143453351303817, "hashrate_stale_24h": 297697436932114, "worker_count": 11, "workers": [ { "id": "82.228.36.2", "name": "worker1828", "online": false, "last_updated": 40, "hashrate": 242369022044444, "hashrate_1h": 462152434906136, "hashrate_24h": 935863193525903, "hashrate_stale_1h": 184754862340453, "hashrate_stale_24h": 800014624419960 }, // ... (other workers) ], "containers": { "bitdeer-1a": { "workers": [ "worker1828", "worker2257", "worker9832", "worker7620", "worker9384", "worker1899", "worker5990", "worker2305", "worker7388", "worker7096", "haven7346" ], "hashrate": 5753050353966545, "hashrate_1h": 6456213390882272, "hashrate_24h": 5953873698620150, "hashrate_stale_1h": 5514739140052943, "hashrate_stale_24h": 5253581484689640, "active_workers_count": 5, "workers_count": 11 } } }, "config": {} } } } ``` - **ts:** Timestamp of the log. - **aggrTsRange:** Aggregated timestamp range. - **pool_snap:** Pool snapshot object containing detailed information. - **haven7346:** Pool account username. - **success:** Status of the pool snapshot retrieval. - **raw_errors:** List of raw errors . - **stats:** Statistics of the pool account. - **timestamp:** Timestamp of the statistics. - **balance:** Account balance. - **unsettled:** Unsettled balance. - **revenue_24h:** Revenue in the last 24 hours. - **hashrate:** Total hashrate. - **hashrate_1h:** Hashrate in the last hour. - **hashrate_24h:** Hashrate in the last 24 hours. - **hashrate_stale_1h:** Stale hashrate in the last hour. - **hashrate_stale_24h:** Stale hashrate in the last 24 hours. - **worker_count:** Total number of workers. - **workers:** List of worker details. - **containers:** Mining containers and their statistics. ## Electricity Log - **Type:** electricity - **Tag:** t-electricity ### Tail Log #### Log Object Example ```json { "ts": 1709200800000, "aggrTsRange": "", "energy_aggr": { "kuna": { "date": "2024-02-29", "hour": "7", "ts": 1709200800000, "active_energy_in_aggr": 64.06802299954167, "active_energy_out_aggr": 64.06802299954167, "reactive_energy_q1_aggr": 64.06802299954167, "reactive_energy_q2_aggr": 64.06802299954167, "reactive_energy_q3_aggr": 64.06802299954167, "reactive_energy_q4_aggr": 64.06802299954167, "spot_price_aggr": 83.36000248155912, "ute_energy_aggr": 64.29896069588739 } } } ``` - **ts:** Timestamp of the log. - **aggrTsRange:** Aggregated timestamp range (empty in the example). - **energy_aggr:** Aggregated energy information. - **kuna:** Electricity provider name. - **date:** Date of the recorded data. - **hour:** Hour of the recorded data. - **ts:** Timestamp of the recorded data. - **active_energy_in_aggr:** Aggregated active energy in (Consumed energy). - **active_energy_out_aggr:** Aggregated active energy out. - **reactive_energy_q1_aggr:** Aggregated reactive energy in quadrant 1. - **reactive_energy_q2_aggr:** Aggregated reactive energy in quadrant 2. - **reactive_energy_q3_aggr:** Aggregated reactive energy in quadrant 3. - **reactive_energy_q4_aggr:** Aggregated reactive energy in quadrant 4. - **spot_price_aggr:** Aggregated spot price. - **ute_energy_aggr:** Aggregated UTE energy (Available Energy). # **List Things Responses** ## Common Response Structure All things would have this common json structure. ```json { "id": "09w3zsh3v7mnic5", "type": "miner-am-s19xp", "tags": [ "t-miner-am-s19xp", "t-miner-am", "t-miner", "antminer", "1", "pos-1-1_a3", "container-bitdeer-9a", "site-pintado", "id-09w3zsh3v7mnic5" ], "info": { "site": "Pintado", "serialNum": "HTM3X09", "macAddress": "1f:93:60:7b:92:33", "container": "bitdeer-9a", "subnet": "127.0.0.0/24", "pos": "1-1_a3" }, "rack": "miner-am-s19xp-shelf-0", "address": "127.0.0.1", "port": 5020, "last": { "ts": 1710133155754, "err": null, "snap": { "success": true, "raw_errors": [], "stats": {}, "config": {}, }, "alerts": [ { "name": "wrong_miner_pool", "description": "wrong_miner_pool", "severity": "medium", "createdAt": 1708504506535, "uuid": "01b3ad4e-3079-46b8-a98c-dfa75874250d" }, ] } ``` - `id`: Thing Id. - `type`: Thing Type. - `tags`: Array of string thing tags. - `info`: Thing info - site : Thing site (Colonia | Pintado) - serialNum : Thing serial number - macAddress : Mac Address of the device - container: Container to which the thing belongs to - subnet : Thing subnet - pos : Position of the thing inside a container - rack: BE RackId to which the thing belongs - address: BE ip address of the thing - port: BE port of the thing - last: Last snap collected of the thing - ts: Timestamp at which the snap was collected - err: Error while snap collection - snap: Thing specific collected data - success: Snap success status - raw_errors: Raw Errors in the snap collected - stats: Thing specific stats - config: Thing specific config - alerts: Array of alerts produced for the thing. Alert stucture: - name: Name of the alerts - description: Detailed description of alert - severity: Severity of alert - Critical - High - Medium - createdAt: Timestamp when alert is triggered - uuid: UUID of the alert ## Miner Snap #### Response Object Example ```json snap: { "status": "mining", "power_w": 8000, "efficiency_w_ths": 30.05, "pool_status": [ { "pool": "stratum+tcp://btc.f2pool.com:1314", "accepted": 2020276, "rejected": 0 }, ], "uptime_ms": 2017388000, "hashrate_mhs": { "avg": 25012960, "t_5s": 24788648, "t_1m": 24788648, "t_5m": 24788648, "t_15m": 24788648 }, "frequency_mhz": { "avg": 720, "target": 720, "chips": [ { "index": 0, "current": 720 }, ] }, "temperature_c": { "ambient": 33.9, "max": 85, "avg": 85, "chips": [ { "index": 0, "max": 85, "min": 0, "avg": 85 }, ], "pcb": [ { "index": 0, "current": 75.53 }, ] } } config: { "network_config": { "mode": "dhcp", "ip_address": "127.0.0.1", "dns": [ "10.181.0.1" ], "ip_gw": "10.181.0.1", "ip_netmask": "255.255.0.0" }, "pool_config": [ { "url": "stratum+tcp://btc.f2pool.com:1314", "username": "haven7346" }, ], "power_mode": "normal", "suspended": false, "led_status": false, "firmware_ver": "20230714.15.Rel" } ``` - **stats** - **status**: Indicates whether the mining operation is active. - MinerStatuses = ```{ MINING: 'mining', OFFLINE: 'offline', SLEEPING: 'sleeping', ERROR: 'error', }``` - **power_w**: The total power consumption of the miner in watts. **(Not available for miner-am-s19xp)** - **efficiency_w_ths**: The energy efficiency of the miner, measured in watts per terahash (W/THs). **(Not available for miner-am-s19xp)** - **pool_status** - Details about individual mining pools, including their connection URL, accepted shares, and rejected shares. - **uptime_ms**: The total duration for which the miner has been operational, measured in milliseconds. - **hashrate_mhs_avg**: Hashrate stats in Mega Hashes per second MH/s. - **avg**: The average mining hashrate over a specific period. - **t_5s**: Hashrate value for the last 5 seconds. - **t_1m**: Hashrate value for the last 1 minute. - **t_5m**: Hashrate value for the last 5 minutes. - **t_15m**: Hashrate value for the last 15 minutes. - **frequency_mhz**: Frequency stats in megahertz (MHz) - **avg**: The average frequency of the mining chips, measured in megahertz (MHz). - **target**: The desired or target frequency for optimal performance. - **chips**: Individual frequencies of each mining chip. - **temperature_c**: Temperature stats in Celcius - **ambient**: The temperature of the mining environment. - **_max**: The maximum temperature recorded for miner. - **avg**: The average temperature of the miner. - **chips**: Detailed temperature information for each mining chip, including maximum, minimum, and average values. - **pcb**: Temperature information for the Printed Circuit Board (PCB) of the miner. - config - **network_config**: Network configuration - **mode**: The network configuration mode" - **ip_address**: The assigned IP address for the miner" - **dns**: The Domain Name System (DNS) server address, specified as a list. - **ip_gw**: The gateway IP address." - **ip_netmask**: The subnet mask for the miner's IP address" ## Powermeter Snap #### Response Object Example ```json { "power_w": 12.34, "powermeter_specific": { } } ``` - **power_w**: The total power consumption of the system in watts. - **powermeter_specific** : Power Meter Specific Configurations #### ABB-B24 Powermeter specific stats ```json { "total_energy_accumulators": { "active_import_wh": "123450", "active_export_wh": "123450", "active_net_wh": "123450", "reactive_import_varh": "123450", "reactive_export_varh": "123450", "reactive_net_varh": "123450", "apparent_import_vah": "123450", "apparent_export_vah": "123450", "apparent_net_vah": "123450" }, "instantaneous_values": { "v1_n_v": 123.4, "v2_n_v": 123.4, "v3_n_v": 123.4, "v1_v2_v": 123.4, "v2_v3_v": 123.4, "v1_v3_v": 123.4, "i1_a": 12.34, "i2_a": 12.34, "i3_a": 12.34, "in_a": 12.34, "active_power_total_w": 12.34, "active_power_l1_w": 12.34, "active_power_l2_w": 12.34, "active_power_l3_w": 12.34, "reactive_power_total_var": 12.34, "reactive_power_l1_var": 12.34, "reactive_power_l2_var": 12.34, "reactive_power_l3_var": 12.34, "apparent_power_total_va": 12.34, "apparent_power_l1_va": 12.34, "apparent_power_l2_va": 12.34, "apparent_power_l3_va": 12.34, "frequency_hz": 1.23, "phase_angle_power_total_deg": 12.3, "phase_angle_power_l1_deg": 12.3, "phase_angle_power_l2_deg": 12.3, "phase_angle_power_l3_deg": 12.3, "phase_angle_voltage_l1_deg": 12.3, "phase_angle_voltage_l2_deg": 12.3, "phase_angle_voltage_l3_deg": 12.3, "phase_angle_current_l1_deg": 12.3, "phase_angle_current_l2_deg": 12.3, "phase_angle_current_l3_deg": 12.3, "power_factor_total": 0.123, "power_factor_l1": 0.123, "power_factor_l2": 0.123, "power_factor_l3": 0.123 }, "identification_data": { "serial_num": 1234, "firmware_ver": "1.1.1", "modbus_mapping_ver": "0001" }, "miscellaneous": { "error_flags": [ false, ], "warning_flags": [ true, ], "alarm_flags": [ false, ] }, "settings": { "current_transformer_ratio_numerator": 1234, "current_transformer_ratio_denominator": 1234, "currency_conversion_factor": 12.34 }, "dmtme": { "_3_phase_system_voltage_v": 1234, "phase_voltage_l1_n_v": 1234, "phase_voltage_l2_n_v": 1234, "phase_voltage_l3_n_v": 1234, "line_voltage_l1_l2_v": 1234, "line_voltage_l2_l3_v": 1234, "line_voltage_l1_l3_v": 1234, "line_current_l1_a": 1.234, "line_current_l2_a": 1.234, "line_current_l3_a": 1.234, "_3_phase_system_power_factor": 1234000, "power_factor_l1": 1234000, "power_factor_l2": 1234000, "power_factor_l3": 1234000, "_3_phase_system_apparent_power_va": 1234, "apparent_power_l1_va": 1234, "apparent_power_l2_va": 1234, "apparent_power_l3_va": 1234, "_3_phase_system_active_power_w": 1234, "active_power_l1_w": 1234, "active_power_l2_w": 1234, "active_power_l3_w": 1234, "_3_phase_system_reactive_power_var": 1234, "reactive_power_l1_var": 1234, "reactive_power_l2_var": 1234, "reactive_power_l3_var": 1234, "_3_phase_system_active_energy_wh": 12.34, "_3_phase_system_reactive_energy_varh": 12.34, "frequency_hz": 1.234, "current_transformer_ratio": 1234 } } ``` - **total_energy_accumulators**: - **active_import_wh**: Accumulated active energy imported in watt-hours. - **active_export_wh**: Accumulated active energy exported in watt-hours. - **active_net_wh**: Net active energy accumulated in watt-hours. - **reactive_import_varh**: Accumulated reactive energy imported in var-hours. - **reactive_export_varh**: Accumulated reactive energy exported in var-hours. - **reactive_net_varh**: Net reactive energy accumulated in var-hours. - **apparent_import_vah**: Accumulated apparent energy imported in volt-ampere-hours. - **apparent_export_vah**: Accumulated apparent energy exported in volt-ampere-hours. - **apparent_net_vah**: Net apparent energy accumulated in volt-ampere-hours. - **instantaneous_values**: - **v1_n_v**: Voltage phase 1 to neutral in volts. - **v2_n_v**: Voltage phase 2 to neutral in volts. - **v3_n_v**: Voltage phase 3 to neutral in volts. - **v1_v2_v**: Voltage phase 1 to phase 2 in volts. - **v2_v3_v**: Voltage phase 2 to phase 3 in volts. - **v1_v3_v**: Voltage phase 1 to phase 3 in volts. - **i1_a**: Current phase 1 in amperes. - **i2_a**: Current phase 2 in amperes. - **i3_a**: Current phase 3 in amperes. - **in_a**: Neutral current in amperes. - **active_power_total_w**: Total active power in watts. - **active_power_l1_w**: Active power in phase 1 in watts. - **active_power_l2_w**: Active power in phase 2 in watts. - **active_power_l3_w**: Active power in phase 3 in watts. - **reactive_power_total_var**: Total reactive power in volt-amperes reactive (VAR). - **reactive_power_l1_var**: Reactive power in phase 1 in VAR. - **reactive_power_l2_var**: Reactive power in phase 2 in VAR. - **reactive_power_l3_var**: Reactive power in phase 3 in VAR. - **apparent_power_total_va**: Total apparent power in volt-amperes (VA). - **apparent_power_l1_va**: Apparent power in phase 1 in VA. - **apparent_power_l2_va**: Apparent power in phase 2 in VA. - **apparent_power_l3_va**: Apparent power in phase 3 in VA. - **frequency_hz**: The frequency of the system in hertz. - **phase_angle_power_total_deg**: Phase angle of total power in degrees. - **phase_angle_power_l1_deg**: Phase angle of power in phase 1 in degrees. - **phase_angle_power_l2_deg**: Phase angle of power in phase 2 in degrees. - **phase_angle_power_l3_deg**: Phase angle of power in phase 3 in degrees. - **phase_angle_voltage_l1_deg**: Phase angle of voltage in phase 1 in degrees. - **phase_angle_voltage_l2_deg**: Phase angle of voltage in phase 2 in degrees. - **phase_angle_voltage_l3_deg**: Phase angle of voltage in phase 3 in degrees. - **phase_angle_current_l1_deg**: Phase angle of current in phase 1 in degrees. - **phase_angle_current_l2_deg**: Phase angle of current in phase 2 in degrees. - **phase_angle_current_l3_deg**: Phase angle of current in phase 3 in degrees. - **power_factor_total**: Power factor of the total system. - **power_factor_l1**: Power factor in phase 1. - **power_factor_l2**: Power factor in phase 2. - **power_factor_l3**: Power factor in phase 3. - **identification_data**: - **serial_num**: Serial number of the power meter. - **firmware_ver**: Firmware version of the power meter. - **modbus_mapping_ver**: Modbus mapping version of the power meter. - **miscellaneous**: - **error_flags**: Flags indicating various error states. - **warning_flags**: Flags indicating various warning states. - **alarm_flags**: Flags indicating various alarm states. - **settings**: - **current_transformer_ratio_numerator**: Numerator of the current transformer ratio. - **current_transformer_ratio_denominator**: Denominator of the current transformer ratio. - **currency_conversion_factor**: Conversion factor for currency. - **dmtme**: - **_3_phase_system_voltage_v**: Voltage of the 3-phase system in volts. - **phase_voltage_l1_n_v**: Phase voltage in phase 1 to neutral in volts. - **phase_voltage_l2_n_v**: Phase voltage in phase 2 to neutral in volts. - **phase_voltage_l3_n_v**: Phase voltage in phase 3 to neutral in volts. - **line_voltage_l1_l2_v**: Line voltage between phase 1 and phase 2 in volts. - **line_voltage_l2_l3_v**: Line voltage between phase 2 and phase 3 in volts. - **line_voltage_l1_l3_v**: Line voltage between phase 1 and phase 3 in volts. - **line_current_l1_a**: Line current in phase 1 in amperes. - **line_current_l2_a**: Line current in phase 2 in amperes. - **line_current_l3_a**: Line current in phase 3 in amperes. - **_3_phase_system_power_factor**: Power factor of the 3-phase system. - **power_factor_l1**: Power factor in phase 1. - **power_factor_l2**: Power factor in phase 2. - **power_factor_l3**: Power factor in phase 3. - **_3_phase_system_apparent_power_va**: Apparent power of the 3-phase system in volt-amperes. - **apparent_power_l1_va**: Apparent power in phase 1 in volt-amperes. - **apparent_power_l2_va**: Apparent power in phase 2 in volt-amperes. - **apparent_power_l3_va**: Apparent power in phase 3 in volt-amperes. - **_3_phase_system_active_power_w**: Active power of the 3-phase system in watts. - **active_power_l1_w**: Active power in phase 1 in watts. - **active_power_l2_w**: Active power in phase 2 in watts. - **active_power_l3_w**: Active power in phase 3 in watts. - **_3_phase_system_reactive_power_var**: Reactive power of the 3-phase system in VAR. - **reactive_power_l1_var**: Reactive power in phase 1 in VAR. - **reactive_power_l2_var**: Reactive power in phase 2 in VAR. - **reactive_power_l3_var**: Reactive power in phase 3 in VAR. - **_3_phase_system_active_energy_wh**: Accumulated active energy of the 3-phase system in watt-hours. - **_3_phase_system_reactive_energy_varh**: Accumulated reactive energy of the 3-phase system in var-hours. - **frequency_hz**: The frequency of the 3-phase system in hertz. - **current_transformer_ratio**: Current transformer ratio. #### ABB-M1-M20 Powermeter specific stats ```json { "energy": { "active_import_energy_wh": "123450", "active_export_energy_wh": "123450", "reactive_import_energy_varh": "123450", "reactive_export_energy_varh": "123450", "apparent_import_energy_vah": "123450" }, "realtime": { "three_phase_system_v": 123.4, "phase_voltage_l1_v": 123.4, "phase_voltage_l2_v": 123.4, "phase_voltage_l3_v": 123.4, "line_voltage_l1_l2_v": 123.4, "line_voltage_l2_l3_v": 123.4, "line_voltage_l3_l1_v": 123.4, "three_phase_current_a": 12.34, "current_l1_a": 12.34, "current_l2_a": 12.34, "current_l3_a": 12.34, "current_n_a": 12.34, "active_power_total_w": 22135231, "active_power_l1_w": -7337639, "active_power_l2_w": -7488285, "active_power_l3_w": -7309305, "reactive_power_total_var": -2086731, "reactive_power_l1_var": -627943, "reactive_power_l2_var": -709440, "reactive_power_l3_var": -749348, "apparent_power_total_va": 22247591, "apparent_power_l1_va": 7363807, "apparent_power_l2_va": 7528042, "apparent_power_l3_va": 7355742, "frequency_hz": 12.34, "power_factor_total": 0.123, "power_factor_l1": 0.123, "power_factor_l2": 0.123, "power_factor_l3": 0.123 }, "harmonics": { "voltage": { "l1_thd_pct": 12.3, "l2_thd_pct": 12.3, "l3_thd_pct": 12.3, "l1_l2_thd_pct": 12.3, "l3_l2_thd_pct": 12.3, "l1_l3_thd_pct": 12.3 }, "current": { "l1_thd_pct": 12.3, "l2_thd_pct": 12.3, "l3_thd_pct": 12.3 } } } ``` - **energy** - **active_import_energy_wh**: Accumulated active energy imported in watt-hours. - **active_export_energy_wh**: Accumulated active energy exported in watt-hours. - **reactive_import_energy_varh**: Accumulated reactive energy imported in var-hours. - **reactive_export_energy_varh**: Accumulated reactive energy exported in var-hours. - **apparent_import_energy_vah**: Accumulated apparent energy imported in volt-ampere-hours. - **realtime** - **three_phase_system_v**: Voltage of the three-phase system in volts. - **phase_voltage_l1_v**: Phase voltage in phase 1 in volts. - **phase_voltage_l2_v**: Phase voltage in phase 2 in volts. - **phase_voltage_l3_v**: Phase voltage in phase 3 in volts. - **line_voltage_l1_l2_v**: Line voltage between phase 1 and phase 2 in volts. - **line_voltage_l2_l3_v**: Line voltage between phase 2 and phase 3 in volts. - **line_voltage_l3_l1_v**: Line voltage between phase 3 and phase 1 in volts. - **three_phase_current_a**: Current of the three-phase system in amperes. - **current_l1_a**: Current in phase 1 in amperes. - **current_l2_a**: Current in phase 2 in amperes. - **current_l3_a**: Current in phase 3 in amperes. - **current_n_a**: Neutral current in amperes. - **active_power_total_w**: Total active power in watts. - **active_power_l1_w**: Active power in phase 1 in watts. - **active_power_l2_w**: Active power in phase 2 in watts. - **active_power_l3_w**: Active power in phase 3 in watts. - **reactive_power_total_var**: Total reactive power in volt-amperes reactive (VAR). - **reactive_power_l1_var**: Reactive power in phase 1 in VAR. - **reactive_power_l2_var**: Reactive power in phase 2 in VAR. - **reactive_power_l3_var**: Reactive power in phase 3 in VAR. - **apparent_power_total_va**: Total apparent power in volt-amperes (VA). - **apparent_power_l1_va**: Apparent power in phase 1 in VA. - **apparent_power_l2_va**: Apparent power in phase 2 in VA. - **apparent_power_l3_va**: Apparent power in phase 3 in VA. - **frequency_hz**: The frequency of the system in hertz. - **power_factor_total**: Power factor of the total system. - **power_factor_l1**: Power factor in phase 1. - **power_factor_l2**: Power factor in phase 2. - **power_factor_l3**: Power factor in phase 3. - **harmonics** - **voltage** - **l1_thd_pct**: Total Harmonic Distortion (THD) percentage in phase 1 voltage. - **l2_thd_pct**: Total Harmonic Distortion (THD) percentage in phase 2 voltage. - **l3_thd_pct**: Total Harmonic Distortion (THD) percentage in phase 3 voltage. - **l1_l2_thd_pct**: THD percentage between phase 1 and phase 2 voltage. - **l3_l2_thd_pct**: THD percentage between phase 3 and phase 2 voltage. - **l1_l3_thd_pct**: THD percentage between phase 1 and phase 3 voltage. - **current** - **l1_thd_pct**: Total Harmonic Distortion (THD) percentage in phase 1 current. - **l2_thd_pct**: Total Harmonic Distortion (THD) percentage in phase 2 current. - **l3_thd_pct**: Total Harmonic Distortion (THD) percentage in phase 3 current. ## Container Snap #### Response Object Example ```json stats: { "status": "error", "errors": [], "power_w": 63400, "alarm_status": false, "ambient_temp_c": 28.8, "humidity_percent": 83.4, "container_specific": [], }, config: { } ``` - **stats** - **status**: The overall status of the container. - CONTAINER_STATUS = ```{ RUNNING: 'running', OFFLINE: 'offline', STOPPED: 'stopped', }``` - **errors**: A list of error details, including the error name. - **power_w**: Total power consumption of the container in watts. - **alarm_status**: Indicates whether there is an alarm. - **ambient_temp_c**: Ambient temperature in degrees Celsius. - **humidity_percent**: Humidity level in percentage. - **container_specific**: Container specific stats. - **config** - **container_specific**: Container specific config #### Bitdeer Container specific snap - Container specific stats ```json { "alarms": [], "phase_data": { "a": { "voltage_v": 236.2, "current_a": 89.5, "power_w": 21100 }, "b": { "voltage_v": 236.7, "current_a": 88.3, "power_w": 21000 }, "c": { "voltage_v": 236, "current_a": 90.2, "power_w": 21300 } }, "pdu_data": [ { "pdu": "1-1", "power_w": 0, "current_a": 0, "sockets": [ { "socket": "a1", "enabled": false, "power_w": 0, "current_a": 0 }, ... ] }, ... ], "cooling_system": { "oil_pump": [ { "index": 0, "enabled": false, "hot_temp_c": 0, "cold_temp_c": 44, "tank": false }, { "index": 1, "enabled": true, "hot_temp_c": 27.7, "cold_temp_c": 44, "tank": true } ], "water_pump": [ { "index": 0, "enabled": false, "hot_temp_c": 0, "cold_temp_c": 0 }, { "index": 1, "enabled": true, "hot_temp_c": 27.2, "cold_temp_c": 26.6 } ], "dry_cooler": [ { "index": 0, "enabled": true, "fans": [ { "index": 0, "enabled": false } ] } ], "exhaust_fan_enabled": true }, "ups": { "battery_percent": 100, "temp_c": 38, "input": { "voltage_v": 235.5, "freq_hz": 49.9 }, "output": { "voltage_v": 219.9, "freq_hz": 49.9 } } } ``` - **Alarms**: List - **Phase Data**: - `a`: - `voltage_v: Voltage in Volts - `current_a` Current in Amperes - `power_w` Power in Watts - `b`: - `voltage_v` - `current_a` - `power_w` - `c`: - `voltage_v` - `current_a` - `power_w` - **PDU Data**: - `pdu` - `power_w` - `current_a` - `sockets`: - `socket`: `enabled`, `power_w`, `current_a` - ... (similar structure for other sockets) - (Similar structure for other PDUs) - **Cooling System**: - **Oil Pump**: - Pump 0: - `index`, `enabled`, `hot_temp_c`, `cold_temp_c`, `tank` - Pump 1: - `index`, `enabled`, `hot_temp_c`, `cold_temp_c`, `tank` - **Water Pump**: - Pump 0: - `index`, `enabled`, `hot_temp_c`, `cold_temp_c` - Pump 1: - `index`, `enabled`, `hot_temp_c`, `cold_temp_c` - **Dry Cooler**: - Cooler 0: - `index`, `enabled` - `fans` [0-7]: Enabled/Disabled - Cooler 1: - (Similar structure as Cooler 0) - `exhaust_fan_enabled` - **UPS (Uninterruptible Power Supply)**: - `battery_percent` - `temp_c` - **Input**: - `voltage_v` - `freq_hz` - **Output**: - `voltage_v` - `freq_hz` - Container specific config ```json { "container_specific": { "mqtt_url": "mqtt://undefined:undefined", "tactics": { "start_policy": { "type": "disabled", "coin": { "start_price": 25000, "current_price": 26000 }, "electricity": { "start_price": 0.8, "current_price": 1.5 } }, "stop_policy": { "type": "disabled", "coin": { "stop_price": 24000, "current_price": 26000 }, "electricity": { "stop_price": 2, "current_price": 1.5 } } }, "alarms": { "oil_temp": { "high_c": 60, "low_c": 50 }, "water_temp": { "high_c": 50, "low_c": 45 } }, "set_temps": { "cold_oil_temp_c": 45, "exhaust_fan_temp_c": 30 } } } ``` - `mqtt_url`: The MQTT broker URL for communication. - **tactics**: - **start_policy**: - `type`: The type of start policy, whether enabled or disabled. - `coin`: - `start_price`: The start price for cryptocurrency. - `current_price`: The current price of cryptocurrency. - `electricity`: - `start_price`: The start price for electricity. - `current_price`: The current price of electricity. - **stop_policy**: - `type`: The type of stop policy, whether enabled or disabled. - `coin`: - `stop_price`: The stop price for cryptocurrency. - `current_price`: The current price of cryptocurrency. - `electricity`: - `stop_price`: The stop price for electricity. - `current_price`: The current price of electricity. - **alarms**: - oil_temp - `high_c`: The high temperature threshold for oil. - `low_c`: The low temperature threshold for oil. - water_temp - `high_c`: The high temperature threshold for water. - `low_c`: The low temperature threshold for water. - set_temps: Setting Temperatures - `cold_oil_temp_c`: The temperature for cold oil. - `exhaust_fan_temp_c`: The temperature for the exhaust fan. #### MicroBT container sprecific snap ```json stats: { "power_meters": [ { "index": "01", "status": 1, "voltage_ab": 0, "voltage_bc": 0, "voltage_ca": 0, "total_power_factor": 0.91, "freq": 0.49, "current_a": 9.14, "current_b": 9.07, "current_c": 9.69, "total_active_power": 311.53, "total_apparent_power": 311.53, "total_active_energy": 311.53 } ], "pdu_data": [ { "pdu": "1", "status": 1, "buzzer": 0, "sockets": [ { "socket": "1", "enabled": true } ], "frequency": 0, "voltage_ab": -258.97, "voltage_ca": -259.4, "voltage_bc": -259.92, "current_a": 0, "current_b": 0, "current_c": 0, "total_power": 103.98, "access_control_alarm": [ { "index": "0", "status": false } ], "infrared_alarm": [ { "index": "0", "status": false } ], "water_ingress_alarm": [ { "index": "0", "status": false } ], "smoke_detection_alarm": [ { "index": "0", "status": false } ], "high_wind_speed_alarm": 0, "low_wind_speed_alarm": 0 } ], "env": { "status": 1, "smoke_detector": 0, "water_ingress_detector": 0 }, "cdu": { "protocol_version": 0.4, "indoor_dew_point_temperature": 0, "outdoor_ambient_temperature_sensor_fault": false, "indoor_temperature_humidity_sensor_fault": false, "makeup_water_pump_fault": false, "power_supply_fault": false, "water_immersion_fault": false, "unit_inlet_temp_t2": 25.3, "unit_inlet_pressure_p2": 25.3, "unit_outlet_pressure_p3": 25.3, "circulation_pump_inlet_pressure_p1": 25.3, "circulation_pump_outlet_pressure_p5": 25.3, "circulation_pump_running_status": "stopped", "circulation_pump_speed": 1, "filter_pressure_difference": 0, "cooling_temp_t1": 25.3, "cooling_system_status": 1.23, "system_main_control": false, "circulation_pump_switch": "manual", "drain_valve_switch": "manual", "cooling_fan_switch": "auto", "makeup_water_pump_switch": "manual", "cycle_pump_control": 1, "cooling_fan_control": 1, "makeup_water_pump_control": true, "buzzer_alarm": false, "cooling_fan_running_speed_threshold": 6.54, "cooling_fan_start_temperature_threshold": 3.21, "cooling_fan_stop_temperature_threshold": 0 } } config: { "diag": { "communicate_status": 0, "software_version": 0, "pcb_version": 0, "hardware_version": 0, "year": 0, "month": 0, "day": 0, "cpu_utilization_rate": 0, "hard_drive_space_usage_rate": 0, "memory_utilization_rate": 0, "eth": { "speed": 0, "upstream_traffic": 0, "downstream_traffic": 0 } } } ``` - **stats** - **power_meters**: - **index**: Identifier for the power meter. - **status**: Represents the status of the power meter. - **voltage_ab**: Voltage between phase A and B. - **voltage_bc**: Voltage between phase B and C. - **voltage_ca**: Voltage between phase C and A. - **total_power_factor**: Power factor of the total power. - **freq**: Frequency of the power. - **current_a**: Current in phase A. - **current_b**: Current in phase B. - **current_c**: Current in phase C. - **total_active_power**: Total active power. - **total_apparent_power**: Total apparent power. - **total_active_energy**: Total active energy. - **pdu_data**: - **pdu**: Identifier for the Power Distribution Unit. - **status**: Represents the status of the Power Distribution Unit. - **buzzer**: Buzzer status. - **sockets**: - **socket**: Identifier for the socket. - **enabled**: Indicates whether the socket is enabled. - **frequency**: Frequency of the power. - **voltage_ab**: Voltage between phase A and B. - **voltage_ca**: Voltage between phase C and A. - **voltage_bc**: Voltage between phase B and C. - **current_a**: Current in phase A. - **current_b**: Current in phase B. - **current_c**: Current in phase C. - **total_power**: Total power. - **access_control_alarm**: Access control alarm status. - **infrared_alarm**: Infrared alarm status. - **water_ingress_alarm**: Water ingress alarm status. - **smoke_detection_alarm**: Smoke detection alarm status. - **high_wind_speed_alarm**: High wind speed alarm status. - **low_wind_speed_alarm**: Low wind speed alarm status. - **env**: - **status**: Represents the status of the environment. - **smoke_detector**: Smoke detector status. - **water_ingress_detector**: Water ingress detector status. - **cdu**: - **protocol_version**: Protocol version. - **indoor_dew_point_temperature**: Indoor dew point temperature. - **outdoor_ambient_temperature_sensor_fault**: Outdoor ambient temperature sensor fault status. - **indoor_temperature_humidity_sensor_fault**: Indoor temperature humidity sensor fault status. - **makeup_water_pump_fault**: Makeup water pump fault status. - **power_supply_fault**: Power supply fault status. - **water_immersion_fault**: Water immersion fault status. - **unit_inlet_temp_t2**: Unit inlet temperature at point T2. - **unit_inlet_pressure_p2**: Unit inlet pressure at point P2. - **unit_outlet_pressure_p3**: Unit outlet pressure at point P3. - **circulation_pump_inlet_pressure_p1**: Circulation pump inlet pressure at point P1. - **circulation_pump_outlet_pressure_p5**: Circulation pump outlet pressure at point P5. - **circulation_pump_running_status**: Circulation pump running status. - **circulation_pump_speed**: Circulation pump speed. - **filter_pressure_difference**: Filter pressure difference. - **cooling_temp_t1**: Cooling temperature at point T1. - **cooling_system_status**: Cooling system status. - **system_main_control**: System main control status. - **circulation_pump_switch**: Circulation pump switch status. - **drain_valve_switch**: Drain valve switch status. - **cooling_fan_switch**: Cooling fan switch status. - **makeup_water_pump_switch**: Makeup water pump switch status. - **cycle_pump_control**: Cycle pump control status. - **cooling_fan_control**: Cooling fan control status. - **makeup_water_pump_control**: Makeup water pump control status. - **buzzer_alarm**: Buzzer alarm status. - **cooling_fan_running_speed_threshold**: Cooling fan running speed threshold. - **cooling_fan_start_temperature_threshold**: Cooling fan start temperature threshold. - **cooling_fan_stop_temperature_threshold**: Cooling fan stop temperature threshold. - **config** - **communicate_status**: Represents the communication status. - **software_version**: Denotes the version of the software. - **pcb_version**: Represents the version of the printed circuit board (PCB). - **hardware_version**: Indicates the version of the hardware. - **year**: Represents the year. - **month**: Represents the month. - **day**: Represents the day. - **cpu_utilization_rate**: Represents the CPU utilization rate. - **hard_drive_space_usage_rate**: Represents the rate of hard drive space usage. - **memory_utilization_rate**: Represents the rate of memory utilization. - **eth**: - **speed**: Denotes the speed of the Ethernet connection. - **upstream_traffic**: Represents the upstream traffic in the Ethernet connection. - **downstream_traffic**: Represents the downstream traffic in the Ethernet connection. #### ACME Container specific snap ```json stats: { "status": "running", "ambient_temp_c": 6, "container_specific": { "left": { ...container side stats }, "right": { ... container side stats }, "container_air_temp": 6, "cabinet_air_temp": 6 } } config: { "container_specific": { "left": { "admin_main_relay": 1, "admin_main_km": 1, "admin_pump_km": 1, "liquid_step_interval": "5", "liquid_target_temp": 20, "liquid_alert_temp": 60, "pressure_stab_interval": "60", "pressure_stab_target": 60, "fan_min_freq": 40 }, "right": { "admin_main_relay": 1, "admin_main_km": 1, "admin_pump_km": 1, "liquid_step_interval": "5", "liquid_target_temp": 20, "liquid_alert_temp": 60, "pressure_stab_interval": "60", "pressure_stab_target": 60, "fan_min_freq": 40 }, "high_air_temp": 80, "calibration": { "left": { "pressure_in_min": 100, "pressure_in_delta": 1, "pressure_out_min": 100, "pressure_out_delta": 1 }, "right": { "pressure_in_min": 100, "pressure_in_delta": 1, "pressure_out_min": 100, "pressure_out_delta": 1 } } } } ``` ##### Container side stats: ```json { "front_temp_in": 20, "rear_temp_in": 20, "front_temp_out": 30, "rear_temp_out": 30, "front_pressure_in": 2, "front_pressure_out": 2, "rear_pressure_in": 2, "rear_pressure_out": 2, "freq_front": 60, "freq_rear": 60, "main_status": "OK", "temp_status": "OK", "level_status": "OK", "acb_feedback_status1": true, "acb_feedback_status2": true, "ackm_feedback_status": true, "front_pump_km_feedback_status": true, "rear_pump_km_feedback_status": true, "front_pump_cb_feedback_status": true, "rear_pump_cb_feedback_status": true, "accb_feedback_status": true, "acb_logic_status1": true, "acb_logic_status2": true, "ackm_status": true, "front_pump_km_status": true, "rear_pump_km_status": true } ``` - **stats**: - **left**: Container left side stats - **right**: Container right side stats - **container_air_temp**: Container air temperature. - **cabinet_air_temp**: Cabinet air temperature. Container side stats: - **front_temp_in**: Front temperature inside on the side. - **rear_temp_in**: Rear temperature inside on the side. - **front_temp_out**: Front temperature outside on the side. - **rear_temp_out**: Rear temperature outside on the side. - **front_pressure_in**: Front pressure inside on the side. - **front_pressure_out**: Front pressure outside on the side. - **rear_pressure_in**: Rear pressure inside on the side. - **rear_pressure_out**: Rear pressure outside on the side. - **freq_front**: Frequency at the front on the side. - **freq_rear**: Frequency at the rear on the side. - **main_status**: Main status on the side. - **temp_status**: Temperature status on the side. - **level_status**: Level status on the side. - **acb_feedback_status1**: ACB feedback status 1 on the side. - **acb_feedback_status2**: ACB feedback status 2 on the side. - **ackm_feedback_status**: ACKM feedback status on the side. - **front_pump_km_feedback_status**: Front pump KM feedback status on the side. - **rear_pump_km_feedback_status**: Rear pump KM feedback status on the side. - **front_pump_cb_feedback_status**: Front pump CB feedback status on the side. - **rear_pump_cb_feedback_status**: Rear pump CB feedback status on the side. - **accb_feedback_status**: ACCB feedback status on the side. - **acb_logic_status1**: ACB logic status 1 on the side. - **acb_logic_status2**: ACB logic status 2 on the side. - **ackm_status**: ACKM status on the side. - **front_pump_km_status**: Front pump KM status on the side. - **rear_pump_km_status**: Rear pump KM status on the side. - **config** - **left**: - **admin_main_relay**: Status of the left admin main relay. - **admin_main_km**: Status of the left admin main KM. - **admin_pump_km**: Status of the left admin pump KM. - **liquid_step_interval**: Interval for liquid step on the left side. - **liquid_target_temp**: Target liquid temperature on the left side. - **liquid_alert_temp**: Alert temperature for liquid on the left side. - **pressure_stab_interval**: Interval for pressure stabilization on the left side. - **pressure_stab_target**: Target pressure for stabilization on the left side. - **fan_min_freq**: Minimum frequency for the fan on the left side. - **right**: - **admin_main_relay**: Status of the right admin main relay. - **admin_main_km**: Status of the right admin main KM. - **admin_pump_km**: Status of the right admin pump KM. - **liquid_step_interval**: Interval for liquid step on the right side. - **liquid_target_temp**: Target liquid temperature on the right side. - **liquid_alert_temp**: Alert temperature for liquid on the right side. - **pressure_stab_interval**: Interval for pressure stabilization on the right side. - **pressure_stab_target**: Target pressure for stabilization on the right side. - **fan_min_freq**: Minimum frequency for the fan on the right side. - **high_air_temp**: High air temperature. - **calibration**: - **left**: - **pressure_in_min**: Minimum pressure in calibration on the left side. - **pressure_in_delta**: Delta pressure in calibration on the left side. - **pressure_out_min**: Minimum pressure out calibration on the left side. - **pressure_out_delta**: Delta pressure out calibration on the left side. - **right**: - **pressure_in_min**: Minimum pressure in calibration on the right side. - **pressure_in_delta**: Delta pressure in calibration on the right side. - **pressure_out_min**: Minimum pressure out calibration on the right side. - **pressure_out_delta**: Delta pressure out calibration on the right side. #### Antspace Immersion Container specific snap ```json stats: { "protocol_version": 5, "disconnect": false, "pid_mode": false, "running_mode": false, "leakage_fault": true, "supply_liquid_temp_too_high": true, "supply_liquid_temp_high": true, "supply_liquid_set_temp": 0, "longitude_direction": 0, "longitude": 0, "latitude_direction": 0, "latitude": 0, "pump_ready": false, "pump_operation": false, "pump_alarm": true, "pump_run": false, "pump_start": false, "server_on": false, "one_pump": false, "second_pump1": false, "second_pump2": false, "dry_cooler_freq_run": false, "dry_cooler_power_freq_run": false, "container_fan": false, "valve1_open": false, "valve1_close": false, "valve2_open": false, "valve2_close": false, "primary_circulating_pump": false, "dry_cooler_power_fre_fault": true, "dry_cooler_fre_conv": true, "second_pump1_fault": true, "second_pump2_fault": true, "fan_fault": true, "phasefailure": true, "supply_liquid_temp_fault": true, "return_liquid_temp_fault": true, "power_distribution_Fault": true, "lever_sensor_fault": true, "smoke_sensor_fault": true, "return_liquid_temp_high": true, "return_liquid_temp_too_high": true, "power_distribution_temp_high": true, "lever_high": true, "lever_low": true, "second_return_temp1": 0, "second_supply_temp1": 0, "second_return_temp2": 0, "second_supply_temp2": 0, "primary_supply_temp": 0, "primary_return_temp": 0, "out_temp": 0, "container_temp": 0, "container_humidity": 0, "power_distribution_temp": 0, "power_distribution_humidity": 0, "tank_a_level": 0, "tank_b_level": 0, "tank_c_level": 0, "tank_d_level": 0, "drycooler_freq": 0, "feedback_fre": 0, "vol_a_distribution": 223, "vol_b_distribution": 226, "vol_c_distribution": 226, "cur_a_distribution": 0, "cur_b_distribution": 0, "cur_c_distribution": 0, "distribution_box_power": 7.1274, "open1": 0, "open2": 0, "power_distribution": 7.6733, "miner_info": { "miner_num": 120, "total_hashrate": 12665.544871159516, "pcb_max_temp": 98, "chip_max_temp": 98, "chip_temp_mean": 0, "miner_info": { "192.168.1.1": { "miner_type": "S17 Hydro", "miner_version": "2021-08-10 16:54:03", "elapsed": 2565, "GHS_5s": 87.83214750771423, "GHS_avg": 124.3864406464078, "pcb_max_temp": 19, "chip_max_temp": 46 }, "192.168.1.10": { "miner_type": "S19 Hydro", "miner_version": "2021-08-10 16:54:03", "elapsed": 3986, "GHS_5s": 141.96580437744242, "GHS_avg": 128.08028841162994, "pcb_max_temp": 32, "chip_max_temp": 62 }, "192.168.1.100": { "miner_type": "S19 Hydro", "miner_version": "2021-08-10 16:54:03", "elapsed": 686, "GHS_5s": 74.66696038808021, "GHS_avg": 9.137263799960047, "pcb_max_temp": 39, "chip_max_temp": 10 }, "192.168.1.101": { "miner_type": "S19 Hydro", "miner_version": "2021-08-10 16:54:03", "elapsed": 7576, "GHS_5s": 154.767296148344, "GHS_avg": 165.14126176502378, "pcb_max_temp": 32, "chip_max_temp": 81 }, "192.168.1.102": { "miner_type": "S20 Hydro", "miner_version": "2021-08-10 16:54:03", "elapsed": 1539, "GHS_5s": 107.96540202661427, "GHS_avg": 98.47839348764413, "pcb_max_temp": 48, "chip_max_temp": 33 } } } } config: { "running_mode": false, "pid_mode": false, "supply_liquid_set_temp": 0 } ``` - **stats** - **protocol_version**: Version of the protocol. - **disconnect**: Status of the disconnect. - **pid_mode**: Status of the PID mode. - **running_mode**: Status of the running mode. - **leakage_fault**: Fault status for leakage. - **supply_liquid_temp_too_high**: Indicates if the supply liquid temperature is too high. - **supply_liquid_temp_high**: Indicates if the supply liquid temperature is high. - **supply_liquid_set_temp**: Set temperature for the supply liquid. - **longitude_direction**: Direction of longitude. - **longitude**: Longitude value. - **latitude_direction**: Direction of latitude. - **latitude**: Latitude value. - **pump_ready**: Status of pump readiness. - **pump_operation**: Status of pump operation. - **pump_alarm**: Alarm status for pumps. - **pump_run**: Status of pump running. - **pump_start**: Status of pump start. - **server_on**: Status of the server. - **one_pump**: Status of a single pump. - **second_pump1**: Status of the second pump 1. - **second_pump2**: Status of the second pump 2. - **dry_cooler_freq_run**: Status of the dry cooler frequency running. - **dry_cooler_power_freq_run**: Status of the dry cooler power frequency running. - **container_fan**: Status of the container fan. - **valve1_open**: Status of valve 1 (open). - **valve1_close**: Status of valve 1 (close). - **valve2_open**: Status of valve 2 (open). - **valve2_close**: Status of valve 2 (close). - **primary_circulating_pump**: Status of the primary circulating pump. - **dry_cooler_power_fre_fault**: Fault status for dry cooler power frequency. - **dry_cooler_fre_conv**: Fault status for dry cooler frequency conversion. - **second_pump1_fault**: Fault status for the second pump 1. - **second_pump2_fault**: Fault status for the second pump 2. - **fan_fault**: Fault status for the fan. - **phasefailure**: Fault status for phase failure. - **supply_liquid_temp_fault**: Fault status for supply liquid temperature. - **return_liquid_temp_fault**: Fault status for return liquid temperature. - **power_distribution_Fault**: Fault status for power distribution. - **lever_sensor_fault**: Fault status for lever sensor. - **smoke_sensor_fault**: Fault status for smoke sensor. - **return_liquid_temp_high**: Indicates if the return liquid temperature is high. - **return_liquid_temp_too_high**: Indicates if the return liquid temperature is too high. - **power_distribution_temp_high**: Indicates if power distribution temperature is high. - **lever_high**: Indicates if the lever is high. - **lever_low**: Indicates if the lever is low. - **second_return_temp1**: Temperature of the second return 1. - **second_supply_temp1**: Temperature of the second supply 1. - **second_return_temp2**: Temperature of the second return 2. - **second_supply_temp2**: Temperature of the second supply 2. - **primary_supply_temp**: Temperature of the primary supply. - **primary_return_temp**: Temperature of the primary return. - **out_temp**: Outside temperature. - **container_temp**: Container temperature. - **container_humidity**: Container humidity. - **power_distribution_temp**: Power distribution temperature. - **power_distribution_humidity**: Power distribution humidity. - **tank_a_level**: Level of tank A. - **tank_b_level**: Level of tank B. - **tank_c_level**: Level of tank C. - **tank_d_level**: Level of tank D. - **drycooler_freq**: Frequency of the dry cooler. - **feedback_fre**: Feedback frequency. - **vol_a_distribution**: Voltage of distribution A. - **vol_b_distribution**: Voltage of distribution B. - **vol_c_distribution**: Voltage of distribution C. - **cur_a_distribution**: Current of distribution A. - **cur_b_distribution**: Current of distribution B. - **cur_c_distribution**: Current of distribution C. - **distribution_box_power**: Power of the distribution box. - **open1**: Status of open 1. - **open2**: Status of open 2. - **power_distribution**: Power distribution. - **miner_info**: - Detailed information about miners, including their IP addresses, types, versions, elapsed time, GHS values, PCB max temperatures, and chip max temperatures. - **config** - **running_mode**: Running mode status. - **pid_mode**: PID mode status. - **supply_liquid_set_temp**: Set temperature for the supply liquid. #### Antspace Hydro Container specific snap ```json stats:{ "disconnect": false, "circulating_pump": false, "fan1": false, "fan2": true, "spray_pump": true, "fluid_infusion_pump": false, "cooling_tower_fan1": true, "cooling_tower_fan2": true, "cooling_tower_fan3": true, "power_fault": true, "liquid_level_low": true, "circulating_pump_fault": true, "fan1_fault": true, "fan2_fault": true, "fluid_infusion_pump_fault": true, "spray_pump_fault": true, "cooling_tower_fan1_fault": true, "cooling_tower_fan2_fault": true, "cooling_tower_fan3_fault": true, "leakage_fault": true, "supply_liquid_temp_high": true, "supply_liquid_temp_too_high": true, "supply_liquid_pressure_high": true, "return_liquid_pressure_low": true, "supply_liquid_flow_low": true, "freezing_alarm": true, "cooling_tower_liquid_level_low": true, "running_mode": false, "supply_liquid_temp": 43, "return_liquid_temp": 49, "supply_liquid_pressure": 35, "return_liquid_pressure": 28, "colding_tower_inlet_temp": 26, "antbox_internal_temp": 39, "supply_liquid_flow": 29, "antbox_internal_humidity": 54, "distribution_box1_power": 520811, "distribution_box2_power": 477322, "longitude_direction": 0, "longitude": 0, "latitude_direction": 0, "latitude": 0, "supply_liquid_set_temp": 35, "pid_mode": false, "miner_info": { "miner_num": 120, "total_hashrate": 12665.544871159516, "pcb_max_temp": 98, "chip_max_temp": 98, "chip_temp_mean": 0, "miner_info": { "192.168.1.1": { "miner_type": "S17 Hydro", "miner_version": "2021-08-10 16:54:03", "elapsed": 2565, "GHS_5s": 87.83214750771423, "GHS_avg": 124.3864406464078, "pcb_max_temp": 19, "chip_max_temp": 46 } } } } ``` - **stats** - `disconnect`: Indicates whether there is a disconnection (true/false). - `circulating_pump`: Status of the circulating pump (true/false). - `fan1`: Status of fan 1 (true/false). - `fan2`: Status of fan 2 (true/false). - `spray_pump`: Status of the spray pump (true/false). - `fluid_infusion_pump`: Status of the fluid infusion pump (true/false). - `cooling_tower_fan1`: Status of cooling tower fan 1 (true/false). - `cooling_tower_fan2`: Status of cooling tower fan 2 (true/false). - `cooling_tower_fan3`: Status of cooling tower fan 3 (true/false). - `power_fault`: Indicates a power fault (true/false). - `liquid_level_low`: Indicates low liquid level (true/false). - `circulating_pump_fault`: Indicates a fault in the circulating pump (true/false). - `fan1_fault`: Indicates a fault in fan 1 (true/false). - `fan2_fault`: Indicates a fault in fan 2 (true/false). - `fluid_infusion_pump_fault`: Indicates a fault in the fluid infusion pump (true/false). - `spray_pump_fault`: Indicates a fault in the spray pump (true/false). - `cooling_tower_fan1_fault`: Indicates a fault in cooling tower fan 1 (true/false). - `cooling_tower_fan2_fault`: Indicates a fault in cooling tower fan 2 (true/false). - `cooling_tower_fan3_fault`: Indicates a fault in cooling tower fan 3 (true/false). - `leakage_fault`: Indicates a leakage fault (true/false). - `supply_liquid_temp_high`: Indicates high supply liquid temperature (true/false). - `supply_liquid_temp_too_high`: Indicates too high supply liquid temperature (true/false). - `supply_liquid_pressure_high`: Indicates high supply liquid pressure (true/false). - `return_liquid_pressure_low`: Indicates low return liquid pressure (true/false). - `supply_liquid_flow_low`: Indicates low supply liquid flow (true/false). - `freezing_alarm`: Indicates a freezing alarm (true/false). - `cooling_tower_liquid_level_low`: Indicates low cooling tower liquid level (true/false). - `running_mode`: Indicates the running mode (true/false). - `supply_liquid_temp`: Actual supply liquid temperature. - `return_liquid_temp`: Actual return liquid temperature. - `supply_liquid_pressure`: Actual supply liquid pressure. - `return_liquid_pressure`: Actual return liquid pressure. - `colding_tower_inlet_temp`: Inlet temperature of the cooling tower. - `antbox_internal_temp`: Internal temperature of the antbox. - `supply_liquid_flow`: Actual supply liquid flow. - `antbox_internal_humidity`: Internal humidity of the antbox. - `distribution_box1_power`: Power consumption of distribution box 1. - `distribution_box2_power`: Power consumption of distribution box 2. - `longitude_direction`: Direction of longitude. - `longitude`: Actual longitude value. - `latitude_direction`: Direction of latitude. - `latitude`: Actual latitude value. - `supply_liquid_set_temp`: Set temperature for supply liquid. - `pid_mode`: Indicates whether PID mode is active (true/false). - `miner_info`: Information about connected miners. - `miner_num`: Total number of connected miners. - `total_hashrate`: Total hashrate of all miners. - `pcb_max_temp`: Maximum PCB temperature among miners. - `chip_max_temp`: Maximum chip temperature among miners. - `chip_temp_mean`: Mean chip temperature among miners. - `miner_info`: Details of individual miners. - Miner details for each IP address. - `miner_type`: Type of miner. - `miner_version`: Miner version. - `elapsed`: Elapsed time since mining started. - `GHS_5s`: 5-second average hashrate. - `GHS_avg`: Average hashrate. - `pcb_max_temp`: Maximum PCB temperature. - `chip_max_temp`: Maximum chip temperature. ### Minerpool Snap ```json { "timestamp": 1710153153257, "balance": 0.0003474447999510195, "unsettled": 0.0003474447999510195, "revenue_24h": 0, "hashrate": 648044583053864, "hashrate_1h": 506599218787222, "hashrate_24h": 892366174718738, "hashrate_stale_1h": 477110323569097, "hashrate_stale_24h": 332363605974085, "worker_count": 11, "workers": [ { "id": "248.181.196.40", "name": "worker2675", "online": true, "last_updated": 39, "hashrate": 469195518310411, "hashrate_1h": 615305011998130, "hashrate_24h": 263269263733307, "hashrate_stale_1h": 113364669338104, "hashrate_stale_24h": 547744940691104 }, ] } ``` - **stats:** Statistics of the pool account. - **timestamp:** Timestamp of the statistics. - **balance:** Account balance. - **unsettled:** Unsettled balance. - **revenue_24h:** Revenue in the last 24 hours. - **hashrate:** Total hashrate. - **hashrate_1h:** Hashrate in the last hour. - **hashrate_24h:** Hashrate in the last 24 hours. - **hashrate_stale_1h:** Stale hashrate in the last hour. - **hashrate_stale_24h:** Stale hashrate in the last 24 hours. - **worker_count:** Total number of workers. - **workers:** List of worker details. - **containers:** Mining containers and their statistics. ## Temp Sensor Snap ```json stats: { "status": "ok", "temp_c": 33.1 } ``` - **status:** Status of the sensor. - **temp_c:** Temperature in Celcius. # Actions ```json { //Container actions SWITCH_CONTAINER: 'switchContainer', SWITCH_COOLING_SYSTEM: 'switchCoolingSystem', SET_TANK_ENABLED: 'setTankEnabled', SET_AIR_EXHAUST_ENABLED: 'setAirExhaustEnabled', SWITCH_SOCKET: 'switchSocket', RESET_ALARM: 'resetAlarm', RESET_CONTAINER: 'resetContainer', EMERGENCY_STOP: 'emergencyStop', //Miner actions REBOOT: 'reboot', SET_POWER_MODE: 'setPowerMode', SET_LED: 'setLED', SETUP_POOLS: 'setupPools', //Thing actions REGISTER_THING: 'registerThing', UPDATE_THING: 'updateThing', FORGET_THINGS: 'forgetThings', } ``` ## Action Payloads ### Switch Container ```json { "action": "switchContainer", "params": [ true ], "id": 1, "query": { "tags": { "$in": [ "id-87c699bc-b0a3-475c-bac0-3f9c8bc74f60" ] } } } ``` ### Switch Cooling System ```json { "action": "switchCoolingSystem", "params": [ true ], "crossThing": { "type": "miner", "params": { "containers": [ "bitmain-hydro-1" ] } }, "id": 1, "query": { "tags": { "$in": [ "id-7fdd4735-be0c-4735-b89c-a368cd605f16" ] } } } ``` ### Set Tank Enabled ```json { "action": "setTankEnabled", "params": [ 1, true ], "id": 3, "query": { "tags": { "$in": [ "id-4fc33487-6205-4dfe-9ae2-9ec3c975eed9" ] } } } ``` ### Set Air Exhaust Enabled ```json { "action": "setAirExhaustEnabled", "params": [ false ], "id": 5, "query": { "tags": { "$in": [ "id-4fc33487-6205-4dfe-9ae2-9ec3c975eed9" ] } } } ``` ### Switch Socket ```json { "action": "switchSocket", "params": [ [ [ "-1", "-1", true ] ] ], "id": 1, "query": { "tags": { "$in": [ "id-68de0206-32cf-4485-ac9a-80e8eca02659" ] } } } ``` ### Reset Alarm ```json { "action": "resetAlarm", "params": [], "id": 2, "query": { "tags": { "$in": [ "id-4fc33487-6205-4dfe-9ae2-9ec3c975eed9" ] } } } ``` ### Emergency Stop ```json { "action": "emergencyStop", "params": [], "id": 2, "query": { "tags": { "$in": [ "id-87c699bc-b0a3-475c-bac0-3f9c8bc74f60" ] } } } ``` ### Reboot ```json { "action": "reboot", "params": [], "id": 1, "query": { "tags": { "$in": [ "id-tday62rajdg8a45" ] } } } ``` ### Set Power Mode ```json { "action": "setPowerMode", "params": [ "high" ], "isBulkContainerAction": true, "crossThing": { "type": "container", "params": { "containers": [ "bitdeer-4a" ] } }, "id": 1, "query": { "tags": { "$in": [ "container-bitdeer-4a" ] } } } ``` ### Set LED ```json { "action": "setLED", "params": [ true ], "id": 3, "query": { "tags": { "$in": [ "id-tday62rajdg8a45" ] } } } ``` ### Setup Pools ```json { "action": "setupPools", "params": [], "id": 2, "query": { "tags": { "$in": [ "id-tday62rajdg8a45" ] } } } ``` ### Register Thing ```json { "action": "registerThing", "params": [ { "rackId": "miner-wm-m56s-shelf-0", "info": { "serialNum": "asdbasdb", "macAddress": "askdnaksjd", "container": "bitdeer-5a", "pos": "1-1_7", "subnet": "127.0.0.0/24", "site": "Pintado" }, "opts": { "username": "jasdkbasdk", "password": "asldnjasdjkn", "port": 4028 }, "tags": [ "asdasd", "sdfsa", "pos-1-1_7", "container-bitdeer-5a", "site-Pintado" ] } ], } ``` ### Update Thing ```json { "action": "updateThing", "params": [ { "rackId": "miner-wm-m56s-shelf-0", "id": "1gkmg1y55uefl2i", "info": { "container": "bitdeer-5a", "pos": "1-2_3", "subnet": "127.0.0.0/24", "posHistory": [ { "container": "bitdeer-5a", "pos": "2-1_1", "removedAt": 1710152775592 } ] } } ], "minerId": "1gkmg1y55uefl2i", } ``` ### Forget Thing ```json { "action": "forgetThings", "params": [ { "rackId": "miner-wm-m30sp-shelf-1", "query": { "id": "tnatvcy0qdtn2ak" } } ], "container": "maintenance", "minerId": "tnatvcy0qdtn2ak", } ```