Zum Inhalt

Startseite

Python-Skript zur automatische Generierung von Maschinen, Rollen, Aktoren und Aktor-Verbindungen auf Basis einer Maschinenliste im CSV-Format.

Funktionsumfang

  • Generierung von Maschinen
  • Generierung von Rollen
  • Generierung von Aktoren
  • Generierung von einfachen Aktoren-Verbindungen
  • Export einer gesonderten Rollenliste (interne ID & Anzeigename der Rolle)
  • Abbildung der Struktur mittels Mermaid-Diagramm
  • Direkte Aktualisierung einer bestehenden bffh.dhall

Beispieldaten

Name Domäne Name Bereich Name Unterbereich Name Maschine Manager Unterbereich Name Alternativrolle
Beispielwerkstatt Holzwerkstatt Bandsäge Bandsäge
Beispielwerkstatt Holzwerkstatt Hobelmaschine Hobelmaschine
Beispielwerkstatt Holzwerkstatt CNC-Fräse CNC-Fräse
Beispielwerkstatt Holzwerkstatt Kappsäge
Beispielwerkstatt Holzwerkstatt Bandschleifer
Beispielwerkstatt Holzwerkstatt Ständerbohrmaschine
Beispielwerkstatt Textilwerkstatt Nähmaschine 1
Beispielwerkstatt Textilwerkstatt Nähmaschine 2
Beispielwerkstatt FabLab 3D-Druck 3D-Drucker 1 x
Beispielwerkstatt FabLab 3D-Druck 3D-Drucker 2 x
Beispielwerkstatt FabLab Laser Lasercutter x
Beispielwerkstatt FabLab Laser Kühlung x
Beispielwerkstatt Siebdruck SD-Belichter
Beispielwerkstatt Siebdruck A3-Drucker Druckernutzung
Beispielwerkstatt Büro Drucker Druckernutzung
Admin = {
    permissions =  [
        "bffh.users.manage",
        "bffh.users.info",
        "bffh.users.admin",
        "beispielw.*",
    ]
},

_manager_schichtleitung = {
    permissions =  [
        "beispielw.*",
    ]
},

beispielw_holz_manager = {
    permissions =  [
        "beispielw.holz.*",
    ]
},

beispielw_holz_bandsaege_user = {
    permissions =  [
        "beispielw.holz.bandsaege.disclose.*",
        "beispielw.holz.bandsaege.read.*",
        "beispielw.holz.bandsaege.write.*",
    ]
},

beispielw_holz_hobelmaschine_user = {
    permissions =  [
        "beispielw.holz.hobelmaschine.disclose.*",
        "beispielw.holz.hobelmaschine.read.*",
        "beispielw.holz.hobelmaschine.write.*",
    ]
},

beispielw_holz_holzcnc_user = {
    permissions =  [
        "beispielw.holz.holzcnc.disclose.*",
        "beispielw.holz.holzcnc.read.*",
        "beispielw.holz.holzcnc.write.*",
    ]
},

beispielw_holz_user = {
    permissions =  [
        "beispielw.holz.disclose.*",
        "beispielw.holz.read.*",
        "beispielw.holz.write.*",
    ]
},

beispielw_textil_manager = {
    permissions =  [
        "beispielw.textil.*",
    ]
},

beispielw_textil_user = {
    permissions =  [
        "beispielw.textil.disclose.*",
        "beispielw.textil.read.*",
        "beispielw.textil.write.*",
    ]
},

beispielw_fablab_manager = {
    permissions =  [
        "beispielw.fablab.*",
    ]
},

beispielw_fablab_3dprint_manager = {
    permissions =  [
        "beispielw.fablab.3dprint.*",
    ]
},

beispielw_fablab_3dprint_user = {
    permissions =  [
        "beispielw.fablab.3dprint.disclose.*",
        "beispielw.fablab.3dprint.read.*",
        "beispielw.fablab.3dprint.write.*",
    ]
},

beispielw_fablab_laser_manager = {
    permissions =  [
        "beispielw.fablab.laser.*",
    ]
},

beispielw_fablab_laser_user = {
    permissions =  [
        "beispielw.fablab.laser.disclose.*",
        "beispielw.fablab.laser.read.*",
        "beispielw.fablab.laser.write.*",
    ]
},

beispielw_siebdruck_manager = {
    permissions =  [
        "beispielw.siebdruck.*",
    ]
},

beispielw_siebdruck_user = {
    permissions =  [
        "beispielw.siebdruck.disclose.*",
        "beispielw.siebdruck.read.*",
        "beispielw.siebdruck.write.*",
    ]
},

beispielw_drucker = {
    permissions =  [
        "beispielw.siebdruck.disclose.a3drucker",
        "beispielw.siebdruck.read.a3drucker",
        "beispielw.siebdruck.write.a3drucker",
        "beispielw.buero.disclose.drucker",
        "beispielw.buero.read.drucker",
        "beispielw.buero.write.drucker",
    ]
},

beispielw_buero_manager = {
    permissions =  [
        "beispielw.buero.*",
    ]
},
beispielw-holz-bandsaege-bandsaege = {
    name = "Bandsäge",
    description = "Bandsäge im Holzbereich",
    wiki = "",
    category = "Holzwerkstatt",
    disclose = "beispielw.holz.bandsaege.disclose.bandsaege",
    read = "beispielw.holz.bandsaege.read.bandsaege",
    write = "beispielw.holz.bandsaege.write.bandsaege",
    manage = "beispielw.holz.bandsaege.manage.bandsaege",
},

beispielw-holz-hobelmaschine-hobelmaschine = {
    name = "Hobelmaschine",
    description = "Hobelmaschine im Holzbereich",
    wiki = "",
    category = "Holzwerkstatt",
    disclose = "beispielw.holz.hobelmaschine.disclose.hobelmaschine",
    read = "beispielw.holz.hobelmaschine.read.hobelmaschine",
    write = "beispielw.holz.hobelmaschine.write.hobelmaschine",
    manage = "beispielw.holz.hobelmaschine.manage.hobelmaschine",
},

beispielw-holz-holzcnc-holzcncfraese = {
    name = "CNC-Fräse",
    description = "CNC Fräse im Holzbereich",
    wiki = "",
    category = "Holzwerkstatt",
    disclose = "beispielw.holz.holzcnc.disclose.holzcncfraese",
    read = "beispielw.holz.holzcnc.read.holzcncfraese",
    write = "beispielw.holz.holzcnc.write.holzcncfraese",
    manage = "beispielw.holz.holzcnc.manage.holzcncfraese",
},

beispielw-holz-kappsaege = {
    name = "Kappsäge",
    description = "Kappsäge mit allgemeiner Einweisung Holz",
    wiki = "",
    category = "Holzwerkstatt",
    disclose = "beispielw.holz.disclose.kappsaege",
    read = "beispielw.holz.read.kappsaege",
    write = "beispielw.holz.write.kappsaege",
    manage = "beispielw.holz.manage.kappsaege",
},

beispielw-holz-bandschleifer = {
    name = "Bandschleifer",
    description = "Bandschleifer mit allgemeiner Einweisung Holz",
    wiki = "",
    category = "Holzwerkstatt",
    disclose = "beispielw.holz.disclose.bandschleifer",
    read = "beispielw.holz.read.bandschleifer",
    write = "beispielw.holz.write.bandschleifer",
    manage = "beispielw.holz.manage.bandschleifer",
},

beispielw-holz-staenderbohrmaschine = {
    name = "Ständerbohrmaschine",
    description = "Ständerbohrmaschine mit allgemeiner Einweisung Holz",
    wiki = "",
    category = "Holzwerkstatt",
    disclose = "beispielw.holz.disclose.staenderbohrmaschine",
    read = "beispielw.holz.read.staenderbohrmaschine",
    write = "beispielw.holz.write.staenderbohrmaschine",
    manage = "beispielw.holz.manage.staenderbohrmaschine",
},

beispielw-textil-naehmaschine1 = {
    name = "Nähmaschine 1",
    description = "Nähmaschine Nummer 1",
    wiki = "",
    category = "Textilwerkstatt",
    disclose = "beispielw.textil.disclose.naehmaschine1",
    read = "beispielw.textil.read.naehmaschine1",
    write = "beispielw.textil.write.naehmaschine1",
    manage = "beispielw.textil.manage.naehmaschine1",
},

beispielw-textil-naehmaschine2 = {
    name = "Nähmaschine 2",
    description = "Nähmaschine Nummer 2",
    wiki = "",
    category = "Textilwerkstatt",
    disclose = "beispielw.textil.disclose.naehmaschine2",
    read = "beispielw.textil.read.naehmaschine2",
    write = "beispielw.textil.write.naehmaschine2",
    manage = "beispielw.textil.manage.naehmaschine2",
},

beispielw-fablab-3dprint-3ddrucker1 = {
    name = "3D-Drucker 1",
    description = "3D-Drucker Modell 111",
    wiki = "",
    category = "FabLab",
    disclose = "beispielw.fablab.3dprint.disclose.3ddrucker1",
    read = "beispielw.fablab.3dprint.read.3ddrucker1",
    write = "beispielw.fablab.3dprint.write.3ddrucker1",
    manage = "beispielw.fablab.3dprint.manage.3ddrucker1",
},

beispielw-fablab-3dprint-3ddrucker2 = {
    name = "3D-Drucker 2",
    description = "3D-Drucker Modell 222",
    wiki = "",
    category = "FabLab",
    disclose = "beispielw.fablab.3dprint.disclose.3ddrucker2",
    read = "beispielw.fablab.3dprint.read.3ddrucker2",
    write = "beispielw.fablab.3dprint.write.3ddrucker2",
    manage = "beispielw.fablab.3dprint.manage.3ddrucker2",
},

beispielw-fablab-laser-laser3000 = {
    name = "Lasercutter",
    description = "Modell Laser3000",
    wiki = "https://www.fiktivedoku.de",
    category = "FabLab",
    disclose = "beispielw.fablab.laser.disclose.laser3000",
    read = "beispielw.fablab.laser.read.laser3000",
    write = "beispielw.fablab.laser.write.laser3000",
    manage = "beispielw.fablab.laser.manage.laser3000",
},

beispielw-fablab-laser-kuehlung3000 = {
    name = "Kühlung",
    description = "Modell Kühlung3000",
    wiki = "",
    category = "FabLab",
    disclose = "beispielw.fablab.laser.disclose.kuehlung3000",
    read = "beispielw.fablab.laser.read.kuehlung3000",
    write = "beispielw.fablab.laser.write.kuehlung3000",
    manage = "beispielw.fablab.laser.manage.kuehlung3000",
},

beispielw-siebdruck-sdbelichter = {
    name = "SD-Belichter",
    description = "Belichter für die Siebe",
    wiki = "",
    category = "Siebdruck",
    disclose = "beispielw.siebdruck.disclose.sdbelichter",
    read = "beispielw.siebdruck.read.sdbelichter",
    write = "beispielw.siebdruck.write.sdbelichter",
    manage = "beispielw.siebdruck.manage.sdbelichter",
},

beispielw-siebdruck-a3drucker = {
    name = "A3-Drucker",
    description = "A3 Drucker im Siebdruck Bereich",
    wiki = "",
    category = "Siebdruck",
    disclose = "beispielw.siebdruck.disclose.a3drucker",
    read = "beispielw.siebdruck.read.a3drucker",
    write = "beispielw.siebdruck.write.a3drucker",
    manage = "beispielw.siebdruck.manage.a3drucker",
},

beispielw-buero-drucker = {
    name = "Drucker",
    description = "",
    wiki = "",
    category = "Büro",
    disclose = "beispielw.buero.disclose.drucker",
    read = "beispielw.buero.read.drucker",
    write = "beispielw.buero.write.drucker",
    manage = "beispielw.buero.manage.drucker",
},
tasmota_1 =
{
   module = "Process",
    params =
    {
        cmd = "/usr/local/lib/bffh/adapters/tasmota/main.py",
        args = "--host mqtt --tasmota 1",
    }
},

tasmota_2 =
{
   module = "Process",
    params =
    {
        cmd = "/usr/local/lib/bffh/adapters/tasmota/main.py",
        args = "--host mqtt --tasmota 2",
    }
},

tasmota_6 =
{
   module = "Process",
    params =
    {
        cmd = "/usr/local/lib/bffh/adapters/tasmota/main.py",
        args = "--host mqtt --tasmota 6",
    }
},

tasmota_7 =
{
   module = "Process",
    params =
    {
        cmd = "/usr/local/lib/bffh/adapters/tasmota/main.py",
        args = "--host mqtt --tasmota 7",
    }
},

tasmota_8 =
{
   module = "Process",
    params =
    {
        cmd = "/usr/local/lib/bffh/adapters/tasmota/main.py",
        args = "--host mqtt --tasmota 8",
    }
},

tasmota_9 =
{
   module = "Process",
    params =
    {
        cmd = "/usr/local/lib/bffh/adapters/tasmota/main.py",
        args = "--host mqtt --tasmota 9",
    }
},

tasmota_10 =
{
   module = "Process",
    params =
    {
        cmd = "/usr/local/lib/bffh/adapters/tasmota/main.py",
        args = "--host mqtt --tasmota 10",
    }
},

tasmota_11 =
{
   module = "Process",
    params =
    {
        cmd = "/usr/local/lib/bffh/adapters/tasmota/main.py",
        args = "--host mqtt --tasmota 11",
    }
},

tasmota_12 =
{
   module = "Process",
    params =
    {
        cmd = "/usr/local/lib/bffh/adapters/tasmota/main.py",
        args = "--host mqtt --tasmota 12",
    }
},

tasmota_13 =
{
   module = "Process",
    params =
    {
        cmd = "/usr/local/lib/bffh/adapters/tasmota/main.py",
        args = "--host mqtt --tasmota 13",
    }
},

tasmota_14 =
{
   module = "Process",
    params =
    {
        cmd = "/usr/local/lib/bffh/adapters/tasmota/main.py",
        args = "--host mqtt --tasmota 14",
    }
},

tasmota_15 =
{
   module = "Process",
    params =
    {
        cmd = "/usr/local/lib/bffh/adapters/tasmota/main.py",
        args = "--host mqtt --tasmota 15",
    }
},

tasmota_16 =
{
   module = "Process",
    params =
    {
        cmd = "/usr/local/lib/bffh/adapters/tasmota/main.py",
        args = "--host mqtt --tasmota 16",
    }
},

tasmota_17 =
{
   module = "Process",
    params =
    {
        cmd = "/usr/local/lib/bffh/adapters/tasmota/main.py",
        args = "--host mqtt --tasmota 17",
    }
},

tasmota_18 =
{
   module = "Process",
    params =
    {
        cmd = "/usr/local/lib/bffh/adapters/tasmota/main.py",
        args = "--host mqtt --tasmota 18",
    }
},
{
    machine = "beispielw-holz-bandsaege-bandsaege",
    actor =  "tasmota_1"
},
{
    machine = "beispielw-holz-hobelmaschine-hobelmaschine",
    actor =  "tasmota_2"
},
{
    machine = "beispielw-holz-holzcnc-holzcncfraese",
    actor =  "tasmota_6"
},
{
    machine = "beispielw-holz-kappsaege",
    actor =  "tasmota_7"
},
{
    machine = "beispielw-holz-bandschleifer",
    actor =  "tasmota_8"
},
{
    machine = "beispielw-holz-staenderbohrmaschine",
    actor =  "tasmota_9"
},
{
    machine = "beispielw-textil-naehmaschine1",
    actor =  "tasmota_10"
},
{
    machine = "beispielw-textil-naehmaschine2",
    actor =  "tasmota_11"
},
{
    machine = "beispielw-fablab-3dprint-3ddrucker1",
    actor =  "tasmota_12"
},
{
    machine = "beispielw-fablab-3dprint-3ddrucker2",
    actor =  "tasmota_13"
},
{
    machine = "beispielw-fablab-laser-laser3000",
    actor =  "tasmota_14"
},
{
    machine = "beispielw-fablab-laser-kuehlung3000",
    actor =  "tasmota_15"
},
{
    machine = "beispielw-siebdruck-sdbelichter",
    actor =  "tasmota_16"
},
{
    machine = "beispielw-siebdruck-a3drucker",
    actor =  "tasmota_17"
},
{
    machine = "beispielw-buero-drucker",
    actor =  "tasmota_18"
},

Werkstattdiagramm