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.

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.*)RodzajJednostkaWartości
data.rcdTypepodaj (klucz RCD)AC, A, F, B, B+, S
data.residualCurrentpodaj (klucz RCD)mA
data.ratedCurrentpodaj (klucz RCD)A
data.multiplierwybór0.5, 1, 2, 5
data.measuredTimeliczbams
data.measuredTrippingCurrentliczbamA
data.rcdTestButtonwybórWORKED, NOT_WORKED
data.rcdTypeIdustawiane z klucza

IPZ_TN (pętla zwarcia TN)

Pole (data.*)RodzajJednostkaWartości
data.fuseCharacteristicpodaj (klucz bezp.)B, C, D, K, Z, gG, gL
data.ratedCurrentpodaj (klucz bezp.)A
data.measuredImpedanceliczbaΩ
data.trippingTimewybórs0.2, 0.4, 1, 5
data.peContinuitywybórYES, NO, NOT_TESTED
data.polaritywybórYES, NO, NOT_TESTED
data.crossSectionLive / crossSectionPewybórmm²1, 1.5, 2.5, 4, 6, 10, 16, 25, 35, 50
data.fuseId + pola obliczaneustawiane / 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

protokol.json
{
  "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.