Skip to content

Instantly share code, notes, and snippets.

View lin-ycv's full-sized avatar
:octocat:

Lin Yu-Chieh (Victor) lin-ycv

:octocat:
View GitHub Profile
# ╔═══════════════════════════════════════════════════════╗
# ║░█▀▄░█▀█░█▄█░█▀▄░█░█░█▀▀░█░░░▀█▀░█▀▀░█▀█░▀█▀░░░░█▀█░█░█║
# ║░█▀▄░█▀█░█░█░█▀▄░█░█░█░░░█░░░░█░░█▀▀░█░█░░█░░░░░█▀▀░░█░║
# ║░▀▀░░▀░▀░▀░▀░▀▀░░▀▀▀░▀▀▀░▀▀▀░▀▀▀░▀▀▀░▀░▀░░▀░░▀░░▀░░░░▀░║
# ╚═══════════════════════════════════════════════════════╝
# bambu_octoeverywhere/bambuclient.py
# Additional imports for sending HTTP requests
import urllib.request
@lin-ycv
lin-ycv / bambu_print_watcher.py
Last active July 1, 2025 08:10
Python scripts to monitor Bambu lab printer print status over local MQTT (LAN), sends print info to a backend server when a new print starts, and allows the backender server to terminate a print if needed
import json
import time
import urllib.request
import ssl
import paho.mqtt.client as mqtt
# --- Shared utility ---
print_keys = {"gcode_file", "gcode_state", "mc_print_stage", "mc_remaining_time"}
endpoint = "https://....."
terminate_cmd = '{"print": {"sequence_id": "0", "command": "stop"}}'
@lin-ycv
lin-ycv / BambuAPI-AppsScript.js
Last active November 15, 2024 07:09
Apps Script to communicate with Bambu Cloud API and get printer status
// based on https://github.com/t0nyz0/BambuBoard/blob/main/bambuConnection.js
// and https://github.com/Doridian/OpenBambuAPI/blob/main/cloud-http.md
// https://bambulab.com/api/sign-in/form give 403 forbidden
const sProp = PropertiesService.getScriptProperties();
const account = sProp.getProperty('account');
const password = sProp.getProperty('password');
const sheetid = sProp.getProperty('sheetid');
const api = (e) => 'https://api.bambulab.com/v1/' + e;
const login = 'user-service/user/login';
import RPi.GPIO as GPIO
from mfrc522 import SimpleMFRC522
import time
import datetime
import csv
relayPin = 4
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
import RPi.GPIO as GPIO
from mfrc522 import SimpleMFRC522
import time
import datetime
relayPin = 4
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)
GPIO.setup(relayPin, GPIO.OUT)
using System.Drawing;
using System.Windows.Forms;
using System.Windows.Input;
this.Component.Description = "Copy all wires connected to a node to another node.";
this.Component.Name = "Copy Wires";
this.Component.NickName = "Copy";
Instances.ActiveCanvas.KeyUp -= keyHandle;
Instances.ActiveCanvas.KeyUp += keyHandle;
using System.Drawing;
// Descriptions
Component.Name = "Canvas Colour";
Component.Description = "Changes colour of canvas background and grid";
Component.Params.Input[0].Name = "Enable";
Component.Params.Input[0].NickName = "E";
Component.Params.Input[0].Description = "Toggle to enable/disable custom colour settings";
Component.Params.Input[1].Name = "Background Colour";
Component.Params.Input[1].NickName = "B";
@lin-ycv
lin-ycv / PictureFrame.cs
Created May 25, 2022 12:45
RhinoCS PictureFrame with Transparency
// Get png's
string[] files = System.IO.Directory.GetFiles(dir);
int i = 0;
if(place)
{
foreach(var pt in loc){
// Add PictureFrame
var id = doc.Objects.AddPictureFrame(// Guid
new Plane(pt, Vector3d.XAxis, Vector3d.ZAxis), // Plane