fritz-box

    1.2.1 • 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.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

    0

    Version

    1.2.1

    License

    MIT

    Unpacked Size

    15.9 kB

    Total Files

    6

    Last publish

    Collaborators

    • florianwendelborn