npm

npm’s 2019 JavaScript ecosystem survey analysis is now available!Get your copy here »

fritz-box

1.2.0 • Public • Published

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 = 'fritz.box', password: String, username: String }Object)FritzBox

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.

;(async () => {
    const box = new FritzBox(/* ... */)
    await box.getSession()
    // fritz-box is now ready for use
})()

box.getGuestWLAN

(): Promise

Fetches the guest WLAN configuration from the FRITZ!Box.

;(async () => {
    const box = new FritzBox(/* ... */)
    await box.getSession()
    const settings = await box.getGuestWLAN()
})()

box.setGuestWLAN

(settings: Object): Promise

Applies the (modified) settings object.

;(async () => {
    const box = new FritzBox(/* ... */)
    await box.getSession()
    await box.setGuestWLAN(settings)
})()

box.overview

(): Promise

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

;(async () => {
    const box = new FritzBox(/* ... */)
    await box.getSession()
    console.log(await box.overview())
})()

box.getDeviceDetails

(id: String): Promise

Gathers more information about a specific device.

;(async () => {
    const box = new FritzBox(/* ... */)
    await box.getSession()
    console.log(await box.getDeviceDetails('some-id'))
})()

box.getWlanLog

(): Promise

Gets the last entries of the wlan log file.

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

box.getLog

(type = 'all' : String)Promise

Returns log entries. Supported types: 'all', 'system', 'internet', 'wlan', 'usb'.

;(async () => {
    const box = new FritzBox(/* ... */)
    await box.getSession()
    console.log(await box.getLog())
})()

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.2.0

    • add getLog
    • improve documentation
  • 1.1.0

    • directly throw errors
    • add getDeviceDetails

install

npm i fritz-box

Downloadsweekly downloads

54

version

1.2.0

license

MIT

homepage

github.com

repository

Gitgithub

last publish

collaborators

  • avatar
Report a vulnerability