-
Pull a Kuiper Docker image from
https://hub.docker.com/r/emqx/kuiper/tags
. It's recommended to usealpine
image in this tutorial (refer to Kuiper Docker for the difference of Kuiper Docker image variants). -
Set Kuiper source to an MQTT server. This sample uses server locating at
tcp://broker.emqx.io:1883
.broker.emqx.io
is a public MQTT test server hosted by EMQ.docker run -p 9081:9081 -d --name kuiper -e MQTT_SOURCE__DEFAULT__SERVERS=[tcp://broker.emqx.io:1883] emqx/kuiper:$tag
-
Create a stream - the stream is your stream data schema, similar to table definition in database. Let's say the temperature & humidity data are sent to
broker.emqx.io
, and those data will be processed in your LOCAL RUN Kuiper docker instance. Below steps will create a stream nameddemo
, and data are sent todevices/device_001/messages
topic, whiledevice_001
could be other devices, such asdevice_002
, all of those data will be subscribed and handled bydemo
stream.-- In host # docker exec -it kuiper /bin/sh -- In docker instance # bin/kuiper create stream demo '(temperature float, humidity bigint) WITH (FORMAT="JSON", DATASOURCE="devices/+/messages")' Connecting to 127.0.0.1:20498... Stream demo is created. # bin/kuiper query Connecting to 127.0.0.1:20498... kuiper > select * from demo where temperature > 30; Query was submit successfully.
-
Publish sensor data to topic
devices/device_001/messages
of servertcp://broker.emqx.io:1883
with any MQTT client tools. Below sample usesmosquitto_pub
.# mosquitto_pub -h broker.emqx.io -m '{"temperature": 40, "humidity" : 20}' -t devices/device_001/messages
-
If everything goes well, you can see the message is print on docker
bin/kuiper query
window. Please try to publish another message withtemperature
less than 30, and it will be filtered by WHERE condition of the SQL.kuiper > select * from demo WHERE temperature > 30; [{"temperature": 40, "humidity" : 20}]
If having any problems, please take a look at
log/stream.log
. -
To stop the test, just press
ctrl + c
inbin/kuiper query
command console, or inputexit
and press enter.
You can also refer to Kuiper dashboard documentation for better using experience.
Next for exploring more powerful features of EMQ X Kuiper? Refer to below for how to apply EMQ X Kuiper in edge and integrate with AWS / Azure IoT cloud.