driver-box
๐ ็ฎไป
driver-box ๆฏไธๆฌพไธไธบ็ฉ่็ฝๅบๆฏ่ฎพ่ฎก็่พน็ผ็ฝๅ
ณๆกๆถ๏ผ้็จๆไปถๅๆถๆ่ๅไบ ModbusใBACnetใHTTPใMQTTใWebSocket ็ญไธปๆตๅทฅไธๅ่ฎฎ๏ผๅๆถๆฏๆๅบไบ TCP ็ๅ็ฑป็งๆๅ่ฎฎ็ๆ ็ผๅฏนๆฅใ
่ฎพ่ฎก็ๅฟต
้่ฟๅฏนๅ็ฑป่ฎพๅค็้ไฟกๅ่ฎฎๅๆฐๆฎไบคไบๅฝขๅผ่ฟ่กๆฝ่ฑก๏ผๅฎไนไบไธๅฅๆ ๅๅ็่ฎพๅคๆฅๅ
ฅๆต็จ๏ผๆถต็ๅ็ฑป้ไฟกๅ่ฎฎ็ๅ
ฑๆง้ป่พใๅๆถ๏ผ็ปๅๅจๆ Lua ่ๆฌๅผๆๅกซ่กฅๅ่ฎฎๅทฎๅผๅ็้จๅ๏ผๅฎ็ฐไบ๏ผ
- โ
่งฃๅณ้ฉฑๅจๅทฅ็จๆฐ้็็ธ้ฎ้ข - ้่ฟ้
็ฝฎๅๅ่ๆฌๅๅคงๅน
ๅๅฐ้ๅคๅผๅ
- โ
็ปไธๆฅๅ
ฅๆ ๅ - ๅปบ็ซ่ง่ๅ็่ฎพๅคๆฅๅ
ฅๆต็จ
- โ
้ไฝๆๆฏ้จๆง - ็ๆณๆ
ๅตไธไป
้็ผๅ JSON ้
็ฝฎๆไปถๅณๅฏๅฎๆ่ฎพๅคๆฅๅ
ฅ
- โ
็ตๆดปๆฉๅฑ่ฝๅ - ๆฏๆ่ชๅฎไนๆไปถๅ Lua ่ๆฌๅบๅฏนๅคๆๅบๆฏ
ๆไปฌๆๆ driver-box ่ฝๅคไธบ IoT ๅผๅ่
ๆไพๆดๅ ้ซๆใ่้็่ฎพๅคๆฅๅ
ฅไฝ้ชใ
๐ ๆ ธๅฟ็นๆง
๐ ่ฝป้้ซๆ
- ๆ็ฎๆถๆ๏ผGo ่ฏญ่จๅผๅ๏ผๅๆไปถ็ผ่ฏ๏ผไฝ็งฏๆงๅถๅจ 10-20MB
- ไฝ่ตๆบๅ ็จ๏ผ่ฟ่กๅ
ๅญ้ๆฑไฝ๏ผๆปก่ถณไฝ่งๆ ผ่พน็ผ็ฝๅ
ณ็่ฟ่ก่ฆๆฑ
- ่ทจๅนณๅฐๆฏๆ๏ผๆฏๆ amd64ใarm64ใarmv7ใx86 ็ญๅค็ง็ณป็ปๆถๆ
- ้ซๆง่ฝๅนถๅ๏ผๅบไบ Go ๅ็จๅฎ็ฐ้ซๆ็ๅนถๅๆฐๆฎๅค็
๐ ๆไปถๅๆถๆ
- ๅ่ฎฎๆไปถ๏ผๅ
็ฝฎ ModbusใBACnetใHTTPใMQTTใWebSocket ็ญไธปๆตๅ่ฎฎๆฏๆ
- ๆฐๆฎๅฏผๅบ๏ผๆฏๆๅค็งๆฐๆฎๅฏผๅบๆนๅผ๏ผMQTTใHTTPใLinkEdge ็ญ๏ผ
- ็ญๆๆ๏ผๆฏๆๆไปถๅจๆๅ ่ฝฝใๅธ่ฝฝๅ้
็ฝฎ็ญ้่ฝฝ
- ๆ ้ๆฉๅฑ๏ผๅผๆพๆไปถๆฅๅฃ๏ผๅผๅ่
ๅฏ่ฝปๆพๆฉๅฑๅ่ฎฎๅๅ่ฝ
๐ Lua ่ๆฌๅผๆ
- ๅจๆ่งฃๆ๏ผ้่ฟ Lua ่ๆฌๅฎ็ฐๅคๆๅ่ฎฎ็ๆฐๆฎ่งฃๆๅๅค็
- ไธๅก้ป่พ๏ผๆฏๆๅจ่ๆฌไธญ็ผๅ่ฎพๅค็นๅฎ็ไธๅก้ป่พ
- ๅ
็ฝฎๅบๆฏๆ๏ผๆไพไธฐๅฏ็ๅ
็ฝฎ Lua ๅบ๏ผHTTPใJSONใๆฐๅญฆ่ฎก็ฎ็ญ๏ผ
- ็ญๆดๆฐ๏ผๆฏๆ่ฟ่กๆถๆดๆฐ่ๆฌ๏ผๆ ้้ๅฏๆๅก
๐๏ธ ๆถๆ่ฎพ่ฎก
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Export Layer โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโ
โ โ LinkEdge โ โ MQTT โ โ Gateway โ โ History/Discover โโ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ driver-box Core โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโ
โ โ Cache โ โ Shadow โ โ Event โ โ Crontab โโ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Library Layer โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Driver Scripts (Lua) + Protocol Scripts (Lua) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Plugin Layer โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโ
โ โ Modbus โ โ BACnet โ โ MQTT โ โ HTTP/WebSocket โโ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
็ฎๅฝ็ปๆ
driver-box/
โโโ driverbox/ # ๆ ธๅฟๆกๆถ
โ โโโ driverbox.go # ไธปๅ
ฅๅฃ
โ โโโ plugin.go # ๆไปถ็ฎก็
โ โโโ export.go # ๅฏผๅบ็ฎก็
โ โโโ shadow.go # ่ฎพๅคๅฝฑๅญ
โ โโโ crontab.go # ๅฎๆถไปปๅก
โโโ plugins/ # ๅ
็ฝฎๅ่ฎฎๆไปถ
โ โโโ modbus/ # Modbus ๅ่ฎฎ
โ โโโ bacnet/ # BACnet ๅ่ฎฎ
โ โโโ mqtt/ # MQTT ๅ่ฎฎ
โ โโโ httpclient/ # HTTP ๅฎขๆท็ซฏ
โ โโโ httpserver/ # HTTP ๆๅก็ซฏ
โ โโโ tcpserver/ # TCP ๆๅก็ซฏ
โ โโโ websocket/ # WebSocket ๅ่ฎฎ
โ โโโ dlt645/ # DLT645 ๅ่ฎฎ
โโโ exports/ # ๆฐๆฎๅฏผๅบๆไปถ
โ โโโ linkedge/ # ๅบๆฏ่ๅจ
โ โโโ mirror/ # ้ๅ่ฎพๅคๆๅก
โ โโโ discover/ # ่ฎพๅค่ชๅจๅ็ฐ
โ โโโ gateway/ # ๅๅธๅผ็ฝๅ
ณ
โโโ internal/ # ๅ
้จๅฎ็ฐ
โ โโโ core/ # ๆ ธๅฟ้ป่พ
โ โโโ cache/ # ็ผๅญ็ฎก็
โ โโโ export/ # ๅ
็ฝฎExport
โ โโโ shadow/ # ๅฝฑๅญๆๅก
โโโ pkg/ # ๅ
ฌๅ
ฑๅ
โ โโโ config/ # ้
็ฝฎ็ฎก็
โ โโโ event/ # ๅนณๅฐไบไปถๅฎไน
โ โโโ library/ # ่ตๆบๅบ
โ โโโ crontab/ # ๅฎๆถไปปๅก
โโโ res/ # ่ตๆบ็ฎๅฝ๏ผ่ฟ่กๆถ๏ผ
โ โโโ library/
โ โ โโโ driver/ # ่ฎพๅค้ฉฑๅจ่ๆฌ
โ โ โโโ protocol/ # ๅ่ฎฎ่งฃๆ่ๆฌ
โ โ โโโ model/ # ็ฉๆจกๅๅฎไน
โ โโโ computing/ # ่ฎก็ฎไปปๅก
โ โโโ history_data/ # ๅๅฒๆฐๆฎ
โโโ pages/ # ๆๆกฃ็ซ็น
โโโ main.go # ๅบ็จๅ
ฅๅฃ
โโโ go.mod # Go ไพ่ต
โโโ deploy.sh # ๆๅปบ่ๆฌ
๐ฆ ๅฟซ้ๅผๅง
็ฏๅข่ฆๆฑ
- Go: 1.23 ๆๆด้ซ็ๆฌ
- ๆไฝ็ณป็ป: Linux / Windows / macOS / Android
- ๆถๆ: amd64 / arm64 / armv7 / arm
ๅฎ่ฃ
1. ไธ่ฝฝๆบ็
git clone https://github.com/ibuilding-X/driver-box.git
cd driver-box
2. ๅ ่ฝฝไพ่ต
# ๅฝๅ
็จๆทๆจ่ไฝฟ็จ้ๅ
go env -w GOPROXY=https://goproxy.cn,direct
# ๅ ่ฝฝไพ่ต
go mod tidy
go mod vendor
3. ่ฟ่ก
# ็ดๆฅ่ฟ่ก
go run main.go
# ๆ็ผ่ฏๅ่ฟ่ก
go build -o driver-box
./driver-box
ไบคๅ็ผ่ฏ
้กน็ฎๆไพไบ่ชๅจๅๆๅปบ่ๆฌ๏ผๆฏๆๅคๅนณๅฐไบคๅ็ผ่ฏ๏ผ
# ๆง่กๆๅปบ่ๆฌ
bash deploy.sh
# ่พๅบ็ฎๅฝ
_output/
โโโ driver-box-linux-arm64-v1.0.0.tar.gz
โโโ driver-box-linux-amd64-v1.0.0.tar.gz
โโโ ...
้
็ฝฎ่ฏดๆ
driver-box ไฝฟ็จ res/ ็ฎๅฝไฝไธบ้
็ฝฎ่ตๆบ็ฎๅฝ๏ผๅฏๅจๆถๅฏ้่ฟ็ฏๅขๅ้ๆๅฎ๏ผ
# ้ป่ฎค้
็ฝฎ่ทฏๅพ
export DRIVERBOX_RESOURCE_PATH="./res"
# ่ชๅฎไน้
็ฝฎ่ทฏๅพ
export DRIVERBOX_RESOURCE_PATH="/opt/driver-box/res"
# ่ฎพ็ฝฎๆฅๅฟ็บงๅซ
export LOG_LEVEL="info"
export DRIVERBOX_LOG_PATH="./logs"
๐ ๅ
็ฝฎๆไปถ
ๅ่ฎฎๆไปถ
| ๆไปถๅ็งฐ |
ๅ่ฎฎ็ฑปๅ |
่ฏดๆ |
modbus |
Modbus RTU/TCP |
ๅทฅไธ้็จๅ่ฎฎ๏ผๆฏๆไธฒๅฃๅTCP |
bacnet |
BACnet/IP |
ๆฅผๅฎ่ชๅจๅๆ ๅๅ่ฎฎ |
mqtt |
MQTT |
็ฉ่็ฝ่ฝป้็บงๆถๆฏๅ่ฎฎ |
httpclient |
HTTP Client |
HTTP ๅฎขๆท็ซฏ๏ผๆฏๆ REST API |
httpserver |
HTTP Server |
HTTP ๆๅก็ซฏ๏ผๆไพ API ๆฅๅฃ |
tcpserver |
TCP Server |
TCP ๆๅก็ซฏ๏ผๆฏๆ่ชๅฎไนๅ่ฎฎ |
websocket |
WebSocket |
ๅฎๆถๅๅ้ไฟกๅ่ฎฎ |
dlt645 |
DLT645 |
็ต่ฝ่กจ้ไฟกๅ่ฎฎ |
export ๆไปถ
| ๆไปถๅ็งฐ |
ๅ่ฝ่ฏดๆ |
linkedge |
ๅบๆฏ่ๅจ |
mirror |
่ฎพๅคๆฐๆฎ้ๅ |
discover |
่ฎพๅค่ชๅจๅ็ฐๆๅก |
gateway |
ๅๅธๅผ็ฝๅ
ณ |
ๅฏ็จๆไปถ
ๅจ main.go ไธญๅฏ็จ้่ฆ็ๆไปถ๏ผ
package main
import (
"os"
"github.com/ibuilding-x/driver-box/driverbox"
"github.com/ibuilding-x/driver-box/exports"
"github.com/ibuilding-x/driver-box/plugins"
)
func main() {
// ่ฎพ็ฝฎๆฅๅฟ็บงๅซ
_ = os.Setenv("LOG_LEVEL", "info")
plugins.EnableAll()
exports.EnableAll()
driverbox.Start()
select {}
}
๐ ่ฏฆ็ปๅผๅๆๆกฃ
ๅฎๆด็ไบๆฌกๅผๅๆๆกฃ่ฏทๅ่๏ผ
๐ฏ ๅบ็จๅบๆฏ
driver-box ้็จไบๅค็ง็ฉ่็ฝๅบๆฏ๏ผ
| ๅบๆฏ |
่ฏดๆ |
ๆฏๆ่ฎพๅค |
| ๆบๆ
งๆฅผๅฎ |
HVAC ็ณป็ปใ็
งๆ็ณป็ปใ็ตๆขฏ็ณป็ป |
็ฉบ่ฐๆบ็ปใ็
งๆๆงๅถๅจใ็ต่กจใๆฐด่กจ |
| ๆบๆ
งๅทฅๅ |
็ไบง่ฎพๅค็ๆงใ่ฝ่็ฎก็ |
PLCใๅ้ขๅจใไผ ๆๅจใๆง่กๅจ |
| ๆบ่ฝๅฎถๅฑ
|
ๅฎถ็จ่ฎพๅค่็ฝใๅบๆฏ่ๅจ |
ๆบ่ฝ้จ้ใๆบ่ฝๅฎถ็ตใ็ฏๅขไผ ๆๅจ |
| ๆบๆ
ง้จๅบ |
่ฎพๅค็ๆงใๆฐๆฎๅๆ |
ๅท้พ่ฎพๅคใPOS ๆบใ็ๆงๆๅๅคด |
| ๆบๆ
งๅญๅบ |
็ปผๅ่ฎพๆฝ็ฎก็ |
่ฝๆบ็ณป็ปใๅฎ้ฒ็ณป็ปใๅ่ฝฆ็ณป็ป |
ๅ
ธๅๆกไพ
- โ
ๅคๅ็ VRF ็ฉบ่ฐๆฅๅ
ฅ - ๆฏๆ ๅคง้ใๆฅ็ซใๆตทๅฐใ็พ็็ญๅ็๏ผ็ปไธๆฐๆฎๆ ๅ
- โ
่ฝ่็ฎก็็ณป็ป - ๆฅๅ
ฅๅ็ฑป็ต่กจใๆฐด่กจใ็ๆฐ่กจ๏ผๅฎ็ฐ่ฝ่็ๆงๅๅๆ
- โ
ๆฅผๅฎ่ชๆง็ณป็ป - ้ๆ BACnetใModbus ่ฎพๅค๏ผๅฎ็ฐ็ปไธๆงๅถๅ็ฎก็
- โ
ๅทฅไธ่ฎพๅค่็ฝ - ๅฐไผ ็ปๅทฅไธ่ฎพๅค่ฟๆฅๅฐไบๅนณๅฐ๏ผๅฎ็ฐ่ฟ็จ็ๆง
๐ค ๅไธ่ดก็ฎ
ๆฌข่ฟๅไธ driver-box ็ๅผๅ๏ผๆจ็่ดก็ฎๅฐๅธฎๅฉๆดๅคๅผๅ่
๏ผ
่ดก็ฎๆต็จ
- Fork ๆฌไปๅบ
- ๅๅปบ็นๆงๅๆฏ (
git checkout -b feat/AmazingFeature)
- ๆไบคๆดๆน (
git commit -m 'Add some AmazingFeature')
- ๆจ้ๅฐๅๆฏ (
git push origin feat/AmazingFeature)
- ๆไบค Pull Request
ไปฃ็ ่ง่
๐ ๅ้ฆไธๆฏๆ
่ทๅๅธฎๅฉ
่็ณปๆนๅผ
ๅฆๆๅไธๅไฝ้ๆฑๆๆๆฏๆฏๆ๏ผ่ฏท้่ฟ Issue ๆ Discussion ่็ณปๆไปฌใ
๐ ่ด่ฐข
ๆ่ฐขไปฅไธๅผๆบ้กน็ฎ็ๆฏๆ๏ผ
ๅฆๆ่ฟไธช้กน็ฎๅฏนๆจๆๅธฎๅฉ๏ผ่ฏท็ปๆไปฌไธไธช โญ๏ธ Star๏ผ
โฌ ๅๅฐ้กถ้จ