Using the GPIO as pulse input from a meter device
将 MikroTik 设备的 GPIO 用作脉冲输入来读取水表、电表或其他仪表,并使用 RouterOS 脚本对脉冲进行计数。
一些水表、电表或其他仪表具有脉冲输出。仪表的规格说明描述了代表一个整数计量单位需要多少个脉冲。例如,我们用于编写本手册的电表每产生 1000 个脉冲代表 1kWh,因此每个脉冲为 1Wh。您可以使用 KNOT 的数字 GPIO 输入(pin5)读取这些脉冲,并统计电表后端的能耗。为此,需要创建一个简单的 MOSFET 电路,并按下图连接所有部件:

下一步是编写一个在每次收到脉冲时执行的 RouterOS 脚本:
/iot gpio digital
set pin5 script=":global scriptRunning; :global pulse;\
:if (\$scriptRunning!=true) do={\
:set \$scriptRunning true;\
:set \$pulse (\$pulse+1);\
:log info message=(\"GPIO pulse No. \".\$pulse);\
:delay 1s;\
:set \$scriptRunning false;\
}"
配置好 GPIO 后,上述脚本将在每次脉冲时创建一条日志条目:
15:32:22 script,info GPIO pulse No. 1
15:38:01 script,info GPIO pulse No. 2
15:43:38 script,info GPIO pulse No. 3
15:49:15 script,info GPIO pulse No. 4
15:54:51 script,info GPIO pulse No. 5
16:00:27 script,info GPIO pulse No. 6
16:06:02 script,info GPIO pulse No. 7
16:11:37 script,info GPIO pulse No. 8
16:17:12 script,info GPIO pulse No. 9
16:22:48 script,info GPIO pulse No. 10