Modular training material for Assembling Smart Cyber-Physical Systems (Elsevier), aligned with the AssemblingSmartCPS GitHub organization.
417 slides across 10 English PPTX decks (Modules A–I). Slide URLs use placeholder {{VM_IP}} — replace with your lab host IP before presenting.
Recent lab ops: see docs/CHANGELOG.md and docs/LAB_NETWORK_ACCESS.md (Tailscale dual ingress, /lab-ws/ demos, external boards, Lab ops scripts).
-
Clone this repo and set your lab IP:
git clone https://github.com/lucadagati/AssemblyingCPS_training.git cd AssemblyingCPS_training cp vm-ip.txt.example vm-ip.txt # edit: your machine IP (LAN or Tailscale) export S4T_LAB_HOST=$(cat vm-ip.txt)
-
Clone book repos and start Stack4Things:
chmod +x scripts/clone-repos.sh && ./scripts/clone-repos.sh cd repos/ch13 docker compose -f docker-compose.yml -f ../../patches/docker-compose.lab.yml up -d
-
Validate the environment:
cd ../.. ./validate/validate-all.sh -
Follow the lab using:
HANDS_ON_COMMANDS.md— copy-paste commands (EN)GUIDA_SETUP.md— setup guide (IT)PORT_FORWARDING.md— browser URLs +/lab-ws/demosdocs/LAB_NETWORK_ACCESS.md— multi-ingress & external boardsdocs/BOOK_DIFFERENCES.md— book vs lablab-ops/— manual LR helpers (manual LR create/destroy)slides/Module*.pptx— decks (Find/Replace{{VM_IP}}if needed)
| Module | Deliverable |
|---|---|
| A | Screenshot: board Active in Horizon + curl HTTP 200 on :8812 |
| B | HelloName Plugin Call output + optional Docker alpine JSON |
| C | InfluxDB rows in environmental_data measurement |
Prefer path proxy (works for every Tailscale/LAN address of the VM):
http://{{VM_IP}}/lab-ws/50006/ # wot-fritzing (example port)
http://{{VM_IP}}/horizon # Horizon
| Resource | Purpose |
|---|---|
slides/*.pptx |
Ready-to-project decks with UML sequence diagrams |
docs/MODULES.md |
Module A–I map and prerequisites |
docs/DEMO_VERIFICATION.md |
Verified demo matrix |
docs/CHANGELOG.md |
Lab overlay history |
docs/LAB_NETWORK_ACCESS.md |
Tailscale / LAN / external board |
decks/*.py |
Slide source — edit and regenerate |
assets/ |
Horizon/LR screenshots + architecture PNGs |
lab-ops/ |
Manual LR board create / port map |
python3 -m venv .venv
.venv/bin/pip install -r requirements.txt
.venv/bin/python scripts/generate_diagrams.py
.venv/bin/python generate_slides_modular_en.pyOptional full lab pipeline (deploy + validate): ./scripts/build-all.sh
| File | Module | Topic |
|---|---|---|
00_Course_Map_EN.pptx |
Overview | Paths 3h / 6h / 9h |
ModuleA_Deploy_IOcloud_EN.pptx |
A | Ch.4 + Ch.13 deploy |
ModuleB_Plugin_Services_EN.pptx |
B | Ch.14 plugins |
ModuleC_IoT_Computation_EN.pptx |
C | Ch.15 environmental |
ModuleD_MultiBoard_EN.pptx |
D | Multi-board + fleet |
ModuleE_VirtualNetworking_EN.pptx |
E | Ch.5 VN (optional) |
ModuleF_WebServices_WoT_EN.pptx |
F | Ch.6 + Ch.14 WoT/WSTUN |
ModuleG_FederatedLearning_EN.pptx |
G | Ch.19 FL |
ModuleH_Blueprint_K3s_EN.pptx |
H | Ch.11 Blueprint |
ModuleI_FaaS_Deviceless_EN.pptx |
I | Ch.7 Deviceless |
See slides/README.md for sequence diagram mapping.
| Item | Description |
|---|---|
vm-ip.txt |
Your lab IP (gitignored — use vm-ip.txt.example) |
S4T_LAB_HOST |
Override IP for scripts |
{{VM_IP}} |
Placeholder in slides and docs |
| Horizon | admin / s4t |
| Lightning-Rod | me / arancino |
| LR container SSH (lab-ops scripts) | root / arancino (inside container only; no host port) |
Assembling Smart CPS — Elsevier
Companion repos: github.com/AssemblingSmartCPS
Future extensions: docs/ROADMAP.md
Training material follows book companion repo licenses. ch13–ch19 repos are forks of MDSLab projects under their respective terms.