#树莓派矿机内置程序监控

## 接口
### 设备序列号  内网接口

URL /pai/devdetail

请求方法 post  json

|参数|类型|是否必填|说明|

|-|-|-|-|

```
response
{
	"code":200,
	"msg":"",
	"data":{
		"serial":"",//设备唯一序列号
	}
}
```

### 设备节点状态  内网接口
URL /pai/devstatus

请求方法 post  json

|参数|类型|是否必填|说明|

|-|-|-|-|

```
response
{
    "code": 200,
    "msg": "ok",
    "data": {
        "hardware": "",
        "revision": "",
        "serial": "1000000091099025",
        "local_last_height": 4188041,
        "last_height": 8211685,
        "is_ntp_sync": true,
        "wallet_status": {
            "isAutoMining": true,
            "isHasSeed": true,
            "isTicketLock": true
        },
        "net_info": {
            "externaladdr": "183.129.134.34:13802",
            "localaddr": "192.168.100.218:13802",
            "outbounds": 25
        },
        "bty_version": {
            "title": "bityuan",
            "app": "6.4.2",
            "chain33": "6.4.0",
            "localDb": "2.0.0"
        },
        "err": "",
        "arch": "armv7l",
        "Disks": [
            {
                "filesystem": "/dev/sda1",
                "type": "ext4",
                "size_k": "245053028",
                "use": "32%"
            }
        ],
        "is_backup": false
    }
}
```

### 查看版本  内网接口

URL /pai/version

请求方法 post  json

|参数|类型|是否必填|说明|

|-|-|-|-|


```
response
{
    "code": 200,
    "msg": "ok",
    "data": {
        "current": "6.3.2",
        "latest": "6.3.2"
    }
}
```

### 查看节点是否在运行  内网接口

URL /pai/nodeinfo

请求方法 post  json

|参数|类型|是否必填|说明|

|-|-|-|-|

```
response
{
    "code": 200,
    "msg": "ok",
    "data": "node is running"
}
```

### 查看节点更新及重置进度  内网接口

URL /pai/updatedetail

请求方法 post  json

|参数|类型|是否必填|说明|

|-|-|-|-|

```
response
{
    "code": 200,
    "msg": "ok",
    "data": {
        "total": 111,
        "current": 100,
        "flag" : false
    }
}
```
### 重置钱包  内网接口

URL /pai/resetwallet

请求方法 post  json

|参数|类型|是否必填|说明|

|-|-|-|-|


```
response
{
    "code": 200,
    "msg": "ok",
    "data": 1
}
```
### 重置节点，一切从新开始从0开始同步节点  内网接口

URL /pai/reset

请求方法 post  json

|参数|类型|是否必填|说明|

|-|-|-|-|

```
response
{
    "code": 200,
    "msg": "ok",
    "data": 2
}
```
### 节点更新到新版本  内网接口

URL /pai/updatenode

请求方法 post  json

|参数|类型|是否必填|说明|

|-|-|-|-|

```
response
{
    "code": 200,
    "msg": "ok",
    "data": ""
}
```

### 获取本地pai程序版本  内网接口

URL /pai/paiversion

请求方法 post  json

|参数|类型|是否必填|说明|

|-|-|-|-|


```
response
{
    "code": 200,
    "msg": "ok",
    "data": {
        "current": "6.3.2",
        "latest":： "6.3.2"
    }
}
```

### 下载pai程序最新版本  内网接口

URL /pai/updatepai

请求方法 post  json

|参数|类型|是否必填|说明|

|-|-|-|-|
|version|string|是|版本号|
```
response
{
    "code": 200,
    "msg": "ok",
    "data": ""
}
```
### 获取下载更新文件进度  内网接口

URL /pai/dpercent

请求方法 post  json

|参数|类型|是否必填|说明|

|-|-|-|-|

```
response
{
    "code": 200,
    "msg": "ok",
    "data": {
        "total":123
        "current":121
    }
}
```

### 获取树莓派外网ip  内网接口

URL /pai/external

请求方法 post  json

|参数|类型|是否必填|说明|

|-|-|-|-|

```
response
{
    "code": 200,
    "msg": "ok",
    "data": "x.x.x.x"
}
```

### 获取树莓派服务器相关信息  内网接口

URL /pai/serverstatus

请求方法 post  json

|参数|类型|是否必填|说明|

|-|-|-|-|

```
response
{
    "code": 200,
    "msg": "ok",
    "data": {
        "disks":[]
        "nodeProcesssInfo":{}
        "error":
    }
}
```
### 反馈信息接口    内网接口
URL /pai/feedback
请求方法 post   json
|参数|类型|是否必填|说明|
|description|string|是|反馈信息|
```
response
{
    "code": 200,
    "msg": "ok",
    "data": null
}

```

### 反馈进度查询接口    内网接口

URL /pai/iscomplete
请求方法 post   json
|参数|类型|是否必填|说明|
|-|-|-|
```
response
{
    "code": 200,
    "msg": "ok",
    "data": null
}

```

### 钱包代解锁接口    内网接口

URL /pai/escrowpassword
请求方法 post   json
|参数|类型|是否必填|说明|
|password|string|是|托管密码
```
response
{
    "code": 200,
    "msg": "ok",
    "data": null
}

```


### bityuan更新重启后 查看内部区块和数据库是否更新完成    内网接口

URL /pai/nodeupdate
请求方法 post   json
|参数|类型|是否必填|说明|

```
response
{
    "code": 200,
    "msg": "ok",
    "status": true //true  表示还在内部更新中
}
内部更新过程中 节点程序运行 但是端口服务未开启 节点无法访问 
```

### bityuan安全重启接口    内网接口

URL /pai/restartnode
请求方法 post   json
|参数|类型|是否必填|说明|

```
response
{
    "code": 200,
    "msg": "ok",
    "data":1
}
 
```


### bityuan安全关闭接口    内网接口

URL /pai/closenode
请求方法 post   json

|参数|类型|是否必填|说明|
```
response
{
    "code": 200,
    "msg": "ok",
    "data":1
}
此接口是为了有需要重启或者关机树莓派的时候，调用的接口  保证节点数据不损坏
```

### bityuan一键回滚    内网接口

URL /pai/rollback
请求方法 post   json

|参数|类型|是否必填|说明|
```
response
{
    "code": 200,
    "msg": "ok",
    "data":1
}
```

### bityuan一键备份    内网接口

URL /pai/nodebackup
请求方法 post   json

|参数|类型|是否必填|说明|
```
response
{
    "code": 200,
    "msg": "ok",
    "data":1
}
```

### bityuan一键恢复   内网接口

URL /pai/noderecover
请求方法 post   json

|参数|类型|是否必填|说明|
```
response
{
    "code": 200,
    "msg": "ok",
    "data":1
}
```

### bityuan删除备份    内网接口

URL /pai/delbackup
请求方法 post   json

|参数|类型|是否必填|说明|
```
response
{
    "code": 200,
    "msg": "ok",
    "data":1
}
```

### bityuan检查是否已备份    内网接口

URL /pai/isbackup
请求方法 post   json

|参数|类型|是否必填|说明|
```
response
{
    "code": 200,
    "msg": "ok",
    "data":true
}
```

### 检查任务完成情况    内网接口

URL /pai/jobstatus
请求方法 post   json

|参数|类型|是否必填|说明|
|job_id|int32|是|节点操作接口返回的任务id|
```
response
{
    "code": 200, //200 已完成 300 未完成 500 执行出错
    "msg": "ok",
    "data":""
}
```



## 节点部署：
监控程序代码默认放在/home/pi目录下面
钱包节点程序命名为v7-bityuan
默认位置放在/media/pi下面
```crontab
chain33-pai程序自启动  
*/1 * * * * /home/pi/chain33-pai/startup.sh
```

##矿机维护
    在进入矿机的时候如果需要对节点进行操作，在/home/pi/chain33-pai目录下新建一个Lock.file文件，这样矿机程序会停止对节点的监控和其他操作
## 其他说明
        bityuan版本下载地址文件格式v7-bityuan_x.x.x.tar.gz （目录wallet-bty）
        chain33-pai版本oss下载地址文件格式 chain33-pai_x.x.x.tar.gz  (目录chain33-pai) 
        chain33-pai 打包过程中保持 文件中shell文件执行权限  
        配置文件默认，用户不需要去更改参数   
        节点的挂载盘中应当只有一个对应的启动程序，避免auto.sh去挂载盘上找启动程序时出错  
        0.1.x系列升级每次更新新的文件都要把更新内容写在代码里面 导致升级比较麻烦 （抛弃次版本，之前的机子如果要升级需寄回，或者在运维指导下联系用户远程桌面解决升级）   
        0.2.x系列开始升级不管具体的更新内容  下载完成后直接覆盖更新，更新完成用户无感知  
        由于节点数据写入是在移动硬盘中，导致当USB接触不良、断电等情形下写入数据异常，因为代码无法智能自动解决节点状态。而重置节点功能同步时间所需时间太长。所以引入了ssh远程管理功能  
        当用户反馈问题 树莓派利用autossh 链接阿里云树莓派线上服务器  线上服务器根据获取的端口直接ssh登陆树莓派 手动解决节点故障(已去除)  

