github.com/e154/smart-home@v0.17.2-0.20240311175135-e530a6e5cd45/doc/content/ru/docs/plugins/cgminer/bitmine.md (about)

     1  
     2  ---
     3  title: "Bitmine"
     4  linkTitle: "bitmine"
     5  date: 2021-10-20
     6  description: >
     7  
     8  ---
     9  
    10  Работа с устройствами ASIC производителя Bitmine Antminer.
    11  
    12  
    13  поддерживаемые усторойства:
    14  * S9
    15  * S7
    16  * L3
    17  * L3
    18  * D3
    19  * T9
    20  
    21  ### javascript свойства
    22  
    23  ----------------
    24  
    25  ### Miner Базовая сущность 
    26  
    27  ```coffeescript
    28  # константа с уникальным id устройства
    29  const ENTITY_ID
    30  ````
    31  
    32  ```coffeescript
    33  result = Miner
    34      .stats()
    35      .devs()
    36      .summary()
    37      .pools()
    38      .addPool(url string)
    39      .version()
    40      .enable(poolId int64)
    41      .disable(poolId int64)
    42      .delete(poolId int64)
    43      .switchPool(poolId int64)
    44      .restart()
    45  ```
    46  
    47  |  значение  | описание  |
    48  |-------------|---------|
    49  | result |    type: Object (Result)   |
    50  
    51  |  значение  | описание  |
    52  |-------------|---------|
    53  | stats |   type: метод, статистика    |
    54  | devs |   type: метод, статистика    |
    55  | summary |   type: метод, статистика    |
    56  | pools |   type: метод, список серверов   |
    57  | addPool |   type: метод, добавление сервера   |
    58  | version |   type: метод, версия прошивки  |
    59  | enable |   type: метод, включение в работу сервера  |
    60  | disable |   type: метод, включение сервера  |
    61  | delete |   type: метод, удаление сервера  |
    62  | switchPool |   type: метод, переключние сервера  |
    63  | restart |   type: метод, мягкий перезапуск устройства  |
    64  
    65  ----------------
    66  
    67  ### объект Result
    68  
    69  ```coffeescript
    70    result = {
    71    error: false,
    72    errMessage: "",
    73    result: ""
    74  }
    75  ``` 
    76  |  значение  | описание  |
    77  |-------------|---------|
    78  | error |    type: boolean, признак ошибки   |
    79  | errMessage |   type: string, человекопонятное описание ошибки  |
    80  | result | type: string, json объект в текстовом формате, если запрос завершился без ошибок |
    81  
    82  ----------------
    83  
    84  ### функция entityAction
    85  
    86  ```coffeescript
    87  entityAction = (entityId, actionName, args)->
    88  ```
    89  | значение   | описание               |
    90  |-------------|-------------------|
    91  | entityId    | type: string, id сущности отправляющего сообщение |
    92  | actionName  | type: string, название действия, без символа '/' в верхнем регистре |
    93  | args | Type: map[string]any |
    94  
    95  ----------------
    96  
    97  ### объект EntityStateParams
    98  
    99  ```coffeescript
   100    entityStateParams = {
   101      "new_state": ""
   102      "attribute_values": {}
   103      "settings_value": {}
   104      "storage_save": true
   105  }
   106  ``` 
   107  |  значение  | описание  |
   108  |-------------|---------|
   109  | new_state |    type: *string, наименование статуса   |
   110  | attribute_values |   type: Object, новое состяние аттрибутов сущности |
   111  | settings_value | type: Object, новое состояние настроек сущности |
   112  | storage_save | type: boolean, признак записи нового состояния в бд |
   113  
   114  ----------------
   115  
   116  ### пример кода
   117  
   118  ```coffeescript
   119  # cgminer
   120  # ##################################
   121  
   122  ifError =(res)->
   123    return !res || res.error || res.Error
   124  
   125  checkStatus =->
   126    stats = Miner.stats()
   127    if ifError(stats)
   128      EntitySetState ENTITY_ID,
   129        'new_state': 'ERROR'
   130      return
   131    p = JSON.parse(stats.result)
   132    print p
   133  
   134  checkSum =->
   135    summary = Miner.summary()
   136    if ifError(summary)
   137      EntitySetState ENTITY_ID,
   138        'new_state': 'ERROR'
   139      return
   140    p = JSON.parse(summary.result)
   141    print p
   142  
   143  entityAction = (entityId, actionName, args)->
   144    switch actionName
   145      when 'CHECK' then checkStatus()
   146      when 'SUM' then checkSum()
   147  ```