concepts = [
// Core Fundamentals
{id: "sensors", name: "Sensors", category: "Fundamentals", level: 1,
description: "Devices that detect physical phenomena and convert to electrical signals",
topics: ["Temperature", "Pressure", "Motion", "Light", "Humidity"]},
{id: "actuators", name: "Actuators", category: "Fundamentals", level: 1,
description: "Devices that produce physical action from electrical signals",
topics: ["Motors", "Relays", "Valves", "LEDs", "Speakers"]},
{id: "microcontrollers", name: "Microcontrollers", category: "Fundamentals", level: 1,
description: "Small computers that control IoT devices",
topics: ["Arduino", "ESP32", "Raspberry Pi", "STM32"]},
// Connectivity
{id: "wifi", name: "Wi-Fi", category: "Connectivity", level: 2,
description: "High-bandwidth wireless for home/office IoT",
topics: ["802.11", "WPA2/3", "Mesh Networks"]},
{id: "bluetooth", name: "Bluetooth/BLE", category: "Connectivity", level: 2,
description: "Short-range low-power wireless",
topics: ["BLE Advertising", "GATT", "Beacons"]},
{id: "lorawan", name: "LoRaWAN", category: "Connectivity", level: 2,
description: "Long-range low-power wide-area network",
topics: ["Chirp Spread Spectrum", "ADR", "Class A/B/C"]},
{id: "zigbee", name: "Zigbee", category: "Connectivity", level: 2,
description: "Mesh networking for smart home",
topics: ["Mesh Routing", "802.15.4", "Coordinators"]},
{id: "cellular", name: "Cellular IoT", category: "Connectivity", level: 2,
description: "NB-IoT and LTE-M for wide-area coverage",
topics: ["NB-IoT", "LTE-M", "5G mMTC"]},
// Protocols
{id: "mqtt", name: "MQTT", category: "Protocols", level: 3,
description: "Publish-subscribe messaging for IoT",
topics: ["Topics", "QoS Levels", "Retained Messages"]},
{id: "coap", name: "CoAP", category: "Protocols", level: 3,
description: "Constrained application protocol for devices",
topics: ["RESTful", "UDP", "Observe"]},
{id: "http", name: "HTTP/REST", category: "Protocols", level: 3,
description: "Web APIs for cloud integration",
topics: ["REST API", "JSON", "Webhooks"]},
// Data & Analytics
{id: "timeseries", name: "Time-Series Data", category: "Data", level: 3,
description: "Handling temporal sensor data",
topics: ["InfluxDB", "TimescaleDB", "Downsampling"]},
{id: "edge", name: "Edge Computing", category: "Data", level: 3,
description: "Processing data close to sensors",
topics: ["Fog Computing", "Edge AI", "Filtering"]},
{id: "cloud", name: "Cloud Platforms", category: "Data", level: 3,
description: "Scalable IoT backends",
topics: ["AWS IoT", "Azure IoT", "Google Cloud IoT"]},
{id: "analytics", name: "Analytics & ML", category: "Data", level: 4,
description: "Extracting insights from IoT data",
topics: ["Anomaly Detection", "Predictive Maintenance", "TinyML"]},
// Security
{id: "encryption", name: "Encryption", category: "Security", level: 2,
description: "Protecting data in transit and at rest",
topics: ["TLS", "AES", "Key Management"]},
{id: "authentication", name: "Authentication", category: "Security", level: 2,
description: "Verifying device and user identity",
topics: ["X.509 Certificates", "OAuth", "Device Provisioning"]},
{id: "zerotrust", name: "Zero Trust", category: "Security", level: 4,
description: "Never trust, always verify security model",
topics: ["Microsegmentation", "Continuous Verification"]},
// Applications
{id: "smarthome", name: "Smart Home", category: "Applications", level: 3,
description: "Home automation and monitoring",
topics: ["Lighting", "HVAC", "Security", "Appliances"]},
{id: "industrial", name: "Industrial IoT", category: "Applications", level: 4,
description: "Factory automation and monitoring",
topics: ["SCADA", "OPC-UA", "Digital Twins", "Predictive Maintenance"]},
{id: "healthcare", name: "Healthcare IoT", category: "Applications", level: 4,
description: "Medical devices and patient monitoring",
topics: ["Wearables", "Remote Monitoring", "HIPAA"]},
// Design
{id: "power", name: "Power Management", category: "Design", level: 2,
description: "Battery life and energy harvesting",
topics: ["Sleep Modes", "Energy Harvesting", "Battery Selection"]},
{id: "prototyping", name: "Prototyping", category: "Design", level: 1,
description: "Building and testing IoT devices",
topics: ["Breadboarding", "PCB Design", "3D Printing"]}
]
// Define relationships (edges)
relationships = [
// Fundamentals connections
{from: "sensors", to: "microcontrollers", label: "connects to"},
{from: "actuators", to: "microcontrollers", label: "controlled by"},
{from: "microcontrollers", to: "wifi", label: "communicates via"},
{from: "microcontrollers", to: "bluetooth", label: "communicates via"},
{from: "microcontrollers", to: "zigbee", label: "communicates via"},
{from: "microcontrollers", to: "lorawan", label: "communicates via"},
// Connectivity to protocols
{from: "wifi", to: "mqtt", label: "carries"},
{from: "wifi", to: "http", label: "carries"},
{from: "wifi", to: "coap", label: "carries"},
{from: "cellular", to: "mqtt", label: "carries"},
{from: "cellular", to: "coap", label: "carries"},
{from: "lorawan", to: "cloud", label: "connects to"},
// Protocols to data
{from: "mqtt", to: "cloud", label: "sends to"},
{from: "mqtt", to: "edge", label: "processed at"},
{from: "coap", to: "edge", label: "processed at"},
{from: "http", to: "cloud", label: "sends to"},
{from: "cloud", to: "timeseries", label: "stores in"},
{from: "edge", to: "timeseries", label: "buffers in"},
{from: "timeseries", to: "analytics", label: "feeds"},
// Security relationships
{from: "mqtt", to: "encryption", label: "secured by"},
{from: "cloud", to: "authentication", label: "requires"},
{from: "authentication", to: "zerotrust", label: "extends to"},
{from: "encryption", to: "zerotrust", label: "component of"},
// Applications
{from: "bluetooth", to: "smarthome", label: "enables"},
{from: "zigbee", to: "smarthome", label: "enables"},
{from: "wifi", to: "smarthome", label: "enables"},
{from: "cellular", to: "industrial", label: "enables"},
{from: "lorawan", to: "industrial", label: "enables"},
{from: "analytics", to: "industrial", label: "powers"},
{from: "bluetooth", to: "healthcare", label: "enables"},
{from: "analytics", to: "healthcare", label: "powers"},
// Design
{from: "sensors", to: "power", label: "constrained by"},
{from: "microcontrollers", to: "power", label: "constrained by"},
{from: "prototyping", to: "sensors", label: "uses"},
{from: "prototyping", to: "microcontrollers", label: "uses"}
]
// Category colors
categoryColors = ({
"Fundamentals": "#E67E22",
"Connectivity": "#3498DB",
"Protocols": "#9B59B6",
"Data": "#16A085",
"Security": "#E74C3C",
"Applications": "#2C3E50",
"Design": "#F39C12"
})
// Selected concept state
mutable selectedConcept = null
// Category filter
viewof categoryFilter = Inputs.select(
["All", ...Object.keys(categoryColors)],
{label: "Filter by Category:", value: "All"}
)
// Level filter
viewof levelFilter = Inputs.select(
["All Levels", "Beginner (1-2)", "Intermediate (3)", "Advanced (4)"],
{label: "Filter by Level:", value: "All Levels"}
)