Anwenderdoku erweitert / aktualisiert. Launch.json angepassst auf eitiertes easy layout mit mehreren Bloecken an einem Punkt
This commit is contained in:
Vendored
+3
-3
@@ -100,18 +100,18 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "draw cable dxf with copied layers from easy_todraw.json",
|
||||
"name": "draw cable dxf with copied layers from easy_todraw_edit.json",
|
||||
"type": "debugpy",
|
||||
"request": "launch",
|
||||
"program": "${file}",
|
||||
"console": "integratedTerminal",
|
||||
"args": [
|
||||
"--filename",
|
||||
"easy_todraw.json",
|
||||
"easy_todraw_edit.json",
|
||||
"--new",
|
||||
"easy_cables.dxf",
|
||||
"--copy_layer",
|
||||
"easy_layer_copy.dxf",
|
||||
"easy_reduziert.dxf",
|
||||
"--origin",
|
||||
"easy.dxf"
|
||||
]
|
||||
|
||||
@@ -4,7 +4,11 @@ set TARGETDIR="%USERPROFILE%\Desktop\Kabeltool"
|
||||
mkdir %TARGETDIR%
|
||||
set SHORTCUT=%TARGETDIR%\create_cables.lnk
|
||||
|
||||
<<<<<<< HEAD
|
||||
set CHECKOUT_DIR="C:\10-Develop\kabellaengen"
|
||||
=======
|
||||
set CHECKOUT_DIR="C:\kabellaengen"
|
||||
>>>>>>> a0e7fdfa5b89d82c67808b94a3b5ad35dc5fa035
|
||||
|
||||
set TARGET=%CHECKOUT_DIR%\bin\run.bat
|
||||
set ICON=%CHECKOUT_DIR%\doc\img\Icons\Icon_Gemini2.ico
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
call setenv.bat
|
||||
if not exist %PROJECT%\.venv (
|
||||
ECHO Initialisiere Python virtual environment...
|
||||
python -m venv %PROJECT%\.venv --upgrade-deps
|
||||
py -m venv %PROJECT%\.venv --upgrade-deps
|
||||
ECHO Erfolgreich.
|
||||
|
||||
call %PROJECT%\.venv\Scripts\activate.bat
|
||||
|
||||
+3
-1
@@ -3,7 +3,9 @@ echo folgende Datei wurde uebergeben: %1
|
||||
for /F %%i in ("%1") do set FILENAME=%%~ni
|
||||
|
||||
set TARGET="%USERPROFILE%\Desktop\Kabeltool"
|
||||
set CHECKOUT_DIR=C:\10-Develop\kabellaengen
|
||||
|
||||
set CHECKOUT_DIR=C:\kabellaengen
|
||||
|
||||
|
||||
call %CHECKOUT_DIR%\bin\setenv.bat
|
||||
call %CHECKOUT_DIR%\bin\getexdraw.bat %1
|
||||
|
||||
+62
-8
@@ -1,6 +1,9 @@
|
||||
- [Anwenderdoku zur Ermittlung der Kabellängen](#anwenderdoku-zur-ermittlung-der-kabellängen)
|
||||
- [Installation des Programmes](#installation-des-programmes)
|
||||
- [Allgemeine Informationen und Programmablauf](#allgemeine-informationen-und-programmablauf)
|
||||
- [Installation des Programmes und Schnellstart-Guide](#installation-des-programmes-und-schnellstart-guide)
|
||||
- [Installation](#installation)
|
||||
- [Schnellstart und Vewendung des Programms](#schnellstart-und-vewendung-des-programms)
|
||||
- [Standardmäßige Ausgabe des Programms](#standardmäßige-ausgabe-des-programms)
|
||||
- [Detaillierte Informationen und Programmablauf](#detaillierte-informationen-und-programmablauf)
|
||||
- [Zweck des Programms](#zweck-des-programms)
|
||||
- [Allgemeiner Programmablauf](#allgemeiner-programmablauf)
|
||||
- [Aufruf des Programms](#aufruf-des-programms)
|
||||
@@ -18,17 +21,68 @@
|
||||
|
||||
# Anwenderdoku zur Ermittlung der Kabellängen
|
||||
|
||||
## Installation des Programmes
|
||||
## Installation des Programmes und Schnellstart-Guide
|
||||
|
||||
Das Programm mit allen Quellen befindet sich auf dem hauseigenen git server und kann mit einen beliebigen git client auf einem Anwenderrechner über ``` git clone http://gitea.schoenenberger.de/mistangl/kabellaengen.git``` geholt werden.
|
||||
Dieser Ordner auch einfach mit allen Unterordnern gezippt und auf einem anderen Rechner ausgepackt werden.
|
||||
### Installation
|
||||
|
||||
Das Programm mit allen Quellen befindet sich auf dem hauseigenen git Server und kann mit einen beliebigen git client auf einem Anwenderrechner über ``` git clone http://gitea.schoenenberger.de/mistangl/kabellaengen.git``` geholt werden.
|
||||
Dieser Ordner kann auch einfach mit allen Unterordnern gezippt und auf einem anderen Rechner entpackt werden.
|
||||
|
||||
Danach muss auf dem Zielrechner (z.B. per Windows APP) Python 3.X installiert werden. Alternativ kann ein Python Interpreter von einem Netzlaufwerk verwendet werden. Der Pfad zu diesem Interpreter muss dann über eine *Umgebungsvariable* mit dem Namen **NETWORK_INTERPRETER_PATH** auf der Maschine gesetzt sein.
|
||||
Grundsätzlich wird eine lokale Installation eines Python Interpreters (von https://www.python.org/downloads/) empfohlen.
|
||||
|
||||
Zur Installation des Kabeltools muss in dem geclonten Ordner `kabellaengen\bin` die Datei `install.bat` **als Administrator** ausgeführt werden. Hierfür *Rechtsklick* auf die Datei und *als Administrator ausführen*. Es wird in der Folge ein Ordner auf dem Desktop des Computers mit dem namen *Kabeltool* erstellt. In diesem Ordner ist eine Verknüpfung *create_cables*.
|
||||
|
||||
Ist Python installiert, werden per Doppelklick automatisch auf die `bin\install_py.bat` alle nötigen python Package heruntergeladen. Diese werden dann automatisch aus dem Netz in den .venv kopiert.
|
||||
|
||||
## Allgemeine Informationen und Programmablauf
|
||||
### Schnellstart und Vewendung des Programms
|
||||
|
||||
Im auf dem Desktop erzeugten Ordner findet sich das eigentliche Programm *create_cables*. Um das Programm auszuführen, genügt es die zu verarbeitende .**dxf-Datei** per *Drag and Drop* auf das Programm zu ziehen. Das öffnen der *Command-Shell* bestätigt den Start des Programms und der Anwender wird über den Ablauf informiert.
|
||||
|
||||
Die Ausgabe schreibt:
|
||||
|
||||
```text
|
||||
folgende Datei wurde uebergeben: Pfad\zu\meiner\dxfdatei.dxf
|
||||
-- hole Positionen
|
||||
reading file ..done
|
||||
writing results to a json file ...
|
||||
done
|
||||
-- erzeuge Graph mit Routing
|
||||
writing results to a json file ...
|
||||
done
|
||||
--zeichne Kabel in dxf Datei
|
||||
creating new .dxf ..
|
||||
done
|
||||
copying layers (Racks, Subdistributors, ...) from original .dxf into new .dxf ..
|
||||
done
|
||||
creating new .dxf ..
|
||||
done
|
||||
creating excel file with cable information ..
|
||||
done
|
||||
C:\10-Develop\kabellaengen\work\dxfdatei_cables.dxf
|
||||
C:\10-Develop\kabellaengen\work\dxfdatei_cables.xlsx
|
||||
C:\10-Develop\kabellaengen\work\dxfdatei_positions.json
|
||||
C:\10-Develop\kabellaengen\work\dxfdatei_reduziert.dxf
|
||||
C:\10-Develop\kabellaengen\work\dxfdatei_todraw.json
|
||||
5 Datei(en) verschoben.
|
||||
Drücken sie eine beliebige Taste . . .
|
||||
```
|
||||
|
||||
Das Drücken einer beliebigen Taste beendet das Programm und die Ausgabe kann verwendet werden.
|
||||
|
||||
### Standardmäßige Ausgabe des Programms
|
||||
In den Ordner auf dem Desktop in dem das Kabeltool liegt werden nach Beendigung der Berechnungen die Ausgabedateien abgelegt. Standardmäßig sind dies fünf Dateien, wovon letztlich drei für den Anwender bestimmt sind. In der nachfolgenden Liste steht der name *dxfdatei* stellvertretend für die eingegebene Datei des Benutzers.
|
||||
|
||||
| Dateiname | Details |
|
||||
|---------------------------|---------------------------------------------------------------------------------------------------|
|
||||
| `dxfdatei_cables.dxf` | `.dxf`-Datei, **nur mit Kabelwegen** (z. B. für Import ins Original-Layout als eigenes Layer) |
|
||||
| `dxfdatei_reduziert.dxf` | `.dxf`-Datei mit **Kabelwegen und zusätzlich** Kabeltrassen, Sensoren, Aktoren und Unterverteilern (in Beabeitung) |
|
||||
| `dxfdatei_cables.xlsx` | **Excel-Datei** mit Kabellängen, Längenübersicht und Fehler-Übersicht |
|
||||
| `dxfdatei_positions` | **Zwischendatei** (nicht für Endnutzer bestimmt) |
|
||||
| `dxfdatei_todraw` | **Zwischendatei** (nicht für Endnutzer bestimmt) |
|
||||
|
||||
|
||||
## Detaillierte Informationen und Programmablauf
|
||||
|
||||
### Zweck des Programms
|
||||
|
||||
@@ -98,7 +152,7 @@ Schalter:
|
||||
| `-f` | `--filename` | `myfile.dxf` | file to be analyzed |
|
||||
| `-s` | `--sensors` | | fetch all positions of sensors, actors and subdistributors |
|
||||
| `-r` | `--rack` | | fetch all positions of all cable racks |
|
||||
| `-w` | `--write` | | write results into a json file |
|
||||
| `-w` | `--write` | `myfile_positions.json` | write results into a json file |
|
||||
| `-c` | `--console` | | print results to output |
|
||||
|
||||
|
||||
@@ -287,7 +341,7 @@ Die in den Details zu `getpositions.py` beschriebene Handhabung der Verbindung d
|
||||
- Sensoren, welche über keinen Marker verfügen, werden anhand des Textblocks verbunden (z.B: BG3270)
|
||||
- Die Unterverteiler werden stets auf die Mitte ihres Blocks verbunden.
|
||||
|
||||
Das letzte Programm gibt (sofern der Schalter `-x` gesetzt ist) zudem eine Excel-Übersicht der Kabel zurück. Diese beinhaltet die jeweilige ID des Kabels ("von wo nach wo") und die tatsächliche (genaue) Länge des Kabels. Daneben ist die gerundete Länge (aktuell auf volle 10 m) aufgeführt. In einem weiteren Arbeitsblatt sind die Längen gesammelt aufgeführt (z.B. 10x 10m Kabel, 5x 20 m Kabel, 1x 50 m Kabel). In einer Fehlerübersicht sind fehlgeschlagene Verbindungen zwischen Sensoren / Aktoren / Unterverteilern zu Kabeltrassen aufgeführt. In einer weiteren Übersicht fehlgeschlagene Kabelverbindungen (*Routings*) und der Grund für das Fehlschlagen.
|
||||
Das letzte Programm gibt standardmäßig zudem eine Excel-Übersicht der Kabel zurück. Diese beinhaltet die jeweilige ID des Kabels ("von wo nach wo") und die tatsächliche (genaue) Länge des Kabels. Daneben ist die gerundete Länge (aktuell auf volle 10 m) aufgeführt. In einem weiteren Arbeitsblatt sind die Längen gesammelt aufgeführt (z.B. 10x 10m Kabel, 5x 20 m Kabel, 1x 50 m Kabel). In einer Fehlerübersicht sind fehlgeschlagene Verbindungen zwischen Sensoren / Aktoren / Unterverteilern zu Kabeltrassen aufgeführt. In einer weiteren Übersicht fehlgeschlagene Kabelverbindungen (*Routings*) und der Grund für das Fehlschlagen.
|
||||
|
||||
## Häufige Fagen
|
||||
|
||||
|
||||
+1
-1
@@ -267,7 +267,7 @@ def write_excel_from_json(plines:Polylines, outpath:str):
|
||||
|
||||
for pl in plines.kabel:
|
||||
length = pl.length /1000 # Umrechnung von mm in m
|
||||
rounded_len = math.ceil(length/10)*10
|
||||
rounded_len = math.ceil(length/5)*5
|
||||
length_summary[rounded_len] +=1
|
||||
ws1.append([pl.id, length, int(rounded_len)])
|
||||
|
||||
|
||||
@@ -0,0 +1,461 @@
|
||||
{
|
||||
"kabel": [
|
||||
{
|
||||
"id": "UC0101-BG3241",
|
||||
"coords": [
|
||||
{
|
||||
"x": 0.0,
|
||||
"y": 4162.8
|
||||
},
|
||||
{
|
||||
"x": 0.1,
|
||||
"y": 3777.6
|
||||
},
|
||||
{
|
||||
"x": 0.1,
|
||||
"y": 1280.2
|
||||
},
|
||||
{
|
||||
"x": 38.8,
|
||||
"y": 1280.2
|
||||
}
|
||||
],
|
||||
"length": 2921.3,
|
||||
"tunnel_indices": []
|
||||
},
|
||||
{
|
||||
"id": "UC0101-BG3240",
|
||||
"coords": [
|
||||
{
|
||||
"x": 0.0,
|
||||
"y": 4162.8
|
||||
},
|
||||
{
|
||||
"x": 0.1,
|
||||
"y": 3777.6
|
||||
},
|
||||
{
|
||||
"x": 2866.6,
|
||||
"y": 3777.6
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 3777.6
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 3879.4
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 5609.0
|
||||
},
|
||||
{
|
||||
"x": 4700.0,
|
||||
"y": 5609.0
|
||||
}
|
||||
],
|
||||
"length": 7178.4,
|
||||
"tunnel_indices": []
|
||||
},
|
||||
{
|
||||
"id": "UC0101-BG3270",
|
||||
"coords": [
|
||||
{
|
||||
"x": 0.0,
|
||||
"y": 4162.8
|
||||
},
|
||||
{
|
||||
"x": 0.1,
|
||||
"y": 3777.6
|
||||
},
|
||||
{
|
||||
"x": 2866.6,
|
||||
"y": 3777.6
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 3777.6
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 3879.4
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 5609.0
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 8072.5
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 12968.1
|
||||
},
|
||||
{
|
||||
"x": 5893.0,
|
||||
"y": 12968.1
|
||||
}
|
||||
],
|
||||
"length": 15468.6,
|
||||
"tunnel_indices": []
|
||||
},
|
||||
{
|
||||
"id": "UC0101-BG3272",
|
||||
"coords": [
|
||||
{
|
||||
"x": 0.0,
|
||||
"y": 4162.8
|
||||
},
|
||||
{
|
||||
"x": 0.1,
|
||||
"y": 3777.6
|
||||
},
|
||||
{
|
||||
"x": 2866.6,
|
||||
"y": 3777.6
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 3777.6
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 3879.4
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 5609.0
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 8072.5
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 12968.1
|
||||
},
|
||||
{
|
||||
"x": 5893.0,
|
||||
"y": 12968.1
|
||||
}
|
||||
],
|
||||
"length": 15468.6,
|
||||
"tunnel_indices": []
|
||||
},
|
||||
{
|
||||
"id": "UC0101-BG3271",
|
||||
"coords": [
|
||||
{
|
||||
"x": 0.0,
|
||||
"y": 4162.8
|
||||
},
|
||||
{
|
||||
"x": 0.1,
|
||||
"y": 3777.6
|
||||
},
|
||||
{
|
||||
"x": 2866.6,
|
||||
"y": 3777.6
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 3777.6
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 3879.4
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 5609.0
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 8072.5
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 12968.1
|
||||
},
|
||||
{
|
||||
"x": 5893.0,
|
||||
"y": 12968.1
|
||||
}
|
||||
],
|
||||
"length": 15468.6,
|
||||
"tunnel_indices": []
|
||||
},
|
||||
{
|
||||
"id": "UC0101-BG3260",
|
||||
"coords": [
|
||||
{
|
||||
"x": 0.0,
|
||||
"y": 4162.8
|
||||
},
|
||||
{
|
||||
"x": 0.1,
|
||||
"y": 3777.6
|
||||
},
|
||||
{
|
||||
"x": 2866.6,
|
||||
"y": 3777.6
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 3777.6
|
||||
},
|
||||
{
|
||||
"x": 8866.1,
|
||||
"y": 3777.6
|
||||
},
|
||||
{
|
||||
"x": 8866.1,
|
||||
"y": 3878.4
|
||||
},
|
||||
{
|
||||
"x": 8866.1,
|
||||
"y": 9000.0
|
||||
},
|
||||
{
|
||||
"x": 9800.0,
|
||||
"y": 9000.0
|
||||
},
|
||||
{
|
||||
"x": 21282.5,
|
||||
"y": 9295.2
|
||||
},
|
||||
{
|
||||
"x": 20282.5,
|
||||
"y": 9295.2
|
||||
},
|
||||
{
|
||||
"x": 20282.5,
|
||||
"y": 14141.3
|
||||
},
|
||||
{
|
||||
"x": 22355.3,
|
||||
"y": 14141.3
|
||||
},
|
||||
{
|
||||
"x": 22355.3,
|
||||
"y": 13524.1
|
||||
}
|
||||
],
|
||||
"length": 27443.6,
|
||||
"tunnel_indices": [
|
||||
7,
|
||||
8
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "UC0101-BG3261",
|
||||
"coords": [
|
||||
{
|
||||
"x": 0.0,
|
||||
"y": 4162.8
|
||||
},
|
||||
{
|
||||
"x": 0.1,
|
||||
"y": 3777.6
|
||||
},
|
||||
{
|
||||
"x": 2866.6,
|
||||
"y": 3777.6
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 3777.6
|
||||
},
|
||||
{
|
||||
"x": 8866.1,
|
||||
"y": 3777.6
|
||||
},
|
||||
{
|
||||
"x": 8866.1,
|
||||
"y": 3878.4
|
||||
},
|
||||
{
|
||||
"x": 8866.1,
|
||||
"y": 9000.0
|
||||
},
|
||||
{
|
||||
"x": 9800.0,
|
||||
"y": 9000.0
|
||||
},
|
||||
{
|
||||
"x": 21282.5,
|
||||
"y": 9295.2
|
||||
},
|
||||
{
|
||||
"x": 20282.5,
|
||||
"y": 9295.2
|
||||
},
|
||||
{
|
||||
"x": 20282.5,
|
||||
"y": 14141.3
|
||||
},
|
||||
{
|
||||
"x": 22355.3,
|
||||
"y": 14141.3
|
||||
},
|
||||
{
|
||||
"x": 22355.3,
|
||||
"y": 13524.1
|
||||
}
|
||||
],
|
||||
"length": 27443.6,
|
||||
"tunnel_indices": [
|
||||
7,
|
||||
8
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "UH01-MA0062",
|
||||
"coords": [
|
||||
{
|
||||
"x": 7000.0,
|
||||
"y": 16300.0
|
||||
},
|
||||
{
|
||||
"x": 7000.0,
|
||||
"y": 15865.5
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 15865.5
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 15774.4
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 12968.1
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 8072.5
|
||||
},
|
||||
{
|
||||
"x": 4967.0,
|
||||
"y": 8072.5
|
||||
}
|
||||
],
|
||||
"length": 10301.5,
|
||||
"tunnel_indices": []
|
||||
},
|
||||
{
|
||||
"id": "UH01-MA0061",
|
||||
"coords": [
|
||||
{
|
||||
"x": 7000.0,
|
||||
"y": 16300.0
|
||||
},
|
||||
{
|
||||
"x": 7000.0,
|
||||
"y": 15865.5
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 15865.5
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 15774.4
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 12968.1
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 8072.5
|
||||
},
|
||||
{
|
||||
"x": 4967.0,
|
||||
"y": 8072.5
|
||||
}
|
||||
],
|
||||
"length": 10301.5,
|
||||
"tunnel_indices": []
|
||||
},
|
||||
{
|
||||
"id": "UH01-MA0063",
|
||||
"coords": [
|
||||
{
|
||||
"x": 7000.0,
|
||||
"y": 16300.0
|
||||
},
|
||||
{
|
||||
"x": 7000.0,
|
||||
"y": 15865.5
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 15865.5
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 15774.4
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 12968.1
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 8072.5
|
||||
},
|
||||
{
|
||||
"x": 4967.0,
|
||||
"y": 8072.5
|
||||
}
|
||||
],
|
||||
"length": 10301.5,
|
||||
"tunnel_indices": []
|
||||
},
|
||||
{
|
||||
"id": "UH01-FC0062",
|
||||
"coords": [
|
||||
{
|
||||
"x": 7000.0,
|
||||
"y": 16300.0
|
||||
},
|
||||
{
|
||||
"x": 7000.0,
|
||||
"y": 15865.5
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 15865.5
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 15774.4
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 12968.1
|
||||
},
|
||||
{
|
||||
"x": 4946.5,
|
||||
"y": 8072.5
|
||||
},
|
||||
{
|
||||
"x": 4973.9,
|
||||
"y": 8072.5
|
||||
}
|
||||
],
|
||||
"length": 10308.4,
|
||||
"tunnel_indices": []
|
||||
}
|
||||
],
|
||||
"errors_routing": [],
|
||||
"errors_sensors": [],
|
||||
"errors_dists": [],
|
||||
"errors_tunnels": [],
|
||||
"errors_existing_dists": [],
|
||||
"errors_existing_sensors": []
|
||||
}
|
||||
Reference in New Issue
Block a user