整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

PHP 资源列表大全

习PHP的都想剖开框架了解下底层原理,一个PHP资源列表,内容包括:库、框架、模板、安全、代码分析、日志、第三方库、配置工具、Web 工具、书籍、电子书、经典博文等等。

依赖管理 Dependency Management

依赖和包管理库

  • Composer/Packagist - 一个包和依赖管理器

  • Composer Installers - 一个多框架Composer库安装器

  • Pickle - 一个PHP扩展安装器

  • Melody - 一个用于构建Composer脚本文件的工具

  • Climb - 一个Composer版本管理工具


其他的依赖管理 Dependency Management Extras

其他的相关依赖管理

  • Satis - 一个静态Composer存储库的生成器

  • Toran Proxy - 一个静态Composer存储库和代理

  • Composition - 一个在运行时检查Composer环境的库

  • NameSpacer - 一个转化下划线到命名空间的库

  • Patch Installer - 一个使用Composer安装补丁的库

  • Composer Checker - 一个校验Composer配置的工具

  • Prestissimo - 一个开启并行安装进程的Composer插件

  • Composer Merge Plugin - 一个用于合并多个composer.json文件的Composer插件

框架 Frameworks

Web开发框架

  • Symfony 2 - 一个独立组件组成的框架 (SF2)

  • Zend Framework 2 - 另一个由独立组件组成的框架 (ZF2)

  • Laravel 5 - 另一个PHP框架 (L5)

  • Aura PHP - 一个独立的组件框架

  • Yii2 - 另一个PHP框架

  • Nette - 另一个由个体组件组成的框架

  • PPI Framework 2 - 一个互操作性框架

  • CakePHP - 一个快速应用程序开发框架 (CP)

  • Phalcon - 通过C扩展实现的框架


其他框架 Framework Extras

其他Web开发框架

  • Symfony CMF - 一个创建自定义CMS的内容管理框架

  • Knp RAD Bundle - Symfony 2的快速应用程序(RAD)包

  • CakePHP CRUD - CakePHP的快速应用程序(RAD)插件


框架组件 Components

来自web开发框架的独立组件

  • Symfony2 Components - Symfony 2组件

  • Zend Framework 2 Components - Zend Framework 2组件

  • Aura Components - PHP5.4组件包

  • CakePHP Plugins - CakePHP插件的目录

  • Hoa Project - 另一个PHP组件包

  • League of Extraordinary Packages - 一个PHP软件开发组


框架配置 Configuration

加载配置文件的库

  • Zend-config - Zend框架的配置组件


微型框架 Micro Frameworks

微型框架和路由

  • Silex - 基于Symfony2组件的微型框架

  • Slim - 另一个简单的微型框架

  • Bullet PHP - 用于构建REST APIs的微型框架

  • Lumen - 一个Laravel的微型框架

  • Proton - 一个StackPHP兼容的微型框架


其他微型框架 Micro Framework Extras

其他相关的微型框架和路由

  • Silex Skeleton - Silex的项目架构

  • Silex Web Profiler - 一个Silex web的调试工具

  • Slim Skeleton - Slim架构

  • Slim View - Slim自定义视图的集合


路由 Routers

处理应用路由的库

  • Fast Route - 一个快速路由的库

  • Route - 一个基于Fast Route的路由的库

  • Pux - 另一个快速路由的库

  • Klein - 一个灵活的路由的库.


模板 Templating

模板化和词法分析的库和工具

  • Twig - 一个全面的模板语言

  • Twig Cache Extension - 一个用于Twig的模板片段缓存库

  • Mustache - 一个Mustache模板语言的PHP实现

  • Phly Mustache - 另一个Mustache模板语言的PHP实现

  • MtHaml - 一个HAML模板语言的PHP实现

  • PHPTAL - 一个TAL模板语言的PHP实现

  • Plates - 一个原生PHP模板库

  • Lex - 一个轻量级模板解析器


静态站点生成器 Static Site Generators

用来生成web页面的预处理内容的工具

  • Sculpin - 转换Markdown和Twig为静态HTML的工具

  • Phrozn - 另一个转换Textile,Markdown和Twig为HTML的工具

  • Spress - 一个能够将Markdown和Twig转化为HTML的可扩展工具

  • Couscous - 一个将Markdown转化为漂亮的网站的工具


HTTP

用于HTTP和网站爬取的库

  • Guzzle - 一个全面的HTTP客户端

  • Buzz - 另一个HTTP客户端

  • Requests - 一个简单的HTTP库

  • HTTPFul - 一个链式HTTP库

  • Goutte - 一个简单的web爬取器

  • PHP VCR - 一个录制和重放HTTP请求的库


中间件 Middlewares

使用中间件构建应用程序的库

  • Stack - 一个用于Silex/Symfony的可堆叠的中间件的库

  • Slim Middleware - 一个用于Slim的自定义的中间件的集合

  • Conduit - Sencha Connect连接到PHP的一个端口.


URL

解析URL的库

  • Purl - 一个URL处理库

  • Uri - 另一个URL处理库

  • PHP Domain Parser - 一个本地前缀解析库


Email

发送和解析邮件的库

  • SwiftMailer - 一个邮件解决方案

  • PHPMailer - 另一个邮件解决方案

  • Fetch - 一个IMAP库

  • Email Reply Parser - 一个邮件回复解析的库

  • Stampie - 一个邮件服务库,类似于SendGrid,PostMark,MailGun和Mandrill.

  • CssToInlineStyles - 一个在邮件模板中的内联CSS库

  • Email Validator - 一个较小的电子邮件验证库

  • Mautic - 邮件营销自动化


文件 Files

文件处理和MIME类型检测的库

  • Gaufrette - 一个文件系统抽象层

  • Flysystem - 另一个文件系统抽象层

  • Canal - 一个检测互联网媒体类型的库

  • Apache MIME Types - 一个解析Apache MIME类型的库

  • Ferret - 一个MIME检测库

  • Hoa Mime - 另一个MIME检测库

  • Lurker - 一个资源跟踪库

  • PHP FFmpeg - 一个用于FFmpeg视频包装的库

  • CSV - 一个CSV数据处理库


流 Streams

处理流的库

  • Streamer - 一个简单的面向对象的流包装库


依赖注入 Dependency Injection

实现依赖注入设计模式的库

  • Pimple - 一个小的依赖注入容器

  • Auryn - 一个递归的依赖注入容器

  • Container - 另一个可伸缩的依赖注入容器

  • PHP-DI - 一个支持自动装配和PHP配置的依赖注入容器

  • Acclimate - 一个依赖注入容器和服务定位的通用接口

  • Symfony DI - 一个依赖注入容器组件 (SF2)


图像 Imagery

处理图像的库

  • Imagine - 一个图像处理库

  • PHP Image Workshop - 另一个图像处理库

  • Intervention Image - 另一个图像处理库

  • GIF Frame Extractor - 一个提取GIF动画帧信息的库

  • GIF Creator - 一个通过多张图片创建GIF动画的库

  • Image With Text - 一个在图像中嵌入文本的库

  • Color Extractor - 一个从图像中提取颜色的库

  • Glide - 一个按需处理图像的库

  • Image Optimizer - 一个优化图像的库

  • Image Hash - 一个用于生成图像哈希感知的库


测试 Testing

测试代码和生成测试数据的库

  • PHPUnit - 一个单元测试框架

  • DBUnit - 一个PHPUnit的数据库测试库

  • ParaTest - 一个PHPUnit的并行测试库

  • PHPSpec - 一个基于功能点设计的单元测试库

  • Codeception - 一个全栈测试框架

  • AspectMock - 一个PHPUnit/Codeception的模拟框架。

  • Atoum - 一个简单的测试库

  • Mockery - 一个用于测试的模拟对象的库

  • Phake - 另一个用于测试的模拟对象的库

  • Prophecy - 一个可选度很高的模拟框架

  • Faker - 一个伪数据生成库

  • Samsui - 另一个伪数据生成库

  • Alice - 富有表现力的一代库

  • Behat - 一个行为驱动开发(BDD)测试框架

  • Pho - 另一个行为驱动开发测试框架

  • Mink - Web验收测试

  • HTTP Mock - 一个在单元测试模拟HTTP请求的库

  • VFS Stream - 一个用于测试的虚拟文件系统流的包装器

  • VFS - 另一个用于测试虚拟的文件系统

  • Locust - 一个用Python编写的现代加载测试库

  • Peridot - 一个事件驱动开发的测试框架

  • Kahlan - 全栈Unit/BDD测试框架,内置stub,mock和代码覆盖率的支持


持续集成 Continuous Integration

持续集成的库和应用

  • Travis CI - 一个持续集成平台

  • SemaphoreCI - 一个开放源码和私人项目的持续集成平台

  • PHPCI - 一个PHP的开源的持续集成平台

  • Sismo - 一个持续测试的服务库

  • Jenkins - 一个PHP支持的持续集成平台

  • JoliCi - 一个用PHP编写的由Docker支持的持续集成的客户端


文档 Documentation

生成项目文档的库

  • Sami - 一个API文档生成器

  • APIGen - 另一个API文档生成器

  • PHP Documentor 2 - 一个API文档生成器

  • phpDox - 一个PHP项目的文档生成器(不限于API文档)

  • daux.io - 一个使用Markdown文件的文档生成器


安全 Security

生成安全的随机数,加密数据,扫描漏洞的库

  • HTML Purifier - 一个兼容标准的HTML过滤器

  • RandomLib - 一个生成随机数和字符串的库

  • True Random - 使用www.random.org生成随机数的库

  • SecurityMultiTool - 一个PHP安全库

  • PHPSecLib - 一个纯PHP安全通信库

  • TCrypto - 一个简单的键值加密存储库

  • PHP IDS - 一个结构化的PHP安全层

  • PHP SSH - 一个试验的面向对象的SSH包装库

  • IniScan - 一个扫描PHP INI文件安全的库

  • SensioLabs Security Check - 一个为检查Composer依赖提供安全建议的web工具

  • Zed - 一个集成的web应用渗透测试工具

  • VAddy - 一个持续安全的web应用测试平台

  • Optimus - 基于Knuth乘法散列方法的身份混淆工具


密码 Passwords

处理和存储密码的库和工具

  • Password Compat - 一个新的PHP5.5密码函数的兼容库

  • phpass - 一个便携式的密码哈希框架

  • PHP Password Lib - 一个生成和校验密码的库

  • Password Policy - 一个PHP和JavaScript的密码策略库

  • Password Validator - 一个校验和升级密码哈希的库

  • Zxcvbn PHP - 一个基于Zxcvbn JS的现实的PHP密码强度估计库

  • GenPhrase - 一个随机生成安全密码哈希的库


代码分析 Code Analysis

分析,解析和处理代码库的库和工具

  • PHP Parser - 一个PHP编写的PHP解析器

  • PHPPHP - 一个PHP实现的PHP虚拟机

  • PHPSandbox - 一个PHP沙盒环境

  • Dissect - 一个词法和语法分析的工具集合

  • PHP Mess Detector - 一个扫描代码缺陷,次优代码,未使用的参数等等的库。

  • PHP Code Sniffer - 一个检测PHP、CSS和JS代码标准冲突的库

  • PHPCPD - 一个检测复制和粘贴代码的库

  • PHP Analyser - 一个分析PHP代码查找缺陷和错误的库

  • PHP CS Fixer - 一个编码标准库

  • PHP Manipulator - 一个分析和修改PHP源代码的库

  • PHP Metrics - 一个静态测量库

  • PHP Refactoring Browser - 一个重构PHP代码的命令行工具集

  • PHP Semantic Versioning Checker - 一个比较两个源集和确定适当的应用语义版本的命令行实用程序

  • UBench - 一个简单的微型基准检测库

  • Athletic - 一个基于注释的基准检测库

  • Mondrian - 使用图论的代码分析工具

  • Scrutinizer - 一个审查PHP代码的web工具

  • PHPLOC - 一个快速测量PHP项目大小的工具

  • PHPCheckstyle - 一个帮助遵守特定的编码惯例的工具

  • PhpDependencyAnalysis - 一个创建可定制依赖图的工具

  • Code Climate - 一个自动代码审查工具


Architectural

相关的设计模式库,组织代码编程的方法和途径

  • PHP Option - 一个可选的类型库

  • Ruler - 一个简单的无状态的生产环境规则引擎

  • Finite - 一个简单的PHP有限状态机

  • Compose - 一个功能组合库

  • Monad PHP - 一个简单Monad库

  • Patchwork - 一个重新定义用户的函数库

  • Galapagos - 语言转换进化

  • Design Patterns PHP - 一个使用PHP实现的设计模式存储库

  • Functional PHP - 一个函数式编程库

  • Iter - 一个使用生成器提供迭代原语的库

  • Pipeline - 一个管道模式的实现


调试和分析 Debugging and Profiling

调试和分析代码的库和工具

  • xDebug - 一个调试和分析PHP的工具

  • PHP Debug Bar - 一个调试工具栏

  • PHP Console - 一个web调试控制台

  • Barbushin PHP Console - 另一个使用Google Chrome的web调试控制台

  • PHPDBG - 一个交互的PHP调试器

  • Tracy - A一个简单的错误检测,写日志和时间测量库

  • Z-Ray - 一个调试和配置Zend服务器的工具

  • xHprof - 另一个PHP分析工具

  • Blackfire.io - 一个低开销的代码分析器

  • Kint - 一个调试和分析工具

  • PHPBench - 一个基准测试框架


构建工具 Build Tools

项目构建和自动化工具

  • Bob - 一个简单的项目自动化工具

  • Phake - 一个PHP克隆库

  • Box - 一个构建PHAR文件的工具

  • Phing - 一个灵感来自于Apache Ant的PHP项目构建系统

任务运行器 Task Runners

自动运行任务的库

  • Task - 一个灵感来源于Grunt和Gulp的纯PHP任务运行器

  • Robo - 一个面向对象配置的PHP任务运行器

  • Bldr - 一个构建在Symfony组件上的PHP任务运行器


导航 Navigation

构建导航结构的工具

  • KnpMenu - 一个菜单库

  • Cartographer - 一个站点地图生成库


资源管理 Asset Management

管理,压缩和最小化web站点资源的工具

  • Assetic - 一个资源管理的管道库

  • Pipe - 另一个资源管理的管道库

  • Munee - 一个资源优化库

  • JShrink - 一个JavaScript的最小化库

  • Puli - 一个检测资源绝对路径的库


地理位置 Geolocation

地理编码地址和使用纬度经度的库

  • GeoCoder - 一个地理编码库

  • GeoTools - 一个地理工具相关的库

  • PHPGeo - 一个简单的地理库

  • GeoJSON - 一个GeoJSON的实现


日期和时间 Date and Time

处理日期和时间的库

  • Carbon - 一个简单的日期时间API扩展

  • ExpressiveDate - 另一个日期时间API扩展

  • CalendR - 一个日历管理库


事件 Event

时间驱动或实现非阻塞事件循环的库

  • React - 一个事件驱动的非阻塞I/O库.

  • Rx.PHP - 一个reactive扩展库

  • Ratchet - 一个web socket库

  • Hoa WebSocket - 另一个web socket库

  • Hoa EventSource - 一个事件源库

  • Evenement - 一个事件调度的库

  • Event - 一个专注于域名事件的库

  • Cake Event - 一个事件调度的库 (CP)

  • Broadway - 一个事件源和CQRS(命令查询责任分离)库


日志 Logging

生成和处理日志文件的库

  • Monolog - 一个全面的日志工具

  • KLogger - 一个易用的兼容PSR-3的日志类

  • Analog - 一个基于闭包的微型日志包


电子商务 E-commerce

处理支付和构建在线电子商务商店的库和应用

  • OmniPay - 一个框架混合了多网关支付处理的库

  • Payum - 一个支付抽象库

  • Sylius - 一个开源的电子商务解决方案

  • Thelia - 另一个开源的电子商务解决方案

  • Money - 一个Fowler金钱模式的PHP实现

  • Sebastian Money - 另一个处理货币值的库

  • Swap - 一个汇率库


PDF

处理PDF文件的库和软件

  • Snappy - 一个PDF和图像生成器库

  • WKHTMLToPDF - 一个将HTML转换为PDF的工具

  • PHPPdf - 一个将XML文件转换为PDF和图片的库

  • Dompdf - 一个将HTML转换为PDF的工具


Office

Libraries for working with office suite documents.

  • PHPWord - 一个处理Word文档的库

  • PHPExcel - 一个处理Excel文档的库

  • PHPPowerPoint - 一个处理PPT文档的库

  • ExcelAnt - 一个操作Excel文档的库


数据库 Database

使用对象关系映射(ORM)或数据映射技术的数据库交互的库

  • Doctrine - 一个全面的DBAL和ORM

  • Doctrine Extensions - 一个Doctrine行为扩展的集合

  • Propel - 一个快速的ORM,迁移库和查询构架器

  • Eloquent - 一个简单的ORM(L5)

  • LazyRecord - 一个简单、可扩展、高性能的ORM

  • Baum - 一个Eloquent的嵌套集实现

  • Spot2 - 一个MySQL的ORM映射器

  • RedBean - 一个轻量级,低配置的ORM

  • Pomm - 一个PostgreSQL对象模型管理器

  • ProxyManager - 一个为数据映射生成代理对象的工具集

  • Cake ORM - 对象关系映射工具,利用DataMapper模式实现 (CP)


迁移 Migrations

帮助管理数据库模式和迁移的库

  • PHPMig - 另一个迁移管理库

  • Phinx - 另一个数据库迁移的管理库

  • Migrations - 一个迁移管理库

  • Doctrine Migrations - 一个Doctrine的迁移库

  • Ruckusing - 基于PHP下ActiveRecord的数据库迁移,支持MySQL, Postgres, SQLite


NoSQL

处理NoSQL后端的库

  • MongoQB - 一个MongoDB查询构建库

  • Monga - 一个MongoDB抽象库

  • Predis - 一个功能完整的Redis库


队列 Queue

处理事件和任务队列的库

  • Pheanstalk - 一个Beanstalkd客户端库

  • PHP AMQP - 一个纯PHP AMQP库

  • Thumper - 一个RabbitMQ模式库

  • Bernard - 一个多后端抽象库


搜索 Search

在数据上索引和执行查询的库和软件

  • ElasticSearch PHP - ElasticSearch的官方客户端库

  • Elastica - ElasticSearch的客户端库

  • Solarium - Solr的客户端库

  • SphinxQL query builder - Sphinx搜索引擎的的查询库


命令行 Command Line

关于命令行工具的库

  • Boris - 一个微型PHP REPL

  • PsySH - 另一个PHP REPL

  • Pecan - 一个事件驱动和非阻塞的shell

  • GetOpt - 一个命令行选择解析器

  • OptParse - 另一个命令行选择解析器

  • Commando - 另一个简单的命令行选择解析器

  • GetOptionKit - 另一个命令行选择解析器

  • Cron Expression - 一个计算cron运行日期的库

  • ShellWrap - -一个简单的命令行包装库

  • Hoa Console - 另一个命令行库

  • Shunt - 一个在多台远程机器上并行运行命令行的库

  • Cilex - 一个构建命令行工具的微型框架

  • CLImate - 一个输出带颜色的和特殊格式的命令行库

  • CLI Menu - 一个构建CLI菜单的库

  • CLIFramework - 一个支持完全zsh/bash、子命令和选项约束的命令行框架,这也归功于phpbrew


身份验证和授权 Authentication and Authorization

实现身份验证和授权的库

  • Sentinel - 一个混合的身份验证和授权的框架库

  • Sentinel Social - 一个社交网络身份验证库

  • Opauth - 一个多渠道的身份验证框架

  • OAuth2 Server - 一个OAuth2身份验证服务,资源服务器和客户端库

  • OAuth2 Server - 另一个OAuth2服务器实现

  • PHP oAuthLib - 另一个OAuth库

  • TwitterOAuth - 一个Twitter OAuth库

  • TwitterSDK - 一个完全测试的Twitter SDK

  • Hawk - 一个Hawk HTTP身份认证库

  • HybridAuth - 一个开源的社交登陆库

  • Lock - 一种实现访问控制列表(ACL)系统的库

  • OAuth 1.0 Client - 一个OAuth 1.0客户端的库

  • OAuth 2.0 Client - 一个OAuth 2.0客户端的库


标记 Markup

处理标记的库

  • Decoda - 一个轻量级标记解析库

  • PHP Markdown - 一个Markdown解析器

  • CommonMark PHP - 一个对CommonMark spec全支持的Markdown解析器

  • Parsedown - 另一个Markdown解析器

  • Ciconia - 另一个支持Github Markdown风格的Markdown解析器

  • Cebe Markdown - 一个快速的可扩展的Markdown解析器

  • HTML to Markdown - 将HTML转化为Markdown

  • HTML5 PHP - 一个HTML5解析和序列化库

  • Emoji - 一个把Unicode字符和名称转换为表情符号图片的库


字符串 Strings

解析和处理字符串的库

  • ANSI to HTML5 - 一个将ANSI转化为HTML5的库

  • Patchwork UTF-8 - 一个处理UTF-8字符串的便携库

  • Hoa String - 另一个UTF-8字符串库

  • Stringy - 一个多字节支持的字符串处理库

  • Color Jizz - 处理和转换颜色的库

  • UUID - 生成UUIDs的库

  • Slugify - 转换字符串到slug的库

  • URLify - 一个Django中URLify.js的PHP版本

  • Text - 一个文本处理库

  • SQL Formatter - 一个格式化SQL语句的库

  • UA Parser - 一个解析user agent字符串的库

  • Device Detector - 另一个解析user agent字符串的库

  • Mobile-Detect - 一个用于检测移动设备的轻量级PHP类(包括平板电脑)

  • Agent - 一个基于Mobiledetect的桌面/手机端user agent解析库


数字 Numbers

处理数字的库

  • Numbers PHP - 一个处理数字的库

  • Math - 一个处理巨大数字的库

  • ByteUnits - 一个在二进制和度量系统中解析,格式化和转换字节单元的库

  • PHP Units of Measure - 一个计量单位转换的库

  • PHP Conversion -另一个计量单位转换的库

  • LibPhoneNumber for PHP - 一个Google电话号码处理的PHP实现库


过滤和验证 Filtering and Validation

过滤和验证数据的库

  • Filterus - 一个简单的PHP过滤库

  • Respect Validation - 一个简单的验证库

  • Valitron - 另一个验证库

  • Cake Validation - 另一个验证库 (CP)

  • Upload - 一个处理文件上传和验证的库

  • DMS Filter - 一个注释过滤库

  • MetaYaml - 一个支持YAML,JSON和XML的模式验证库

  • ISO-codes - 一个验证各种ISO和ZIP编码的库(IBAN, SWIFT/BIC, BBAN, VAT, SSN, UKNIN)


API

开发REST-ful API的库和web工具

  • Apigility - 一个使用Zend Framework 2构建的API构建器

  • Hateoas - 一个HOATEOAS REST web服务库

  • HAL - 一个超文本应用语言(HAL)构建库

  • Negotiation - 一个内容协商库

  • Drest - 一个将Doctrine实体暴露为REST资源节点的库

  • Restler - 一个将PHP方法暴露为RESTful web API的轻量级框架

  • wsdl2phpgenerator - 一个从SOAP WSDL文件生成PHP类的工具


缓存 Caching

缓存数据的库

  • Alternative PHP Cache (APC) - 打开PHP操作码缓存

  • Doctrine Cache - 一个缓存库

  • Zend Cache - 另一个缓存库 (ZF2)

  • Cake Cache - 一个缓存库 (CP)

  • Stash - 另一个缓存库

  • CacheTool - 一个使用命令行清除apc/opcode缓存的工具

  • phpRedisAdmin - 一个用于管理Redis数据库的简单web界面

  • phpPgAdmin - 一个PostgreSQL的web管理工具

  • phpMyAdmin - 一个MySQL/MariaDB的web界面

  • Adminer - 一个数据库管理工具

  • Grav - 一个现代的flat-file的CMS


数据结构和存储 Data Structure and Storage

实现数据结构和存储技术的库

  • Ardent - 一个数据结构库

  • PHP Collections - 一个简单的集合库

  • Collections - 一个PHP的集合抽象库

  • Serializer - 一个序列化和反序列化数据的库

  • Zend Serializer - 另一个序列化和反序列化数据的库 (ZF2)

  • Fractal - 一个转换复杂数据结构到JSON输出的库

  • Totem - -一个管理和创建数据交换集的库

  • PINQ - 一个基于.NET实现的PHP的LINQ(Language Integrated Query)库

  • YaLinqo - 另一个PHP的LINQ库

  • Ginq - 另一个基于.NET实现的PHP的LINQ库

  • JsonMapper - 一个将内嵌JSON结构映射为PHP类的库

  • Cake Collection - 一个简单的集合库 (CP)


通知 Notifications

处理通知软件的库

  • Nod - 一个通知库(Growl等)

  • Notificato - 一个处理推送通知的库

  • Notification Pusher - 一个设备推送通知的独立库

  • Notificator - 一个轻量级的通知库


部署 Deployment

项目部署库

  • Pomander - 一个PHP应用部署工具

  • Rocketeer - PHP世界里的一个快速简单的部署器

  • Envoy - 一个用PHP运行SSH任务的工具

  • Plum - 一个部署库

  • Deployer - 一个部署工具


国际化和本地化 Internationalisation and Localisation

国际化(I18n)和本地化(L10n)的库

  • Aura Intl

  • Cake I18n - 消息国际化和日期和数字的本地化 (CP)


第三方API Third Party APIs

访问第三方API的库

  • Amazon Web Service SDK - PHP AWS SDK官方库

  • S3 Stream Wrapper - Amazon S3流包装库

  • Stripe - Stripe官方PHP库

  • Campaign Monitor - Campaign Monitor官方PHP库

  • Digital Ocean - Digital Ocean API接口库

  • Github - 一个Github API交互库

  • PHP Github API - 另一个Github API交互库

  • Twitter OAuth - 一个Twitter OAuth工作流交互库

  • Twitter REST - 一个Twitter REST API交互库

  • Dropbox SDK - Dropbox SDK官方PHP库

  • Twilio - Twilio官方PHP REST API

  • Mailgun - Mailgun官方PHP REST API


扩展 Extensions

帮助构建PHP扩展的库

  • Zephir - 用于开发PHP扩展,且介于PHP和C++之间的编译语言

  • PHP CPP - 一个开发PHP扩展的C++库


杂项 Miscellaneous

不在上面分类中的有用库和工具

  • Spork - 一个处理forking的库

  • JSON Lint - 一个JSON lint工具

  • JSONPCallbackValidator - 验证JSONP回调的库

  • Pagerfanta - 一个分页库

  • LiteCQRS - 一个CQRS(命令查询责任分离)库

  • Chief - 一个命令总线库

  • Sslurp - 一个使得SSL处理减少的库

  • Metrics - 一个简单的度量API库

  • Sabre VObject - 一个解析VCard和iCalendar对象的库

  • Annotations - 一个注释库(Doctrine的一部分)

  • Whoops - 一个不错的错误处理库

  • LadyBug - 一个dumper库

  • Symfony VarDumper - 一个dumper库(SF2)

  • Procrastinator - 一个运行耗时任务的库

  • SuperClosure - 一个允许闭包序列化的库

  • Jumper - 一个远程服务执行库

  • Underscore - 一个Undersccore JS库的PHP实现

  • PHP PassBook - 一个iOS PassBook PHP库

  • PHP Expression - 一个PHP表达式语言

  • RMT - 一个编写版本和发布软件的库

  • Opengraph - 一个开放图库

  • Essence -一个提取web媒体的库

  • Embera - 一个Oembed消费库

  • Graphviz - 一个图形库

  • Flux - 一个正则表达式构建库

  • PHPCR - 一个Java内容存储库(JCR)的PHP实现

  • ClassPreloader - 一个优化自动加载的库

  • PHPStack - 一个PHP编写的TCP/IP栈概念

  • Nmap - 一个Nmap PHP包装器

  • Lambda PHP - 一个PHP中的Lambda计算解析器

  • Country List - 所有带有名称和ISO 3166-1编码的国家列表

  • PHP-GPIO - 一个用于Raspberry PI的GPIO pin的库

  • print_o - 一个对象图的可视化器

  • Alias - 一个类别名库

  • Cake Utility - 工具类如Inflector,字符串,哈希,安全和XML (CP)

  • Slimdump - 一个简单的MySQL dumper工具


软件 Software

创建一个开发环境的软件

PHP安装 PHP Installation

在你的电脑上帮助安装和管理PHP的工具

  • HomeBrew - 一个OSX包管理器

  • HomeBrew PHP - 一个HomeBrew的PHP通道

  • PHP OSX - 一个OSX下的PHP安装器

  • PHP Brew - 一个PHP版本管理和安装器

  • PHP Env - 另一个PHP版本管理器

  • PHP Switch - 另一个PHP版本管理器

  • PHP Build - 另一个PHP版本安装器

  • VirtPHP - 一个创建和管理独立PHP环境的工具


开发环境 Development Environment

创建沙盒开发环境的软件和工具

  • Vagrant - 一个便携的开发环境工具

  • Ansible - 一个非常简单的编制框架

  • Puppet - 一个服务器自动化框架和应用

  • PuPHPet - 一个构建PHP开发虚拟机的web工具

  • Protobox - 另一个构建PHP开发虚拟机的web工具

  • Phansible - 一个用Ansible构建PHP开发虚拟机的web工具


虚拟机 Virtual Machines

相关的PHP虚拟机

  • HHVM - Facebook出品的PHP虚拟机,Runtime和JIT

  • HippyVM - 另一个PHP虚拟机

  • Hack - 一个PHP进行无缝操作的HHVM编程语言


集成开发环境(IDE) Integrated Development Environment

支持PHP的集成开发环境

  • Netbeans - 一个支持PHP和HTML5的IDE

  • Eclipse for PHP Developers - 一个基于Eclipse平台的PHP IDE

  • PhpStorm - 一个商业PHP IDE


Web应用 Web Applications

基于Web的应用和工具

  • 3V4L - 一个在线的PHP和HHVM shell

  • DBV - 一个数据库版本控制应用

  • PHP Queue - A一个管理后端队列的应用

  • MailCatcher - 一个抓取和查看邮件的web工具

  • Cachet - 开源状态页面系统


基础架构 Infrastructure

提供PHP应用和服务的基础架构

  • appserver.io - 一个用PHP写的多线程的PHP应用服务器

文由公众号 “把科学带回家”提供

给孩子最好的科学教育

作者 七君

实习生 小王子对本文也有帮助

雾霾之下,许多家庭都购买了空气净化器,希望给家人,特别是老人和小孩带来一个能够安全呼吸的小环境。

当空气净化器上的 PM 指数不断下降,你的内心一定会感到些许安慰。许多人把空气净化器当成了自己最后的呼吸守护者。

但是下面这些消息,可能会让你对家中的空气净化器产生疑虑。

今年7月20日,韩国环境部爆出,在韩国市面上的空气净化器和车载空调的过滤网中,检测出了对人体有害的OIT(octylisothiazolinone,辛基异噻唑啉酮)。含有OIT的产品涉及到了大部分市面上的品牌,多达84个型号。

什么是OIT呢?OIT是一种抗菌、防霉的油溶性化学物质。在一些标注着“除菌”型净化器的过滤网上,厂家会采用OIT这种防霉剂来杀菌,并防止滤网发霉。但是这种化学制剂对人体是有害的,它对水生生物有较强的毒性,并且在直接接触或者通过空气传播的情况下会引起人体的过敏性反应。防霉剂成分会随着净化器和空调的排风,一起进入人体

韩国环境部对此已进行了风险评估,并认为OIT这种抗菌成分对人体健康有潜在的风险。为了公众健康着想,韩国环境部已经要求各大生产商召回所有含OIT成分的空气净化器滤网。

另据韩国国际广播电台(KBS)7月22日报道,韩国环境部此后公布的含有有毒物质OIT的84项空气净化器和空调等产品的名单中,三星电子、LG电子、Cuckoo 等公司的一些产品赫然在列

这些公司的滤网都是由两家国际品牌生产的。

随后,3M公司对在空气净化器滤网中检测出有毒物质的事件表示道歉,并马上开始召回产品。

那么,目前国内净化器品牌对OIT是否关注了呢?

把科学带回家对目前中国市面上的空气净化器产品进行了调研,我们发现除了少数产品之外,大部分品牌在产品说明中并没有明确指出不含OIT成分

一些韩国品牌目前在产品包装上明确标注不含OIT

一些没有明确标注不含OIT的品牌产品介绍:

某米 ▼

某尔 ▼

某浦 ▼

某米 ▼

某L ▼

某些明确标注不含OIT的品牌产品介绍:

你买的是“除菌型”的空气净化器吗?

你家的净化器滤网有OIT吗?

资料来源:

twitter.com/kbschinese/status/756395284440031232

world.kbs.co.kr/chinese/news/news_Dm_detail.htm?No=51204

world.kbs.co.kr/korean/news/news_Dm_detail.htm?No=265876

www.koreaherald.com/view.php?ud=20160722000831

businesskorea.co.kr/english/news/industry/15339-3m%E2%80%99s-recall-3m-korea-recall-air-purifier-filters-containing-toxic-chemicals

koreabizwire.com/oit-found-in-supposedly-safe-samsung-air-purifiers/62086

en.wikipedia.org/wiki/Isothiazolinone

koreajoongangdaily.joins.com/news/article/article.aspx?aid=3021577

koreabizwire.com/air-purifiers-in-spotlight-amid-toxic-substance-controversy/58252

不过瘾?请戳

为什么孩子要学编程?编程和数学有关系吗?

没想到你是这样的胖达

把科学带回家ID:bringsciencehome

给孩子最好的科学教育

转载请联系 kids@huanqiukexue.com

长按二维码关注我们

文作者:囧小平

写在前面

首先感谢来自瀚思彼岸的诸位热心网友以及Home Assistant的诸位开发者。是他们的辛勤贡献,让我们普通人也有了自己动手打造智能家居的机会。是他们的热心付出,给我们的生活带来了更多的便利。

另外,本文的阅读和操作都有一定的门槛和难度,实际动手前,建议三思而行。本教程不可能面面俱到,每一个步骤都有许多种解决方案,并可以展开为一个很大的话题。但是篇幅所限,我只能选择性地展开阐述。在本教程的引导下进行实际操作的过程中,也不可避免地会遇到种种问题。建议善于使用搜索引擎自行解决,并在适当的时候选择放弃。。。

Home Assistant相信大家都比较了解。论坛里和Home Assistant相关的原创文章也是多如牛毛。Home Assistant是一款基于Python的智能家居开源系统,支持众多品牌的智能家居设备,可以轻松实现设备的语音控制、自动化等。天猫精灵自然也不用过多介绍。天猫精灵方糖发布时,以较低的价格吸引了大批用户,估计很多值友家中都有一台天猫精灵方糖吧。天猫精灵本身也能够支持许多品牌的智能电器,实现语音控制。

但是其主流常用品牌的支持数量肯定不如Home Assistant。比如在国内智能家居领域处于领先地位的小米,自然不会把自己的蛋糕拱手让给阿里,小米自家的小爱同学第一个不答应。然而,经过Hacker们的不断努力,开源的Home Assistant目前已经能够支持控制大部分小米系的智能家电产品了。如果能够将天猫精灵的语音识别能力和Home Assistant的家电控制能力结合,让天猫精灵能够控制小米系甚至更多其他品牌的智能家电,岂不美滋滋。

有需求,就必有人折腾。不甘受制于人的程序员们帮我们解决了大部分问题,让曾经的不可能变成了可能。下面,我就讲述一下具体如何实现这个目的。

准备工作

这部分内容是比较基础的部分,基本凡是曾经利用Home Assistant构建过智能家居的,都会接触过本章节涉及的内容。这部分内容会为后续实现天猫精灵接入Home Assistant打下基础。由于是属于比较基础的部分,网络上对此的相关讨论和教程都比较丰富。所以每个步骤可能不会做太全面和深入的展开。

Home Assistant搭建

Home Assistant搭建是基础中的的基础,搭建的方式也是花样万千,相关的教程更是多不胜数。但是无论是谁写的教程,都肯定不如官方教程。所以有英文基础的都建议去读官方教程:点我直达

我这里大概阐述一下Home Assistant常见的安装载体和安装方式。

1.安装载体

Home Assistant要运行于某种载体之上,所谓载体就是一台具有Python环境的主机。它可以是一台低功耗服务器,也可以是一台闲置笔记本;可以是一台群晖之类的NAS,也可以是一块树莓派等Arm开发板;甚至还可以是你的闲置的,并且最好是已经root的安卓手机。只要这种载体具备了Home Assistant运行所需要的依赖就可以。为了让Home Assistant能够长期稳定低为你服务,这个载体最好是低功耗的,能够连接网络,并有着稳定的网络环境,而对性能方面的要求并不高。

2.安装方式

根据运行载体的不同,Home Assistant也有着多种不同的安装方式。

如果你的载体是一块树莓派开发板,我推荐使用直接烧写Hass.io镜像的方式,这也是官方推荐的安装载体和安装方式。

如果你的载体是一台服务器,则可以在安装完毕Python运行环境后,用几条简单的命令安装。选择用这种方式安装的时候,别忘记修改一下Python pip软件源为国内镜像地址,这样可以加快安装速度。具体的修改方式是:创建或修改配置文件(linux的文件在~/.pip/pip.conf,windows在%HOMEPATH%pippip.ini),修改内容为:

[global] index-url = http://pypi.douban.com/simple

如果你的载体是一台NAS服务器,那么简单便捷的docker安装方式肯定是你的首选。但是有时候我觉得docker这种安装方式有点不便于调试,也可能是我不会在docker下进行调试。

如果你的载体是一台Android手机,那么最好是root过的。我本人并没有实践过在Android手机上安装Home Assistant,感兴趣的可以参考这个教程:点我直达。那么,祝你好运。

当选好了合适的载体,安装并成功运行Home Assistant,在浏览器中输入载体的IP加默认端口号8123,就能通过网页来浏览和管理Home Assistant。走到这一步,就为后面的折腾打下了基础中的基础。

内网穿透

为什么需要内网穿透呢?我们目前所搭建的Home Assistant服务,访问的地址是一个内网IP。这就意味着这个服务暂时只能在局域网中访问。而如果想要实现天猫精灵接入Home Assistant的目的,必须让这个服务在外网也可以访问到。为了达到这个目的,可能又要经过一番折腾了。

如果你家中的宽带网络具有公网IP,那么恭喜你,实现内网穿透是一件很容易的事情。问题是,现在公网IP属于稀缺资源,大部分网络运营商并不会轻易给你一个公网IP,所以要实现内网穿透就要另辟蹊径了。

一般常用的方式有ngrok和frp。你可以选择自己购买云服务器或者VPS搭建这些服务为己所用。也可以选择一些商家搭建好的免费或者收费的服务。无论是ngrok还是frp,其服务的搭建和客户端的使用都略微复杂,展开的话都是一个比较大的话题。鉴于折腾的人比较多,其相关资源也很丰富,我就不再赘述了。

以上两种常见的内网穿透方法我都用过,由于种种原因,用起来并不顺手。后来我换用了一种更简单的方式---花生棒。首先声明这不是广告,并以京东订单截图证明我的清白。

另一方面,Oray随便在站内软文比较多,但是其确实有不少产品以简单的方式解决了我们的一些网络需求。比如向日葵远程控制和花生棒内网穿透,都成了我日常生活中不可缺少的软硬件产品。

花生棒实现内网穿透真的十分简单。首先,把花生棒通过网线,连接到需要进行内网穿透的那个设备所处的路由器上。然后,登录注册并绑定好花生棒硬件的Oray账号,进入花生壳的内网穿透管理页面。在映射列表里,增加一条映射。

在映射编辑界面,选择一个免费的花生壳二级域名。外网端口号在免费使用的情况下只能动态生成,无法指定。接着再填入内网主机的IP和端口号即可。

然后根据此设置会生成一个外网访问地址,以后就可以通过这个地址访问内网所搭建的Http服务。

一个花生棒的免费配额如下:端口映射2条,带宽速度,1Mbps/映射,花生壳流量1G/月(花生棒首年2G/月)。

两条映射被我分别用来穿透路由器管理页面和Home Assistant。暂时没有别的穿透需求,基本够用了。网速限制和流量限制对于我的应用场景也不会造成太大影响。花生棒虽然有种种限制和不足,但是好在方便易用,适合不喜欢折腾的,或者采用其他方案折腾失败的用户。

域名解析

到目前为止,你应该有一个外网可以访问的Home Assistant 服务了。如果你是公网IP,那么你的访问地址很可能是IP加端口号;如果是通过其他方式进行内网穿透,那么你得到的访问地址可能是一个内网穿透服务商的二级域名加端口号。无论哪种方式,都不如使用一个自己的域名来的方便和亲切。因此我们最好注册一个自己的域名。

域名服务提供商有很多,其注册方式也大同小异。价格上也基本没有太大区别。我是在万网注册的域名,万网目前已经纳入阿里云旗下,成为其子产品之一。传统的大家比较熟悉的com、net的域名价格偏高。另外一些比如xyz、site、fun、online这些易记住的域名虽然首年价格很低,但是续费价格略高。通过筛选,我建议使用top域名,名字既响亮,价格也很合理,三年只需要67元,续费价格则为78元。域名购买完毕后,就进入域名控制台,添加一条解析。

如果你是公网IP地址,那么需要添加一条A解析。如下图所示。

记录类型选择:A,主机记录填写的是你想要访问的地址,记录值就是你的公网IP。添加完毕后,就可以通过你的域名地址加原来的端口号访问Home Assistant。

如果你已经有一个可以访问Home Assistant 的二级域名,那么需要添加一条CNAME解析。如下图所示。

记录类型选择CNAME,主机记录和上面一样,你也可以有不同的选择,不同值所对应的含义可以通过点击右边的那个问号查看。记录值填写那个可以访问Home Assistant 的二级域名。设置并添加完毕后,效果同上,不再赘述。

至此,你应该有一个属于你自己的个性化的访问Home Assistant的域名了。

猫精接入史

在继续进行下去之前,我觉得有必要讲述一下天猫精灵接入Hone Assistant的过去和现状。这样我们就能了解为了让天猫精灵接入Home Assistant,Hassbian的诸位热心网友做了多少付出和贡献。

最早的时候,天猫精灵接入Home Assistant是通过在天猫精灵开放平台自定义技能实现的。这种方法的灵活性和扩展性都很好。但是这种方式需要使用者自己搭建PHP代理网关,并实现OAuth2认证。如果你有网站架设经验,那么可能这对你来说不是什么有难度的事情。但是对于虽身为程序员,但从未涉足Web开发的我来说,依然经历了从信心满满dao到黯然放弃的过程。

接着第二种接入方法出现了。由于天猫精灵官方支持了飞利浦Hue灯,因此可以通过HaBridge将设备模拟成Hue,从而实现对设备的控制。这种方法可以免去搭建PHP 代理网关和实现OAuth2认证的步骤,大大降低了实现的难度。然而这种方法本质上是把设备模拟成灯,因此无法实现对设备更为丰富的控制命令。

然后,一种更为便捷的接入方式出现了。Hassbian热心网友将第一种接入实现方式的代码贡献给论坛,并由论坛官方架设了一台服务器,以供广大网友使用。使用者只需要填入自己的外网访问地址和访问密码,就能将天猫精灵方便地接入Home Assistant。这就相当于论坛把颇有难度的几个步骤代替大家完成了,并贡献服务器出来为大家所用。我曾长期使用这种方式,将天猫精灵接入Home Assistant。如果不想继续折腾,那么这也是我推荐的方式。在我撰写本文的过程中,站内已经有值友对这种方法整理成文,感兴趣的可以参考。

家庭妇男的智能家居折腾之路—与君子动口不动手只差四步,天猫精灵控制HA设备

小编注:想获得更多专属福利吗?金币加成、尊享众测、专属勋章、达人福利任务你想要吗?如果想要,赶紧来申请认证站内生活家!猛击此链接很多值友在前几篇家庭妇男的智能家居折腾之路系列文章下留言,表达了折腾智能家居完全没有必要的观点。的确,现阶段的智能家居确实不够智能,甚至有些智障。举个例子,只要你吩咐一声,

NetYJ

|

赞2

评论17

收藏57

查看详情

然而通过利用Hassbian的服务器实现天猫精灵接入Home Assistant依然存在些许不足。首先,论坛所搭设的服务器采用的Home Assistant安全验证方式是legacy_api_password。目前,最新版的Home Assistant将逐步移除这种不安全的验证方式,转而采用Long-Lived Access Tokens的方式。虽然代码原作者已经增加了两种验证方式的支持,但是我一段时间前验证的时候,Hassbian论坛所提供的服务并没有合入这部分更新,现在不知道是否支持了。其次,利用这种方式,相当于将天猫精灵的指令请求先转发到Hassbian的服务器,再发送给天猫精灵的服务器。据我所知,Hassbian的服务器是架设在海外的。如果家里的网络跟Hassbian的服务器连接状况不好的话,就会影响天猫精灵对指令响应的实时性和稳定性。

既然问题出现了,那么就必然会出现解决问题的人。首先膜拜一下这位大神:点我前去膜拜。这位大神是Home Assistant官方OAuth2认证系统缔造者。曾经挡在许多人面前的OAuth2认证的搭建,终于能够被新版本的Home Assistant原生支持了。既然我们已经有Home Assistant帮我们做好了OAuth2认证,所以只需要自己再实现一个网关就好了。

这一段内容可能对于很多没有相关基础的人来说有些难以理解。没关系,我们继续往下走。

SSL证书申请

在上上一个章节里面,我们已经有了一个可以外网访问Home Assistant的域名,这个域名一般情况下都是HTTP协议的。但是如果想让天猫精灵能够顺利接入Home Assistant,我们需要的是一个加密的HTTPS的地址。为了实现这个目的,我们需要申请和部署SSL证书。

SSL证书的申请,很多人可能都会选择Let's Encrypt。Let's Encrypt是一个证书授权机构,我们可以利用它的获取证书的客户端Certbot,免费快速地获取Let's Encrypt证书。具体方法本文不打算展开,网上也有很多教程,可以搜索并参考。

我并没有使用Let's Encrypt的证书。由于我的域名是在阿里云万网上申请注册的,因此我就直接阿里云上申请证书了。具体的步骤如下。

1.进入阿里云的管理控制台,并在"产品与服务"中"安全(云盾)"中找到"SSL证书(应用安全)"。不得不说,阿里云产品太多了,找都不好找。

2.点击右上角的购买证书进入证书购买页面。

3.一般的商用的SSL证书价格都很昂贵。当然,我们只要免费的。证书品牌选择"Symantec",证书类型先点一下"增强型OV SSL",然后选择"免费型DV SSL",然后价格就变成0.00元了。点击立即购买。

4.购买完毕后回到控制台,你购买的证书就出现在证书列表里,想使用的话还需要进一步补全信息。

5.证书绑定域名就是访问Home Assistant的域名。因为我是在阿里云万网申请的域名,所以域名验证方式直接选择"自动DNS验证"。只要域名使用阿里云DNS,都可以通过这种方式验证。当前操作后,系统自动调用云解析API添加一条记录,完成域名授权验证,十分便捷。CSR生成方式选择"系统生成"即可。然后点击下一步,进入验证界面。

6.在这个界面点击验证,不出什么意外都会成功。这时,在你的域名解析设置页面会多一条TXT记录,就是上面所说的用来完成域名授权验证的。

7.证书申请提交后,等待审核完成。审核完毕,就可以在"已签发"中找到通过审核的证书。点击下载,选择其他类型将证书下载到本地,准备做进一步部署。

注意,证书是存在有效期的,用上面的方法申请到的证书有效期是1年。到期需要重新申请证书并在服务器上更换证书。

SSL证书配置

将上一步下载的证书解压,会得到一个key文件和一个per文件。使用文本编辑器打开这两个文件,并按照下面的格式合并为一个文件,并保存为your.cert

-----BEGIN RSA PRIVATE KEY-----

XXXX

-----END RSA PRIVATE KEY-----

-----BEGIN CERTIFICATE-----

XXXX

-----END CERTIFICATE-----

-----BEGIN CERTIFICATE-----

XXXX

-----END CERTIFICATE-----

把key文件和cert文件和传到你部署Home Assistant的服务器上。在Home Assistant的配置文件configuration.yaml中添加如下内容,根据你的实际情况做修改:

http:

ssl_certificate: /path/to/your/cert_file

ssl_certificate: /path/to/your/key_file

完成上述设置后,重启你的Home Assistant,你就可以通过HTTPS访问之前的域名了。

接入实战

从这一部分开始,进入了本文最重要的部分。原贴请参考这里:点我直达。希望你前面的准备工作已经做好了,并利用Home Assistant接入了一些智能家居,且配置正确、使用正常。

网关配置

完成HTTPS域名访问后,就给我们进行接下来的配置扫清了一切障碍了。首先,我们要先实现网关,从此地址下载代码到Home Assistant配置目录的custom_components子目录下。感谢原作者。

然后在configuration.yaml里面加入下面的内容:

aligenie:

expire_hours: 8760

expire_hours意思是多少个小时后需要重新进行授权。expire_hours的默认值是8760小时,即365天,和SSL证书过期时间一致。注意,即使有默认值,此项配置也不能省略,这样才能让插件正常工作。同时,为了方便后续的调试工作,请将log级别调整为info,在configuration.yaml加入:

logger:

default: info

这个自定义的插件就是我们要实现的网关。现在把它以插件的形式集成到Home Assistant中,省去了额外搭建网关服务的步骤。

额外配置

此时你可能已经配置好了你的Home Assistant,并添加了一些智能家居设备。但是,为了让天猫精灵识别这些设备,还需要进行一些额外的设置。原文请参考这里:点我直达。

我以我的松下吸顶灯为例,讲解一下如何进行额外的配置。我这个吸顶灯可以通过红外遥控器控制开关,我利用博联黑豆对它进行控制。其实天猫精灵是原生支持博联黑豆的,但是博联黑豆的支持设备列表里面没有我这台松下吸顶灯。所以只能依靠Home Assistant曲线救国了。在Home Assistant中,我的这台吸顶灯的配置如下,也就是很基础的博联设备的配置方法。

switch:

- platform: broadlink

host: 192.168.50.233

mac: '44:44:44:44:44:44'

timeout: 15

switches:

panasonic_light:

command_on: 'xxxxxxxxxxx'

command_off: 'xxxxxxxxxxx'

为了让天猫精灵能够识别这个设备,还需要填写以下三个重要字段,且每个字段都有固定的名称列表,不能随意修改:

1. hagenie_zone:此字段指代你设备所处的区域,如客厅、餐厅等,可选值参考这里:点我直达。

2. hagenie_deviceName:此字段指代你的设备名称,可选值参考这里:点我直达。

3. hagenie_deviceType:此字段指代你的设备类型,可选值参考这里:点我直达。

当跟天猫精灵进行语音交互式,hagenie_zone和hagenie_deviceName是比较重要的字段,再次强调,务必从可选值列表中选取。比如我的客厅的松下吸顶灯的额外配置为:

switch.panasonic_light:

friendly_name: 客厅灯

hagenie_deviceName: 灯

hagenie_deviceType: light

将此段配置放置到customize.yaml中。我如果想通过天猫精灵控制这个吸顶灯,就可以说:天猫精灵,打开客厅吸顶灯。如果吸顶灯只有一个,也可以省去说出"客厅"两个字。

我再以我的小米空气净化器2示范一下如何配置。首先,小米空气净化器在Home Assistant中的配置如下。

fan:

- platform: xiaomi_miio

name: Xiaomi Air Purifier 2

host: 192.168.50.233

token: 000000000000000000000000

model: zhimi.airpurifier.m1

然后为了适配天猫精灵网关的额外配置如下。

fan.xiaomi_air_purifier_2:

friendly_name: 客厅空气净化器

hagenie_deviceName: 空气净化器

hagenie_deviceType: airpurifier

最好将配置放到customize.yaml下,这样比较规范。完成了这一步后,我们离成功越来越近了。

AliGenie开发者平台配置

Home Assistant这边配置完毕后,我们还需要在AliGenie开发者平台进行进一步配置。AliGenie开发者平台就是阿里天猫精灵的开发者平台,其地址在此:点我直达。使用你登录手机端天猫精灵App的账号登录AliGenie开发者平台,并进入控制台。

点击"添加新技能"进入技能创建页面。技能信息里面的东西可以自行根据情况填写,没有什么特殊要求。填写完毕后点击下一步。

服务设置里面则是重点,首先要进行OAuth2的设置。最新版本的Home Assistant已经自带OAuth2,并且我们实现了网址的HTTPS访问,因此在OAuth2设置中填入如下内容,根据你的实际情况做修改,其中Client Secret可以随意填写:

账户授权连接

Client ID

Client Secret:itdoesnotmatter

Access Token URL

接着,在设备管理设置中填入如下内容,根据你的实际情况做修改:

开发者网关地址

正是因为开发者平台要求填写OAuth2和网关地址的时候,必须是HTTPS的网址,所以才有了申请并部署SSL,让Home Assistant支持HTTPS访问这一步骤。此页面余下的内容可以不用理会。

模拟真机测试

完成上述设置后点击下一步进入"测试验证"页面,开启真机测试。

这时你可以点击“在新窗口打开”,网页会跳出如下弹出窗口。

点击“账户配置”,如果你之前的网关搭建并运行都没有错误的话,会进入授权页面,此时需要输入你Home Assistant的用户名和密码。

完成账户授权验证后,如果一切正常,贵显示等待三秒返回设备列表。

等待三秒钟,不出意外的话,在设备列表中,除了你原来在天猫精灵中添加的智能家居设备,你应该也可以看到你在Home Assistant中配置的智能家居设备了。比如我在Home Assistant中添加的设备如下。

那么返回的设备列表应该是这样的,前提是你为这些设备进行了额外配置,请参照上面的相关章节。

同时,打开你手机端的天猫精灵App,在智能家居列表里刷新,正常情况下,Home Assistant中的设备也会出现在这里了。这时,去尝试一下语音控制你的设备吧。

至此,恭喜你,基本大功告成。当然你的过程可能并没有那么顺利。如果遇到问题,请仔细分析相关日志,认真检查每一步的配置。另外需要注意的是,完成测试验证后,不需要提交审核,保持现状即可。

祝君好运。

简化归纳

上面写了一大段又一大段文字,初次接触的朋友可能一下子难以接受,我在本小节将上面的各个步骤进行简单的归纳,以方便你的理解。

天猫精灵接入Home Assistant的基本步骤如下:

  • 1.在你顺手的平台上搭建Home Assistant服务。
  • 2.使用你觉得简单可行的方式实现内网穿透。
  • 3.实现Home Assistant使用自己申请的域名访问。
  • 3.申请SSL证书。
  • 4.配置SSL证书,使Home Assistant支持HTTPS访问。
  • 5.完成天猫精灵网关的搭建和配置。
  • 6.对已经加入到Home Assistant中的智能家居设备进行额外配置以支持天猫精灵。
  • 7.在AliGenie开发者平台完成OAuth2和网关地址配置。
  • 8.开启模拟真机测试验证配置是否正确并返回设备列表。
  • 9.天猫精灵App端检查设备列表是否正常,并实践一下语音控制是否正常。

通过上面的归纳总结,希望你能对整体的过程有一个大概的认识,具体步骤还要去每个小章节中仔细查阅。

写在最后

本文介绍的是天猫精灵的Home Assistant接入方式。如果你有小度智能音箱,也有类似的接入方法,具体可以在hassbian论坛里面搜索相关教程。对于完美没有相关基础的人来说,实践这些步骤是有些困难的。而那些之前折腾过Home Assistant的朋友,估计弄起来会比较容易一些。但是,也依然免不了遇到这样或者那样的问题。如果遇到问题,我建议首先仔细参阅各种教程,检查自己的配置。然后利用系统日志帮你判断分析问题。

虽然折腾的过程有些枯燥,也会经常遇到各种困难。但是通过自己的努力,排除万难,最终实现天猫精灵控制各种家用电器那一刻,感觉还是很值得的。当然也不排除由于某些原因导致反复尝试,不断纠错仍然无法成功。当你遇到这种情况,没关系,享受折腾的过程并坦然放弃就行。每次的失败都会帮助你积累经验,等再有机会的时候,从头再来就好了。人生不就是各种折腾嘛。

最后,再次感谢那些为达成天猫精灵接入Home Assistant这个目的而勤劳付出的各位程序员。