uegmobile/arduino-ota-server-bundle

此包提供HTTP服务器,用于管理Arduino的OTA二进制文件

安装: 52

依赖项: 0

建议者: 0

安全: 0

星标: 8

关注者: 5

分支: 2

开放问题: 0

类型:symfony-bundle

v2.0.3 2018-12-13 17:39 UTC

This package is not auto-updated.

Last update: 2024-09-28 20:19:58 UTC


README

Latest Stable Version Total Downloads Latest Unstable Version License

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许可证发布。