MOBKOM_4G/MOBKOM_Daten_mit_4G.typ
2026-05-12 21:02:40 +02:00

213 lines
6.4 KiB
Typst

#set text(font: "Libertinus Serif", size: 12pt, lang: "de", hyphenate: true) // Silbentrennung
#set par(justify: true) // Blocksatz
#import "@preview/touying:0.6.1": *
#import themes.metropolis: *
#import "@preview/cetz:0.4.1"
#show: metropolis-theme.with(
aspect-ratio: "16-9",
config-info(
title: [Getränkeautomat mit dem Raspberry Pi],
// title: [Daten mit 4G],
subtitle: [Mobile Kommunikationsnetze],
author: [NOAH BALSIGER, THOMAS ZWICKER],
date: datetime.today(),
),
)
#title-slide()
#components.adaptive-columns(outline())
== Was ist M2M?
#cetz.canvas({
import cetz.draw: *
content((9, 4.5), [Automatische Bestellung])
content((0, 0), image("img/m2m_selecta.jpg"))
content((15, 0), image("img/m2m_logistik.jpg", width: 12cm))
content((8, -5), image("img/m2m_lkw.png", width: 5cm))
line((4, 3), (10, 3), mark: (end: ">"), fill: blue, stroke: orange + 10pt)
line((10, -3), (4, -3), mark: (end: ">"), fill: blue, stroke: orange + 10pt)
})
// == 4G / 5G
== 4G vs. 5G: technische Unterschiede
#slide[
#table(
columns: 3,
[*Eigenschaft*], [*4G / LTE*], [*5G NR*],
[Funkstandard], [LTE], [New Radio (NR)],
[Kernnetz], [EPC], [5GC oder EPC],
[Latenz], [typ. 20--50 ms], [tiefer möglich, besonders mit SA],
[Bandbreite], [bis ca. 20 MHz pro Träger], [bis 100 MHz sub-6 GHz, mehr bei mmWave],
[Antennen], [MIMO], [massive MIMO, Beamforming],
[Ziel], [mobiles Breitband], [eMBB, URLLC, mMTC],
)
5G ist nicht nur „schnelleres 4G“, sondern eine flexiblere Netzarchitektur
für hohe Datenraten, tiefe Latenz und viele gleichzeitige Geräte.
]
== 5G NSA vs. SA
#slide[
*Non-Standalone (NSA):*
- 5G NR wird zusätzlich zu LTE verwendet
- Steuerung läuft meist über LTE
- Kernnetz bleibt das 4G-Kernnetz: *EPC*
- schneller Ausbau möglich, aber nicht alle 5G-Funktionen verfügbar
#align(center)[
`UE -> LTE eNodeB + 5G gNodeB -> EPC`
]
*Standalone (SA):*
- 5G NR arbeitet direkt mit dem 5G-Kernnetz: *5GC*
- ermöglicht niedrigere Latenz, Network Slicing und bessere Integration von IoT
- keine LTE-Ankerverbindung nötig
#align(center)[
`UE -> 5G gNodeB -> 5GC`
]
]
== Mesh, Sidelink und Device-to-Device
#slide[
Normales 5G ist *kein öffentliches Mesh-Netz*.
Standardfall:
#align(center)[
`UE <-> gNodeB <-> 5G Core <-> Internet`
]
Dabei kommuniziert das Endgerät, also das *User Equipment (UE)*,
direkt mit der Basisstation, dem *gNodeB*.
5G unterstützt aber *Sidelink*-Kommunikation:
#align(center)[
`UE <-> UE`
]
Diese direkte Gerätekommunikation ist vor allem für Spezialfälle relevant:
Fahrzeugkommunikation, Industrie, Rettungsdienste oder lokale Netze.
*Wichtig:*
Ein normales Smartphone leitet im öffentlichen 5G-Netz keine Daten anderer
Smartphones zur Antenne weiter.
]
== Öffentliche IP & Carrier-Grade NAT (CGNAT)
#grid(columns: (1fr,)*1, gutter: 10pt,
[#align(center)[#image("img/cgnat.png", width: 80%)]],
)
== VPN Wireguard / Tailscale
#grid(columns: (1fr, 1fr), gutter: 10pt,
[
*Herausforderung:*
- Pi hat keine öffentliche IPv4-Adresse (CGNAT)
// - Eingehende Verbindungen werden vom Provider blockiert
*Lösung: Wireguard*
- *Peer-to-Peer:* Pi baut Verbindung aktiv nach aussen auf
- *UDP-basiert:* Effizient und schnell auf mobilen Verbindungen
- *Roaming:* Verbindung bleibt stabil, auch wenn die Funkzelle wechselt
],
[#align(center)[#image("img/vpn.png", width: 100%)]],
)
== Dynamic DNS
#grid(columns: (1.5fr, 1fr), gutter: 10pt,
[
- Mobilfunk-IPs sind meist dynamisch und wechseln oft
- *Dynamic DNS (DDNS):* Verknüpft wechselnde IP mit festem Hostnamen
- *Vorteil:* Einfacher Zugriff über `mobkom.xxx.de` statt Kryptischer IP-Adressen
],
[#align(center)[#image("img/dns.png", width: 100%)]],
)
== MQTT Sicherheit & Externer Broker
#slide[
// = Mehrstufiges Sicherheitskonzept
#grid(columns: (1fr, 1fr), gutter: 15pt,
[
*Transport-Ebene (TLS/SSL)*
- Verschlüsselung des gesamten Kanals
- Schützt auch Metadaten (Topics)
- Zertifikatsmanagement erforderlich
- Sicher gegen Man-in-the-Middle
],
[
*Daten-Ebene (Payload)*
- Verschlüsselung direkt in Python (AES)
- Schutz vor kompromittierten Brokern
- "Zero Trust": Broker sieht nur Chiffre
- Sehr geringer Overhead
]
)
#v(1em)
*Sicherung des externen Brokers:*
- *Authentifizierung:* Kein Zugriff ohne gültige Credentials
- *ACLs (Access Control Lists):* Pi darf nur auf `/getraenke/status` schreiben
- *Vorteil Extern:* Erreichbarkeit ohne Port-Forwarding/VPN-Zwang für Clients
]
== GPS
#slide[
#grid(columns: (1fr, 1fr), gutter: 15pt,
[
*Ortung via LTE-Modul*
- Integriertes GNSS-Modul auf dem Waveshare HAT
- *Datenformat:* NMEA-0183 (Standard-Textprotokoll)
- *Anwendungsfall:* Tracking des Automaten oder Diebstahlschutz
- *Herausforderung:* GPS-Antenne benötigt meist Sichtkontakt zum Himmel
],
[#align(center)[#image("img/csm_1_Laufzeitmessung_4b22a687fd.png", width: 80%)]],
)
]
// == Aufbau
// 3. Wichtiger technischer Unterschied: USB vs. UART
// Hier kommt ein entscheidender Punkt für deine Performance:
// - Über GPIO (UART): Wenn du den HAT nur oben aufsteckst, ist die Geschwindigkeit auf die serielle Rate begrenzt (meistens max. 115.200 bis 4.000.000 bps). Das ist für Sensordaten okay, aber für "echtes" Surfen sehr langsam.
// - Über USB-Kabel: Wenn du das mitgelieferte USB-Kabel zusätzlich zwischen HAT und Pi einsteckst, wird das Modul als echtes Netzwerkgerät erkannt (WWAN). Damit erreichst du die volle 4G-Geschwindigkeit (bis zu 150 Mbit/s).
== Hardware & Aufbau
#slide[
*Die technischen Tücken*
#table(
columns: (1fr, 1fr),
[*Anbindung via GPIO (UART)*], [*Anbindung via USB*],
[Einfaches Aufstecken], [Zusätzliches Kabel nötig],
[Max. 115'200 Baud (0.1 Mbit/s)], [WWAN-Interface (bis 150 Mbit/s)],
[GPS/LTE teilen sich serielle Ressource], [Parallele Datenströme möglich],
[Nur für kleine Sensordaten (MQTT)], [Massentauglich (Streaming/Updates)],
)
*Wichtig:* Ohne USB-Kabel können GPS und LTE nicht simultan mit voller Performance genutzt werden.
]
== Demo
#grid(columns: (1fr,)*1, gutter: 10pt,
[#align(center)[#image("img/demo_aufbau.svg", width: 100%)]],
// [#align(center)[#image("img/seitenansicht.png", width: 100%)]],
)
#slide(title: none, config: (handout: false))[
#text(size: 32pt)[Danke fürs Zuhören] \
Fragen?
]