guolei19850528 / laravel-device
这是一个基于 Laravel 框架的设备服务扩展,用于集成天津博瑞皓科 (Tjbrhk)设备服务。
v1.0
2026-02-05 02:10 UTC
Requires
- php: 8.*
- guzzlehttp/guzzle: ^7.0
- illuminate/support: 7.*||8.*||9.*||10.*||11.*||12.*
This package is auto-updated.
Last update: 2026-02-05 02:11:43 UTC
README
项目简介
Laravel Device 是一个基于 Laravel 框架的设备服务扩展,用于集成天津博瑞皓科 (Tjbrhk)设备服务。该扩展提供了简洁的 API 接口,方便开发者与天津博瑞皓科的设备进行通信,目前主要支持消息发送功能。
主要功能
- 与天津博瑞皓科设备服务进行通信
- 支持发送设备消息
- 支持多设备配置,可同时管理多个设备
- 提供简洁的 API 调用方式
- 配置灵活,支持通过 .env 文件管理敏感信息
技术栈
- PHP 8.x
- Laravel 7.x ~ 12.x
- GuzzleHttp
安装方法
1. 安装依赖
通过 Composer 安装扩展:
composer require guolei19850528/laravel-device
2. 发布配置文件
安装完成后,使用以下命令发布配置文件:
php artisan vendor:publish --provider="Guolei19850528\Laravel\Device\ExtensionServiceProvider"
发布后,配置文件将保存在 config/device.php 中。
配置说明
1. 基础配置
打开 config/device.php 文件,根据实际情况配置天津博瑞皓科设备的相关参数:
return [
'tjbrhk' => [
'default' => [
'id' => env('TJBRHK_DEVICE_ID', ''),
'token' => env('TJBRHK_DEVICE_TOKEN', ''),
'version' => '1',
'baseUrl' => 'https://speaker.17laimai.cn/',
],
],
];
2. 环境变量配置
建议在 .env 文件中配置敏感信息:
TJBRHK_DEVICE_ID=your-device-id
TJBRHK_DEVICE_TOKEN=your-device-token
3. 多设备配置
扩展支持配置多个天津博瑞皓科设备实例,每个实例可以有独立的参数:
return [
'tjbrhk' => [
'default' => [
'id' => env('TJBRHK_DEFAULT_DEVICE_ID', ''),
'token' => env('TJBRHK_DEFAULT_DEVICE_TOKEN', ''),
'version' => '1',
'baseUrl' => 'https://speaker.17laimai.cn/',
],
'device_a' => [
'id' => env('TJBRHK_DEVICE_A_ID', ''),
'token' => env('TJBRHK_DEVICE_A_TOKEN', ''),
'version' => '1',
'baseUrl' => 'https://speaker.17laimai.cn/',
],
'device_b' => [
'id' => env('TJBRHK_DEVICE_B_ID', ''),
'token' => env('TJBRHK_DEVICE_B_TOKEN', ''),
'version' => '1',
'baseUrl' => 'https://speaker.17laimai.cn/',
],
],
];
使用示例
1. 基本使用
use Guolei19850528\Laravel\Device\Tjbrhk\Speaker;
// 创建设备实例
$speaker = new Speaker(
id: config('device.tjbrhk.default.id'),
token: config('device.tjbrhk.default.token'),
version: config('device.tjbrhk.default.version'),
baseUrl: config('device.tjbrhk.default.baseUrl')
);
// 发送消息
try {
$result = $speaker->send(message: 'Hello, this is a test message from Laravel Device Extension!');
if ($result) {
echo '消息发送成功!';
} else {
echo '消息发送失败!';
}
} catch (\Exception $e) {
echo '发送过程中发生错误:' . $e->getMessage();
}
2. 在控制器中使用
use App\Http\Controllers\Controller;
use Guolei19850528\Laravel\Device\Tjbrhk\Speaker;
class DeviceController extends Controller
{
/**
* 发送设备消息
*/
public function sendMessage()
{
// 从配置创建设备实例
$config = config('device.tjbrhk.default');
$speaker = new Speaker(
id: $config['id'],
token: $config['token'],
version: $config['version'],
baseUrl: $config['baseUrl']
);
// 消息内容
$message = '欢迎光临!这是一条来自 Laravel Device 扩展的消息。';
try {
$result = $speaker->send($message);
return response()->json([
'status' => $result ? 'success' : 'error',
'message' => $result ? '消息发送成功' : '消息发送失败'
]);
} catch (\Exception $e) {
return response()->json([
'status' => 'error',
'message' => '发送失败: ' . $e->getMessage()
], 500);
}
}
}
3. 使用自定义配置
use Guolei19850528\Laravel\Device\Tjbrhk\Speaker;
// 创建设备实例并手动设置参数
$speaker = new Speaker();
$speaker->setId('your-device-id')
->setToken('your-device-token')
->setVersion('1')
->setBaseUrl('https://speaker.17laimai.cn/');
// 发送消息
try {
$result = $speaker->send('这是一条使用自定义配置发送的消息');
echo $result ? '发送成功' : '发送失败';
} catch (\Exception $e) {
echo '错误: ' . $e->getMessage();
}
API 文档
Speaker 类
构造函数
public function __construct(
string|int $id = '',
string $token = '',
string|int $version = '1',
string $baseUrl = 'https://speaker.17laimai.cn/'
)
参数说明:
$id:设备ID$token:认证令牌$version:API版本号(默认:'1')$baseUrl:API基础URL(默认:'https://speaker.17laimai.cn/')
发送消息
public function send(
?string $message = '',
?string $url = '/notify.php',
?array $urlParameters = [],
?array $options = [],
?\Closure $responseHandler = null,
?array $validatorRules = ['errcode' => 'required|integer|size:0']
): mixed
参数说明:
$message:要发送的消息内容$url:API请求路径(默认:'/notify.php')$urlParameters:URL参数数组$options:HTTP请求选项$responseHandler:响应处理回调函数$validatorRules:响应验证规则(默认验证errcode为0)
返回值:
- 成功返回true,失败返回false
- 如果提供了自定义响应处理函数,则返回处理后的结果
配置方法
// 获取/设置设备ID
public function getId(): int|string
public function setId(int|string $id): static
// 获取/设置认证令牌
public function getToken(): string
public function setToken(string $token): static
// 获取/设置API版本号
public function getVersion(): int|string
public function setVersion(int|string $version): static
// 获取/设置API基础URL
public function getBaseUrl(): string
public function setBaseUrl(string $baseUrl): static
注意事项
- 确保已正确配置设备ID和认证令牌
- API默认地址为 https://speaker.17laimai.cn/,如果有变化请在配置中修改
- 发送消息时需要处理可能的异常情况
- 支持多设备配置,可以在同一项目中使用多个不同的设备
开发说明
项目结构
laravel-device/
├── config/
│ └── device.php # 配置文件
├── src/
│ ├── Tjbrhk/
│ │ └── Speaker.php # 天津博瑞皓科设备类
│ └── ExtensionServiceProvider.php # 服务提供者
├── vendor/
├── .gitignore
├── LICENSE
├── README.md
└── composer.json
核心类说明
Speaker:天津博瑞皓科设备通信类,提供消息发送功能ExtensionServiceProvider:Laravel扩展服务提供者,用于注册扩展
版本历史
- v1.0.0 (2026-02-05)
- 初始版本
- 实现天津博瑞皓科设备消息发送功能
- 支持多设备配置
- 提供简洁的API调用方式
许可证
本扩展采用 MIT 许可证,详情请查看 LICENSE 文件。
联系方式
- 开发者:郭磊
- 邮箱:174000902@qq.com
- GitHub:https://github.com/guolei19850528/laravel-device
贡献指南
欢迎提交 Issue 和 Pull Request 来帮助改进这个扩展!
更新日志
请查看 CHANGELOG.md 文件获取详细的更新日志。