Gasp 是我研发出来快速构建物联网设备的动态领域语言,它可以然后用更少的代码构建出更稳定更靠谱的物联网设备。
安装 Gasp
Gasp 是使用 haskell 研发,并使用 stack 作为构建工具。因此首先要安装 stack, 命令如下
curl -sSL https://get.haskellstack.org/ | sh
安装完 stack 后,我们用 git 将代码 clone 下来
git clone https://github.com/Lupino/gasp.git
使用 stack 进行编译
cd gasp
stack build
stack install
stack 将编译后的文件安装到 ~/.local/bin/gasp
, 如果 ~/.local/bin
没在可执行路径里面,我们需要手动添加
export PATH=${HOME}/.local/bin:$PATH
新建一个项目
我们可以通过 gasp new
初始化一个项目
gasp new dht
gasp
建立一个目录,内容如下
dht
├── main.gasp
├── .gitignore
└── .gasproot
main.gasp
就是我们要写代码的地方
我们可以通过 gasp compile
来编译我们的项目
cd dht
gasp compile
编译后生成内容如下:
.
├── build
│ └── app
│ ├── app.ino
│ └── doc.md
├── main.gasp
├── .gitignore
└── .gasproot
build/app
就是我们编译后的代码,我们用 arduino IDE 打开,然后点击编译,如果有开发版的话,可以上传运行看看。
如果编译失败是依赖库没有安装,到arduino的依赖库目录,然后用 git clone 依赖项目进行安装
git clone https://github.com/Lupino/givelink-sdk.git
git clone https://github.com/zserge/jsmn.git
安装后再编译就可以成功了。
DHT温湿度传感器
我们先安装 dht 的依赖库
git clone https://github.com/adafruit/DHT-sensor-library.git
打开 main.gasp
添加代码
init do
#include <DHT.h>
#define DHTPIN 9
#define DHTTYPE DHT11
DHT dht(DHTPIN, DHTTYPE);
done
我们通过 init
初始化 dht 传感器
setup {=code
dht.begin();
code=}
在 setup 里面执行 dht.begin()
metric humidity {
type: "float",
max: 100,
min: 0,
threshold: 1,
prec: 2
}
我找到 metric temperature
在下面添加如上代码,
这段代码告诉我们,湿度的参数为 humidity
, float
类型, 最大有效值 100, 最小有效值 0, 变化上传阈值为 1, 保留两位小数。
func read_dht do
metric_humidity = dht.readHumidity();
metric_temperature = dht.readTemperature();
done
找到 func read_dht
片段,改成上面代码。
上传到设备
Giveyun 上申请一个设备,并复制 key
和 token
然后修改 app dht
, 如下:
app dht {
key: "product_key",
token: "device_token"
}
最后用 gasp compile
, 并用 Arduino IDE 编译后上传到 arduino 板子上面,然后将 dht 传感器接到 pin 9 上。
到这一步已经开发完一个 温湿度传感器。
网友评论