2025-06-01 21:27:22 +01:00
2025-06-01 20:44:06 +01:00
2025-04-13 18:31:40 +00:00
2025-06-01 20:44:06 +01:00
2025-06-01 21:27:22 +01:00
2025-04-13 18:31:40 +00:00
2025-06-01 21:19:07 +01:00
2025-06-01 21:19:07 +01:00
2025-04-13 18:31:40 +00:00

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:

{
  "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:

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

Description
An app for Farmcontrol that bridges communication between Moonraker-controlled 3D printers and websockets.
Readme 1.5 MiB
Languages
JavaScript 97.2%
CSS 2.4%
HTML 0.4%