習PHP的都想剖開框架了解下底層原理,一個PHP資源列表,內容包括:庫、框架、模板、安全、代碼分析、日志、第三方庫、配置工具、Web 工具、書籍、電子書、經典博文等等。
依賴和包管理庫
Composer/Packagist - 一個包和依賴管理器
Composer Installers - 一個多框架Composer庫安裝器
Pickle - 一個PHP擴展安裝器
Melody - 一個用于構建Composer腳本文件的工具
Climb - 一個Composer版本管理工具
其他的相關依賴管理
Satis - 一個靜態Composer存儲庫的生成器
Toran Proxy - 一個靜態Composer存儲庫和代理
Composition - 一個在運行時檢查Composer環境的庫
NameSpacer - 一個轉化下劃線到命名空間的庫
Patch Installer - 一個使用Composer安裝補丁的庫
Composer Checker - 一個校驗Composer配置的工具
Prestissimo - 一個開啟并行安裝進程的Composer插件
Composer Merge Plugin - 一個用于合并多個composer.json文件的Composer插件
Web開發框架
Symfony 2 - 一個獨立組件組成的框架 (SF2)
Zend Framework 2 - 另一個由獨立組件組成的框架 (ZF2)
Laravel 5 - 另一個PHP框架 (L5)
Aura PHP - 一個獨立的組件框架
Yii2 - 另一個PHP框架
Nette - 另一個由個體組件組成的框架
PPI Framework 2 - 一個互操作性框架
CakePHP - 一個快速應用程序開發框架 (CP)
Phalcon - 通過C擴展實現的框架
其他Web開發框架
Symfony CMF - 一個創建自定義CMS的內容管理框架
Knp RAD Bundle - Symfony 2的快速應用程序(RAD)包
CakePHP CRUD - CakePHP的快速應用程序(RAD)插件
來自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軟件開發組
加載配置文件的庫
Zend-config - Zend框架的配置組件
微型框架和路由
Silex - 基于Symfony2組件的微型框架
Slim - 另一個簡單的微型框架
Bullet PHP - 用于構建REST APIs的微型框架
Lumen - 一個Laravel的微型框架
Proton - 一個StackPHP兼容的微型框架
其他相關的微型框架和路由
Silex Skeleton - Silex的項目架構
Silex Web Profiler - 一個Silex web的調試工具
Slim Skeleton - Slim架構
Slim View - Slim自定義視圖的集合
處理應用路由的庫
Fast Route - 一個快速路由的庫
Route - 一個基于Fast Route的路由的庫
Pux - 另一個快速路由的庫
Klein - 一個靈活的路由的庫.
模板化和詞法分析的庫和工具
Twig - 一個全面的模板語言
Twig Cache Extension - 一個用于Twig的模板片段緩存庫
Mustache - 一個Mustache模板語言的PHP實現
Phly Mustache - 另一個Mustache模板語言的PHP實現
MtHaml - 一個HAML模板語言的PHP實現
PHPTAL - 一個TAL模板語言的PHP實現
Plates - 一個原生PHP模板庫
Lex - 一個輕量級模板解析器
用來生成web頁面的預處理內容的工具
Sculpin - 轉換Markdown和Twig為靜態HTML的工具
Phrozn - 另一個轉換Textile,Markdown和Twig為HTML的工具
Spress - 一個能夠將Markdown和Twig轉化為HTML的可擴展工具
Couscous - 一個將Markdown轉化為漂亮的網站的工具
用于HTTP和網站爬取的庫
Guzzle - 一個全面的HTTP客戶端
Buzz - 另一個HTTP客戶端
Requests - 一個簡單的HTTP庫
HTTPFul - 一個鏈式HTTP庫
Goutte - 一個簡單的web爬取器
PHP VCR - 一個錄制和重放HTTP請求的庫
使用中間件構建應用程序的庫
Stack - 一個用于Silex/Symfony的可堆疊的中間件的庫
Slim Middleware - 一個用于Slim的自定義的中間件的集合
Conduit - Sencha Connect連接到PHP的一個端口.
解析URL的庫
Purl - 一個URL處理庫
Uri - 另一個URL處理庫
PHP Domain Parser - 一個本地前綴解析庫
發送和解析郵件的庫
SwiftMailer - 一個郵件解決方案
PHPMailer - 另一個郵件解決方案
Fetch - 一個IMAP庫
Email Reply Parser - 一個郵件回復解析的庫
Stampie - 一個郵件服務庫,類似于SendGrid,PostMark,MailGun和Mandrill.
CssToInlineStyles - 一個在郵件模板中的內聯CSS庫
Email Validator - 一個較小的電子郵件驗證庫
Mautic - 郵件營銷自動化
文件處理和MIME類型檢測的庫
Gaufrette - 一個文件系統抽象層
Flysystem - 另一個文件系統抽象層
Canal - 一個檢測互聯網媒體類型的庫
Apache MIME Types - 一個解析Apache MIME類型的庫
Ferret - 一個MIME檢測庫
Hoa Mime - 另一個MIME檢測庫
Lurker - 一個資源跟蹤庫
PHP FFmpeg - 一個用于FFmpeg視頻包裝的庫
CSV - 一個CSV數據處理庫
處理流的庫
Streamer - 一個簡單的面向對象的流包裝庫
實現依賴注入設計模式的庫
Pimple - 一個小的依賴注入容器
Auryn - 一個遞歸的依賴注入容器
Container - 另一個可伸縮的依賴注入容器
PHP-DI - 一個支持自動裝配和PHP配置的依賴注入容器
Acclimate - 一個依賴注入容器和服務定位的通用接口
Symfony DI - 一個依賴注入容器組件 (SF2)
處理圖像的庫
Imagine - 一個圖像處理庫
PHP Image Workshop - 另一個圖像處理庫
Intervention Image - 另一個圖像處理庫
GIF Frame Extractor - 一個提取GIF動畫幀信息的庫
GIF Creator - 一個通過多張圖片創建GIF動畫的庫
Image With Text - 一個在圖像中嵌入文本的庫
Color Extractor - 一個從圖像中提取顏色的庫
Glide - 一個按需處理圖像的庫
Image Optimizer - 一個優化圖像的庫
Image Hash - 一個用于生成圖像哈希感知的庫
測試代碼和生成測試數據的庫
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和代碼覆蓋率的支持
持續集成的庫和應用
Travis CI - 一個持續集成平臺
SemaphoreCI - 一個開放源碼和私人項目的持續集成平臺
PHPCI - 一個PHP的開源的持續集成平臺
Sismo - 一個持續測試的服務庫
Jenkins - 一個PHP支持的持續集成平臺
JoliCi - 一個用PHP編寫的由Docker支持的持續集成的客戶端
生成項目文檔的庫
Sami - 一個API文檔生成器
APIGen - 另一個API文檔生成器
PHP Documentor 2 - 一個API文檔生成器
phpDox - 一個PHP項目的文檔生成器(不限于API文檔)
daux.io - 一個使用Markdown文件的文檔生成器
生成安全的隨機數,加密數據,掃描漏洞的庫
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乘法散列方法的身份混淆工具
處理和存儲密碼的庫和工具
Password Compat - 一個新的PHP5.5密碼函數的兼容庫
phpass - 一個便攜式的密碼哈希框架
PHP Password Lib - 一個生成和校驗密碼的庫
Password Policy - 一個PHP和JavaScript的密碼策略庫
Password Validator - 一個校驗和升級密碼哈希的庫
Zxcvbn PHP - 一個基于Zxcvbn JS的現實的PHP密碼強度估計庫
GenPhrase - 一個隨機生成安全密碼哈希的庫
分析,解析和處理代碼庫的庫和工具
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 - 一個自動代碼審查工具
相關的設計模式庫,組織代碼編程的方法和途徑
PHP Option - 一個可選的類型庫
Ruler - 一個簡單的無狀態的生產環境規則引擎
Finite - 一個簡單的PHP有限狀態機
Compose - 一個功能組合庫
Monad PHP - 一個簡單Monad庫
Patchwork - 一個重新定義用戶的函數庫
Galapagos - 語言轉換進化
Design Patterns PHP - 一個使用PHP實現的設計模式存儲庫
Functional PHP - 一個函數式編程庫
Iter - 一個使用生成器提供迭代原語的庫
Pipeline - 一個管道模式的實現
調試和分析代碼的庫和工具
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 - 一個基準測試框架
項目構建和自動化工具
Bob - 一個簡單的項目自動化工具
Phake - 一個PHP克隆庫
Box - 一個構建PHAR文件的工具
Phing - 一個靈感來自于Apache Ant的PHP項目構建系統
自動運行任務的庫
Task - 一個靈感來源于Grunt和Gulp的純PHP任務運行器
Robo - 一個面向對象配置的PHP任務運行器
Bldr - 一個構建在Symfony組件上的PHP任務運行器
構建導航結構的工具
KnpMenu - 一個菜單庫
Cartographer - 一個站點地圖生成庫
管理,壓縮和最小化web站點資源的工具
Assetic - 一個資源管理的管道庫
Pipe - 另一個資源管理的管道庫
Munee - 一個資源優化庫
JShrink - 一個JavaScript的最小化庫
Puli - 一個檢測資源絕對路徑的庫
地理編碼地址和使用緯度經度的庫
GeoCoder - 一個地理編碼庫
GeoTools - 一個地理工具相關的庫
PHPGeo - 一個簡單的地理庫
GeoJSON - 一個GeoJSON的實現
處理日期和時間的庫
Carbon - 一個簡單的日期時間API擴展
ExpressiveDate - 另一個日期時間API擴展
CalendR - 一個日歷管理庫
時間驅動或實現非阻塞事件循環的庫
React - 一個事件驅動的非阻塞I/O庫.
Rx.PHP - 一個reactive擴展庫
Ratchet - 一個web socket庫
Hoa WebSocket - 另一個web socket庫
Hoa EventSource - 一個事件源庫
Evenement - 一個事件調度的庫
Event - 一個專注于域名事件的庫
Cake Event - 一個事件調度的庫 (CP)
Broadway - 一個事件源和CQRS(命令查詢責任分離)庫
生成和處理日志文件的庫
Monolog - 一個全面的日志工具
KLogger - 一個易用的兼容PSR-3的日志類
Analog - 一個基于閉包的微型日志包
處理支付和構建在線電子商務商店的庫和應用
OmniPay - 一個框架混合了多網關支付處理的庫
Payum - 一個支付抽象庫
Sylius - 一個開源的電子商務解決方案
Thelia - 另一個開源的電子商務解決方案
Money - 一個Fowler金錢模式的PHP實現
Sebastian Money - 另一個處理貨幣值的庫
Swap - 一個匯率庫
處理PDF文件的庫和軟件
Snappy - 一個PDF和圖像生成器庫
WKHTMLToPDF - 一個將HTML轉換為PDF的工具
PHPPdf - 一個將XML文件轉換為PDF和圖片的庫
Dompdf - 一個將HTML轉換為PDF的工具
Libraries for working with office suite documents.
PHPWord - 一個處理Word文檔的庫
PHPExcel - 一個處理Excel文檔的庫
PHPPowerPoint - 一個處理PPT文檔的庫
ExcelAnt - 一個操作Excel文檔的庫
使用對象關系映射(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)
幫助管理數據庫模式和遷移的庫
PHPMig - 另一個遷移管理庫
Phinx - 另一個數據庫遷移的管理庫
Migrations - 一個遷移管理庫
Doctrine Migrations - 一個Doctrine的遷移庫
Ruckusing - 基于PHP下ActiveRecord的數據庫遷移,支持MySQL, Postgres, SQLite
處理NoSQL后端的庫
MongoQB - 一個MongoDB查詢構建庫
Monga - 一個MongoDB抽象庫
Predis - 一個功能完整的Redis庫
處理事件和任務隊列的庫
Pheanstalk - 一個Beanstalkd客戶端庫
PHP AMQP - 一個純PHP AMQP庫
Thumper - 一個RabbitMQ模式庫
Bernard - 一個多后端抽象庫
在數據上索引和執行查詢的庫和軟件
ElasticSearch PHP - ElasticSearch的官方客戶端庫
Elastica - ElasticSearch的客戶端庫
Solarium - Solr的客戶端庫
SphinxQL query builder - Sphinx搜索引擎的的查詢庫
關于命令行工具的庫
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
實現身份驗證和授權的庫
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客戶端的庫
處理標記的庫
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字符和名稱轉換為表情符號圖片的庫
解析和處理字符串的庫
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 PHP - 一個處理數字的庫
Math - 一個處理巨大數字的庫
ByteUnits - 一個在二進制和度量系統中解析,格式化和轉換字節單元的庫
PHP Units of Measure - 一個計量單位轉換的庫
PHP Conversion -另一個計量單位轉換的庫
LibPhoneNumber for PHP - 一個Google電話號碼處理的PHP實現庫
過濾和驗證數據的庫
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)
開發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類的工具
緩存數據的庫
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
實現數據結構和存儲技術的庫
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)
處理通知軟件的庫
Nod - 一個通知庫(Growl等)
Notificato - 一個處理推送通知的庫
Notification Pusher - 一個設備推送通知的獨立庫
Notificator - 一個輕量級的通知庫
項目部署庫
Pomander - 一個PHP應用部署工具
Rocketeer - PHP世界里的一個快速簡單的部署器
Envoy - 一個用PHP運行SSH任務的工具
Plum - 一個部署庫
Deployer - 一個部署工具
國際化(I18n)和本地化(L10n)的庫
Aura Intl
Cake I18n - 消息國際化和日期和數字的本地化 (CP)
訪問第三方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
幫助構建PHP擴展的庫
Zephir - 用于開發PHP擴展,且介于PHP和C++之間的編譯語言
PHP CPP - 一個開發PHP擴展的C++庫
不在上面分類中的有用庫和工具
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工具
創建一個開發環境的軟件
在你的電腦上幫助安裝和管理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環境的工具
創建沙盒開發環境的軟件和工具
Vagrant - 一個便攜的開發環境工具
Ansible - 一個非常簡單的編制框架
Puppet - 一個服務器自動化框架和應用
PuPHPet - 一個構建PHP開發虛擬機的web工具
Protobox - 另一個構建PHP開發虛擬機的web工具
Phansible - 一個用Ansible構建PHP開發虛擬機的web工具
相關的PHP虛擬機
HHVM - Facebook出品的PHP虛擬機,Runtime和JIT
HippyVM - 另一個PHP虛擬機
Hack - 一個PHP進行無縫操作的HHVM編程語言
支持PHP的集成開發環境
Netbeans - 一個支持PHP和HTML5的IDE
Eclipse for PHP Developers - 一個基于Eclipse平臺的PHP IDE
PhpStorm - 一個商業PHP IDE
基于Web的應用和工具
3V4L - 一個在線的PHP和HHVM shell
DBV - 一個數據庫版本控制應用
PHP Queue - A一個管理后端隊列的應用
MailCatcher - 一個抓取和查看郵件的web工具
Cachet - 開源狀態頁面系統
提供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的基本步驟如下:
通過上面的歸納總結,希望你能對整體的過程有一個大概的認識,具體步驟還要去每個小章節中仔細查閱。
寫在最后
本文介紹的是天貓精靈的Home Assistant接入方式。如果你有小度智能音箱,也有類似的接入方法,具體可以在hassbian論壇里面搜索相關教程。對于完美沒有相關基礎的人來說,實踐這些步驟是有些困難的。而那些之前折騰過Home Assistant的朋友,估計弄起來會比較容易一些。但是,也依然免不了遇到這樣或者那樣的問題。如果遇到問題,我建議首先仔細參閱各種教程,檢查自己的配置。然后利用系統日志幫你判斷分析問題。
雖然折騰的過程有些枯燥,也會經常遇到各種困難。但是通過自己的努力,排除萬難,最終實現天貓精靈控制各種家用電器那一刻,感覺還是很值得的。當然也不排除由于某些原因導致反復嘗試,不斷糾錯仍然無法成功。當你遇到這種情況,沒關系,享受折騰的過程并坦然放棄就行。每次的失敗都會幫助你積累經驗,等再有機會的時候,從頭再來就好了。人生不就是各種折騰嘛。
最后,再次感謝那些為達成天貓精靈接入Home Assistant這個目的而勤勞付出的各位程序員。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。