oldpocket/arais

ARAIS 是一个用于个人使用或小型项目的简单物联网服务器。它可以管理设备和传感器及其数据。所有操作都使用 JWT 令牌以确保数据完整性。服务器提供 REST 调用,使其易于集成,且该解决方案没有任何外部依赖。每一

安装: 0

依赖项: 0

建议者: 0

安全性: 0

星级: 0

观察者: 1

分支: 0

开放问题: 0

类型:项目

V1.0 2020-05-29 01:57 UTC

This package is auto-updated.

Last update: 2024-09-29 05:55:40 UTC


README

ARAIS 是一个物联网服务器的递归缩写

它是什么

欢迎使用 ARAIS。ARAIS 是一个物联网服务器,使用 PHP 编写,完全不依赖任何其他库。它所需的一切都包含在代码中。它使用 SQLite 进行数据存储,并提供一组非常干净的 REST API,以方便小型物联网设备使用。

API 集合可以处理设备传感器的注册、从传感器保存和检索数据,以及用户和权限管理。

它使用 JWT 来保证数据完整性,并提供身份验证和授权组件。

本项目的目标不是取代市场上现有的复杂物联网服务器,而是为具有 PHP 开发知识和技能的爱好者提供一个轻量级解决方案。

最终结果是如此简单和轻量,以至于我可以在家用 NAS 服务器上运行它,使用 PHP 5.5 和 Lighttpd 网络服务器,或者在带有 Apache 和大量限制的免费托管服务器上(我在 AwardSpace 的免费账户上运行它)。

动机

我开始这个项目作为个人项目,并决定发布它,希望帮助其他有类似需求的开发者。在空闲时间,我喜欢玩 Arduino、Raspberry Pi 和其他小型设备,这些解决方案的一个关键点是发送传感器数据到互联网上的某个地方,这样我就可以稍后读取它、创建仪表板等。

在互联网上可以找到许多物联网服务器,有庞大的开源项目,或者许多项目作为 PaaS 解决方案提供,提供某种免费计划...但有很多限制。作为一个开发者,我找不到简单易用的物联网服务器源代码,作为我项目的起点,并避免免费 PaaS 计划的限制。

因此,我决定开始这个项目。

安装

相当直接。获取代码,将其复制到您的网络服务器上,更新下一节中的环境变量,以适应您的设置,并使用存储库中的 database.sql 转储创建一个名为 data.sqlite 的 SQLite 文件。

数据库要求很简单,因此可以移植到 MySQL 数据库。我在下一节中添加了一些环境变量。在查询数据库抽象类中需要做一些小的更改,但任何具有一些 PHP 背景的人都应该能够处理。

如果您发现任何困难,请告诉我,我们可以更新这份文档以包含更多步骤。

环境变量

ARAIS 需要一些环境变量才能运行。这些变量可以添加到您的 .htaccess 文件中,如果您在 Apache 服务器上启用了 mod_env 或等效的模块。如果您无法访问它,您可以在根目录中添加一个 .env.php 文件,与您的 index.php 文件一起。以下是一个示例,列出了 ARAIS 所需的所有环境变量。

请注意,index.php 中有一行要求 .env.php。如果您决定在 .htaccess 中创建变量,则需要创建一个空的 .env.php 或者在 index.php 中移除 require。

这些环境变量的目的是分离在不同环境中运行应用程序时可能发生变化的信息(例如,您的本地计算机与您的生产服务器)。

// SQLite env
putenv('SQLITE_FILE_NAME=data.sqlite');

// MySQL env example
// putenv('MYSQL_HOST=[my_arais_mysql_server]:[port]'); // Database Server Host
// putenv('MYSQL_DB=[my_arais_db]');       // Database Name
// putenv('MYSQL_USER=[my_db_user]');           // Database Username
// putenv('MYSQL_PASSWD=[my_db_passwd]');         // Database Password

// Time Zone of the application
putenv('APP_TIME_ZONE=America/Sao_Paulo');

// LOGGING INFORMATION
// PHP
putenv('PHP_ERROR_REPORTING=E_ALL');
putenv('PHP_DISPLAY_ERROS=1');