fritzctl

command module
v0.0.0-...-798cd6d Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 13, 2023 License: MIT Imports: 5 Imported by: 0

README

fritzctl - console AVM FRITZ!Box client

fritzctl


Project is archived and no longer maintained

Due to a lack of time to work on this project, I have decided to archive it as of April 2021. Of course, the source code will stay public. Finally, I wish to express my deep gratitude to everyone who contributed. Thanks!


Usage

Demo usage

About Wiki

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, 06.87, 07.00
FRITZ!Box 7490 06.83, 06.90, 06.93

CI Actions AppVeyor

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

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 buster, jessie, wheezy or sid depending on your distribution)

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

and its signing key

wget -qO - https://api.bintray.com/users/gotohr/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/gotohr/fritzctl_rpm/rpm -O bintray-gotohr-fritzctl_rpm.repo && sudo zypper ar -f bintray-gotohr-fritzctl_rpm.repo && rm bintray-gotohr-fritzctl_rpm.repo

Update your local repository data and install

sudo zypper refresh
sudo zypper in fritzctl
MacOS

Install using homebrew

brew install gotohr/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/gotohr/fritzctl

As Library GoDoc

Example:

package main

import "github.com/gotohr/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/gotohr/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.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
cmd
Package cmd contains all supported command of the fritzctl command line client.
Package cmd contains all supported command of the fritzctl command line client.
jsonapi
Package jsonapi provides the API for JSON export of AHA data.
Package jsonapi provides the API for JSON export of AHA data.
printer
Package printer provides selection of output formats based on type information.
Package printer provides selection of output formats based on type information.
Package config deals with the configuration of the HTTP client.
Package config deals with the configuration of the HTTP client.
Package fritz contains the main clients for interacting with the fritz box.
Package fritz contains the main clients for interacting with the fritz box.
Package httpread provides common un-marshalling operations from HTTP responses.
Package httpread provides common un-marshalling operations from HTTP responses.
internal
console
Package console adds useful stuff to stdin/stdout landscape.
Package console adds useful stuff to stdin/stdout landscape.
errors
Package errors is a simplified variant of github.com/pkg/errors.
Package errors is a simplified variant of github.com/pkg/errors.
stringutils
Package stringutils is the obligatory add-on for convenience functions related to strings.
Package stringutils is the obligatory add-on for convenience functions related to strings.
Package logger provides functions to log on different levels/severities.
Package logger provides functions to log on different levels/severities.
Package man enables man page generation of command line apps build with github.com/spf13/cobra.
Package man enables man page generation of command line apps build with github.com/spf13/cobra.
Package manifest enables declarative configuration of AHA devices.
Package manifest enables declarative configuration of AHA devices.
Package mock provides a library, mocking Fritz!Box backend.
Package mock provides a library, mocking Fritz!Box backend.
tools

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL