@lukesthl/fritzbox
v1.0.2
Published
A library which implements HTTP digest authentication for axios clients. With generic typescript support
Downloads
51
Maintainers
Readme
@lukesthl/fritzbox
A library for accessing a AVM Fritz!Box via TR-064 and HTTP API.
Features
- Supports the command language of the TR-064 API of a Fritz!Box (partially typed with interfaces)
- Supports the SmartHome HTTP API
- Typesafe commands:
DeviceInfo
,DeviceLog
,LanDeviceHosts
,SID
,Reboot
,SmartHome Devices/Groups
,SmartHome DeviceStats
,EcoStats
,NetworkStats
- SSL encryption and authentication
- async/await promises
- generic support
- Custom TR-064 Commands
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
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
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
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
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