JavaScript >> Javascript 文檔 >  >> Node.js

Brewfactory:帶有 IoT 和 Node.js 的全棧 Homebrew

在這篇文章中,我想告訴您我們的自製體驗,並說明我們做了什麼以及為什麼。本文將向您介紹釀造的世界,然後繼續深入的技術細節。

請注意,這個項目不是由 RisingStack 直接開發和維護的,RisingStack 只參與了工程。 Brewfactory 是 Péter Márton(沒錯,就是我!)和 Balázs Kovács(布魯爾,馬里蘭州)的一個項目。

啤酒釀造

在過去的幾十年裡,家庭釀造已成為啤酒愛好者的一項富有成效的愛好。由於匈牙利的法律邊界在 2012 年消失了,我們也可以自己釀造批次。

從局外人的角度來看,啤酒釀造可能看起來很複雜(特別是如果您考慮到具有永無止境的閃亮罐和管道線的大規模商業釀造) 但其背後的基本原理從千年曆史的配方到現代商業釀造都保持不變。

眾所周知,啤酒基本上是由製成的 , 麥芽 在一些熱量和大量酵母的幫助下 .

酵母從所謂的可發酵糖中產生酒精,這種糖僅在大麥麥芽中少量存在。用澱粉生產更多的可發酵物(這是所有穀物的主要能量儲存 - 並且是一種糖) 我們需要增強大麥麥芽中容易獲得的酶,尤其是負責將澱粉分解成更小的(兩種糖分子)的α和β澱粉酶 .

這些酶中的每一種都具有最佳 pH 值、底物水平,尤其是最佳溫度水平 ,他們以最高的效率工作。此外,α 和 β 澱粉酶具有不同的產生不可發酵副產物的潛力(這些也是糖) ,負責口感,甜味和身體。所以這裡有溫度是你要準時的地方。

如果您想再次沖泡同樣的啤酒,您和您的朋友去年非常喜歡,您必須使用相同的成分(Weyermann 和他們的競爭對手為您準備了這個) 並經歷相同的溫度階段 在釀造過程中,就像你上次所做的那樣。
(同樣數量的相同酵母和相似的發酵溫度也是必要的。)

為了保持這些準確的溫度,所有商業啤酒廠都轉向自動化。在較大的系統中,即使是 20-30 公斤的批次,使用雙金屬恆溫器保持溫度接近 0.5 攝氏度也不容易​​。這就是為什麼您需要一個系統來計算過熱並在所需溫度之前關閉加熱單元,讓熱傳導和余熱將溫度探頭推到最後幾度。

有許多釀造裝置可以幫助您釀造出優質啤酒(查看 HERMS NASA 火箭科學家設計的系統)。您可以在舊大鍋中輕鬆釀造啤酒,但為了重現性,您至少需要一個部分自動化的系統。

Brutus 10,來源:alenuts.com

在對傳統的燃氣灶和鍋進行了簡短的實驗後,我們選擇了一種便於使用的袋裝電沖泡器,體積小 , 低價簡單的自動化 .

正如我們之前提到的,我們運營一個 e-BIAB 系統,是 Braumeister 概念的衍生產品。為了更容易維護和處理,我們一開始就決定,與其用水不斷攪拌穀物,不如將熱麥芽汁撒在穀物頂部。當它順著穀物“三明治”流下時,它會沖走我們寶貴的可溶性糖。用鋼網籃從穀物中分離出來的麥芽汁被精確控制的加熱元件不斷加熱 .循環由高溫維持 .

啤酒廠

在我們第一次體驗之後,我和 Balázs 創立了 Brewfactory。我們的目標很簡單:分享我們的知識並開源我們所做的一切,讓啤酒釀造體驗觸手可及。因為喝自己的啤酒 超級酷😉

團隊簡介:

一名 IT 工程師和一名醫學生走進一家酒吧。他們對出沒於玉米的 MegaBrews 感到失望,因此產生了戰鬥的動力。

尋找設備

在我們決定自動化我們的釀造過程後,我們開始尋找選項。我們想專注於釀造部分,讓它變得簡單有趣。我們不想購買現有的解決方案,而是想從內到外了解我們的系統並使其負擔得起。
我們希望盡快建造自己的釀造機,並有可能在以後對其進行改進和擴展。

我們正在尋找一種硬件,它能夠:

  • 控制開關加熱元件的繼電器
  • 讀取溫度
  • 通過 Wi-Fi 連接到互聯網

所以我們想要一個物聯網 (IoT) 設備。

物聯網,我們做了什麼

#1 BrewBerry

我們的第一選擇是 RaspberryPi,它是一款基於 linux 的迷你計算機。原因很簡單:我們熟悉基於 unix 的系統,並且有一些 rPI 經驗。

將準備好的 linux 映像文件設置到 SD 卡並安裝一些 debian 很容易 包。我們選擇了 Node.jsNode.js 是一個異步事件驅動的 JavaScript 運行時,在構建可擴展的網絡應用程序時最有效。 Node.js 沒有鎖,因此沒有機會死鎖任何進程。控制釀造——硬件通過 unix 管道與 Node.js 應用程序進行通信。它使用一些 AngularJS UI 啟動服務器,並且可以從同一網絡在瀏覽器中訪問。

我們將項目命名為 Brewberry,代碼庫可在 Brewfactory GitHub 組織中獲得。您可以找到如何從乾淨的 Raspberry Pi 設置項目的詳細說明:從零到 IPA

#2 BrewCore

我們基於 Raspberry Pi 的 Brewberry 解決方案遇到了一個大問題:發生斷電時,SD 卡損壞,我們無法繼續釀造。當它第二次發生時,我們決定放棄 Raspberry,並開始尋找基於 Arduino 的解決方案。最後,我們選擇了 SparkCore,因為它們超級簡單的雲集成 .

由於 SparkCore 與 Arduino 世界完全兼容,我們可以輕鬆地將一些開源 C++ 庫連接在一起,以通過 PID 控制繼電器並讀取溫度。我們將 Node.js 服務器應用程序(釀造邏輯)移至雲端(目前是 Heroku) ,通過 REST API 和服務器發送事件與 Spark 雲進行通信。

我們將該項目稱為 BrewCore,您可以在 Brewfactory GitHub 存儲庫中找到代碼。我們也分享了 Spark 端的代碼:spark-core-pid-temperature

用我們的 DEMO 為您釀造啤酒😉

是的,你也可以用這個疊放真空低溫烹調法、沖泡果醬或大茶……

堆棧

BrewCore 項目包含三個主要組件:

1。硬件
(SparkCore、雲、固態繼電器 (SSR)、DS18B20、加熱線)、
2。 BrewCore (Node.js、WebSockets、MongoDB)
3。用戶界面 (推特引導,AngularJS)

1.硬件

我們有兩個 2-KW 加熱元件,它們連接到兩個固態繼電器(我們使用 SSR,因為 PWM 需要它) .繼電器通過 DS18B20 溫度測量設備連接到 SparkCore。我們僅在設備上存儲目標溫度。系統試圖達到並保持這個溫度。

釀造系統的硬件部分只做了四個簡單的事情:

  • 測量液體的實際溫度
  • 使用 PID 控制器計算實際輸出*
  • 使用內置 PWM 控制繼電器
  • 將數據發送到我們的 BrewCloud

*(PID 控制器:我們需要多少功率才能達到或保持點溫度)

2. BrewCore

這是一個基於 Koa 的 Node.js 應用程序,它與 SparkCore 云通信並控制釀造階段。它還將日誌收集到 MongoDB 數據庫。
BrewCore 使用 WebSockets 與接口和 BrewMobile iOS 客戶端進行通信。

您可以使用內置硬件模擬器在本地安裝和運行 BrewCore。它使用liquid-pid NPMnpm 是一個軟件註冊表,為超過130 萬個軟件包提供服務。來自世界各地的開源開發人員以及許多企業都使用 npm 來共享和借用代碼。 npm 包含三個組件: 網站 命令行界面 (CLI) 註冊表 使用網站發現和下載包,創建用戶配置文件,以及... 模擬真實環境的模塊。

3.用戶界面

該接口目前是 BrewCore 項目的一部分。它使用 AngularJS 和 Twitter Bootstrap。它反應靈敏,能夠可視化以前的釀造。它作為您的儀表板運行,您可以在其中設置沖​​泡階段並控制沖泡。

BrewMobile

從一開始就有一個界面很重要,我們可以在其中輕鬆監控和控制釀造過程,從任何地方,無需計算機。我們遵循移動優先的方法,並為我們的應用程序創建了一個響應式 Web 界面。
後來當 Ágnes Vásárhelyi 加入我們的團隊時,她為 Brewfactory 開發了一個 iOS 應用程序,我們稱之為 BrewMobile。它是使用 Swift 編寫的,並使用 WebSockets 進行通信。您可以在此處獲取代碼。

未來

我們對 Brewfactory 項目的未來有一個願景。我們想創建一個模塊化的(分離的開源模塊) 釀造平台,人們可以輕鬆地將他們的物聯網設備連接到 BrewCloud 並釀造自己的啤酒。
通過分享食譜和技巧來擴展這個雲,並將其變成一個平台,這也很棒 家庭釀酒師可以在這里分享他們的經驗和知識。

盈利?

很多人問我們為什麼不生產我們的釀造系統。
老實說,建立一家正在醞釀中的初創公司真的很有趣,但是:建立一家硬件初創公司尤其困難,關於我們如何做到這一點,讓每個人都能負擔得起,還有很多懸而未決的問題。

加入我們

你對@Brewfactory 感興趣嗎?
加入我們作為 Brewfactory GitHub 的貢獻者。

如果您想試用 BrewCore,可以使用 BrewCore DEMO。

我要感謝 Balázs Kovács 幫助我撰寫這篇文章。


Tutorial JavaScript 教程
  1. 從位於子文件夾中的文件中獲取 HTML 輸入值?

  2. preg:如何編寫一個 preg 模式從電子郵件中獲取域名?

  3. 加速交付:使用 ReactJS、Tailwind CSS 快速構建管理面板或類似儀表板的應用程序。第一部分

  4. React – 如何修復非常不一致的禁用按鈕倒計時(即整秒)

  5. 如何免費部署 Express 應用程序?

  6. 您的靜態站點到 PWA!

  7. 重構舊的 React 應用程序:創建自定義 Hook 以使與 Fetch 相關的邏輯可重用

  1. 是時候開始破解了——Rec Room 簡介

  2. 創建你自己的虛擬 DOM 來理解它(第 1 部分)

  3. 將字符串轉換為數組聲明

  4. 如何從 JavaScript 修改 CSS 顯示屬性?

  5. 使用 Alan AI 的 JavaScript 語音啟用 Pacman 應用程序(視頻)

  6. 每天使用的 3 個 JS 代碼片段網站!

  7. tsParticles v1.12.0 發布

  1. 學習 d3.js 的 5 個關鍵概念以及如何理解它們

  2. 如何使用正則表達式匹配任何字母組合?

  3. Chrome DevTools:使用代碼段提高生產力

  4. 我在 2 個月的編碼訓練營中的經歷