Swiftpack.co is a collection of thousands of indexed Swift packages. Search packages.
Fritz!Box Kit
This aims to be a Framework that provides a clean and modern Swift API for communicating with Fritz!Box routers. The focus is on home automation features.
Features
- ☑ Authentication with API
- ☑ Load device information (currently limited to thermostats and switches)
- ☑ Toggle switches
- ☐ Set Thermostat temperature
- ☐ Load thermostat timetable
- ☐ manipulate thermostat timetable
The Basics
Create an instance of the SDK with your myfritz URL and user credentials.
let fritzBox = FritzBox(
host: "https://YOURID.myfritz.net:46048",
user: "foo",
password: "bar"
)
Get a session identifier by calling the login
method. This will be used for all further requests.
fritzBox.login { result in
if case .success(let info) = result {
print("Info: \(String(describing: info))")
// We are now ready to do further requests.
}
}
You can now get information about devices and then act on them.
fritzBox.getDevices(completion: { result in
if case .success(let devices) = result {
print("Devices: \(String(describing: devices))")
// Prints a list of devices and their properties.
}
})
Hardware
As I only have one home, this was only tested with the following setup.
- Fritz!Box 7490 (FRITZ!OS 6.83)
- 3x Fritz Dect 300 thermostat
- 1x Fritz Dect 301 thermostat
Installation
When using Swift Package Manager add this:
.package(url: "https://github.com/r-dent/FritzBoxKit.git", from: "0.5.0")
If you´re using CocoaPods, add this to your Podfile:
pod 'FritzBox-Kit'
Github
link |
Stars: 7 |
You may find interesting
Dependencies
Releases
Toggle Switches - 2021-01-17T13:48:47
- Add the ability to toggle power switches
- Add a logout method
Many thanks to @codeinho for the contribution! 🙏
Result Types - 2021-01-15T20:16:05
- Use result types for network callbacks
- Use explicit enum types for errors
Swift Package Manager - 2021-01-15T20:13:36
- Add power meter model
- Add Swift Package Manager support
- Add Documentation PDF files
- Add GitHub Workflow CI config