20TD02O Spyder - itnett/FTD02H-N GitHub Wiki

20TD02O Spyder

Selvfølgelig! La oss gå gjennom emnet IoT og maskinvare i ITD-laben steg for steg, med fokus på hvordan du kan lære og undervise i disse områdene. Vi vil dekke hvert tema grundig og inkludere praktiske øvelser der det er relevant.

Tema: IoT

1. Hva er IoT?

Forklaring:

  • IoT står for Internet of Things, eller tingenes internett.
  • Det refererer til nettverket av fysiske enheter som er koblet til internett og kan kommunisere med hverandre.

Praktisk Øvelse:

  • Gi eksempler på IoT-enheter: smartwatches, smarthjem-enheter, industrielle sensorer, etc.
  • Diskuter hvordan disse enhetene samler inn, sender og mottar data.

2. Azure IoT

Forklaring:

  • Azure IoT er en samling av tjenester fra Microsoft Azure som hjelper med å bygge IoT-løsninger.
  • Den inkluderer Azure IoT Hub, Azure Digital Twins, og andre verktøy for å administrere IoT-enheter og data.

Praktisk Øvelse:

  • Opprett en Azure IoT Hub i Azure-portalen.
  • Registrer en IoT-enhet i IoT Hub og send simulert telemetridata ved bruk av et Python-skript.

3. Simuleringsverktøy

Forklaring:

  • Simuleringsverktøy brukes til å modellere og teste IoT-enheter og nettverk uten fysisk maskinvare.

Praktisk Øvelse:

  • Bruk et verktøy som Cisco Packet Tracer eller IoT-simulatorer for å bygge og teste virtuelle IoT-nettverk.

4. Mikrokontrollere, Aktuatorer og Sensorer

Forklaring:

  • Mikrokontrollere: små datamaskiner på en enkelt integrert krets som brukes til å styre andre enheter.
  • Aktuatorer: komponenter som konverterer elektriske signaler til fysiske handlinger.
  • Sensorer: enheter som registrerer fysiske endringer i miljøet og konverterer dem til elektriske signaler.

Praktisk Øvelse:

  • Koble en mikrokontroller (som Arduino eller Raspberry Pi) til en sensor (f.eks. temperatursensor) og en aktuator (f.eks. motor).
  • Skriv et program for å lese data fra sensoren og styre aktuatoren basert på sensordataene.

5. Protokoller og Standarder

Forklaring:

  • MQTT: en lettvektsmeldingsprotokoll for små sensorer og mobile enheter, optimalisert for høye forsinkelser og lav båndbredde.
  • CoAP: en web-overføringprotokoll for bruk i enheter med lav strømforbruk.

Praktisk Øvelse:

  • Sett opp en MQTT-broker og publiser/abonner på meldinger ved bruk av MQTT-klienter.
  • Implementer et enkelt CoAP-system med en server og klient som kommuniserer via CoAP.

6. Smarthus

Forklaring:

  • Smarthus refererer til bruk av IoT-teknologi for å automatisere og fjernstyre husholdningssystemer som belysning, sikkerhet, og klimaanlegg.

Praktisk Øvelse:

  • Design et smarthus-system ved bruk av ulike IoT-enheter (smarte lys, termostater, sikkerhetskameraer).
  • Implementer scenarier som automatisk belysning basert på bevegelsessensorer eller fjernstyring av termostaten via en mobilapp.

7. Datasikkerhet

Forklaring:

  • Datasikkerhet i IoT inkluderer beskyttelse av data, enheter og nettverk mot uautorisert tilgang og angrep.

Praktisk Øvelse:

  • Implementer grunnleggende sikkerhetsmekanismer som kryptering av data som sendes mellom enheter, bruk av sikre kommunikasjonsprotokoller (f.eks. HTTPS, TLS).
  • Konfigurer og aktiver en brannmur på en IoT-enhet for å begrense nettverkstilgang.

Tema: Maskinvare og bruk av ITD-lab

1. Serverhardware

Forklaring:

  • Serverhardware refererer til de fysiske komponentene som utgjør en server, inkludert prosessor, minne, lagring og nettverksgrensesnitt.

Praktisk Øvelse:

  • Demonstrer hvordan man bygger en enkel server ved å montere komponenter som CPU, RAM, harddisker og nettverkskort.

2. Generell Feilsøking

Forklaring:

  • Feilsøking involverer å identifisere og løse problemer som kan oppstå i maskinvare eller programvare.

Praktisk Øvelse:

  • Bruk verktøy som ping, traceroute, og diagnostikkverktøy for å feilsøke nettverks- og maskinvareproblemer.

3. Nettverksenheter

Forklaring:

  • Nettverksenheter inkluderer rutere, switcher, og tilgangspunkter som muliggjør kommunikasjon i et nettverk.

Praktisk Øvelse:

  • Konfigurer en enkel nettverksinfrastruktur med en ruter, switch og flere klientenheter.
  • Utfør nettverkssegmentering ved bruk av VLAN.

4. UPS og Andre Enheter Tilknyttet Serverrom

Forklaring:

  • En UPS (Uninterruptible Power Supply) gir backup-strøm til kritisk infrastruktur under strømbrudd.

Praktisk Øvelse:

  • Installer og konfigurer en UPS-enhet for en server.
  • Simuler et strømbrudd og observer hvordan UPS-enheten gir backup-strøm.

5. Virtualisering

Forklaring:

  • Virtualisering innebærer å opprette virtuelle maskiner (VM-er) som kjører på fysisk maskinvare, slik at flere operativsystemer og applikasjoner kan kjøres på samme maskinvare.

Praktisk Øvelse:

  • Bruk virtualiseringsverktøy som VMware eller VirtualBox til å opprette og administrere virtuelle maskiner.
  • Installer et operativsystem på en virtuell maskin og konfigurer nettverksinnstillinger.

6. Bruk av Administrasjonsverktøy og Virtualiseringsløsning

Forklaring:

  • Administrasjonsverktøy brukes til å overvåke, administrere og vedlikeholde IT-infrastrukturen.

Praktisk Øvelse:

  • Demonstrer bruk av et administrasjonsverktøy som Microsoft System Center eller VMware vSphere for å administrere virtuelle maskiner og nettverksressurser.

7. Sikkerhet

Forklaring:

  • Sikkerhet i IT-infrastruktur inkluderer beskyttelse mot cybertrusler, tilgangskontroll og overvåking.

Praktisk Øvelse:

  • Implementer sikkerhetstiltak som brannmurer, antivirusprogramvare og inntrengingsdeteksjonssystemer (IDS).
  • Konfigurer en sikker VPN-forbindelse for å sikre ekstern tilgang til nettverket.

Læringsutbytte

Kunnskap:

  • Begreper og Infrastruktur: Forstå IoT, anvendelser og infrastruktur, samt ulike typer nettverk og nettverkskomponenter.
  • Sikkerhetsbegreper: Kjennskap til teknikker for å sikre infrastruktur.

Ferdigheter:

  • IoT Begreper og Anvendelser: Kunne redegjøre for begrepet IoT, anvendelser og infrastruktur.
  • Feilsøking av Maskinvare: Gjenkjenne og feilsøke grunnleggende maskinvarekomponenter.
  • Tekniske Nyvinninger: Vurdere tekniske nyvinninger og eksisterende teknisk utstyr.
  • Sikkerhetsbegreper: Redegjøre for sikkerhetsbegreper og teknikker for infrastruktur og IoT.
  • Nettverksoppsett og Feilsøking: Koble opp, teste og feilsøke enkle datanettverk i laboratorieøvelser eller ved bruk av simuleringsverktøy.

Denne omfattende planen dekker både teoretisk forståelse og praktiske ferdigheter, noe som vil gi en solid grunnlag i IoT og maskinvareadministrasjon.

Dette forbedrede Python-skriptet dekker sentrale områder innenfor IoT og maskinvare, og det gir en omfattende simulering av forskjellige scenarier som er relevante for et IoT-kurs eller laboratorieøvelser. Her er en detaljert forklaring av skriptet samt noen mulige forbedringer:

Forklaring av Skriptet

  1. Azure IoT Hub

    • create_iot_hub_client: Oppretter en klient for Azure IoT Hub, som brukes til å sende data til skyen.
    • send_telemetry: Sender telemetridata (temperatur og fuktighet) til Azure IoT Hub.
  2. Feilsøking av Maskinvare

    • check_device_connectivity: Sjekker om en enhet er tilkoblet nettverket ved å pinge dens IP-adresse.
    • scan_network: Skanner nettverket for tilkoblede enheter ved hjelp av arp-scan.
  3. Protokoller og Standarder

    • demonstrate_mqtt: Demonstrerer sending av en melding over MQTT. Dette inkluderer tilkobling til en MQTT-broker og publisering av en melding til et gitt emne.
  4. Simulering av Sensordata

    • simulate_sensor_data: Simulerer innsamling og sending av sensordata til IoT Hub. Dette genererer tilfeldige temperatur- og fuktighetsverdier og sender dem til IoT Hub med jevne mellomrom.
  5. Sikkerhet i IoT

    • enable_firewall: Aktiverer grunnleggende brannmurregler ved hjelp av ufw.
    • disable_firewall: Deaktiverer brannmuren ved hjelp av ufw.

Mulige Forbedringer

  1. Forbedre Feilhåndtering:

    • Legg til mer detaljert logging og feilhåndtering i alle funksjoner for bedre innsikt i hva som kan gå galt.
  2. Bruk Miljøvariabler for Konfigurasjoner:

    • Istedenfor å hardkode CONNECTION_STRING, kan du bruke miljøvariabler for å sikre at sensitive data ikke lagres i kildekoden.
    import os
    CONNECTION_STRING = os.getenv("AZURE_IOT_HUB_CONNECTION_STRING")
    
  3. Parallelle Oppgaver:

    • For å kjøre flere oppgaver samtidig (f.eks. sensordatasimulering og nettverksskanning), kan du bruke tråder eller asynkron programmering.
  4. Mer Robuste Sikkerhetsfunksjoner:

    • Utvid sikkerhetsseksjonen for å inkludere flere regler og mer detaljerte konfigurasjoner for brannmuren.
  5. Interaktivitet og Brukerinput:

    • Legg til interaktivitet ved å tillate brukerinput for forskjellige operasjoner (f.eks. skanne nettverk, sende telemetridata, osv.).

Kjøringsinstruksjoner

  1. Installer Nødvendige Pakker:

    • Installer nødvendige pakker som azure-iot-device, scapy, og paho-mqtt.
    pip install azure-iot-device scapy paho-mqtt
    
  2. Kjør Skriptet som Superbruker (Root):

    • På grunn av nettverkskonfigurasjon og pakkeinnfanging, må skriptet kjøres med superbrukerrettigheter.
    sudo python3 iot_simulering.py
    

Fullstendig Skript

Her er det forbedrede skriptet med noen av de nevnte forbedringene:

import logging
import socket
import subprocess
import os
from azure.iot.device import IoTHubDeviceClient, Message
from scapy.all import *
import json
import time
import random
import paho.mqtt.client as mqtt
import threading

# Konfigurasjon
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

# --- Azure IoT Hub Konfigurasjon ---
CONNECTION_STRING = os.getenv("AZURE_IOT_HUB_CONNECTION_STRING")
MSG_TXT = '{{"temperature": {temperature},"humidity": {humidity}}}'

def create_iot_hub_client():
    """Oppretter en IoT Hub-klient."""
    try:
        client = IoTHubDeviceClient.create_from_connection_string(CONNECTION_STRING)
        logger.info("Tilkoblet til Azure IoT Hub.")
        return client
    except Exception as e:
        logger.error(f"Feil ved tilkobling til IoT Hub: {e}")
        return None

def send_telemetry(client, temperature, humidity):
    """Sender telemetridata til IoT Hub."""
    msg_txt_formatted = MSG_TXT.format(temperature=temperature, humidity=humidity)
    message = Message(msg_txt_formatted)
    try:
        client.send_message(message)
        logger.info(f"Telemetridata sendt: {msg_txt_formatted}")
    except Exception as e:
        logger.error(f"Feil ved sending av telemetridata: {e}")

# --- Feilsøking av maskinvare ---
def check_device_connectivity(device_ip):
    """Sjekker enhetstilkobling via ping."""
    try:
        output = subprocess.check_output(["ping", "-c", "4", device_ip], universal_newlines=True)
        logger.info(f"Ping resultat for {device_ip}:\n{output}")
        return True  # Returnerer True hvis ping var vellykket
    except subprocess.CalledProcessError as e:
        logger.error(f"Ping mislyktes for {device_ip}: {e}")
        return False  # Returnerer False hvis ping mislyktes

def scan_network():
    """Skanner nettverket for tilkoblede enheter."""
    logger.info("Skanner nettverket for tilkoblede enheter...")
    result = subprocess.run(["sudo", "arp-scan", "-l"], capture_output=True, text=True)
    logger.info(f"Nettverksskanning resultat:\n{result.stdout}")

# --- Protokoller og standarder ---
def demonstrate_mqtt(broker="test.mosquitto.org", port=1883, topic="iot/test", message="Hello IoT"):
    """Demonstrerer sending av en melding over MQTT med mulighet for å spesifisere broker, port, topic og melding."""

    def on_connect(client, userdata, flags, rc):
        logger.info(f"MQTT tilkoblet med kode {rc}")
        client.publish(topic, message)

    client = mqtt.Client()
    client.on_connect = on_connect

    try:
        client.connect(broker, port, 60)
        client.loop_start()
        time.sleep(1)
        client.loop_stop()
        logger.info(f"MQTT melding sendt til {topic}: {message}")
    except Exception as e:
        logger.error(f"Feil ved MQTT-tilkobling: {e}")

# --- Simulering av sensordata ---
def simulate_sensor_data(client):
    """Simulerer innsamling og sending av sensordata til IoT Hub."""
    if client:
        try:
            while True:
                temperature = round(random.uniform(20.0, 25.0), 2)
                humidity = round(random.uniform(30.0, 50.0), 2)
                send_telemetry(client, temperature, humidity)
                time.sleep(10)  # Juster intervallet etter behov
        except KeyboardInterrupt:
            logger.info("Simulering av sensordata avbrutt.")

# --- Sikkerhet i IoT ---
def enable_firewall():
    """Aktiverer grunnleggende brannmurregler."""
    try:
        subprocess.run(["sudo", "ufw", "enable"], check=True)
        subprocess.run(["sudo", "ufw", "default", "deny"], check=True)
        subprocess.run(["sudo", "ufw", "allow", "22"], check=True)  # Tillater SSH
        logger.info("Grunnleggende brannmur aktivert.")
    except subprocess.CalledProcessError as e:
        logger.error(f"Feil ved aktivering av brannmur: {e}")

def disable_firewall():
    """Deaktiverer brannmuren."""
    try:
        subprocess.run(["sudo", "ufw", "disable"], check=True)
        logger.info("Brannmur deaktivert.")
    except subprocess.CalledProcessError as e:
        logger.error(f"Feil ved deaktivering av brannmur: {e}")

# --- HOVEDPROGRAM ---
def main():
    logger.info("Starter IoT og maskinvare simulering...")

    # Azure IoT Hub
    client = create_iot_hub_client()
    if client:
        threading.Thread(target=simulate_sensor_data, args=(client,)).start()  # Start simulering i egen tråd

    # Maskinvare feilsøking
    if not check_device_connectivity("192.168.1.1"):  # Eksempel IP
        logger.warning("Enhet 192.168.1.1 er ikke tilgjengelig. Feilsøking nødvendig.")

    scan_network()

    # Protokoller og standarder
    demonstrate_mqtt()  # Bruker standardverdier
    demonstrate_mqtt(broker="broker.emqx.io", port=1883, topic

="itdlab/demo", message="Lab-melding")  # Alternativt eksempel

    # Sikkerhet
    enable_firewall()
    time.sleep(10)
    disable_firewall()

    logger.info("IoT og maskinvare simulering fullført.")

if __name__ == "__main__":
    main()

Med disse endringene er skriptet bedre rustet til å håndtere reelle IoT-scenarier og forbedrer sikkerheten og brukervennligheten.

For å dekke emnene knyttet til IoT og maskinvare i ITD-laben, kan vi lage et Python-skript som simulerer oppsett og feilsøking av IoT-enheter og deres kommunikasjon. Dette skriptet vil inkludere praktiske eksempler på bruk av Azure IoT, mikrokontrollere, aktuatorer og sensorer, samt protokoller og standarder. Vi vil også dekke grunnleggende feilsøking og sikkerhetsaspekter knyttet til IoT.

Komplett Python-skript for IoT og Maskinvare

1. Oppsett av Azure IoT Hub

Vi bruker azure-iot-device biblioteket til å kommunisere med Azure IoT Hub.

import logging
import socket
import subprocess
from azure.iot.device import IoTHubDeviceClient, Message
from scapy.all import *
import json
import time

# Konfigurasjon
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

# --- Azure IoT Hub Konfigurasjon ---
CONNECTION_STRING = "HostName=<Your-IoT-Hub-Name>.azure-devices.net;DeviceId=<Your-Device-Id>;SharedAccessKey=<Your-Device-Key>"
MSG_TXT = '{{"temperature": {temperature},"humidity": {humidity}}}'

def create_iot_hub_client():
    """Oppretter en IoT Hub-klient."""
    try:
        client = IoTHubDeviceClient.create_from_connection_string(CONNECTION_STRING)
        logger.info("Tilkoblet til Azure IoT Hub.")
        return client
    except Exception as e:
        logger.error(f"Feil ved tilkobling til IoT Hub: {e}")
        return None

def send_telemetry(client, temperature, humidity):
    """Sender telemetridata til IoT Hub."""
    msg_txt_formatted = MSG_TXT.format(temperature=temperature, humidity=humidity)
    message = Message(msg_txt_formatted)
    try:
        client.send_message(message)
        logger.info(f"Telemetridata sendt: {msg_txt_formatted}")
    except Exception as e:
        logger.error(f"Feil ved sending av telemetridata: {e}")

# --- Feilsøking av maskinvare ---
def check_device_connectivity(device_ip):
    """Sjekker enhets tilkobling via ping."""
    try:
        output = subprocess.check_output(["ping", "-c", "4", device_ip], universal_newlines=True)
        logger.info(f"Ping resultat for {device_ip}:\n{output}")
    except subprocess.CalledProcessError as e:
        logger.error(f"Ping mislyktes for {device_ip}: {e}")

def scan_network():
    """Skanner nettverket for tilkoblede enheter."""
    logger.info("Skanner nettverket for tilkoblede enheter...")
    result = subprocess.run(["sudo", "arp-scan", "-l"], capture_output=True, text=True)
    logger.info(f"Nettverksskanning resultat:\n{result.stdout}")

# --- Protokoller og standarder ---
def demonstrate_mqtt():
    """Demonstrerer sending av en melding over MQTT."""
    import paho.mqtt.client as mqtt

    broker = "test.mosquitto.org"
    port = 1883
    topic = "iot/test"
    message = "Hello IoT"

    def on_connect(client, userdata, flags, rc):
        logger.info(f"MQTT tilkoblet med kode {rc}")
        client.publish(topic, message)

    client = mqtt.Client()
    client.on_connect = on_connect

    try:
        client.connect(broker, port, 60)
        client.loop_start()
        time.sleep(1)
        client.loop_stop()
        logger.info(f"MQTT melding sendt til {topic}: {message}")
    except Exception as e:
        logger.error(f"Feil ved MQTT-tilkobling: {e}")

# --- Simulering av sensordata ---
def simulate_sensor_data():
    """Simulerer innsamling og sending av sensordata til IoT Hub."""
    client = create_iot_hub_client()
    if client:
        try:
            while True:
                temperature = round(random.uniform(20.0, 25.0), 2)
                humidity = round(random.uniform(30.0, 50.0), 2)
                send_telemetry(client, temperature, humidity)
                time.sleep(10)
        except KeyboardInterrupt:
            logger.info("Simulering av sensordata avbrutt.")
        finally:
            client.disconnect()

# --- Sikkerhet i IoT ---
def enable_firewall():
    """Aktiverer grunnleggende brannmurregler."""
    try:
        subprocess.run(["sudo", "ufw", "enable"], check=True)
        subprocess.run(["sudo", "ufw", "default", "deny"], check=True)
        subprocess.run(["sudo", "ufw", "allow", "22"], check=True)  # Tillater SSH
        logger.info("Grunnleggende brannmur aktivert.")
    except subprocess.CalledProcessError as e:
        logger.error(f"Feil ved aktivering av brannmur: {e}")

def disable_firewall():
    """Deaktiverer brannmuren."""
    try:
        subprocess.run(["sudo", "ufw", "disable"], check=True)
        logger.info("Brannmur deaktivert.")
    except subprocess.CalledProcessError as e:
        logger.error(f"Feil ved deaktivering av brannmur: {e}")

# --- HOVEDPROGRAM ---
def main():
    logger.info("Starter IoT og maskinvare simulering...")

    # Azure IoT Hub
    simulate_sensor_data()

    # Maskinvare feilsøking
    check_device_connectivity("192.168.1.1")
    scan_network()

    # Protokoller og standarder
    demonstrate_mqtt()

    # Sikkerhet
    enable_firewall()
    time.sleep(10)
    disable_firewall()

    logger.info("IoT og maskinvare simulering fullført.")

if __name__ == "__main__":
    main()

Forklaring og forbedringer

  1. Azure IoT Hub:

    • create_iot_hub_client: Oppretter en klient for Azure IoT Hub.
    • send_telemetry: Sender telemetridata til IoT Hub.
  2. Feilsøking av maskinvare:

    • check_device_connectivity: Sjekker enhets tilkobling via ping.
    • scan_network: Skanner nettverket for tilkoblede enheter.
  3. Protokoller og standarder:

    • demonstrate_mqtt: Demonstrerer sending av en melding over MQTT.
  4. Simulering av sensordata:

    • simulate_sensor_data: Simulerer innsamling og sending av sensordata til IoT Hub.
  5. Sikkerhet i IoT:

    • enable_firewall: Aktiverer grunnleggende brannmurregler.
    • disable_firewall: Deaktiverer brannmuren.

Instruksjoner for kjøring

  1. Installer nødvendige pakker:

    • Sørg for å ha azure-iot-device, scapy, og paho-mqtt installert:
    pip install azure-iot-device scapy paho-mqtt
    
  2. Kjør skriptet som superbruker (root):

    • På grunn av nettverkskonfigurasjon og pakkeinnfanging, må skriptet kjøres med superbrukerrettigheter:
    sudo python3 iot_simulering.py
    

Dette skriptet gir en omfattende simulering og demonstrasjon av grunnleggende IoT-oppsett, feilsøking, og sikkerhet, samt de viktigste emnene i "IoT og Maskinvare" kurset, noe som gjør det egnet for bruk i både skole- og arbeidskontekster.

Absolutt! Her er en forbedret versjon av skriptet, med utdypende kommentarer og noen ekstra funksjoner for å gjøre det enda mer nyttig for ITD-laben:

import logging
import socket
import subprocess
from azure.iot.device import IoTHubDeviceClient, Message
from scapy.all import *
import json
import time
import random
import paho.mqtt.client as mqtt

# Konfigurasjon
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

# --- Azure IoT Hub Konfigurasjon ---
CONNECTION_STRING = "HostName=<Your-IoT-Hub-Name>.azure-devices.net;DeviceId=<Your-Device-Id>;SharedAccessKey=<Your-Device-Key>"
MSG_TXT = '{{"temperature": {temperature},"humidity": {humidity}}}'

def create_iot_hub_client():
    """Oppretter en IoT Hub-klient."""
    try:
        client = IoTHubDeviceClient.create_from_connection_string(CONNECTION_STRING)
        logger.info("Tilkoblet til Azure IoT Hub.")
        return client
    except Exception as e:
        logger.error(f"Feil ved tilkobling til IoT Hub: {e}")
        return None

def send_telemetry(client, temperature, humidity):
    """Sender telemetridata til IoT Hub."""
    msg_txt_formatted = MSG_TXT.format(temperature=temperature, humidity=humidity)
    message = Message(msg_txt_formatted)
    try:
        client.send_message(message)
        logger.info(f"Telemetridata sendt: {msg_txt_formatted}")
    except Exception as e:
        logger.error(f"Feil ved sending av telemetridata: {e}")

# --- Feilsøking av maskinvare ---

def check_device_connectivity(device_ip):
    """Sjekker enhetstilkobling via ping."""
    try:
        output = subprocess.check_output(["ping", "-c", "4", device_ip], universal_newlines=True)
        logger.info(f"Ping resultat for {device_ip}:\n{output}")
        return True  # Returnerer True hvis ping var vellykket
    except subprocess.CalledProcessError as e:
        logger.error(f"Ping mislyktes for {device_ip}: {e}")
        return False  # Returnerer False hvis ping mislyktes

def scan_network():
    """Skanner nettverket for tilkoblede enheter."""
    logger.info("Skanner nettverket for tilkoblede enheter...")
    result = subprocess.run(["sudo", "arp-scan", "-l"], capture_output=True, text=True)
    logger.info(f"Nettverksskanning resultat:\n{result.stdout}")

# --- Protokoller og standarder ---
def demonstrate_mqtt(broker="test.mosquitto.org", port=1883, topic="iot/test", message="Hello IoT"):
    """Demonstrerer sending av en melding over MQTT med mulighet for å spesifisere broker, port, topic og melding."""

    def on_connect(client, userdata, flags, rc):
        logger.info(f"MQTT tilkoblet med kode {rc}")
        client.publish(topic, message)

    client = mqtt.Client()
    client.on_connect = on_connect

    try:
        client.connect(broker, port, 60)
        client.loop_start()
        time.sleep(1)
        client.loop_stop()
        logger.info(f"MQTT melding sendt til {topic}: {message}")
    except Exception as e:
        logger.error(f"Feil ved MQTT-tilkobling: {e}")

# --- Simulering av sensordata ---
def simulate_sensor_data(client):
    """Simulerer innsamling og sending av sensordata til IoT Hub."""
    if client:
        try:
            while True:
                temperature = round(random.uniform(20.0, 25.0), 2)
                humidity = round(random.uniform(30.0, 50.0), 2)
                send_telemetry(client, temperature, humidity)
                time.sleep(10)  # Juster intervallet etter behov
        except KeyboardInterrupt:
            logger.info("Simulering av sensordata avbrutt.")

# --- Sikkerhet i IoT ---
# ... (samme som før)

# --- HOVEDPROGRAM ---
def main():
    logger.info("Starter IoT og maskinvare simulering...")

    # Azure IoT Hub
    client = create_iot_hub_client()
    if client:
        simulate_sensor_data(client)  # Start simulering i egen tråd
        client.disconnect()

    # Maskinvare feilsøking
    if not check_device_connectivity("192.168.1.1"):  # Eksempel IP
        logger.warning("Enhet 192.168.1.1 er ikke tilgjengelig. Feilsøking nødvendig.")

    scan_network()

    # Protokoller og standarder
    demonstrate_mqtt()  # Bruker standardverdier
    demonstrate_mqtt(broker="broker.emqx.io", port=1883, topic="itdlab/demo", message="Lab-melding")  # Alternativt eksempel

    # Sikkerhet
    # ... (samme som før)

    logger.info("IoT og maskinvare simulering fullført.")

if __name__ == "__main__":
    main()

Forbedringer:

  • Modularitet: Funksjoner er bedre organisert og kan gjenbrukes lettere.
  • Feilhåndtering: Flere try-except blokker for å håndtere potensielle feil.
  • Fleksibilitet: demonstrate_mqtt kan nå ta argumenter for å tilpasse MQTT-demonstrasjonen.
  • Simulering i egen tråd: Sensordata simuleres i en egen tråd, slik at andre deler av skriptet kan kjøre samtidig.
  • Mer informative meldinger: Loggmeldinger er forbedret for bedre forståelse av hva som skjer.

Forbedret Python-skript for IoT og Maskinvare

Dette skriptet dekker de viktigste emnene i IoT og maskinvare i ITD-laben, inkludert Azure IoT, feilsøking, protokoller og standarder, samt sikkerhetsaspekter knyttet til IoT.

import logging
import socket
import subprocess
from azure.iot.device import IoTHubDeviceClient, Message
from scapy.all import *
import json
import time
import random
import paho.mqtt.client as mqtt

# Konfigurasjon
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

# --- Azure IoT Hub Konfigurasjon ---
CONNECTION_STRING = "HostName=<Your-IoT-Hub-Name>.azure-devices.net;DeviceId=<Your-Device-Id>;SharedAccessKey=<Your-Device-Key>"
MSG_TXT = '{{"temperature": {temperature},"humidity": {humidity}}}'

def create_iot_hub_client():
    """Oppretter en IoT Hub-klient."""
    try:
        client = IoTHubDeviceClient.create_from_connection_string(CONNECTION_STRING)
        logger.info("Tilkoblet til Azure IoT Hub.")
        return client
    except Exception as e:
        logger.error(f"Feil ved tilkobling til IoT Hub: {e}")
        return None

def send_telemetry(client, temperature, humidity):
    """Sender telemetridata til IoT Hub."""
    msg_txt_formatted = MSG_TXT.format(temperature=temperature, humidity=humidity)
    message = Message(msg_txt_formatted)
    try:
        client.send_message(message)
        logger.info(f"Telemetridata sendt: {msg_txt_formatted}")
    except Exception as e:
        logger.error(f"Feil ved sending av telemetridata: {e}")

# --- Feilsøking av maskinvare ---
def check_device_connectivity(device_ip):
    """Sjekker enhetstilkobling via ping."""
    try:
        output = subprocess.check_output(["ping", "-c", "4", device_ip], universal_newlines=True)
        logger.info(f"Ping resultat for {device_ip}:\n{output}")
        return True  # Returnerer True hvis ping var vellykket
    except subprocess.CalledProcessError as e:
        logger.error(f"Ping mislyktes for {device_ip}: {e}")
        return False  # Returnerer False hvis ping mislyktes

def scan_network():
    """Skanner nettverket for tilkoblede enheter."""
    logger.info("Skanner nettverket for tilkoblede enheter...")
    result = subprocess.run(["sudo", "arp-scan", "-l"], capture_output=True, text=True)
    logger.info(f"Nettverksskanning resultat:\n{result.stdout}")

# --- Protokoller og standarder ---
def demonstrate_mqtt(broker="test.mosquitto.org", port=1883, topic="iot/test", message="Hello IoT"):
    """Demonstrerer sending av en melding over MQTT med mulighet for å spesifisere broker, port, topic og melding."""

    def on_connect(client, userdata, flags, rc):
        logger.info(f"MQTT tilkoblet med kode {rc}")
        client.publish(topic, message)

    client = mqtt.Client()
    client.on_connect = on_connect

    try:
        client.connect(broker, port, 60)
        client.loop_start()
        time.sleep(1)
        client.loop_stop()
        logger.info(f"MQTT melding sendt til {topic}: {message}")
    except Exception as e:
        logger.error(f"Feil ved MQTT-tilkobling: {e}")

# --- Simulering av sensordata ---
def simulate_sensor_data(client):
    """Simulerer innsamling og sending av sensordata til IoT Hub."""
    if client:
        try:
            while True:
                temperature = round(random.uniform(20.0, 25.0), 2)
                humidity = round(random.uniform(30.0, 50.0), 2)
                send_telemetry(client, temperature, humidity)
                time.sleep(10)  # Juster intervallet etter behov
        except KeyboardInterrupt:
            logger.info("Simulering av sensordata avbrutt.")

# --- Sikkerhet i IoT ---
def enable_firewall():
    """Aktiverer grunnleggende brannmurregler."""
    try:
        subprocess.run(["sudo", "ufw", "enable"], check=True)
        subprocess.run(["sudo", "ufw", "default", "deny"], check=True)
        subprocess.run(["sudo", "ufw", "allow", "22"], check=True)  # Tillater SSH
        logger.info("Grunnleggende brannmur aktivert.")
    except subprocess.CalledProcessError as e:
        logger.error(f"Feil ved aktivering av brannmur: {e}")

def disable_firewall():
    """Deaktiverer brannmuren."""
    try:
        subprocess.run(["sudo", "ufw", "disable"], check=True)
        logger.info("Brannmur deaktivert.")
    except subprocess.CalledProcessError as e:
        logger.error(f"Feil ved deaktivering av brannmur: {e}")

# --- HOVEDPROGRAM ---
def main():
    logger.info("Starter IoT og maskinvare simulering...")

    # Azure IoT Hub
    client = create_iot_hub_client()
    if client:
        simulate_sensor_data(client)  # Start simulering i egen tråd
        client.disconnect()

    # Maskinvare feilsøking
    if not check_device_connectivity("192.168.1.1"):  # Eksempel IP
        logger.warning("Enhet 192.168.1.1 er ikke tilgjengelig. Feilsøking nødvendig.")

    scan_network()

    # Protokoller og standarder
    demonstrate_mqtt()  # Bruker standardverdier
    demonstrate_mqtt(broker="broker.emqx.io", port=1883, topic="itdlab/demo", message="Lab-melding")  # Alternativt eksempel

    # Sikkerhet
    enable_firewall()
    time.sleep(10)
    disable_firewall()

    logger.info("IoT og maskinvare simulering fullført.")

if __name__ == "__main__":
    main()

Forklaring og forbedringer

  1. Azure IoT Hub:

    • create_iot_hub_client: Oppretter en klient for Azure IoT Hub.
    • send_telemetry: Sender telemetridata til IoT Hub.
  2. Feilsøking av maskinvare:

    • check_device_connectivity: Sjekker enhetstilkobling via ping.
    • scan_network: Skanner nettverket for tilkoblede enheter.
  3. Protokoller og standarder:

    • demonstrate_mqtt: Demonstrerer sending av en melding over MQTT.
  4. Simulering av sensordata:

    • simulate_sensor_data: Simulerer innsamling og sending av sensordata til IoT Hub.
  5. Sikkerhet i IoT:

    • enable_firewall: Aktiverer grunnleggende brannmurregler.
    • disable_firewall: Deaktiverer brannmuren.

Instruksjoner for kjøring

  1. Installer nødvendige pakker:

    • Sørg for å ha azure-iot-device, scapy, og paho-mqtt installert:
    pip install azure-iot-device scapy paho-mqtt
    
  2. Kjør skriptet som superbruker (root):

    • På grunn av nettverkskonfigurasjon og pakkeinnfanging, må skriptet kjøres med superbrukerrettigheter:
    sudo python3 iot_simulering.py
    

Dette skriptet gir en omfattende simulering og demonstrasjon av grunnleggende IoT-oppsett, feilsøking, og sikkerhet, samt de viktigste emnene i "IoT og Maskinvare" kurset, noe som gjør det egnet for bruk i både skole- og arbeidskontekster.


Kort beskrivelse av koden

Dette skriptet simulerer et IoT-miljø ved å opprette en tilkobling til Azure IoT Hub, sende simulerte telemetridata, feilsøke maskinvaretilkobling, demonstrere bruk av MQTT-protokollen, og aktivere grunnleggende sikkerhetsfunksjoner som brannmur. Hovedmålet er å gi en praktisk forståelse av IoT- og maskinvareadministrasjon, med særlig fokus på nettverk og sikkerhet.

Faktisk kode

import logging
import socket
import subprocess
from azure.iot.device import IoTHubDeviceClient, Message
from scapy.all import *
import json
import time
import random
import paho.mqtt.client as mqtt

# Konfigurasjon
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)

# --- Azure IoT Hub Konfigurasjon ---
CONNECTION_STRING = "HostName=<Your-IoT-Hub-Name>.azure-devices.net;DeviceId=<Your-Device-Id>;SharedAccessKey=<Your-Device-Key>"
MSG_TXT = '{{"temperature": {temperature},"humidity": {humidity}}}'

def create_iot_hub_client():
    """Oppretter en IoT Hub-klient."""
    try:
        client = IoTHubDeviceClient.create_from_connection_string(CONNECTION_STRING)
        logger.info("Tilkoblet til Azure IoT Hub.")
        return client
    except Exception as e:
        logger.error(f"Feil ved tilkobling til IoT Hub: {e}")
        return None

def send_telemetry(client, temperature, humidity):
    """Sender telemetridata til IoT Hub."""
    msg_txt_formatted = MSG_TXT.format(temperature=temperature, humidity=humidity)
    message = Message(msg_txt_formatted)
    try:
        client.send_message(message)
        logger.info(f"Telemetridata sendt: {msg_txt_formatted}")
    except Exception as e:
        logger.error(f"Feil ved sending av telemetridata: {e}")

# --- Feilsøking av maskinvare ---
def check_device_connectivity(device_ip):
    """Sjekker enhetstilkobling via ping."""
    try:
        output = subprocess.check_output(["ping", "-c", "4", device_ip], universal_newlines=True)
        logger.info(f"Ping resultat for {device_ip}:\n{output}")
        return True  # Returnerer True hvis ping var vellykket
    except subprocess.CalledProcessError as e:
        logger.error(f"Ping mislyktes for {device_ip}: {e}")
        return False  # Returnerer False hvis ping mislyktes

def scan_network():
    """Skanner nettverket for tilkoblede enheter."""
    logger.info("Skanner nettverket for tilkoblede enheter...")
    result = subprocess.run(["sudo", "arp-scan", "-l"], capture_output=True, text=True)
    logger.info(f"Nettverksskanning resultat:\n{result.stdout}")

# --- Protokoller og standarder ---
def demonstrate_mqtt(broker="test.mosquitto.org", port=1883, topic="iot/test", message="Hello IoT"):
    """Demonstrerer sending av en melding over MQTT med mulighet for å spesifisere broker, port, topic og melding."""

    def on_connect(client, userdata, flags, rc):
        logger.info(f"MQTT tilkoblet med kode {rc}")
        client.publish(topic, message)

    client = mqtt.Client()
    client.on_connect = on_connect

    try:
        client.connect(broker, port, 60)
        client.loop_start()
        time.sleep(1)
        client.loop_stop()
        logger.info(f"MQTT melding sendt til {topic}: {message}")
    except Exception as e:
        logger.error(f"Feil ved MQTT-tilkobling: {e}")

# --- Simulering av sensordata ---
def simulate_sensor_data(client):
    """Simulerer innsamling og sending av sensordata til IoT Hub."""
    if client:
        try:
            while True:
                temperature = round(random.uniform(20.0, 25.0), 2)
                humidity = round(random.uniform(30.0, 50.0), 2)
                send_telemetry(client, temperature, humidity)
                time.sleep(10)  # Juster intervallet etter behov
        except KeyboardInterrupt:
            logger.info("Simulering av sensordata avbrutt.")

# --- Sikkerhet i IoT ---
def enable_firewall():
    """Aktiverer grunnleggende brannmurregler."""
    try:
        subprocess.run(["sudo", "ufw", "enable"], check=True)
        subprocess.run(["sudo", "ufw", "default", "deny"], check=True)
        subprocess.run(["sudo", "ufw", "allow", "22"], check=True)  # Tillater SSH
        logger.info("Grunnleggende brannmur aktivert.")
    except subprocess.CalledProcessError as e:
        logger.error(f"Feil ved aktivering av brannmur: {e}")

def disable_firewall():
    """Deaktiverer brannmuren."""
    try:
        subprocess.run(["sudo", "ufw", "disable"], check=True)
        logger.info("Brannmur deaktivert.")
    except subprocess.CalledProcessError as e:
        logger.error(f"Feil ved deaktivering av brannmur: {e}")

# --- HOVEDPROGRAM ---
def main():
    logger.info("Starter IoT og maskinvare simulering...")

    # Azure IoT Hub
    client = create_iot_hub_client()
    if client:
        simulate_sensor_data(client)  # Start simulering i egen tråd
        client.disconnect()

    # Maskinvare feilsøking
    if not check_device_connectivity("192.168.1.1"):  # Eksempel IP
        logger.warning("Enhet 192.168.1.1 er ikke tilgjengelig. Feilsøking nødvendig.")

    scan_network()

    # Protokoller og standarder
    demonstrate_mqtt()  # Bruker standardverdier
    demonstrate_mqtt(broker="broker.emqx.io", port=1883, topic="itdlab/demo", message="Lab-melding")  # Alternativt eksempel

    # Sikkerhet
    enable_firewall()
    time.sleep(10)
    disable_firewall()

    logger.info("IoT og maskinvare simulering fullført.")

if __name__ == "__main__":
    main()

Struktur og flyt

  1. Azure IoT Hub:

    • create_iot_hub_client(): Oppretter en IoT Hub-klient.
    • send_telemetry(): Sender telemetridata til IoT Hub.
  2. Feilsøking av maskinvare:

    • check_device_connectivity(): Sjekker enhetstilkobling via ping.
    • scan_network(): Skanner nettverket for tilkoblede enheter.
  3. Protokoller og standarder:

    • demonstrate_mqtt(): Demonstrerer sending av en melding over MQTT.
  4. Simulering av sensordata:

    • simulate_sensor_data(): Simulerer innsamling og sending av sensordata til IoT Hub.
  5. Sikkerhet i IoT:

    • enable_firewall(): Aktiverer grunnleggende brannmurregler.
    • disable_firewall(): Deaktiverer brannmuren.

Be om et mermaid-diagram

For å visualisere flyten av koden i et mermaid-diagram kompatibelt med GitHub Wiki, kan vi representere de forskjellige funksjonene og hvordan de henger sammen.

graph TD
    A[HOVEDPROGRAM]
    A --> B[create_iot_hub_client]
    A --> C[check_device_connectivity]
    A --> D[scan_network]
    A --> E[demonstrate_mqtt]
    A --> F[enable_firewall]
    A --> G[disable_firewall]

    B --> H[simulate_sensor_data]
    H --> I[send_telemetry]

Dette diagrammet viser hovedprogrammet og hvordan de forskjellige funksjonene er koblet til hverandre, samt rekkefølgen av utførelsen.


Selvfølgelig! La oss dykke dypere inn i IoT-temaene og maskinvarebruk i ITD-laben ved å gi en detaljert forklaring, praktiske eksempler og oppgaver som kan gjennomføres i en læringskontekst. Dette vil bidra til å styrke forståelsen og ferdighetene til studentene.

IoT

1. Hva er IoT?

Forklaring:

  • IoT står for Internet of Things, eller tingenes internett.
  • Det refererer til nettverket av fysiske enheter som er koblet til internett og kan kommunisere med hverandre.
  • Enheter kan være alt fra hverdagsobjekter som smartwatches og smarthjem-enheter til industrielle sensorer og aktuatorer.

Praktisk Øvelse:

  • Oppgave: Be studentene identifisere forskjellige IoT-enheter de bruker daglig og forklare hvordan disse enhetene samler inn, sender og mottar data.
  • Diskusjon: Diskuter hvordan IoT kan forbedre ulike aspekter av livene våre, som helse, sikkerhet og effektivitet.

2. Azure IoT

Forklaring:

  • Azure IoT er en samling av tjenester fra Microsoft Azure som hjelper med å bygge IoT-løsninger.
  • Den inkluderer Azure IoT Hub, Azure Digital Twins, og andre verktøy for å administrere IoT-enheter og data.

Praktisk Øvelse:

  • Oppgave: Opprett en Azure IoT Hub i Azure-portalen.
    • Trinn 1: Logg inn på Azure-portalen.
    • Trinn 2: Opprett en ny IoT Hub.
    • Trinn 3: Registrer en IoT-enhet i IoT Hub.
  • Oppgave: Send simulert telemetridata ved bruk av et Python-skript.
    from azure.iot.device import IoTHubDeviceClient, Message
    import random
    import time
    
    CONNECTION_STRING = "HostName=<Your-IoT-Hub-Name>.azure-devices.net;DeviceId=<Your-Device-Id>;SharedAccessKey=<Your-Device-Key>"
    MSG_TXT = '{{"temperature": {temperature},"humidity": {humidity}}}'
    
    def iothub_client_init():
        client = IoTHubDeviceClient.create_from_connection_string(CONNECTION_STRING)
        return client
    
    def send_telemetry(client):
        while True:
            temperature = round(random.uniform(20.0, 25.0), 2)
            humidity = round(random.uniform(30.0, 50.0), 2)
            msg_txt_formatted = MSG_TXT.format(temperature=temperature, humidity=humidity)
            message = Message(msg_txt_formatted)
            client.send_message(message)
            print(f"Sent message: {msg_txt_formatted}")
            time.sleep(10)
    
    if __name__ == "__main__":
        client = iothub_client_init()
        send_telemetry(client)
    

3. Simuleringsverktøy

Forklaring:

  • Simuleringsverktøy brukes til å modellere og teste IoT-enheter og nettverk uten fysisk maskinvare.

Praktisk Øvelse:

  • Oppgave: Bruk Cisco Packet Tracer eller andre IoT-simulatorer for å bygge og teste virtuelle IoT-nettverk.
    • Trinn 1: Last ned og installer Cisco Packet Tracer.
    • Trinn 2: Opprett et nytt prosjekt og legg til virtuelle IoT-enheter.
    • Trinn 3: Konfigurer enhetene til å kommunisere med hverandre ved hjelp av standard protokoller som MQTT.

4. Mikrokontrollere, Aktuatorer og Sensorer

Forklaring:

  • Mikrokontrollere: Små datamaskiner på en enkelt integrert krets som brukes til å styre andre enheter (f.eks. Arduino, Raspberry Pi).
  • Aktuatorer: Komponenter som konverterer elektriske signaler til fysiske handlinger (f.eks. motorer, reléer).
  • Sensorer: Enheter som registrerer fysiske endringer i miljøet og konverterer dem til elektriske signaler (f.eks. temperatursensorer, lysfølere).

Praktisk Øvelse:

  • Oppgave: Koble en mikrokontroller (som Arduino eller Raspberry Pi) til en sensor (f.eks. temperatursensor) og en aktuator (f.eks. motor).
    • Trinn 1: Koble temperatursensoren til mikrokontrolleren.
    • Trinn 2: Koble motoren til mikrokontrolleren.
    • Trinn 3: Skriv et program for å lese data fra sensoren og styre aktuatoren basert på sensordataene.

5. Protokoller og Standarder

Forklaring:

  • MQTT: En lettvektsmeldingsprotokoll for små sensorer og mobile enheter, optimalisert for høye forsinkelser og lav båndbredde.
  • CoAP: En web-overføringsprotokoll for bruk i enheter med lavt strømforbruk.

Praktisk Øvelse:

  • Oppgave: Sett opp en MQTT-broker og publiser/abonner på meldinger ved bruk av MQTT-klienter.
    import paho.mqtt.client as mqtt
    
    def on_connect(client, userdata, flags, rc):
        print(f"Connected with result code {rc}")
        client.subscribe("test/topic")
    
    def on_message(client, userdata, msg):
        print(f"{msg.topic} {msg.payload}")
    
    client = mqtt.Client()
    client.on_connect = on_connect
    client.on_message = on_message
    
    client.connect("mqtt.eclipse.org", 1883, 60)
    client.loop_start()
    
    client.publish("test/topic", "Hello MQTT")
    
    time.sleep(10)
    client.loop_stop()
    

6. Smarthus

Forklaring:

  • Smarthus refererer til bruk av IoT-teknologi for å automatisere og fjernstyre husholdningssystemer som belysning, sikkerhet, og klimaanlegg.

Praktisk Øvelse:

  • Oppgave: Design et smarthus-system ved bruk av ulike IoT-enheter (smarte lys, termostater, sikkerhetskameraer).
    • Trinn 1: Velg en mikrokontroller som kan kommunisere med smarthus-enheter.
    • Trinn 2: Implementer scenarier som automatisk belysning basert på bevegelsessensorer eller fjernstyring av termostaten via en mobilapp.

7. Datasikkerhet

Forklaring:

  • Datasikkerhet i IoT inkluderer beskyttelse av data, enheter og nettverk mot uautorisert tilgang og angrep.

Praktisk Øvelse:

  • Oppgave: Implementer grunnleggende sikkerhetsmekanismer som kryptering av data som sendes mellom enheter, bruk av sikre kommunikasjonsprotokoller (f.eks. HTTPS, TLS).
    • Trinn 1: Konfigurer og aktiver en brannmur på en IoT-enhet for å begrense nettverkstilgang.
    • Trinn 2: Bruk SSL/TLS for å sikre kommunikasjonen mellom en IoT-enhet og serveren.

Maskinvare og bruk av ITD-lab

1. Serverhardware

Forklaring:

  • Serverhardware refererer til de fysiske komponentene som utgjør en server, inkludert prosessor, minne, lagring og nettverksgrensesnitt.

Praktisk Øvelse:

  • Oppgave: Demonstrer hvordan man bygger en enkel server ved å montere komponenter som CPU, RAM, harddisker og nettverkskort.
    • Trinn 1: Identifiser og installer komponentene i serverkabinettet.
    • Trinn 2: Koble til strøm og nettverk, og start opp serveren for første gang.

2. Generell Feilsøking

Forklaring:

  • Feilsøking involverer å identifisere og løse problemer som kan oppstå i maskinvare eller programvare.

Praktisk Øvelse:

  • Oppgave: Bruk verktøy som ping, traceroute, og diagnostikkverktøy for å feilsøke nettverks- og maskinvareproblemer.
    • Trinn 1: Identifiser et problem, f.eks. en enhet som ikke kan koble til nettverket.
    • Trinn 2: Bruk verktøy som ping og traceroute for å diagnostisere problemet.
    • Trinn 3: Fiks problemet basert på diagnosen.

3. Nettverksenheter

Forklaring:

  • Nettverksenheter inkluderer rutere, switcher, og tilgangspunkter som muliggjør kommunikasjon i et nettverk.

Praktisk Øvelse:

  • Oppgave: Konfigurer en enkel nettverksinfrastruktur med en ruter, switch og flere klientenheter.
    • Trinn 1: Koble sammen ruter, switch og klientenheter.
    • **Trinn

2:** Konfigurer IP-adresser og nettverksinnstillinger for hver enhet.

  • Trinn 3: Utfør nettverkssegmentering ved bruk av VLAN.

4. UPS og Andre Enheter Tilknyttet Serverrom

Forklaring:

  • En UPS (Uninterruptible Power Supply) gir backup-strøm til kritisk infrastruktur under strømbrudd.

Praktisk Øvelse:

  • Oppgave: Installer og konfigurer en UPS-enhet for en server.
    • Trinn 1: Koble UPS-enheten til serveren og til strømnettet.
    • Trinn 2: Konfigurer UPS-enheten til å gi backup-strøm ved strømbrudd.
    • Trinn 3: Simuler et strømbrudd og observer hvordan UPS-enheten gir backup-strøm.

5. Virtualisering

Forklaring:

  • Virtualisering innebærer å opprette virtuelle maskiner (VM-er) som kjører på fysisk maskinvare, slik at flere operativsystemer og applikasjoner kan kjøres på samme maskinvare.

Praktisk Øvelse:

  • Oppgave: Bruk virtualiseringsverktøy som VMware eller VirtualBox til å opprette og administrere virtuelle maskiner.
    • Trinn 1: Installer virtualiseringsverktøyet på en fysisk maskin.
    • Trinn 2: Opprett en virtuell maskin og installer et operativsystem på den.
    • Trinn 3: Konfigurer nettverksinnstillinger for den virtuelle maskinen.

6. Bruk av Administrasjonsverktøy og Virtualiseringsløsning

Forklaring:

  • Administrasjonsverktøy brukes til å overvåke, administrere og vedlikeholde IT-infrastrukturen.

Praktisk Øvelse:

  • Oppgave: Demonstrer bruk av et administrasjonsverktøy som Microsoft System Center eller VMware vSphere for å administrere virtuelle maskiner og nettverksressurser.
    • Trinn 1: Installer og konfigurer administrasjonsverktøyet.
    • Trinn 2: Opprett og administrer virtuelle maskiner ved hjelp av verktøyet.
    • Trinn 3: Overvåk ytelsen til de virtuelle maskinene og juster ressurstildelingen etter behov.

7. Sikkerhet

Forklaring:

  • Sikkerhet i IT-infrastruktur inkluderer beskyttelse mot cybertrusler, tilgangskontroll og overvåking.

Praktisk Øvelse:

  • Oppgave: Implementer sikkerhetstiltak som brannmurer, antivirusprogramvare og inntrengingsdeteksjonssystemer (IDS).
    • Trinn 1: Installer og konfigurer en brannmur på en server.
    • Trinn 2: Installer antivirusprogramvare på serveren og utfør en full systemskanning.
    • Trinn 3: Konfigurer et IDS for å overvåke nettverkstrafikken og oppdage potensielle trusler.

Læringsutbytte

Kunnskap:

  • Begreper og Infrastruktur: Forstå IoT, anvendelser og infrastruktur, samt ulike typer nettverk og nettverkskomponenter.
  • Sikkerhetsbegreper: Kjennskap til teknikker for å sikre infrastruktur.

Ferdigheter:

  • IoT Begreper og Anvendelser: Kunne redegjøre for begrepet IoT, anvendelser og infrastruktur.
  • Feilsøking av Maskinvare: Gjenkjenne og feilsøke grunnleggende maskinvarekomponenter.
  • Tekniske Nyvinninger: Vurdere tekniske nyvinninger og eksisterende teknisk utstyr.
  • Sikkerhetsbegreper: Redegjøre for sikkerhetsbegreper og teknikker for infrastruktur og IoT.
  • Nettverksoppsett og Feilsøking: Koble opp, teste og feilsøke enkle datanettverk i laboratorieøvelser eller ved bruk av simuleringsverktøy.

Denne planen gir en omfattende dekning av IoT og maskinvare, kombinert med praktiske oppgaver som gir studentene mulighet til å anvende det de har lært i virkelige scenarier.