Import protokołu z pliku JSON
Jak przygotować plik JSON, z którego ProtoSmart utworzy protokół z policzonymi wynikami - struktura pliku, pola pomiarów i pełny przykład.
Ostatnia aktualizacja:
ProtoSmart potrafi wczytać gotowy protokół z pliku JSON przygotowanego według ustalonej struktury. Przydaje się, gdy protokół powstaje poza aplikacją - w Twoim narzędziu, skrypcie albo generatorze. Aplikacja składa z pliku protokół z policzonymi wynikami (status W trakcie), który weryfikujesz w edytorze przed wysłaniem.
Gdzie znajdziesz import
Na liście protokołów rozwiń menu (ikona trzech kropek) i wybierz pozycję Import z pliku JSON. Przeciągnij plik albo kliknij, żeby go wskazać. Zobaczysz podgląd, a po zatwierdzeniu protokół otworzy się w edytorze i zsynchronizuje na Twoje konto.
Struktura pliku
Korzeń pliku to zawsze trzy pola:
- format - stała wartość protosmart-protocol
- schemaVersion - liczba, obecnie 1
- protocol - drzewo: protokół, sekcje, elementy, arkusze, pomiary
Nie podajesz identyfikatorów ani dat systemowych - generuje je aplikacja przy imporcie.
Wersja 1 - protokoły elektryczne
Na razie obsługiwane są protokoły elektryczne.
- Sekcje (section.type): BUILDING, FLOOR - zagnieżdżasz przez children.
- Elementy (item.type): DISTRIBUTION_BOARD (rozdzielnica), GSU_BUSBAR (szyna GSU).
- Arkusze: zależą od elementu - rozdzielnica przyjmuje m.in. RCD, IPZ_TN, IPZ_TT, ciągłość, rezystancje izolacji; szyna GSU - uziemienie i rezystywność.
Klient i obiekt - klucze naturalne
Nie znasz wewnętrznych identyfikatorów, więc podajesz dane, po których aplikacja dopasuje istniejący rekord albo utworzy nowy:
- protocol.client - wymagane: companyName albo companyTaxId (NIP) albo firstName + lastName. Opcjonalnie kontakt i adres.
- protocol.object - name, adres, networkSystem (TN-S / TN-C / TN-C-S / TT / IT), voltage (230V / 230/400V / 400V).
Pola pomiarów
Każdy pomiar ma itemName (np. nazwę obwodu), opcjonalnie symbol i measurementComments, oraz data z polami zależnymi od typu arkusza. Pola oznaczone jako obliczane oraz ustawiane z klucza wypełnia aplikacja - nie podajesz ich.
RCD
| Pole (data.*) | Rodzaj | Jednostka | Wartości |
|---|---|---|---|
| data.rcdType | podaj (klucz RCD) | AC, A, F, B, B+, S | |
| data.residualCurrent | podaj (klucz RCD) | mA | |
| data.ratedCurrent | podaj (klucz RCD) | A | |
| data.multiplier | wybór | 0.5, 1, 2, 5 | |
| data.measuredTime | liczba | ms | |
| data.measuredTrippingCurrent | liczba | mA | |
| data.rcdTestButton | wybór | WORKED, NOT_WORKED | |
| data.rcdTypeId | ustawiane z klucza |
IPZ_TN (pętla zwarcia TN)
| Pole (data.*) | Rodzaj | Jednostka | Wartości |
|---|---|---|---|
| data.fuseCharacteristic | podaj (klucz bezp.) | B, C, D, K, Z, gG, gL | |
| data.ratedCurrent | podaj (klucz bezp.) | A | |
| data.measuredImpedance | liczba | Ω | |
| data.trippingTime | wybór | s | 0.2, 0.4, 1, 5 |
| data.peContinuity | wybór | YES, NO, NOT_TESTED | |
| data.polarity | wybór | YES, NO, NOT_TESTED | |
| data.crossSectionLive / crossSectionPe | wybór | mm² | 1, 1.5, 2.5, 4, 6, 10, 16, 25, 35, 50 |
| data.fuseId + pola obliczane | ustawiane / obliczane |
Pozostałe typy pomiarów
- Ciągłość (CONTINUITY): measuredValue, requiredValue (Ω).
- Rezystancja izolacji (RI_TNS / RI_TNC / RI_ZWAR): wartości międzyżyłowe w MΩ (np. m_L1_PE, m_L1_L2, m_LN_PE) + requiredValue.
- Uziemienie (EARTHING): measuredResistance, limit (Ω).
- Rezystywność (RESISTIVITY): spacing, measuredR, limitMax.
- IPZ_TT: jak IPZ_TN, dodatkowo protectionType (RCD / BREAKER) i safeVoltage (25 / 50).
Zabezpieczenia i typy RCD (biblioteki)
Nie podajesz identyfikatora pozycji z biblioteki - podajesz klucz naturalny, a aplikacja dopasuje istniejącą pozycję (systemową albo Twoją) albo utworzy nową w bibliotece workspace:
- IPZ_TN / IPZ_TT - podaj fuseCharacteristic + ratedCurrent. Aplikacja ustawi bezpiecznik i policzy dopuszczalną impedancję.
- RCD - podaj rcdType + residualCurrent + ratedCurrent. Aplikacja ustawi typ RCD i policzy limity.
Gotowe wartości z bibliotek systemowych
Pola tekstowe protokołu mają gotowe podpowiedzi z bibliotek systemowych. Możesz wpisać własną wartość, ale użycie kanonicznej z listy jest spójne z tym, co widać w aplikacji. Pełne, aktualne listy znajdziesz w aplikacji w zakładce Biblioteki.
Rodzaje badań (protocol.data.inspectionType):
- Badanie okresowe
- Badanie odbiorcze
- Badanie po usterce / zgłoszeniu
- Badanie po remoncie
- Badanie po modernizacji
- Badanie po wymianie rozdzielnicy
- Badanie instalacji eksploatacyjne (5-letnie)
- Badanie pomieszczeń specjalnych (łazienka, basen, kuchnia)
Normy odniesienia (protocol.data.inspectionNorm):
- PN-HD 60364-6
- PN-HD 60364-4-41
- PN-EN 61557-1
- PN-IEC 60364-7-701
Podstawa prawna (protocol.data.legalBasis) - najczęstsze:
- Ustawa Prawo Budowlane art. 62 ust. 1 pkt 2 (kontrola okresowa)
- Ustawa Prawo Budowlane art. 62 ust. 1 pkt 1 lit. c
- Wniosek inwestora / zlecenie odbioru instalacji
Gotowe podpowiedzi mają też nazwy obwodów (measurement.itemName), rodzaje obiektów (protocol.object.name) oraz nazwy budynków i pięter (section.name).
Pełny przykład
{
"format": "protosmart-protocol",
"schemaVersion": 1,
"protocol": {
"type": "ELECTRICAL",
"protocolNumber": "E/01/2026",
"researchDate": "2026-07-15",
"data": { "inspectionNorm": "PN-HD 60364-6" },
"client": { "companyName": "Zakład X", "companyTaxId": "123-456-78-90" },
"object": { "name": "Hala A", "city": "Kraków", "networkSystem": "TN-S" },
"sections": [{ "type": "BUILDING", "name": "Budynek", "items": [
{ "type": "DISTRIBUTION_BOARD", "name": "Rozdzielnia RG", "sheets": [
{ "measurementType": "RCD", "data": { "networkSystem": "TN-S", "voltage": "230V" },
"measurements": [{ "itemName": "RCD-1", "data": {
"rcdType": "AC", "residualCurrent": 30, "ratedCurrent": 40,
"multiplier": "1", "measuredTime": 23, "measuredTrippingCurrent": 28, "rcdTestButton": "WORKED" } }] },
{ "measurementType": "IPZ_TN", "data": { "networkSystem": "TN-S", "voltage": "230/400V", "uo": 230 },
"measurements": [{ "itemName": "Obwód 1", "data": {
"fuseCharacteristic": "B", "ratedCurrent": 16, "measuredImpedance": 0.5,
"trippingTime": 0.4, "peContinuity": "YES" } }] }
]}
]}]
}
}Po imporcie
Protokół trafia na listę ze statusem W trakcie. Otwórz go w edytorze, sprawdź wartości i policzone wyniki, uzupełnij ewentualne braki, i dopiero wtedy finalizuj i wysyłaj. Odpowiedzialność za zgodność protokołu z badaniem zostaje po Twojej stronie - aplikacja tylko liczy i pilnuje formy.