Ad Widget

Collapse

Vyčítání hodnot z ze souboru

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • tomas.hofman@tiscali.cz
    Junior Member
    • May 2025
    • 5

    #1

    Vyčítání hodnot z ze souboru

    Vyčítání hodnot z ze souboru

    ZABBIX 7.0.11 na ROCKY linux 9.5

    Jsem v ZABBIXu nový a programování v jakémkoliv prostředí se musím doučit, základní vytváření skriptů celkem zvládám (*.sh, *.cmd atd.) Oceném jakoukoliv pomoc nebo návrh kudy směřovat další mé snažení.

    Ahoj mám problém s vyčítáním hodnot ze souboru. V souboru jsou na určitých pozicích hodnoty které potřebuji vyyčícts a převést funkcí na číslo. Umístění souboru "http://172.16.32.125/dataout.htm"
    Pozice v souboru 12,11,10,9 odeleno ;
    25;05;19;05;07;28;0067436943;SD5-MD1;000;000;000;000;000;061;229;096;066;059;003;01 8;111;069;183;032;164;069;240;229;236;069;163;146; 082;068;226;099;051;068;244;239;174;068;219;051;13 3;000;000;000;
    funkce
    "retVal=(new Float32Array(new Uint8Array([parseInt(dataArray[POS_PUDO+12]), parseInt(dataArray[POS_PUDO+11]), parseInt(dataArray[POS_PUDO+10]), parseInt(dataArray[POS_PUDO+9])]).buffer)[0])
    "
    V souboru je 9 sad těchto čísel. Jsou to hodnoty na jednotlivých fázích elektroměru L1,L2,L3 tyto hodnoty potřebuji vyčítat a ukládat.
    Jak toto nejefektivněji zařídit?

    HOST, Item (HTTP Agent),
    25;05;19;05;07;28;0067436943;SD5-MD1;000;000;000;000;000;061;229;096;066;059;003;01 8;111;069;183;032;164;069;240;229;236;069;163;146; 082;068;226;099;051;068;244;239;174;068;219;051;13 3;000;000;000;
    Click image for larger version

Name:	image.png
Views:	85
Size:	109.3 KB
ID:	503178


    Preprocessing (1. CSV to JSON), převod do JSON broběhne bez problémů
    [{"1":"25","2":"05","3":"19","4":"05","5":"07"," 6": "28","7":"0067436943","8":"SD5-MD1","9":"000","10":"000","11":"000","12":"000"," 1 3":"000","14":"061","15":"229","16":"096","17": "06 6","18":"059","19":"003","20":"018","21":"111", "22 ":"069","23":"183","24":"032","25":"164","26": "069 ","27":"240","28":"229","29":"236","30":"069", "31" :"163","32":"146","33":"082","34":"068","35":"2 26" ,"36":"099","37":"051","38":"068","39":"244","4 0": "239","41":"174","42":"068","43":"219","44":"0 51", "45":"133","46":"000","47":"000","48":"000","4 9":" "}]

    Preprocessing (2. JSONpath $..["13"].first()), včtení jedné hodnoty bez problémů
    000
    Click image for larger version

Name:	image.png
Views:	37
Size:	117.2 KB
ID:	503179
    Vyču pouze jednu hodnotu a další už neumím vyčíst.

    Otázka: Je vyčítání přes HTTP agenta správný postup? (čtení je někdy potřeba realizovat v 1 sec nebo 2 sec intervalech)
    Jak a včem provést zpracování vyčtených hodnot? "retVal=(new Float32Array(new Uint8Array([parseInt(dataArray[POS_PUDO+12]), parseInt(dataArray[POS_PUDO+11]), parseInt(dataArray[POS_PUDO+10]), parseInt(dataArray[POS_PUDO+9])]).buffer)[0])

    Je vhodné použít JavaScript?
    Pokud ano jak v JavaScriptu adresovat pozice v JSONpath?

    ​TH
  • tomas.hofman@tiscali.cz
    Junior Member
    • May 2025
    • 5

    #2
    Ahoj ve spolek.
    Problem je vyresen.

    Prikladam postup reseni.

    Prosim nekoho znaleho o posouzeni zvoleneho postupu vycitani. Potrebuje vedet zda tento postup je z pohledu delky (casu) zpracovani, ukladani hodnot do DB vhodny nebo zda je mozne pouzit efektivnejsi postup.
    ------------------
    Vycitani hodnot ze souboru v ZABBIXu

    Click image for larger version

Name:	zabbix00.jpg
Views:	35
Size:	178.6 KB
ID:	503317

    Click image for larger version

Name:	zabbix01.jpg
Views:	33
Size:	95.1 KB
ID:	503318

    Click image for larger version

Name:	zabbix02.jpg
Views:	33
Size:	97.3 KB
ID:	503319

    Click image for larger version

Name:	zabbix03.jpg
Views:	37
Size:	62.9 KB
ID:	503320
    Click image for larger version

Name:	zabbix04.jpg
Views:	31
Size:	80.7 KB
ID:	503321




    ---
    var bytes = value.split(';');

    var b0 = parseInt(bytes[9]);
    var b1 = parseInt(bytes[10]);
    var b2 = parseInt(bytes[11]);
    var b3 = parseInt(bytes[12]);

    var buffer = new ArrayBuffer(4);
    var uint8 = new Uint8Array(buffer);

    uint8[0] = b3;
    uint8[1] = b2;
    uint8[2] = b1;
    uint8[3] = b0;

    var view = new DataView(buffer);
    var result = view.getFloat32(0, true);

    return result;
    ---

    Dekuji predem za odpovedi. Tomas Hofman

    Comment

    • tomas.hofman@tiscali.cz
      Junior Member
      • May 2025
      • 5

      #3
      jeste poslledni 2 obrazky.

      Click image for larger version

Name:	zabbix05.jpg
Views:	33
Size:	41.8 KB
ID:	503323

      Click image for larger version

Name:	zabbix06.jpg
Views:	34
Size:	57.0 KB
ID:	503324

      Comment

      Working...