NAV Navbar
json

Úvod

Aplikace rfssmd slouží pro logování stavů, která mohou být odesílána z jednotlivých uzlů. Stavy jsou ukládány do PostgreeSQL databáze. V databázi pracuje nad několika tabulkami. Konfiguraci si načítá z konfigurační tabulky(sql) a umí vyčíst routovací tabulku (pouze reachable routy) z hraničního uzlu a tu poté uložit do tabulky(dojde tím k získání adres všech uzlů).

ID dotazu / odpovědi

Všechny dotazy mají optional parametr "requestId": "nejaka hodnota od nas", který se kopíruje bezezměny do odpovědi. Slouží k párování dotaz odpověď.

Přihlášení do systému

Po připojení k serveru je třeba provést jako první krok ověření uživatele. Odesílá se požadavek s logovacím jménem a přihlašovacím heslem. Zalogování je platné po dobu trvání spojení. Spojení identifikuje uživatele.

Login

dotaz:

{
  "kind":"rfssmd#login",
  "user":"login", [optional]
  "pass":"passwd", [optional]
  "token": "eyJhbG.eyJpZCI6=.FYeW6A=" [optional]
}

odpověď OK:

{
  "kind":"rfssmd#loginResponse",
  "result" : "Accepted",
  "token": "eyJhbG.eyJpZCI6=.FYeW6A="
}

odpověď chyba:

{
  "kind":"rfssmd#loginResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Logout

dotaz:

{
  "kind":"rfssmd#logout",
}

odpověď OK:

{
  "kind":"rfssmd#logoutResponse",
  "result" : "Accepted",
}

Onovení tokenu

dotaz:

{
  "kind":"rfssmd#renewLogin",
}

odpověď OK:

{
    "kind": "rfssmd#renewLoginResponse",
    "result": "Accepted",
    "token": "eyJhbG.eyJpZCI6=.FYeW6A="
}

Správa uživatelských účtů

Výpis uživatelů

Výpis uživatelů v systému.

Uživatele lze také specifikovat zadáním nekteré z jeho vlastností jako parametr.

dotaz:

{
  "kind":"rfssmd#listUsers", 
  "part":["user", "telephone"], 
  "page-size": 2, 
  "telephone": "+420732288366",
  "sort": { "id" : "asc" }
}

odpověď OK:

{
    "kind": "rfssmd#listUsersResponse",
    "result": "Accepted",
    "users": {
        "list": [
            {
                "id": 1,
                "telephone": "+420732288366",
                "user": "demo"
            }
        ],
        "list-count": 1,
        "page-number": 1,
        "page-size": 2,
        "total-count": 1
    }
}

odpověď chyba:

{
  "kind":"rfssmd#listUsersResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Parts / Filtry

Typ Description
id ID uživatel
user login uživatele
pass HASH hesla
lastseen čas posledního přihlášení uživatele
created čas vytvoření uživatele
updated čas aktualizace uživatele
firstname jméno
lastname přijmení
address adresa
city město
telephone telefon
telephone_secondary telefon
email email
contactid id kontaktu
contact_created čas vytvoření kontaktu
contact_updated čas úpravy kontaktu
gdpr souhlas s GDPR

Úprava uživatele

Modifikace parametrů uživatele. Parametry uvedené v json jsou upraveny, ostatní zůstávají nezměněny.

dotaz:

{
  "kind" : "rfssmd#modifyUser",
  "id" : 0, [optional]
  "user" : "login", [optional]
  "edit" : {
    "gdpr" : true,
    "user" : "login",
    "pass" : "passwd",
    "firstname" : "jmeno",
    "lastname" : "prijmeni",
    "address" : "adresa",
    "city" : "mesto",
    "telephone" : "telefon",
    "telephone_secondary" : "telefon",
    "email" : "email@email.cz"
  }
}

odpověď OK:

{
  "kind":"rfssmd#modifyUserResponse",
  "user":"login",
  "id" : id,
  "result" : "Accepted"
}

odpověď chyba:

{
  "kind":"rfssmd#modifyUserResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Parameters

Parameter Description
user string - pokud není specifikován provádí se editace na přilogovaném uživateli
id int - pokud není specifikováno provádí se editace na přilogovaném uživateli

Vytvoření uživatele

Vytvoření uživatele.

povinné parametry
user
pass
firstname
lastname
telephone
email

dotaz:

{
  "kind":"rfssmd#createUser",
  "user": {
    "user":"login",
    "pass":"passwd",
    "firstname":"jmeno",
    "lastname":"prijmeni",
    "address":"adresa",
    "street_no":"číslo popisné",
    "street":"ulice",
    "city":"mesto",
    "telephone":"telefon",
    "telephone_secondary":"telefon",
    "email":"email@email.cz"
  }
}

odpověď OK:

{
  "kind": "rfssmd#createUserResponse",
  "user": "login",
  "id": id,
  "contactid": cid, 
  "result" : "Accepted"
}

odpověď chyba:

{
  "kind":"rfssmd#createUserResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Smazání uživatele

Uzivatel specifikován pomocí parametru user nebo id. id má vyšší prioritu. Příkaz smaže i kontakt, pokud na něj není v DB další reference.

dotaz:

{
  "kind":"rfssmd#deleteUser",
  "user":"login" [optional],
  "id":"login" [optional]
}

odpověď OK:

{
  "kind": "rfssmd#deleteUserResponse",
  "user": "login",
  "id": id,
  "result" : "Accepted"
}

odpověď chyba:

{
  "kind": "rfssmd#deleteUserResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Uživatelská práva

Uživatelská práva umožňují nastavení přístupu jednotlivích uživatelů k uzlům a definují povolené oprace s nimi.

Typy práv

Typ Description Value
SUPERADMIN kompletní přístup - čtení i zápis nemá význam
SUPERVISOR kompletní přístup - pouze čtení nemá význam
GROUPADMIN přístup ke skupině kanalizací - čtení i zápis id skupiny / sewerage group
GROUPVISOR přístup ke skupině kanalizací - pouze čtení id skupiny / sewerage group
NODEADMIN přístup k uzlu - čtení i zápis id uzlu / jímky
NODEVISOR přístup k uzlu - pouze čtení id uzlu / jímky

Výpis typů práv

Dotaz vratí seznam práv s popisem a id.

dotaz:

{
  "kind":"rfssmd#privilegesDef"
}

odpověď OK:

{
  "kind":"rfssmd#privilegesDefResponse",
  "result" : "Accepted",
  "privileges" : [
      {
        "datatype": "string",
        "description": "kompletni pristup - cteni i zapis",
        "id": 1,
        "name": "SUPERADMIN"
      },

      ...  
  ]
}

odpověď chyba:

{
  "kind":"rfssmd#privilegesDefResponse",
  "result" : "Rejected",
  "error": {"code": 0, "message":"popis chyby"}
}

Výpis práv uživatele

Dotaz pro výpis práv daného uživatele.

dotaz:

{
  "kind" : "rfssmd#privilegesList",
  "user" : "login", [optional]
  "id" : 1 [optional]
}

odpověď OK:

{
  "kind":"rfssmd#privilegesListResponse",
  "result" : "Accepted",
  "user":"login",
  "id":id,
  "privileges": {
        "list": [
          {
            "datatype": "string",
            "description": "kompletni pristup - cteni i zapis",
            "id": 1,
            "name": "SUPERADMIN",
            "privilegetypeid": 1,
            "value": "full"
          },
         ...        
       ],
       "list-count" : 1
    }
}

odpověď chyba:

{
  "kind":"rfssmd#privilegesListResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Přiřazení práv

dotaz:

{
  "kind":"rfssmd#privilegeAppend",
  "id" : 0, [optional]
  "user": "login", [optional]
  "privilegeTypeID" : id,
  "privilegeValue" : "value"  
}

odpověď OK:

{
  "kind":"rfssmd#privilegeAppendResponse",
  "user":"login",
  "id":id,  
  "result" : "Accepted"
}

odpověď chyba:

{
  "kind":"rfssmd#privilegeAppendResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Odebrání práv

dotaz:

{
  "kind":"rfssmd#privilegeRemove",
  "id" : 0, [optional]
  "user":"login", [optional]
  "privilegeID" : id,
  "privilegeValue" : "value"  
}

odpověď OK:

{
  "kind":"rfssmd#privilegeRemoveResponse",
  "user":"login",
  "id":id,
  "result" : "Accepted"
}

odpověď chyba:

{
  "kind":"rfssmd#privilegeRemoveResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Editace práva

dotaz:

{
  "kind":"rfssmd#privilegeModify",
  "id" : 0, [optional]
  "user":"login", [optional]
  "privilegeID" : id,
  "privilegeValue" : "value",
  "privilegeNewValue" : "value"
}

odpověď OK:

{
  "kind":"rfssmd#privilegeModifyResponse",
  "user":"login",
  "id":id,  
  "result" : "Accepted"
}

odpověď chyba:

{
  "kind":"rfssmd#privilegeModifyResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Správa kontaktů

Výpis kontaktů

Výpis kontaktů vedených v systému.

dotaz:

{
  "kind": "rfssmd#contactsList", 
  "part":["firstname", "lastname", "address", "street_no", "street", "city", "telephone", 
          "telephone_secondary", "email", "contact_created", "contact_updated"],
  "contact_id" : 32 [optional]
}

odpověď OK:

{
    "contacts": {
        "list": [
            {
                "address": "adresa",
                "city": "mesto",
                "contact_created": "2019-04-14T10:51:50.000",
                "contact_id": 32,
                "contact_updated": "2019-04-14T10:51:50.000",
                "email": "email@email.cz",
                "firstname": "jmeno",
                "lastname": "prijmeni",
                "telephone": "telefon",
                "telephone_secondary": "contactsListtelefon"
            }
        ],
        "list-count": 1,
        "page-number": 1,
        "page-size": 10,
        "total-count": 1
    },
    "kind": "rfssmd#contactsListResponse",
    "result": "Accepted"
}

odpověď chyba:

{
  "kind":"rfssmd#contactsListResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Parts / Filtry

Typ Description
contact_id ID kontaktu
firstname jméno
lastname přijmení
address adresa
city město
telephone telefon
telephone_secondary telefon
email email
contact_created čas vytvoření kontaktu
contact_updated čas úpravy kontaktu

Úprava kontaktu

dotaz:

{
  "kind" : "rfssmd#contactModify",
  "contact_id" : 32,
  "edit" : {
    "firstname" : "jmeno",
    "lastname" : "prijmeni",
    "address" : "adresa",
    "street_no":"číslo popisné",
    "street":"ulice",    
    "city" : "mesto",
    "telephone" : "telefon",
    "telephone_secondary" : "telefon",
    "email" : "email@email.cz"
  }
}

odpověď OK:

{
  "kind":"rfssmd#contactModifyResponse",
  "result" : "Accepted"
}

odpověď chyba:

{
  "kind":"rfssmd#contactModifyResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Vytvoření kontaktu

povinné parametry
firstname
lastname
telephone
email

dotaz:

{
  "kind":"rfssmd#contactAppend",
  "contact": {
    "firstname":"jmeno",
    "lastname":"prijmeni",
    "address":"adresa",
    "street_no":"číslo popisné",
    "street":"ulice",    
    "city":"mesto",
    "telephone":"telefon",
    "telephone_secondary":"telefon",
    "email":"email@email.cz"
  }
}

odpověď OK:

{
  "kind": "rfssmd#contactAppendResponse",
  "contact_id": id,
  "result" : "Accepted"
}

odpověď chyba:

{
  "kind":"rfssmd#contactAppendResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Smazání kontaktu

Lze smazat pouze kontakty na které nejsou v databázi reference.

dotaz:

{
  "kind":"rfssmd#contactRemove",
  "contact_id":"login"
}

odpověď OK:

{
  "kind": "rfssmd#contactRemoveResponse",
  "result" : "Accepted"
}

odpověď chyba:

{
  "kind": "rfssmd#contactRemoveResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Správa segmentů

Segmenty reprezentují fyzickou vrstvu sítě, každý segment má jeden hraniční uzel na který se bezdrátově připojují další uzly v dotyčném segmentu.

Výpis segmentů

dotaz:

{ 
  "kind": "rfssmd#sewerageSegmentsList",
  "part":["segment_name", "segment_net_prefix"],
  "sort": { "segment_name" : "asc" }
}

odpověď OK:

{
    "kind": "rfssmd#sewerageSegmentsListResponse",
    "segments": { 
        "list" : [
          {
            "segment_id": 1,
            "segment_name": "PRESSKAN - DEMO PV",
            "segment_net_prefix" : "fddd:d0e6:2bf6::/64"            
          },
          ...
        ],
       "list-count":3
    },
  "result" : "Accepted"    
}

odpověď chyba:

{
  "kind":"rfssmd#sewerageSegmentsList",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Parts / Filtry

Name Description
segment_id ID segmentu
segment_name název segmentu
segment_encryption_key šifrovací klíč bezdrátové sítě segmentu
segment_net_prefix IPv6 prefix segmentu
segment_modbus_port TCP port MODBUS pro daný segment
segment_seweragegroupid ID existujicí skupiny do které segment patří
segment_bordernodeid ID existujicího uzlu který je hraničním uzlem v daném segmentu

Přidání segmentu

dotaz:

{ 
  "kind": "rfssmd#sewerageSegmentAppend",
  "segment" :
    {
      "segment_name" : "název segmentu",
      "segment_encryption_key" : "klíč pro šifrování sítě",
      "segment_net_prefix" : "IPv6 prefix sítě",
      "segment_modbus_port" : 10150,
      "segment_seweragegroupid" : 3,
      "segment_bordernodeid" : 55
    },
   "node" : [soucasne vlozeni hranicniho uzlu]
   {
   [parametry jako pro pridani uzlu]
   }
}

odpověď OK:

{
  "kind" : "rfssmd#sewerageSegmentAppendResponse",
  "segment_id" : 4, 
  "result" : "Accepted" 
}

odpověď chyba:

{
  "kind":"rfssmd#sewerageSegmentAppendResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Smazání segmentu

dotaz:

{ 
  "kind": "rfssmd#sewerageSegmentRemove",
  "segment_name" : "nazev segmentu", [optional]
  "segment_id" : id [optional]
}

odpověď OK:

{
  "kind" : "rfssmd#sewerageSegmentRemoveResponse",
  "segment_id" : 4, 
  "result" : "Accepted" 
}

odpověď chyba:

{
  "kind":"rfssmd#sewerageSegmentRemoveResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Editace segmentu

dotaz:

{ 
  "kind" : "rfssmd#sewerageSegmentModify",
  "segment_name" : "nazev segmentu", [optional]
  "segment_id" : id, [optional]
  "edit" : {
    "segment_name" : "novy nazev",
  }  
}

odpověď OK:

{
  "kind" : "rfssmd#sewerageSegmentModifyResponse",
  "result" : "Accepted" 
}

odpověď chyba:

{
  "kind":"rfssmd#sewerageSegmentModifyResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Správa skupin

Skupiny reprezentují instalaci kanalizace v dané lokalitě, každá skupina může mít N segmentů.

Výpis skupin

dotaz:

{ 
  "kind" : "rfssmd#sewerageGroupsList",
  "part" : ["sewerage_group_name", "contactids"],
  "sort": { "sewerage_group" : "asc" }
}

odpověď OK:

{
    "kind": "rfssmd#sewerageGroupsListResponse",
    "groups": { 
        "list" : [
          {
            "sewerage_group": 1,
            "sewerage_group_name": "Zruč nad Sázavou - ulice Nábřežní",
            "contactids": [cid1, cid2]
          },
          {
            "sewerage_group": 2,
            "sewerage_group_name": "Zbraslavice - lokalita u letiště",
            "contactids": [cid1]
          },
          {
            "sewerage_group": 3,
            "sewerage_group_name": "PRESSKAN - DEMO",
            "contactids": [cid4, cid7]          
          }          
        ],
        "list-count": 3,
        "page-number": 1,
        "page-size": 10,
        "total-count": 3
    },
    "result" : "Accepted"    
}

odpověď chyba:

{
  "kind":"rfssmd#sewerageGroupsListResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Parts / Filtry

Name Description
sewerage_group ID skupiny
sewerage_group_name název skupiny

Přidání skupiny

dotaz:

{ 
  "kind": "rfssmd#sewerageGroupAppend",
  "group" :
    {
      "sewerage_group_name": "nazev skupiny",
      "contactids": [cid1, cid2], [optional]
    }
}

odpověď OK:

{
  "kind" : "rfssmd#sewerageGroupAppendResponse",
  "id" : 4, 
  "result" : "Accepted" 
}

odpověď chyba:

{
  "kind":"rfssmd#sewerageGroupAppendResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Smazání skupiny

dotaz:

{ 
  "kind" : "rfssmd#sewerageGroupRemove",
  "sewerage_group_name" : "nazev skupiny", [optional]
  "sewerage_group" : id, [optional]
}

odpověď OK:

{
  "kind" : "rfssmd#sewerageGroupRemoveResponse",
  "result" : "Accepted" 
}

odpověď chyba:

{
  "kind":"rfssmd#sewerageGroupRemoveResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Editace skupiny

dotaz:

{ 
  "kind" : "rfssmd#sewerageGroupModify",
  "sewerage_group_name" : "nazev skupiny", [optional]
  "sewerage_group" : id, [optional]
  "edit" : {
    "sewerage_group_name" : "novy nazev",
    "contactids": [cid1, cid2], [optional - nahradí stávající seznam kontaktů] 
  }  
}

odpověď OK:

{
  "kind" : "rfssmd#sewerageGroupModifyResponse",
  "result" : "Accepted" 
}

odpověď chyba:

{
  "kind":"rfssmd#sewerageGroupModifyResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Správa topologických skupin

Topologické skupiny reprezentují propojení uzlů kanalizačnímy trubkami nezávisle na bezdrátovém propojení uzlů.

Výpis topologických skupin

dotaz:

{ 
  "kind" : "rfssmd#topologyGroupsList",
  "part" : ["topology_group_name", "nodes"],
  "sort": { "topology_group" : "asc" }
}

odpověď OK:

{
    "kind": "rfssmd#topologyGroupsListResponse",
    "groups": { 
        "list" : [
          {
            "topology_group": 1,
            "topology_group_name": "Zruč nad Sázavou - ulice Nábřežní",
            "nodes":[]
          },
          {
            "topology_group": 2,
            "topology_group_name": "Zbraslavice - lokalita u letiště",
            "nodes":[]
          },
          {
            "topology_group": 3,
            "topology_group_name": "PRESSKAN - DEMO",
            "nodes":[]
          }          
        ],
        "list-count": 3,
        "page-number": 1,
        "page-size": 10,
        "total-count": 3
    },
    "result" : "Accepted"    
}

odpověď chyba:

{
  "kind":"rfssmd#topologyGroupsListResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Parts / Filtry

Name Description
topology_group ID skupiny
topology_group_name název skupiny

Přidání topologické skupiny

dotaz:

{ 
  "kind": "rfssmd#topologyGroupAppend",
  "group" :
    {
      "topology_group_name": "nazev skupiny",
      "nodes": [1,5,12] [optional]
    }
}

odpověď OK:

{
  "kind" : "rfssmd#topologyGroupAppendResponse",
  "id" : 4, 
  "result" : "Accepted" 
}

odpověď chyba:

{
  "kind":"rfssmd#topologyGroupAppendResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Smazání topologické skupiny

dotaz:

{ 
  "kind" : "rfssmd#topologyGroupRemove",
  "topology_group_name" : "nazev skupiny", [optional]
  "topology_group" : id, [optional]
}

odpověď OK:

{
  "kind" : "rfssmd#topologyGroupRemoveResponse",
  "result" : "Accepted" 
}

odpověď chyba:

{
  "kind":"rfssmd#topologyGroupRemoveResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Editace topologické skupiny

dotaz:

{ 
  "kind" : "rfssmd#topologyGroupModify",
  "topology_group_name" : "nazev skupiny", [optional]
  "topology_group" : id, [optional]
  "edit" : {
    "topology_group_name" : "novy nazev",
    "nodes":[]
  }  
}

odpověď OK:

{
  "kind" : "rfssmd#topologyGroupModifyResponse",
  "result" : "Accepted" 
}

odpověď chyba:

{
  "kind":"rfssmd#topologyGroupModifyResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Správa uzlů

Výpis uzlů

Generování seznamů uzlů rfssmd#nodesList.

Uzly lze specifikovat jako pole nodes/segments/sewerage_groups/topology_groups nebo jejich kombinace.

dotaz:

{ 
  "kind": "rfssmd#nodesList",
  "nodes": [8, 11], [optional]
  "part": [ "gps_lat", "gps_long", "identification_sump", "online", "identification_street", "identification_street_no" ], [optional]
  "online": true, [optional]
  "sort": { "id" : "asc" }, [optional]
  "sort": [{ "id1" : "asc" }, { "id2" : "desc" }] [optional]
}

odpověď OK:

{
    "kind": "rfssmd#nodesListResponse",
    "nodes": {
        "list": [
            {
                "gps_lat": 49.7422506,
                "gps_long": 15.1047783,
                "id": 11,
                "identification_sump": "Zruč, č. p. 176",
                "online": false
            },
            {
                "gps_lat": 49.7434447,
                "gps_long": 15.1060578,
                "id": 8,
                "identification_sump": "Zruč, č. p. 115",
                "online": false
            }
        ],
        "list-count": 2,
        "page-number": 1,
        "page-size": 10,
        "total-count": 2
    },
    "result": "Accepted"
}

odpověď chyba:

{
  "kind":"rfssmd#nodesListResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Parts / Filtry

Name Description
id id uzlu
mac_address mac adresa uzlu
identification_sump libovolný indentifikační text
identification_street ulice umístění
identification_street_no číslo popisné/evidenční/parcela
gps_lat gps - zeměpisná šířka
gps_long gps - zeměpisná délka
note poznámka
accessible je jínka přístupná bez domluvy
modbus MODBUS ID pro napojení na SCADA
alm_power signalizovaný alarm výpadku sítě
alm_watchdog stav watchdogu uzlu
alm_level_emergency 1 - signalizuje dosažení hladiny havarijním plovákem
alm_pump_starteroff 1 - signalizuje vypadek motorového spouštěče
alm_sump 1 - otevření krytu šachty
stat_pump_run 1 - běží čerpadlo
stat_cnt_pump_start počet čerpání
stat_cnt_pump_hours doba běhu sekundy
stat_cnt_pump_kwh odhad spotřebované energie kWh
stat_cnt_pump_m3 odhad odčerpaného množství
stat_ver_fw verze spuštěného FW
stat_ver_hw verze HW
stat_ver_boot_bootloaer verze zavaděče
stat_ver_boot_fw1 verze FW1
stat_ver_boot_fw2 verze FW2
stat_ver_boot_run který FW běží - 1 nebo 2
stat_ver_boot_fw1_nok 0 pokud je FW1 OK
stat_ver_boot_fw2_nok 0 pokud je FW2 OK
stat_freqoffset ofset frekvence vysílače
stat_default_route poslední IPv6 defaultní routa uzlu
online stav uzlu true=online
pumped_at čas posledního čerpaní
last_seen čas poslední aktivity uzlu
set_pump_switchinginterval vrací interval periodického spínání v minutách
set_pump_switchingtimes JSON řetězec s aktuálním nastavením spínacích intervalů
set_pump_block_startup čas blokace čerpadla po spuštění zařízení (např. po výpadku el) v sekundách.
set_pump_block_retent 1 - trvalá blokace čerpání (pokud čerpání nespustí plovák)
nodes pole ID uzlů které chceme vypsat
failure false - výpis pouze uzlů bez chyby, true - výpis pouze uzlů indikujících chybu

Přidání uzlu

povinné parametry
mac_address
identification_sump
gps_lat
gps_long
note
accessible
modbus
segment_id
contactid

dotaz:

{ 
  "kind": "rfssmd#nodeAppend",
  "node": {
    "unregisteredid": 5, [optional - lze zadat místo MAC - ID neregistrovaného uzlu ze seznamu neregistrovaných uzlů]
    "mac_address": "00:12:4B:00:89:AB:00:3D",
    "identification_sump": "Zruč, č. p. 72",  
    "gps_lat": 49.7431503, 
    "gps_long": 15.1062364, 
    "note":"poznámka",
    "accessible": 1,
    "modbus": id,
    "segment_id": sid,
    "contactid": cid
    }
}

odpověď OK:

{
  "kind":"rfssmd#nodeAppendResponse",
  "id":nodeid,  
  "result" : "Accepted"
}

odpověď chyba:

{
  "kind":"rfssmd#nodeAppendResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Smazání uzlu

dotaz:

{ 
  "kind": "rfssmd#nodeRemove",  
  "id": nodeid
}

odpověď OK:

{
  "kind":"rfssmd#nodeRemoveResponse",
  "result" : "Accepted"
}

odpověď chyba:

{
  "kind":"rfssmd#nodeRemoveResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Editace uzlu

dotaz:

{ 
  "kind": "rfssmd#nodeModify",  
  "id": nodeid,
  "edit":
  {
    "mac_address": "00:12:4B:00:89:AB:00:3D", [optional]
    "identification_sump": "Zruč, č. p. 72", [optional]
    "gps_lat": 49.7431503, [optional]
    "gps_long": 15.1062364, [optional]
    "note":"poznámka", [optional]
    "accessible": 1, [optional]
    "modbus": id,  [optional]
    "contactid": cid [optional]
  }
}

odpověď OK:

{
  "kind":"rfssmd#nodeModifyResponse",
  "result" : "Accepted"
}

odpověď chyba:

{
  "kind":"rfssmd#nodeModifyResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Edit

Name Description
id id uzlu
mac_address mac adresa uzlu
identification_sump indentifikační text
gps_lat gps - zeměpisná šířka
gps_long gps - zeměpisná délka
note poznámka
accessible je jínka přístupná bez domluvy
modbus MODBUS ID pro napojení na SCADA
segment_id ID segmentu ke kterému uzel patří

Výpis neregistrovaných uzlů

dotaz:

{ 
  "kind": "rfssmd#nodesUnregList", 
  "part": ["mac_address", "segmentid"]
}

odpověď OK:

{
    "kind": "rfssmd#nodesUnregListResponse",
    "nodes": {
        "list": [
            {
                "id": 1,
                "mac_address": "00:12:4B:00:89:AB:01:36",
                "segmentid": 5
            },
            {
                "id": 2,
                "mac_address": "00:12:4B:00:89:AB:01:38",
                "segmentid": 5
            }
        ],
        "list-count": 5,
        "page-number": 1,
        "page-size": 5,
        "total-count": 5
    },
    "result": "Accepted"
}

Smazání neregistrovaných uzlů

dotaz:

{ 
  "kind": "rfssmd#nodeUnregRemove", 
  "id": 5
}

odpověď OK:

{
    "kind": "rfssmd#nodeUnregRemoveResponse",
    "result": "Accepted"
}

Výpis logů

Výpis logů uzlů rfssmd#logList.

dotaz:

{ 
  "kind": "rfssmd#logList", 
  "sewerage_group": 1, [optional]
  "part":["identification_sump", "log_value"], [optional]
  "sort": { "log_created_at" : "asc" }, [optional]
  "page-size":2, [optional]
  "page-number": 1, [optional]
}

odpověď OK:

{
  "kind":"rfssmd#logListResponse",
  "logs": {
        "list": [
            {
                "id": 1,
                "identification_sump": "Zruč, č. p. 72",
                "log_value": "default GW node 2a01:490:24:300:ce2d:e009:4c8e:20 does not exists yet"
            },
            {
                "id": 1,
                "identification_sump": "Zruč, č. p. 72",
                "log_value": "Created"
            }
        ],
        "list-count": 2,
        "page-number": 1,
        "page-size": 2,
        "total-count": 3877
    },
  "result" : "Accepted"  
}

odpověď chyba:

{
  "kind":"rfssmd#logListResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Parts / Filtry

Name Description
id id uzlu
mac_address mac adresa uzlu
identification_sump indentifikační text
gps_lat gps - zeměpisná šířka
gps_long gps - zeměpisná délka
note poznámka
accessible je jínka přístupná bez domluvy
modbus MODBUS ID pro napojení na SCADA
log_value hodnota logu
log_created_at čas vytvoření
log_name název typu logu
log_type datový typ logu
log_description popis typu logu
segment_id ID segmentu
segment_name název segmentu
segment_encryption_key šifrovací klíč bezdrátové sítě segmentu
segment_net_prefix IPv6 prefix segmentu
segment_modbus_port TCP port MODBUS pro daný segment
sewerage_group ID skupiny
sewerage_group_name název skupiny

Správa instalovaného HW uzlů

Výpis použitelných typů HW

Vypíše seznam definovaných typů HW.

dotaz:

{ 
  "kind": "rfssmd#nodeHWDef"
}

odpověď OK:

{
  "kind":"rfssmd#nodeHWDefResponse",
  "result" : "Accepted",
  "hardware_types" : [
      {
        "hwdescription": "vřetenové čerpadlo s příkonem 1,1 kW",
        "id": 1,
        "hwname": "Čerpadlo"
      },
      ...  
  ]
}

odpověď chyba:

{
  "kind":"rfssmd#nodeHWDefResponse",
  "result" : "Rejected",
  "error": {"code": 0, "message":"popis chyby"}
}

Výpis HW

Vypíše seznam instalovaného HW na daném uzlu.

dotaz:

{ 
  "kind": "rfssmd#nodeHWList",
  "node": 5

}

odpověď OK:

{
  "kind":"rfssmd#nodeHWListResponse",
  "result" : "Accepted",
  "hardware" : [
      {
        "hwid": 1,
        "hwtypeid": 3,
        "hwdescription": "vřetenové čerpadlo s příkonem 1,1 kW",
        "hwname": "Čerpadlo",
        "hwserial":"N38PWM",
      },

      ...  
  ]
}

odpověď chyba:

{
  "kind":"rfssmd#nodeHWListResponse",
  "result" : "Rejected",
  "error": {"code": 0, "message":"popis chyby"}
}

Přidání HW

Přidání HW k uzlu "hwtype" je hodnota id z "rfssmd#nodeHWDef"

dotaz:

{ 
  "kind": "rfssmd#nodeHWAppend",
  "node": 5,
  "hardware" :
    {
      "hwtype" : 2,  [hodnota id z "rfssmd#nodeHWDef"]
      "hwserial" : "N38PWM"
    }

}

odpověď OK:

{
  "kind":"rfssmd#nodeHWAppendResponse",
  "result" : "Accepted"      
}

odpověď chyba:

{
  "kind":"rfssmd#nodeHWAppendResponse",
  "result" : "Rejected",
  "error": {"code": 0, "message":"popis chyby"}
}

Smazání HW

dotaz:

{ 
  "kind": "rfssmd#nodeHWRemove",  
  "hwid": 33
}

odpověď OK:

{
  "kind":"rfssmd#nodeHWRemoveResponse",
  "result" : "Accepted"
}

odpověď chyba:

{
  "kind":"rfssmd#nodeHWRemoveResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Editace HW

dotaz:

{ 
  "kind": "rfssmd#nodeHWModify",
  "hwid": 33, [hodnota hwid z rfssmd#nodeHWListResponse]
  "edit" :
    {
      "hwtype" : 2,  [hodnota hwtypeid z "rfssmd#nodeHWDef"]
      "hwserial" : "N38PWM"
    }

}

odpověď OK:

{
  "kind":"rfssmd#nodeHWModifyResponse",
  "result" : "Accepted"      
}

odpověď chyba:

{
  "kind":"rfssmd#nodeHWModifyResponse",
  "result" : "Rejected",
  "error": {"code": 0, "message":"popis chyby"}
}

Statistická data

Postupně doplním co vymyslíme.

Objekt "data" specifikuje výběr dat. Zatím funguje pouze načtení dat z logu spuštění čerpadel - pump_start_log.

Objekt "graph" říká jak se mají daza zpracovat, zatím umím pouze histogram.

Vzorový příklad spočítá histogram počtu spuštění čerpadla v intervalech "bins" v časovém rozsahu "range".

Uzly lze specifikovat jako pole nodes/segments/sewerage_groups/topology_groups nebo jejich kombinace.

Name Description
pump_start_log spouštění čerpadla během dne
pump_start_inc přírůstky počtu čerpání během dne - má smyl specifikovat pouze jeden uzel
pump_hours_inc přírůstky času čerpání během dne - má smyl specifikovat pouze jeden uzel

dotaz:

{ 
  "kind": "rfssmd#statistics",
  "graph" : { 
    "type":"histogram",
    "bins" : 7
  },
  "data": {
    "source": "pump_start_log",
    "range": {"from":"2019-01-01 00:00:01", "to":"2019-03-31 00:00:01"},
    "nodes" : [1,5,12]
  }
}

odpověď:

{
    "kind": "rfssmd#statisticsResponse",
    "data": [1,2,3,4,5],
    "result": "Accepted"    
}

odpověď chyba:

{
  "kind":"rfssmd#statisticsResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Ovládání uzlů - přímý asynchronní přístup k HW

Přímý přístup k registrům uzlů, čtení a zápis může nějakou dobu trvat podle vytížení sítě.

Name Type Description
SET_PUMP_BLOCK_RETEN (uint8) povoleno Zablokuje - odblokuje spouštění čerpadla a uloží do retenční paměti. (čerpadlo se může i tak spustit plovákem)
SET_PUMP_BLOCK_STARTUP (uint16) čas Zablokuje spuštění čerpadla po zapnutí na zadaný čas. V sekundách.
SET_PUMP_SWITCHINGINTERVAL (uint16) čas Nastaví spouštění čerpadla po zadaném čase. V minutách.
SET_PUMP_SWITCHINGTIMES (uint8) počet aktivních časů, ((uint16)*2)*9 od-do Povolení spouštění čerpadla v zadaných časech. V minutách od začátku dne. V případě od>do se připočítává jeden den.

Čtení z registrů uzlů

dotaz:

{ 
  "kind": "rfssmd#nodeGet",
  "nodes": [11],  
  "part":["SET_PUMP_BLOCK_STARTUP", "SET_PUMP_BLOCK_RETEN", "SET_PUMP_SWITCHINGINTERVAL", "SET_PUMP_SWITCHINGTIMES"]
}

odpověď:

{
    "kind": "rfssmd#nodeGetResponse",
    "nodes": {
        "list": [
            {
                "SET_PUMP_BLOCK_RETEN": 0,
                "SET_PUMP_BLOCK_STARTUP": 0,
                "SET_PUMP_SWITCHINGINTERVAL": 0,
                "SET_PUMP_SWITCHINGTIMES": {
                    "active": 1, [počet aktivních časů, 0 = časovače vypnuty]
                    "begins": [
                        10       [počátek intervalu]
                    ],
                    "ends": [
                        15       [konec intervalu]
                    ]
                },
                "id": 11
            }        ],
        "list-count": 1,
    },
    "result": "Accepted"    
}

odpověď chyba:

{
  "kind":"rfssmd#nodeGetResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Zápis do registrů uzlů

dotaz:

{ 
  "kind": "rfssmd#nodeSet",
  "nodes": [23],
  "part": [
    {"SET_PUMP_BLOCK_STARTUP": 5}, 
    { "SET_PUMP_SWITCHINGTIMES":{
        "active":1,
        "begins":[10], 
        "ends":[15]
        }
    }
  ]
}

odpověď:

{
    "kind": "rfssmd#nodeSetResponse",
    "nodes": {
        "list": [
            {
                "SET_PUMP_BLOCK_STARTUP": "ACCEPTED",
                "SET_PUMP_SWITCHINGTIMES": "ACCEPTED",
                "id": 23
            }
        ],
        "list-count": 1
    },
    "result": "Accepted"
}

odpověď chyba:

{
  "kind":"rfssmd#nodeSetResponse",
  "result" : "Rejected",
  "error":  {"code": 0, "message":"popis chyby"}
}

Seznam registů uzlů

Výpis seznamu podporovaných parametrů pro parametr "part" příkazu nodeGet/nodeSet.

dotaz:

{
  "kind": "rfssmd#nodeProps"
}

odpověď:

{
    "kind": "rfssmd#nodeProps",
    "props": [
        "STAT_INPUT32 (READ)",
        "STAT_OUTPUT32 (READ)",
        "STAT_ANALOG_IN1_VAL (READ)",
        "STAT_ANALOG_OUT1_VAL (READ)",
        "STAT_TEMP_INNER (READ)",
        "STAT_TEMP_PUMP (READ)",
        "STAT_PUMP_RUN (READ)",
        "STAT_CNT_PUMP_START (READ)",
        "STAT_CNT_PUMP_HOURS (READ)",
        "STAT_CNT_PWRCONSUMP (READ)",
        "STAT_CNT_WATERVOL (READ)",
        "STAT_CNT_FAULT (READ)",
        "STAT_VER_FW (READ)",
        "STAT_VER_HW (READ)",
        "STAT_VER_BOOT (READ)",
        "STAT_DEFAULT_ROUTE (READ)",
        "SET_PUMP_WATTAGE (READ/WRITE)",
        "SET_PUMP_FLOW (READ/WRITE)",
        "SET_PUMP_MAXTEMP (READ/WRITE)",
        "SET_PUMP_OKTEMP (READ/WRITE)",
        "SET_PUMP_BLOCK_RETEN (READ/WRITE)",
        "SET_PUMP_SWITCHINGINTERVAL (READ/WRITE)",
        "SET_PUMP_BLOCK_STARTUP (READ/WRITE)",
        "SET_ALM_POWER (READ/WRITE)",
        "SET_ALM_SUMP (READ/WRITE)",
        "SET_ALM_LEVEL_EMERGENCY (READ/WRITE)",
        "SET_ALM_PUMP_OVERHEAT (READ/WRITE)",
        "SET_ALM_PUMP_STARTEROFF (READ/WRITE)",
        "SET_ALM_LEVEL_HIGH (READ/WRITE)",
        "SET_ALM_PUMP (READ/WRITE)",
        "SET_DATETIME (READ/WRITE)",
        "SET_PUMP_SWITCHINGTIMES (READ/WRITE)",
        "SET_ALM_NEIGH (READ/WRITE)",
        "SET_ALM_DEFAULT_ROUTE (READ/WRITE)",
        "SET_ALM_INPUT32 (READ/WRITE)",
        "SET_ALM_OUTPUT32 (READ/WRITE)",
        "SET_ALM_SETTINGS_CHANGED (READ/WRITE)",
        "SET_ALM_ANALOG_IN1_CHANGE (READ/WRITE)",
        "SET_ALM_ANALOG_OUT1_CHANGE (READ/WRITE)",
        "SET_ALM_ANALOG_IN1_CHANGE_P (READ/WRITE)",
        "SET_ALM_ANALOG_IN1_CHANGE_D (READ/WRITE)",
        "SET_RF_CHANNEL (READ/WRITE)",
        "SET_USR_VALUE0 (READ/WRITE)",
        "SET_USR_VALUE1 (READ/WRITE)",
        "SET_USR_VALUE2 (READ/WRITE)",
        "SET_USR_VALUE3 (READ/WRITE)",
        "SET_USR_VALUE4 (READ/WRITE)",
        "CMD_PUMP_START (WRITE)",
        "CMD_CONDUIT_WFLUSH (WRITE)",
        "CMD_CNTRST_PUMP_START (WRITE)",
        "CMD_CNTRST_PUMP_HOURS (WRITE)",
        "CMD_CNTRST_PWRCONSUMP (WRITE)",
        "CMD_CNTRST_WATERVOL (WRITE)",
        "CMD_PUMP_BLOCK (WRITE)",
        "CMD_OUTPUT_HIGH (WRITE)",
        "CMD_OUTPUT_LOW (WRITE)",
        "CMD_OUTPUT_VAL (WRITE)",
        "CMD_RESTART (WRITE)",
        "FW_GO_TO_UPDATE_MODE (WRITE)",
        "FW_UPLOAD (WRITE)"
    ]
}

Seznam alarmů

Všechny alarmy vycházejí ze základního formátu

základní formát:

{
    "ALARM": {
        "TYPE": "ALM_DEFAULT_ROUTE",
        "timestamp": "2020-10-26T11:32:20",
        "value":  [hodnota nebo struktura]
    },
    "kind": "rfssmd#alarm",
    "level": 1,  [0 - základní alarmy, 1 - rozšířene]
    "nodeid": 3 
}

Parametr value je odvislý od typu alarmu.

TYPE VALUE popis
ALM_DEFAULT_ROUTE { "IP": "fddd:d0e6:2bf6:1e34:5d96:a5b4:12:4b00" } ip adresa uzlu přes který je tento uzel komunikuje
ALM_DEFAULT_ROUTE_V2 { "IP": "fddd:d0e6:2bf6:1e34:5d96:a5b4:12:4b00", "quality": 0, "rssi": -10 } ip adresa uzlu přes který je tento uzel komunikuje, kvalita linky, uroveň signálu
ALM_DEFAULT_ROUTE { "IP": "fddd:d0e6:2bf6:1e34:5d96:a5b4:12:4b00" } ip adresa uzlu přes který je tento uzel komunikuje
ALM_POWER 0/1 1 - napájení je v pořádku, 0 - došlo k výpadku
ALM_PUMP 0/1 1 - čerpání zahájeno, 0 - čerpání ukončeno
ALM_PUMP_V2 { "RUN": 0, "starts": 5,"secs": 100} 1 - čerpání zahájeno, 0 - čerpání ukončeno, starts - pocet startů, secs - doba běhu
ALM_PUMP_STARTEROFF 0/1 1 - motorový chránič vypadl, 0 - OK
ALM_LEVEL_EMERGENCY 0/1 1 - havarijní hladina, 0 - OK

Errors

The Kittn API uses the following error codes:

Error Code Meaning
400 Bad Request -- Your request is invalid.
401 Unauthorized -- Your API key is wrong.
403 Forbidden -- The kitten requested is hidden for administrators only.
404 Not Found -- The specified kitten could not be found.
405 Method Not Allowed -- You tried to access a kitten with an invalid method.
406 Not Acceptable -- You requested a format that isn't json.
410 Gone -- The kitten requested has been removed from our servers.
418 I'm a teapot.
429 Too Many Requests -- You're requesting too many kittens! Slow down!
500 Internal Server Error -- We had a problem with our server. Try again later.
503 Service Unavailable -- We're temporarily offline for maintenance. Please try again later.