zabbix-api-ts
v0.0.2
Published
TypeScript module for working with the Zabbix API
Downloads
2
Readme
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