williamson / tplinksmartplug
一个用于控制并接收来自TP-Link智能插座的信息的PHP库。
Requires
- tightenco/collect: ^5.3
Requires (Dev)
- phpunit/phpunit: ^5.7
This package is auto-updated.
Last update: 2024-08-26 21:29:35 UTC
README
###(支持Laravel集成!)
TPLink Smartplug 是一个小型PHP库,允许任何用户控制并访问TP-Link智能插座。
当前支持的TPLINK型号有
其他TPLink型号也可能工作,但尚未检查。
安装
此包可以在常规PHP项目中独立安装,也可以集成到Laravel中以使生活更加便捷。
要安装最新版本,只需使用composer将其添加到您的项目中,如下命令所示
composer require williamson/tplinksmartplug
Laravel 安装/集成
此库支持Laravel的自动发现功能来自动注册服务提供者和外观。如果您的Laravel版本支持自动发现,在您添加此包后,现在您就完成了!
如果您正在使用非常旧的Laravel版本,一旦安装了此包,您需要在 config/app.php
中注册包的服务提供者。
'providers' => [ //... Williamson\TPLinkSmartplug\Laravel\TPLinkServiceProvider::class, ]
外观
只有当您的Laravel版本不支持自动发现时,请将以下内容添加到 'app.php' 的别名部分。
'aliases' => [ //... "TPLink" => Williamson\TPLinkSmartplug\Laravel\Facades\TPLinkFacade::class ]
配置文件
此包需要一个配置文件,以便您可以提供您想控制的TPLink设备的地址/详细信息。要生成此文件,请运行以下命令
$ php artisan vendor:publish --provider='Williamson\TPLinkSmartplug\Laravel\TPLinkServiceProvider'
这将在您的Laravel config
文件夹中创建一个 TPLink.php
文件。您应该编辑此文件来设置您的设备。
配置
配置文件是一个非常简单的数组结构文件。独立/Laravel项目都需要配置文件。内容类似于以下
//TPLink.php <?php return [ 'lamp' => [ 'ip' => '192.168.1.100', //Or hostname eg: home.example.com 'port' => '9999', ], ];
您可以添加任意数量的设备,只要您指定要访问每个设备的IP地址(或主机地址,如果需要)和端口号。为每个设备命名便于在以后编码时识别。 (请注意,您在这里给出的名称不需要与您可能使用Kasa等官方应用程序分配的实际名称匹配。它们不需要匹配)
使用
您可以通过 TPLinkManager
类(如果您有多个设备,特别有用)或直接使用 TPLinkDevice
类来访问您的设备。
使用管理器,您可以指定要发送命令的 哪个 设备。
如果您只有一个设备,您可能只想单独使用 TPDevice
类 - 但使用管理器是推荐的。
根据您的编码风格,您可以使用外观或自己实例化对象。
以下都是类似的
//Non laravel $tpManager = new TPLinkManager($configArray); $tpDevice = $tpManager->device('lamp') //Laravel //with facade TPLink::device('lamp') //without facade $tpDevice = app('tplink')->device('lamp'); $tpDevice = app(TPLinkManager::class)->device('lamp');
一旦您的设备准备好,您就可以向它发送命令。
命令
所有智能插座命令都已在单独的类中创建,以便于使用,并允许在未来轻松添加更多命令。
要发送命令,只需在 TPDevice
对象上调用 sendCommand
方法,并将所需的命令作为参数传入。
例如,要获取智能插座的当前状态
//Non laravel $tpDevice->sendCommand(TPLinkCommand::systemInfo()); //Laravel //with facade TPLink::device('lamp')->sendCommand(TPLinkCommand::systemInfo()); //without facade $tpDevice->sendCommand(TPLinkCommand::systemInfo());
如果命令需要参数,请一并提供
//Non laravel $tpDevice->sendCommand(TPLinkCommand::setLED(false)); //Laravel //with facade TPLink::device('lamp')->sendCommand(TPLinkCommand::setLED(false)); //without facade $tpDevice->sendCommand(TPLinkCommand::setLED(false));
####切换电源有一个命令是直接在 TPLinkDevice
上调用的,那就是 togglePower()
方法。
如果您只想切换插座的当前电源状态,请按以下方式使用
//Non laravel $tpDevice->togglePower(); //Laravel //with facade TPLink::device('lamp')->togglePower(); //without facade $tpDevice->togglePower();
TPLinkCommand
类中有很多命令。请阅读文档注释以获取每个命令的解释和要求。
目前可用的命令列表如下
systemInfo
powerOn
powerOff
setLED
setDeviceAlias
setMacAddress
setDeviceId
setHardwareId
setLocation
checkUboot
getDeviceIcon
getDownloadState
checkConfig
flashFirmware
downloadFirmware
setTestMode
reboot
reset
cloudInfo
cloudFirmwareList
cloudSetServerUrl
cloudConnectWithAccount
cloudUnregisterDevice
wlanScan
wlanConnectTo
getTime
getTimezone
setTimeAndTimeZone
emeterRealtimeReading
emeterGainSettings
emeterSetGains
emeterStartCalibration
emeterStatsMonth
emeterStatsYear
emeterStatsWipeAll
scheduleNext
scheduleRuleList
scheduleRuleCreate
scheduleRuleEdit
scheduleRuleDelete
scheduleRuleWipeAll
scheduleRuntimeStatsWipeAll
countdownRuleList
countdownRuleCreate
countdownRuleEdit
countdownRuleDelete
countdownRuleWipeAll
antitheftRuleList
antitheftRuleCreate
antitheftRuleEdit
antitheftRuleDelete
antitheftRuleWipeAll
附加信息
如有任何问题、反馈、建议或疑问,请使用问题跟踪器 这里。
致谢
- softScheck(进行逆向工程并提供了与智能插座通信的密钥。)
- Jonathan Williamson
- Syed Irfaq R. 对于如何管理多个设备的想法。
免责声明
本项目及其作者与TP-LINK没有任何关联或附属关系。请参阅许可部分以获取更多详细信息。
许可
本项目在MIT 许可下发布。
© 2017 Jonathan Williamson,版权所有。