TL;DR: DeviceScript ist ein Open-Source-Projekt von Microsoft, das dir ermöglicht, TypeScript direkt auf Microcontrollern wie ESP32 und Raspberry Pi Pico (RP2040) auszuführen. Du bekommst Typsicherheit, moderne Tooling-Unterstützung und eine vertraute Syntax – direkt auf der Hardware.
🤔 Was wäre, wenn du TypeScript auf Microcontrollern nutzen könntest?
Stell dir vor, du könntest dein Wissen aus der Webentwicklung direkt auf einen Microcontroller übertragen. Kein C++, kein MicroPython – einfach TypeScript, die Sprache, die du vielleicht schon täglich nutzt. Genau das macht DeviceScript möglich.
Wenn du bisher vor Embedded-Programmierung zurückgeschreckt bist, weil die Einstiegshürde zu hoch war, dann ist DeviceScript genau das Richtige für dich.
📦 Was ist DeviceScript?
DeviceScript ist ein Open-Source-Projekt von Microsoft, das eine Subset von TypeScript auf ressourcenbeschränkte Microcontroller bringt. Der Code wird in einen kompakten Bytecode kompiliert und in einer kleinen VM auf dem Device ausgeführt.
Das Besondere daran:
- TypeScript-Syntax mit statischer Typisierung
- VS Code Integration mit Debugging, Intellisense und Deployment
- Eingebaute Unterstützung für Hardware-Abstraktionen (GPIO, I2C, SPI, etc.)
- Networking out of the box (WiFi, MQTT, HTTP)
- Event-basiertes Programmiermodell, ähnlich wie Node.js
🔧 Unterstützte Hardware
DeviceScript unterstützt aktuell folgende Plattformen:
- ESP32 – der Klassiker für IoT-Projekte
- ESP32-S2 / S3 / C3 – die neueren Varianten mit USB und BLE
- Raspberry Pi Pico (RP2040) – der günstige Einstieg in die Microcontroller-Welt
Das bedeutet: Du kannst mit Boards arbeiten, die nur wenige Euro kosten und trotzdem TypeScript nutzen.
🚀 Erste Schritte: So legst du los
Der einfachste Weg ist die VS Code Extension. Installiere sie direkt aus dem Marketplace:
# DeviceScript CLI global installieren
npm install -g @devicescript/cli
# Neues Projekt erstellen
devicescript init my-iot-project
cd my-iot-project
Öffne dann das Projekt in VS Code. Die Extension erkennt das DeviceScript-Projekt automatisch und bietet dir:
- Syntax-Highlighting und Typchecks
- Device Simulator – teste ohne echte Hardware
- One-Click Deploy auf verbundene Boards
- Live Debugging über die serielle Schnittstelle
💡 Beispiele: LED blinken, Sensor lesen, GPIO steuern
LED blinken
import { pins, DigitalPin } from "@devicescript/core"
const led = new DigitalPin(pins.GP0)
setInterval(async () => {
await led.toggle()
}, 500)
Temperatursensor auslesen
import { Temperature } from "@devicescript/core"
const temp = new Temperature()
temp.reading.subscribe(value => {
console.log(`Temperatur: ${value}°C`)
})
GPIO steuern
import { gpio } from "@devicescript/core"
const button = gpio(2, { mode: "input", pull: "up" })
const relay = gpio(4, { mode: "output" })
button.subscribe(async (value) => {
await relay.write(value ? 0 : 1)
console.log(`Relay: ${value ? "AUS" : "AN"}`)
})
⚖️ Unterschiede zu Arduino und MicroPython
| Eigenschaft | Arduino (C++) | MicroPython | DeviceScript |
|---|---|---|---|
| Sprache | C/C++ | Python | TypeScript |
| Typsicherheit | Statisch | Dynamisch | Statisch |
| IDE-Support | Arduino IDE / PlatformIO | Thonny / VS Code | VS Code (nativ) |
| Debugging | Eingeschränkt | REPL | VS Code Debugger |
| Lernkurve | Steil | Flach | Flach (für Web-Devs) |
| Community | Riesig | Groß | Wachsend |
| Performance | Nativ / Schnell | Interpretiert | Bytecode-VM |
| Networking | Manuell | Bibliotheken | Built-in |
🌐 Networking: WiFi, MQTT und HTTP built-in
Ein großer Vorteil von DeviceScript ist die eingebaute Networking-Unterstützung. Du musst keine externen Libraries einbinden:
WiFi verbinden
import { connect } from "@devicescript/net"
await connect({
ssid: "MeinWLAN",
password: "geheim123"
})
console.log("Verbunden!")
HTTP Request
import { fetch } from "@devicescript/net"
const res = await fetch("https://api.example.com/data")
const data = await res.json()
console.log(data)
MQTT Publish
import { MQTTClient } from "@devicescript/net"
const mqtt = new MQTTClient({
host: "broker.hivemq.com",
port: 1883
})
await mqtt.publish("home/temperature", "22.5")
Das Ganze fühlt sich an wie Node.js – nur eben auf einem Microcontroller mit 4 MB Flash.
⚠️ Einschränkungen: Wann du DeviceScript NICHT nutzen solltest
So spannend DeviceScript auch ist – es gibt Situationen, in denen es nicht die beste Wahl ist:
- Echtzeit-kritische Anwendungen: Die Bytecode-VM fügt Latenz hinzu. Für harte Echtzeit-Anforderungen (z.B. Motor-Steuerung) bleib bei C/C++.
- Extrem ressourcenbeschränkte MCUs: Boards mit weniger als 256 KB RAM werden nicht unterstützt.
- Produktionsreife: DeviceScript ist noch relativ jung. Für Massenproduktion solltest du das Risiko abwägen.
- Große Community gefragt: Wenn du auf eine riesige Community mit tausenden Tutorials angewiesen bist, sind Arduino oder MicroPython besser aufgestellt.
- Spezielle Peripherie: Nicht alle Sensoren und Aktoren haben bereits DeviceScript-Treiber.
🎯 Fazit
DeviceScript ist ein faszinierendes Projekt, das die Lücke zwischen Webentwicklung und Embedded-Programmierung schließt. Wenn du bereits TypeScript beherrschst, kannst du mit minimalem Aufwand in die IoT-Welt eintauchen.
Die Kombination aus VS Code Integration, TypeScript-Typsicherheit und eingebautem Networking macht den Einstieg extrem angenehm. Klar, es ist noch kein Arduino-Killer – aber für Prototyping, Hobby-Projekte und Web-Developer, die Hardware erkunden wollen, ist es ein Game-Changer.
Probier es aus: microsoft.github.io/devicescript