Aeronaut / kosmos-local-machine-simulator

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Lokale KOSMoS Komponente "Machine Simulator"

Mit diesem Repository wird beispielhaft dargestellt wie eine lokale KOSMoS Maschine Telemetriedaten über MQTT versenden kann.

Das Beispiel baut auf Alpine Linux und nutzt jq, curl und mosquitto-clients und hat eine Imagegröße von 8.26MB.

Changelog
Todo Liste

Voraussetzungen zur Installation/Nutzung

  • Linux (getestet unter Ubuntu 18.04.4 LTS und Arch rolling)
  • Docker (apt install docker-ce bzw. pacman -S docker)
  • Die lokale KOSMoS MQTT-Broker Komponente

Konfiguration

Der Container ist stateless und wird über Umgebungsvariablen beim Start konfiguriert.

Allgemeine Konfigurations Variablen

TODO: Verweis auf die Doku in welcher VAULT_TOKEN, MY_PKI_URI und MQTT_BROKER_FQDN erklärt wird.

MQTT-Payload

Detailiertere Beschreibung MQTT-Payload

Automatische Installation und Start aller Services

Der Start der Komponenten erfolgt über ein Start-Script, welches als Referenz für die Komponenten verwendet werden kann.

https://github.com/kosmos-industrie40/kosmos-local-startup

Manueller Start der Komponente

Hinweise:

  • domainname (${KOSMOS_LOCAL_MQTT_CLIENT_ROLE_FQDN}): Domain Name (DN) / Rolle wie konfiguriert in der Vault PKI
  • hostname (${MACHINE_NAME}): Hostname der Maschine
  • Umgebungsvariablen
    • PAYLOAD: Die zu versendende Payload wird im Beispiel aus der Datei MS_BCC_PAYLOAD.json geholt
    • TOPIC: Auf dieses MQTT-Topic wird die Payload gesendet

Host- und Domainname ergeben den FQDN bzw. CN auf welchen das Zertifikat ausgestellt werden soll

# Bauen und Taggen der Komponente
docker-compose build

# Ausführen der Komponente
docker run \
    -d \
    --net kosmos-local \
    --domainname=${KOSMOS_LOCAL_MQTT_CLIENT_ROLE_FQDN} \
    --hostname=${MACHINE_NAME}
    --name machine-simulator \
    -e PAYLOAD="$(cat MS_BCC_PAYLOAD.json)" \
    -e TOPIC='kosmos/machine-data/9d82699b-373a-4b2a-8925-f7bfacb618a4/Sensor/tbd/Update' \
    -e VAULT_TOKEN=${VAULT_TOKEN} \
    -e MY_PKI_URI=https://${KOSMOS_LOCAL_MQTT_CA_FQDN}:8201/v1/${KOSMOS_LOCAL_MQTT_PKI_PATH}/issue/${KOSMOS_LOCAL_MQTT_CLIENT_ROLE_PATH} \
    -e MQTT_BROKER_FQDN=${KOSMOS_LOCAL_MQTT_BROKER_HOSTNAME}.${KOSMOS_LOCAL_MQTT_BROKER_ROLE_FQDN} \
    harbor.kosmos.idcp.inovex.io/ondics/machine-simulator:rc2

Funktionsweise

Der Maschinen Simulator läuft in einem Docker-Container und Sendet im 30 Sekunden Tackt insgesamt 4 Nachrichten.
Als MQTT Schnittstelle wird das tool mosquitto_pub aus den Alpine Packetquellen verwendet. Der Aufruf erfolgt über ein shell-Script.

Es sind ebenfalls alle voraussetungen gegeben Nachrichten zu abonieren/empfangen, dies ist jedoch noch nicht implemtiert.

Credits

Dieses Repo wurde erstellt im Rahmen des BMBF Forschungsprojektes KOSMoS gefördert durch das https://www.bmbf.de/

Verwendete Software und Technologien:

Author

Andreas Clausnizer, Ondics GmbH

About


Languages

Language:Shell 88.2%Language:Dockerfile 11.8%