Semtech的LORA调制解调器设计师指南(AN1200.13)中定义的公式的基本反应UI,显示了事物网络(TTN)频率计划中使用的数据速率的通话时间,并显示了适用于TTN公共网络的局限性。
在https://avbentem.github.io/airtime-calculator上查看它。
下一个版本可能包括:
显示数据速率的频率计划是事物网络的内容。它们基于频率计划和Lorawan区域参数v1.0.2rb,并在config.json中定义。
某些频率计划的上行链路和下行链路的数据速率非常不同。对于那些不同的“区域”是在此应用程序中定义的,例如US902(上行链路)和US902 DL(下行链路)。其他人则共享(大多数)数据速率,例如EU868。
这两个国家和劳拉万规格可能会定义最大的占空比或最大停留时间限制:当可以在几个国家使用某些频率计划时,不同的国家仍可能施加不同的法律限制。和:
重要的是要牢记,规格表中描述的占空比限制是洛万施加的限制,而不是法律限制。如果您构建商业设备并希望它们获得洛杉矶认证,则需要遵守规格。开发设备不必完全符合规格。任何设备(无论是否洛杉矶,网关或节点,商业或开发)都必须符合适用于您所在国家 /地区的法律限制。
[...]
洛万义的占空比仅适用于节点。从技术上讲,网关只是Lora设备,而不是Lorawan,因此Lorawan规范不适用于它们。法规占空比限制通常适用于任何发射器。
像AS923:
Lorawan 1%最大占空比仅适用于923.20和923.40 MHz。
400毫秒的最大停留时间可能不适用于澳大利亚。
Lorawan规范定义了最大有效载荷大小的多个选项,例如取决于停留时间设置,以及是否有或不支持可能的中继器封装。
在早期规格中,这些选择令人困惑,因为当不适用最大停留时间时,通常会列出较小的最大值。但是,2020年2月Lorawan区域参数RP002-1.0.1指出,无论停留时间如何,没有Macpayload可能大于230个字节,并且在该版本中,数字也已进行了调整。
该计算器使用RP002-1.0.1的最大有效载荷尺寸,该大小允许可能的中继器封装,并且不考虑最大的停留时间。如果设备永远不会在中继器下运行,则最大尺寸可能会更大。如果定义了停留时间,那么无论最大有效载荷大小,这些时间都会在计算器中产生警告,从而使这些停留时间不适用的用户仍然可以看到正确的(更高)最大有效载荷大小。
更改有效载荷大小并不总是影响构成Lora数据包有效载荷和标头的符号数量,或者对于所有数据速率而言。例如,这对于申请有效载荷尺寸为12对13个字节非常可见。这是由LORA无线电调制,交织和正向误差校正引起的预期结果。网格下面的图表可视化这一点。
Semtech's LoRa Modem Designer's Guide (AN1200.13) defines some more parameters, especially preamble length (to detect the signal), coding rate (CR, for forward error correction), header mode (to include a LoRa header with details such as coding rate, payload length and CRC), and low data rate optimisation mode (to avoid issues with drift of the crystal reference oscillator due to either temperature change or motion).对于Lorawan,这些是不可构型的,因此不会以用户输入的形式公开(如果CR除外,如果通过URL设置了非默认值)。
对于Lorawan,序列长度始终为8,CR始终为4/5,始终包括Lora-Level标头,并且SF11和125 kHz上的SF11和SF12的低数据速率优化模式。
浏览器的复制事件的映射如下:
如果选择了任何文本,请复制。这是由浏览器处理的。
否则,当工具提示处于活动状态时,请复制其文本。这同时产生HTML和纯文本格式。在桌面浏览器上,您需要键盘来复制工具提示。
否则,请复制结果。这仅支持HTML。
对于结果网格中的线路断裂,这使用一种格式,该格式非常特定于从HTML转换为话语中的Markdown,例如在TTN论坛上使用: <br>替换为n ,但随后拒绝表单元中的n 。作为解决方法, <br>被输出为<br> ,它在话语编辑器中按预期进行处理,但在其他地方粘贴时需要进行一些编辑。当然,无论如何,使用静态结果并不是很有用。
对于text/plain添加了不添加URL,因为话语比HTML更长的纯文本内容更喜欢纯文本内容。
该应用程序是在可共享的URL中创建的,因此几乎每个用户输入都会产生更新的URL:
/<network>/<region>[/<parameters>] ,例如/ttn/eu868和/ttn/us902/6,14,cr48 。
<parameters>是一个逗号分隔的列表,并定义:
cr45 , cr46 , cr47 , cr48之一LinkAdrReq默认值不包含在<parameters>段中;目前适用于:
cr45 :固定为Lorawan当所有参数使用其默认值时, <parameters>段及其斜线将被排除在外。
要从GitHub页面上提供此单页应用程序,需要在自定义404页中使用JavaScript重定向的一些技巧。不幸的是,某些浏览器(例如勇敢)可能会尝试有所帮助,并显示一个选项,例如“您想检查Wayback Machine上是否有保存的版本?”即使正确执行预期的重定向。目前尚不清楚为什么最后的200个OK删除了勇敢的某些网站的横幅,但没有用于Github页面。
该项目用Create React应用程序进行了引导。
要使用有限的捆绑包进行绘图(从构建中卸下约690 kb),而使用完整捆绑包的键入,则在tsconfig.json中使用了paths别名配置。但是,在测试或构建过程中,创建React App会大胆地删除:
> react-scripts build
The following changes are being made to your tsconfig.json file:
- compilerOptions.paths must not be set (aliased imports are not supported)
...
TypeScript error in /src/components/result/Graph.tsx(1,20):
Could not find a declaration file for module 'plotly.js-basic-dist'
为了减轻这种情况,使用了一些带有extends技巧。对于npm test和npm run build ,这仍然会显示相同的消息,甚至将非常格式化tsconfig.json ,但最终不会触摸extends并使用tsconfig-paths.json 。
在项目目录中,运行:
npm install
下载所有依赖项。您可以安全地忽略有关缺少同伴依赖性的警告。
npm start
在开发模式下运行该应用程序。打开http:// localhost:3000在浏览器中查看。如果您进行编辑,该页面将重新加载。您还将在控制台中看到任何棉绒错误。
npm test
在交互式手表模式下启动测试跑者。有关详细信息,请参见运行测试的创建React应用程序文档。
npm test -- --coverage
单个测试范围覆盖范围。
npm run lint , npm run lint:es , npm run lint:style或npm run lint:pretty
手动运行所有衬里和更漂亮的衬里,或仅运行这些衬里,或者以代码,样式表或剩余的文件运行。与预先承诺的钩子不同(见下文),这不仅限于上演文件。
npm run build
运行衬里,并且(仅)全部成功将应用程序构建,并将其最小化的捆绑包构建到build文件夹中。
要确保可以加载/ttn/eu868/1,2之类的URL而不先加载裸露/ ,请参见apache .htaccess文件。
要为子文件夹构建,请在package.json中设置"homepage": "/some/path/to/airtime-calculator" 。这不会影响开发服务器,该服务器将始终从根文件夹中加载。要在根文件夹中部署,请将其设置为"/"或根本不设置它。另请参阅有关部署的创建React应用程序文档。
预先承诺的钩子可确保无法犯错错误和格式化错误。为了允许更漂亮的规则取代可能由Linter定义的任何格式规则,它被配置为作为ESLINT和Stylelint的插件运行,并明确运行,这些文件类型未由任何一个进行处理。
请注意,预制挂钩使用了绒毛段,该钩子暂时将未分段的更改隐藏到部分上演的文件中。这可能会使您的IDE显示有关在IDE之外更改的文件的警告。
提防Sourcetree可能会默默地跳过预先承诺的钩子。
在语言和框架中启用Stylelint |样式表| stylelint ,可选地禁用编辑器中的标准检查|检查| CSS 。 (例如,WebStorm不喜欢@import-normalize;在App.scss中,而是使用// noinspection CssInvalidAtRule已经在此代码中抑制了该特定检查。)
.prettierrc.yaml中更漂亮的设置定义了trailingComma: es5 。在提示“使用基于该项目的代码样式的代码样式?”之后?在Webstorm中,这将产生编码样式|标点符号|尾逗号:添加多行时。不幸的是,这也适用于函数参数,在重新构码命中选项命令l时增加了一个过多的逗号(但不适合使用Pripttier的Regripat的期权移动命令P)。为了避免这种情况,请手动设置WebStorm以使用Tailting Comma:Keep 。
.editorconfig中的编辑器设置定义max_line_length ,该编辑器在键入重新格式代码时使用option-command-l时使用,但在使用Prettier的Gemant-for Grematat使用选项示波命令-P时使用。