84 lines
1.8 KiB
Markdown
84 lines
1.8 KiB
Markdown
# Farm Control Server
|
|
|
|
A Node.js application that bridges communication between external websocket clients and a Moonraker-controlled 3D printer.
|
|
|
|
## Features
|
|
|
|
- Connects to Moonraker API via websocket
|
|
- Provides a websocket server for external clients
|
|
- Relays JSON-RPC commands between clients and the printer
|
|
- Broadcasts printer status updates to all connected clients
|
|
- Handles reconnection if the Moonraker connection is lost
|
|
|
|
## Installation
|
|
|
|
1. Clone this repository
|
|
2. Install dependencies:
|
|
```
|
|
npm install
|
|
```
|
|
3. Edit the `config.json` file to match your Moonraker setup
|
|
4. Start the server:
|
|
```
|
|
npm start
|
|
```
|
|
|
|
## Configuration
|
|
|
|
The `config.json` file contains the following options:
|
|
|
|
```json
|
|
{
|
|
"moonraker": {
|
|
"host": "localhost",
|
|
"port": 7125,
|
|
"protocol": "ws",
|
|
"apiKey": null,
|
|
"identity": {
|
|
"name": "printer-bridge",
|
|
"version": "0.1.0",
|
|
"type": "external"
|
|
}
|
|
},
|
|
"server": {
|
|
"port": 8080
|
|
}
|
|
}
|
|
```
|
|
|
|
- `moonraker.host`: The hostname or IP address of your Moonraker instance
|
|
- `moonraker.port`: The port number of your Moonraker instance
|
|
- `moonraker.protocol`: The protocol to use (`ws` or `wss`)
|
|
- `moonraker.apiKey`: Your Moonraker API key (if required)
|
|
- `server.port`: The port number for the websocket server
|
|
|
|
## Usage
|
|
|
|
Connect to the websocket server at `ws://[host]:[port]` and send JSON-RPC formatted messages to control the printer.
|
|
|
|
Example client-side code:
|
|
|
|
```javascript
|
|
const ws = new WebSocket('ws://localhost:8080');
|
|
|
|
ws.onopen = () => {
|
|
console.log('Connected to printer bridge');
|
|
|
|
// Send a command to get printer info
|
|
ws.send(JSON.stringify({
|
|
jsonrpc: "2.0",
|
|
method: "printer.info",
|
|
id: 1
|
|
}));
|
|
};
|
|
|
|
ws.onmessage = (event) => {
|
|
const message = JSON.parse(event.data);
|
|
console.log('Received:', message);
|
|
};
|
|
```
|
|
|
|
## License
|
|
|
|
MIT
|