Pull a Kuiper Docker image from https://hub.docker.com/r/emqx/kuiper/tags
.
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 -d --name kuiper -e MQTT_BROKER_ADDRESS=tcp://broker.emqx.io:1883 emqx/kuiper:$tag
broker.emqx.io
, and those data will be processed in your LOCAL RUN Kuiper docker instance. Below steps will create a stream named demo
, and data are sent to devices/device_001/messages
topic, while device_001
could be other devices, such as device_002
, all of those data will be subscribed and handled by demo
stream. -- In host
# docker exec -it kuiper /bin/sh
-- In docker instance
# bin/cli 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/cli query
Connecting to 127.0.0.1:20498...
kuiper > select * from demo where temperature > 30;
Query was submit successfully.
devices/device_001/messages
of server tcp://broker.emqx.io:1883
with any MQTT client tools. Below sample uses mosquitto_pub
. # mosquitto_pub -h broker.emqx.io -m '{"temperature": 40, "humidity" : 20}' -t devices/device_001/messages
bin/cli query
window. Please try to publish another message with temperature
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
in bin/cli query
command console, or input exit
and press enter.
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.