Skip to content

Commit b19c9da

Browse files
committed
Co-authored-by: sgbaird <45469701+sgbaird@users.noreply.github.com>
1 parent a0ca68c commit b19c9da

13 files changed

Lines changed: 811 additions & 138 deletions

File tree

.github/workflows/copilot-setup-steps.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ jobs:
4040
- name: Install package and dev dependencies
4141
run: |
4242
python -m pip install --upgrade pip
43-
python -m pip install ax-platform prefect prefect-slack
43+
python -m pip install ax-platform prefect prefect-slack paho-mqtt
4444
python -m pip install -e .
4545
# python -m pip install tox pre-commit
4646
# pre-commit run --all-files

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,3 +71,4 @@ src/ac_training_lab/squidstat/SquidstatPyLibrary-1.9.1.8-py3-none-win_amd64.whl
7171
src/ac_training_lab/apriltag_demo/tag25_09_00000.png
7272
src/ac_training_lab/apriltag_demo/tag36_11_00000.png
7373
src/ac_training_lab/apriltag_demo/tag49_12_00000.png
74+
scripts/playwright/sem-open-close/chat.json

CHANGELOG.md

Lines changed: 11 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,19 @@
1-
# Changelog
2-
3-
All notable changes to this project will be documented in this file.
4-
5-
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6-
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
1+
# CHANGELOG
72

83
## [Unreleased]
9-
104
### Added
11-
- Ultra-minimal MQTT orchestration solution for OT-2 in `sparkplug_minimal/`
12-
- Single `decorator.py` file that handles all MQTT complexity internally
13-
- Simplified `device.py` and `orchestrator.py` with clean API (no MQTT boilerplate visible)
14-
- @sparkplug_task decorator that makes remote calls look like local calls
15-
- Only dependency: paho-mqtt (no Sparkplug B wrapper needed)
16-
17-
### Changed
18-
- Completely rewrote decorator to hide all MQTT implementation details
19-
- Device code now looks like normal Python with just decorator usage
20-
- Orchestrator calls remote functions as if they were local
21-
- Removed mqtt-spb-wrapper dependency for maximum simplicity
22-
23-
### Removed
24-
- All extra files from examples/ directory
25-
- Extra documentation files (QUICK_START.md, MIGRATION_GUIDE.md, etc.)
26-
- Sparkplug B library dependency (using plain MQTT instead)
27-
- FastAPI-based orchestration (has same dependency conflicts as Prefect)
28-
- Cloud deployment guides
29-
- All complex boilerplate from device and orchestrator files
5+
- Support for both `rpicam-vid` (Raspberry Pi OS Trixie) and `libcamera-vid` (Raspberry Pi OS Bookworm) camera commands in `src/ac_training_lab/picam/device.py` to ensure compatibility across different OS versions.
306

317
### Fixed
32-
- Addressed FastAPI having same pydantic/anyio/jsonschema conflicts as Prefect
33-
- Simplified implementation to truly minimal three-file solution
34-
- Made code "look and feel" like normal Python instead of MQTT-heavy
35-
36-
## [0.1.0] - 2024-12-19
8+
- Ctrl+C interrupt handling in `src/ac_training_lab/picam/device.py` now properly exits the streaming loop instead of restarting.
379

10+
## [1.1.0] - 2024-06-11
3811
### Added
39-
- Initial MQTT orchestration framework for OT-2
40-
- Decorator-based task registration
41-
- Device and orchestrator example implementations
42-
- Compatible with Opentrons package (no dependency conflicts)
12+
- Imperial (10-32 thread) alternative design to SEM door automation bill of materials in `docs/sem-door-automation-components.md`.
13+
- Validated McMaster-Carr part numbers and direct links for all imperial components.
14+
15+
### Changed
16+
- No changes to metric design section.
4317

44-
### Security
45-
- TLS/SSL encryption support via MQTT over TLS
46-
- Username/password authentication for MQTT broker
18+
### Notes
19+
- All components sourced from McMaster-Carr for reliability and reproducibility.
Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
```{note}
2-
For devices running a full OS:
3-
- If you need to connect to a WPA2-Enterprise WiFi network (common in institutional environments), please refer to the [Raspberry Pi WPA2-Enterprise WiFi Setup Guide](https://ac-training-lab.readthedocs.io/en/latest/raspberry-pi-wpa2-enterprise.html) first.
2+
Optionally, complete the following network setup steps, applicable to devices such as Raspberry Pis running RPi OS Lite.
43
- Consider setting up Tailscale for secure remote access and management. Please refer to the [Tailscale Setup Guide](https://ac-training-lab.readthedocs.io/en/latest/tailscale-setup.html) for detailed instructions on installation and configuration.
5-
6-
Please complete these network setup steps before proceeding with the device-specific setup below.
4+
- If you need to connect to a WPA2-Enterprise WiFi network (common in institutional environments), please refer to the [Raspberry Pi WPA2-Enterprise WiFi Setup Guide](https://ac-training-lab.readthedocs.io/en/latest/raspberry-pi-wpa2-enterprise.html) first.
75
```

docs/raspberry-pi-wpa2-enterprise.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ First, let's check the current status of your wireless interface (`wlan0`) to un
2020

2121
```bash
2222
ip addr show wlan0
23+
iwgetid
2324
```
2425

2526
This command will display the IP address and connection status of `wlan0`.
@@ -102,6 +103,7 @@ Check if `wlan0` has obtained an IP address and is connected to the "UofT" netwo
102103

103104
```bash
104105
ip addr show wlan0
106+
iwgetid
105107
```
106108

107109
You can also check (example output also shown):
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
# SEM Door Automation Linkage: McMaster-Carr Component Selection
2+
3+
## 1. Adjustable Tie Rod (M4, Stainless Steel)
4+
5+
**Product:** 18-8 Stainless Steel Threaded Rod, M4 × 0.7 mm, 50 mm Length, Fully Threaded
6+
**Link:** [McMaster-Carr 98863A534](https://www.mcmaster.com/98863A534/)
7+
**Justification:** Provides corrosion resistance and compatibility with M4 rod ends and actuator clevis. 50 mm length is suitable for most SEM linkage applications and can be further cut to length if needed. Use with jam nuts for adjustment and secure installation.
8+
9+
## 2. Ball Joint Rod End (M4, Stainless Steel)
10+
**Product:** Internally Threaded Corrosion-Resistant Ball Joint Rod End, M4 × 0.7 mm Thread, 303 Stainless Steel
11+
**Link:** [McMaster-Carr 2988K31](https://www.mcmaster.com/2988K31)
12+
**Justification:** Stainless steel construction ensures corrosion resistance in laboratory environments. Ball joint allows for angular misalignment and smooth actuation. M4 thread is compatible with the tie rod and actuator clevis.
13+
14+
## 3. Jam Nut (M4, Stainless Steel)
15+
**Product:** Stainless Steel Hex Jam Nut, M4 × 0.7 mm Thread
16+
**Link:** [McMaster-Carr 91828A110](https://www.mcmaster.com/91828A110)
17+
**Justification:** Secures the rod end to the tie rod, preventing loosening during repeated actuation. Stainless steel for durability and corrosion resistance.
18+
19+
## 4. Handle Attachment (Cable Tie or U-Bolt Clamp)
20+
**Product:** Select based on SEM handle geometry. Recommended: Stainless steel cable tie or U-bolt clamp sized to fit handle diameter.
21+
**Link:** [Cable Ties](https://www.mcmaster.com/cable-ties/) | [U-Bolt Clamps](https://www.mcmaster.com/u-bolts/)
22+
**Justification:** Provides a secure, non-slip connection to the SEM handle. Stainless steel options preferred for longevity and chemical resistance.
23+
24+
### Cable Tie for SEM Handle Attachment
25+
26+
**Selected Product:** [McMaster-Carr Stainless Steel Cable Tie, 5" Length, 0.18" Width, Part Number 6898K381](https://www.mcmaster.com/6898K381/)
27+
28+
**Specs:** Fits bundle diameters up to 1" (compatible with 20–24 mm SEM handle), 0.18" width, 5" length, 316 stainless steel for maximum corrosion resistance.
29+
30+
**Engineering Justification:** This cable tie is highly corrosion-resistant, fits the 20–24 mm handle diameter, and provides secure, low-profile clamping for the SEM handle geometry. The 0.18" width and 5" length ensure mechanical strength and ease of installation, while the 316 stainless steel construction prevents degradation in laboratory environments and ensures long-term reliability.
31+
32+
## Assembly Notes
33+
34+
35+
*All components sourced from McMaster-Carr for reliability and ease of procurement.*
36+
37+
---
38+
39+
## Alternative Design: Imperial (10-32 Thread)
40+
41+
This section provides a complete bill of materials for automating a SEM door using imperial (10-32) threaded components, all sourced from McMaster-Carr. Stainless steel is selected for corrosion resistance and mechanical reliability.
42+
43+
### Bill of Materials
44+
45+
| Item | Description | McMaster-Carr Part # | Link | Engineering Justification |
46+
| --------------------------- | -------------------------------------------- | -------------------- | ------------------------------------------------ | -------------------------------------------- |
47+
| Threaded Rod | 10-32, 18-8 Stainless Steel, 1 ft length | 98804A106 | [98804A106](https://www.mcmaster.com/98804A106/) | Corrosion-resistant, compatible with linkage |
48+
| Ball Joint Rod End (male) | 10-32, 303 Stainless Steel, Right Hand | 59915K21 | [59915K21](https://www.mcmaster.com/59915K21/) | Allows angular motion, corrosion-resistant |
49+
| Ball Joint Rod End (female) | 10-32, 303 Stainless Steel, Right Hand | 59915K41 | [59915K41](https://www.mcmaster.com/59915K41/) | For adjustable linkage, corrosion-resistant |
50+
| Ball Joint Linkage | 10-32, 304 Stainless Steel, Right Hand | 6058K35 | [6058K35](https://www.mcmaster.com/6058K35/) | Swivel connection, corrosion-resistant |
51+
| Jam Nut (thin profile) | 10-32, 18-8 Stainless Steel, 1/pack | 94450A521 | [94450A521](https://www.mcmaster.com/94450A521/) | Locks rod end, corrosion-resistant |
52+
| Cable Tie/U-bolt Clamp | Stainless Steel, 7.9" length, 50 lb capacity | 6898K381 | [6898K381](https://www.mcmaster.com/6898K381/) | Secures linkage, corrosion-resistant |
53+
54+
### Engineering Notes
55+
56+
- All components are stainless steel for maximum corrosion resistance in laboratory environments.
57+
- 10-32 imperial thread is a standard for light mechanical linkages, ensuring compatibility and ease of sourcing.
58+
- Ball joint rod ends and linkages allow for angular misalignment and smooth operation of the SEM door.
59+
- Thin-profile jam nuts are used to lock rod ends in place without adding bulk.
60+
- Cable tie/U-bolt clamp secures the linkage to the actuator or door bracket.
61+
62+
### Assembly Guidance
63+
64+
1. Cut the threaded rod to the required length for your SEM door linkage.
65+
2. Thread ball joint rod ends onto each end of the rod; use jam nuts to lock them in place.
66+
3. Use the ball joint linkage for additional articulation if needed.
67+
4. Secure the completed linkage to the actuator and door bracket using the stainless steel cable tie/U-bolt clamp.
68+
5. Verify smooth operation and adjust as needed.

0 commit comments

Comments
 (0)