https://github.com/phearzero/turing-pi-js
Turing Pi API Client
https://github.com/phearzero/turing-pi-js
javascript turing-pi
Last synced: 3 months ago
JSON representation
Turing Pi API Client
- Host: GitHub
- URL: https://github.com/phearzero/turing-pi-js
- Owner: PhearZero
- License: mit
- Created: 2023-04-20T02:23:36.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2023-04-28T14:36:46.000Z (over 3 years ago)
- Last Synced: 2024-05-02T02:18:01.705Z (over 2 years ago)
- Topics: javascript, turing-pi
- Language: TypeScript
- Homepage: https://www.npmjs.com/package/turing-pi-js
- Size: 17.6 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# đ¤ turing-pi-js
> A JavaScript client for Turing Pi web API
## âšī¸ Overview
### đĻ Prerequisites
- [Node.js](https://nodejs.org/en)
- [Turing Pi 2](https://turingpi.com/product/turing-pi-2/)
This project is maintained by @PhearZero and is not associated with @turing-machines.
This library is used to control a `Turing Pi 2` from a JavaScript environment.
## âī¸ Getting started
### Install
```bash
npm -i turing-pi-js --save
```
### Import
```javascript
import {tpi} from 'turing-pi-js'
const BMC_API = ''
const client = tpi(BMC_API)
```
### Example Usage
```javascript
// Get current power state for all Nodes
client.get('power').then(r=>console.log(r))
// Power On Node 1
client.set('power',{node1:1}).then(r=>console.log(r))
```
[Find out more in the detailed usage](#-usage)
## đž Firmware
The current firmware, as of writing ([v1.0.1](https://github.com/wenyi0421/turing-pi), [v0.1.0-ce](https://github.com/daniel-kukiela/turing-pi-2-community-edition-firmware)),
does not support Cross Origin Requests and requires a reverse proxy to connect from another machine. This library will
work without a proxy when deployed locally on the [Turing Pi Web Server](https://help.turingpi.com/hc/en-us/articles/8849365259933-BMC-Web-Interface)
#### đ Reverse Proxy
Temporary fix until the firmware api becomes more stable. This template patches the response headers for using the library
in the browser. The `ENV` variable for the [Turing Pi BMC API](https://help.turingpi.com/hc/en-us/articles/8795098568477-BMC-API) is `BMC_API` in following template:
```nginx
#/etc/nginx/templates/default.conf.template
server {
listen 80;
listen [::]:80;
server_name localhost;
location /api/bmc {
proxy_pass ${BMC_API};
proxy_hide_header Content-Type;
add_header Content-Type application/json;
add_header Access-Control-Allow-Origin *;
}
}
```
## đ Usage
### ⨠Create client
```javascript
import {tpi} from 'turing-pi-js'
const BMC_API = ''
const client = tpi(BMC_API)
```
### đ§ Fetch Options
```javascript
client.get('nodeinfo', {
credentials: true,
})
```
### đ Power
```javascript
// Valid values are "0" or "1". "0" for OFF, "1" for ON.
// Get Power for all Nodes
client.get('power').then(r=>console.log(r))
// Set Power for any number of Nodes
client.set('power', {node1: 1, node2: 0, /* node3:0, node4:0 */}).then(r=>console.log(r))
```
### â¨ī¸ USB
```javascript
// mode: Valid values are "0" or "1". "0" for Host, "1" for Device
// node: Valid values are "0", "1", "2", "3". Relating to slots Node1-4
// Get USB state from BMC
client.get('usb').then(r=>console.log(r))
// Set Power for any number of Nodes
client.set('usb', {mode: 0, node: 0}).then(r=>console.log(r))
```
### âšī¸ Node Info
```javascript
// Get Node Info
client.get('nodeinfo').then(r=>console.log(r))
```
### âšī¸ BMC Info
```javascript
// Get BMC Info
client.get('other').then(r=>console.log(r))
```
### đ SD Card Info
```javascript
// Get SD card info
client.get('sdcard').then(r=>console.log(r))
```
### đ Reset Network
```javascript
// Reset network
client.set('network', {cmd: "reset"}).then(r=>console.log(r))
```
### đž Update Firmware
```javascript
// Get the file contents
var input = document.querySelector('input[type="file"]')
// Upload firmware
client.set('firmware', {file: input.files[0]}).then(r=>console.log(r))
```