0.0.2 • Published 2 years ago

zabbix-api-ts v0.0.2

Weekly downloads
-
License
MIT
Repository
-
Last release
2 years ago

This is a Zabbix API component to use with TypeScript.

The following API methods have been implemented:

The package was tested with Zabbix 5.4.

Examples:


Logging in and logging out

import { ZabbixAPI } from "zabbix-api-ts";

import dotenv from 'dotenv'

dotenv.config();

const main = async function() {

  // Initialize ZabbixAPI instance.
  const zabbix = new ZabbixAPI(process.env.zabbixURL!, process.env.zabbixUsername!, process.env.zabbixPassword!);

  // Login.
  const loginResult = await zabbix.login();
  if(loginResult.result) {

    // Logout.
    const logoutResult = await zabbix.logout();

    // Output logout response.
    console.log(logoutResult);
  }
}

main();

// Outputs:
//   {jsonrpc: '2.0', result: true, id: 4}

Retrieving hosts

import { ZabbixAPI } from "zabbix-api-ts";

import dotenv from 'dotenv'

dotenv.config();

const main = async function() {
  
  // Initialize ZabbixAPI instance.
  const zabbix = new ZabbixAPI(process.env.zabbixURL!, process.env.zabbixUsername!, process.env.zabbixPassword!);

  // Login.
  const loginResult = await zabbix.login();
  if(loginResult.result) {
    // Get all hosts, filter Arduino hosts.
    const arduinoHosts = (await zabbix.getHosts()).result
      .filter((el) => { return el.name.includes('Arduino'); })
        .map(el => { return el.name; });
    
    // Logout.
    await zabbix.logout();

    // Output results.
    console.log(arduinoHosts);
  }
}

main();

// Output:
//   (9) ['Arduino_09_307', 'Arduino_09_434' ... 'Arduino_09_432_B', 'Arduino_09_435']

Retrieving host items

import { ZabbixAPI } from "zabbix-api-ts";

import dotenv from 'dotenv'

dotenv.config();

const main = async function() {
  // Initialize ZabbixAPI instance.
  const zabbix = new ZabbixAPI(process.env.zabbixURL!, process.env.zabbixUsername!, process.env.zabbixPassword!);

  // Login.
  const loginResult = await zabbix.login();
  if(loginResult.result) {

    // Retrieve all hosts, filter ZigBee smart plug host.
    const smartPlug = (await zabbix.getHosts()).result
      .filter((el) => { return el.name.includes('ZigBee socket'); })[0];
    
    // Logout.
    await zabbix.logout();

    // Output results.
    console.log(smartPlug.name);
    for(const item of smartPlug.items.filter((el) => { return el.name.toLowerCase().includes('power (') })) {
      console.log(`  ${item.name}: ${item.lastvalue} ${item.units.replace('!', '')}`)
    }
  }
}

main();

// Output:
//   ZigBee socket JLT1 bffdb1768fdc36f6d0edsb
//     Power (bffdb1768fdc36f6d0edsb): 38
//     Cumulative power (bffdb1768fdc36f6d0edsb): 77.44

Retrieving host item history

import { ZabbixAPI } from "zabbix-api-ts";

import dotenv from 'dotenv'

dotenv.config();

const main = async function() {
  
  // Initialize ZabbixAPI instance.
  const zabbix = new ZabbixAPI(process.env.zabbixURL!, process.env.zabbixUsername!, process.env.zabbixPassword!);

  // Login.
  const loginResult = await zabbix.login();
  if(loginResult.result) {
    
    // Retrieve all hosts, filter ZigBee smart plug host.
    const smartPlug = (await zabbix.getHosts()).result
      .filter((el) => { return el.name.includes('ZigBee socket'); })[0];
    
    // Find first item related to power consumption.
    const item = smartPlug.items.filter((el) => { return el.name.includes('Power (') })[0];

    // Get current unix time.
    const unixTime = Math.round(new Date().getTime() / 1000);

    // Retrieve item history.
    const history = await zabbix.getHistory(
      [parseInt(item.itemid)],   // Unique item ID.
      parseInt(item.value_type), // Item value type (in this case - float).
      unixTime - 6000,           // Current time minus 6000 seconds.
      unixTime                   // Current time.
    );

    // Logout.
    await zabbix.logout();

    // Output results.
    console.log(smartPlug.name);
    for(const historyResult of history.result) {
      const time = new Date(Number(historyResult.clock) * 1000)
        .toLocaleDateString('lt-LT', { hour: '2-digit', minute: '2-digit', second: '2-digit', hour12: false});
      const value = `${historyResult.value} ${item.units.replace('!', '')}`
      console.log(`  ${time}: ${value}`)
    }
  }
}

main();

// Output:
//  ZigBee socket JLT1 bffdb1768fdc36f6d0edsb
//    2023-05-25 14:27:03: 47 W
//    2023-05-25 14:12:03: 46 W
//    2023-05-25 13:57:03: 47 W
//    2023-05-25 13:42:03: 50 W
//    2023-05-25 13:27:04: 44 W
//    2023-05-25 13:12:03: 51 W
//    2023-05-25 12:57:03: 42 W

0.0.2

2 years ago

0.0.1

2 years ago