-
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.iois 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 -
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/messagestopic, whiledevice_001could be other devices, such asdevice_002, all of those data will be subscribed and handled bydemostream.-- 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.
-
Publish sensor data to topic
devices/device_001/messagesof servertcp://broker.emqx.io:1883with 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/cli querywindow. Please try to publish another message withtemperatureless 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 + cinbin/cli querycommand console, or inputexitand 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.