阿里云首页 IoT物联网操作系统

app.json - 全局配置文件

基本示例

app.json 用于对轻应用进行全局配置,设置页面文件的路径、硬件I/O口的配置等。

以下是一个基本配置示例:

{
  "version": "0.0.1",
  "io": {
    "D1": {
      "type": "GPIO",
      "port": 31,
      "dir": "output",
      "pull": "pullup"
    },
    "D2": {
      "type": "GPIO",
      "port": 32,
      "dir": "output",
      "pull": "pullup"
    },
    "D3": {
      "type": "GPIO",
      "port": 33,
      "dir": "output",
      "pull": "pullup"
    }
  },
  "debugLevel": "DEBUG",
  "repl": "enable"
}

完整配置项如下:

配置项

类型

是否必填

描述

version

String

IoT轻应用版本号

pages

Array

轻应用页面路径

net

Object

网络相关配置

io

Object

硬件接口配置

debugLevel

String

设置日志等级,默认为ERROR

repl

String

配置交互式解释器开关,默认打开 enable

在JS应用代码中,通过 appConfig 可以获取到app.json中的内容。

version 配置项

轻应用版本号。

pages 配置项

app.json 中的 pages 为数组属性,数组中每一项都是字符串,用于指定页面。在轻应用中新增或删除页面,都需要对 pages 数组进行修改。

pages 数组的每一项代表对应页面的路径信息,其中,第一项代表轻应用的首页。

页面路径不需要写任何后缀,框架会自动去加载同名的 .js.xml.css 文件。举例来说,如果开发目录为:

├── pages
│   ├──index
│   │    ├── index.js
│   │    ├── index.xml
│   │    └── index.css
│   ├──user
│   │    ├── user.js
│   │    └── user.xml
├── app.json
└── app.js

app.json 中应当如下配置:

{
  "pages":[
    "pages/index/index",
    "pages/user/user"
  ]
}

net 配置项

net 配置项如下:

配置项

类型

是否必填

描述

cellular

Object

蜂窝网络相关配置,详细配置项见cellular配置项

wifi

Object

WiFi相关配置,TBD

cellular 配置项

蜂窝网络相关配置,比如配置接入点名称(APN),用户名密码等。一般情况下无需配置cellular配置项,如果使用的是专网卡时则需要按需设置。

配置项

类型

是否必填

描述

apn

String

蜂窝网络接入点名称(APN),默认不配置APN,系统会自动识别APN

username

String

蜂窝网络用户名,默认为不配置用户名

password

String

蜂窝网络密码,默认为不配置用户名

auth

Number

认证方式。

0:NONE(默认)

1:PAP

2:CHAP

3:PAP or CHAP

注:普通移动,联通,电信卡可以不设置apn、username、password、auth,模块会自动识别。专网卡需要根据卡商提供的信息配置apn、username、password、auth。

cellular 配置项示例:

{
  "version": "0.0.1",
  "net": {
    "cellular": {
      "apn": "3gnet.mnc001.mcc460.gprs",
      "username": "",
      "password": "",
      "auth": 0
    }
  },
  "debugLevel": "DEBUG"
}

io 配置项

概述

不同的模组/芯片,各个端口和管脚的功能映射可能是不一样的,IoT轻应用的配置文件app.json中,可将硬件(芯片)的物理端口映射成为统一的应用层逻辑端口。这样映射的好处是在替换不同的硬件或者芯片时,只需要替换app.json而不用修改应用程序或设备程序,从而便于应用的跨平台运行。IO配置项中有 typeport 等硬件描述概念,对于每一款硬件(通常是芯片/模组/开发板)该配置文件均可能不同。

语法描述

语法描述格式定义如下:

{
  "io": {
   "objectid":{
      "type":"GPIO",
      "port":12,
      "dir":"output",
      "pull":"pullup"
    },
    "objectid2":{
      "type":"I2C",
      "port":0,
      "mode":"master",
      "addrWidth":7,
      "devAddr":270,
      "freq":100000
    }
  },
  "debugLevel": "DEBUG"
}

解释:

  • objectid:定义了一个对象,后面大括号里面则描述了该对象的类型。 定义后可以在 JS 中直接使用。

  • type: 描述了该对象的类型,可以是IoT轻应用支持的硬件扩展类型,如 GPIO,I2C,ADC 等。

  • port:描述了该对象的端口,这里需要根据实际硬件连接及芯片的PIN 脚映射关系来填写。

  • dir, pull: 是 GPIO 类型特有的,用于描述 GPIO 输出及上拉下拉,其他如 ADC 类型则有sampling采样频率这种类型描述。

外设type说明

io配置项的type用于描述该对象是什么硬件端口类型,而每一种type也拥有不同的属性字段,如 GPIO 与 ADC 的属性字段是不一样的。

GPIO

属性字段

数据类型

属性值

是否必须

字段说明

port

Number

1

配置端口值,端口值跟硬件接口有一一对应关系

dir

String

output

配置引脚方向,设置为输出模式(默认)

input

配置引脚方向,设置为输入模式

irq

配置引脚方向,设置为中断模式

analog

配置引脚方向,设置为模拟 IO 模式

pull

String

pulldown

配置引脚电阻,设置为上拉模式(默认)

pullup

配置引脚电阻,设置为下拉模式

opendrain

配置引脚电阻,设置为开漏模式

intMode

String

rising

配置引脚中断模式,设置为上升沿触发

falling

配置引脚中断模式,设置为下降沿触发

both

配置引脚中断模式,设置为边沿触发(默认)

示例

{
  "io": {
    "beep": {
        "type": "GPIO",        
        "port": 22,
        "dir": "output",
        "pull": "pullup"
    },
    "key": {
        "type": "GPIO",
        "port": 23,
        "dir": "irq",
        "pull": "pullup",
        "intMode": "rising"
    }
  },
  "debugLevel": "DEBUG"
}

UART

属性字段

数据类型

属性值

是否必须

字段说明

port

Number

1

配置端口值,这里跟芯片 datasheet上 的端口对应

dataWidth

Number

5/6/7/8

串口数据宽度值,默认为 8(bits)

baudRate

Number

9600、115200等

串口波特率,默认为 115200

stopBits

Number

1/2

串口停止位,默认为 1

flowControl

String

disable

流控设置,默认 disable

cts

rts

rtscts

parity

String

none

奇偶校验设置,默认 none

odd

even

示例

{
  "io": {
    "uart1":{
      "type":"UART",
      "port":1,
      "dataWidth":3,
      "baudRate":9600,
      "stopBits":1,
      "flowControl":"disable",
      "parity":"none"
    },
    "uart2":{
      "type":"UART",
      "port":2,
      "dataWidth":3,
      "baudRate":115200,
      "stopBits":1,
      "flowControl":"disable",
      "parity":"none"
    }
  },
  "debugLevel": "DEBUG"
}

I2C

属性字段

数据类型

属性值

是否必须

字段说明

port

Number

1

配置端口值,这里跟芯片 datasheet 上的端口对应

addrWidth

Number

7 或 10

配置 I2C 总线地址宽度,默认 7

freq

Number

100000、400000等

配置 I2C 总线频率,默认 300000

mode

String

master 或 slave

配置 I2C 总线主从模式,默认 master

devAddr

Number

224等

配置 I2C 从设备地址,默认 224

示例

{
  "io": {
    "codec":{
      "type":"I2C",
      "port":0,
      "mode":"master",
      "addrWidth":7,
      "devAddr":27,
      "freq":100000
    }
  },
  "debugLevel": "DEBUG"
}

SPI

属性字段

数据类型

属性值

是否必须

字段说明

port

Number

1

配置端口值,这里跟芯片 datasheet 上的端口对应

mode

String

master 或 slave

配置 SPI 总线模式,默认 master

freq

Number

3250000、6500000等

配置 SPI 总线频率

示例

{
  "io": {
    "flash":{
      "type":"SPI",
      "port":1,
      "mode":"master",
      "freq":3250000
    }
  },
  "debugLevel": "DEBUG"
}

ADC

属性字段

数据类型

属性值

是否必须

字段说明

port

Number

1

配置端口值,这里跟芯片 datasheet 上的端口对应

sampling

Number

12000000

配置 ADC 采样率

示例

{
  "io": {
    "voltage": {
            "type": "ADC",
      "port": 1,
      "sampling": 12000000
    }
  },
  "debugLevel": "DEBUG"
}

DAC

属性字段

数据类型

属性值

是否必须

字段说明

port

Number

1

配置端口值,这里跟芯片 datasheet 上的端口对应

示例

{
  "io": {
    "voltage": {
            "type": "ADC",
      "port": 1
    }
  },
  "debugLevel": "DEBUG"
}

PWM

属性字段

数据类型

属性值

是否必须

字段说明

port

Number

1

配置端口值,这里跟芯片 datasheet 上的端口对应

示例

{
  "io": {
    "led": {
            "type": "PWM",
      "port": 1
    }
  },
  "debugLevel": "DEBUG"
}

TIMER

属性字段

数据类型

属性值

是否必须

字段说明

port

Number

1

配置端口值,这里跟芯片 datasheet 上的端口对应

示例

{
  "io": {
    "timer": {
            "type": "TIMER",
      "port": 1
    }
  },
  "debugLevel": "DEBUG"
}

debugLevel 配置项

配置调试日志等级,分为如下几个等级,默认为ERROR

等级

说明

DEBUG

显示debug级别的日志

INFO

显示info级别的日志

WARN

显示warning级别的日志

ERROR

显示error级别的日志

FATAL

显示fatal级别的日志

repl 配置项(交互式解释器)

配置交互式解释器开关,默认打开。

REPL来源于Node.js,类似PC上的终端或Shell,我们可以在这个“终端”中输入JavaScript代码,即可解释执行。

打开这个功能后,一般我们在硬件平台上通过串口进入REPL

说明

enable

打开repl功能

disable

关闭repl功能

app.json 参考示例

{
  "io": {
    "I2C0": {
      "type": "I2C",
      "port": 0,
      "addrWidth": 7,
      "freq": 100000,
      "mode": "master",
      "devAddr": 118
    },
    "ADC0": {
      "type": "ADC",
      "port": 0,
      "sampling": 12000000
    },
    "ADC1": {
      "type": "ADC",
      "port": 1,
      "sampling": 12000000
    },
    "UART1":{
      "type":"UART",
      "port":1,
      "dataWidth":8,
      "baudRate":115200,
      "stopBits":1,
      "flowControl":"disable",
      "parity":"none"
    },
    "UART2":{
      "type":"UART",
      "port":2,
      "dataWidth":8,
      "baudRate":115200,
      "stopBits":1,
      "flowControl":"disable",
      "parity":"none"
    },
    "SPI0":{
      "type":"SPI",
      "port":0,
      "mode":"master",
      "freq":3250000
    },
    "D0": {
      "type": "GPIO",
      "port": 51,
      "dir": "output",
      "pull": "pulldown"
    },
                "D1": {
      "type": "GPIO",
      "port": 52,
      "dir": "output",
      "pull": "pulldown"
    },
    "D2": {
      "type": "GPIO",
      "port": 17,
      "dir": "output",
      "pull": "pulldown"
    },
    "D3": {
      "type": "GPIO",
      "port": 16,
      "dir": "output",
      "pull": "pulldown"
    },
    "D4": {
      "type": "GPIO",
      "port": 59,
      "dir": "output",
      "pull": "pulldown"
    },
    "D5": {
      "type": "GPIO",
      "port": 121,
      "dir": "output",
      "pull": "pulldown"
    },
    "D6": {
      "type": "GPIO",
      "port": 54,
      "dir": "output",
      "pull": "pulldown"
    },
    "D7": {
      "type": "GPIO",
      "port": 53,
      "dir": "output",
      "pull": "pulldown"
    },
    "D8": {
      "type": "GPIO",
      "port": 124,
      "dir": "output",
      "pull": "pulldown"
    },
    "D9": {
      "type": "GPIO",
      "port": 122,
      "dir": "output",
      "pull": "pulldown"
    },
    "D10": {
      "type": "GPIO",
      "port": 34,
      "dir": "output",
      "pull": "pulldown"
    },
    "D11": {
      "type": "GPIO",
      "port": 36,
      "dir": "output",
      "pull": "pulldown"
    },
    "D12": {
      "type": "GPIO",
      "port": 35,
      "dir": "output",
      "pull": "pulldown"
    },
    "D13": {
      "type": "GPIO",
      "port": 33,
      "dir": "output",
      "pull": "pulldown"
    },
    "D14": {
      "type": "GPIO",
      "port": 57,
      "dir": "output",
      "pull": "pulldown"
    },
    "D15": {
      "type": "GPIO",
      "port": 0,
      "dir": "output",
      "pull": "pulldown"
    },
    "D16": {
      "type": "GPIO",
      "port": 1,
      "dir": "output",
      "pull": "pulldown"
    },
  },
  "debugLevel": "DEBUG"
}