matroskin 0.1.0

whatsminer api client lib
Documentation
# WhatsMiner Dashboard — Data Specification

## Page 1: Miner List

### Top Stats

| Stat           | Source                | Aggregation             |
| -------------- | --------------------- | ----------------------- |
| Total Hashrate | Summary.hash_average  | Sum across all miners   |
| Average Temp   | Summary.chip_temp_max | Mean across all miners  |
| Miners Online  | ActorStatus           | Count Connected / total |

### Miner Row

| Field                     | Source                                    | Notes                                                    |
| ------------------------- | ----------------------------------------- | -------------------------------------------------------- |
| Connection state          | ActorStatus                               | Created / Connecting / Connected / Reconnecting / Closed |
| Disconnect / Close reason | ActorStatus                               | Closed { reason } or Reconnecting { reason, .. }         |
| IP:port                   | Actor::addr()                             | host:port string                                         |
| Model                     | Power.model                               |                                                          |
| Serial                    | Miner.miner_sn                            |                                                          |
| Hash average              | Summary.hash_average                      | Th/s                                                     |
| Hash realtime             | Summary.hash_realtime                     | Th/s                                                     |
| Hash percent              | Miner.hash_percent                        | % of factory                                             |
| Hash 1min                 | Summary.hash_1min                         | Tooltip                                                  |
| Hash 15min                | Summary.hash_15min                        | Tooltip                                                  |
| Factory hash              | Summary.factory_hash                      | Tooltip                                                  |
| Chip temp max             | Summary.chip_temp_max                     | °C                                                       |
| Environment temp          | Summary.environment_temperature           | °C                                                       |
| Power rate                | Summary.power_rate                        | W                                                        |
| Power realtime            | Summary.power_realtime                    | W                                                        |
| Active pool URL           | Pools[first stratum_active].url           | Truncated                                                |
| Stratum active            | Pools[].stratum_active                    | Boolean per pool                                         |
| Reject rate               | Pools[first active].reject_rate           | %                                                        |
| Active pool count         | Pools                                     | Count stratum_active=true / total                        |
| Error count               | DeviceInfo.error_code                     | Vec length                                               |
| Top error reason          | DeviceErrorCode::from_code(code).reason() | Tooltip                                                  |
| Uptime                    | Summary.elapsed                           | Formatted duration                                       |

---

## Page 2: Miner Detail

### Header

| Field            | Source                    |
| ---------------- | ------------------------- |
| Connection state | ActorStatus               | Current projection (actor.status()) |
| IP:port          | Actor::addr()             | host:port string                    |
| Model            | Power.model               |
| Firmware         | System.fwversion          |
| Cointype         | Miner.cointype            |
| Uptime           | Summary.elapsed           |
| Permission       | ActorStatus.permissions() | Present when in valid session       |

### Tab: Overview

| Field            | Source                          | Notes           |
| ---------------- | ------------------------------- | --------------- |
| Hash average     | Summary.hash_average            | Th/s            |
| Hash realtime    | Summary.hash_realtime           | Th/s            |
| Chip temp max    | Summary.chip_temp_max           | °C              |
| Environment temp | Summary.environment_temperature | °C              |
| Power rate       | Summary.power_rate              | W               |
| Power realtime   | Summary.power_realtime          | W               |
| Active pool URL  | Pools[first stratum_active].url |                 |
| Reject rate      | Pools[first active].reject_rate | %               |
| Working          | Miner.working                   | bool            |
| Upfreq finish    | Summary.up_freq_finish          |                 |
| Fast boot        | Miner.fast_boot                 | bool            |
| Power mode       | GetMinerSettings.power_mode     | Low/Normal/High |
| Heat mode        | Miner.heatmode                  |                 |

### Tab: Hashboards

Per board (edevs[]):

| Field           | Source               |
| --------------- | -------------------- |
| Board ID        | edev.id              |
| Slot            | edev.slot            |
| Hash average    | edev.hash_average    |
| Factory hash    | edev.factory_hash    |
| Frequency       | edev.freq            |
| Effective chips | edev.effective_chips |
| Chip temp min   | edev.chip_temp_min   |
| Chip temp avg   | edev.chip_temp_avg   |
| Chip temp max   | edev.chip_temp_max   |

Board metadata:

| Field       | Source          |
| ----------- | --------------- |
| Board count | Miner.board_num |
| PCB SN 0    | Miner.pcbsn0    |
| PCB SN 1    | Miner.pcbsn1    |
| PCB SN 2    | Miner.pcbsn2    |
| Chip data 0 | Miner.chipdata0 |
| Chip data 1 | Miner.chipdata1 |
| Chip data 2 | Miner.chipdata2 |

### Tab: Temperature & Fans

| Field             | Source                          |
| ----------------- | ------------------------------- |
| Chip temp min     | Summary.chip_temp_min           |
| Chip temp avg     | Summary.chip_temp_avg           |
| Chip temp max     | Summary.chip_temp_max           |
| Board temp 0      | Summary.board_temperature[0]    |
| Board temp 1      | Summary.board_temperature[1]    |
| Board temp 2      | Summary.board_temperature[2]    |
| Environment temp  | Summary.environment_temperature |
| Fan speed in      | Summary.fan_speed_in            |
| Fan speed out     | Summary.fan_speed_out           |
| Fan poweroff cool | FanSetting.fan_poweroff_cool    |
| Fan zero speed    | FanSetting.fan_zero_speed       |
| Fan temp offset   | FanSetting.fan_temp_offset      |

### Tab: Pools

Per pool (pools[]):

| Field           | Source               |
| --------------- | -------------------- |
| Pool ID         | pool.id              |
| URL             | pool.url             |
| Account         | pool.account         |
| Status          | pool.status          |
| Stratum active  | pool.stratum_active  |
| Reject rate     | pool.reject_rate     |
| Last share time | pool.last_share_time |

Metadata:

| Field         | Source              |
| ------------- | ------------------- |
| Pool strategy | Miner.pool_strategy |
| Web pool      | Miner.web_pool      |

### Tab: Errors

Per error (error_code[]):

| Field                   | Source                                               |
| ----------------------- | ---------------------------------------------------- |
| Code                    | ErrorCode.code                                       |
| Reason                  | DeviceErrorCode::from_code(code).reason()            |
| Timestamp               | ErrorCode.timestamp                                  |
| Fix / processing method | DeviceErrorCode::from_code(code).processing_method() |

### Tab: Power

PSU Info:

| Field      | Source          |
| ---------- | --------------- |
| PSU model  | Power.model     |
| PSU type   | Power.type      |
| PSU mode   | Power.mode      |
| HW version | Power.hwversion |
| SW version | Power.swversion |
| Vendor     | Power.vendor    |
| PSU serial | Power.sn        |

Electrical:

| Field          | Source                 |
| -------------- | ---------------------- |
| Input voltage  | Power.vin              |
| Output voltage | Power.vout             |
| Input current  | Power.iin              |
| Input power    | Power.pin              |
| Power rate     | Summary.power_rate     |
| Power 5min avg | Summary.power_5min     |
| Power realtime | Summary.power_realtime |

### Tab: Network

| Field    | Source           |
| -------- | ---------------- |
| IP       | Network.ip       |
| Protocol | Network.proto    |
| Netmask  | Network.netmask  |
| Gateway  | Network.gateway  |
| DNS      | Network.dns      |
| MAC      | Network.mac      |
| Hostname | Network.hostname |

### Tab: Settings

Miner settings:

| Field         | Source        | Editable         |
| ------------- | ------------- | ---------------- |
| Power limit   | power_limit   | Yes              |
| Power mode    | power_mode    | Yes              |
| Fast boot     | fast_boot     | Yes              |
| Upfreq speed  | upfreq_speed  | Yes              |
| Target freq   | target_freq   | Yes              |
| Fast mining   | fast_mining   | Yes (if present) |
| Power         | power         | Yes (if present) |
| Power percent | power_percent | Yes (if present) |

Fan settings:

| Field             | Source            | Editable |
| ----------------- | ----------------- | -------- |
| Fan poweroff cool | fan_poweroff_cool | Yes      |
| Fan zero speed    | fan_zero_speed    | Yes      |
| Fan temp offset   | fan_temp_offset   | Yes      |

System settings:

| Field             | Source                | Editable |
| ----------------- | --------------------- | -------- |
| Timezone          | timezone              | Yes      |
| Zone name         | zonename              | Yes      |
| Hostname          | hostname              | Yes      |
| NTP servers       | ntp_server[]          | Yes      |
| Log upload IP     | log_upload.ip         | Yes      |
| Log upload port   | log_upload.port       | Yes      |
| Log upload proto  | log_upload.proto      | Yes      |
| Time random start | time_randomized.start | Yes      |
| Time random stop  | time_randomized.stop  | Yes      |

All settings require ReadWrite+ permission to edit. Read-only display otherwise.

### Tab: Actions

| Action             | Permission | Streaming      |
| ------------------ | ---------- | -------------- |
| Reboot Miner       | ReadWrite  | No             |
| Configure Pools    | ReadWrite  | No             |
| Update Firmware    | All        | Yes (upload)   |
| Change Permission  | All        | No             |
| Toggle Fast Boot   | ReadWrite  | No             |
| Download Log       | ReadOnly   | Yes (download) |
| Refresh Connection | Any        | No             |