@lukesthl/fritzbox

A library which implements HTTP digest authentication for axios clients. With generic typescript support

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
@lukesthl/fritzbox
101.0.2a year agoa year agoMinified + gzip package size for @lukesthl/fritzbox in KB

Readme

@lukesthl/fritzbox
!npm packagenpm-imgnpm-url !Build Statusbuild-imgbuild-url !Downloadsdownloads-imgdownloads-url !Issuesissues-imgissues-url !Code Coveragecodecov-imgcodecov-url !Commitizen Friendlycommitizen-imgcommitizen-url !Semantic Releasesemantic-release-imgsemantic-release-url
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