{"id":26833300,"url":"https://github.com/offerrall/lasergrbl-websocket","last_synced_at":"2025-03-30T15:28:39.338Z","repository":{"id":283895729,"uuid":"953222210","full_name":"offerrall/LaserGRBL-WebSocket","owner":"offerrall","description":null,"archived":false,"fork":false,"pushed_at":"2025-03-22T21:10:55.000Z","size":53,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-22T22:20:27.722Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/offerrall.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-22T21:08:17.000Z","updated_at":"2025-03-22T21:10:58.000Z","dependencies_parsed_at":"2025-03-22T22:32:12.806Z","dependency_job_id":null,"html_url":"https://github.com/offerrall/LaserGRBL-WebSocket","commit_stats":null,"previous_names":["offerrall/lasergrbl-websocket"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/offerrall%2FLaserGRBL-WebSocket","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/offerrall%2FLaserGRBL-WebSocket/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/offerrall%2FLaserGRBL-WebSocket/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/offerrall%2FLaserGRBL-WebSocket/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/offerrall","download_url":"https://codeload.github.com/offerrall/LaserGRBL-WebSocket/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246337738,"owners_count":20761260,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-30T15:28:38.885Z","updated_at":"2025-03-30T15:28:39.328Z","avatar_url":"https://github.com/offerrall.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GRBLWebBridge\n\nThis is a simple Python WebSocket bridge server designed specifically to work with LaserGRBL's built-in WebSocket client functionality. It allows you to connect to your GRBL devices (CNC machines, laser engravers, 3D printers) over a network connection rather than being limited to a direct USB connection.\n\n## Overview\n\nThis server acts as a bridge between:\n- A physical GRBL device connected to your computer via USB\n- LaserGRBL software running on another computer on your network\n\nThe server exposes a WebSocket endpoint that LaserGRBL can connect to using its built-in \"LaserWebESP8266\" connection protocol.\n\n## Requirements\n\n- Python 3.7 or higher\n- Python packages: `websockets`, `pyserial`\n- A GRBL device connected via USB\n- LaserGRBL software on a computer that can reach your server over the network\n\n## Installation\n\n1. Clone or download this repository\n2. Install the required dependencies:\n   ```\n   pip install websockets pyserial\n   ```\n\n## Usage\n\n### Running the Server\n\n1. Connect your GRBL device to a USB port on your computer\n2. Identify the serial port:\n   - On Windows: COM port number (e.g., COM3)\n   - On Linux/macOS: Device path (e.g., /dev/ttyUSB0)\n   \n3. Run the server:\n   \n   **Windows:**\n   ```\n   python server.py \u003cCOM-port-number\u003e \u003cwebsocket-port\u003e\n   ```\n   Example:\n   ```\n   python server.py 3 8765\n   ```\n   This will start the server using COM3 and listen for WebSocket connections on port 8765.\n   \n   **Linux/macOS:**\n   ```\n   python server.py \u003cdevice-path\u003e \u003cwebsocket-port\u003e\n   ```\n   Example:\n   ```\n   python server.py /dev/ttyUSB0 8765\n   ```\n\n4. The server will display a WebSocket URL that you'll need to connect from LaserGRBL:\n   ```\n   URL: ws://192.168.1.100:8765\n   ```\n\n### Connecting from LaserGRBL\n\n1. Open LaserGRBL on the computer you want to control your GRBL device from\n2. Go to the Settings menu\n3. In the \"Protocol\" tab, select \"LaserWebESP8266\"\n   - This is specifically designed for WebSocket connections\n   - See the image below showing where to find this option:\n\n   ![LaserGRBL WebSocket Setting](config.png)\n   \n   *The LaserWebESP8266 option in LaserGRBL settings allows for WebSocket connections*\n\n4. Click \"Save\" to apply the protocol settings\n5. When prompted to select a connection, choose \"Network (Ethernet/WiFi)\"\n6. Enter the WebSocket URL displayed by the server (e.g., `ws://192.168.1.100:8765`)\n7. Connect normally and use LaserGRBL as you would with a direct connection\n\n## Limitations\n\n- Allows only one connected client at a time (exclusive access to the GRBL device)\n- No support for multiple GRBL devices (one server per device, you can run multiple servers on different ports)\n- No authentication implemented (anyone on your local network can connect to the server)\n\n## Troubleshooting\n\n- If the connection fails, make sure the server is running and the WebSocket URL is correct\n- If the GRBL device disconnects, the server will try to reconnect automatically every 5 seconds\n- If reconnection fails, verify that the device is still connected to the same port\n- If the port changes, you'll need to restart the server with the new port number\n- If you experience lag or performance issues, try different streaming modes in LaserGRBL\n\n## Notes\n\nThis server is ideal for:\n- Controlling your laser/CNC remotely from another room\n- Sharing a single GRBL device among multiple computers\n- Using LaserGRBL on a computer without direct USB access to the GRBL device","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fofferrall%2Flasergrbl-websocket","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fofferrall%2Flasergrbl-websocket","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fofferrall%2Flasergrbl-websocket/lists"}