/Arduino-TR-064-SOAP-Library

Arduino library for the TR-064 protocol, most commonly used by the Fritz!Box router API

Primary LanguageC++OtherNOASSERTION

Arduino TR-064 SOAP Library Linting Test compile

Arduino library to facilitate the use of the TR-064 SOAP protocol. With this you can get a lot of information from and control common routers and their peripherals, like the FRITZ!Box or some ZyXEL.

A few examples of what you can do with it include:

  • Retrieve devices currently connected to the WIFI or LAN
  • Retrieve statistics on internet data usage
  • Turn WiFi on or off (e.g. Guest WiFi)
  • Make connected DECT phones ring (e.g. as a doorbell replacement)
  • Turn on and off connected Telephone answering machines
  • Get amount of power passing through connected smart plugs and take decisions on it
  • Turn smart plugs on or off
  • See more under examples and at the end of this README

This library has been developed on an ESP8266 and tested on an ESP32 and with various hardware of AVM FRITZ!OS.

To get started, I recommend to check out the examples folder, the Wiki and the instructable.

If you still have question please don't hesistate to open an issue here on Github. If you made something cool with this library please provide it as an example. Please create a pull request (or, if you don't know how, an issue) to do that.

For details on the TR-064 SOAP protocol: my "simple" explanation, the definition and an official description).

Installation and usage

Simply go to Tools → Manage Libraries... in the Arduino IDE and search for TR064. Press install. The examples can then also be found in the IDE under Examples → TR064.

Don't forget that you also need to add the board you are using to the IDE;

Example board URLs Please note, that these might not be the best options and can change at any time. If in doubt, do your own research :)

Known routers with TR-064 interface

If you know more/have tested a device not on the list, please let me know!

  • Almost all FRITZ!Box routers.
    Tested devices (click to expand)
    • FRITZ!Box 5590
    • FRITZ!Box FON WLAN 7360
    • FRITZ!Box 7490 (tested by Dirk Kaben)
    • FRITZ!Box 7580
    • FRITZ!Box 7590
    • FRITZ!Box 6590 Cable (tested by Wolfgang (jipp))
    • FRITZ!Box 5490 (not finally confirmed, tested by Paul760)
    • FRITZ!DECT 200 (tested by Oliver-André Urban)
    • FRITZ!DECT 210 (test by Thorsten Godau)
  • Some ZyXEL routers (eg. VMG4325, VMG8324, VMG8324-B10A and VMG4380, see page 29)
  • Please let me know if you tested a device not in this list by creating an issue

Press

Contribute

Help is very welcome! For example:

  • Check the issue section on Github or the list below and see if you can help
  • Please let me know if you came up with a cool use-case (I'd love to add more examples, see also list at the end of this file)
  • Let me know if you tested it on hardware not listed here (i.e. other microcontroller and other routers)
  • If you have any suggestions on how to improve the library code itself (I'm not particularily good with C++).
  • Contributions to the Wiki are also very welcome!

Some of the old issues are:

Library

  • Add yield()'s (where sensible)
  • Error-handeling can always be improved
  • Should some of the calls of the examples be included into the library?
  • Get the DOXY to work again

Examples

  • Add yield()'s (where sensible)
  • Add a few more nice examples
    • alternate WPS button
    • emergency dial-up to relatives or emergency services
    • Start devices through e.g. telegram messages (e.g. coffee machine, washing machine, ...)
  • WhoIsHomeIndicator
    • Add nice GUI/Website to configure/manage the users/LEDs/MACs/known devices
  • Extend doorbell example to also send telegram messages :)
  • Do something with the FRITZ!DECT Thermostats