emqx/apps/emqx_rule_engine
Kjell Winblad 74c33cd4e5 feat(rule_engine): add jq function to the rule engine
This commit adds a function to the rule engine that alows users
to transform text or JSON objects using [jq filter programs][1].

[jq][1] is a command line tool that can be used to transform
and filter JSON text using jq's built-in language. The rule engine
function that is added with this commit uses the
[Erlang jq NIF library][2] that wraps the jq C library in an
Erlang NIF function.

[1]: https://stedolan.github.io/jq/
[2]: https://github.com/emqx/jq
2022-05-04 17:09:16 +02:00
..
etc chore(conf): EMQ X -> EMQX in conf files 2022-02-16 17:50:41 +01:00
i18n chore(i18n): fix more and more typos 2022-04-26 09:28:05 +08:00
include style: reformat all remaining apps 2022-04-27 15:51:18 +02:00
src feat(rule_engine): add jq function to the rule engine 2022-05-04 17:09:16 +02:00
test feat(rule_engine): add jq function to the rule engine 2022-05-04 17:09:16 +02:00
.gitignore chore(apps): relocate some apps 2021-02-19 11:24:41 +01:00
README.md chore: rename EMQX Broker to just EMQX 2022-02-19 12:51:34 +01:00
rebar.config feat(rule_engine): add jq function to the rule engine 2022-05-04 17:09:16 +02:00

emqx-rule-engine

IoT Rule Engine

Concept

iot rule "Rule Name"
  when
     match TopicFilters and Conditions
  select
    para1 = val1
    para2 = val2
  then
    take action(#{para2 => val1, #para2 => val2})

Architecture

          |-----------------|
 Pub ---->| Message Routing |----> Sub
          |-----------------|
               |     /|\
              \|/     |
          |-----------------|
          |   Rule Engine   |
          |-----------------|
               |      |
        Backends Services Bridges

SQL for Rule query statement

select id, time, temperature as t from "topic/a" where t > 50;