/fritz-box

:package: Promise-based JavaScript FRITZ!Box API.

Primary LanguageJavaScriptMIT LicenseMIT

fritz-box

Promise-based JavaScript FRITZ!Box API.

Examples

Basic

import FritzBox from 'fritz-box'

const box = new FritzBox({
	host: 'fritz.box',
	password: '...',
	username: '...'
})

const run = async () => {
	await box.getSession()
	const settings = await box.getGuestWLAN()
	settings.active = true
	settings.ssid = 'Example!'
	await box.setGuestWLAN(settings)
	console.log(await box.overview())
}

run()

IFTTT Notify

This will activate the guest WLAN and emit a IFTTT Maker channel notify event. If you create the fitting IFTTT recipe, this snippet should send you the WLAN password right to your smartphone.

import FritzBox from 'fritz-box'
import IFTTT from 'maker-ifttt'

const box = new FritzBox({
	host: 'fritz.box',
	password: '...',
	username: '...'
})
const maker = new IFTTT('IFTTT_MAKER_TOKEN')

const run = async () => {
	// generate a random 8-digit hex password
	const newPassword = crypto.randomBytes(4).toString('hex');

	// sign-in
	await box.getSession()

	// get current guest WLAN settings
	const settings = await box.getGuestWLAN()

	// set new password & turn on guest WLAN
	settings.key = newPassword
	settings.active = true
	await box.setGuestWLAN(settings)

	// send a message to IFTTT (optional)
	maker.triggerEvent('notify', `Guest WLAN password is ${password}.`, response =>
		response.on('data', chunk =>
			console.info('Response: ' + chunk)
		)
	)
}

run()

Installation

yarn add fritz-box

or

npm i fritz-box

API

default class FritzBox <>

({host, password, username}: Object)

Creates a new FritzBox with the given parameters.

const box = new FritzBox({
	host: 'fritz.box',
	password: '...',
	username: '...'
});

box.getSession

(): Promise

Attempts to log in and fetches a session ID.

const box = new FritzBox(/* .. */)
box
	.getSession()
	.then(() => {})
	.catch(error => {})

box.getGuestWLAN

(): Promise

Fetches the guest WLAN configuration from the FRITZ!Box.

const box = new FritzBox(/* .. */)
box
	.getGuestWLAN()
	.then(settings => {})
	.catch(error => {})

box.setGuestWLAN

(settings: Object): Promise

Applies the (modified) settings object.

const box = new FritzBox(/* .. */)
box
	.setGuestWLAN(settings)
	.then(data => {})
	.catch(error => {})

box.overview

(): Promise

Returns the data contained in the overview tab of the FRITZ!Box user interface.

const box = new FritzBox(/* .. */)
box
	.overview()
	.then(data => {})
	.catch(error => {})

box.getDeviceDetails

(id: String): Promise

Gathers more information about a specific device.

const box = new FritzBox(/* .. */)
box
	.getDeviceDetails('some-id')
	.then(details => {})
	.catch(error => {})

box.getWlanLog

(): Promise

Gets the last entries of the wlan log file.

const box = new FritzBox(/* .. */)
box
	.getWlanLog()
	.then(logEntries => {})
	.catch(error => {})

Disclaimer

Tested in FRITZ!OS 6.92 on a FRITZ!Box 7590.

FRITZ!Box and FRITZ!OS are registered trademarks of AVM. This project does not grant you any permissions to use them.

History

  • 1.1.0
    • directly throw errors
    • add getDeviceDetails