farmcontrol-server/readme.md
2025-04-13 18:31:40 +00:00

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