uegmobile / arduino-ota-server-bundle
此包提供HTTP服务器,用于管理Arduino的OTA二进制文件
Requires
- php: >=5.6
- doctrine/doctrine-bundle: ~1.2
- doctrine/doctrine-migrations-bundle: ^1.1
- doctrine/orm: ~2.2,>=2.2.3
- friendsofsymfony/rest-bundle: ^1.7|~2.0
- mmoreram/simple-doctrine-mapping: ^1.0
- monolog/monolog: ~1.18
- pagerfanta/pagerfanta: ^1.1
- psr/log: ^1.0
- symfony/assetic-bundle: ^2.8
- symfony/symfony: ^2.3|~3.0
Requires (Dev)
- phpunit/phpunit: ^5.7|^6.4
- symfony/browser-kit: ~2.7|~3.0|~4.0
- symfony/console: ~2.3|~3.0
- symfony/phpunit-bridge: ~2.7|~3.0|~4.0
- symfony/yaml: ~2.3|~3.0
This package is not auto-updated.
Last update: 2024-09-28 20:19:58 UTC
README
ArduinoOTAServerBundle 提供HTTP服务器,用于管理带ESP8266 WiFi芯片的Arduino的OTA
文档
此插件是为 ESP8266 WiFi芯片的Arduino核心 开发的。见https://github.com/esp8266/Arduino/tree/master/doc/ota_updates#http-server部分。
包含在版本2中
-
新的'Program'实体
-
新的'ArduinoOTAServerService'服务
-
新的控制台命令
自v.1.2.0起与[Arduino核心for ESP32 WiFi芯片]兼容 (https://github.com/espressif/arduino-esp32)。
有关文档,请参阅
Resources/doc/
安装
步骤1:下载Bundle
打开命令行,进入您的项目目录,然后执行以下命令以下载此包的最新稳定版本
$ composer require uegmobile/arduino-ota-server-bundle
此命令需要您已全局安装Composer,如Composer文档的安装章节中所述。
步骤2:启用Bundle
然后,通过将其添加到项目app/AppKernel.php文件中注册的Bundle列表中来启用该Bundle
<?php
// app/AppKernel.php
// ...
class AppKernel extends Kernel
{
public function registerBundles()
{
$bundles = array(
// ...
new UEGMobile\ArduinoOTAServerBundle\UEGMobileArduinoOTAServerBundle(),
);
// ...
}
// ...
}
步骤3:注册路由
在routing.yml中导入路由定义
# app/config/routing.yml
UEGMobileArduinoOTAServerBundle:
resource: "@UEGMobileArduinoOTAServerBundle/Resources/config/routing.yml"
prefix: /aotaserver
步骤4:更新数据库模型
运行Doctrine命令以更新您的数据库模型
$ php app/console doctrine:migrations:diff (Symonfy 2.*)
$ php bin/console doctrine:migrations:diff (Symonfy 3.*)
$ php app/console doctrine:migrations:migrate (Symonfy 2.*)
$ php bin/console doctrine:migrations:migrate (Symonfy 3.*)
重要提示:升级到v2.0.0需要一些任务
- create and execute doctrine migrations.
- register one program (see register program console command)
- update devices and set program and mode (see update device console command)
注意:从先前版本升级到v1.2.0需要再次运行Doctrine命令。
用法
使用Symfony控制台命令注册程序
-
注册新程序以在OTA服务器中使用
$ php bin/console aotaserver:register:program programName
示例
$ php bin/console aotaserver:register:program "Program A"
Register Program "Program A" with id X done!
-
列出OTA服务器中所有可用的程序
$ php bin/console aotaserver:list:program
示例
$ php bin/console aotaserver:list:program
+----+-----------------+------------------+------------------+------------------+
| Id | Binary Name | Alpha | Beta | Prod |
+----+-----------------+------------------+------------------+------------------+
| 1 | Program A | (none) | (none) | (none) |
+----+-----------------+------------------+------------------+------------------+
使用Symfony控制台命令注册二进制文件
-
注册新二进制文件以在OTA服务器中使用
$ php bin/console aotaserver:register:binary binaryName binaryVersion userAgent sdkVersion binaryPath
示例
$ php bin/console aotaserver:register:binary binary.1.bin 1.0.0 ESP8266-http-Update '1.5.3(aec24ac9)' arduino.1.2.02.bin
Register arduino.1.2.02.bin done!
-
列出OTA服务器中所有可用的二进制文件
$ php bin/console aotaserver:list:binary
示例
$ php bin/console aotaserver:list:binary
+----+--------------+---------------------+-----------------+
| Id | Binary Name | User-Agent | SDK Version |
+----+--------------+---------------------+-----------------+
| 1 | binary.1.bin | ESP8266-http-Update | 1.5.3(aec24ac9) |
+----+--------------+---------------------+-----------------+
使用Symfony控制台命令注册设备
-
注册新设备以在OTA服务器中使用
$ php bin/console aotaserver:register:device mac programId mode
示例
$ php bin/console aotaserver:register:device '5C:CF:7F:8C:54:12' 1 BETA
Register 5C:CF:7F:8C:54:12 with id X done!
-
列出OTA服务器中所有可用的设备
$ php bin/console aotaserver:list:device
示例
$ php app/console aotaserver:list:device
+----+-------------------+--------+---------------+-------+
| Id | MAC Address | Active | Program | Mode |
+----+-------------------+--------+---------------+-------+
| 11 | 5C:CF:7F:8C:54:12 | N | 1 - Program A | BETA |
+----+-------------------+--------+---------------+-------+
使用Symfony控制台命令更新设备
-
更新配置设备并在OTA服务器中设置Beta、Alpha或Prod模式
$ php bin/console aotaserver:update:device deviceId programId mode active
示例
$ php bin/console aotaserver:update:device 1 1 BETA
Updated 12:23:44:55:66 with id 1 done!
使用Symfony控制台命令更新设备
-
更新配置设备并在OTA服务器中设置Beta、Alpha或Prod模式
$ php bin/console aotaserver:update:device deviceId programId mode active
示例
$ php bin/console aotaserver:update:device 1 1 BETA
Updated 12:23:44:55:66 with id 1 done!
使用Symfony控制台命令更新程序
-
更新OTA服务器中的程序名称
$ php bin/console aotaserver:update:program programId name
示例
$ php bin/console aotaserver:update:program 1 "New program name"
Updated New program name with id 1 done!
从服务控制实体
ArduinoOTAServerService可用于容器
$arduinoOTAServerService = $this->container->get('arduino_ota_server_service');
ArduinoOTAServerService用于获取实体的公共方法
- public function getProgram(string $programId): ?OTAProgram
- public function getDevice(string $deviceId): ?OTADeviceMac
- public function getBinary(string $binaryId): ?OTABinary
ArduinoOTAServerService用于搜索实体的公共方法
- public function searchPrograms(string $programName = null, int $page = 1, int $limit = 10, array $sort = []): ?Pagerfanta
- public function searchDevices(string $deviceMAC = null, int $page = 1, int $limit = 10, array $sort = []): ?Pagerfanta
- public function searchBinaries(string $binaryName = null, string $binaryVersion = null, string $userAgent = null, string $sdkVersion = null, int $page = 1, int $limit = 10,array $sort = []): ?Pagerfanta
ArduinoOTAServerService 注册实体公开方法包括
- public function registerProgram(string $programName): OTAProgram
- public function registerDevice(string $deviceMAC, OTAProgram $program, string $mode = OTADeviceMac::MODE_ALPHA): OTADeviceMAC
- public function registerBinary(string $binaryName, string $binaryVersion, string $userAgent, string $sdkVersion, $binaryFile): OTABinary
ArduinoOTAServerService 更新实体公开方法包括
- public function updateProgram($programId, $programName = null, $binaryAlpha = null, $binaryBeta = null, $binaryProd = null): OTAProgram
- public function updateDevice($deviceId, OTAProgram $program = null, string $mode = OTADeviceMac::MODE_ALPHA, bool $active = null): OTADeviceMAC
ArduinoOTAServerService 获取OTA二进制文件公开方法
- public function searchBinaryByMACAddress(string $MACAddress): ?OTABinary
配置Arduino
请参阅章节 https://github.com/esp8266/Arduino/blob/master/doc/ota_updates/readme.md#http-server
void upgrade_firmware(){
Serial.println("upgrade_firmware...");
t_httpUpdate_return ret = ESPhttpUpdate.update(CLOUD_SERVER_IP,
CLOUD_SERVER_PORT,
"/app_dev.php/aotaserver/updateBinary",
FIRMWARE_VERSION);
switch(ret) {
case HTTP_UPDATE_FAILED:
Serial.println("[update] Update failed.");
break;
case HTTP_UPDATE_NO_UPDATES:
Serial.println("[update] Update no Update.");
break;
case HTTP_UPDATE_OK:
Serial.println("[update] Update ok."); // may not called we reboot the ESP
break;
}
Serial.println("upgrade_firmware...done! ");
}
许可证
本软件包采用MIT许可证发布。