示例#1
0
def test_getAudioSpec():
    tapo = Tapo(host, user, password)
    result = tapo.getAudioSpec()
    assert "audio_capability" in result
    assert "device_speaker" in result["audio_capability"]
    assert "device_microphone" in result["audio_capability"]
    assert result["error_code"] == 0
示例#2
0
def test_performRequest_failure():
    tapo = Tapo(host, user, password)
    with pytest.raises(Exception) as err:
        tapo.performRequest({"invalidData": "test123"})
    assert (
        'Error: -40210 Response:{"result": {"responses": []}, "error_code": -40210}'
        == str(err.value))
示例#3
0
def test_getTime():
    tapo = Tapo(host, user, password)
    result = tapo.getTime()
    assert "system" in result
    assert "clock_status" in result["system"]
    assert "seconds_from_1970" in result["system"]["clock_status"]
    assert "local_time" in result["system"]["clock_status"]
    assert result["error_code"] == 0
示例#4
0
def test_getAlarm():
    tapo = Tapo(host, user, password)
    result = tapo.getAlarm()
    assert result[".name"] == "chn1_msg_alarm_info"
    assert result[".type"] == "info"
    assert "enabled" in result
    assert "alarm_type" in result
    assert "alarm_mode" in result
    assert "light_type" in result
示例#5
0
def test_getMotionDetection():
    tapo = Tapo(host, user, password)
    result = tapo.getMotionDetection()
    assert result[".name"] == "motion_det"
    assert result[".type"] == "on_off"
    assert "enabled" in result
    assert "enhanced" in result
    assert "sensitivity" in result
    assert "digital_sensitivity" in result
示例#6
0
def test_responseIsOK_success():
    tapo = Tapo(host, user, password)

    class AttributeDict(dict):
        status_code = 200
        text = '{"error_code":0}'

        def json(self):
            return json.loads(self.text)

    result = tapo.responseIsOK(AttributeDict())
    assert result is True
示例#7
0
def test_setOsd_failure():
    tapo = Tapo(host, user, password)

    originalOsd = tapo.getOsd()

    with pytest.raises(Exception) as err1:
        tapo.setOsd(
            "AAAAAAAAAAAAAAAAA",
            False,
            False,
            False,
            1,
            2,
            3,
            4,
            5,
            6,
        )

    with pytest.raises(Exception) as err2:
        tapo.setOsd(
            "valid label",
            False,
            False,
            False,
            -50,
            2,
            3,
            4,
            5,
            6,
        )

    with pytest.raises(Exception) as err3:
        tapo.setOsd(
            "valid label",
            False,
            False,
            False,
            1,
            10001,
            3,
            4,
            5,
            6,
        )

    # just in case something succeeded, restore original
    setOsd(tapo, originalOsd)
    assert "Error: Label cannot be longer than 16 characters" == str(err1.value)
    assert "Error: Incorrect corrdinates, must be between 0 and 10000" == str(
        err2.value
    )
    assert "Error: Incorrect corrdinates, must be between 0 and 10000" == str(
        err3.value
    )
示例#8
0
def test_errorMessage():
    tapo = Tapo(host, user, password)
    origPrivacyModeEnabled = tapo.getPrivacyMode()["enabled"] == "on"
    if not origPrivacyModeEnabled:
        tapo.setPrivacyMode(True)
    with pytest.raises(Exception) as err:
        tapo.savePreset("unit test")
    assert "Privacy mode is ON, not able to execute" in str(err.value)
    if not origPrivacyModeEnabled:
        tapo.setPrivacyMode(False)
示例#9
0
def test_moveMotor():
    tapo = Tapo(host, user, password)
    origPrivacyModeEnabled = tapo.getPrivacyMode()["enabled"] == "on"
    if origPrivacyModeEnabled:
        tapo.setPrivacyMode(False)
    result = tapo.moveMotor(0, 0)
    if origPrivacyModeEnabled:
        tapo.setPrivacyMode(True)
    assert result["error_code"] == 0
示例#10
0
文件: main.py 项目: pdox07/EF-IoT
async def set_privacy():
    ip = get_device_ip(camera_model)
    user = "******" 
    password = "******"
    tapo = Tapo(ip, user, password)

    form = await request.form
    flag = form['enable']

    #Camera not working when its True
    result = tapo.setPrivacyMode(enabled=flag)
    err_code = result["error_code"]

    if err_code == 0:
        return {"message" : "privacy set successfully"}
    else:
        return {"message" : "error occured"}
示例#11
0
文件: main.py 项目: pdox07/EF-IoT
async def set_mode():
    ip = get_device_ip(camera_model)
    user = "******" 
    password = "******"
    tapo = Tapo(ip, user, password)

    form = await request.form
    mode = form['mode']

    # when condition is on : Camera = Blackk & White
    result = tapo.setDayNightMode(mode)
    err_code = result["error_code"]

    if err_code == 0:
        return {"message" : "mode set successfully"}
    else:
        return {"message" : "error occured"}
示例#12
0
文件: main.py 项目: pdox07/EF-IoT
async def set_osd():
    ip = get_device_ip(camera_model)
    user = "******" 
    password = "******"
    tapo = Tapo(ip, user, password)

    form = await request.form
    label = form['label']
    d_enb = form['dateEnabled']
    l_enb = form['labelEnabled']
    w_enb = form['weekEnabled']

    result = tapo.setOsd(label, dateEnabled=d_enb, labelEnabled=l_enb, weekEnabled=w_enb)
    err_code = result["error_code"]

    if err_code == 0:
        return {"message" : "on screen display set successfully"}
    else:
        return {"message" : "error occured"}
示例#13
0
文件: main.py 项目: pdox07/EF-IoT
async def set_motion_not():                            ########## NOT WORKING ###############
    ip = get_device_ip(camera_model)
    user = "******" 
    password = "******"
    tapo = Tapo(ip, user, password)

    form = await request.form
    flag = form['enable']
    try:
        sense = form['sensitivity']
        # Motion detection is off, when enabled=false
        result = tapo.setMotionDetection(enabled=flag, sensitivity=sense)
    except:
        # Motion detection is off, when enabled=false
        result = tapo.setMotionDetection(enabled=flag)
        
    err_code = result["error_code"]

    if err_code == 0:
        return {"message" : "motion set successfully"}
    else:
        return {"message" : "error occured"}
示例#14
0
def test_responseIsOK_failure():
    tapo = Tapo(host, user, password)

    class AttributeDict(dict):
        status_code = 200
        text = '{"error_code":404}'

        def json(self):
            return json.loads(self.text)

    result = tapo.responseIsOK(AttributeDict())
    assert result is False

    class AttributeDict(dict):
        status_code = 200
        text = "not json"

        def json(self):
            return json.loads(self.text)

    with pytest.raises(Exception) as err:
        result = tapo.responseIsOK(AttributeDict())

    assert "Unexpected response from Tapo Camera: " in str(err.value)

    class AttributeDict(dict):
        status_code = 404
        text = "not json"

        def json(self):
            return json.loads(self.text)

    with pytest.raises(Exception) as err:
        tapo.responseIsOK(AttributeDict())

    assert "Error communicating with Tapo Camera. Status code: 404" == str(
        err.value)
示例#15
0
def test_refreshStok_failure():
    with pytest.raises(Exception) as err:
        tapo = Tapo(host, user, invalidPassword)
        tapo.refreshStok()
    assert "Invalid authentication data" in str(err.value)
示例#16
0
def test_getUserID():
    tapo = Tapo(host, user, password)
    userID = tapo.getUserID()
    assert isinstance(userID, int)
示例#17
0
def test_getRecordings():
    tapo = Tapo(host, user, password)
    result = tapo.getRecordings("20200101")
    assert isinstance(result, list)
示例#18
0
def test_lightFrequencyMode():
    tapo = Tapo(host, user, password)
    origLightFrequency = tapo.getCommonImage(
    )["image"]["common"]["light_freq_mode"]

    tapo.setLightFrequencyMode("50")
    assert tapo.getCommonImage()["image"]["common"]["light_freq_mode"] == "50"

    tapo.setLightFrequencyMode("60")
    assert tapo.getCommonImage()["image"]["common"]["light_freq_mode"] == "60"

    tapo.setLightFrequencyMode("auto")
    assert tapo.getCommonImage(
    )["image"]["common"]["light_freq_mode"] == "auto"

    with pytest.raises(Exception) as err:
        tapo.setLightFrequencyMode("invalid")
    assert "Light frequency mode must be one of" in str(err.value)

    tapo.setLightFrequencyMode(origLightFrequency)
    assert (tapo.getCommonImage()["image"]["common"]["light_freq_mode"] ==
            origLightFrequency)
示例#19
0
文件: main.py 项目: pdox07/EF-IoT
def get_module_spec():
    ip = get_device_ip(camera_model)
    user = "******" 
    password = "******"
    tapo = Tapo(ip, user, password)
    return tapo.getModuleSpec()
示例#20
0
文件: main.py 项目: pdox07/EF-IoT
def get_display_info():
    ip = get_device_ip(camera_model)
    user = "******" 
    password = "******"
    tapo = Tapo(ip, user, password)
    return tapo.getOsd()
示例#21
0
文件: main.py 项目: pdox07/EF-IoT
def get_motion():
    ip = get_device_ip(camera_model)
    user = "******" 
    password = "******"
    tapo = Tapo(ip, user, password)
    return tapo.getMotionDetection()
示例#22
0
文件: main.py 项目: pdox07/EF-IoT
def get_privacy():
    ip = get_device_ip(camera_model)
    user = "******" 
    password = "******"
    tapo = Tapo(ip, user, password)
    return tapo.getPrivacyMode()
示例#23
0
文件: main.py 项目: pdox07/EF-IoT
def get_alarm():
    ip = get_device_ip(camera_model)
    user = "******" 
    password = "******"
    tapo = Tapo(ip, user, password)
    return tapo.getAlarm()
示例#24
0
文件: main.py 项目: pdox07/EF-IoT
def get_basicinfo():
    ip = get_device_ip(camera_model)
    user = "******" 
    password = "******"
    tapo = Tapo(ip, user, password)
    return tapo.getBasicInfo()
示例#25
0
def test_calibrateMotor():
    tapo = Tapo(host, user, password)
    result = tapo.calibrateMotor()
    assert result["error_code"] == 0
示例#26
0
def test_ensureAuthenticated():
    tapo = Tapo(host, user, password)
    result = tapo.ensureAuthenticated()
    assert result is True
示例#27
0
def registerController(host, username, password):
    return Tapo(host, username, password)
示例#28
0
def test_reboot():
    tapo = Tapo(host, user, password)
    result = tapo.reboot()
    assert result["error_code"] == 0
示例#29
0
import sys
from pytapo import Tapo
from flask import Flask

user = "******"  # Camera Username
password = "******"  # Camera password
host = "192.168.1.50"  # ip of the camera
port = 8092  # The port this camera API will run on
app = Flask(__name__)
tapo = Tapo(host, user, password)

#Simple PTZ TAPO Camera API for Shinobi
#This APP is not secure, be sure to setup firewall correctly.


@app.route('/pan-left')
def pan_left():
    tapo.moveMotor(-5, 0)
    return 'pan left'


@app.route('/pan-right')
def pan_right():
    tapo.moveMotor(5, 0)
    return 'pan right'


@app.route('/tilt-up')
def tilt_up():
    tapo.moveMotor(0, 5)
    return 'tilt up'
示例#30
0
def test_getHostURL():
    tapo = Tapo(host, user, password)
    hostURL = tapo.getHostURL()
    assert "https://{host}/stok=".format(host=host) in hostURL
    assert "/ds" in hostURL