A Reolink Camera client written in Python. This repository's purpose (with Reolink's full support) is to deliver a complete API for the Reolink Cameras, although they have a basic API document - it does not satisfy the need for extensive camera communication.
Check out our documentation for more information on how to use the software at https://reolink.oleaintueri.com
Other Supported Languages:
- Go: reolinkapigo
https://discord.gg/8z3fdAmZJP
Oleaintueri is sponsoring the development and maintenance of these projects within their organisation.
Implement a "Camera" object by passing it an IP address, Username and Password. By instantiating the object, it will try retrieve a login token from the Reolink Camera. This token is necessary to interact with the Camera using other commands.
See the examples directory.
Install the package via PyPi
pip install reolinkapi
Install from GitHub
pip install git+https://github.com/ReolinkCameraAPI/reolinkapipy.git
import reolinkapi
if __name__ == "__main__":
# this will immediately log in with default camera credentials
cam = reolinkapi.Camera("192.168.0.100")
# OR in the case of managing a pool of cameras' - it's better to defer login
# foo is the username
# bar is the password
_ = reolinkapi.Camera("192.168.0.100", "foo", "bar", defer_login = True)
# to scan your network for reolink cameras
# when UPnP is enabled on the camera, simply use:
discovery = reolinkapi.Discover()
devices = discovery.discover_upnp()
# OR
_ = discovery.discover_port()
# when many cameras share the same credentials
# foo is the username
# bar is the password
factory = reolinkapi.CameraFactory(username="foo", password="bar")
_ = factory.get_cameras_from_devices(devices)
# when using the CameraFactory, we need to log in manually on each camera
# since it creates a pool of cameras
# one can use the utility function in camera factory to run an asyncio task
factory.initialise_cameras()
# now one can check if the camera has been initialised
for camera in factory.cameras:
if camera.is_loggedin():
print(f'Camera {camera.ip} is logged in')
else:
print(f'Camera {camera.ip} is NOT logged in')This project intends to stick with PEP8
Get the Restful API calls by looking through the HTTP Requests made in the camera's web UI. I use Google Chrome developer mode (ctr + shift + i) -> Network.
- Fork the repository
- pip install -r requirements.txt
- Make your changes
Make a pull request.
Stream:
- Blocking RTSP stream
- Non-Blocking RTSP stream
GET:
- Login
- Logout
- Display -> OSD
- Recording -> Encode (Clear and Fluent Stream)
- Recording -> Advance (Scheduling)
- Network -> General
- Network -> Advanced
- Network -> DDNS
- Network -> NTP
- Network -> E-mail
- Network -> FTP
- Network -> Push
- Network -> WIFI
- Alarm -> Motion
- System -> General
- System -> DST
- System -> Information
- System -> Maintenance
- System -> Performance
- System -> Reboot
- User -> Online User
- User -> Add User
- User -> Manage User
- Device -> HDD/SD Card
- Zoom
- Focus
- Image (Brightness, Contrast, Saturation, Hue, Sharp, Mirror, Rotate)
- Advanced Image (Anti-flicker, Exposure, White Balance, DayNight, Backlight, LED light, 3D-NR)
- Image Data -> "Snap" Frame from Video Stream
SET:
- Display -> OSD
- Recording -> Encode (Clear and Fluent Stream)
- Recording -> Advance (Scheduling)
- Network -> General
- Network -> Advanced
- Network -> DDNS
- Network -> NTP
- Network -> E-mail
- Network -> FTP
- Network -> Push
- Network -> WIFI
- Alarm -> Motion
- System -> General
- System -> DST
- System -> Reboot
- User -> Online User
- User -> Add User
- User -> Manage User
- Device -> HDD/SD Card (Format)
- PTZ
- Zoom
- Focus
- Image (Brightness, Contrast, Saturation, Hue, Sharp, Mirror, Rotate)
- Advanced Image (Anti-flicker, Exposure, White Balance, DayNight, Backlight, LED light, 3D-NR)
Any Reolink camera that has a web UI should work. The other's requiring special Reolink clients do not work and is not supported here.
- RLC-411WS
- RLC-423
- RLC-420-5MP
- RLC-410-5MP
- RLC-520