1.0.2 • Published 1 year ago

@lukesthl/fritzbox v1.0.2

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

@lukesthl/fritzbox

npm package Build Status Downloads Issues Code Coverage Commitizen Friendly Semantic Release

A library for accessing a AVM Fritz!Box via TR-064 and HTTP API.

Features

Install

npm install @lukesthl/fritzbox

Usage

import { FritzBox } from '@lukesthl/fritzbox';

const fritzbox = new FritzBox({
  username: FRITZBOX_USERNAME,
  password: FRITZBOX_PASSWORD,
});

const deviceInfo = await fritzbox.deviceInfo.getInfo();

console.log(deviceInfo.NewHardwareVersion); // FRITZ!Box 7590 (UI)

API

FritzBox

username

Type: string

password

Type: string

host (optional, default = fritz.box)

Type: string

port (optional, default = 49000)

Type: number

ssl (optional, default = false)

Type: boolean

tr064 (optional, default = true)

Type: boolean

DeviceInfo

Official Doc

Router Information, Device Logs, TR-069 Provisioning Code, Security Port

const deviceInfo = await fritzbox.deviceInfo.getInfo();

const deviceLog = await fritzbox.deviceInfo.getDeviceLog();

const securityPort = await fritzbox.deviceInfo.getSecurityPort();

await fritzbox.deviceInfo.setProvisioningCode({
  NewProvisioningCode: '123',
});

LanDeviceHosts

Official Doc

Network Devices

const hostListPath = await fritzbox.lanDeviceHosts.getHostListPath();

const hosts = await fritzbox.lanDeviceHosts.getHosts();
// Host {
//   mac: string;
//   ip: string;
//   active: boolean;
//   name: string;
//   interface: string;
// }[]

DeviceConfig

Official Doc

Get SID, Reboot

// for cached Sid use fritzbox.getSid();
const urlSidResponse = await fritzbox.deviceConfig.getUrlSID();

await fritzbox.deviceConfig.reboot();

Custom TR-064 Commands

const response = await fritzBox.exec<MyInterface>({
  serviceId: 'urn:DeviceConfig-com:serviceId:DeviceConfig1',
  actionName: 'Reboot',
});

Home Automation

Official Doc

SmartHome Devices / Stats

const { devices, deviceGroups } = await fritzBox.smartHome.getDevices();

const deviceStats =
  await fritzBox.homeautomation.deviceStats.getBasicDeviceStats(
    devices.at(0).ain
  );

Unofficial API

Current Network Stats (past 100 sec.), Eco Stats (CPU-Usage, CPU-Temp, RAM) Use at your own risk.

const networkStats = await fritzBox.unofficial.networkMonitor.getNetworkStats();

const [firstSyncGroup] = networkStats?.data.sync_groups || [];
let currentNetworkTraffic: NetworkTraffic[] | null = null;
if (firstSyncGroup) {
  currentNetworkTraffic =
    fritzBox.unofficial.networkMonitor.getNetworkTrafficBySyncGroup(
      firstSyncGroup
    );
}
// interface NetworkTraffic {
//     downBytes: number;
//     uploadDefaultBytes: number;
//     uploadImportantBytes: number;
//     uploadRealtimeBytes: number;
//     date: Date;
// }

const ecoStats = await fritzBox.unofficial.ecoStat.getEcoStat();

AVM Documentation

Special Thanks

This is an fork of @seydx's package