/fritzctl

A lightweight, easy to use console client for the AVM FRITZ!Box Home Automation.

Primary LanguageGoMIT LicenseMIT

fritzctl - console AVM FRITZ!Box client

fritzctl

Usage

Demo usage

About

fritzctl is a command line client for the AVM FRITZ!Box primarily focused on the AVM Home Automation HTTP Interface.

It should work out-of-the-box with most FRITZ!Boxes running a recent FRITZ!OS version. It has been explicitly tested with

FRITZ!Box FRITZ!OS
FRITZ!Box Fon WLAN 7390 06.51, 06.80, 06.83
FRITZ!Box 6490 Cable 06.63, 06.83, 06.84
FRITZ!Box 7490 06.83, 06.90

CI Build Status TravisCI Build Status CircleCI Build Status GitlabCI Build Status SemaphoreCI Build status AppVeyor

Code Go Report Card codecov codebeat badge Codacy Badge BCH compliance Maintainability

Releases

  • release downloads github release
  • Download .deb .deb packages
  • Download .rpm .rpm packages
  • Download .zip windows

Install

Debian/Ubuntu

Add the repository (replace stretch by jessie, wheezy or sid depending on your distribution)

echo "deb https://dl.bintray.com/bpicode/fritzctl_deb stretch main" | sudo tee -a /etc/apt/sources.list

and its signing key

wget -qO - https://api.bintray.com/users/bpicode/keys/gpg/public.key | sudo apt-key add -

The fingerprint of the repository key 3072D/35E71039 is 93AC 2A3D 418B 9C93 2986 6463 15FC CFC9 35E7 1039. Update your local repository data and install

sudo apt update
sudo apt install fritzctl

Upgrades for fritzctl will now be detected by apt update and can be installed via apt upgrade.

openSUSE

Add the repository

wget https://bintray.com/bpicode/fritzctl_rpm/rpm -O bintray-bpicode-fritzctl_rpm.repo && sudo zypper ar -f bintray-bpicode-fritzctl_rpm.repo && rm bintray-bpicode-fritzctl_rpm.repo

Update your local repository data and install

sudo zypper refresh
sudo zypper in fritzctl

MacOS

Intall using homebrew

brew install bpicode/tap/fritzctl

Windows

Windows binaries can found in the windows directory.

From Source

fritzctl is go-gettable. Set up a go environment guided by How To Write Go Code and then run

go get github.com/bpicode/fritzctl

As Library GoDoc

Example:

package main

import "github.com/bpicode/fritzctl/fritz"

func main() { 
	h := fritz.NewHomeAuto(
		fritz.SkipTLSVerify(),
		fritz.Credentials("", "password"),
	)

	err := h.Login()
	if err != nil {
		panic(err)
	}

	h.Off("Socket_Bedroom")
	h.Temp(18.5, "Heating_Bedroom")
}

Reproducing binaries

Versions >= 1.4.16 can be checked for reproducibility. There is a ready-to-go Dockerfile which prepares an appropriate environment. Of course, the setup instructions can applied to any other build platform. To reproduce a release, prepare a docker image with the help of build-args

docker build -t fritzctl/build docker/build \
   --build-arg go_version=1.9.2 \
   --build-arg fritzctl_version=1.4.16 \
   --build-arg fritzctl_revision=v1.4.16

Building the binaries is done in the container phase:

docker run --rm -v fritzctl_build_folder:/root/go/src/github.com/bpicode/fritzctl/build fritzctl/build

The above command will create a docker volume fritzctl_build_folder containing the binaries. Those can be checked for equality with the distributed ones.

License License FOSSA Status

This project is licensed under the terms of the MIT license, see LICENSE.

The fritzctl image is licensed under the Creative Commons 3.0 Attributions license. It is build upon the following work:

  • The Go gopher was designed by Renee French, licensed under the Creative Commons 3.0 Attributions license.
  • The Go gopher w/ patch cable image was created by Egon Elbre, licensed under CC0 1.0 Universal.