Web services description - roleoroleo/yi-hack-Allwinner GitHub Wiki
There are web services useful for many functions. The default format is JSON (or JPG for images).
Table of Contents
- Links
- Snapshot
- Record
- Privacy
- Motion events management
- Configuration
- Camera settings
- Maintenance
- Service start and stop
- PTZ
- Audio
- Wifi
Links
http://IP:8080/cgi-bin/links.sh
Get links for stream and snapshot services
Snapshot
http://IP:8080/cgi-bin/snapshot.sh?res=RESOLUTION&watermark=WATERMARK&file=FILE
RES: high or low (default high)
WATERMARK: yes or no (default no)
FILE: name of the file you want to save in /tmp/sd/record/
Record
http://IP:8080/cgi-bin/record.sh?time=TIME
Start recording of a video TIME seconds long.
Privacy
http://IP:8080/cgi-bin/privacy.sh?value=VALUE
VALUE: on, off or status Set privacy on or off, or get the status. Privacy "on" means rtsp and snapshot disabled, privacy "off" means rtsp and snapshot enabled.
Motion events management
List directories
http://IP:8080/cgi-bin/eventsdir.sh
List of directories containing registered mp4 files.
List files
http://IP:8080/cgi-bin/eventsfile.sh?dirname=2020Y01M01D01H
List of mp4 files contained in a specific directory.
Delete directories
http://IP:8080/cgi-bin/eventsdirdel.sh?dir=all
Remove all directories (containing registered mp4 files).
http://IP:8080/cgi-bin/eventsdirdel.sh?dir=2020Y01M01D01H
Remove directory /tmp/sd/record/2020Y01M01D01H (directory containing registered mp4 files).
Delete file
http://IP:8080/cgi-bin/eventsfiledel.sh?file=2020Y01M01D01H/00M00S60.mp4
Remove file /tmp/sd/record/2020Y01M01D01H/00M00S60.mp4
Get recorded videos
http://IP:8080/cgi-bin/getlastrecordedvideo.sh
Use. Available variables:
"oldness" variable. Defines which video to retrieve..
-
"0" (default) or "1" means latest already available.
-
greater than "0" specifies the oldness, so "3" means the third oldest video. Only looks into the current hour folder. So if value is greater than the videos in the latest hour folder, the last one will be sent.
-
negative value (e.g. "-1") means to wait for the next available video. Only works if a video is already being recorded, max. time to wait 80 seconds.
"type" variable. Defines what to retrieve.
-
"1" (default). Gets relative name in the format of DIR/VIDEO.mp4
-
"2". Gets full URL video.
-
"3". Gets the video itself as video/mp4 inline.
-
"4". Gets the video itself as video/mp4 attachment.
Examples of use:
http://IP:PORT/cgi-bin/getlastrecordedvideo.sh?oldness=-1&type=4 -- Wait for a new video and sends it as an attachment.
http://IP:PORT/cgi-bin/getlastrecordedvideo.sh?oldness=-1&type=3 -- Wait for a new video and shows it inline in the browser.
http://IP:PORT/cgi-bin/getlastrecordedvideo.sh?type=1 -- Send the relative route of the last available video.
http://IP:PORT/cgi-bin/getlastrecordedvideo.sh?oldness=2&type=2 -- Send the URL of the second to last available video.
Configuration
Get configuration
http://IP:8080/cgi-bin/get_configs.sh?conf=CONF
CONF | action |
---|---|
system | Get system configuration |
mqtt | Get mqtt configuration |
camera | Get camera settings |
proxychains | Get proxychains settings |
ptz_presets | Get PTZ presets settings |
mqtt_advertise | Get MQTT advertise settings |
Set configuration
http://IP:8080/cgi-bin/set_configs.sh?conf=CONF
CONF | action |
---|---|
system | Update system configuration |
mqtt | Update mqtt configuration |
camera | Update camera settings |
proxychains | Update proxychains settings |
mqtt_advertise | Update MQTT advertise settings |
Need POST mehod with a json file.
Get status info
http://IP:8080/cgi-bin/status.json
Get hostname
http://IP:8080/cgi-bin/hostname.js
Camera settings
http://IP:8080/cgi-bin/camera_settings.sh?conf=value
conf | value | action |
---|---|---|
switch_on | yes/no | Switch on/off the video on the camera |
save_video_on_motion | yes/no | If enabled, video will be saved only when a motion is detected. If disabled, video will be always saved. (It takes effect only if recording is enabled) |
sensitivity | low/medium/high | Detection sensitivity (low, medium or high) |
ai_human_detection | yes/no | Enable AI human detection |
sound_detection | yes/no | Enable sound detection |
sound_sensitivity | 50/60/70/80/90 | Set sound detection sensitivity |
led | yes/no | Set status led on or off |
ir | yes/no | Enable IR led for night vision |
rotate | yes/no | Enable image rotation for ceiling mount |
cruise | off/presets/360 | Enable cruise mode (the cam moves around between presets or 360) |
Save settings on camera.conf and send IPC commands to the cam (no reboot is needed).
Maintenance
Load settings from file
http://IP:8080/cgi-bin/load.sh
Load configuration file (it requires post methid).
Save settings to file
http://IP:8080/cgi-bin/save.sh
Save configuration to a file.
Upgrade firmware
http://IP:8080/cgi-bin/fw_upgrade.sh?get=info
Get upgrade info.
http://IP:8080/cgi-bin/fw_upgrade.sh?get=upgrade
Start upgrade procedure.
Reboot the cam
http://IP:8080/cgi-bin/reboot.sh
Service start and stop
http://IP:8080/cgi-bin/service.sh?name=NAME&action=ACTION¶m1=PARAM1¶m2=PARAM2
name | action | param1 | param2 | description |
---|---|---|---|---|
rtsp | start/stop/status | low/high/both | N/A | rtsp: use param1 to set resolution |
onvif | start/stop/status | low/high/both | yes/no | onvif: use param1 to set resolution and param2 to set snapshot watermark (param2 is available only if action = start |
wsdd | start/stop/status | N/A | N/A | wsdd: discovery for onvif service |
ftpd | start/stop/status | busybox/pure-ftpd | N/A | ftpd: use param1 to set which daemon use |
mqtt | start/stop/status | N/A | N/A | mqtt to send motion events to a broker |
mp4record | start/stop/status | N/A | N/A | mp4record (yi program that saves mp4 videos) |
all | start/stop/status | N/A | N/A | all above services |
PTZ
Move manually
http://IP:8080/cgi-bin/ptz.sh?dir=DIRECTION&time=TIME
DIRECTION=left, right, up or down (required option).
TIME=period of movement (default 0.3 s).
Add preset
http://IP:8080/cgi-bin/preset.sh?action=add_preset&name=NAME
NAME=preset name (required option).
Delete preset
http://IP:8080/cgi-bin/preset.sh?action=del_preset&num=NUMBER
NUMBER=preset number (required option).
Go to preset
http://IP:8080/cgi-bin/preset.sh?action=go_preset&num=NUMBER
NUMBER=preset number (required option).
Audio
Audio from the microphone is available with the rtsp stream. Audio to the speaker is sent through 2 web services.
Speak
http://IP:8080/cgi-bin/speak.sh?lang=LANG&vol=VOL&voldb=VOLDB
LANG=language (en-US, en-GB, de-DE, es-ES, fr-FR, it-IT)
VOL=volume as a multiplier (0.0 / 5.0)
VOLDB=volume in dB (-12.0 / 12.0)
Don't use both vol and voldb, just one.
Add the message you want to speech in clear text in the payload and send it with the POST method.
Speaker
http://IP:8080/cgi-bin/speaker.sh?vol=VOL&voldb=VOLDB
VOL=volume as a multiplier (0.0 / 5.0)
VOLDB=volume in dB (-12.0 / 12.0)
Don't use both vol and voldb, just one.
Add the raw audio in the payload and send it with the POST method. The format must be 16 KHz, 16 bit, mono (S16LE).
Speaker file
http://IP:8080/cgi-bin/speaker_file.sh?voldb=VOLDB
VOLDB=volume in dB (-12.0 / 12.0)
Add the name of an audio file saved in /tmp/sd/audio in the payload and send it with the POST method. The format must be 16 KHz, 16 bit, mono (S16LE).
Wifi
Scan
http://IP:8080/cgi-bin/wifi.sh?action=scan
This method scans the wifi networks and returns the list.
Save
http://IP:8080/cgi-bin/wifi.sh?action=save
Add wifi credentials in the payload and send them with the POST method. The format must be a json:
{
"WIFI_ESSID": "network_essid",
"WIFI_PASSWORD": "password",
"WIDI_PASSWORD2": "confirmation password"
}