├── .ci ├── convert_spaces.py ├── generate_readme.py ├── markdown_config.json ├── sync_blog.py └── update_blog.py ├── .github └── workflows │ ├── check_markdown.yaml │ ├── sync_blog.yaml │ └── update_blog.yaml ├── .gitignore ├── README-JA.md ├── README-ZH.md ├── README.md ├── en ├── 201809 │ └── erlang-vs-scala.md ├── 201908 │ └── mqtt5-new-features-properties-and-loads.md ├── 201909 │ └── emq-new-version-in-september-emqx-enterprise-3-4-0-function-overview.md ├── 201910 │ └── rapidly-deploy-emqx-clusters-on-kubernetes-via-helm.md ├── 201911 │ └── introduction-to-the-commonly-used-mqtt-client-library.md ├── 201912 │ └── upload-sensor-data-to-mqtt-cloud-service-via-nodemcu-esp8266.md ├── 202001 │ ├── build-emqx-influxdb-grafana-iot-data-visualization-solution-in-one-hour.md │ └── release-notes-kuiper-0-1.md ├── 202002 │ ├── mqtt-x-elegant-cross-platform-mqtt5-desktop-client.md │ ├── mqtt-x-guideline.md │ └── release-notes-kuiper-0.2.0.md ├── 202003 │ ├── mqttx-v1-3-0-was-officially-released-an-elegant-cross-platform-mqtt5-desktop-test-client.md │ └── release-notes-kuiper-0-2-1.md ├── 202004 │ ├── message-retention-and-message-expiration-interval-of-emqx-mqtt5-broker.md │ ├── release-notes-kuiper-0-3-0.md │ └── super-lightweight-iot-edge-stream-processing-kuiper-plugin-development-tutorial.md ├── 202005 │ ├── iot-private-tcp-protocol-service-migration.md │ ├── kuiper-becomes-edgex-rule-engine.md │ ├── mqttx-v-1-3-1-release-notes.md │ └── release-notes-kuiper-0-4-0.md ├── 202006 │ ├── android-connects-mqtt-using-kotlin.md │ ├── control-iot-device-with-kuiper-rules-engine.md │ ├── emqx-mqtt-broker-k8s-cluster.md │ ├── release-notes-kuiper-0-4-1.md │ └── release-notes-kuiper-0-5-0.md ├── 202007 │ ├── develop-emqx-plugin-using-java.md │ ├── develop-emqx-plugin-using-python.md │ ├── emqx-server-ssl-tls-secure-connection-configuration-guide.md │ ├── emqx_rate_limit.md │ ├── enable-two-way-ssl-for-emqx.md │ ├── kuiper-golang-template.md │ └── smart-home-hub-on-raspberry-pi.md ├── 202008 │ ├── hamler-0-2-otp-behaviours-with-type-classes.md │ ├── mqtt5-flow-control.md │ └── release-notes-kuiper-0-9-0.md ├── 202009 │ ├── building-modbus-based-iiot-app-with-neuron.md │ ├── mqtt5-enhanced-authentication.md │ └── release-notes-kuiper-0-9-1.md ├── 202010 │ ├── comparision-of-python-mqtt-client.md │ └── emqx-and-1d-cnn-in-aiot.md ├── 202011 │ ├── emq-industrial-internet-cloud-edge-integrated-solution.md │ └── emqx-and-clickhouse-for-iot-data-access-and-analysis.md ├── 202012 │ └── release-notes-emq-x-enterprise-4-2-2.md ├── 202101 │ ├── emqx-haproxy.md │ └── mqttx-v-1-4-2-release-notes.md ├── 202102 │ ├── emqx-project-newsletter-202101.md │ └── release-notes-emq-x-enterprise-4-2-3.md ├── 202103 │ ├── birth-of-streaming-database.md │ ├── emqx-project-newsletter-202102.md │ ├── emqx-rfc.md │ ├── hstreamdb-is-now-officially-open-source.md │ ├── mqttx-script-function-tutorial.md │ ├── run-tensorflow-lite-model-with-kuiper-function-plugin.md │ └── verifying-kuiper-stream-processing-with-mqtt-x.md ├── 202104 │ ├── android-mqtt-ssl-tls-authentication.md │ ├── emqx-project-newsletter-202103.md │ └── python-async-mqtt-client-hbmqtt.md ├── 202105 │ ├── emqx-enterprise-4-3-0-release-notes.md │ ├── emqx-project-newsletter-202104.md │ └── integrate-emqx-mqtt-cloud-with-home-assistant.md ├── 202106 │ ├── develop-and-deploy-emqx-plugin-for-enterprise-4-3.md │ └── emqx-newsletter-202105.md ├── 202107 │ ├── application-of-mqtt-protocol-in-oil-and-gas-industry.md │ ├── emqx-newsletter-202106.md │ ├── hstreamdb-v-0-5-release-notes.md │ └── introducing-emqx-cloud-on-microsoft-azure.md ├── 202108 │ ├── connecting-to-emqx-cloud-with-mqttlens.md │ ├── emqx-newsletter-202107.md │ ├── erlang-application-stop-order.md │ ├── mqtt-broker-clustering-part-1-load-balancing.md │ ├── mqtt-broker-clustering-part-2-sticky-session-load-balancing.md │ └── neuron-1-3-0-release-notes.md ├── 202109 │ ├── emqx-newsletter-202108.md │ ├── introducing-emqx-cloud-on-google-cloud-platform.md │ └── neuron-1-3-2-release-notes.md ├── 202110 │ ├── emqx-cloud-realizes-multi-project-deployment-management.md │ ├── emqx-newsletter-202109.md │ └── mqtt-broker-clustering-part-3-challenges-and-solutions-of-emqx-horizontal-scalability.md ├── 202111 │ ├── emqx-newsletter-202110.md │ ├── hstreamdb-newsletter-202110.md │ ├── hstreamdb-v-0-6-release-notes.md │ ├── ios-mqtt5-client.md │ ├── mqtt5-user-properties.md │ ├── nanomq-newsletter-202110.md │ ├── neuron-newsletter-202110.md │ └── popular-online-public-mqtt-brokers.md ├── 202112 │ ├── ekuiper-newsletter-202111.md │ ├── emqx-cloud-launches-sub-account-management.md │ ├── emqx-newsletter-202111.md │ ├── hstreamdb-newsletter-202111.md │ ├── nanomq-newsletter-202111.md │ └── neuron-newsletter-202111.md ├── 202201 │ ├── introduction-to-the-open-source-testing-tool-jmeter.md │ ├── mqtt-for-elixir.md │ ├── mqttx-v-1-7-0-release-notes.md │ ├── mqttx-v-1-7-1-release-notes.md │ ├── mqttx-v-1-7-2-release-notes.md │ └── testing-mqtt-5-with-the-mqtt-client.md ├── 202202 │ ├── advanced-testing-of-erlang-and-elixir-applications.md │ ├── building-emqx-releases-with-elixirs-mix.md │ ├── ekuiper-newsletter-202201.md │ ├── emq-is-now-the-foundational-member-of-oasis.md │ ├── emqx-newsletter-202201.md │ ├── hstreamdb-newsletter-202201.md │ ├── introduction-to-jmeter-test-components.md │ ├── mqtt5-topic-alias.md │ ├── nanomq-newsletter-202201.md │ └── neuron-newsletter-202201.md ├── 202203 │ ├── emqx-cloud-alarm-integration.md │ ├── emqx-cloud-http-custom-authentication.md │ ├── emqx-cloud-launched-value-added-services.md │ ├── emqx-v-4-4-new-feature-a-top-view-of-slowest-subscribers.md │ ├── hstreamdb-v-0-7-release-notes.md │ └── mqtt-messaging-platform-for-internet-of-vehicles.md ├── 202204 │ ├── difference-between-emqx-enterprise-and-emqx-cloud.md │ ├── emqx-cloud-easier-to-use-rules-engine.md │ ├── emqx-newsletter-202203.md │ ├── hstreamdb-newsletter-202203.md │ ├── mqtt-qos-design-for-internet-of-vehicles.md │ ├── mqtt-topic-design-for-internet-of-vehicles.md │ └── solicitation-notice-for-quality-articles.md ├── 202205 │ ├── connecting-coap-devices-to-emqx-cloud.md │ ├── ekuiper-newsletter-202204.md │ ├── emqx-cloud-update-aws-private-link.md │ ├── emqx-cloud-update-external-authentication-authorization.md │ ├── emqx-newsletter-202204.md │ ├── emqx-v-5-0-preview.md │ ├── how-emqx-cloud-secures-data-on-the-public-cloud.md │ ├── how-to-use-mqtt-in-flask.md │ ├── hstreamdb-newsletter-202204.md │ ├── hstreamdb-v-0-8-release-notes.md │ ├── million-level-message-throughput-architecture-design-for-internet-of-vehicles.md │ └── reaching-100m-mqtt-connections-with-emqx-5-0.md ├── 202206 │ ├── ekuiper-newsletter-202205.md │ ├── emqx-cloud-is-now-available-in-hong-kong-and-taiwan-regions.md │ ├── emqx-newsletter-202205.md │ ├── how-to-use-mqtt-in-react-native.md │ ├── hstreamdb-newsletter-202205.md │ ├── nanomq-newsletter-202205.md │ └── neuron-newsletter-202205.md ├── 202207 │ ├── bridging-emqx-cloud-data-to-aws-iot-over-the-public-network.md │ ├── emqx-cloud-redis-and-jwt-authentication-authorization.md │ ├── emqx-v-5-0-released.md │ ├── more-parameters-added-to-log-analysis.md │ └── one-device-one-secret-authentication-for-iot-devices-with-emqx-cloud.md ├── 202208 │ ├── data-integration-support-hstreamdb-and-tablestore.md │ ├── emqx-newsletter-202207.md │ ├── getting-data-from-emqx-cloud-with-influxdb-native-collector.md │ ├── how-emqx-5-0-achieves-100-million-mqtt-connections.md │ ├── hstreamdb-newsletter-202206.md │ ├── mqtt-keep-alive.md │ ├── mqtt-over-quic.md │ └── powerful-and-easy-to-use-mqtt-5-command-line-tool.md ├── 202209 │ ├── bridge-mqtt-data-from-emqx-cloud-to-confluent-cloud-on-gcp.md │ ├── hstreamdb-newsletter-202207.md │ ├── hstreamdb-newsletter-202208.md │ ├── hstreamdb-v-0-9-release-notes.md │ ├── iot-data-integration.md │ └── mqtt-persistence-based-on-rocksdb.md ├── 202210 │ ├── ekuiper-newsletter-202209.md │ ├── emqx-cloud-shadow-service.md │ ├── emqx-cloud-update-comprehensive-upgrade-of-billing-system.md │ ├── emqx-newsletter-202209.md │ ├── get-started-with-emqx-cloud-on-the-aws-marketplace-with-pay-as-you-go.md │ ├── how-to-install-emqx-mqtt-broker-on-ubuntu.md │ ├── hstreamdb-newsletter-202209.md │ ├── nanomq-newsletter-202209.md │ ├── neuron-newsletter-202209.md │ ├── save-mqtt-data-from-emqx-cloud-on-gcp-to-influxdb-cloud-through-the-public-network.md │ └── save-mqtt-data-from-emqx-cloud-on-gcp-to-timescale-cloud-through-the-public-network.md ├── 202211 │ ├── emqx-cloud-shadow-service-application-scenario-analysis.md │ ├── emqx-enterprise-v-4-4-11-released.md │ ├── how-to-set-parameters-when-establishing-an-mqtt-connection.md │ ├── how-to-use-mqtt-in-dart.md │ ├── how-to-use-the-mqtt-plugin-in-jmeter.md │ ├── migrate-your-business-from-gcp-iot-core-01.md │ ├── migrate-your-business-from-gcp-iot-core-02.md │ ├── migrate-your-business-from-gcp-iot-core-03.md │ ├── migrate-your-business-from-gcp-iot-core-04.md │ ├── mqttx-v-1-8-3-release-notes.md │ └── mqttx-v-1-9-0-release-notes.md ├── 202212 │ ├── ekuiper-newsletter-202211.md │ ├── emqx-newsletter-202211.md │ ├── emqx-prometheus-grafana.md │ ├── getting-started-with-mqtt-over-quic-from-scratch.md │ ├── how-to-achieve-flexible-data-collection-for-internet-of-vehicles.md │ ├── hstreamdb-newsletter-202211.md │ ├── migrate-your-business-from-gcp-iot-core-05.md │ ├── mqtt-communication-optimization-practices-for-iov.md │ ├── mqtt-session.md │ ├── mqttx-newsletter-202211.md │ ├── neuron-newsletter-202211.md │ ├── reflections-on-the-tenth-anniversary-of-emqx.md │ ├── save-mqtt-data-from-emqx-cloud-to-aws-dynamodb-through-the-public-network.md │ ├── two-way-tls-ssl-with-emqx-cloud.md │ ├── using-emqx-cloud-data-integrations-to-save-data-to-clickhouse-cloud.md │ ├── we-d-appreciate-your-feedback.md │ └── xmeter-newsletter-202211.md ├── 202301 │ └── introducing-replayq.md ├── 202302 │ ├── ekuiper-v-1-8-0-release-notes.md │ ├── emqx-cloud-serverless-launched.md │ └── mqttx-v-1-9-1-release-notes.md ├── 202303 │ ├── 7-mqtt-trends-in-2023.md │ ├── deploy-the-most-powerful-mqtt-server-in-your-own-cloud.md │ ├── ekuiper-newsletter-202302.md │ ├── emqx-cloud-now-available-in-aws-ohio.md │ ├── emqx-newsletter-202302.md │ ├── essential-things-to-know-about-mqtt-security.md │ ├── harnessing-the-power-of-serverless-computing-for-iot-connectivity.md │ ├── how-to-upgrade-emqx-in-kubernetes.md │ ├── hstreamdb-newsletter-202302.md │ ├── integration-practice-of-emqx-and-hstreamdb.md │ ├── mqtt-5-introduction-to-publish-subscribe-model.md │ ├── neuron-newsletter-202302.md │ ├── securing-mqtt-with-username-and-password-authentication.md │ ├── understanding-mqtt-security-a-comprehensive-overview.md │ └── xmeter-newsletter-202302.md ├── 202304 │ ├── 5-key-concepts-for-mqtt-broker-in-sparkplug-specification.md │ ├── 7-factors-to-consider-when-choosing-mqtt-broker-2023.md │ ├── a-comprehensive-guide-to-emqx-cloud-serverless-dedicated-and-byoc-plans.md │ ├── connected-cars-and-automotive-connectivity-all-you-need-to-know.md │ ├── emqx-cloud-supports-japanese-language-now.md │ ├── emqx-enterprise-v-4-4-17-release-notes.md │ ├── emqx-enterprise-v-4-4-18-release-notes.md │ ├── emqx-vs-mosquitto-2023-mqtt-broker-comparison.md │ ├── emqx-vs-nanomq-2023-mqtt-broker-comparison.md │ ├── emqx-vs-vernemq-2023-mqtt-broker-comparison.md │ ├── how-to-deploy-emqx-enterprise-on-google-cloud.md │ ├── ingesting-iot-data-from-emqx-enterprise-to-gcp-pub-sub.md │ ├── migrating-devices-from-gcp-iot-core-to-emqx-enterprise.md │ ├── mosquitto-vs-nanomq-2023-mqtt-broker-comparison.md │ ├── mqttx-v-1-9-2-release-notes.md │ ├── neuron-v-2-4-0-release-notes.md │ ├── neuron-v-2-4-4-release-notes.md │ ├── next-gen-cloud-mqtt-service-meet-emqx-cloud-serverless.md │ ├── open-mqtt-benchmark-suite-the-ultimate-guide-to-mqtt-performance-testing.md │ ├── open-mqtt-benchmarking-comparison-emqx-vs-mosquitto.md │ ├── open-mqtt-benchmarking-comparison-emqx-vs-nanomq.md │ ├── open-mqtt-benchmarking-comparison-emqx-vs-vernemq.md │ ├── open-mqtt-benchmarking-comparison-mosquitto-vs-nanomq.md │ ├── quic-protocol-the-features-use-cases-and-impact-for-iot-iov.md │ ├── serverless-or-hosting-choose-a-suitable-mqtt-service-for-your-project.md │ └── top-5-mqtt-cli-tools-for-iot-developers-in-2023.md ├── 202305 │ ├── a-comparison-of-iiot-protocols-mqtt-sparkplug-vs-opc-ua.md │ ├── a-comprehensive-guide-to-serverless-mqtt-service.md │ ├── building-reliable-iot-systems-an-introduction-to-mqtt-performance-testing.md │ ├── connecting-to-serverless-mqtt-broker-in-nodejs.md │ ├── connecting-to-serverless-mqtt-broker-with-paho-python.md │ ├── emqx-ecp-empowers-iot-edge-computing-with-nanomq-integration.md │ ├── emqx-mqtt-broker-connection-troubleshooting.md │ ├── emqx-mqtt-broker-deployment-troubleshooting-ensuring-a-smooth-start.md │ ├── enhanced-mqtt-monitor-metrics-in-emqx-cloud-s-latest-release.md │ ├── enhanced-mqtt-plugin-with-custom-write-topic-support-in-neuron-2-4-5-release.md │ ├── experience-neuron-industrial-iot-gateway-software-for-free-with-time-unlimited-trial-license.md │ ├── exploring-byoc-taking-your-mqtt-cloud-service-to-the-next-level.md │ ├── exploring-the-data-privacy-first-architecture-of-emqx-cloud-byoc.md │ ├── get-started-with-emqx-cloud-on-gcp-marketplace.md │ ├── getting-started-with-mqtt-performance-testing-a-primer-on-scenarios-and-metrics.md │ ├── getting-started-with-rule-engine-in-mqtt-broker-a-quick-guide.md │ ├── how-byoc-mqtt-service-ensures-iot-data-security-and-compliance-for-your-business.md │ ├── how-to-get-a-forever-free-serverless-mqtt-service.md │ ├── how-to-use-mqtt-in-nodejs.md │ ├── mqtt-broker-clustering.md │ ├── mqttx-1-9-3-introduces-powerful-iot-scenario-data-simulation-feature.md │ ├── multi-tenancy-architecture-in-mqtt.md │ ├── natural-interactions-in-iot-combining-mqtt-and-chatgpt.md │ ├── one-click-deploying-emqx-mqtt-broker-on-aws-using-terraform.md │ ├── one-click-deploying-emqx-mqtt-broker-on-azure-using-terraform.md │ ├── one-click-deploying-emqx-mqtt-broker-on-gcp-using-terraform.md │ ├── open-mqtt-benchmarking-comparison-mqtt-brokers-in-2023.md │ ├── optimize-your-mqtt-server-with-emqx-cloud-byoc-s-expert-o-and-m-service.md │ ├── top-3-mqtt-desktop-client-tools-in-2023.md │ ├── top-3-mqtt-websocket-clients-in-2023.md │ ├── top-3-open-source-mqtt-brokers-for-industrial-iot-in-2023.md │ └── using-terraform-to-deploy-emqx-mqtt-broker.md ├── 202306 │ ├── a-deep-dive-into-token-based-authentication-and-oauth-2-0-in-mqtt.md │ ├── an-introduction-to-subscription-options-in-mqtt.md │ ├── bridging-demanded-signals-from-can-bus-to-mqtt-by-ekuiper.md │ ├── bridging-modbus-data-to-mqtt-for-iiot.md │ ├── build-mqtt-dashboard-with-emqx-grafana-and-prometheus.md │ ├── connect-to-mqtt-broker-with-websocket.md │ ├── connecting-to-serverless-mqtt-broker-with-paho-java.md │ ├── data-stream-processing-for-software-defined-vehicle.md │ ├── efficiency-comparison-opc-ua-modbus-mqtt-sparkplug-http.md │ ├── emqx-cloud-unveils-us-bank-account-payment-option.md │ ├── emqx-enterprise-5-1-0-release-notes.md │ ├── enabling-mqtt-over-quic-on-kubernetes-with-emqx-5-0.md │ ├── fortifying-mqtt-communication-security-with-ssl-tls.md │ ├── hstream-platform-serverless-beta-released.md │ ├── improve-the-reliability-and-security-of-mqtt-broker-with-rate-limit.md │ ├── leveraging-enhanced-authentication-for-mqtt-security.md │ ├── mqtt-sparkplug-solution-for-industrial-iot-using-emqx-and-neuron.md │ ├── mqtt-stream-processing-with-emqx-and-ekuiper.md │ ├── mqtt5-new-features-reason-code-and-ack.md │ ├── nanomq-the-multi-threaded-alternative-to-mosquitto-for-iot-edge.md │ ├── overcoming-address-change-with-mqtt-over-quic.md │ ├── rebalancing-mqtt-connections-for-emqx-cluster-on-kubernetes.md │ ├── seamlessly-integrating-emqx-cloud-with-the-new-timescale-service.md │ ├── sparkplug-3-0-advancements-and-formalization-in-mqtt-for-iiot.md │ ├── subscription-identifier-and-subscription-options.md │ ├── use-mqtt-with-raspberry-pi.md │ ├── what-is-the-mqtt-protocol.md │ ├── what-is-v2x-and-the-future-of-vehicle-to-everything-connectivity.md │ └── why-emqx-is-your-best-google-cloud-iot-core-alternative.md ├── 202307 │ ├── best-practices-of-maximum-packet-size-in-mqtt.md │ ├── bridging-twincat-data-to-mqtt.md │ ├── connecting-to-serverless-mqtt-broker-in-php.md │ ├── embedded-mqtt-message-storage-using-rocksdb-for-emqx-broker.md │ ├── emqx-cloud-byoc-is-now-available-on-google-cloud.md │ ├── emqx-cloud-extends-its-reach-introducing-new-regions-for-seamless-mqtt-connectivity.md │ ├── emqx-mqtt-broker-authentication-troubleshooting.md │ ├── file-transfer-over-mqtt.md │ ├── five-strategies-for-strengthening-mqtt-infrastructure-security.md │ ├── how-emqx-revolutionizes-logistics-fleet-management.md │ ├── how-to-use-mqttx-for-serverless-mqtt-broker-test.md │ ├── introduction-to-mqtt-control-packets.md │ ├── mqtt-performance-benchmark-testing-emqx-hstreamdb-integration.md │ ├── mqtt-performance-benchmark-testing-emqx-influxdb-integration.md │ ├── mqtt-performance-benchmark-testing-emqx-kafka-integration.md │ ├── mqtt-performance-benchmark-testing-emqx-postgresql-integration.md │ ├── mqtt-vs-amqp-for-iot-communications.md │ ├── mqttx-all-in-one-testing-and-debugging-for-iot-apps.md │ ├── mqttx-v-1-9-4-release-notes.md │ ├── neuron-v-2-5-1-release-notes.md │ ├── significant-enhancements-in-emqx-5-1-mqtt-dashboard.md │ ├── simplifying-migration-from-gcp-iot-core-to-emqx-enterprise-4-4-19.md │ ├── the-smart-manufacturing-revolution.md │ ├── time-series-database-for-iot-the-missing-piece.md │ └── xmeter-v-3-3-1-release-notes.md ├── 202308 │ ├── authorization-in-mqtt-using-acls-to-control-access-to-mqtt-messaging.md │ ├── azure-iot-hub-4-key-features-use-cases-and-how-to-get-started.md │ ├── bridging-fins-data-to-mqtt.md │ ├── bridging-opc-ua-data-to-mqtt-for-iiot.md │ ├── emqx-cloud-byoc-is-now-available-on-aws.md │ ├── emqx-cloud-now-available-in-aws-sydney.md │ ├── emqx-enterprise-5-1-1-release-notes.md │ ├── emqx-enterprise-v-4-4-20-release-notes.md │ ├── emqx-mqtt-broker-troubleshooting-publish-subscribe-issues.md │ ├── emqx-single-node-supports-5m-connections.md │ ├── get-started-with-emqx-cloud-on-azure-marketplace.md │ ├── iiot-explained-examples-technologies-benefits-and-challenges.md │ ├── iot-in-the-cloud-8-key-benefits-and-how-to-get-started.md │ ├── jwt-authentication-and-jwks-endpoint-in-mqtt.md │ ├── mosquitto-mqtt-broker-pros-cons-tutorial-and-modern-alternatives.md │ ├── mqtt-performance-benchmark-series-emqx-timescaledb-integration.md │ ├── mqtt-performance-benchmark-testing-emqx-mongodb-integration.md │ ├── mqtt-performance-benchmark-testing-emqx-mysql-integration.md │ ├── mqtt-performance-benchmark-testing-emqx-single-node-message-latency-response-time.md │ ├── mqtt-performance-benchmark-testing-emqx-single-node-supports-2m-message-throughput.md │ ├── mqttx-1-9-5-released-json-message-highlighting-and-more.md │ ├── opc-ua-over-mqtt-the-future-of-it-and-ot-convergence.md │ ├── open-manufacturing-hub-a-reference-architecture-for-industrial-iot.md │ ├── simulating-the-future-crafting-iot-scenarios-with-chatgpt-and-mqttx.md │ ├── troubleshooting-common-emqx-configuration-mistakes.md │ ├── understanding-aws-iot-core.md │ └── using-mqtt-in-unity-with-m2mqttunity-library-a-step-by-step-guide.md ├── 202309 │ ├── a-deep-dive-into-kpis-for-smart-manufacturing.md │ ├── aws-mqtt-managing-iot-communication-in-aws.md │ ├── bridging-knx-data-to-mqtt-introduction-and-hands-on-tutorial.md │ ├── connecting-to-a-serverless-mqtt-broker-in-react.md │ ├── connecting-to-a-serverless-mqtt-broker-using-postman.md │ ├── demonstrate-mqtt-5-0-features-using-mqttx-cli.md │ ├── ekuiper-v-1-11-0-release-notes.md │ ├── emqx-enterprise-5-2-release-notes.md │ ├── exploring-isa95-standards-in-manufacturing.md │ ├── four-reasons-why-you-should-adopt-mqtt-in-unified-namespace.md │ ├── home-assistant-and-mqtt-4-things-you-could-build.md │ ├── iiot-platform-key-components-and-5-notable-solutions.md │ ├── implementing-unified-namespace-using-emqx-and-neuron.md │ ├── incorporating-the-unified-namespace-with-isa-95-best-practices.md │ ├── join-hacktoberfest-2023-with-emq-community.md │ ├── modern-messaging-infrastructure-for-smart-manufacturing.md │ ├── mqtt-5-0-control-packets-01-connect-connack.md │ ├── mqtt-5-0-control-packets-02-publish-puback.md │ ├── mqtt-5-0-control-packets-03-subscribe-unsubscribe.md │ ├── mqtt-5-0-control-packets-04-pingreq-pingresp.md │ ├── mqtt-5-0-control-packets-05-disconnect.md │ ├── mqtt-5-0-control-packets-06-auth.md │ ├── mqtt-message-expiry-interval.md │ ├── mqttx-v-1-9-6-release-notes.md │ ├── oee-in-lean-manufacturing.md │ ├── rabbitmq-vs-kafka.md │ ├── securing-your-mqtt-based-applications-with-nginx-plus-client-id-substitution-and-emqx-enterprise.md │ ├── serverless-mqtt-your-key-to-efficient-iot-prototyping.md │ ├── ten-important-kpis-for-measuring-smart-manufacturing-performace.md │ └── the-power-of-unified-namespace-in-modern-manufacturing.md ├── 202310 │ ├── a-digital-transformation-journey-to-smart-manufacturing.md │ ├── automated-kpis-implementation-for-iiot-with-the-open-manufacturing-hub.md │ ├── bacnet-protocol-basic-concepts-structure-obejct-model-explained.md │ ├── bridging-bacnet-data-to-mqtt.md │ ├── consolidating-the-foundation-of-smart-manufacturing-with-emqx-and-neuron.md │ ├── elevating-mqtt-security-with-client-certificate-authentication.md │ ├── emq-intel-and-sjtu-explore-mqtt-over-quic-together.md │ ├── emqx-enterprise-5-3-release-notes.md │ ├── exploring-the-extensibility-of-emqx.md │ ├── first-step-to-a-smart-factory.md │ ├── harnessing-sticky-sessions-for-mqtt-load-balancing-with-nginx-plus.md │ ├── home-assistant-modbus.md │ ├── how-to-install-a-scalable-mqtt-broker-on-openwrt.md │ ├── iiot-vs-iot-examples-and-5-key-differences.md │ ├── industrial-iot-applications.md │ ├── introduction-to-mqtt-5.md │ ├── mastering-iot-solution-with-emqx-cloud-serverless-addition.md │ ├── mqtt-over-lwip.md │ ├── mqtt5-new-feature-clean-start-and-session-expiry-interval.md │ ├── mqtt5-new-features-payload-format-indicator-and-content-type.md │ ├── navigating-urban-traffic-with-ekuiper.md │ ├── omron-fins-protocol.md │ ├── opc-ua-protocol.md │ ├── open-telemetry-the-basics-and-benefits-for-mqtt-and-iot-observability.md │ ├── smart-ship-sailing-into-a-new-era-with-mqtt-and-emqx.md │ ├── streamline-access-management-with-emqx-cloud-sso-integrations.md │ ├── twincat-protocol.md │ └── what-is-a-smart-factory-key-components-4-levels-of-evolution.md ├── 202311 │ ├── a-beginner-guide-to-mqtt-performance-testing.md │ ├── a-data-driven-solution-for-logistics-asset-tracking-and-maintenance.md │ ├── boosting-agility-in-fast-food-chains-with-emqx.md │ ├── data-infrastructure-for-smart-factory.md │ ├── data-storage-techniques-and-strategies-for-smart-manufacturing.md │ ├── emqx-cloud-serverless-on-google-cloud-asia-pacific.md │ ├── emqx-mqtt-and-ai.md │ ├── emqx-performance-tuning-maximum-connections-and-file-descriptors.md │ ├── enhancing-v2x-connectivity-with-emq.md │ ├── iec-61850-protocol.md │ ├── introduction-to-mqtt5-protocol-shared-subscription.md │ ├── knx-protocol.md │ ├── leveraging-the-hybrid-computing-for-data-management-and-analysis.md │ ├── mqtt5-request-response.md │ ├── practical-data-management-for-smart-manufacturing.md │ ├── promoting-cost-reduction-and-efficiency-in-oil-and-gas-production.md │ ├── revolutionizing-tsp-platforms.md │ ├── running-mqtt-on-kubernetes.md │ ├── seamlessly-integrating-emqx-cloud-with-confluent-cloud.md │ ├── supercharging-iiot-with-mqtt-edge-intelligence-and-influxdb.md │ ├── the-road-to-smart-mobility.md │ ├── unleashing-the-power-of-mqtt-edge-intelligence-and-timescale.md │ └── use-of-mqtt-will-message.md ├── 202312 │ ├── a-guide-on-bridging-iec-61850-data-to-mqtt.md │ ├── coap-protocol.md │ ├── connecting-to-emqx-cloud-with-mqtt-explorer.md │ ├── connecting-to-emqx-cloud-with-mqttbox.md │ ├── connecting-to-emqx-cloud-with-mqttfx.md │ ├── emqx-enables-smart-energy-storage.md │ ├── emqx-enterprise-5-4-release-notes.md │ ├── emqx-performance-tuning-tcp-syn-queue-and-accept-queue.md │ ├── industrial-data-ingestion-and-insight-from-edge-to-clickHouse.md │ ├── intelligent-operation-for-gas-gate-stations-through-ai-and-edge-computing-with-emq.md │ ├── introducing-neuronex-a-market-driven-evolution-for-industrial-data-landscape.md │ ├── mqtt-platform-for-wind-farm-remote-monitoring-and-maintenance.md │ ├── mqtt-ports.md │ ├── mqttx-1-9-7-release-notes.md │ ├── running-mqtt-broker-on-docker.md │ ├── seamlessly-integrating-emqx-cloud-with-upstash-for-kafka.md │ └── seamlessly-integrating-emqx-cloud-with-upstash-for-redis.md ├── 202401 │ ├── a-developer-s-journey-with-esp32-and-mqtt-broker.md │ ├── building-an-iot-time-series-data-application-with-mqtt-and-influxdb.md │ ├── connecting-millions-of-cars-using-emqx-mqtt-and-upstash-kafka.md │ ├── data-integration-is-now-available-in-emqx-cloud-serverless.md │ ├── ekuiper-v-1-12-release-notes.md │ ├── empowering-the-steel-manufacturing-with-neuronex.md │ ├── emqx-performance-tuning-linux-conntrack-and-mqtt-connections.md │ ├── getting-started-with-emqx-cloud-serverless-data-integration.md │ ├── how-to-use-mqtt-in-java.md │ ├── mqtt-platform-essential-features-and-use-cases.md │ ├── mqtt-with-zigbee-a-practical-guide.md │ ├── mqttx-1-9-8-release-notes.md │ └── unveiling-secs-gem.md ├── 202402 │ ├── building-a-smart-water-platform.md │ ├── connecting-to-serverless-mqtt-broker-with-mqttnet-in-csharp.md │ ├── emqx-enterprise-5-5-release-notes.md │ ├── emqx-expands-global-reach-with-cloud-serverless-service-launch-in-emea-region.md │ ├── how-to-use-mqtt-in-golang.md │ ├── how-to-use-mqtt-in-react.md │ ├── micro-python-mqtt-tutorial-based-on-raspberry-pi.md │ ├── mqtt-and-redis.md │ ├── mqtt-sparkplug-bridging-it-and-ot-in-industry-4-0.md │ ├── mqtt-sparkplug-in-action-a-step-by-step-tutorial.md │ ├── mqtt-to-mysql.md │ └── the-ultimate-guide-to-mqtt-broker-comparison.md ├── 202403 │ ├── build-an-iot-time-series-data-application-for-energy-storage-with-mqtt-and-timescale.md │ ├── connecting-mqtt-sn-devices-using-emqx.md │ ├── esp8266_mqtt_led.md │ ├── how-to-create-an-mqtt-application-in-qt6.md │ ├── how-to-publish-and-receive-protobuf-messages-within-mqtt.md │ ├── iot-protocols-mqtt-coap-lwm2m.md │ ├── mosquitto-pub-and-mosquitto-sub.md │ ├── mqtt-and-kafka.md │ ├── mqtt-and-mongodb-crafting-seamless-synergy-for-iot-data-mangement.md │ ├── mqtt-to-clickhouse-integration.md │ ├── mqtt-to-webhook.md │ ├── mqttx-1-9-9-release-notes.md │ ├── set-up-emqx-cloud-mqtt-broker-with-openhab.md │ └── smart-spending-how-to-avoid-unexpected-costs-with-emqx-serverless.md ├── 202404 │ ├── a-comprehensive-guide-to-migrating-from-cloudmqtt-to-emqx.md │ ├── apply-for-emqx-dedicated-event-history.md │ ├── bridging-mosquitto-to-emqx-cluster.md │ ├── emqx-enterprise-5-6-release-notes.md │ ├── emqx-open-source-vs-enterprise.md │ ├── emqx-your-next-step-in-iot-evolution-post-cloudmqtt.md │ ├── free-mqtt-broker.md │ ├── how-to-use-mqtt-in-rust.md │ ├── iot-in-healthcare-connecting-medical-lab-devices-with-mqtt.md │ ├── mqtt-and-freertos.md │ ├── mqtt-messaging-platform-enhances-real-time-game-communication.md │ ├── mqtt-vs-coap.md │ ├── mqttx-1-9-10-release-notes.md │ ├── neuronex-v-3-2-0-release-notes.md │ ├── next-level-iot-performance-what-s-new-in-emqx-dedicated-v-5.md │ ├── online-mqtt-client.md │ ├── opc-ua-vs-opc-da.md │ ├── strategic-update-refocusing-emqx-platform-service-offerings.md │ ├── unified-namespace-next-generation-data-fabric-for-iiot.md │ └── your-next-move-a-strategy-for-upgrading-from-emqx-standard.md ├── 202405 │ ├── a-comprehensive-comparison-of-open-source-mqtt-brokers-in-2023.md │ ├── bacnet-vs-modbus.md │ ├── breaking-down-industrial-gateway-solutions.md │ ├── electric-vehicle-charging-stations-management.md │ ├── emqx-enterprise-5-7-release-notes.md │ ├── esp8266-connects-to-the-public-mqtt-broker.md │ ├── how-to-deploy-an-mqtt-broker-on-raspberry-pi.md │ ├── how-to-process-json-hex-and-binary-data-in-mqtt.md │ ├── mastering-mqtt-analysis-with-wireshark.md │ ├── mqtt-platform-in-web-3-0.md │ ├── mqtt-to-postgresql.md │ ├── mqtt-vs-websocket.md │ ├── neuronex-rules-debugging-guide.md │ ├── seamlessly-consuming-kafka-messages-with-emqx-dedicated.md │ ├── seamlessly-integrating-emqx-with-datadog-for-efficient-monitoring.md │ ├── using-mqtt-in-flutter.md │ └── using-node-red-to-process-mqtt-data.md ├── 202406 │ ├── comparing-neuronex-and-kepware.md │ ├── connecting-coap-devices-to-emqx.md │ ├── emqx-multi-protocol-gateway.md │ ├── encoding-and-decoding-messages-using-schema-registry-in-emqx.md │ ├── mqtt-js-tutorial.md │ ├── mqtt-testing.md │ ├── mqtt-to-apache-pulsar.md │ ├── mqtt-vs-http.md │ ├── mqtt5-features-retain-message.md │ ├── mqttx-1-10-0-release-notes.md │ └── mqttx-web-migration-announcement.md ├── 202407 │ ├── advanced-features-of-mqtt-topics.md │ ├── connecting-mqtt-and-rest-api.md │ ├── exploring-geo-distribution-in-emqx-for-enhanced-scalability.md │ ├── getting-the-clients-real-ip-when-using-the-nginx-reverse-proxy-emqx.md │ ├── industrial-iot-systems.md │ ├── install-mqtt-broker-on-windows.md │ ├── integrating-ocpp-devices-with-emqx-for-a-seamless-ev-charging-network.md │ ├── mqtt-and-micro-ros.md │ ├── mqtt-and-snowflake-distributed-renewable-energy.md │ ├── mqttx-1-10-1-release-notes.md │ ├── neuronex-v-3-3-0-release-notes.md │ ├── port-management-in-emqx-dedicated.md │ └── vehicle-and-uns.md ├── 202408 │ ├── emqx-platform-and-genai.md │ ├── emqx-platform-e2e-rule-testing-guide.md │ ├── esp32-connects-to-the-free-public-mqtt-broker.md │ ├── hands-on-guide-on-esp32.md │ ├── how-emqx-boosts-social-media-with-scalable-and-low-latency-networking.md │ ├── introduction-to-mqtt-qos.md │ ├── navigating-dds-basics-limitations-and-integration-with-mqtt.md │ ├── neuronex-role-based-access-control.md │ ├── revolutionizing-edge-computing-with-mqtt.md │ └── smart-gas-management-emqx.md ├── 202409 │ ├── cluster-linking-is-now-available-on-emqx-platform-premium.md │ ├── database-for-mqtt-data-storage.md │ ├── emqx-enterprise-5-8-0-release-notes.md │ ├── how-emqx-powers-smart-agriculture.md │ ├── introducing-emqx-premium.md │ └── mqtt-client-auto-reconnect-best-practices.md ├── 202410 │ ├── building-effective-iot-data-stacks.md │ ├── emqx-in-the-smart-energy-industry.md │ ├── emqx-platform-durable-session.md │ ├── integrating-stomp-with-emqx.md │ ├── mqttx-1-11-0-release-notes.md │ └── neuronex-v-3-4-0-release-notes.md ├── 202411 │ ├── building-an-end-to-end-iot-data-pipeline.md │ ├── emq-and-f5.md │ ├── emqx-driven-smart-hospitality-tourism.md │ ├── how-to-use-mqtt-in-electron.md │ ├── how-to-use-mqtt-in-php.md │ ├── how-to-use-mqtt-in-vue.md │ ├── lorawan-and-mqtt.md │ ├── mqtt-for-internet-of-vehicles.md │ └── real-time-monitoring-with-emqx-risingwave-and-grafana.md ├── 202412 │ └── mqttx-1-11-1-release-notes.md ├── 202501 │ ├── how-to-use-mqtt-in-angular.md │ ├── how-to-use-thingsboard-to-access-mqtt-data.md │ ├── introducing-emqx-platform-smart-data-hub.md │ ├── mqtt-to-sqlite.md │ ├── quick-start-of-emqx-mqtt-cloud-service.md │ └── siemens-plc-and-mqtt-integration.md ├── 202502 │ ├── a-quic-load-balancing-implementation-using-xdp-and-ipvs.md │ ├── emqx-and-deepseek.md │ ├── how-to-use-mqtt-in-django.md │ ├── integrating-lwm2m-with-mqtt.md │ ├── neuronex-v-3-5-0-release-notes.md │ └── the-easiest-guide-to-getting-started-with-mqtt.md ├── 202503 │ ├── achieve-high-availability-for-neuronex-using-keepalived.md │ ├── can-bus-how-it-works-pros-and-cons.md │ ├── how-to-use-mqtt-in-python.md │ ├── integrating-claude-with-mqtt.md │ ├── integrating-mqtt-with-ai-and-llms.md │ ├── managing-opc-ua-server-tags-with-neuronex-tag-browser.md │ ├── modbus-protocol-the-grandfather-of-iot-communication.md │ ├── mqtt-client-tools.md │ ├── mqttx-and-claude.md │ ├── neuronex-and-deepseek.md │ ├── the-ai-revolution-in-consumer-electronics-powered-by-emqx.md │ └── why-and-how-mqtt-is-used-in-ai-llm-applications.md ├── 202504 │ ├── cluster-linking-deep-dive.md │ ├── discover-whats-new-in-emqx-cloud.md │ ├── emqx-enterprise-5-8-6-release-notes.md │ ├── enhancing-mqtt-toolbox-with-ai-capabilities.md │ ├── mcp-over-mqtt.md │ ├── multi-stream-of-mqtt-over-quic.md │ └── neuronex-device-control.md ├── 202505 │ ├── adopting-business-source-license-to-accelerate-mqtt-and-ai-innovation.md │ ├── emqx-and-automq.md │ ├── emqx-cloud-and-tdengine-cloud.md │ ├── emqx-enterprise-5-9-0-release-notes.md │ ├── mcp-over-mqtt-for-intelligent-vehicle-data-insights.md │ ├── smart-water-use-case.md │ └── why-emqx-v4-users-should-upgrade-to-v5.md └── 202506 │ ├── emqx-cloud-serverless-deployment-upgrades-june-2025.md │ ├── mqtt-trends-for-2025-and-beyond.md │ └── pioneering-ai-driven-iiot-data-exploration.md ├── id └── 202101 │ ├── esp8266-connects-to-the-public-mqtt-broker.md │ ├── how-to-use-mqtt-in-python.md │ ├── integrate-emqx-mqtt-cloud-with-home-assistant.md │ ├── introduction-to-mqtt-qos.md │ ├── mqtt-is-the-leading-protocol-for-connecting-iot-devices.md │ ├── panduan-bertahap-cara-mengontrol-smart-home-anda.md │ ├── set-up-emqx-cloud-mqtt-broker-with-openhab.md │ └── use-mqtt-with-raspberry-pi.md ├── ja ├── 202305 │ ├── 7-mqtt-trends-in-2023.md │ ├── connected-cars-and-automotive-connectivity-all-you-need-to-know.md │ ├── deploy-the-most-powerful-mqtt-server-in-your-own-cloud.md │ ├── emq-industrial-internet-cloud-edge-integrated-solution.md │ ├── emqx-enterprise-mqtt-broker-apache-kafka-build-high-performance-iot-message-processing-backend.md │ ├── emqx-v-5-0-released.md │ ├── getting-data-from-emqx-cloud-with-influxdb-native-collector.md │ ├── how-to-use-mqtt-in-nodejs.md │ ├── mqtt-for-internet-of-vehicles.md │ ├── mqtt-messaging-platform-for-internet-of-vehicles.md │ ├── mqtt-over-quic.md │ ├── nanomq-newsletter-202209.md │ ├── neuron-1-3-0-release-notes.md │ ├── next-gen-cloud-mqtt-service-meet-emqx-cloud-serverless.md │ ├── reflections-on-the-tenth-anniversary-of-emqx.md │ ├── save-mqtt-data-from-emqx-cloud-to-aws-dynamodb-through-the-public-network.md │ ├── top-3-mqtt-websocket-clients-in-2023.md │ ├── top-3-open-source-mqtt-brokers-for-industrial-iot-in-2023.md │ └── two-way-tls-ssl-with-emqx-cloud.md ├── 202306 │ ├── a-comparison-of-iiot-protocols-mqtt-sparkplug-vs-opc-ua.md │ ├── can-bus-how-it-works-pros-and-cons.md │ ├── emqx-vs-mosquitto-2023-mqtt-broker-comparison.md │ ├── esp32-connects-to-the-free-public-mqtt-broker.md │ ├── how-to-use-mqtt-in-python.md │ ├── mqtt-client-tools.md │ ├── mqtt-js-tutorial.md │ └── quic-protocol-the-features-use-cases-and-impact-for-iot-iov.md ├── 202307 │ ├── connect-to-mqtt-broker-with-websocket.md │ ├── data-stream-processing-for-software-defined-vehicle.md │ ├── emqx-cloud-byoc-is-now-available-on-google-cloud.md │ ├── emqx-enterprise-5-1-0-release-notes.md │ ├── mqtt-sparkplug-solution-for-industrial-iot-using-emqx-and-neuron.md │ ├── nanomq-the-multi-threaded-alternative-to-mosquitto-for-iot-edge.md │ ├── one-click-deploying-emqx-mqtt-broker-on-aws-using-terraform.md │ ├── sparkplug-3-0-advancements-and-formalization-in-mqtt-for-iiot.md │ ├── the-ultimate-guide-to-mqtt-broker-comparison.md │ └── unified-namespace-next-generation-data-fabric-for-iiot.md ├── 202308 │ ├── emqx-single-node-supports-5m-connections.md │ ├── file-transfer-over-mqtt.md │ ├── iiot-explained-examples-technologies-benefits-and-challenges.md │ ├── jwt-authentication-and-jwks-endpoint-in-mqtt.md │ ├── mqtt-performance-benchmark-series-emqx-timescaledb-integration.md │ ├── mqtt-sparkplug-bridging-it-and-ot-in-industry-4-0.md │ ├── mqtt-sparkplug-in-action-a-step-by-step-tutorial.md │ ├── neuron-v-2-5-1-release-notes.md │ └── use-mqtt-with-raspberry-pi.md ├── 202309 │ ├── advanced-features-of-mqtt-topics.md │ ├── demonstrate-mqtt-5-0-features-using-mqttx-cli.md │ ├── five-strategies-for-strengthening-mqtt-infrastructure-security.md │ ├── how-to-set-parameters-when-establishing-an-mqtt-connection.md │ ├── modbus-protocol-the-grandfather-of-iot-communication.md │ ├── mqtt-5-introduction-to-publish-subscribe-model.md │ ├── mqtt-performance-benchmark-testing-emqx-single-node-message-latency-response-time.md │ ├── mqtt-performance-benchmark-testing-emqx-single-node-supports-2m-message-throughput.md │ ├── simulating-the-future-crafting-iot-scenarios-with-chatgpt-and-mqttx.md │ ├── the-smart-manufacturing-revolution.md │ └── what-is-the-mqtt-protocol.md ├── 202310 │ ├── a-deep-dive-into-token-based-authentication-and-oauth-2-0-in-mqtt.md │ ├── introduction-to-mqtt-qos.md │ ├── leveraging-enhanced-authentication-for-mqtt-security.md │ ├── mqtt-keep-alive.md │ ├── mqtt-session.md │ ├── securing-mqtt-with-username-and-password-authentication.md │ ├── understanding-mqtt-security-a-comprehensive-overview.md │ └── what-is-v2x-and-the-future-of-vehicle-to-everything-connectivity.md ├── 202311 │ ├── authorization-in-mqtt-using-acls-to-control-access-to-mqtt-messaging.md │ ├── essential-things-to-know-about-mqtt-security.md │ ├── fortifying-mqtt-communication-security-with-ssl-tls.md │ ├── improve-the-reliability-and-security-of-mqtt-broker-with-rate-limit.md │ ├── mqtt5-new-features-reason-code-and-ack.md │ └── use-of-mqtt-will-message.md ├── 202312 │ ├── an-introduction-to-subscription-options-in-mqtt.md │ ├── best-practices-of-maximum-packet-size-in-mqtt.md │ ├── how-to-use-mqtt-in-java.md │ ├── how-to-use-mqtt-in-php.md │ ├── mosquitto-mqtt-broker-pros-cons-tutorial-and-modern-alternatives.md │ ├── mqtt5-user-properties.md │ └── subscription-identifier-and-subscription-options.md ├── 202403 │ ├── bacnet-protocol-basic-concepts-structure-obejct-model-explained.md │ ├── bridging-bacnet-data-to-mqtt.md │ ├── bridging-knx-data-to-mqtt-introduction-and-hands-on-tutorial.md │ ├── bridging-opc-ua-data-to-mqtt-for-iiot.md │ ├── bridging-twincat-data-to-mqtt.md │ ├── coap-protocol.md │ ├── esp8266-connects-to-the-public-mqtt-broker.md │ ├── esp8266_mqtt_led.md │ ├── how-to-use-mqtt-in-react-native.md │ ├── how-to-use-mqtt-in-react.md │ ├── how-to-use-mqtt-in-vue.md │ ├── knx-protocol.md │ ├── micro-python-mqtt-tutorial-based-on-raspberry-pi.md │ ├── opc-ua-over-mqtt-the-future-of-it-and-ot-converge.md │ ├── opc-ua-protocol.md │ ├── twincat-protocol.md │ └── using-mqtt-in-flutter.md ├── 202404 │ ├── bridging-fins-data-to-mqtt.md │ ├── bridging-modbus-data-to-mqtt-for-iiot.md │ ├── iot-in-healthcare-connecting-medical-lab-devices-with-mqtt.md │ ├── mosquitto-pub-and-mosquitto-sub.md │ ├── mqtt-and-kafka.md │ ├── mqtt-to-webhook.md │ ├── omron-fins-protocol.md │ ├── revolutionizing-tsp-platforms.md │ └── the-road-to-smart-mobility.md ├── 202405 │ ├── emqx-open-source-vs-enterprise.md │ ├── how-to-use-mqtt-in-golang.md │ ├── how-to-use-mqtt-in-rust.md │ ├── mqtt-to-clickhouse-integration.md │ ├── powerful-and-easy-to-use-mqtt-5-command-line-tool.md │ └── smart-ship-sailing-into-a-new-era-with-mqtt-and-emqx.md ├── 202406 │ ├── bacnet-vs-modbus.md │ ├── emqx-enterprise-5-7-release-notes.md │ ├── mqtt-messaging-platform-enhances-real-time-game-communication.md │ └── using-node-red-to-process-mqtt-data.md ├── 202407 │ ├── exploring-geo-distribution-in-emqx-for-enhanced-scalability.md │ ├── getting-the-clients-real-ip-when-using-the-nginx-reverse-proxy-emqx.md │ ├── mqtt-and-micro-ros.md │ ├── mqtt-testing.md │ ├── open-manufacturing-hub-a-reference-architecture-for-industrial-iot.md │ └── seamlessly-integrating-emqx-with-datadog-for-efficient-monitoring.md ├── 202408 │ ├── mqtt-vs-http.md │ ├── navigating-dds-basics-limitations-and-integration-with-mqtt.md │ ├── revolutionizing-edge-computing-with-mqtt.md │ └── vehicle-and-uns.md ├── 202409 │ ├── emqx-enterprise-5-8-0-release-notes.md │ ├── emqx-platform-and-genai.md │ ├── introduction-to-mqtt-5.md │ └── mqtt-client-auto-reconnect-best-practices.md ├── 202410 │ ├── connecting-to-serverless-mqtt-broker-with-mqttnet-in-csharp.md │ ├── introduction-to-mqtt5-protocol-shared-subscription.md │ ├── mqtt5-new-feature-clean-start-and-session-expiry-interval.md │ ├── mqtt5-request-response.md │ └── mqtt5-topic-alias.md ├── 202411 │ ├── how-to-create-an-mqtt-application-in-qt6.md │ ├── how-to-use-mqtt-in-electron.md │ └── using-mqtt-in-unity-with-m2mqttunity-library-a-step-by-step-guide.md ├── 202412 │ ├── building-an-end-to-end-iot-data-pipeline.md │ ├── emq-and-f5.md │ ├── emqx-platform-durable-session.md │ └── lorawan-and-mqtt.md ├── 202502 │ └── a-quic-load-balancing-implementation-using-xdp-and-ipvs.md ├── 202503 │ ├── integrating-mqtt-with-ai-and-llms.md │ └── why-and-how-mqtt-is-used-in-ai-llm-applications.md ├── 202504 │ └── the-easiest-guide-to-getting-started-with-mqtt.md └── 202505 │ ├── emqx-and-deepseek.md │ ├── introduction-to-mqtt-control-packets.md │ ├── mcp-over-mqtt.md │ ├── mqttx-and-claude.md │ └── will-quic-become-the-next-generation-iov-protocol.md └── zh ├── 201903 ├── emqx-broker-3-1-beta-2-released.md └── mqtt5-new-features-properties-and-loads.md ├── 201904 └── emqx-helps-operators-build-large-scale-nb-iot-platform.md ├── 201905 └── emqx-server-installation-guide-for-centos7.md ├── 201906 ├── emqx-server-installation-guide-for-debian.md ├── emqx-server-installation-guide-for-macos.md └── emqx-server-installation-guide-for-ubuntu.md ├── 201907 └── emqx-server-installation-guide-for-raspbian.md ├── 201908 └── emq-and-yottacloud-retrospect-and-prospect-of-iot-energy-consumption-monitoring-project.md ├── 201909 └── emq-released-the-function-overview-of-emqx-enterprise-3-4-0-in-september.md ├── 201911 ├── introduction-to-the-commonly-used-mqtt-client-library.md ├── iot-traditional-private-tcp-protocol-service-migration-emqx-private-tcp-protocol-support.md ├── lightweight-edge-computing-emqx-kuiper-and-aws-iot-hub-integration-solution.md └── upload-sensor-data-to-mqtt-cloud-service-via-nodemcu-esp8266.md ├── 201912 └── build-emqx-influxdb-grafana-iot-data-visualization-solution-in-one-hour.md ├── 202001 └── release-notes-kuiper-0-1.md ├── 202002 ├── mqtt-x-guideline.md └── release-notes-kuiper-0.2.0.md ├── 202003 ├── message-retention-and-message-expiration-interval-of-emqx-mqtt5-broker.md ├── mqttx-v1-3-0-was-officially-released-an-elegant-cross-platform-mqtt5-desktop-test-client.md └── release-notes-kuiper-0-2-1.md ├── 202004 ├── emqx-v-4-1-beta-1-released.md ├── release-notes-kuiper-0-3-0.md ├── rewriting-emqx-mqtt5-topic.md └── super-lightweight-iot-edge-stream-processing-kuiper-plugin-development-tutorial.md ├── 202005 ├── esp8266-connects-to-the-public-mqtt-broker.md ├── kuiper-becomes-edgex-rule-engine.md ├── mqttx-v-1-3-1-release-notes.md └── release-notes-kuiper-0-4-0.md ├── 202006 ├── android-connects-mqtt-using-kotlin.md ├── control-iot-device-with-kuiper-rules-engine.md ├── emqx-mqtt-5-cloud.md ├── emqx-mqtt-broker-k8s-cluster.md ├── release-notes-kuiper-0-4-1.md └── release-notes-kuiper-0-5-0.md ├── 202007 ├── develop-emqx-plugin-using-java.md ├── develop-emqx-plugin-using-python.md ├── emqx-server-ssl-tls-secure-connection-configuration-guide.md ├── emqx_rate_limit.md ├── enable-two-way-ssl-for-emqx.md ├── kuiper-golang-template.md └── smart-home-hub-on-raspberry-pi.md ├── 202008 ├── emqx-4-2-rc-1-release-notes.md ├── emqx-aiot-solution.md ├── emqx-sm-iot-security-solution.md ├── emqx-tdengine-grafana.md ├── hamler-0-2-otp-behaviours-with-type-classes.md ├── mqtt5-enhanced-authentication.md ├── mqtt5-flow-control.md ├── release-notes-kuiper-0-9-0.md └── use-mqtt-with-raspberry-pi.md ├── 202009 ├── building-modbus-based-iiot-app-with-neuron.md ├── comparision-of-python-mqtt-client.md ├── connect-to-mqtt-broker-with-websocket.md ├── emq-officially-release-neuron.md ├── emqx-and-1d-cnn-in-aiot.md ├── emqx-and-clickhouse-for-iot-data-access-and-analysis.md ├── emqx-enterprise-v-4-2-module-features.md ├── emqx-nb-iot-access-solution.md ├── how-to-use-mqtt-in-golang.md ├── how-to-use-mqtt-in-vue.md ├── release-notes-kuiper-0-9-1.md ├── release-notes-mqttx-1-3-3.md ├── start-emqx-on-huaweicloud.md └── use-emqx-cloud.md ├── 202010 ├── emq-industrial-internet-cloud-edge-integrated-solution.md ├── how-to-use-mqtt-in-react.md ├── mqttx-v-1-3-4-release-notes.md ├── release-notes-emq-x-enterprise-4-2-0.md └── release-notes-kuiper-1-0-0.md ├── 202011 ├── android-mqtt-ssl-tls-authentication.md ├── application-of-emqx-in-iot-platform-of-ccb.md ├── emq-intelligent-workshop-platform.md ├── mqttx-v-1-4-0-release-notes.md └── release-notes-kuiper-1-0-1.md ├── 202012 ├── access-emqx-in-kubernetes-cluster-through-nginx-ingress-controller.md ├── emq-and-evpower-solution.md ├── mqttx-v-1-4-1-release-notes.md ├── mqttx-v-1-4-2-release-notes.md ├── release-notes-emq-x-enterprise-4-2-2.md ├── release-notes-kuiper-1-0-2.md └── verifying-kuiper-stream-processing-with-mqtt-x.md ├── 202101 ├── emqx-haproxy.md ├── esp8266_mqtt_led.md ├── nanomq-is-officially-released.md ├── release-notes-kuiper-1-1-0.md └── release-notes-neuron-1-1-1.md ├── 202102 ├── birth-of-streaming-database.md ├── mqttx-script-function-tutorial.md ├── mqttx-v-1-5-1-release-notes.md ├── mqttx-v-1-5-2-release-notes.md └── release-notes-emq-x-enterprise-4-2-3.md ├── 202103 ├── emqx-project-newsletter-202102.md ├── emqx-rfc.md ├── hstreamdb-is-now-officially-open-source.md ├── python-async-mqtt-client-hbmqtt.md ├── release-notes-kuiper-1-1-2.md └── run-tensorflow-lite-model-with-kuiper-function-plugin.md ├── 202104 ├── emqx-project-newsletter-202103.md ├── mqttx-v-1-5-3-release-notes.md └── url-mqtt-and-coap.md ├── 202105 ├── emqx-4-3-0-release-notes.md ├── emqx-enterprise-4-3-0-release-notes.md ├── emqx-project-newsletter-202104.md ├── finance-and-payment-iot-solution.md ├── mqttx-v-1-5-4-release-notes.md ├── mqttx-v-1-5-5-release-notes.md ├── new-emqx-cloud.md └── release-notes-neuron-1-2-0.md ├── 202106 ├── emqx-newsletter-202105.md ├── emqx-security-protection-upgrade-notice.md └── emqx-ssl-tls-configuration-guide.md ├── 202107 ├── connecting-to-emqx-cloud-with-mqtt-explorer.md ├── emqx-newsletter-202106.md ├── hstreamdb-v-0-5-release-notes.md ├── introducing-emqx-cloud-on-microsoft-azure.md ├── mqttx-v-1-6-0-release-notes.md └── quick-start-of-emqx-mqtt-cloud-service.md ├── 202108 ├── application-of-mqtt-protocol-in-carriers.md ├── connecting-to-emqx-cloud-with-mqttbox.md ├── connecting-to-emqx-cloud-with-mqttfx.md ├── connecting-to-emqx-cloud-with-mqttlens.md ├── edge-stream-processing-solution-deploying-and-managing-ekuiper-with-openyurt.md ├── emqx-newsletter-202107.md ├── emqx-or-rabbitmq-part-1.md ├── how-to-use-mqtt-in-nodejs.md ├── mqtt-and-plc.md ├── mqtt-broker-clustering-part-1-load-balancing.md └── neuron-1-3-0-release-notes.md ├── 202109 ├── emqx-newsletter-202108.md ├── emqx-or-rabbitmq-part-2.md ├── introducing-emqx-cloud-on-google-cloud-platform.md ├── mqtt-broker-clustering-part-2-sticky-session-load-balancing.md ├── mqtt-js-tutorial.md ├── neuron-1-3-2-release-notes.md └── rt-thread-connects-to-emqx-cloud-with-tls.md ├── 202110 ├── emqx-and-matrixdb.md ├── emqx-cloud-realizes-multi-project-deployment-management.md ├── emqx-newsletter-202109.md ├── emqx-newsletter-202110.md ├── hstreamdb-newsletter-202110.md ├── mqtt-broker-clustering-part-3-challenges-and-solutions-of-emqx-horizontal-scalability.md ├── mqttx-v-1-6-1-release-notes.md ├── nanomq-newsletter-202110.md └── neuron-newsletter-202110.md ├── 202111 ├── emqx-cloud-launches-sub-account-management.md ├── hstreamdb-newsletter-202111.md ├── hstreamdb-v-0-6-release-notes.md ├── introduction-to-the-open-source-testing-tool-jmeter.md ├── ios-mqtt5-client.md ├── mqtt5-user-properties.md ├── popular-online-public-mqtt-brokers.md └── power-artificial-intelligence.md ├── 202112 ├── ekuiper-newsletter-202111.md ├── ekuiper-newsletter-202112.md ├── emqx-enterprise-4-4-0-release-notes.md ├── emqx-kubernetes-operator-v-1-0-officially-released.md ├── emqx-newsletter-202111.md ├── emqx-newsletter-202112.md ├── how-to-use-mqtt-in-dart.md ├── hstreamdb-newsletter-202112.md ├── install-emqx-mqtt-broker.md ├── introduction-to-jmeter-test-components.md ├── mqtt5-connect-properties.md ├── mqtt5-topic-alias.md ├── mqttx-v-1-7-0-release-notes.md ├── nanomq-newsletter-202111.md ├── nanomq-newsletter-202112.md ├── neuron-newsletter-202111.md ├── neuron-newsletter-202112.md └── testing-mqtt-5-with-the-mqtt-client.md ├── 202201 ├── ctg-large-scale-iot-data-platform.md ├── ekuiper-newsletter-202201.md ├── emqx-cloud-alarm-integration.md ├── emqx-cloud-http-custom-authentication.md ├── emqx-newsletter-202201.md ├── how-to-use-the-mqtt-plugin-in-jmeter.md ├── hstreamdb-newsletter-202201.md ├── mqtt-broker-security-fuzz-testing.md ├── mqtt-for-elixir.md ├── mqttx-v-1-7-1-release-notes.md ├── mqttx-v-1-7-2-release-notes.md ├── nanomq-newsletter-202201.md ├── neuron-newsletter-202201.md └── store-mqtt-messages-to-time-series-database-iotdb.md ├── 202202 ├── ekuiper-newsletter-202202.md ├── emqx-newsletter-202202.md ├── hstreamdb-newsletter-202202.md ├── hstreamdb-v-0-7-release-notes.md ├── iot-protocols-mqtt-coap-lwm2m.md ├── mqtt-for-internet-of-vehicles.md ├── mqtt-keep-alive.md ├── mqtt-messaging-platform-for-internet-of-vehicles.md ├── mqtt-topic-design-for-internet-of-vehicles.md ├── nanomq-newsletter-202202.md └── neuron-newsletter-202202.md ├── 202203 ├── connect-to-emqx-cloud-using-cciot.md ├── emqx-cloud-easier-to-use-rules-engine.md ├── emqx-cloud-intranet-load-balancing-and-net-gateway-service.md ├── emqx-cloud-launched-value-added-services.md ├── establish-a-secure-and-reliable-connection-to-emqx-cloud-with-privatelink.md ├── million-level-message-throughput-architecture-design-for-internet-of-vehicles.md ├── mqtt-qos-design-for-internet-of-vehicles.md ├── test-mqtt-connection-with-jmeter.md ├── wumei-smart.md ├── zigbee-lock.md └── zizhujiesuan.md ├── 202204 ├── difference-between-emqx-enterprise-and-emqx-cloud.md ├── ekuiper-newsletter-202203.md ├── emqx-cloud-cost-savings.md ├── emqx-cloud-order-system-optimization.md ├── emqx-multi-release-rules-engine-supports-reset-run-data.md ├── emqx-newsletter-202203.md ├── hstreamdb-newsletter-202203.md ├── nanomq-newsletter-202203.md ├── neuron-newsletter-202203.md ├── solicitation-notice-for-quality-articles.md ├── ssl-tls-for-internet-of-vehicles-communication-security.md └── the-use-of-jmeter-mqtt-in-subscription-and-publishing-test-scenarios.md ├── 202205 ├── application-of-gmsm-in-internet-of-vehicles-security-authentication-scenario.md ├── connecting-coap-devices-to-emqx-cloud.md ├── ekuiper-newsletter-202204.md ├── ekuiper-v-1-5-0-release-notes.md ├── emqx-and-tablestore-multi-scenario-one-stop-iot-data-solution.md ├── emqx-cloud-update-external-authentication-authorization.md ├── emqx-newsletter-202204.md ├── emqx-v-5-0-preview.md ├── how-emqx-cloud-secures-data-on-the-public-cloud.md ├── how-to-use-mqtt-in-flask.md ├── hstreamdb-newsletter-202204.md ├── hstreamdb-v-0-8-release-notes.md ├── mqttx-newsletter-202204.md ├── nanomq-newsletter-202204.md ├── neuron-newsletter-202204.md ├── neuron-v-2-0-product-introduction.md ├── summer-ospp-2022.md └── xmeter-newsletter-202204.md ├── 202206 ├── bridging-emqx-cloud-data-to-aws-iot-over-the-public-network.md ├── building-a-million-connection-mqtt-service-on-k8s.md ├── ekuiper-newsletter-202205.md ├── emq-helps-build-smart-community.md ├── emq-helps-qingdao-yanbo-build-a-smart-water-platform.md ├── emqx-newsletter-202205.md ├── emqx-update-several-new-sql-functions-and-tablestore-integration-for-rules-engine.md ├── how-to-use-mqtt-in-react-native.md ├── how-to-use-mqtt-in-wechat-miniprogram.md ├── how-to-use-thingsboard-to-access-mqtt-data.md ├── hstreamdb-newsletter-202205.md ├── industrial-iot-data-collection-cleaning-and-control.md ├── nanomq-newsletter-202205.md ├── neuron-newsletter-202205.md ├── one-device-one-secret-authentication-for-iot-devices-with-emqx-cloud.md ├── reaching-100m-mqtt-connections-with-emqx-5-0.md └── xmeter-newsletter-202205.md ├── 202207 ├── connecting-modbus-tcp-and-modbus-rtu-protocol-devices-with-neuron.md ├── deploy-mqtt-cluster-on-alibaba-cloud-using-terraform.md ├── deploy-mqtt-cluster-on-aws-using-terraform.md ├── ekuiper-newsletter-202206.md ├── emqx-cloud-redis-and-jwt-authentication-authorization.md ├── emqx-cloud-update-log-analysis-adds-more-parameters.md ├── emqx-newsletter-202206.md ├── emqx-update-integrated-streaming-database.md ├── emqx-v-5-0-released.md ├── how-emqx-5-0-achieves-100-million-mqtt-connections.md ├── hstreamdb-newsletter-202206.md ├── iot-critical-business-migration-to-the-cloud-practice.md ├── mqtt-over-quic.md ├── mqttx-newsletter-202206.md ├── nanomq-newsletter-202206.md ├── neuron-newsletter-202206.md ├── neuron-v-2-1-0-release-notes.md ├── powerful-and-easy-to-use-mqtt-5-command-line-tool.md └── xmeter-newsletter-202206.md ├── 202208 ├── an-easy-to-use-and-observable-mqtt-dashboard.md ├── cloud-native-smart-connected-car-messaging.md ├── create-a-scalable-mqtt-cluster-with-emqx-operator.md ├── data-integration-support-hstreamdb-and-tablestore.md ├── ekuiper-newsletter-202207.md ├── emqx-newsletter-202207.md ├── emqx-v-4-x-released.md ├── how-to-install-emqx-mqtt-broker-on-ubuntu.md ├── hstreamdb-newsletter-202207.md ├── hstreamdb-v-0-9-release-notes.md ├── iot-data-integration.md ├── iot-mqtt-testing-cloud-service-xmeter-cloud-officially-released.md ├── mqtt-persistence-based-on-rocksdb.md ├── mqttx-newsletter-202207.md ├── mqttx-v-1-8-1-release-notes.md ├── nanomq-newsletter-202207.md ├── neuron-newsletter-202207.md ├── online-mqtt-client.md ├── securing-the-iot.md └── using-ekuiper-to-process-protocol-buffers-data.md ├── 202209 ├── build-a-one-stop-iot-data-solution-with-emqx-and-polardb-x.md ├── building-an-industrial-iot-digital-twin-infrastructure.md ├── deploying-emqx-cluster-on-cce.md ├── ekuiper-newsletter-202208.md ├── emqx-cloud-shadow-service-application-scenario.md ├── emqx-cloud-shadow-service.md ├── emqx-connects-multiple-iot-protocols.md ├── emqx-newsletter-202208.md ├── how-emqx-simplifies-iot-development.md ├── how-to-ensure-the-security-of-the-iot-platform.md ├── how-to-use-mqtt-in-angular.md ├── hstreamdb-newsletter-202208.md ├── hstreamdb-newsletter-202209.md ├── jmeter-extension-development-beanshell-data-simulation.md ├── jmeter-extension-development-custom-functions.md ├── jmeter-extension-development-custom-java-sampler.md ├── micro-python-mqtt-tutorial-based-on-raspberry-pi.md ├── mqttx-newsletter-202208.md ├── nanomq-newsletter-202208.md ├── neuron-newsletter-202208.md ├── neuron-v-2-2-2-release-notes.md ├── product-quality-traceability-solution.md ├── smart-factory-ai-defect-detection-solution.md └── use-prometheus-to-monitor-ekuiper-rules-status.md ├── 202210 ├── deploying-emqx-cluster-on-aws-eks.md ├── edge-factory-cloud-abnormal-event-processing-architecture.md ├── efficient-data-channels-support-real-time-analysis-and-visualization-of-production-conditions.md ├── ekuiper-newsletter-202209.md ├── emqx-newsletter-202209.md ├── how-to-set-parameters-when-establishing-an-mqtt-connection.md ├── how-to-use-mqtt-in-django.md ├── mqtt-communication-optimization-practices-for-iov.md ├── mqtt5-features-retain-message.md ├── mqttx-newsletter-202209.md ├── mqttx-v-1-8-3-release-notes.md ├── nanomq-newsletter-202209.md ├── neuron-newsletter-202209.md ├── what-is-the-mqtt-protocol.md └── xmeter-newsletter-202209.md ├── 202211 ├── deploying-mqtt-cluster-on-alicloud-ack.md ├── deploying-mqtt-cluster-on-azure-aks.md ├── deploying-mqtt-cluster-on-huawei-cloud-osc.md ├── deploying-mqtt-cluster-on-tencent-tke.md ├── ekuiper-newsletter-202210.md ├── emq-application-practice-in-vehicle-road-collaboration.md ├── emqx-enterprise-v-4-4-11-released.md ├── emqx-newsletter-202210.md ├── get-started-with-emqx-cloud-on-the-aws-marketplace-with-pay-as-you-go.md ├── getting-started-with-mqtt-over-quic-from-scratch.md ├── high-frequency-data-collection-and-real-time-stream-computing.md ├── how-to-achieve-flexible-data-collection-for-internet-of-vehicles.md ├── hstreamdb-newsletter-202210.md ├── industrial-edge-data-collection-and-processing.md ├── jmeter-tcp.md ├── mqtt-session.md ├── mqttx-newsletter-202210.md ├── mqttx-v-1-9-0-release-notes.md ├── nanomq-newsletter-202210.md ├── neuron-newsletter-202210.md └── support-for-custom-protocols-through-jmeter-extensions.md ├── 202212 ├── achieve-mqtt-message-concurrent-performance-of-100-million-and-throughput-of-millions.md ├── activate-the-value-of-massive-data.md ├── custom-jmeter-plug-in.md ├── data-codec-using-custom-functions.md ├── ekuiper-newsletter-202211.md ├── ekuiper-newsletter-202212.md ├── emqx-cloud-custom-functions.md ├── emqx-newsletter-202211.md ├── emqx-newsletter-202212.md ├── emqx-prometheus-grafana.md ├── how-to-cross-compile-neuron-source-code.md ├── hstreamdb-newsletter-202211.md ├── mqtt-5-introduction-to-publish-subscribe-model.md ├── mqttx-newsletter-202211.md ├── mqttx-newsletter-202212.md ├── nanomq-newsletter-202211.md ├── nanomq-newsletter-202212.md ├── neuron-newsletter-202211.md ├── neuron-newsletter-202212.md ├── neuron-v-2-3-0-release-notes.md ├── reflections-on-the-tenth-anniversary-of-emqx.md └── xmeter-newsletter-202211.md ├── 202301 ├── bridge-data-to-gcp-pub-sub.md ├── emqx-enterprise-v-4-4-13-released.md ├── how-to-upgrade-emqx-in-kubernetes.md ├── hstreamdb-newsletter-202212.md ├── mqtt-client-faq.md └── xmeter-cloud-professional-edition-is-officially-launched.md ├── 202302 ├── ekuiper-v-1-8-0-release-notes.md ├── emqx-cloud-serverless-launched.md └── mqttx-v-1-9-1-release-notes.md ├── 202303 ├── ekuiper-newsletter-202302.md ├── emq-and-nanyang-wanbang-cloud-edge-integration-solution.md ├── emqx-enterprise-v-4-4-16-released.md ├── emqx-newsletter-202302.md ├── hstreamdb-newsletter-202302.md ├── integration-practice-of-emqx-and-hstreamdb.md ├── mqtt-client-auto-reconnect-best-practices.md ├── nanomq-newsletter-202302.md ├── neuron-newsletter-202302.md └── xmeter-newsletter-202302.md ├── 202304 ├── 7-factors-to-consider-when-choosing-mqtt-broker-2023.md ├── 7-mqtt-trends-in-2023.md ├── a-comprehensive-guide-to-emqx-cloud-serverless-dedicated-and-byoc-plans.md ├── deploy-the-most-powerful-mqtt-server-in-your-own-cloud.md ├── ekuiper-newsletter-202303.md ├── emqx-newsletter-202303.md ├── emqx-vs-mosquitto-2023-mqtt-broker-comparison.md ├── emqx-vs-nanomq-2023-mqtt-broker-comparison.md ├── emqx-vs-vernemq-2023-mqtt-broker-comparison.md ├── essential-things-to-know-about-mqtt-security.md ├── how-to-deploy-emqx-enterprise-on-google-cloud.md ├── mosquitto-vs-nanomq-2023-mqtt-broker-comparison.md ├── nanomq-newsletter-202303.md ├── neuron-newsletter-202303.md ├── neuron-v-2-4-0-release-notes.md ├── open-mqtt-benchmark-suite-the-ultimate-guide-to-mqtt-performance-testing.md ├── securing-mqtt-with-username-and-password-authentication.md ├── understanding-mqtt-security-a-comprehensive-overview.md └── xmeter-cloud-update-iot-multi-protocol-support.md ├── 202305 ├── 5-key-concepts-for-mqtt-broker-in-sparkplug-specification.md ├── build-an-industrial-iot-device-management-platform-with-zero-code.md ├── building-reliable-iot-systems-an-introduction-to-mqtt-performance-testing.md ├── connected-cars-and-automotive-connectivity-all-you-need-to-know.md ├── ekuiper-newsletter-202304.md ├── ekuiper-source-code-interpretation.md ├── emqx-newsletter-202304.md ├── experience-neuron-industrial-iot-gateway-software-for-free-with-time-unlimited-trial-license.md ├── exploring-byoc-taking-your-mqtt-cloud-service-to-the-next-level.md ├── exploring-the-data-privacy-first-architecture-of-emqx-cloud-byoc.md ├── getting-started-with-rule-engine-in-mqtt-broker.md ├── mqttx-newsletter-202304.md ├── nanomq-newsletter-202304.md ├── neuron-newsletter-202304.md ├── next-gen-cloud-mqtt-service-meet-emqx-cloud-serverless.md ├── one-click-deploying-emqx-mqtt-broker-on-gcp-using-terraform.md ├── quic-protocol-the-features-use-cases-and-impact-for-iot-iov.md ├── top-3-open-source-mqtt-brokers-for-industrial-iot-in-2023.md ├── when-mqtt-meets-chatgpt.md └── xmeter-newsletter-202304.md ├── 202306 ├── a-comparison-of-iiot-protocols-mqtt-sparkplug-vs-opc-ua.md ├── a-deep-dive-into-token-based-authentication-and-oauth-2-0-in-mqtt.md ├── an-introduction-to-subscription-options-in-mqtt.md ├── bridging-demanded-signals-from-can-bus-to-mqtt-by-ekuiper.md ├── can-bus-how-it-works-pros-and-cons.md ├── data-stream-processing-for-software-defined-vehicle.md ├── ekuiper-newsletter-202305.md ├── ekuiper-v-1-10-0-release-notes.md ├── emqx-newsletter-202305.md ├── enabling-mqtt-over-quic-on-kubernetes-with-emqx-5-0.md ├── getting-started-with-mqtt-performance-testing-a-primer-on-scenarios-and-metrics.md ├── hstream-platform-serverless-beta-released.md ├── leveraging-enhanced-authentication-for-mqtt-security.md ├── mqtt-and-kafka.md ├── mqtt-broker-clustering.md ├── mqtt-sparkplug-solution-for-industrial-iot-using-emqx-and-neuron.md ├── mqtt-stream-processing-with-emqx-and-ekuiper.md ├── mqttx-newsletter-202305.md ├── multi-tenancy-architecture-in-mqtt.md ├── nanomq-newsletter-202305.md ├── neuron-newsletter-202305.md ├── subscription-identifier-and-subscription-options.md └── xmeter-newsletter-202305.md ├── 202307 ├── best-practices-of-maximum-packet-size-in-mqtt.md ├── bridging-modbus-data-to-mqtt-for-iiot.md ├── build-mqtt-dashboard-with-emqx-grafana-and-prometheus.md ├── efficiency-comparison-opc-ua-modbus-mqtt-sparkplug-http.md ├── emq-intel-zstack-industrial-iot-solution.md ├── emqx-enterprise-5-1-0-release-notes.md ├── fortifying-mqtt-communication-security-with-ssl-tls.md ├── how-emqx-revolutionizes-logistics-fleet-management.md ├── improve-the-reliability-and-security-of-mqtt-broker-with-rate-limit.md ├── introduction-to-mqtt-control-packets.md ├── modbus-protocol-the-grandfather-of-iot-communication.md ├── mqtt-sparkplug-bridging-it-and-ot-in-industry-4-0.md ├── mqtt5-new-features-reason-code-and-ack.md ├── neuron-v-2-5-1-release-notes.md ├── overcoming-address-change-with-mqtt-over-quic.md ├── rebalancing-mqtt-connections-for-emqx-cluster-on-kubernetes.md ├── significant-enhancements-in-emqx-5-1-mqtt-dashboard.md ├── sparkplug-3-0-advancements-and-formalization-in-mqtt-for-iiot.md ├── time-series-database-for-iot-the-missing-piece.md └── unified-namespace-next-generation-data-fabric-for-iiot.md ├── 202308 ├── application-of-eKuiper-in-public-data-analysis.md ├── authorization-in-mqtt-using-acls-to-control-access-to-mqtt-messaging.md ├── bridging-fins-data-to-mqtt.md ├── bridging-opc-ua-data-to-mqtt-for-iiot.md ├── bridging-twincat-data-to-mqtt.md ├── demonstrate-mqtt-5-0-features-using-mqttx-cli.md ├── ekuiper-v-1-11-0-release-notes.md ├── embedded-mqtt-message-storage-using-rocksdb-for-emqx-broker.md ├── emqx-enterprise-5-1-1-release-notes.md ├── emqx-enterprise-v-4-4-20-release-notes.md ├── five-strategies-for-strengthening-mqtt-infrastructure-security.md ├── iiot-explained-examples-technologies-benefits-and-challenges.md ├── improve-data-throughput-processing-for-ekuiper-through-predefined-schema.md ├── jwt-authentication-and-jwks-endpoint-in-mqtt.md ├── mqtt-5-0-control-packets-01-connect-connack.md ├── mqtt-based-file-transfer-solution.md ├── mqtt-message-expiry-interval.md ├── mqtt-sparkplug-in-action-a-step-by-step-tutorial.md ├── mqtt-to-clickhouse-integration.md ├── mqtt-vs-amqp-for-iot-communications.md ├── mqttx-1-9-5-released-json-message-highlighting-and-more.md ├── mqttx-v-1-9-4-release-notes.md └── the-smart-manufacturing-revolution.md ├── 202309 ├── a-deep-dive-into-kpis-for-smart-manufacturing.md ├── build-an-iot-time-series-data-application-for-energy-storage-with-mqtt-and-timescale.md ├── building-connected-vehicle-streaming-data-pipelines-with-mqtt-and-kafka.md ├── emqx-enterprise-5-1-faqs.md ├── emqx-enterprise-5-1-release-event-summary.md ├── emqx-enterprise-5-2-release-notes.md ├── four-reasons-why-you-should-adopt-mqtt-in-unified-namespace.md ├── iiot-platform-key-components-and-5-notable-solutions.md ├── mqtt-5-0-control-packets-02-publish-and-response-packets.md ├── mqtt-5-0-control-packets-03-subscribe-and-unsubscribe.md ├── mqtt-5-0-control-packets-04-pingreq-and-pingresp.md ├── mqtt-5-0-control-packets-05-disconnect.md ├── mqtt-5-0-control-packets-06-auth.md ├── mqtt5-new-features-payload-format-indicator-and-content-type.md ├── mqttx-v-1-9-6-release-notes.md ├── opc-ua-over-mqtt-the-future-of-it-and-ot-convergence.md ├── open-manufacturing-hub-a-reference-architecture-for-industrial-iot.md ├── simulating-the-future-crafting-iot-scenarios-with-chatgpt-and-mqttx.md └── what-is-v2x-and-the-future-of-vehicle-to-everything-connectivity.md ├── 202310 ├── a-beginner-guide-to-mqtt-performance-testing.md ├── data-infrastructure-for-smart-factory.md ├── emq-intel-and-sjtu-explore-mqtt-over-quic-together.md ├── emqx-enterprise-4-4-21-release-notes.md ├── emqx-enterprise-5-2-1-release-notes.md ├── emqx-enterprise-5-3-release-notes.md ├── emqx-mqtt-and-ai.md ├── exploring-isa95-standards-in-manufacturing.md ├── how-to-manage-fast-food-chains-in-a-smarter-way.md ├── introduction-to-mqtt-5.md ├── mastering-iot-solution-with-emqx-cloud-serverless-addition.md ├── modern-messaging-infrastructure-for-smart-manufacturing.md ├── mqtt-over-lwip.md ├── mqtt5-new-feature-clean-start-and-session-expiry-interval.md ├── neuron-v-2-6-0-release-notes.md ├── oee-in-lean-manufacturing.md ├── promoting-cost-reduction-and-efficiency-in-oil-and-gas-production.md ├── streamline-access-management-with-emqx-cloud-sso-integrations.md └── ten-important-kpis-for-measuring-smart-manufacturing-performace.md ├── 202311 ├── application-of-emqx-in-the-self-service-car-wash-project.md ├── automated-kpis-implementation-for-iiot-with-the-open-manufacturing-hub.md ├── building-an-iot-time-series-data-application-with-mqtt-and-influxdb.md ├── elevating-mqtt-security-with-client-certificate-authentication.md ├── emqx-ecp-2-0-product-launch-review.md ├── emqx-enterprise-4-4-22-release-notes.md ├── emqx-performance-tuning-maximum-connections-and-file-descriptors.md ├── enhancing-v2x-connectivity-with-emq.md ├── harnessing-sticky-sessions-for-mqtt-load-balancing-with-nginx-plus.md ├── implementing-unified-namespace-using-emqx-and-neuron.md ├── incorporating-the-unified-namespace-with-isa-95-best-practices.md ├── intel-and-emq-launch-joint-industrial-solution.md ├── introduction-to-mqtt5-protocol-shared-subscription.md ├── iot-solution-for-wind-farm-remote-monitoring-and-maintenance.md ├── mqtt5-request-response.md ├── open-telemetry-the-basics-and-benefits-for-mqtt-and-iot-observability.md ├── revolutionizing-tsp-platforms.md ├── securing-your-mqtt-based-applications-with-nginx-plus-client-id-substitution-and-emqx-enterprise.md ├── supercharging-iiot-with-mqtt-edge-intelligence-and-influxdb.md ├── the-power-of-unified-namespace-in-modern-manufacturing.md ├── unleashing-the-power-of-mqtt-edge-intelligence-and-timescale.md └── use-of-mqtt-will-message.md ├── 202312 ├── a-comprehensive-comparison-of-open-source-mqtt-brokers-in-2023.md ├── a-digital-transformation-journey-to-smart-manufacturing.md ├── application-of-emqx-in-iot-device-monitoring-and-control.md ├── application-of-emqx-in-smart-waste-sorting-and-monitoring.md ├── consolidating-the-foundation-of-smart-manufacturing-with-emqx-and-neuron.md ├── data-storage-techniques-and-strategies-for-smart-manufacturing.md ├── empowers-intelligent-operation-of-large-scale-new-energy-storage-systems.md ├── emqx-enterprise-4-4-23-release-notes.md ├── emqx-enterprise-5-3-2-release-notes.md ├── emqx-performance-tuning-tcp-syn-queue-and-accept-queue.md ├── first-step-to-a-smart-factory.md ├── leveraging-the-hybrid-computing-for-data-management-and-analysis.md ├── mosquitto-mqtt-broker-pros-cons-tutorial-and-modern-alternatives.md └── practical-data-management-for-smart-manufacturing.md ├── 202401 ├── bridging-knx-data-to-mqtt-introduction-and-hands-on-tutorial.md ├── building-a-smart-water-platform.md ├── building-an-intelligent-logistics-data-management-platform.md ├── ekuiper-v-1-12-release-notes.md ├── emqx-ecp-2-1-0-release-notes.md ├── emqx-enterprise-5-4-release-notes.md ├── emqx-performance-tuning-linux-conntrack-and-mqtt-connections.md ├── knx-protocol.md ├── mqtt-and-mongodb-crafting-seamless-synergy-for-iot-data-mangement.md ├── mqttx-1-9-7-release-notes.md ├── mqttx-1-9-8-release-notes.md ├── neuron-v-3-1-0-release-notes.md ├── omron-fins-protocol.md ├── smart-water-use-case.md └── twincat-protocol.md ├── 202402 ├── a-developer-s-journey-with-esp32-and-mqtt-broker.md ├── building-a-data-aggregation-platform-with-mqtt-and-mongodb.md ├── connecting-to-serverless-mqtt-broker-with-mqttnet-in-csharp.md ├── electric-vehicle-charging-stations-management.md ├── emqx-ecp-and-neuronex.md ├── emqx-enterprise-5-5-release-notes.md ├── exploring-the-extensibility-of-emqx.md ├── industrial-iot-best-cases-and-applications.md ├── mqtt-platform-essential-features-and-use-cases.md ├── mqtt-to-mysql.md ├── mqttx-1-9-9-release-notes.md └── real-time-data-drives-digital-transformation.md ├── 202403 ├── industrial-connectivity-data-platform-use-case.md ├── industrial-connectivity-data-platform.md ├── mqtt-messaging-platform-enhances-real-time-game-communication.md └── neuronex-v-3-2-0-release-notes.md ├── 202404 ├── emqx-enterprise-5-6-release-notes.md ├── how-to-publish-and-receive-protobuf-messages-within-mqtt.md ├── mqtt-and-freertos.md ├── mqtt-and-redis.md ├── mqtt-to-webhook.md ├── mqttx-1-9-10-release-notes.md └── opc-ua-protocol.md ├── 202405 ├── bridging-mosquitto-to-emqx-cluster.md ├── connecting-mqtt-sn-devices-using-emqx.md ├── emqx-ecp-metrics-monitoring.md ├── emqx-enterprise-5-7-release-notes.md ├── intelligent-management-of-gas-gate-stations.md ├── mosquitto-pub-and-mosquitto-sub.md ├── mqtt-platform-in-web-3-0.md ├── mqtt-vs-coap.md ├── neuronex-rules-debugging-guide.md ├── proxy-and-process-management-in-neuronex.md └── seamlessly-integrating-emqx-with-datadog-for-efficient-monitoring.md ├── 202406 ├── bacnet-vs-modbus.md ├── mqtt-vs-websocket.md ├── mqttx-1-10-0-release-notes.md ├── mqttx-web-migration-announcement.md ├── neuronex-v-3-3-0-release-notes.md └── opc-ua-vs-opc-da.md ├── 202407 ├── application-of-emqx-in-smart-agriculture.md ├── emqex-ecp-config-neuron-edge-services.md ├── exploring-geo-distribution-in-emqx-for-enhanced-scalability.md ├── getting-the-clients-real-ip-when-using-the-nginx-reverse-proxy-emqx.md ├── install-mqtt-broker-on-windows.md ├── mqtt-and-micro-ros.md ├── mqttx-1-10-1-release-notes.md ├── neuronex-custom-function.md ├── next-generation-smart-gas-platform.md └── vehicle-and-uns.md ├── 202408 ├── application-of-emqx-in-smart-tourism-and-catering-industry.md ├── connecting-coap-devices-to-emqx.md ├── deploy-neuronex-on-k8s-using-emqx-ecp.md ├── emq-occp-new-energy-charging.md ├── emqx-boosts-the-development-of-intelligent-vehicle-systems.md ├── emqx-platform-rule-testing-guide.md ├── how-to-process-json-hex-and-binary-data-in-mqtt.md ├── mqtt-and-snowflake-distributed-renewable-energy.md ├── mqtt-to-postgresql.md ├── mqtt-vs-http.md └── neuronex-role-based-access-control.md ├── 202409 ├── emqx-enterprise-5-8-0-release-notes.md ├── emqx-in-the-smart-energy-industry.md ├── how-to-use-mqtt-in-rust.md ├── using-mqtt-in-flutter.md └── using-node-red-to-process-mqtt-data.md ├── 202410 ├── advanced-features-of-mqtt-topics.md ├── efficient-management-of-iot-edge-nodes.md ├── esp32-connects-to-the-free-public-mqtt-broker.md ├── how-to-use-mqtt-in-java.md ├── how-to-use-mqtt-in-python.md ├── introducing-emqx-premium.md ├── introduction-to-mqtt-qos.md ├── mqtt-client-tools.md ├── neuronex-v-3-4-0-release-notes.md └── the-ultimate-guide-to-mqtt-broker-comparison.md ├── 202411 ├── coap-protocol.md ├── emq-and-f5.md ├── emqx-ecp-datalayers-and-open-telemetry-collector.md ├── how-to-create-an-mqtt-application-in-qt6.md └── managing-emqx-clusters-with-emqx-ecp.md ├── 202501 └── how-to-deploy-emqx-ecp-in-an-offline-environment.md ├── 202502 ├── a-quic-load-balancing-implementation-using-xdp-and-ipvs.md ├── achieve-high-availability-for-neuronex-using-keepalived.md ├── deploy-emqx-in-alibaba-cloud-marketplace.md ├── emqx-and-deepseek.md ├── integrating-lwm2m-with-mqtt.md ├── neuronex-v-3-5-0-release-notes.md └── why-manufacturing-enterprises-choose-emq.md ├── 202503 ├── application-of-mqtt-protocol-in-oil-and-gas-industry.md ├── emqx-and-ai.md ├── how-to-use-mqtt-in-electron.md ├── how-to-use-mqtt-in-php.md ├── integrating-claude-with-mqtt.md ├── mcp-over-mqtt.md ├── neuronex-and-deepseek.md └── the-easiest-guide-to-getting-started-with-mqtt.md ├── 202504 ├── emqx-and-automq.md ├── enhancing-mqtt-toolbox-with-ai-capabilities.md └── neuronex-device-control.md ├── 202505 ├── adopting-business-source-license-to-accelerate-mqtt-and-ai-innovation.md ├── emqx-cloud-and-tdengine-cloud.md ├── emqx-enterprise-5-9-0-release-notes.md ├── mcp-over-mqtt-for-intelligent-vehicle-data-insights.md └── the-practice-of-ai-agent-driven-iiot-data-exploration.md └── 202506 ├── building-the-industrial-data-hub-with-emqx-and-neuronex.md └── emqx-cloud-serverless-deployment-upgrades-june-2025.md /.ci/convert_spaces.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | 4 | 5 | base_path = sys.argv[1] 6 | 7 | 8 | def covert_content(ustring): 9 | ss = [] 10 | for s in ustring: 11 | rstring = "" 12 | for uchar in s: 13 | inside_code = ord(uchar) 14 | if inside_code in [12288, 160]: 15 | inside_code = 32 16 | rstring += chr(inside_code) 17 | ss.append(rstring) 18 | return ''.join(ss) 19 | 20 | 21 | if __name__ == '__main__': 22 | for lang in ['zh', 'en']: 23 | for path,dir_list,file_list in os.walk(f'{base_path}/{lang}'): 24 | for file_name in file_list: 25 | if not file_name.endswith('.md'): 26 | continue 27 | 28 | markdown_file = os.path.join(path, file_name) 29 | with open(markdown_file, 'r') as f: 30 | content = covert_content(f.read()) 31 | with open(markdown_file, 'w') as f: 32 | f.write(content) 33 | -------------------------------------------------------------------------------- /.ci/markdown_config.json: -------------------------------------------------------------------------------- 1 | { 2 | "default": false, 3 | "MD001": true, 4 | "MD003": { 5 | "style": "atx" 6 | }, 7 | "MD011": true, 8 | "MD018": true, 9 | "MD019": true, 10 | "MD023": true, 11 | "MD025": { 12 | "level": 1, 13 | "front_matter_title": "" 14 | }, 15 | "MD042": true, 16 | "MD046": { 17 | "style": "fenced" 18 | }, 19 | "MD048": { 20 | "style": "backtick" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /.ci/sync_blog.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | 4 | import requests 5 | 6 | base_path = sys.argv[1] 7 | 8 | if __name__ == '__main__': 9 | langs = ['zh', 'en', 'ja'] 10 | for site in ['com', 'hstream']: 11 | for lang in langs: 12 | if lang == 'ja' and site == 'hstream': 13 | continue 14 | api = f'https://www.emqx.com/api/v1/blog?_sort=updateAt&_limit=1000&site={site}' 15 | blog_records = requests.get(url=api, headers={'Content-Language': lang}).json() 16 | if not blog_records['success']: 17 | print(f'Failed to get blog records: {blog_records}') 18 | exit(1) 19 | blog_records = blog_records['data']['items'] 20 | for blog_record in blog_records: 21 | blog_lang = blog_record['language'] 22 | blog_date = '' .join(blog_record['createAt'].split('-')[:2]).replace('-', '') 23 | blog_title_url = blog_record['titleUrl'] 24 | blog_content = blog_record['contents'] 25 | if not os.path.exists(os.path.join(base_path, blog_lang, blog_date)): 26 | os.makedirs(os.path.join(base_path, blog_lang, blog_date)) 27 | 28 | f = open(os.path.join(base_path, blog_lang, blog_date, blog_title_url + '.md'), 'w') 29 | f.write(blog_content.strip() + '\n') 30 | print(f'Update {blog_lang}/{blog_date}/{blog_title_url}') 31 | -------------------------------------------------------------------------------- /.ci/update_blog.py: -------------------------------------------------------------------------------- 1 | import os 2 | import sys 3 | import time 4 | 5 | import requests 6 | 7 | base_path = sys.argv[1] 8 | if len(sys.argv) > 2: 9 | changed_files = ' '.join(sys.argv[2:]) 10 | else: 11 | changed_files = '' 12 | 13 | 14 | if __name__ == '__main__': 15 | changed_files = list(filter(lambda x: len(x.split('/')) == 3, changed_files.split())) 16 | 17 | update_api = os.environ.get('UPDATE_API') 18 | update_token = os.environ.get('UPDATE_TOKEN') 19 | update_status = True 20 | 21 | for file_name in changed_files: 22 | file_split = file_name.split('/') 23 | if len(file_split) != 3: 24 | continue 25 | lang, _date, title = file_split 26 | title = title.replace('.md', '') 27 | print(f'Updating {file_name}') 28 | if not os.path.exists(os.path.join(base_path, file_name)): 29 | print(f'Remove {file_name}') 30 | continue 31 | with open(os.path.join(base_path, file_name), 'r') as f: 32 | content = f.read() 33 | response = requests.put( 34 | url=f'{update_api}/{lang}/{title}', 35 | json={'contents': content}, 36 | headers={'token': update_token}, 37 | timeout=20 38 | ) 39 | if response.status_code == 200: 40 | print(f'Updated {file_name}') 41 | elif response.status_code == 404: 42 | print(f'Remove {file_name}') 43 | else: 44 | print(response.status_code, response.text) 45 | update_status = False 46 | time.sleep(2) 47 | 48 | if update_status: 49 | print('Update blog successfully') 50 | else: 51 | sys.exit('Update blog failed') 52 | -------------------------------------------------------------------------------- /.github/workflows/check_markdown.yaml: -------------------------------------------------------------------------------- 1 | name: Check Markdown 2 | 3 | on: [pull_request] 4 | 5 | jobs: 6 | check-blog-markdown: 7 | runs-on: ubuntu-latest 8 | steps: 9 | - name: Check out code 10 | uses: actions/checkout@v3 11 | with: 12 | fetch-depth: 0 13 | 14 | - name: Install markdownlint 15 | run: sudo npm install -g markdownlint-cli 16 | 17 | - name: Check markdown 18 | run: markdownlint -c .ci/markdown_config.json $(git diff --name-only main...HEAD | grep -e "md$") 19 | -------------------------------------------------------------------------------- /.github/workflows/sync_blog.yaml: -------------------------------------------------------------------------------- 1 | name: Sync Blog 2 | 3 | on: 4 | schedule: 5 | - cron: "30 4 * * *" 6 | - cron: "0 11 * * *" 7 | workflow_dispatch: 8 | 9 | jobs: 10 | sync_blog: 11 | runs-on: ubuntu-latest 12 | if: github.repository == 'emqx/blog' 13 | steps: 14 | - name: Set git 15 | run: | 16 | git config --global user.name "emqx-ci-robot" 17 | git config --global user.email "ci@emqx.io" 18 | 19 | - name: Checkout code 20 | uses: actions/checkout@main 21 | with: 22 | fetch-depth: 0 23 | 24 | - name: Sync blogs 25 | id: sync_blog 26 | run: | 27 | set -x 28 | branch=$(date +%Y-%m-%d-%H-%M-%S) 29 | echo "branch=$branch" >> $GITHUB_OUTPUT 30 | git checkout -b $branch 31 | rm -rf en/* 32 | rm -rf zh/* 33 | rm -rf ja/* 34 | python3 .ci/sync_blog.py $(pwd) 35 | python3 .ci/generate_readme.py $(pwd) 36 | git status 37 | if [ -z "$(git status --short)" ]; then 38 | echo "No changes to push" 39 | echo "changed=0" >> $GITHUB_OUTPUT 40 | else 41 | git add . 42 | git commit -m "sync blog" 43 | git push origin $branch 44 | echo "changed=1" >> $GITHUB_OUTPUT 45 | fi 46 | 47 | - name: Pull request 48 | uses: repo-sync/pull-request@v2 49 | if: steps.sync_blog.outputs.changed == 1 50 | with: 51 | source_branch: ${{ steps.sync_blog.outputs.branch }} 52 | destination_branch: main 53 | github_token: ${{ secrets.GROWTH_CI_TOKEN }} 54 | pr_title: "sync blogs ${{ steps.sync_blog.outputs.branch }}" 55 | pr_reviewer: "CrazyWisdom,Red-Asuka,Swilder-M" 56 | -------------------------------------------------------------------------------- /.github/workflows/update_blog.yaml: -------------------------------------------------------------------------------- 1 | name: Update Blog 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | jobs: 9 | update_blog: 10 | runs-on: ubuntu-latest 11 | if: github.repository == 'emqx/blog' && github.head_commit.author.email != 'ci@emqx.io' 12 | steps: 13 | - name: Check out code 14 | uses: actions/checkout@v3 15 | with: 16 | fetch-depth: 0 17 | 18 | - name: Update blogs 19 | env: 20 | UPDATE_API: ${{ secrets.UPDATE_API }} 21 | UPDATE_TOKEN: ${{ secrets.UPDATE_TOKEN }} 22 | run: | 23 | if git diff HEAD^ HEAD --name-only | grep -e "md$"; then 24 | changed_files=$(git diff HEAD^ HEAD --name-only | grep -e "md$") 25 | python3 .ci/update_blog.py $(pwd) $changed_files 26 | fi 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | .idea/ -------------------------------------------------------------------------------- /en/202111/neuron-newsletter-202110.md: -------------------------------------------------------------------------------- 1 | ## Neuron 2.0 progress and planning 2 | 3 | ### Function operation is basically completed 4 | 5 | At present, we have basically completed the function operation of version 2.0 and developed a supporting Web UI to configure Neuron, view the connection status of Neuron, read and write and monitor device data. Now it is possible to connect [OPC UA](https://www.emqx.com/en/blog/opc-ua-protocol) and [Modbus](https://www.emqx.com/en/blog/modbus-protocol-the-grandfather-of-iot-communication) devices simultaneously and read and write their data. 6 | 7 | ### Focus on data collection, aggregation, and forwarding 8 | 9 | According to users' feedback on Neuron 1.x, we have made significant adjustments to the product planning of the new version of Neuron, streamlined some functions, and focused on data collection, aggregation, and forwarding of industrial protocols. 10 | 11 | In addition, Neuron 2.0 will support the simultaneous connection of multiple devices of the same protocol and different protocols. It is no longer necessary to start multiple Neuron processes to connect multiple devices as Neuron 1.x. 12 | 13 | Other major new features are as follows: 14 | 15 | - Pluggable southbound device driver and northbound application 16 | - Highly integrated with other EMQ products, including eKuiper, EMQX, Fabric, etc. 17 | - Minimal memory usage 18 | - Support runtime update of device drivers 19 | 20 | ## Neuron 1.x current state 21 | 22 | Currently, the latest version of Neuron is v1.3.3, and we will release v1.3.4 next month. We mainly repair the maintenance function of data log size to prevent the log from becoming too large due to the increase of time and affecting the system operation. 23 | 24 | 25 |
26 |
27 | Try Neuron for Free 28 |
29 | Get Started → 30 |
31 | -------------------------------------------------------------------------------- /en/202212/xmeter-newsletter-202211.md: -------------------------------------------------------------------------------- 1 | The XMeter team continues to focus on the development of XMeter Cloud Professional Edition in November. [XMeter Cloud](https://www.emqx.com/en/products/xmeter) Professional Edition will go live next month, and it will be able to provide more robust support for users who need to test MQTT on a large scale. please stay tuned. 2 | 3 | ## Simulate more concurrent connections and higher message throughput 4 | 5 | Xmeter Cloud Basic Edition aims to help users quickly experience the performance testing service for MQTT so that both “Concurrent connection” and “Message throughput” are set to 1,000. 6 | 7 | The Professional Edition provides users with an authentic continuous performance test environment for MQTT with significant increases in the number of concurrent connections and the message throughput. With a variety of classic test scenarios for MQTT built into XMeter Cloud, you are able to quickly run load testing like stress tests and stability tests. 8 | 9 | ## Support VPC testing 10 | 11 | The Professional Edition supports testing using a private network based on a VPC peering connection. After setting up the VPC connection in XMeter Cloud, you can use intranet addresses through the peering connection on testing, reducing network latency and lowering bandwidth costs. 12 | 13 | The support for VPC testing is based on HUAWEI Cloud. If the MQTT services are on other platforms, please contact us for support. 14 | 15 | ## Flexible billing 16 | 17 | The price of the Professional Edition is based on test duration and test resources to accommodate different performance tests. We will introduce prepaid plans based on resources, offering different resource packs to meet different test needs. 18 | -------------------------------------------------------------------------------- /en/202404/strategic-update-refocusing-emqx-platform-service-offerings.md: -------------------------------------------------------------------------------- 1 | Dear Customers, 2 | 3 | We wish to inform you that effective **March 30th, 2024**, the **EMQX Dedicated - Standard Plan** is no longer available. Rest assured, any deployments established before this date will **NOT** be affected, and will continue to receive our full support and maintenance. 4 | 5 | In May 2021, we introduced the Dedicated - Standard plan, offering fully managed MQTT services for single-node infrastructures. Since then, EMQX has broadened its product suite to include Serverless and BYOC plans. To refine our product development focus and enhance the quality of maintenance services, we have decided to cease the creation of Dedicated - Standard deployments after March 30, 2024. 6 | 7 | Following these changes, the Dedicated - Professional plan will henceforth be known simply as Dedicated, offering an array of advanced features and superior performance suitable for all business sizes. Moreover, the Serverless deployment option continues to be available, already surpassing the Standard plan in both features and performance. We invite you to further explore and take advantage of our extensive product portfolio. 8 | 9 | We thank you for your understanding and continued support! 10 | 11 | Best Regards, 12 | 13 | The EMQ Team 14 | -------------------------------------------------------------------------------- /en/202506/emqx-cloud-serverless-deployment-upgrades-june-2025.md: -------------------------------------------------------------------------------- 1 | We're upgrading our global Serverless platform to enhance stability, performance, and observability. **Dedicated and BYOC deployments are not affected.** 2 | 3 | ## Upgrade Schedule 4 | 5 | We'll perform upgrades across three regions to minimize business impact: 6 | 7 | **Europe Region** 8 | 9 | - **Date:** June 6, 2025 10 | - **Time:** 02:00 - 03:00 UTC 11 | - **Downtime:** 30-60 seconds 12 | 13 | **Asia-Pacific Region** 14 | 15 | - **Date:** June 10, 2025 16 | - **Time:** 02:00 - 03:00 UTC 17 | - **Downtime:** 30-60 seconds 18 | 19 | **North America Region** 20 | 21 | - **Date:** June 17, 2025 22 | - **Time:** 02:00 - 03:00 UTC 23 | - **Downtime:** 30-60 seconds 24 | 25 | ## What to Expect 26 | 27 | ### During Maintenance 28 | 29 | - MQTT connections will drop briefly (2-3 times, 30-60 seconds each) 30 | - Creating or modifying Serverless deployments will be disabled 31 | - Workloads with no active devices are unaffected 32 | 33 | ### After Maintenance 34 | 35 | - Service hostnames remain unchanged 36 | - IP addresses will change 37 | - Update firewall/security group allowlists if needed 38 | 39 | ## What You Need to Do 40 | 41 | ### Before Maintenance 42 | 43 | - Ensure your MQTT clients support automatic reconnection 44 | - Use domain names instead of IP addresses when possible 45 | 46 | ### After Maintenance 47 | 48 | - Update IP allowlists if applicable 49 | - Verify all devices reconnect successfully 50 | 51 | ## Regional Time Zones 52 | 53 | ### Europe Region (June 6) 54 | 55 | - London: 03:00 - 04:00 (BST) 56 | - Paris/Berlin: 04:00 - 05:00 (CEST) 57 | - Dubai: 06:00 - 07:00 58 | 59 | ### Asia-Pacific Region (June 10) 60 | 61 | - Singapore/Beijing: 10:00 - 11:00 62 | - Tokyo: 11:00 - 12:00 63 | - Sydney: 12:00 - 13:00 64 | 65 | ### North America Region (June 17) 66 | 67 | - New York: 22:00 - 23:00 (June 16, EDT) 68 | - Los Angeles: 19:00 - 20:00 (June 16, PDT) 69 | - São Paulo: 23:00 - 00:00 (June 16-17, BRT) 70 | 71 | ## Support 72 | 73 | - **Status updates:** https://status.emqxcloud.com 74 | - **Technical support:** Submit a support ticket 75 | - **Questions:** Our SRE team will prioritize your requests 76 | 77 | We follow strict procedures to ensure smooth transitions. Thank you for your trust in EMQX Cloud. 78 | 79 | **EMQX Cloud SRE Team** 80 | -------------------------------------------------------------------------------- /ja/202305/deploy-the-most-powerful-mqtt-server-in-your-own-cloud.md: -------------------------------------------------------------------------------- 1 | オープンソースMQTTメッセージングプラットフォームのリーディングプロバイダーであるEMQは、EMQX CloudサービスのBring Your Own Cloud(BYOC)エディションを発表しました。このエディションにより、顧客はAmazon Web Services(AWS)、Microsoft Azure、またはGoogle Cloud Platformなど、自分自身が選んだクラウド環境にMQTTクラスターを展開することができます。 2 | 3 | EMQX Cloudの新しいBYOCエディションにより、ユーザーはデータに対してより大きなコントロールを持つことができ、厳格なコンプライアンスとセキュリティ規制に従うことができます。EMQがMQTTサービスの管理と最適化における専門知識を活用することで、企業は既存のクラウドインフラストラクチャを利用しながら成功を達成することができます。 4 | 5 | BYOCエディションは、通常のクラウドサービスでは満たせない特定のMQTTサーバーのニーズを持つ組織にとっても理想的なソリューションとなります。ユーザーは、EMQXの強力なMQTTサーバーの完全な潜在能力を発揮し、最適なパフォーマンスのためにIoTインフラストラクチャを効率化することができます。 6 | 7 | 8 | ![MQTT BYOC](https://assets.emqx.com/images/2b24d9038582f3f17b9464018e0c2048.png) 9 | 10 | 11 | ## なぜ企業がBYOCを採用しているのか? 12 | 13 | クラウドサービスは、近年IoTの世界を革新し、高速性、効率性、スケーラビリティなどの利点を提供しています。クラウドの採用が進むにつれ、クラウドセキュリティソリューションはますます重要になっています。テクノロジーサヴィな産業のリーダーたちは、クラウドサービスに移行する際に自分たちのデータをコントロールし続けることの重要性に気づいています。 14 | 15 | BYOCは新興のテクノロジートレンドとして、ユーザーが自分たちのコンピューティングインフラストラクチャや好きなクラウドプロバイダを使用できるようにし、現在のコンピューティングリソースを活用し、スムーズかつ安全にワークロードを実行できるようにします。 16 | 17 | ## BYOCでIoTデータプライバシーを管理する 18 | 19 | データ主権とコンプライアンスは、様々な産業の企業にとって重要な問題です。企業は、顧客のデータが安全でプライベートであることを確保するため、厳格なデータ保護規制に従わなければなりません。このような場合、BYOCモデルは、クラウドにデータを保持し、完全にコントロールできるため、非常に推奨されます。 20 | 21 | 特定の規制、例えば一般データ保護規則(GDPR)に準拠する必要がある場合、EMQX Cloud BYOCエディションは、最も強力なデータセキュリティ保証を提供するため、懸念する必要がありません。 22 | 23 | 24 | ## カスタマイズ可能でコスト効果の高いMQTT展開 25 | 26 | EMQX Cloud BYOCから得られるその他の利点は以下のとおりです。 27 | 28 | - 従量制の料金支払い– EMQX Cloud BYOCは、既存のクラウドインフラストラクチャを使用し、使用するサービスのみに支払いを行うことで、コスト効果の高いソリューションを提供します。 29 | 30 | - 柔軟なクラウド展開– BYOCエディションの柔軟性は、顧客が自分たちの選んだクラウドにEMQX MQTTサーバーを展開できるため、カスタマイズ可能でスケーラブルなMQTTサーバーを探しているIoTソリューションプロバイダにとって理想的です。 31 | 32 | - シームレスなシステム統合– EMQX Cloud BYOCは、カスタマイズや既存のシステムとのシームレスな統合などの追加の利点も提供し、従来のクラウド提供に満たせないMQTTサーバーの特定の要件を持つビジネスにとって良い選択肢となります。 33 | 34 | ## EMQX Cloud–すべてのMQTTサービスニーズを満たすためのプラットフォーム 35 | 36 | EMQX Cloudは、その優れたパフォーマンス、スケーラビリティ、手頃な価格のため、世界中のユーザーから熱狂的な支持を受けています。EMQX Cloudを使用することで、企業は自分たちのインフラストラクチャを管理および維持する手間を省くことができ、IoTビジネスを簡単に立ち上げることができます。 37 | 38 | 最近リリースされたServerlessエディションにより、すべての開発者に無料のMQTTサービスが実現されました。今回のBYOCエディションの発売により、顧客はデータに対するより大きな柔軟性やコントロールを得ることができ、データ保護規制に準拠することができます。 39 | 40 | 私たちのミッションは、引き続き進化し続ける中で変わらず、すべての組織が最新のMQTTサービスを所有し、IoTの最前線に立つことを可能にすることです。 41 | 42 | EMQX Cloud BYOCエディションの詳細および貴社にとってどのように役立つかについては、当社のランディングページをご覧いただくか、お問い合わせください。 43 | -------------------------------------------------------------------------------- /zh/201903/emqx-broker-3-1-beta-2-released.md: -------------------------------------------------------------------------------- 1 | > **我们荣幸地向大家宣布,EMQX Broker 3.1 - Beta.2版本已经于2019年3月17日发布。** 2 | 3 | 4 | 杭州映云科技有限公司聚焦于消息和流处理技术领域,EMQX Broker是映云科技的开源分布式IoT消息处理中间件。自发布以来,EMQX Broker已经在世界各地被⼴泛应用。EMQX Broker也以其完备的MQTT协议支持、高并发低延时、高可扩展性、易于部署和快速的版本迭代等特点,在物联网行业中占有重要的地位。 5 | 6 | 7 | 8 | #### 该版本新增和增强了以下特性: 9 | 10 | **EMQX Broker** 核心功能 11 | 12 | - 改进了Hooks功能。 13 | 14 | Hooks的返回机制做了改进。并将Password作为 credentials 数据结构的一部分。 15 | 16 | - 支持在TLS/DTLS中使用PSK 17 | 18 | - 更多的请求响应信息 19 | 20 | 支持在CONNACK包中使用 Response-Information 消息属性。这个⼀个MQTT 5.0协议中的可选特性。 21 | 22 | **EMQX** 管理功能 23 | 24 | - 增加了默认application secret 25 | - 为所有插件增加了插件相关的HTTP API 26 | 27 | **JWT Auth**插件 28 | 29 | - 在之前版本中,⽤户只能将密码放在CONNECT包中传递。现在可以将⽤户名和密码放在JWT中传递,增加了易用性。 30 | 31 | **emqx_auth_username**插件 32 | 33 | - 为管理用户名新增了了CRUD操作的HTTP API接口。 34 | 35 | 36 | 37 | #### 该版本修正了以下Bug: 38 | 39 | 40 | **EMQX Broker**核心功能 41 | 42 | - Broker在集群中转发消息时崩溃。 43 | 44 | - 在关闭时在卸载插件之前卸载emqx_alarm_handler。 45 | 46 | 该改动能避免一些在插件卸载时发生的崩溃。 47 | 48 | - 修正了一些EMQX桥接相关的Bug 49 | 50 | - 减少了Inflight窗口满的错误 51 | 52 | **EMQX** 管理理功能 53 | 54 | - 修正了在插件未启动时重载插件的错误 55 | - 修正了io/max_fds错误 56 | 57 | **emqx_web_hook**插件 58 | 59 | - 修正了消息格式相关的bug 60 | 61 | 其他 **Bug** 62 | 63 | - 过滤掉了未加载的插件的API请求 64 | 65 | - 修正了 gen_tcp 中raw socket标志位 66 | 67 | 68 | 69 | 请参阅版本发布日志以获取所有版本变动信息: 70 | 71 | https://www.emqx.com/zh/changelogs/broker/v3.1-beta.2 72 | -------------------------------------------------------------------------------- /zh/201904/emqx-helps-operators-build-large-scale-nb-iot-platform.md: -------------------------------------------------------------------------------- 1 | [NB-IoT](https://www.emqx.com/zh/blog/emqx-nb-iot-access-solution) 是由 3GPP 标准化组织制定的一种新型蜂窝技术,属于低功率广域 (LPWA) 物联网连接的一种,主要用于连接带宽资源受限的终端,允许终端以比 GRPS、3G、LTE等技术更少的资源收集和交换数据。 2 | 3 | NB-IoT 在2017-2018年发展迅速,全球众多运营商陆续实现了商用部署。NB-IoT 的低成本、低功耗和广覆盖使得用户能够实现传统蜂窝网络无法支持的新场景新应用。 4 | 5 | ### NB-IOT 技术的优势 6 | 7 | - 为物联网和 M2M 设计的新蜂窝技术 8 | - 覆盖距离单元 10km 的大面积区域 9 | - 电源效率,一个电池在现场工作长达10年 10 | - 低成本, NB-IoT 模块成本在20元左右,且有逐年降低的趋势 11 | 12 | ### NB-IoT 应用场景 13 | 14 | - 消费电子 15 | - 城市物流 16 | - 智慧城市 17 | - 智能家居 18 | - 公用事业 19 | - 自然灾害管理 20 | 21 | 从2017年起,EMQX 公司开始与某顶级运营商合作研发物联网平台项目,在2018年发布了支持 NB-IoT 技术的全新物联网应用使能平台 (AEP)。该平台允许广大行业客户的 NB-IoT 终端,通过运营商 NB-IoT 网络直接接入,并通过平台开放能力快速构建物联网应用。 22 | 23 | 24 | 25 | 借助于 AEP 平台提供的设备接入、消息路由、数据存储,以及设备管控服务,可大大简化应用程序的开发过程,大多数应用通过平台组件的拖放以及模板定义即可完成;客户亦可通过平台丰富的 API 接口,配合少量编码工作,就可以拥有功能完整的自研 IoT 应用,客户开发的应用能够直接运行在平台上,可节省大量运营成本。 26 | 27 | 28 | 29 | 在本项目中,EMQX 物联网消息中间件作为平台的核心部件,用于接入运营商全国范围内(以 NB-IoT 为主,亦包括 3G,4G,PON,LAN 等所有网络)的各类物联网设备,通过高效的协议解析与消息路由能力将海量的设备消息汇聚到平台数据层,也为后端的设备管理和应用模块提供可靠的反向控制通道。 30 | 31 | 32 | 33 | EMQX 创新的分布式集群方案,能够实现新节点的自动增加和故障节点的自动删除,有力保障了 AEP 平台接入容量的自动伸缩和长期稳定运行,提升了运营商客户业务的可靠性。 34 | 35 | ![WX20190803150105.png](https://assets.emqx.com/images/a66989f3d63cd894d937c590e545c62c.png) 36 | 37 | EMQX 具备的海量设备接入、千万级高并发、物联网全协议栈、以及毫秒级低延时等能力,助力电信级物联网AEP平台在数月内搭建完成,有效的支撑了该运营商 NB-IoT 乃至整个 IoT 平台战略的落地与商业化运营。 38 | 39 | 40 |
41 |
42 | 免费试用 EMQX Cloud 43 |
全托管的云原生 MQTT 消息服务
44 |
45 | 开始试用 → 46 |
47 | -------------------------------------------------------------------------------- /zh/201906/emqx-server-installation-guide-for-macos.md: -------------------------------------------------------------------------------- 1 | ## 安装 EMQX 2 | 3 | 您可以根据需要以不同方式安装 EMQX : 4 | 5 | - 直接通过 [Homebrew]() 安装最新的稳定版 EMQX 6 | - 手动下载软件包并安装。 7 | 8 | ### 使用Homebrew安装 EMQX 9 | 10 | 1. 添加 EMQX 的 tap 11 | 12 | ``` 13 | $ brew tap emqx/emqx 14 | ``` 15 | 16 | 2. 安装 EMQX 17 | 18 | ``` 19 | $ brew install emqx 20 | ``` 21 | 22 | 3. 启动 EMQX 23 | 24 | ``` 25 | $ emqx start 26 | emqx 3.1 is started successfully! 27 | $ emqx_ctl status 28 | Node 'emqx@127.0.0.1' is started 29 | emqx v3.1.0 is running 30 | ``` 31 | 32 | 4. EMQX 启动成功,如何使用请参考[官方文档](https://developer.emqx.io/docs/broker/v3/cn/getstarted.html) 33 | 34 | ### 使用安装包安装 EMQX 35 | 36 | #### 从 `.zip` 文件安装 37 | 38 | 1. 转到 `emqx.io` 或 github ,选择 EMQX 版本,然后下载要安装的 `.zip` 文件。 39 | 40 | 2. 解压压缩包,将下面的路径更改为您下载 EMQX 软件包的路径。 41 | 42 | ``` 43 | $ unzip /path/to/emqx-macos-v3.1.0.zip 44 | ``` 45 | 46 | 3. 启动 EMQX 47 | 48 | ``` 49 | $ cd emqx 50 | $ ./bin/emqx start 51 | emqx 3.1 is started successfully! 52 | $ ./bin/emqx_ctl status 53 | Node 'emqx@127.0.0.1' is started 54 | emqx v3.1.0 is running 55 | ``` 56 | 57 | 4. EMQX 启动成功,如何使用请参考[官方文档](https://docs.emqx.com/zh/emqx/latest/) 58 | 59 | 60 |
61 |
62 | 免费试用 EMQX Cloud 63 |
全托管的云原生 MQTT 消息服务
64 |
65 | 开始试用 → 66 |
67 | -------------------------------------------------------------------------------- /zh/202001/release-notes-kuiper-0-1.md: -------------------------------------------------------------------------------- 1 | Kuiper 团队宣布发布 Kuiper 0.1。Kuiper 0.1 [可以从这里下载](https://github.com/lf-edge/ekuiper/releases/tag/0.1)。 2 | 3 | EMQX Kuiper 是 Golang 实现的轻量级物联网边缘分析、流式处理开源软件,可以运行在各类资源受限的边缘设备上。Kuiper 设计的一个主要目标就是将在云端运行的实时流式计算框架(比如 [Apache Spark](https://spark.apache.org/),[Apache Storm](https://storm.apache.org/) 和 [Apache Flink](https://flink.apache.org/) 等)迁移到边缘端。Kuiper 参考了上述云端流式处理项目的架构与实现,结合边缘流式数据处理的特点,采用了编写基于`源 (Source)`,`SQL (业务逻辑处理)`, `目标 (Sink)` 的规则引擎来实现边缘端的流式数据处理。 4 | ![Kuiper architect](https://assets.emqx.com/images/a06aaed50608fd57d53a400f1621cee6.png) 5 | 6 | 网址:[https://github.com/lf-edge/ekuiper](https://github.com/lf-edge/ekuiper) 7 | 8 | Github仓库: [https://github.com/emqx/kuiper](https://github.com/emqx/kuiper) 9 | 10 | ## 概览 11 | 12 | ### 功能 13 | 14 | - 性能优化 15 | - 提供了针对 Kuiper 规则设置并发度的配置选项,在不同的场景下可以对其优化 16 | - 在 [source](https://github.com/lf-edge/ekuiper/blob/develop/docs/en_US/rules/sources/mqtt.md) 里的``concurrency`` 设置:设置运行的协程数,默认值为1。如果设置协程数大于1,必须使用[共享订阅](https://www.emqx.com/zh/blog/introduction-to-mqtt5-protocol-shared-subscription)模式。 17 | - 在 [sink](https://github.com/lf-edge/ekuiper/blob/develop/docs/en_US/rules/overview.md#actions) 里的``concurrency`` 设置:设置运行的线程数。该参数值大于1时,消息发出的顺序可能无法保证。 18 | - 在 [SQL 计划](https://github.com/lf-edge/ekuiper/blob/develop/docs/en_US/rules/overview.md#options)中的``concurrency``设置:一条规则运行时会根据 SQL 语句分解成多个计划运行。该参数设置每个计划运行的线程数。该参数值大于1时,消息处理顺序可能无法保证。 19 | - 性能测试结果 20 | - 树莓派 3B+:12k 消息/秒; CPU 利用率 (sys+user): 70%; 内存: 20M 21 | - AWS t2.micro ( 1核 * 1 GB, Ubuntu18.04):10k 消息/秒; CPU 利用率 (sys+user): 25%; 内存: 20M 22 | - 支持 [规则指标采集](https://github.com/lf-edge/ekuiper/blob/develop/docs/en_US/cli/rules.md#get-the-status-of-a-rule),可以被用于消息处理状态的跟踪。指标包含有, 23 | - ``in, out, exception`` 每个处理器的进、出与异常消息数 24 | - ``process_latency_ms`` 每个处理器的处理时延 25 | - ``buffer_length``, 每个处理器中用掉的 buff 的长度 26 | - ``last_invocation``, 每个处理器中最后调用时间 27 | - 在 OpenWrt Linux (Chaos Calmer 15.05) 系统 (1核,256M 内存硬件)中完成测试,工作正常 28 | - 如果 MQTT 源或者目标被断开,支持自动重连 29 | 30 | ### 问题修复 31 | 32 | - 如果在启动规则的时候发现错误,在命令行中打印出相关的错误信息 33 | - 修复了几个 REST Sink 的问题 34 | 35 | ### 联系 36 | 37 | 如果对Kuiper有任何问题,请随时通过contact@emqx.io与我们联系。 38 | -------------------------------------------------------------------------------- /zh/202002/release-notes-kuiper-0.2.0.md: -------------------------------------------------------------------------------- 1 | 日期:2020/2/28 2 | 3 | Kuiper 团队宣布发布 Kuiper 0.2.0 4 | 5 | Kuiper 0.2.0 [可以从这里下载](https://github.com/lf-edge/ekuiper/releases/tag/0.2.0)。 6 | 7 | EMQX Kuiper 是 Golang 实现的轻量级物联网边缘分析、流式处理开源软件,可以运行在各类资源受限的边缘设备上。Kuiper 设计的一个主要目标就是将在云端运行的实时流式计算框架(比如 [Apache Spark](https://spark.apache.org/),[Apache Storm](https://storm.apache.org/) 和 [Apache Flink](https://flink.apache.org/) 等)迁移到边缘端。Kuiper 参考了上述云端流式处理项目的架构与实现,结合边缘流式数据处理的特点,采用了编写基于`源 (Source)`,`SQL (业务逻辑处理)`, `目标 (Sink)` 的规则引擎来实现边缘端的流式数据处理。 8 | 9 | ![arch.png](https://assets.emqx.com/images/700907497d2735a42224591fb71a8d46.png) 10 | 11 | 网址:https://github.com/lf-edge/ekuiper 12 | 13 | Github仓库: https://github.com/emqx/kuiper 14 | 15 | ## 概览 16 | 17 | [Kuiper 2020 路线图](https://github.com/lf-edge/ekuiper/projects) 更新到了 Github,并且创建了几个别的项目,例如 [Kuiper & EdgeX 集成项目](https://github.com/lf-edge/ekuiper/projects/4)。用户如有兴趣,请点击相应链接进行查看。 18 | 19 | ### 功能 20 | 21 | - [Rest 管理 API](https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/restapi/overview.md) 现已支持。除了 CLI 工具,用户可以通过 Rest API 来管理流和规则。 22 | - 流管理 23 | - 规则管理 24 | - 支持的最大规则数目基准测试 25 | - 8000 条规则,800 消息/秒吞吐量,AWS 2 核 * 4GB 内存 26 | - 资源使用 27 | - 内存: 89% ~ 72% 28 | - CPU: 25% 29 | - 在[Github action](https://github.com/lf-edge/ekuiper/actions)上建立了 FVT 测试运行流水线,FVT 测试将在代码提交或者接受 PR 的时候自动运行,保证产品质量 30 | - 完成了 8 个 Kuiper [FVT](https://github.com/lf-edge/ekuiper/tree/master/fvt_scripts) (functional verification tests) 测试用例,覆盖了以下场景 31 | - HTTP REST-API 的所有基本功能 32 | - 命令行工具 CLI 的基本功能 33 | - 复杂的端到端测试,覆盖 Kuiper 源、处理和目标等 34 | 35 | ### 问题修复 36 | 37 | - 修复 [the sink result is not correct](https://github.com/lf-edge/ekuiper/issues/101) 问题 38 | - 修复了几个在运行多个规则时期发现的问题 39 | 40 | ### 联系 41 | 42 | 如果对Kuiper有任何问题,请随时通过contact@emqx.io与我们联系。 43 | -------------------------------------------------------------------------------- /zh/202003/message-retention-and-message-expiration-interval-of-emqx-mqtt5-broker.md: -------------------------------------------------------------------------------- 1 | ## 保留消息 2 | 3 | 服务端收到 Retain 标志为 1 的 PUBLISH 报文时,会将该报文视为保留消息,除了被正常转发以外,保留消息会被存储在服务端,每个主题下只能存在一份保留消息,因此如果已经存在相同主题的保留消息,则该保留消息被替换。 4 | 5 | 当客户端建立订阅时,如果服务端存在主题匹配的保留消息,则这些保留消息将被立即发送给该客户端。借助保留消息,新的订阅者能够立即获取最近的状态,而不需要等待无法预期的时间,这在很多场景下非常重要的。 6 | 7 | 保留消息虽然存储在服务端中,但它并不属于会话的一部分。也就是说,即便发布这个保留消息的会话终结,保留消息也不会被删除。删除保留消息只有两种方式: 8 | 9 | 1. 客户端往某个主题发送一个 Payload 为空的保留消息,服务端就会删除这个主题下的保留消息。 10 | 2. 如果包含保留消息的 PUBLISH 报文设置了消息过期间隔属性,那么保留消息在服务端存储超过过期时间后就会被删除。 11 | 12 | ## 消息过期间隔 13 | 14 | PUBLISH 报文可以设置消息过期间隔这一属性,消息过期间隔是一个四字节的整数,表示应用消息的生命周期,单位是秒。 15 | 16 | 如果 PUBLISH 报文不设置消息过期间隔,那么应用消息不会过期。 17 | 18 | 如果 PUBLISH 报文设置了消息过期间隔,并且消息过期将已经过期,服务端还没开始向匹配的订阅者交付该消息,那么服务端必须删除该消息。 19 | 20 | ## EMQX MQTT 服务器的保留消息 21 | 22 | [EMQX MQTT Broker](https://www.emqx.com/en) 的保留消息功能是由 `emqx_retainer` 插件实现,该插件默认开启,通过修改 `emqx_retainer` 插件的配置,可以调整 EMQX Broker 储存保留消息的位置,限制接收保留消息数量和 Payload 最大长度,以及调整保留消息的过期时间。 23 | 24 | `emqx_retainer` 插件默认开启,插件的配置路径为 `etc/plugins/emqx_retainer.conf`。 25 | 26 | + retainer.storage_type 27 | 28 | 保留消息的储存位置,EMQX Broker 可以选择将保留消息仅储存在内存中,仅储存在硬盘中,或是同时储存在内存和硬盘中,可以由用户的业务特点灵活决定。 29 | 30 | 例如,想要收集电表读数的用户可能会决定使用 QoS 等级 1 的消息,因为他们不能接受数据在网络传输途中丢失,但是,他们可能认为客户端和服务端的数据可以存储在内存(易失性存储器)中,因为电力供应系统是非常可靠的,不会有太大的数据丢失风险。 31 | 32 | 与之相反,停车计费支付应用的提供商可能决定任何情况下都不能让数据支付消息丢失,因此他们要求在通过网络传输之前将所有的数据写入到硬盘中(非易失性存储器)。 33 | 34 | + retainer.max_retained_messages、retainer.max_payload_size 35 | 36 | `retainer.max_retained_messages` 规定了 EMQX Broker 可以储存的保留消息的最大数量,0 表示没有限制。保留消息数量超出最大值限制后,可以替换已存在的保留消息,但不能为新的主题储存保留消息。 37 | 38 | `retainer.max_payload_size` 规定了 EMQX Broker 可以接收的保留消息的最大 Payload 值。Payload 大小超出最大值后 EMQ X 消息服务器会把收到的保留消息作为普通消息处理,不再储存此消息。 39 | 40 | 这两项配置规定了 EMQX Broker 可以接收与储存的保留消息的上限,保证了 EMQX Broker 不会占用过多的资源来储存和处理保留消息。 41 | 42 | + retainer.expiry_interval 43 | 44 | 保留消息的过期时间,0 表示永不过期。如果 PUBLISH 报文中设置了消息过期间隔,那么以 PUBLISH 报文中的消息过期间隔为准。 45 | 46 | 当保留消息的过期后,EMQX Broker 会删除掉此消息。 47 | 48 | 49 |
50 |
51 | 免费试用 EMQX Cloud 52 |
全托管的云原生 MQTT 消息服务
53 |
54 | 开始试用 → 55 |
56 | -------------------------------------------------------------------------------- /zh/202003/mqttx-v1-3-0-was-officially-released-an-elegant-cross-platform-mqtt5-desktop-test-client.md: -------------------------------------------------------------------------------- 1 | [MQTTX](https://mqttx.app) 是由全球领先的开源物联网中间件提供商 [EMQ](https://www.emqx.com/zh) 开源的一款跨平台 **[MQTT 5.0](https://www.emqx.com/zh/blog/introduction-to-mqtt-5)** 桌面测试客户端,它支持 macOS,Linux,Windows。MQTTX 的用户界面借助聊天软件的形式简化了页面的操作逻辑,用户可以快速创建多个同时在线的 **MQTT 客户端**,方便测试 MQTT/TCP、MQTT/TLS、MQTT/WebSocket 的连接/发布/订阅功能及其他 **[MQTT 协议](https://www.emqx.com/zh/mqtt-guide)** 特性。 2 | 3 | MQTTX 网站:https://mqttx.app 4 | 5 | MQTTX v1.3.0 版本下载:https://github.com/emqx/MQTTX/releases/tag/v1.3.0 6 | 7 | ![mqttxpreview.png](https://assets.emqx.com/images/890cee487ea26b7b15b27d4642412e8e.png) 8 | 9 | ## 新功能概览 10 | 11 | - 支持 WebSocket 连接 12 | 13 | 该版本中,新增了对 WebSocket 的连接支持,在新建连接的页面中,`Host` 前的下拉框可以选择连接协议,支持 `mqtt://`, `ws://`,如果是 `SSL/TLS` 认证连接的话,需要选择为 `mqtts://`,`wss://`。当协议选项是 `ws` 或 `wss` 时,创建的连接即为 WebSocket 连接。 14 | 15 | **注意**:当协议变化时,需要修改连接的端口。 16 | 17 | ![mqttxbrokerinfo.png](https://assets.emqx.com/images/b84ca95b501fb85155e0bb345db14f88.png) 18 | 19 | - 支持对 Payload 的格式转化 20 | 21 | 该版本中,对 Payload 的输入框进行了输入编辑时的优化。实现了对 JSON 格式的语法高亮,格式验证等功能,用户可以很方便的在输入框内进行 JSON 内容输入。同时,在 Topic 输入框上方的 Payload 选项中,还可以将当前内容快速转化为其它格式的内容,目前支持转化为 `Base64`,`Hex`, `Plaintext` 和 `JSON`。用户可以根据自己需求进行转化操作。 22 | 23 | ![mqttxmessage.png](https://assets.emqx.com/images/1d1322eab2f308af1b3fbf4d9ea4721a.png) 24 | 25 | - 可对输入框进行高度的自由调节 26 | 27 | 在之前版本中,输入框的高度被固定,用户使用时可看到的 Payload 内容有限,如果发送内容过多,无法很好的在输入框内进行内容输入和编辑。经过优化后,用户可将鼠标放置到输入框顶部,当出现箭头时,拖动鼠标即可对输入框进行高度上的自由调整,以方便更好的对 Payload 内容进行处理。 28 | 29 | ![mqttxjson.png](https://assets.emqx.com/images/720bdc89e8486568b9bac056c9eb1a05.png) 30 | 31 | - 支持 Topic 模糊查询 32 | 33 | 之前 Topic 只支持精准搜索,只能搜索到同一个 Topic 下的消息,目前支持了模糊查询,可以搜索过滤更为广泛的 Topic 消息。后续将继续优化对于利用 Topic 区分显示消息的功能,敬请期待。 34 | 35 | - 在添加 Topic 的弹出框中,可使用 `Enter` 快捷键快速添加订阅 36 | 37 | - 设置中添加了 MQTT 最大重连数 38 | 39 | - 当连接成功,顶部面板自动折叠后,可在顶部栏点击红色按钮,快速断开连接 40 | 41 | - 优化了证书选择,可以支持选择更多的证书格式文件 42 | 43 | 该项目完全开源,您可以到 [GitHub](https://github.com/emqx/MQTTX/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc) 来提交使用过程中遇到的问题,或是 Fork MQTTX 项目向我们提交修改后的 PR,我们将会及时查阅和处理。 44 | -------------------------------------------------------------------------------- /zh/202003/release-notes-kuiper-0-2-1.md: -------------------------------------------------------------------------------- 1 | 日期:2020/3/23 2 | 3 | Kuiper 团队宣布发布 Kuiper 0.2.1 4 | 5 | Kuiper 0.2.1 [可以从这里下载](https://github.com/lf-edge/ekuiper/releases/tag/0.2.1)。 6 | 7 | EMQX Kuiper 是 Golang 实现的轻量级物联网边缘分析、流式处理开源软件,可以运行在各类资源受限的边缘设备上。Kuiper 设计的一个主要目标就是将在云端运行的实时流式计算框架(比如 [Apache Spark](https://spark.apache.org/),[Apache Storm](https://storm.apache.org/) 和 [Apache Flink](https://flink.apache.org/) 等)迁移到边缘端。Kuiper 参考了上述云端流式处理项目的架构与实现,结合边缘流式数据处理的特点,采用了编写基于`源 (Source)`,`SQL (业务逻辑处理)`, `目标 (Sink)` 的规则引擎来实现边缘端的流式数据处理。 8 | 9 | ![arch.png](https://assets.emqx.com/images/f6ef7154f6adcaa53277161827b5165b.png) 10 | 11 | 网址:https://github.com/lf-edge/ekuiper 12 | 13 | Github仓库: https://github.com/emqx/kuiper 14 | 15 | ## 概览 16 | 17 | 本版本中 [Kuiper & EdgeX 集成](https://github.com/lf-edge/ekuiper/projects/4)已经初步完成,用户可以开始试用该功能,在后续发布的 0.3.0 或者 0.4.0 将正式与 EdgeX Geneva 版本一起发布。 18 | 19 | ### 功能 20 | 21 | - 与 EdgeX 的集成 22 | 23 | - EdgeX 源支持,从 EdgeX Message Bus 中接入数据。用户可以参考[教程文档 - 英文](https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/edgex/edgex_rule_engine_tutorial.md)来了解如何使用 Kuiper 对 EdgeX 的数据进行分析。 24 | - [EdgeX 目标(sink)支持]( https://github.com/lf-edge/ekuiper/blob/master/docs/en_US/rules/sinks/edgex.md),可以将结果直接写入 EdgeX Message Bus。 25 | 26 | - Schemaless 流定义的支持 27 | 28 | 在 Kuiper 之前的版本中,用户必须创建有 schema 的流定义,但是有些使用场景中,发送的数据格式比较复杂,如果对其进行流的定义会比较麻烦。Kuiper 现在可以支持用户创建一个不包含任何 Field 定义的流,这种 Schemaless 的使用方式下,无法实现对数据类型的验证,需要用户在写规则的时候,对发送的数据结构比较清楚,否则在数据分析过程中会报错。 29 | 30 | - FVT 测试用例增强 31 | 32 | - 增加 4 个 EdgeX 的测试用例 33 | - 增加对 Docker image 的测试用例 34 | 35 | ### 问题修复 36 | 37 | - 修复了几个 Github Action 中流水线的问题 38 | 39 | ### 联系 40 | 41 | 使用 Kuiper 过程中如有任何问题,可在 Github 提交 Issue 或通过 [contact@emqx.io](mailto:contact@emqx.io) 与我们联系。 42 | -------------------------------------------------------------------------------- /zh/202004/emqx-v-4-1-beta-1-released.md: -------------------------------------------------------------------------------- 1 | 开源物联网 MQTT 服务器 [EMQX Broker](https://www.emqx.com/zh/products/emqx) 是基于高并发的 Erlang/OTP 语言平台开发,支持百万级连接和分布式集群架构。EMQX Broker 已经在全球物联网市场广泛应用,无论是产品原型设计、物联网创业公司、还是大规模的商业部署,都支持免费使用。 2 | 3 | 现在,EMQX Broker 已发布至 v4.1-beta.1 版本,此版本重点增加了对 Python 与 Java 的扩展支持。EMQX Broker 支持通过插件来扩展功能,但在此之前,仅支持由 Erlang 编写的插件,对开发者而言使用门槛较高。即使官方提供了 Lua 脚本扩展支持,但也仅支持简单场景。现在,开发者可以使用 Python 或者 Java 快速开发自己的插件,在官方功能的基础上进行扩展,满足自己的业务场景。 4 | 5 | EMQX Broker 的多语言扩展通过 `emqx-extension-hook` 插件中的驱动(Driver)实现,不同的编程语言由不同类型的驱动提供支持。目前的 Python 和 Java 驱动基于 `Erlang/OTP - Port`(https://erlang.org/doc/tutorial/c_port.html) 进程间通信实现,所以驱动本身具有非常高的吞吐性能。 6 | 7 | ![361588066850_.pic.jpg](https://assets.emqx.com/images/21ff6cd7a9d18d2926c662fe4dde8fe1.jpg) 8 | 9 | 除此之外,v4.1-beta.1 还增加了规则引擎的暂停与编辑等功能,欢迎大家[下载 EMQX](https://www.emqx.com/zh/try?product=broker) 使用。 10 | 11 | ### v4.1-beta.1 改进详情 12 | 13 | #### 功能增强 14 | 15 | - 支持多语言插件扩展 16 | 17 | 用户可使用 Python 和 Java 直接处理 EMQX Broker 的各类事件,包含上下线、认证、ACL 规则控制,消息桥接和持久等功能。 18 | 19 | - 支持客户端与订阅的模糊查询与多条件查询 20 | 21 | 支持以 Client ID、Username 模糊查找客户端,或按协议类型,连接时间段等筛选客户端。支持按 Client ID、 QoS、主题等筛选订阅。 22 | 23 | - 规则引擎支持暂停和编辑 24 | 25 | 提高规则引擎的使用友好性,用户可以随时启停指定规则,需要修改规则时可以直接编辑,不再需要先删除再创建。 26 | 27 | - 支持服务端到客户端的主题别名 28 | 29 | 现在,不仅仅是客户端发布消息到服务端时可以使用主题别名,服务端转发消息到客户端时,也可以使用主题别名,最大程度地减少流量消耗。 30 | 31 | - 支持跨版本数据迁移 32 | 33 | 提供命令行接口,支持迁移的数据包括:规则引擎已创建的资源和规则信息、黑名单信息和存储在 Mnesia 数据库的认证信息等。 34 | 35 | - 支持基于主题的指标统计 36 | 37 | 支持指定主题的消息收发数量与速率的统计。 38 | 39 | - Dashboard 提供内置模块管理页面 40 | 41 | 目前存在延迟发布、内置 ACL、上下线通知、[主题重写](https://www.emqx.com/zh/blog/rewriting-emqx-mqtt5-topic)、代理订阅与主题指标共六个内置模块,都支持通过 Dashboard 或 HTTP API 动态加载和卸载。 42 | 43 | - 支持 MQTT [增强认证](https://www.emqx.com/zh/blog/mqtt5-enhanced-authentication),已支持的认证算法包括:SCRAM-SHA-1 44 | 45 | 现在可以使用 TLS/SSL 或增强认证来进行双向认证。 46 | 47 | - 增加基于 Mnesia 内置数据库的认证插件 48 | 49 | 支持 Client ID 与 Username 认证(注意 `emqx-auth-clientid` 与 `emqx-auth-username` 插件即将废弃) 50 | 51 | - 为 CoAP、LwM2M 协议设备接入增加 IPv6 支持 52 | 53 | 54 | 55 | ### 错误修复 56 | 57 | - 修复异常客户端检测功能没有删除过期数据导致特定场景下内存持续增长的问题 58 | - 修复规则引擎的一些问题 59 | - 修复 MQTT Bridge 默认情况下不会发送 PINREQ 报文的问题 60 | - 修复内置 ACL 模块重新加载时没有清除 ACL 缓存的问题 61 | - 修复 `emqx-statsd` 没有获取 EMQX Broker 指标的问题 62 | - 修复使用 WebSocket 连接时 Proxy Protocol 不可用的问题 63 | -------------------------------------------------------------------------------- /zh/202004/release-notes-kuiper-0-3-0.md: -------------------------------------------------------------------------------- 1 | 日期:2020/4/7 2 | 3 | Kuiper 团队宣布发布 Kuiper 0.3.0 4 | 5 | Kuiper 0.3.0 [可以从这里下载](https://github.com/lf-edge/ekuiper/releases/tag/0.3.0)。 6 | 7 | EMQX Kuiper 是 Golang 实现的轻量级物联网边缘分析、流式处理开源软件,可以运行在各类资源受限的边缘设备上。Kuiper 设计的一个主要目标就是将在云端运行的实时流式计算框架(比如 [Apache Spark](https://spark.apache.org/),[Apache Storm](https://storm.apache.org/) 和 [Apache Flink](https://flink.apache.org/) 等)迁移到边缘端。Kuiper 参考了上述云端流式处理项目的架构与实现,结合边缘流式数据处理的特点,采用了编写基于`源 (Source)`,`SQL (业务逻辑处理)`, `目标 (Sink)` 的规则引擎来实现边缘端的流式数据处理。 8 | 9 | ![arch.png](https://assets.emqx.com/images/e32179ace42832e336f2804f38778b20.png) 10 | 11 | 网址:https://github.com/lf-edge/ekuiper 12 | 13 | Github仓库: https://github.com/emqx/kuiper 14 | 15 | ## 概览 16 | 17 | 本版本中 [Kuiper & EdgeX 集成](https://github.com/lf-edge/ekuiper/projects/4)已经基本完成,近期将把 Kuiper 的 Docker 镜像包含在 EdgeX 的 nightly Docker composer 文件中。Kuiper 0.3.1 将正式与 EdgeX Geneva 版本一起发布。 18 | 19 | ### 功能 20 | 21 | - 与 EdgeX 的集成 22 | 23 | - 根据用户的使用反馈,我们修复了一些 EdgeX source 的问题,并且更新了[教程文档](https://github.com/lf-edge/ekuiper/blob/master/docs/zh_CN/edgex/edgex_rule_engine_tutorial.md)。 24 | - 根据用户的使用反馈,[EdgeX 目标(sink)支持](https://github.com/lf-edge/ekuiper/blob/edgex_chn_doc/docs/zh_CN/rules/sinks/edgex.md)重新实现,新版本的实现中,可以将分析结果以 EdgeX 消息总线要求的格式直接写入。 25 | - 提供了 EdgeX Kuiper 集成的相关[中文文档](https://github.com/lf-edge/ekuiper/blob/master/docs/zh_CN/edgex/edgex_rule_engine_tutorial.md)。 26 | 27 | - 插件管理的支持 28 | 29 | Kuiper 支持扩展插件,但是之前未提供插件管理工具的支持。在本版本中,Kuiper 提供了插件管理的 Rest API 和命令行的支持。通过此管理接口,用户可以通过提供的这些接口来新增,删除和查看插件等操作。 30 | 31 | 32 | ### 问题修复 33 | 34 | - [在 pre-processor 里对 null 值的处理](https://github.com/lf-edge/ekuiper/issues/185) 35 | - Rest sink 的[异常](https://github.com/lf-edge/ekuiper/issues/173) 36 | - 其它一些文档问题的修复 37 | 38 | ### 联系 39 | 40 | 如果对Kuiper有任何问题,请随时通过contact@emqx.io与我们联系。 41 | -------------------------------------------------------------------------------- /zh/202005/mqttx-v-1-3-1-release-notes.md: -------------------------------------------------------------------------------- 1 | [MQTTX](https://mqttx.app/zh) 是由 [EMQ](https://www.emqx.com/zh) 开源的一款跨平台 **[MQTT 5.0](https://www.emqx.com/zh/blog/introduction-to-mqtt-5)** 桌面测试客户端,它支持 macOS,Linux,Windows。MQTTX 的用户界面借助聊天软件的形式简化了页面的操作逻辑,用户可以快速创建多个同时在线的 **MQTT 客户端**,方便测试 MQTT/TCP、MQTT/TLS、MQTT/WebSocket 的连接/发布/订阅功能及其他 **[MQTT 协议](https://www.emqx.com/zh/mqtt-guide)** 特性。 2 | 3 | MQTTX 官网:[https://mqttx.app](https://mqttx.app/zh) 4 | 5 | MQTTX v1.3.1 版本下载:[https://github.com/emqx/MQTTX/releases/tag/v1.3.1](https://github.com/emqx/MQTTX/releases/tag/v1.3.1) 6 | 7 | 8 | 9 | ## 新功能预览 10 | 11 | - 支持 MQTT 5.0 更多属性 12 | 13 | 该版本中新增了对 MQTT 5.0 属性 `Topic Alias Maximu ` 的配置,即为主题别名最大值,表示由服务器发送的客户端将接受为主题别名的最大值。在新建连接中选择 MQTT 协议版本为 5.0 后即可配置该项。 14 | 15 | ![mqttxtopicaliasmax.png](https://assets.emqx.com/images/414597f0a3dffe1a8ec12009d4ff86e4.png) 16 | 17 | - 通过单击已订阅的 Topic 项实现消息过滤 18 | 19 | 对于之前的版本,所有订阅的消息展示都在同一视图中,如果有多个消息主题的订阅,将非常不方便查看。因此在当前最新版中,实现了可点击左侧订阅列表中已经订阅的 Topic 项,来实现消息过滤,点击后,消息视图内将只显示订阅了当前主题的消息内容,再次点击即可取消过滤。 20 | 21 | ![mqttxtopicmessages.png](https://assets.emqx.com/images/1095f94567b1b912d1d23b57d45e8591.png) 22 | 23 | - 支持点击 Topic 名称后快速复制 Topic 信息 24 | 25 | 当成功添加一个 Topic 后,在已订阅列表中点击 Topic 名称,即可快速复制当前的 Topic 信息。当需要向该 Topic 发送消息时,只需快速粘贴到消息栏的 Topic 输入框内进行修改,便可快速完成该操作。 26 | 27 | ![mqttxtopiccopy.png](https://assets.emqx.com/images/2b2da8f80dd33f911fb569d1d21d6f5b.png) 28 | 29 | - 添加启用严格的证书验证选项 30 | 31 | 在创建 TLS/SSL 的安全连接时,选择证书卡片内加入了开启`严格证书验证`的选项,当开启该项后,会启用更完整的证书验证连接,一般推荐在需要测试正式环境时启用。 32 | 33 | ![mqttxtls.png](https://assets.emqx.com/images/9981849ab9cf6a01238ec530553ad8ba.png) 34 | 35 | 36 | 37 | ## 优化和修复 38 | 39 | - 允许消息框内直接发送空消息 40 | - 修复了客户端接收到重复消息的问题 41 | - 修复了证书未通过验证的问题 42 | 43 | 44 | 45 | 该项目完全开源,您可以到 [MQTTX GitHub](https://github.com/emqx/MQTTX/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc) 来提交使用过程中遇到的问题,或是 Fork MQTTX 项目向我们提交修改后的 PR,我们将会及时查阅和处理。 46 | -------------------------------------------------------------------------------- /zh/202006/release-notes-kuiper-0-4-1.md: -------------------------------------------------------------------------------- 1 | 日期:2020/6/1 2 | 3 | Kuiper 团队宣布发布 Kuiper 0.4.1 4 | 5 | Kuiper 0.4.1 [可以从这里下载](https://github.com/lf-edge/ekuiper/releases/tag/0.4.1)。 6 | 7 | EMQX Kuiper 是 Golang 实现的轻量级物联网边缘分析、流式处理开源软件,可以运行在各类资源受限的边缘设备上。Kuiper 设计的一个主要目标就是将在云端运行的实时流式计算框架(比如 [Apache Spark](https://spark.apache.org/),[Apache Storm](https://storm.apache.org/) 和 [Apache Flink](https://flink.apache.org/) 等)迁移到边缘端。Kuiper 参考了上述云端流式处理项目的架构与实现,结合边缘流式数据处理的特点,采用了编写基于`源 (Source)`,`SQL (业务逻辑处理)`, `目标 (Sink)` 的规则引擎来实现边缘端的流式数据处理。 8 | 9 | ![arch.png](https://assets.emqx.com/images/60dc5411db7c365da28ec255dcd67b98.png) 10 | 11 | 网址:https://github.com/lf-edge/ekuiper 12 | 13 | Github仓库: https://github.com/emqx/kuiper 14 | 15 | ## 概览 16 | 17 | Kuiper 0.4.1 版本主要修复了一些从社区中反馈的问题。 18 | 19 | ### 功能 20 | 21 | - 支持插件多实例的功能。之前的版本中,插件只支持单个实例,现在用户可以通过返回一个构造函数来支持插件多实例功能。 22 | - 修复[规则文档中](https://ekuiper.org/docs/en/latest/concepts/rules.html)关于 `dataTemplate` 使用方法的说明 23 | - 修复[ EdgeX 浮点数据](https://github.com/lf-edge/ekuiper/issues/272)在某些情况下不能处理的问题 24 | - 支持通过 Docker 环境变量来修改 EdgeX MQTT 消息总线的配置 25 | - 支持将汇聚函数的运算结果作为别名,然后在 WHERE 或者 HAVING 表达式中使用别名进行引用,这样可以避免多次运算,提高了运行效率 26 | - 删除不存在的流、规则时返回 404,而非之前的 400 27 | - 修复了删除规则后,[未成功发送的数据被无限重发的问题](https://github.com/lf-edge/ekuiper/issues/266) 28 | - 支持在 `SELECT * `的时候,可以根据流中字段定义,实际发送的数据中字段的大小写进行正确处理 29 | - 修复同一类型的 sink,无法准确发送消息的问题 30 | - [http_pull 源](https://github.com/lf-edge/ekuiper/blob/develop/docs/zh_CN/rules/sources/http_pull.md)支持,可以定时从 HTTP rest 接口中拉取数据 31 | 32 | ### 感谢 33 | 34 | @worldmaomao 提供了[浮点](https://github.com/lf-edge/ekuiper/issues/272)运算的修复 35 | 36 | ### 联系 37 | 38 | 如果对Kuiper有任何问题,请随时通过contact@emqx.io与我们联系。 39 | -------------------------------------------------------------------------------- /zh/202008/emqx-4-2-rc-1-release-notes.md: -------------------------------------------------------------------------------- 1 | EMQX Broker 4.2-rc.1 正式发布,欢迎大家下载试用,下载地址:https://github.com/emqx/emqx/releases/tag/v4.2-rc.1。 如果您想要与我们分享反馈意见,或者遇到任何问题需要帮助,可以通过 https://github.com/emqx/emqx/issues 与我们交流。 2 | 3 | > EMQX Broker 是一款高并发低延迟,支持分布式集群架构的开源 MQTT 消息服务器,支持单机百万连接,更多信息请访问:https://www.emqx.com/zh/products/emqx 4 | 5 | 6 | 7 | ![Artboard.png](https://assets.emqx.com/images/d2580244a5c143994f4f74a8b48723fb.png) 8 | 9 | ### 更新说明 10 | 11 | - 【新增】支持使用第三方语言编写扩展插件接入其他非 MQTT 协议,目前已支持 Java 和 Python 两种编程语言。访问 https://github.com/emqx/emqx-exproto/blob/master/README.md 获取更多相关信息 12 | - 【新增】支持修订版本间的热更新 13 | - 【新增】新增遥测功能,收集有关 EMQX Broker 使用情况的信息以帮助我们改进产品,此功能默认开启,支持手动关闭。访问 获取更多遥测相关信息。 14 | - 【新增】规则引擎支持为 MQTT 桥接创建订阅 15 | - 【新增】规则引擎支持功能更加强大的 SQL 语法 16 | - 【新增】MySQL、PostgreSQL 等插件全面支持 IPv6、SSL/TLS 17 | - 【新增】支持消息流控 18 | - 【新增】支持 CentOS 8、Ubuntu 20.04 操作系统和 ARM64 系统架构 19 | - 【新增】Webhook 支持配置自定义的 HTTP 头部 20 | - 【优化】更加友好的告警机制,为开发者提供 HTTP API 21 | - 【优化】优化[保留消息](https://www.emqx.com/zh/blog/message-retention-and-message-expiration-interval-of-emqx-mqtt5-broker)性能 22 | - 【调整】后续版本不再支持 Debian 8、Ubuntu 14.04 和 Raspbian 8 操作系统 23 | - 【调整】`emqx-statsd` 插件正式更名为 `emqx-prometheus` 24 | - 【调整】发布与订阅支持独立配置[主题重写](https://www.emqx.com/zh/blog/rewriting-emqx-mqtt5-topic)规则 25 | - 【调整】允许用户配置是否允许 WebSocket 消息包含多个 [MQTT 报文](https://www.emqx.com/zh/blog/introduction-to-mqtt-control-packets),以兼容部分客户端 26 | - 【修复】修复主题指标中存在的问题 27 | - 【修复】修复 LwM2M 插件没有正确获取协议版本的问题 28 | 29 | 30 | 31 | ### 5.0 发布计划 32 | 33 | EMQX 开源研发团队已正式进入 5.0 的开发阶段,5.0 版本将作为 5G 大基建超大规模多协议超融合接入平台,拥有更加健壮的全新架构、更加强大的性能以及更加流畅的使用体验,它将为您带来: 34 | 35 | - 支持更快的 QUIC 协议 36 | - 领先的 [NB-IoT](https://www.emqx.com/zh/blog/emqx-nb-iot-access-solution) 网络与 LwM2M 支持 37 | - 50+ 节点的大规模集群 38 | - K8S 下集群弹性伸缩 39 | - 极简化的全新配置方式 40 | - 全新的消息路由架构 41 | - 更强的消息路由性能 42 | - 更加强大易用的 API,等等... 43 | 44 | 欢迎在 https://github.com/emqx/emqx 上关注我们,以随时了解我们的最新研发进度。 45 | -------------------------------------------------------------------------------- /zh/202008/mqtt5-flow-control.md: -------------------------------------------------------------------------------- 1 | MQTT v5 带来了很多新的特性,我们会尽量以通俗易懂的方式展示这些特性,并探讨这些特性对开发者的影响。到目前为⽌,我们已经探讨过这些 [MQTT v5 新特性](https://www.emqx.com/zh/blog/introduction-to-mqtt-5),现在我们将继续讨论: **流量控制** 2 | 3 | 4 | 5 | ## 流量控制 6 | 7 | 通常服务端的资源都是固定且有限的,而客户端的流量则可能是随时随地变化的。正常业务(用户集中访问、设备大量重启)、被恶意攻击、网络波动,都会导致流量出现激增,如果服务端没有对其进行任何限制,就会导致负载迅速上升,进而导致响应速度下降,影响其他业务,甚至导致系统瘫痪。 8 | 9 | ![image20200730133959150.png](https://assets.emqx.com/images/52cfac4662c53ea76451ff66759e4059.png) 10 | 11 | 因此,我们需要流量控制,可以是限制发送端的发送速率,也可以是限制接收端的接收速率,但最终目的都是保证系统的稳定。常用的流控算法有滑动窗口计数法、漏桶算法以及令牌桶算法。 12 | 13 | MQTT v3 没有规范流量控制行为,导致客户端和服务端在实现上百花齐放,进而影响了设备的接入和管理。不过现在,MQTT v5 已经引入了流量控制功能,这也是我们接下来将要探讨的内容。 14 | 15 | 16 | 17 | ## MQTT v5 中的流量控制 18 | 19 | 在 MQTT v5 中,发送端会有一个初始的发送配额,每当它发送一个 QoS 大于 0 的 PUBLISH 报文,发送配额就相应减一,而每当收到一个响应报文(PUBACK、PUBCOMP 或 PUBREC),发送配额就会加一。如果接收端没有及时响应,导致发送端的发送配额减为 0,发送端应当停止发送所有 QoS 大于 0 的 PUBLISH 报文直至发送配额恢复。我们可以将其视为变种的令牌桶算法,它们之间的区别仅仅是增加配额的方式从以固定速率增加变成了按实际收到响应报文的速率增加。 20 | 21 | 这种算法能够更加积极和充分地利用资源,因为它没有在发送速率的层面上进行限制,发送速率完全取决于对端的响应速率和网络情况,如果接收端空闲且网络良好,那么发送端可以得到比较高的发送速率,反之则会被限制到一个比较低的发送速率上。 22 | 23 | 24 | 25 | ## Receive Maximum 属性 26 | 27 | 为了支持流量控制,MQTT v5 新增了一个 Receive Maximum 属性,它存在于 CONNECT 报文与 CONNACK 报文,表示客户端或服务端愿意同时处理的 QoS 为 1 和 2 的 PUBLISH 报文最大数量,即对端可以使用的最大发送配额。如果接收端已收到但未发送响应的 QoS 大于 0 的 PUBLISH 报文数量超过 Receive Maximum 的值,接收端将断开连接避免受到更严重的影响。 28 | 29 | ![image20200730173320715.png](https://assets.emqx.com/images/7fe5bd2f4190b0d9f4891b81de5246ff.png) 30 | 31 | ## 为什么没有 QoS 0 ? 32 | 33 | 也许你已经发现,前文所有提到 PUBLISH 报文的地方都使用了定语: QoS 大于 0。QoS 0 消息的特性决定了它不存在响应报文,也许是觉得 QoS 0 消息的重要性不高,接收端可以通过强制的接收速率限制来约束 QoS 0 消息,也许是其他原因,总之最后我们看到的 MQTT v5 的流量控制机制完全依赖响应报文,这就导致它的流量控制只能局限在 QoS 1,2 消息中。 34 | 35 | 聊胜于无,MQTT v5 给出了一个并不完美的解决方案,或者说仅仅只是一个建议:当发送配额减为 0 时,发送端可以选择继续发送 QoS 为 0 的 PUBLISH 报文,也可以选择暂停发送。其中暂停发送的行为逻辑是,如果 QoS 1,2 的 PUBLISH 报文的应答速度变慢,通常意味着接收端的消费能力已经下降,继续发送 QoS 0 消息只会令情况变得更糟。 36 | 37 | 38 | 39 | ## 结论 40 | 41 | 尽管 MQTT v5 的流量控制机制依然存在一些不足,但我们依然建议用户尽可能地使用它。基于响应报文的发送配额算法使得发送端能够最大程度地利用资源,Receive Maximum 使得通信双方不再需要事先协商发送配额,从而获得更高的透明度和灵活性,这在需要接入多厂商设备时是很有帮助的。 42 | 43 | 44 |
45 |
46 | 免费试用 EMQX Cloud 47 |
全托管的云原生 MQTT 消息服务
48 |
49 | 开始试用 → 50 |
51 | -------------------------------------------------------------------------------- /zh/202009/emq-officially-release-neuron.md: -------------------------------------------------------------------------------- 1 | 随着工业4.0 概念的提出,现代工业逐渐向智能制造转型,各类采集器、控制器、传感器等设备以及移动通信、智能分析等技术开始融入到工业生产过程的各个环节中,形成了高度依赖云计算、大数据等技术,进行实时数据收集和处理以最终实现智能化生产的工业物联网。近两年,5G 技术飞速发展,其 **高带宽、低时延、广覆盖、高可靠** 的特性与工业领域对于数据通信的需求高度匹配,为[工业物联网](https://www.emqx.com/zh/blog/iiot-explained-examples-technologies-benefits-and-challenges)平台构建提供了有力保障。 2 | 3 | 但与此同时,工业物联网的发展也面临着不容忽视的挑战。工业物联网下游涉及大量精密的工业设备接入,而工业领域的控制协议种类繁多,不同的设备厂商有其各自专有的工业协议。 **要想实现终端设备数据上云,除了借助 5G 提供的传输效率保障,还需要解决各厂商标准迥异的工业协议的整合统一。** 4 | 5 | 基于这一痛点,EMQ 团队研发了 [边缘工业协议网关软件 EMQX Neuron](https://www.emqx.com/zh/products/neuronex)(以下简称 Neuron ),着眼工业物联网发展需求和未来布局,力图为 5G 时代工业 4.0 平台的构建赋能。Neuron 取自「神经元」一词,代表了 **EMQ 对这一产品的定位与愿景**:在工业物联网庞大复杂的数据传输系统中,Neuron 作为布局在边缘端的基本功能单元,可以对每一组织内的终端数据信息进行接收与整合,并传输至更上游的「神经中枢」即云端平台,经过进一步的数据分析处理,做出符合业务需求的快速响应与决策,从而实现整个工业物联网系统的高效柔性运转。 6 | 7 | ## Why EMQX Neuron ? 8 | 9 | ### 70+ 工业协议支持 10 | 11 | 支持超过 **70 种主流工业协议**接入(这一数量还将持续增加),包括 **Modbus RTU、Modbus TCP、Ethernet/IP、OPC/UA** 等,解析并转换为统一的 [MQTT 协议](https://www.emqx.com/zh/mqtt-guide) 后,与 EMQX Edge 和 Kuiper 集成进行边缘流式分析与计算,或直接接入云端工业物联网平台。 12 | 13 | ### 超越普通的网关 14 | 15 | 可同时运行 **业务逻辑服务、事件触发脚本、边缘规则处理引擎、标准工业警报判定** ,赋予设备边缘层更多能力。Neuron 也提供了扩展接口,可以实现自定义协议的接入。 16 | 17 | ### Web 管控平台 18 | 19 | 一站式平台网关配置管理。所有配置、规则、标签可通过 **Web平台统一管理**,通过 Web 服务可省却现场操作,远程即可实现设备的监控、维护、配置管理等功能。 20 | 21 | ![Web 管控平台.png](https://assets.emqx.com/images/657a2478f2604fb042f4b1b533dd5b2a.png) 22 | 23 | ### 跨平台、低功耗 24 | 25 | 软件由 C 语言实现,适合轻量级的工业类设备,包括各类硬件,支持 **X86、ARM、MIPS 32 位与 64 位 CPU 架构**,以及主流的 **Linux 系统**。 26 | 27 | 28 | 29 | 30 | Neuron 的发布无疑将使 5G 时代的工业物联网如虎添翼。不仅如此,我们将通过集成 Neuron,Edge 和 Kuiper 等软件,实现在边缘端的工业协议解析、数据汇聚和流式处理的一整套边缘解决方案;其与云端的 EMQX Broker/Enterprise 等系列产品进一步集成,则可以实现一个端到端的从边缘到云端的完整工业解决方案。 31 | 32 | ![跨平台、低功耗.png](https://assets.emqx.com/images/ba0d5b290ecb9d0a8f7e92b60462a405.png) 33 | 34 | 这一完整工业解决方案计划于 **2020 年 9 月**发布,将探索边云协同的全栈全场景,在构建面向 5G 的泛工业物联网平台,赋能工业领域的网络化、数字化和智能化等方面做出积极努力,助力推进工业4.0 进程。 35 | 36 | 我们相信和期待一个人与机械高效协作的未来,并愿意为之付出不竭努力。 37 | 38 | 39 | > **Neuron 产品研发的主要贡献者:** Joey Cheung,Neuron 产品线总监,15 年自动化设备控制软件、HMI、SCADA 编写经验,参与过国内外大型工业自动化生产线项目,现专注工业物联网平台的软件开发。 40 | 41 | 42 |
43 |
44 | 免费试用 Neuron 45 |
46 | 开始试用 → 47 |
48 | -------------------------------------------------------------------------------- /zh/202010/mqttx-v-1-3-4-release-notes.md: -------------------------------------------------------------------------------- 1 | [MQTTX](https://mqttx.app/zh) 是由全球领先的 **开源物联网中间件** 提供商 [EMQ](https://www.emqx.com/zh) 开源的一款跨平台 [MQTT 5.0](https://www.emqx.com/zh/blog/introduction-to-mqtt-5) 桌面测试客户端,它支持 macOS,Linux,Windows。MQTTX 的用户界面借助聊天软件的形式简化了页面的操作逻辑,用户可以快速创建多个同时在线的 **MQTT 客户端**,方便测试 MQTT/TCP、MQTT/TLS、MQTT/WebSocket 的连接/发布/订阅功能及其他 **MQTT 协议** 特性。 2 | 3 | MQTTX 网站:https://mqttx.app/zh 4 | 5 | MQTTX v1.3.4 版本下载:https://github.com/emqx/MQTTX/releases/tag/v1.3.3 6 | 7 | Mac 用户可在 App Store 中进行下载:https://apps.apple.com/cn/app/mqttx/id1514074565?mt=12 8 | 9 | Linux 用户可在 Snapcraft 中进行下载:https://snapcraft.io/mqttx 10 | 11 | ![mqttxpreview.png](https://assets.emqx.com/images/ea395ae029b369e5cd0f046f82be5411.png) 12 | 13 | ## 新功能概览 14 | 15 | - 数据的备份与恢复 16 | 17 | 在该版本中新增了数据的备份与恢复功能,用户可选择两种导入导出的方式,通过连接页面中的右上角菜单,和在设置页面中的高级功能栏里。 18 | 19 | 点击连接页面中的右上角的菜单可以看到数据导出和数据导入两个选项,点击导出项后会出现弹出框,选择数据格式(目前仅支持 JSON),和设置是否导出全部连接。如果不是全部连接的话,仅导出当前页面中的单个连接数据,如果是的话,将导出软件内所有的连接数据。点击导入项后会出现弹出框,选择导入的数据格式和导入的文件路径,点击确认后即可轻松创建或更新数据。 20 | 21 | ![mqttxdropdownexport.png](https://assets.emqx.com/images/a1dd6f04c01f361e7cfb390075127375.png) 22 | 23 | 在设置页面里可以在最下方的高级功能中,选择点击数据备份和数据恢复两个按钮。选择数据备份时,将导出所有的连接数据,包含所有收发到的消息等。选择数据恢复时,选择完导入文件的路径,确认后即可恢复数据。 24 | 25 | ![mqttxsettingexport.png](https://assets.emqx.com/images/7ccd6f49e35e057f8a881a02fa9039ae.png) 26 | 27 | - 消息框支持点击右键菜单复制和删除 28 | 29 | 在之前版本中,用户需要使用接收到的消息时,只能手动全选文本后,才能复制消息框内的内容。还有对于存在过多的消息量时,如果需要单独删除时,只能清空所有消息。该版本中对这些进行了优化,实现弹出右键菜单后点击即可复制和删除的操作,提升了易用性。 30 | 31 | ![mqttxmessagecopy.png](https://assets.emqx.com/images/40a96271bfd2fc857ffa5e6dc14f0163.png) 32 | 33 | - 支持 Topic 别名 34 | 35 | 在添加 Topic 时,可以给每个 Topic 设置一个别名,该选项为一个可选项,当设置并添加完成订阅后,订阅列表中的 Topic 数据将以别名展示,鼠标悬浮到 Topic 项时,提示框也会同时展示出该 Topic 的原值。这对于需要监控查看的多个 Topic 过长,无法分辩 Topic 的具体含义时,具有较强的帮助性。 36 | 37 | ![mqttxtopicalias.png](https://assets.emqx.com/images/cb1b92c2088a05a19f845eb35041fc13.png) 38 | 39 | - 国际化支持,添加日文版本 40 | 41 | ## 修复及其优化 42 | 43 | - 修复了在断开连接时,没有发送 disconnect packet 的问题 44 | 45 | 该项目完全开源,您可以到 [GitHub](https://github.com/emqx/MQTTX/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc) 提交使用过程中遇到的问题,或是 Fork MQTTX 项目向我们提交修改后的 PR,我们将会及时查阅和处理。也特此感谢社区中所有用户的贡献和反馈。 46 | -------------------------------------------------------------------------------- /zh/202011/emq-intelligent-workshop-platform.md: -------------------------------------------------------------------------------- 1 | ## 项目背景 2 | 3 | 西安增材制造国家研究院有限公司作为国家增材制造创新中心的依托公司和承载主体,汇聚了国内外高端人才及相关国家重点实验室、工程中心和工程实验室等科研资源,为国内制造业的转型和创新发展提供重要支撑,服务「中国制造 2025」。增材制造国家研究院以国家战略性目标和制造业创新发展为导向,制定发展增材行业战略和科研计划,瞄准增材行业中的重大设备、重要材料、关键工艺、核心软件、核心元器件等共性关键技术,进行自主研发与技术集成,打造完整的创新链。 4 | 5 | 从 2019 年起,为了更好的服务增材市场上下游企业,实现 3D 打印设备的互联互通, **西安增材制造国家研究院有限公司基于 EMQX 物联网消息中间设计建设了增材智能车间平台,** 目标是对接国内外各类增材设备厂商与各类型增材设备用户,为企业提供 3D 打印设备的生产过程数据监控,数据统计,大数据分析等服务。力图通过平台打通增材设备租赁、设备管理、材料管理、售后服务与运维等多类需求,将价格昂贵的 3D 打印设备通过平台化运营服务于更多中小型客户,同时为增材设备厂商提供更丰富的渠道资源。 6 | 7 | 8 | 9 | ## 建设方案 10 | 11 | 通过工业网关将 3D 打印设备接入增材智能车间平台,3D 打印设备运行数据实时上报到 EMQX 企业版消息中间件,由消息中间件实现采集数据的持久化,实现对 3D 打印设备实时数据采集和数据展现。用户可通过平台管理界面以及手机 APP 对远程增材设备进行管理。同时系统可以通过 EMQX 企业版提供的数据下行通道实现对增材设备的远程主动控制。 12 | 13 | ![图片1.png](https://assets.emqx.com/images/a5a89b59786814f09f0c20f0f553549f.png) 14 | ​ 增材设备管理平台端界面 15 | 16 | ![画板2x.png](https://assets.emqx.com/images/de21978adf17a1845aa66bc69a42421a.png) 17 | 18 | ​ 增材设备管理移动APP端界面 19 | 20 | **在本方案中,EMQX 消息中间件提供了高并发的设备接入能力,以及在高频采集、数据高吞吐场景下的数据接入与实时处理能力。** 在架构上为后续大规模接入 3D 打印机以及其他设备数据并对数据进行高频采集提供了可靠的解决方案。 21 | 22 | EMQX 所带来的统一增材设备生产数据实时接入与管理能力,以及同时满足公有云与私有部署两种需求的统一平台设计方案,为西安增材制造国家研究院有限公司增材智能车间平台建设 **节省了大量的研发成本,加速了平台建设周期,在不到一年时间里使平台便完成了从设计研发到上线的整个流程。** 23 | 24 | 25 | 26 | ## 项目进展与后期展望 27 | 28 | **目前增材智能车间平台已经建成并实现设备接入网联筑梦 3D 打印云服务平台 ,实现了 3D 订单管理、任务管理、排产管理、在线监控、移动监管、数据采集等目标。后期计划接入相关检测设备。** 29 | 30 | EMQ 也将继续助力西安增材制造国家研究院有限公司,依托增材智云拓展工业互联网应用,通过对工业企业提供私有设备管理平台,为生产制造企业在工艺流程改造、生产过程管理等领域实现业务创新,实现升级保障。 31 | 32 | 33 |
34 |
35 | 免费试用 EMQX Cloud 36 |
全托管的云原生 MQTT 消息服务
37 |
38 | 开始试用 → 39 |
40 | -------------------------------------------------------------------------------- /zh/202011/mqttx-v-1-4-0-release-notes.md: -------------------------------------------------------------------------------- 1 | [MQTTX](https://mqttx.app/zh) 是由全球领先的 **开源物联网中间件** 提供商 [EMQ](https://www.emqx.com/zh) 开源的一款跨平台 [MQTT 5.0](https://www.emqx.com/zh/blog/introduction-to-mqtt-5) 桌面测试客户端,它支持 macOS,Linux,Windows。MQTTX 的用户界面借助聊天软件的形式简化了页面的操作逻辑,用户可以快速创建多个同时在线的 **MQTT 客户端** ,方便测试 MQTT/TCP、MQTT/TLS、MQTT/WebSocket 的连接/发布/订阅功能及其他 **MQTT 协议** 特性。 2 | 3 | MQTTX 网站:https://mqttx.app/zh 4 | 5 | MQTTX v1.4.0 版本下载:https://github.com/emqx/MQTTX/releases/tag/v1.4.0 6 | 7 | Mac 用户可在 App Store 中进行下载:https://apps.apple.com/cn/app/mqttx/id1514074565?mt=12 8 | 9 | Linux 用户可在 Snapcraft 中进行下载:https://snapcraft.io/mqttx 10 | 11 | ![mqttxpreview.png](https://assets.emqx.com/images/8e995e772783202b5c5b50dc4799f800.png) 12 | 13 | ## 新功能概览 14 | 15 | - 支持多窗口 16 | 17 | 在该版本中,用户连接后需要监控消息收发时,不再只是通过单项视图去查看某一连接,可以在连接列表中,右键点击,选择新建窗口,为该连接创建新窗口。在新窗口中,同样可以进行连接,订阅主题,发布和接受消息等。如果当创建的多个连接之间存在某种联系时,或需要查看同时接受到的消息,可以新建多个视图窗口,同时进行查看。 18 | 19 | ![mqttxnewwindow.png](https://assets.emqx.com/images/c584749b8daf7c25d864740532ea4eaa.png) 20 | 21 | ![mqttxmutiwindow.png](https://assets.emqx.com/images/35209fb06c4bff335e6c49faaec14094.png) 22 | 23 | - 新增导入导出数据格式 24 | 25 | 在之前版本中,新增了数据的导入导出,但仅支持 `JSON` 格式的数据。该版本中对此进行了扩展,除 `JSON` 格式外,还支持了 `XML`,`CSV` 和 `Excel`。用户可以快速导出以上格式的数据,根据需求进行处理,也可以使用以上任意一种的数据格式,快速导入自定义数据,例如使用 Excel 快速生成测试用例,导入后进行快速测试。 26 | 27 | ![mqttxmoreformat.png](https://assets.emqx.com/images/ec94622bdd335b84041eaebcbf578657.png) 28 | 29 | - 支持消息搜索 30 | 31 | 在之前版本中,仅支持按 `Topic` 搜索来过滤消息内容,此版本中加入了消息搜索,打开搜索框后,右边多了一个消息输入框,可输入关键信息,消息框内会根据搜索内容进行过滤,也可以和 `Topic` 搜索一起进行联合查询。 32 | 33 | ![mqttxmessagesearch.png](https://assets.emqx.com/images/8b0c9c5625481449bc7ee4477e2a740f.png) 34 | 35 | - 首屏加入加载动画 36 | 37 | 首次打开程序时,加入了页面初始化时的加载动画 38 | 39 | ## 修复及其优化 40 | 41 | - 优化页面消息动画显示 42 | - 修复接受到消息无法自动滚动的问题 43 | - 修复了页面切换时出现的错误 44 | 45 | 该项目完全开源,您可以到 [GitHub](https://github.com/emqx/MQTTX/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc) 来提交使用过程中遇到的问题,或是 Fork MQTTX 项目向我们提交修改后的 PR,我们将会及时查阅和处理。也特此感谢社区中所有用户的贡献和反馈。 46 | -------------------------------------------------------------------------------- /zh/202011/release-notes-kuiper-1-0-1.md: -------------------------------------------------------------------------------- 1 | 日期:2020/11/12 2 | 3 | Kuiper 团队宣布发布 Kuiper 1.0.1 4 | 5 | Kuiper 1.0.1 [可以从这里下载](https://github.com/lf-edge/ekuiper/releases/tag/1.0.1)。 6 | 7 | EMQX Kuiper 是 Golang 实现的轻量级物联网边缘分析、流式处理开源软件,可以运行在各类资源受限的边缘设备上。Kuiper 设计的一个主要目标就是将在云端运行的实时流式计算框架(比如 [Apache Spark](https://spark.apache.org/),[Apache Storm](https://storm.apache.org/) 和 [Apache Flink](https://flink.apache.org/) 等)迁移到边缘端。Kuiper 参考了上述云端流式处理项目的架构与实现,结合边缘流式数据处理的特点,采用了编写基于`源 (Source)`,`SQL (业务逻辑处理)`, `目标 (Sink)` 的规则引擎来实现边缘端的流式数据处理。 8 | 9 | Kuiper 的应用场景包括:运行在各类物联网的边缘使用场景中,比如[工业物联网](https://www.emqx.com/zh/blog/iiot-explained-examples-technologies-benefits-and-challenges)中对生产线数据进行实时处理;车联网中的车机对来自汽车总线数据的即时分析;智能城市场景中,对来自于各类城市设施数据的实时分析。通过 Kuiper 在边缘端的处理,可以提升系统响应速度,节省网络带宽费用和存储成本,以及提高系统安全性等。 10 | 11 | ![arch.png](https://assets.emqx.com/images/fc9223537026752c219a428aeced805b.png) 12 | 13 | 网址:https://github.com/lf-edge/ekuiper 14 | 15 | Github仓库: https://github.com/emqx/kuiper 16 | 17 | ## 概览 18 | 19 | Kuiper 1.0.1 增强了 Kuiper 管理控制台的功能,并且修复了一些问题。 20 | 21 | ### 功能及问题修复 22 | 23 | - Kuiper 管理控制台 24 | - 支持流和规则的更新 25 | - 规则状态的可视化 26 | - 支持将日志写入 Linux syslog 27 | - TDengine ARM64 目标插件支持 28 | - 修改了 EdgeX 使用教程 29 | - 修复的问题 30 | 31 | - [Kuiper 在 ARM64 环境下退出的问题](https://github.com/lf-edge/ekuiper/issues/570). 32 | - 规则每个执行单元执行时延改成更小的时间单位 33 | - Kuiper 管理控制台 34 | - [目标的编辑器中无法显示数组类型的数据](https://github.com/lf-edge/ekuiper/issues/597) 35 | - 复杂的流定义在界面中显示不正确 36 | 37 | ## Kuiper 2020 里程碑 38 | 39 | 2020 年 Kuiper 项目将持续快速发展,包括完善更多的功能、与边缘开源社区更多项目的集成,以及加入更多的持续集成测试,提高软件质量等。主要内容如下, 40 | 41 | - KubeEdge 集成(Q3/Q4):通过扩展 Device Model,使用 Kuiper 实现对于旁路(bypass)设备数据进行清洗、缓存和重传等功能 42 | - Kuiper 1.0.0(Q3/Q4)发布:1.0.0 版本将于 2020 年 Q3 或者 Q4 发布 43 | - EdgeX Hanoi 版本集成(Q4):Kuiper 将支持 EdgeX 中新加入的数组数据类型;以及支持通过 EdgeX UI 来管理 Kuiper 的流、规则等,用户在使用 Kuiper 的时候更加方便 44 | 45 | 您可以点击 [Kuiper 2020 里程碑](https://github.com/lf-edge/ekuiper/projects/1)获取更加详细的信息,以及最新的更新。 46 | 47 | ## 联系 48 | 49 | 如果对 Kuiper 有任何问题,请随时通过 contact@emqx.io 与我们联系。 50 | -------------------------------------------------------------------------------- /zh/202012/mqttx-v-1-4-1-release-notes.md: -------------------------------------------------------------------------------- 1 | [MQTTX](https://mqttx.app/zh) 是由全球领先的 **开源物联网中间件** 提供商 [EMQ](https://www.emqx.com/zh) 开源的一款跨平台 [MQTT 5.0](https://www.emqx.com/zh/blog/introduction-to-mqtt-5) 桌面测试客户端,它支持 macOS,Linux,Windows。MQTTX 的用户界面借助聊天软件的形式简化了页面的操作逻辑,用户可以快速创建多个同时在线的 **MQTT 客户端,** 方便测试 MQTT/TCP、MQTT/TLS、MQTT/WebSocket 的连接/发布/订阅功能及其他 **MQTT 协议** 特性。 2 | 3 | MQTTX 网站:https://mqttx.app/zh 4 | 5 | MQTTX v1.4.1 版本下载:https://github.com/emqx/MQTTX/releases/tag/v1.4.1 6 | 7 | Mac 用户可在 App Store 中进行下载:https://apps.apple.com/cn/app/mqttx/id1514074565?mt=12 8 | 9 | Linux 用户可在 Snapcraft 中进行下载:https://snapcraft.io/mqttx 10 | 11 | ![mqttxpreview.png](https://assets.emqx.com/images/39bb4b3ea1775d78971b0f0f958e22aa.png) 12 | 13 | ## 新功能概览 14 | 15 | - 收发流量统计(目前仅支持 EMQX) 16 | 17 | 此功能可通过点击右上角的下来菜单,选择流量统计,MQTTX 会自动订阅系统主题,并可以在页面中展示该 Broker 下的简单的流量统计图表,运行版本和运行时间。 18 | 19 | > 注意:使用该功能时,可能会出现订阅系统主题失败的错误,此时可能是因为 EMQX 默认 **只允许** 本机的 MQTT 客户端订阅 $SYS 主题,或请参照 [内置 ACL](https://docs.emqx.com/zh/emqx/latest/advanced/acl-file.html) 修改发布订阅 ACL 规则。 20 | 21 | ![mqttxbytes.png](https://assets.emqx.com/images/6f10f501a0e5fb530f8bbc9929dd2e03.png) 22 | 23 | - 支持定时发送 Payload 24 | 25 | 此功能可通过点击右上角的下拉菜单,选择定时消息,这时会打开设置弹窗,用户只需填写发送消息的时间频率,单位为秒。设置成功后填写发送所需要的 Topic 和 Payload 等,手动点击发送一条消息后,即可成功打开定时消息功能,这时消息可按用户设置的时间频率进行定时发送。如需取消定时,可点击顶部栏中,断开连接按钮旁的时钟按钮,即可取消定时。 26 | 27 | ![mqttxtimedmessage.png](https://assets.emqx.com/images/5d968f5e1faa96bbf4845599c05b78cf.png) 28 | 29 | - 支持显示当前连接的消息数 30 | 31 | 当连接成功后,左上角的连接名称旁,将显示当前连接所有的收发消息数,当鼠标悬浮到该数字上时,还可以看到发送和接收到的消息数分别是多少。 32 | 33 | ![mqttxmessages.png](https://assets.emqx.com/images/d6a43d593c0593ae7663a9c2ac934fe1.png) 34 | 35 | - 添加打开新窗口的快捷键 36 | 37 | 在之前的版本中,打开连接的新窗口,需要右键点击连接,使用右键菜单功能才能打开新窗口,较为隐蔽且操作繁琐,该版本优化了此功能的交互,在每个连接的顶部栏中,下拉菜单按钮左侧新增了一个新建窗口按钮,当用户需要使用新窗口时,只需要点击该按钮即可。 38 | 39 | ![mqttxnewwindow.png](https://assets.emqx.com/images/a2ff6c71defc26c9106849a9082e2a05.png) 40 | 41 | ## 修复及其优化 42 | 43 | - 修复只能连接到本地 MQTT Broker 的问题 44 | 45 | 该项目完全开源,您可以到 [GitHub](https://github.com/emqx/MQTTX/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc) 来提交使用过程中遇到的问题,或是 Fork MQTTX 项目向我们提交修改后的 PR,我们将会及时查阅和处理。也特此感谢社区中所有用户的贡献和反馈。 46 | -------------------------------------------------------------------------------- /zh/202012/mqttx-v-1-4-2-release-notes.md: -------------------------------------------------------------------------------- 1 | [MQTTX](https://mqttx.app/zh) 是由全球领先的 **开源物联网中间件** 提供商 [EMQ](https://www.emqx.com/zh) 开源的一款跨平台 [MQTT 5.0](https://www.emqx.com/zh/blog/introduction-to-mqtt-5) 桌面测试客户端,它支持 macOS,Linux,Windows。MQTTX 的用户界面借助聊天软件的形式简化了页面的操作逻辑,用户可以快速创建多个同时在线的 **MQTT 客户端**,方便测试 MQTT/TCP、MQTT/TLS、MQTT/WebSocket 的连接/发布/订阅功能及其他 **MQTT 协议** 特性。 2 | 3 | MQTTX 网站:https://mqttx.app/zh 4 | 5 | MQTTX v1.4.2 版本下载:https://github.com/emqx/MQTTX/releases/tag/v1.4.2 6 | 7 | Mac 用户可在 App Store 中进行下载:https://apps.apple.com/cn/app/mqttx/id1514074565?mt=12 8 | 9 | Linux 用户可在 Snapcraft 中进行下载:https://snapcraft.io/mqttx 10 | 11 | ![mqttxpreview.png](https://assets.emqx.com/images/eae55fcaa5b4abd9b562bc2aa5fc9dd9.png) 12 | 13 | ## 新功能概览 14 | 15 | ### 脚本功能(Beta) 16 | 17 | 在该版本中,MQTTX 新增了脚本编辑功能,用户可实现编写自定义脚本(JavaScript)对发送和接收到的 `Payload` 进行自定义转化,配合定时发送功能,可实现例如模拟数据上报的自动化测试功能等。 18 | 19 | > 注意:该功能目前属于测试 Beta 阶段。 20 | 21 | 点击左侧菜单栏中的 `脚本` 按钮,可进入到脚本编辑页面,在该页面中,用户可在最上方的代码编辑器中,编写 JavaScript 代码,全局只包含一个 `execute` API,用户需要编写一个脚本函数,该函数接收一个 `value` 参数,即为 `Payload`, 函数中便可对 `value` 进行自定义操作(需注意接收到的 `Payload` 的类型间的转化),最后将该函数作为参数传入到 `execute` API 中即可执行自定义编写的函数。 22 | 23 | 下方还包含了一个 `输入` 和 `输出` 框,可输入预想输入值,点击右边的 `测试` 按钮,便可在 `输出` 框中查看执行结果,输入的值的格式包含了 `JSON` 和 `Plaintext`,方便用户提前调试自定义编写的脚本功能。完成测试后,可点击最右上角的 `保存` 按钮,输入该脚本的名称后就可对该脚本进行保存。保存完成后就可以到连接页面进行使用了。保存完成的脚本还可进行编辑和删除。 24 | 25 | 编写完脚本后,就可切换到连接页面,点击右上角的下拉功能菜单,选择 `使用脚本`,在弹出窗中,选择你需要使用的预先保存好的脚本,然后选择应用类型,包含了,发送时,接收时和全部。选择完成后,根据数据类型选择发送或接收的数据格式,正常使用消息的收发,此时如果看到预期效果,便完成了一个完整的脚本使用的功能。如果用户需要取消脚本,可点击顶部状态栏中的红色的 `停止脚本` 按钮,便可停止使用脚本。 26 | 27 | 注意:该功能具有一定的扩展性和灵活性,需用户配合实际需求来进行使用。 28 | 29 | ![mqttxscript.png](https://assets.emqx.com/images/cd4daadad6483bd7c7a20805ac746933.png) 30 | 31 | ### Client ID 自动加入时间戳 32 | 33 | 为防止当输入了相同的 Client ID 的客户端进行连接后,出现互踢的情况。该版本中为此进行了优化,新增了一个自动为 Client ID 加入时间戳的功能,保证每次连接时的 Client ID 都可以不同。在创建连接时,用户只需要点击 Client ID 输入框后的时间按钮,当按钮图标颜色状态发生改变时,即开启了该功能,再次点击后即可取消该功能。 34 | 35 | ![mqttxclientidtime.png](https://assets.emqx.com/images/b16191291027f1f12229652979afc443.png) 36 | 37 | ## 修复及其优化 38 | 39 | - 优化消息列表过长时,系统卡顿的问题 40 | - 优化系统主题($SYS)订阅失败时的错误提示 41 | - 优化当客户端连接时,禁止编辑客户端信息 42 | - 修复错误触发定时任务的问题 43 | - 修复未读消息为 NaN 的问题 44 | - 修复不能显示 `Payload` 编辑器的问题 45 | 46 | 该项目完全开源,您可以到 [GitHub](https://github.com/emqx/MQTTX/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc) 来提交使用过程中遇到的问题,或是 Fork MQTTX 项目向我们提交修改后的 PR,我们将会及时查阅和处理。也特此感谢社区中所有用户的贡献和反馈。 47 | -------------------------------------------------------------------------------- /zh/202012/release-notes-kuiper-1-0-2.md: -------------------------------------------------------------------------------- 1 | 日期:2020/12/18 2 | 3 | Kuiper 团队宣布发布 Kuiper 1.0.2 4 | 5 | Kuiper 1.0.2 [可以从这里下载](https://github.com/lf-edge/ekuiper/releases/tag/1.0.2)。 6 | 7 | EMQX Kuiper 是 Golang 实现的轻量级物联网边缘分析、流式处理开源软件,可以运行在各类资源受限的边缘设备上。Kuiper 设计的一个主要目标就是将在云端运行的实时流式计算框架(比如 [Apache Spark](https://spark.apache.org/),[Apache Storm](https://storm.apache.org/) 和 [Apache Flink](https://flink.apache.org/) 等)迁移到边缘端。Kuiper 参考了上述云端流式处理项目的架构与实现,结合边缘流式数据处理的特点,采用了编写基于`源 (Source)`,`SQL (业务逻辑处理)`, `目标 (Sink)` 的规则引擎来实现边缘端的流式数据处理。 8 | 9 | Kuiper 的应用场景包括:运行在各类物联网的边缘使用场景中,比如[工业物联网](https://www.emqx.com/zh/blog/iiot-explained-examples-technologies-benefits-and-challenges)中对生产线数据进行实时处理;车联网中的车机对来自汽车总线数据的即时分析;智能城市场景中,对来自于各类城市设施数据的实时分析。通过 Kuiper 在边缘端的处理,可以提升系统响应速度,节省网络带宽费用和存储成本,以及提高系统安全性等。 10 | 11 | ![arch.png](https://assets.emqx.com/images/dcda7751f0c11500427f5fde928e1af2.png) 12 | 网址:https://github.com/lf-edge/ekuiper 13 | 14 | Github仓库: https://github.com/emqx/kuiper 15 | 16 | ## 概览 17 | 18 | Kuiper 1.0.2 优化了 SQL 执行计划和运行时,并在某些场景下大大提高了性能。 Kuiper 在此版本中还支持二进制类型,并且可用于二进制流处理,例如图像。 19 | 20 | ### 功能及问题修复 21 | 22 | - SQL计划优化 23 | - 优化了 SQL 计划,添加了对 `PushDownPredicate` 的支持,可以根据 WHERE 子句中指定的条件提前过滤一些记录,可以减少长时间窗口处理的内存使用量。 24 | - 在后续的版本中将引入更多优化。 25 | - 二进制数据类型支持 26 | - 现在支持二进制数据类型,并且用户可以处理二进制流,例如处理图像。 27 | - [图像目标插件](https://github.com/lf-edge/ekuiper/blob/master/docs/zh_CN/plugins/sinks/image.md)用于将图像文件保存到本地磁盘。 28 | - 将流和规则存储从文件更改为 SQLite。 29 | - Ping API 支持,用于 Kuiper 服务活动检测。 30 | - 修复了一个内存泄漏问题——删除规则后,某些内存没有释放。 31 | - 禁止将客户端和 REST API 限制为本地主机。 32 | - 当服务器 fileLog=false 时,文件日志记录错误消息。 33 | - 添加了所有目标的重试计数。 34 | - 为日志文件提供 Logrotate 支持——循环时间为 24 小时,最长期限为 3 天。 35 | - 在编译阶段添加了一些 SQL 验证。 36 | - 增强了文档编制。 37 | - 修复了几个文件问题。 38 | - 修复了 httppull 源的几个问题。 39 | - 修复了在 management-ui 中加载数组类型时出现的问题。 40 | 41 | ## Kuiper 2021 里程碑 42 | 43 | 点击 [Kuiper 2021 里程碑](https://github.com/lf-edge/ekuiper/projects/10)以获取更多详细信息和最新更新。 44 | 45 | - Q1 - Q4: 1.3.x - 1.6.x 46 | - 插件增强功能 47 | - 为开发人员提供更友好的插件开发和部署 48 | - 更好的插件安装体验 49 | - 第三方语言库调用支持 50 | - 更人性化的管理界面 51 | - 规则管道支持 52 | - 规则功能增强, 例如,支持预定规则。 53 | - 更多的数学和函数支持 54 | 55 | ## 联系 56 | 57 | 如果对 Kuiper 有任何问题,请随时通过 kuiper@emqx.io 与我们联系。 58 | -------------------------------------------------------------------------------- /zh/202101/release-notes-kuiper-1-1-0.md: -------------------------------------------------------------------------------- 1 | 日期:2021/1/6 2 | 3 | Kuiper 团队宣布发布 Kuiper 1.1.0 4 | 5 | Kuiper 1.1.0 [可以从这里下载](https://github.com/lf-edge/ekuiper/releases/tag/1.1.0)。 6 | 7 | EMQX Kuiper 是 Golang 实现的轻量级物联网边缘分析、流式处理开源软件,可以运行在各类资源受限的边缘设备上。Kuiper 设计的一个主要目标就是将在云端运行的实时流式计算框架(比如 [Apache Spark](https://spark.apache.org/),[Apache Storm](https://storm.apache.org/) 和 [Apache Flink](https://flink.apache.org/) 等)迁移到边缘端。Kuiper 参考了上述云端流式处理项目的架构与实现,结合边缘流式数据处理的特点,采用了编写基于`源 (Source)`,`SQL (业务逻辑处理)`, `目标 (Sink)` 的规则引擎来实现边缘端的流式数据处理。 8 | 9 | Kuiper 的应用场景包括:运行在各类物联网的边缘使用场景中,比如[工业物联网](https://www.emqx.com/zh/blog/iiot-explained-examples-technologies-benefits-and-challenges)中对生产线数据进行实时处理;车联网中的车机对来自汽车总线数据的即时分析;智能城市场景中,对来自于各类城市设施数据的实时分析。通过 Kuiper 在边缘端的处理,可以提升系统响应速度,节省网络带宽费用和存储成本,以及提高系统安全性等。 10 | 11 | ![arch.png](https://assets.emqx.com/images/1cee7069a6f9e0cc96601f2e793c1a80.png) 12 | 13 | 网址:https://github.com/lf-edge/ekuiper 14 | 15 | Github仓库: https://github.com/emqx/kuiper 16 | 17 | ## 概览 18 | 19 | Kuiper 1.1.0 增加了图像处理插件,可以支持在规则中支持图像的处理;以及 SQL 执行计划的优化。该版本还修复了一些文档问题。 20 | 21 | ### 功能及问题修复 22 | 23 | - 二进制数据支持 24 | - 在上个版本支持二进制数据的基础上,Kuiper 现 [支持 2 个图像处理函数](https://github.com/lf-edge/ekuiper/blob/master/docs/zh_CN/plugins/functions/functions.md). 25 | - 增加了二进制处理的 FVT 测试用例 26 | - SQL 执行计划优化 27 | - 增强了 JOIN 语句中 ON 条件的 PushDownPredicate,如果 INNER JOIN 中条件只跟一个源有关系,将被提前执行 28 | - 增加 ColumnPruning 规则,所有未被使用到的列或者元数据在预处理阶段将被删除,这样可以减少内存的使用 29 | - kubernetes-tools 支持流和规则的更新操作 30 | - MQTT 源中的[共享订阅](https://www.emqx.com/zh/blog/introduction-to-mqtt5-protocol-shared-subscription)配置项删除,我们建议用户直接在 MQTT 源中指定「共享订阅」主题 31 | - 文档问题 32 | - 修复了一些 404 问题 33 | - 一部分描述和翻译问题 34 | 35 | ## Kuiper 2021 里程碑 36 | 37 | 点击 [Kuiper 2021 里程碑](https://github.com/lf-edge/ekuiper/projects/10)以获取更多详细信息和最新更新。 38 | 39 | - Q1 - Q4: 1.1.x - 1.4.x 40 | - 插件增强功能 41 | - 为开发人员提供更友好的插件开发和部署 42 | - 更好的插件安装体验 43 | - 第三方语言库调用支持 44 | - 更人性化的管理界面 45 | - 规则管道支持 46 | - 规则功能增强, 例如,支持预定规则。 47 | - 更多的数学和函数支持 48 | 49 | ## 联系 50 | 51 | 如果对 Kuiper 有任何问题,请随时通过 kuiper@emqx.io 与我们联系。 52 | -------------------------------------------------------------------------------- /zh/202101/release-notes-neuron-1-1-1.md: -------------------------------------------------------------------------------- 1 | 为解决工业领域数据接入上云过程中所面临的协议繁杂、设备异构化等问题,2020 年 9 月, [物联网边缘工业协议网关软件 EMQX Neuron](https://www.emqx.com/zh/products/neuronex) (以下简称 Neuron )正式发布。 2 | 3 | Neuron 提供了通过对各种工业协议转换实现设备端的数据采集、运行业务逻辑服务、警报判定,并将数据及警报上传及存储到云平台。再通过 Web 服务等部署和客户端应用软件,实现设备远程监控、远程维护、设备绩效管理、设备和资产管理等功能。 4 | 5 | Neuron 工业网关南向支持接入主流的[工业物联网](https://www.emqx.com/zh/blog/iiot-explained-examples-technologies-benefits-and-challenges)协议(驱动协议详细列表可参考 EMQ 官网),以及支持自定义协议的扩展。 北向支持通过 [MQTT](https://www.emqx.com/zh/mqtt-guide)、WebSocket 和 HTTP 协议与云平台层进行交互,实现设备上云与云端控制的能力。 6 | 7 | 8 | ## 新功能概览 9 | 10 | Neuron V1.1.1 增加了南北协议报文显示,让用户可随时透过 dashboard 观看协议报文,追踪及分析报文内容。 11 | 12 | 北向 MQTT 协议报文: 13 | 14 | ![webwxgetmsgimg.jpg](https://assets.emqx.com/images/a0cc294f21ad9e9c678f1818fa0599f2.jpg) 15 | 16 | 南向 [Modbus](https://www.emqx.com/zh/blog/building-modbus-based-iiot-app-with-neuron) 协议报文: 17 | 18 | ![webwxgetmsgimg 1.jpg](https://assets.emqx.com/images/5a5d14f99c38bf37b573746faf61ba0b.jpg) 19 | 20 | 此外,新版本还增加了日志追踪,能让用户了解当前 Neuron 的运行状况。 21 | 22 | ![webwxgetmsgimg 2.jpg](https://assets.emqx.com/images/4421afbbb936c191e3cb63a2488c81a2.jpg) 23 | 24 | ## 功能及问题修复 25 | 26 | - 修复 TTY 驱动参数配置问题; 27 | - 修复读写驱动设备字节长度不匹配的问题; 28 | - 修复北向协议选择列表,增加 RS232 驱动支持; 29 | - 修改过期时间计算方式; 30 | - 修复内存申请失败的错误; 31 | - 增加支持运行日志等级选择; 32 | - 压缩交互 JSON 数据; 33 | - 删除非必要日志文件; 34 | - 修改 Neuron 脚本引擎支持直接使用对象和属性; 35 | 36 | 37 | ## 联系 38 | 39 | 如果对 Neuron 有任何问题,请随时通过 [neuron@emqx.io](mailto:neuron@emqx.io) 联系。 40 | 41 | 作为新基建的重要组成部分,工业互联网已成为一个备受关注的热点领域。为了响应「中国制造 2025」及「工业 4.0」,越来越多的工业企业开始谋求数字化、智能化转型,工业设备上云也因此成为企业转型之路上必须面对的挑战。EMQ 于去年 10 月正式发布的 **云边一体化解决方案**,可以实现异构设备连接及数据汇聚,完成后续边缘或云端计算,以云边协同的方式帮助领域内相关企业快速实现工业互联网架构下边缘层的功能。作为该方案重要组成部分的 Neuron,也将在未来持续为边缘工业互联网提供功能价值。 42 | 43 | 44 |
45 |
46 | 免费试用 Neuron 47 |
48 | 开始试用 → 49 |
50 | -------------------------------------------------------------------------------- /zh/202102/mqttx-v-1-5-1-release-notes.md: -------------------------------------------------------------------------------- 1 | [MQTTX](https://mqttx.app/zh) 是由全球领先的 **开源物联网中间件** 提供商 [EMQ](https://www.emqx.com/zh) 开源的一款跨平台 [MQTT 5.0](https://www.emqx.com/zh/blog/introduction-to-mqtt-5) 桌面测试客户端,它支持 macOS,Linux,Windows。MQTTX 的用户界面借助聊天软件的形式简化了页面的操作逻辑,用户可以快速创建多个同时在线的 **MQTT 客户端**,方便测试 MQTT/TCP、MQTT/TLS、MQTT/WebSocket 的连接/发布/订阅功能及其他 **MQTT 协议** 特性。 2 | 3 | MQTTX 网站:[https://mqttx.app/zh](https://mqttx.app/zh) 4 | 5 | MQTTX v1.51 版本下载:[https://github.com/emqx/MQTTX/releases/tag/v1.5.1](https://github.com/emqx/MQTTX/releases/tag/v1.5.1) 6 | 7 | Mac 用户可在 App Store 中进行下载:[https://apps.apple.com/cn/app/mqttx/id1514074565?mt=12](https://apps.apple.com/cn/app/mqttx/id1514074565?mt=12) 8 | 9 | Linux 用户可在 Snapcraft 中进行下载:[https://snapcraft.io/mqttx](https://snapcraft.io/mqttx) 10 | 11 | ![mqttxpreview.png](https://assets.emqx.com/images/fbd24ad549dd807461a4f77eb4b1d871.png) 12 | **注意:** 该版本包含介绍了 1.5.0 版本的更新,1.5.1 提升了更多的稳定性,对于使用 1.5.0 版本的用户推荐更新到 1.5.1 版本。 13 | 14 | ## 新功能概览 15 | 16 | - 日志系统 17 | 18 | 在 v1.5.0 版本后,MQTTX 引入了日志记录功能,方便用户调试连接、报告错误。生产环境下,日志系统显示 3 个级别的信息: 19 | 20 | - `INFO` 用于提示用户操作信息 21 | - `WARN` 产生不安全/潜在风险的警告 22 | - `ERROR` 产生失败的错误 23 | 24 | 默认情况下,日志会被写入 log 文件: 25 | 26 | - Linux: `~/.config/MQTTX/logs/log` 27 | - macOS: `~/Library/Application Support/MQTTX/logs/log` 28 | - Windows: `%USERPROFILE%\AppData\Roaming\MQTTX\logs\log` 29 | 30 | 在每次关闭 MQTTX 时,当前的日志文件会被重命名为 timestamp `[YY]-[MM]-[DD]T[hh]:[mm].log` 格式。 31 | 32 | ![mqttxlog.png](https://assets.emqx.com/images/6a1acc82b2a554aa2b360b28750676ec.png) 33 | 34 | ## 修复及其优化 35 | 36 | - 修复无法编辑 `Payload` 的问题 37 | - 修复使用快捷键 `cmdOrCtrl + enter` 发送消息时,出现重复的问题 38 | - 修复无法读取日志文件的问题 39 | - 修复 `Client ID` 无法自动刷新的问题 40 | - 修复从编辑连接页面跳转到创建页面时,无法初始化数据的问题 41 | - 加入正在连接状态当面板处于折叠状态时 42 | - 优化部分弹出框样式 43 | - 修改 EMQX Logo 44 | - 加入 GitHub 的 issue 模版,包含: **Bug_Report**, **Feature_Want**, **Help_Wanted** 45 | 46 | 该项目完全开源,您可以到 [GitHub](https://github.com/emqx/MQTTX/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc) 来提交使用过程中遇到的问题,或是 Fork MQTTX 项目向我们提交修改后的 PR,我们将会及时查阅和处理。也特此感谢社区中所有用户的贡献和反馈。 47 | 48 | 如果您觉得该项目对您还有帮助,请在 GitHub 上给我们一个 Star 进行鼓励!: ) 49 | -------------------------------------------------------------------------------- /zh/202102/mqttx-v-1-5-2-release-notes.md: -------------------------------------------------------------------------------- 1 | [MQTTX](https://mqttx.app/zh) 是由全球领先的 **开源物联网中间件** 提供商 [EMQ](https://www.emqx.com/zh) 开源的一款跨平台 [MQTT 5.0](https://www.emqx.com/zh/blog/introduction-to-mqtt-5) 桌面测试客户端,它支持 macOS,Linux,Windows。MQTTX 的用户界面借助聊天软件的形式简化了页面的操作逻辑,用户可以快速创建多个同时在线的 **MQTT 客户端**,方便测试 MQTT/TCP、MQTT/TLS、MQTT/WebSocket 的连接/发布/订阅功能及其他 **MQTT 协议** 特性。 2 | 3 | MQTTX 网站:[https://mqttx.app/zh](https://mqttx.app/zh) 4 | 5 | MQTTX v1.5.2 版本下载:[https://github.com/emqx/MQTTX/releases/tag/v1.5.2](https://github.com/emqx/MQTTX/releases/tag/v1.5.2) 6 | 7 | Mac 用户可在 App Store 中进行下载:[https://apps.apple.com/cn/app/mqttx/id1514074565?mt=12](https://apps.apple.com/cn/app/mqttx/id1514074565?mt=12) 8 | 9 | Linux 用户可在 Snapcraft 中进行下载:[https://snapcraft.io/mqttx](https://snapcraft.io/mqttx) 10 | 11 | ![mqttxpreview.png](https://assets.emqx.com/images/fdeeaa3093e114157fdbf46fd18bcd32.png) 12 | 13 | ## 新功能概览 14 | 15 | - 优化订阅的 Topic 项的样式和点击 Topic 项过滤消息时的效果 16 | - 支持快捷连接,当连接的信息面板折叠起来的时候 17 | - 查看日志信息时,自动滚动页面到日志详情的底部 18 | - 添加 Code of Conduct,[贡献者行为准则](https://github.com/emqx/MQTTX/blob/master/.github/CODE_OF_CONDUCT_CN.md) 19 | 20 | ## 修复及其优化 21 | 22 | - 修复了出现 JavaScript Uncaught Exception 的错误提示框,当在 Windows 系统中关闭 MQTTX 1.5 或 1.5.1时 23 | - 修复了路由从其他页面跳转到创建和连接时的编辑器错误 24 | - 修复无法记录错误的连接失败日志 25 | - 修复了当发送其他主题过滤器时无法记录日志消息的问题 26 | - 修复了由于连接名称过长,引起的布局错乱的问题 27 | 28 | 该项目完全开源,您可以到 [GitHub](https://github.com/emqx/MQTTX/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc) 来提交使用过程中遇到的问题,或是 Fork MQTTX 项目向我们提交修改后的 PR,我们将会及时查阅和处理。也特此感谢社区中所有用户的贡献和反馈。 29 | 30 | 如果您觉得该项目对您还有帮助,请在 GitHub 上给我们一个 Star 进行鼓励!: ) 31 | -------------------------------------------------------------------------------- /zh/202103/emqx-project-newsletter-202102.md: -------------------------------------------------------------------------------- 1 | > 本文内容来自 EMQ 欧洲研发团队 2 | 3 | 4 | 5 | 大家好!得益于出色的开源社区及开发团队,EMQX 项目正在以更快的速度进行着迭代更新。在 2 月份,我们的项目进展得非常顺利,截至目前我们完成了如下成果:最新 QUIC 协议支持、社区参与、安全性和其他更多功能改进。 6 | 7 | ## 线上 Demo Day 8 | 9 | 我们通过 Zoom 开展了欧洲团队第一次非正式的线上研讨会,会议参与人数众多,得到了多个开发团队及社区成员支持。 10 | 11 | 直播过程中,EMQX 开源团队展示了新的环境变量配置支持,以及对基于 MsQuic 的 QUIC 协议 Erlang NIF 封装。新的环境变量配置覆盖提高了极大的灵活性,而这仅仅只是开始,后续我们将会有更多的配置改进加入到新版本。 12 | 13 | 率先将 QUIC 协议引入 MQTT 甚至 Eralng 社区,将继续让 EMQ 在技术上保持行业和领域内的领先,同时也让 EMQX 的客户在竞争激烈的行业中保持领先地位。 14 | 15 | 在这里要感谢 EMQX 开源社区贡献者、EMQX 开发团队及所有会议出席人员,感谢他们让这样一场内容丰富、充满活力的活动得以成功举办。我们也将在之后举办更多社区活动。 16 | 17 | 18 | 19 | ## 安全性 20 | 21 | **TLS** **版本默认为** **v1.3** 22 | 23 | 自 OTP 23 后,我们将 TLS 1.3 设置为默认,确保最佳安全性的同时也支持用户自定义配置使用早期的 TLS 版本。 24 | 25 | 26 | 27 | ## 环境变量配置覆盖 28 | 29 | **灵活性** 30 | 31 | 支持使用环境变量覆盖常规配置,这将有利于测试和非持久性用例。也是在容器部署环境中的最灵活的选择。 32 | 33 | 34 | 35 | ## master 分支保持最新 36 | 37 | **最新功能** 38 | 39 | **最新功能** 40 | 41 | 从 4.3-beta.1 开始,EMQX (https://github.com/emqx/emqx) 开源项目的默认分支 (master)将持续合并最新的功能和修复。未来的发布发布将直接从 master 分支构建。我们建议社区开发者从 master 分支获取最新改动。 42 | 43 | 44 | 45 | ## QUIC 协议支持 46 | 47 | **引领技术趋势** 48 | 49 | 开发并演示了基于微软的 [MsQuic](https://github.com/microsoft/msquic) 的 Erlang NIF 实现,以为未来的 MQTT over QUIC 支持做好准备。请关注 [emqx/quic](https://github.com/emqx/quic) 了解最新的更新。 50 | 51 | 52 | 53 | ## 持续贡献开源社区 54 | 55 | **更多的社区支持** 56 | 57 | - 现在 Webhook 和 MQTT 桥接插件均已支持上传证书,并对社区开源。我们相信这个功能对于开源社区很有帮助。 58 | - 原先闭源的高性能 Kafka Erlang 客户端 Wolff 已完全开源 ( [kafka4beam/wolff ](https://github.com/kafka4beam/wolff)) 59 | 60 | ``` 61 | 它和另一个 Kafka 客户端 brod 有什么不同呢? 62 | 63 | - 更加适应网络和 Kafka 的干扰 64 | 65 | - 更灵活的连接管理 66 | 67 | - 分区数量自动刷新 68 | ``` 69 | 70 | 71 | 72 | ## 4.3 Beta 版即将发布 73 | 74 | **最后阶段** 75 | 76 | 我们的开源项目正在欧洲和中国团队的努力下快速推进,不久之后 v4.3 Beta 版本就会和大家见面。 77 | 78 | 79 | 80 | ## Exhook 基准测试 81 | 82 | **在** **8** **核** **CPU、16 GB** **内存的情况下,达到每秒** **20k TPS** 83 | 84 | Exhook ( emqx-exhook ) 是 EMQX 的一个插件。它的主要目的是通过 gRPC 转发所有钩子事件到用另一种语言实现的服务器上,大大提高了 EMQX 的可扩展性。最近的基准在 8 核 CPU、16 GB 内存的情况下,达到了每秒 20K TPS。 85 | 86 | 87 |
88 |
89 | 免费试用 EMQX Cloud 90 |
全托管的云原生 MQTT 消息服务
91 |
92 | 开始试用 → 93 |
94 | -------------------------------------------------------------------------------- /zh/202104/emqx-project-newsletter-202103.md: -------------------------------------------------------------------------------- 1 | > 本文内容来自 EMQ 欧洲研发团队 2 | 3 | 4 | 5 | 三月份我们工作的重点是 EMQX 4.3 版本的收尾工作和 5.0 版本的产品设计。历经长达三周的马拉松式讨论,我们最终确定了 5.0 版本的详细需求列表,这是个令人兴奋的消息,标志着我们即将开始 5.0 的开发工作。 6 | 7 | 8 | 9 | ## **4.3.0 即将发布** 10 | 11 | 我们的项目在团队的努力下快速推进,现已发布了 4.3-beta.1、4.3-rc.1、4.3-rc.2、4.3-rc.3,4.3.0 正式版即将来临,敬请期待。 12 | 13 | 14 | 15 | ## **安全性** 16 | 17 | 三月,EMQ 与知名安全公司 Synopsys Software Integrity Group 开展合作,旨在进一步提升 EMQ 的产品和服务安全性。 18 | 19 | 20 | 21 | ## **社区动态** 22 | 23 | - 为了使我们的开源项目以更具创新、更加积极的状态高效迭代快速推进,EMQX 团队开始正式采用 RFC 流程,以收集来自社区的意见,持续完善产品功能。我们将管理该流程的存储库命名为 EIP,全称为: **EMQX Improvement Proposals。** 项目地址:[https://github.com/emqx/eip](https://github.com/emqx/eip)。 24 | - 我们本月上线了 EMQ 中文问答社区 [askemq.com](https://askemq.com/),这个社区可以帮助中国大陆的用户更方便地进行协作和分享。 25 | - 线上 DEMO 会议按照每两周一次的频率持续进行, 得到了多个开发团队及社区成员支持。 26 | - EMQX 团队即将在杭州 Ofiice 举办第一次线下 Open Day 活动,敬请关注。 27 | 28 | 29 | 30 | ## **项目进展** 31 | 32 | - 成立了专门的测试团队,该团队将为 EMQX 项目在 GitHub CI 中提供更多的自动化集成测试。 33 | - 我们的主项目 [emqx/emqx.git](https://github.com/emqx/emqx) 已经全部通过了 rebar dialyzer 检查。 34 | - [Quicer](https://github.com/emqx/quic) (QUIC 协议的 Erlang/Elixir 支持) 提供了 macOS 上的构建;增加了类似 inet/gen_tcp 风格的 APIs,开始了 MQTT-on-QUIC 的试验性功能实现。 35 | - 开始了Rlog 项目,该项目旨在提高 EMQX 集群的伸缩能力。Rlog 是 [ekka](https://github.com/emqx/ekka) 库的一部分,将提供一种 Mnesia 数据库的异步复本复制功能,详情请参见 [EIP-0004](https://github.com/emqx/eip/blob/main/implemented/0004-async-mnesia-change-log-replication.md)。 36 | - jq.erl。 [jq](https://stedolan.github.io/jq/) 是 JSON 处理的事实标准。基于其开源内核,我们将提供一个 Erlang 的 NIF 实现。它将被应用于 EMQX 规则引擎中,为 JSON 数据流处理提供灵活强大的扩展。 37 | 38 | 39 |
40 |
41 | 免费试用 EMQX Cloud 42 |
全托管的云原生 MQTT 消息服务
43 |
44 | 开始试用 → 45 |
46 | -------------------------------------------------------------------------------- /zh/202104/mqttx-v-1-5-3-release-notes.md: -------------------------------------------------------------------------------- 1 | [MQTTX](https://mqttx.app/zh) 是由全球领先的 **开源物联网中间件** 提供商 [EMQ](https://www.emqx.com/zh) 开源的一款跨平台 [MQTT 5.0](https://www.emqx.com/zh/blog/introduction-to-mqtt-5) 桌面测试客户端,它支持 macOS,Linux,Windows。MQTTX 的用户界面借助聊天软件的形式简化了页面的操作逻辑,用户可以快速创建多个同时在线的 **MQTT 客户端,** 方便测试 MQTT/TCP、MQTT/TLS、MQTT/WebSocket 的连接/发布/订阅功能及其他 **MQTT 协议** 特性。 2 | 3 | MQTTX 网站:[https://mqttx.app/zh](https://mqttx.app/zh) 4 | 5 | MQTTX v1.5.3 版本下载:[https://github.com/emqx/MQTTX/releases/tag/v1.5.3](https://github.com/emqx/MQTTX/releases/tag/v1.5.3) 6 | 7 | Mac 用户可在 App Store 中进行下载:[https://apps.apple.com/cn/app/mqttx/id1514074565?mt=12](https://apps.apple.com/cn/app/mqttx/id1514074565?mt=12) 8 | 9 | Linux 用户可在 Snapcraft 中进行下载:[https://snapcraft.io/mqttx](https://snapcraft.io/mqttx) 10 | 11 | ![collection_group.png](https://assets.emqx.com/images/3fecd14eb079273cc5e027c5a78eb4f1.png) 12 | 13 | ## 新功能概览 14 | 15 | - 加入了文件夹功能,以达到分组管理连接的功能 16 | 17 | - 基本功能:支持文件夹和连接的 **拖拽移动、** 展开和折叠,支持文件夹嵌套; 18 | - 支持在顶层新建文件夹,点击连接管理栏目右上角的图标即可在顶层新建文件夹; 19 | - 支持右键点击文件夹打开当前文件夹下的菜单,包含有: 20 | - 新建子文件夹 21 | - 删除当前文件夹 22 | - 重命名当前文件夹 23 | - **最佳实践:** 根据不同的服务器类型创建分组,拖拽连接到文件夹下,完成分类; 24 | 25 | - 支持拖拽连接到窗口外以创建新的窗口 26 | 27 | 拖拽一个连接并拉到窗口范围外,松手之后即可新建一个连接窗口 28 | 29 | ![new_collection.png](https://assets.emqx.com/images/41f9e89534c1d1e3d61e77f5b786aea7.png) 30 | 31 | ## 修复及其优化 32 | 33 | - 修复了 SYS 主题拒绝提示非预期的错误 34 | - 修复了复制主题提示信息消失问题 35 | 36 | 该项目完全开源,您可以到 [GitHub](https://github.com/emqx/MQTTX/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc) 来提交使用过程中遇到的问题,或是 Fork MQTTX 项目向我们提交修改后的 PR,我们将会及时查阅和处理。也特此感谢社区中所有用户的贡献和反馈。 37 | 38 | 如果您觉得该项目对您还有帮助,请在 GitHub 上给我们一个 Star 进行鼓励!:) 39 | -------------------------------------------------------------------------------- /zh/202105/emqx-project-newsletter-202104.md: -------------------------------------------------------------------------------- 1 | > 本文内容来自 EMQ 欧洲研发团队 2 | 3 | 随着四月的结束,距离 EMQX 4.3.0 正式版的发布又更近了一些。我们也已逐步将研发重心迁移到 5.0 上,正式开启了 5.0 版本的开发阶段。社区 Open Day 与 Demo Day 也如期举行,感谢研发团队的付出和社区成员的支持。 4 | 5 | 6 | 7 | ## 4.3.0 版本即将发布,性能提升 8 | 9 | 4.3.0 依旧保持着快速推进,目前已经已经来到了 4.3-rc.5。我们仍在为了给大家带来更好的使用体验而不断努力,在当前版本中又对通配符订阅进行了问题修复与性能提升,力求让 4.3.0 正式版不辜负大家的等待。我们将在下期 Demo Day 中为大家演示 4.3.0 版本中使通配符订阅速度提高 10 倍的有关详情,请关注后续的活动预告。 10 | 11 | ## 升级保障 12 | 13 | 我们近期发布了 4.0.13 和 4.2.11 两个修复版本,修复了数据导入和导出的一些问题,以确保升级到 4.3 版本时数据的顺利迁移。 14 | 15 | ## 更高质量 16 | 17 | 我们的测试团队已经为 PostgreSQL、MySQL、Redis 等数据库添加了自动化集成测试,将陆续支持更多数据库。 18 | 19 | ## 灵活性 20 | 21 | 我们 fork 了 Erlang/OTP 以实现 Mnesia 数据同步的性能优化。同时还添加了一个补丁,允许 atuto-probing 网络对等体的 IPv6 堆栈支持。所有的改变都与上游兼容,这意味着 EMQX 可以在上游的 Erlang/OTP 上顺畅地运行。 22 | 23 | ## 连接性(MQTT over QUIC) 24 | 25 | 我们实现了 MQTT-over-QUIC 项目的一个新的里程碑:对在 EMQX 中运行的 QUIC 进行完全集成演示(视频回放:[https://www.bilibili.com/video/BV1y64y1m72P](https://www.bilibili.com/video/BV1y64y1m72P))。下一步我们将使其为生产做好准备。详情请在 GitHub 查看项目时间表([https://github.com/emqx/emqx/discussions/4379](https://github.com/emqx/emqx/discussions/4379))。 26 | 27 | ## 伸缩性(Rlog) 28 | 29 | Rlog 的最新进展已在 Demo Day 中进行了演示(视频回放:[https://www.bilibili.com/video/BV1Ub4y1D7kD/?spm_id_from=333.788.recommend_more_video.-1](https://www.bilibili.com/video/BV1Ub4y1D7kD/?spm_id_from=333.788.recommend_more_video.-1)),EMQX 节点现在可以异步同步路由信息了!这将使 EMQX 集群更加稳定,更好弹性伸缩和云原生支持。 30 | 31 | ## 下一代:5.0 版本功能 32 | 33 | - 我们已经基于 JSON 处理的事实标准 [jq ](https://stedolan.github.io/jq/)的开源内核构建了 NIF 绑定。它将被应用与 EMQX 规则引擎中,为 JSON 数据流处理提供灵活强大的扩展。 34 | - HOCON 将是 EMQX 的下一代配置,我们正在为 HOCON 增加 schema 校验支持。在 EMQX 5.0 中,该 schema 将被用于配置文件的校验和动态修改配置的校验。 35 | 36 | 37 | 38 | ## 社区 39 | 40 | - [askemq.com](https://askemq.com) 社区的周 PV 已经达到了 5000,越来越多的用户选择在 askemq.com 交流讨论,我们也看到有很多热心的社区伙伴与我们的工程师一起参与社区支持,对此我们感到欣慰与振奋。 41 | - 在过去两个月,EMQ 各项目团队陆续开展了包括 Demo Day(项目最新进展分享)、Open Day(项目改进建议与长期发展规划的讨论)、Sharing Day(技术知识分享) 在内的社区活动,EMQX 团队也积极参与其中。目前为止已成功举办多期,与众多社区成员进行了分享交流。未来的活动预告信息将在 EMQ 官网活动页面中发布。回放视频将发布在 EMQ 官方 B 站账号(EMQ-映云科技)。 42 | 43 | 44 |
45 |
46 | 免费试用 EMQX Cloud 47 |
全托管的云原生 MQTT 消息服务
48 |
49 | 开始试用 → 50 |
51 | -------------------------------------------------------------------------------- /zh/202105/mqttx-v-1-5-4-release-notes.md: -------------------------------------------------------------------------------- 1 | [MQTTX](https://mqttx.app/zh) 是由全球领先的 **开源物联网中间件** 提供商 [EMQ](https://www.emqx.com/zh) 开源的一款跨平台 [MQTT 5.0](https://www.emqx.com/zh/blog/introduction-to-mqtt-5) 桌面测试客户端,它支持 macOS,Linux,Windows。MQTTX 的用户界面借助聊天软件的形式简化了页面的操作逻辑,用户可以快速创建多个同时在线的 **MQTT 客户端**,方便测试 MQTT/TCP、MQTT/TLS、MQTT/WebSocket 的连接/发布/订阅功能及其他 **MQTT 协议** 特性。 2 | 3 | MQTTX 网站:[https://mqttx.app/zh](https://mqttx.app/zh) 4 | 5 | MQTTX v1.5.4 版本下载:[https://github.com/emqx/MQTTX/releases/tag/v1.5.4](https://github.com/emqx/MQTTX/releases/tag/v1.5.4) 6 | 7 | Mac 用户可在 App Store 中进行下载:[https://apps.apple.com/cn/app/mqttx/id1514074565?mt=12](https://apps.apple.com/cn/app/mqttx/id1514074565?mt=12) 8 | 9 | Linux 用户可在 Snapcraft 中进行下载:[https://snapcraft.io/mqttx](https://snapcraft.io/mqttx) 10 | 11 | 12 | ![mqttxpreview.png](https://assets.emqx.com/images/3c7493d6526eb7a02d42c3aa962f48f0.png) 13 | 14 | ## 新功能概览 15 | 16 | - 支持对发送过的 Payload 历史记录进行保存 17 | 18 | 当连接的客户端成功发送过一条 Payload 后,将会自动将 Payload 数据保存到历史记录,点击右下方左右按钮可快速切换保存过的历史记录,点击中间按钮可快速切换到最新的一条 Payload 。避免了每次发布消息时,都需要手动编辑的情况。 19 | 20 | 21 | ![mqttxpayload.png](https://assets.emqx.com/images/c175486e82496d829b99da0c08f16f4e.png) 22 | 23 | - 支持对发送过的 Topic 信息进行历史记录保存 24 | 25 | 除自动保存 Payload 消息外,还将会自动保存发送的 Topic 信息,点击 Topic 输入框最右方的下拉按钮,可快速选择历史记录,同样也避免了每次发送前都需要手动输入 Topic 的问题。从而提升测试效率。 26 | 27 | 28 | ![mqttxtopic.png](https://assets.emqx.com/images/2befce2f17c088c3afe05cc9df6065a5.png) 29 | 30 | ## 修复及其优化 31 | 32 | - 修复连接列表高亮主题颜色问题 33 | - 修复分组中连接序列显示的问题 34 | - 修复连接高亮显示不正确的问题 35 | 36 | 该项目完全开源,您可以到 [GitHub](https://github.com/emqx/MQTTX/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc) 来提交使用过程中遇到的问题,或是 Fork MQTTX 项目向我们提交修改后的 PR,我们将会及时查阅和处理。也特此感谢社区中所有用户的贡献和反馈。 37 | 38 | 如果您觉得该项目对您还有帮助,请在 GitHub 上给我们一个 Star 进行鼓励!:) 39 | -------------------------------------------------------------------------------- /zh/202105/mqttx-v-1-5-5-release-notes.md: -------------------------------------------------------------------------------- 1 | [MQTTX](https://mqttx.app/zh) 是由全球领先的 **开源物联网中间件** 提供商 [EMQ](https://www.emqx.com/zh) 开源的一款跨平台 [MQTT 5.0](https://www.emqx.com/zh/blog/introduction-to-mqtt-5) 桌面测试客户端,它支持 macOS,Linux,Windows。MQTTX 的用户界面借助聊天软件的形式简化了页面的操作逻辑,用户可以快速创建多个同时在线的 **MQTT 客户端**,方便测试 MQTT/TCP、MQTT/TLS、MQTT/WebSocket 的连接/发布/订阅功能及其他 **MQTT 协议** 特性。 2 | 3 | MQTTX 网站:[https://mqttx.app/zh](https://mqttx.app/zh) 4 | 5 | MQTTX v1.5.5 版本下载:[https://github.com/emqx/MQTTX/releases/tag/v1.5.5](https://github.com/emqx/MQTTX/releases/tag/v1.5.5) 6 | 7 | Mac 用户可在 App Store 中进行下载:[https://apps.apple.com/cn/app/mqttx/id1514074565?mt=12](https://apps.apple.com/cn/app/mqttx/id1514074565?mt=12) 8 | 9 | Linux 用户可在 Snapcraft 中进行下载:[https://snapcraft.io/mqttx](https://snapcraft.io/mqttx) 10 | 11 | ![mqttxpreview.png](https://assets.emqx.com/images/aa86f5835a6f7a5ce59aecf39990e493.png) 12 | 13 | ## 新功能概览 14 | 15 | ### 订阅列表持久化 16 | 17 | 在该版本中,新增了对 Topic 列表的持久化存储的功能,无论配置 `Clean Session` 为何值,断开客户端连接后,订阅列表都不会被自动删除,方便用户长期查看和管理连接的 Topic。 18 | 19 | ### 自动恢复订阅 20 | 21 | 当连接的 Topic 列表支持持久化存储后,如果连接的 `Clean Session` 的值为 `True`,即使重连后,Topic 列表也不可用,此时的订阅已经失效,需要手动再次订阅。此时,在设置页面中提供了一个自动恢复订阅的设置选项。打开该设置后,当连接重连时,如果有存储的 Topic 列表,客户端会自动进行订阅恢复,对于测试时订阅数多或者复杂的场景,避免了每次去手动重新订阅的问题。 22 | 23 | ![mqttxautoresub.png](https://assets.emqx.com/images/dc808e9c451f84885520105cbeb58d6a.png) 24 | 25 | ### 添加 EMQX Cloud 链接 26 | 27 | 对于无法马上连接到本地或已部署好的 MQTT Broker 的做测试和调试的用户,提供了 EMQX Cloud 的链接,免费体验[云原生的全托管 MQTT 服务](https://www.emqx.com/zh/cloud)。 28 | 29 | ![mqttxcloud.png](https://assets.emqx.com/images/a2fab283b655c58a9600f82f4c6d03ba.png) 30 | 31 | ## 修复及其优化 32 | 33 | - 修复下拉框的宽度被固定的 BUG 34 | - 修复历史记录中的 Payload Type 无法恢复的问题 35 | 36 | 该项目完全开源,您可以到 [GitHub](https://github.com/emqx/MQTTX/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc) 来提交使用过程中遇到的问题,或是 Fork MQTTX 项目向我们提交修改后的 PR,我们将会及时查阅和处理。也特此感谢社区中所有用户的贡献和反馈。 37 | 38 | 如果您觉得该项目对您还有帮助,请在 GitHub 上给我们一个 Star 进行鼓励!:) 39 | -------------------------------------------------------------------------------- /zh/202105/release-notes-neuron-1-2-0.md: -------------------------------------------------------------------------------- 1 | 为解决工业领域数据接入上云过程中所面临的协议繁杂、设备异构化等问题,2020 年 9 月,[物联网边缘工业协议网关软件 Neuron](https://www.emqx.com/zh/products/neuronex) 正式发布。 2 | 3 | Neuron 提供了通过对各种工业协议转换实现的设备端数据采集、运行业务逻辑服务、警报判定,并将数据及警报上传及存储到云平台等功能,同时也可通过 Web 服务等部署和客户端应用软件,实现设备远程监控、远程维护、设备绩效管理、设备和资产管理等。 4 | 5 | Neuron 工业网关南向支持接入主流的[工业物联网](https://www.emqx.com/zh/blog/iiot-explained-examples-technologies-benefits-and-challenges)协议([驱动协议详细列表](https://assets.emqx.com/resources/white-papers/neuron-driver-list-v1.4.pdf))以及自定义协议的扩展。北向支持通过 [MQTT](https://www.emqx.com/zh/mqtt-guide)、WebSocket 和 HTTP 协议与云平台层进行交互,实现设备上云与云端控制的能力。 6 | 7 | **Neuron V1.2.0 现已正式发布**。 8 | 9 | **下载地址:** [https://www.emqx.com/zh/try?product=neuron](https://www.emqx.com/zh/try?product=neuron) 10 | 11 | 12 | 13 | ## 新增 modbus: endianness 开关功能 14 | 15 | 我们在驱动配置时,有一个 BYTEORDER(字节顺序)的选择,根据 little-endian 和 big-endian 两种排序方式,我们提供四种排序方式: 16 | 17 | | BYTEORDER选择 | 排序方式 | 18 | | :-----------: | :------: | 19 | | 0 | BE4321 | 20 | | 1 | BE3412 | 21 | | 2 | LE1234 | 22 | | 3 | LE2143 | 23 | 24 | 25 | ![WechatIMG21.png](https://assets.emqx.com/images/81cd22f65da5d636e17d084c3e7085c1.png) 26 | 27 | 28 | ## 问题修复 29 | 30 | - 修复 MQTT 获取趋势数据和获取日志问题; 31 | - 修复 MQTT 发送信息失败而导致重连失败问题; 32 | - 修复打开过多文件导致强制退出主进程问题; 33 | - 修复在 32 位系统中,超出 2038 年时间戳数据溢出问题; 34 | - 修复中文版 Linux 系统的本地语言的设置功能。 35 | 36 | 37 | 38 | ## 未来展望 39 | 40 | 作为新基建的重要组成部分,工业互联网已成为一个备受关注的热点领域。为了响应「中国制造 2025」及「工业 4.0」,越来越多的工业企业开始谋求数字化、智能化转型,工业设备上云也因此成为企业转型之路上必须面对的挑战。EMQ 于去年 10 月正式发布的云边一体化解决方案,可以实现异构设备连接及数据汇聚,完成后续边缘或云端计算,以云边协同的方式帮助领域内相关企业快速实现工业互联网架构下边缘层的功能。作为该方案重要组成部分的 Neuron,也将在未来持续为边缘工业互联网提供功能价值。 41 | 42 | 如果对 Neuron 有任何问题,请随时通过 [neuron@emqx.io](mailto:neuron@emqx.io) 联系我们。 43 | 44 | 45 |
46 |
47 | 免费试用 Neuron 48 |
49 | 开始试用 → 50 |
51 | -------------------------------------------------------------------------------- /zh/202106/emqx-security-protection-upgrade-notice.md: -------------------------------------------------------------------------------- 1 | 为了提供更加稳定可靠的产品与服务,保障广大用户的业务安全,EMQ 欧洲研发中心与全球领先的安全公司 Synopsys 达成合作协议,该公司将全面负责 EMQ 各产线产品整个生命周期中的安全和质量风险管理。 2 | 3 | 根据与 Synopsys 合作的全面安全测试结果,我们对 EMQX 产线新老版本进行了进一步安全加固与升级,以下版本均可升级防护: 4 | 5 | - v3.1.2 及之前次要版本 6 | - v3.2.7 及之前次要版本 7 | - v4.0.7 及之前次要次要版本 8 | - v4.1.4 及之前次要版本 9 | 10 | **EMQ 团队建议您按照以下操作尽快完成防护升级**,以提高您系统的安全性,确保业务顺利进行。您可在以下两种操作中任选其一: 11 | 12 | - 升级 EMQX 到最新的[次要版本](https://docs.emqx.com/zh/enterprise/latest/changes/eol-ee.html#%E7%89%88%E6%9C%AC%E7%B1%BB%E5%9E%8B),比如 4.2.4 升级到 4.2.12,3.2.5 升级到 3.2.8; 13 | - 使用 EMQX 的热更新特性进行不停机补丁修复:[下载附件](https://assets.emqx.com/data/emqx-frame-patchs.zip),附件包含升级补丁包与升级手册,根据手册指引为您生产环境下的 EMQX 打上相应版本的补丁包(注意:备份好旧文件,版本号一定要对上)。 14 | 15 | 升级过程中如有任何问题请联系 EMQX 开源社区: 16 | 17 | - Github:[https://github.com/emqx/emqx](https://github.com/emqx/emqx) 18 | 19 | - EMQ 问答社区:[https://askemq.com](https://askemq.com) 20 | 21 | 产品质量与安全是 EMQ 一直以来关注的重中之重。我们将继续加大投入,为用户创造一个安全可靠的系统环境,使每一个用户都能在 EMQX 的支持下走向成功。 22 | 23 | 24 | **EMQ 团队·杭州映云科技有限公司** 25 | 26 | 2021 年 6 月 17 日 27 | -------------------------------------------------------------------------------- /zh/202107/emqx-newsletter-202106.md: -------------------------------------------------------------------------------- 1 | 近几周以来,我们一直在努力对 EMQX 5.0 版本规划加以明确。本月里我们完成了确定范围和优先级并开始投入开发这一具有挑战性的任务。目前来看,这一版本中将要实现和交付的功能变得愈发明朗。 2 | 3 | 4 | ## v5.0-alpha.1 发布 5 | 6 | 7 | 我们已经发布了第一个 alpha 版本,希望可以更早地从社区获得反馈。以下是一些突出的新功能: 8 | 9 | ### HOCON config + HOCON schema 10 | 11 | 一直关注我们每月项目 Newsletter 和 Demo Day 的朋友应该对 HOCON 已不再陌生。HOCON 或 Human-Optimized Config Object Notation 是一种更友好的配置文件格式,是 JSON 的超集。EMQX v5.0 将使用 HOCON 格式进行配置。HOCON schema 是 EMQX 团队开发的一个库/框架,用于提供类型安全的配置验证。此外,它还会用于 HTTP API JSON 数据验证。我们相信通过统一两个管理接口(配置和 HTTP API)对用户和开发人员都有好处。 12 | 13 | ### EMQX 资源的基础设施代码 14 | 15 | 在 EMQX v5.0 中,认证数据库连接、规则引擎资源/操作等资源将可以从配置文件中部署。即便在运行时修改,例如来自 Web UI 或 HTTP API 的更新,也将保留在配置文件中。和以前将资源存储在 Mnesia 中的方式相比,这将使基础设施的部署变得更加容易。 16 | 17 | ### 可组合身份验证步骤 18 | 19 | 为了简化用户界面和实现,身份验证插件被合并到一个 Erlang 应用程序(AuthN 应用程序)中,这使得身份验证步骤可以组合为 HOCON 配置中的「链」。同步支持 EMQX v4.x 支持的所有后端仍然是一项持续的任务。目前完成的有:Mnesia、MySQL、PostgreSQL 和 JWT。 20 | 21 | ### 可组合授权步骤 22 | 23 | 为了支持可组合步骤的访问控制,ACL 或访问控制列表将包含在更通用的应用程序(AuthZ 应用程序)中。新界面(也是 HOCON 格式)类似于旧的 acl.conf,但可以扩展各种数据库后端以支持更具体的访问控制。 24 | 25 | ### MQTT-over-QUIC 26 | 27 | 自三月份以来,[QUIC](https://github.com/emqx/quic) 项目一直处在与 EMQX 主项目分离的开发中。现在它终于与 [emqx.git](https://github.com/emqx/emqx) 进行了集成。**MQTT-over-QUIC** 将作为实验性功能在 v5.0 中发布。接下来我们还将迎接很多挑战,欢迎与我们一同努力,去探索物联网 QUIC 协议的更多精彩之处。 28 | 29 | ### RLOG 30 | 31 | [RLOG](https://github.com/emqx/eip/blob/main/implemented/0004-async-mnesia-change-log-replication.md),或 Replicated (mnesia transaction) Logs,是一个旨在使 Erlang 的内置数据库 “Mnesia” 可扩展的项目。该项目的主要工作是三月起在 [ekka](https://github.com/emqx/ekka) 应用程序中开发的,目前也完成了与 [emqx.git](https://github.com/emqx/emqx) 的集成。 32 | 33 | 这一特性可以使一个 EMQX 集群得以配置两种类型的节点角色:core 和 replicant。core 节点形成传统的 Mnesia 集群,而 replicant 节点则是无状态的,并且可以轻松地扩展和缩减。 34 | 35 | ## 4.3 改进 36 | 37 | 在投入精力进行 v5.0 开发的同时,我们也仍然在积极维护 v4.3。在六月,我们发布了 v4.3.5,修复了一些插件问题。更多详细信息,可以参阅发行说明:[https://github.com/emqx/emqx/releases](https://github.com/emqx/emqx/releases)。 38 | 39 | 40 |
41 |
42 | 免费试用 EMQX Cloud 43 |
无须绑定信用卡
44 |
45 | 开始试用 → 46 |
47 | -------------------------------------------------------------------------------- /zh/202108/emqx-newsletter-202107.md: -------------------------------------------------------------------------------- 1 | 七月,EMQX 团队进入了快速迭代的开发节奏中。我们增加了一些令人兴奋的特性,并在 5.0 版本的关键功能上取得了突破性的进展。 2 | 3 | 4 | ## 全新的配置文件 5 | 6 | **我们重构了配置文件的结构。** 新的配置目录结构将仅包含一个 [HOCON](https://github.com/lightbend/config/blob/main/HOCON.md) 格式的配置文件:emqx.conf。它将囊括 emqx 相关的所有配置,包括 Broker 核心部分、各个 Applications,以及 Plugins 等的配置。依托 HOCON 配置语法的特性,我们重新设计了一个层次清晰的配置结构,这个版本的配置会更易于阅读、修改和维护。 7 | 8 | **新的配置文件将支持运行时修改。** emqx 的多数配置项将支持修改后实时生效,无需重启 emqx 服务。我们将支持通过 HTTP API 运行时修改配置项,也支持手动修改配置文件之后重新加载。通过 HTTP API 修改的配置项将存储在 data/ 目录下的 emqx_override.conf 文件中,以便重新启动 emqx 服务之后保留这些修改。运行时修改配置的功能仍在开发过程中。 9 | 10 | ![全新配置文件](https://assets.emqx.com/images/41a66271f3fdb2514c299307395c7f73.png) 11 | 12 | 13 | ## Swagger UI 14 | 15 | **我们引入了 Swagger UI 来展示和管理 HTTP API。** [Swagger UI](https://swagger.io/tools/swagger-ui/) 是一个流行的可视化和交互式的 HTTP API 文档工具。我们正在对 emqx 的 HTTP API 进行改造,使其符合 [OpenAPI](https://swagger.io/specification/) 规范。在编译 emqx 时会从源码自动生成 OpenAPI 协议描述文件,并通过 Swagger UI 做 API 文档的可视化展示。现在(emqx 5.0-alpha.3)你可以在 emqx 服务启动后,通过 [http://127.0.0.1:18083/api-docs](http://127.0.0.1:18083/api-docs) 访问这个交互式文档。 16 | 17 | ![swagger](https://assets.emqx.com/images/3247d90db25c6d1e0f108564e921aa94.png) 18 | 19 | ![api](https://assets.emqx.com/images/86fc2c0679ca3a15c3fa96359dbe4652.png) 20 | 21 | 22 | ## 全新的网关 23 | 24 | **我们重构了网关功能。** 我们新增了 Protocol Gateway 概念,把 LwM2M,CoAP,STOMP,MQTT-SN,ExProto 等 IoT 协议网关统一放到了 Protocol Gateway 中进行管理,使得各协议更加方便地接入到 EMQX Broker 中来。 25 | 26 | 新的网关架构支持对各个协议网关进行多实例化创建和管理,并统一了各个协议的配置文件格式。在代码层面上:我们新增了通用的网关连接层以增加代码复用性;重构了 MQTT-SN 网关的部分代码逻辑,使其不再跟 emqx 核心部分耦合;重构了 CoAP 网关,在实现上不再依赖于 gen_coap。 27 | 28 | 29 | ## 稳步推进认证和鉴权功能 30 | 31 | 新的认证模块增加了[增强认证](https://www.emqx.com/zh/blog/mqtt5-enhanced-authentication)、HTTP 认证、MongoDB 认证等方式,并改进了通过 HTTP API 修改认证模块配置的能力。 32 | 33 | 新的鉴权模块(ACL) 增加了 MySQL、PgSQL、MongoDB、Redis、HTTP 等鉴权方式。 34 | 35 | 36 |
37 |
38 | 免费试用 EMQX Cloud 39 |
无须绑定信用卡
40 |
41 | 开始试用 → 42 |
43 | -------------------------------------------------------------------------------- /zh/202109/emqx-newsletter-202108.md: -------------------------------------------------------------------------------- 1 | 这个 8 月,我们的开源团队正全力投入 EMQX 5.0 的功能开发之中。经过多次激烈讨论和快速迭代,EMQX 5.0 现已发布 alpha.5 版本。我们预计首个 beta 版很快就会发布。 2 | 3 | 4 | ## EMQX 5.0 管理用户界面速览 5 | 6 | EMQX 5.0 将呈现全新设计的管理 UI (用户界面)。新设计的 UI 非常注重用户体验的改进,同时兼顾 UI 的清晰度和参数化能力。 7 | 8 | 下图是 [MQTT](https://www.emqx.com/zh/mqtt-guide) 高级功能的新 UI 界面截图。 9 | 10 | ![MQTT 高级功能](https://assets.emqx.com/images/e638f39e3c4875aa19bae385f0536b50.png) 11 | 12 | 新 UI 将使[主题重写](https://www.emqx.com/zh/blog/rewriting-emqx-mqtt5-topic)、自动订阅、延迟发布和事件消息的管理变得轻而易举。 13 | 14 | 15 | 16 | ## 动态重新配置 EMQX 17 | 18 | ![Swagger UI](https://assets.emqx.com/images/0a952d8445d3cc4a59d0949d67e2b011.png) 19 | 20 | 在之前的 Newsletter 中我们提到,EMQX 5.0 使用 Open API 3.0 来管理 API。如果您访问 https://:18083/api-docs,浏览器将带您进入 Swagger UI,您可以直接从 GUI(图形用户界面)尝试 API 调用,并查看 API 的详细文档。 21 | 22 | 我们在 8 月份添加了一个新的框架,它允许 EMQX 用户动态地重新配置集群。对于大多数配置更改,无需重新启动消息服务器即可使配置更改生效。 23 | 24 | 25 | 26 | ## Cluster Call 实现配置一致性 27 | 28 | 我们刚才介绍了动态配置更新和重新加载,那么如何确保更改应用于集群中的所有节点呢?为此我们实现了「Cluster Call 」功能。 29 | 30 | 在此之前我们一直在 EMQX 中使用 Erlang 的 Multi-call 功能将更改复制到集群中的所有节点。这种方式使用起来很简单,并且在大多数网络场景中都可以正常工作。但是,在回滚或故障处理方面存在不足。 31 | 32 | 「Cluster Call 」功能允许我们以异步方式复制更改,最终将在集群中的所有节点上应用相同的更改。 33 | 34 | ## 配置文档生成 35 | 36 | 在 EMQX 5.0 中,源代码将成为 API 和配置文档的唯一真实来源。借助于 [HOCON 模式功能](https://github.com/emqx/hocon/blob/master/SCHEMA.md),使代码和文档保持同步将非常轻松。下面是监听器配置文档的示例。 37 | 38 | ![监听器配置文档示例](https://assets.emqx.com/images/8e3946d74c74a232d0a06afab61800c9.png) 39 | 40 | 图中是 QUIC 监听器生成的配置文件,正如我们在之前的更新中提到的:EMQX 现在已经有了一个基于 [QUIC](https://datatracker.ietf.org/doc/rfc9000/) 传输的 MQTT PoC 实现。 41 | 42 | 43 | ## RLog 现命名为 Mria 44 | 45 | 我们之前将异步 Mnesia 数据库复制项目命名为 RLog(即 Replicated Mnesia transaction Log),其作为 [ekka](https://github.com/emqx/ekka) 库的一部分来实施。 46 | 47 | 我们相信这个项目将使 Erlang/Elixir 社区受益,因此我们决定将其转移至其自身的存储库:[mria](https://github.com/emqx/mria)。 48 | 49 | 项目名称「mria」源自于世界上最大的飞机 [AN-225 MRIA](https://englishrussia.com/2011/03/17/an-225-mria-the-biggest-aircraft-in-the-world/),同时也和它的源数据库 Mnesia 有相同的「-ia」后缀。 50 | 51 | 52 | 53 |
54 |
55 | 免费试用 EMQX Cloud 56 |
全托管的云原生 MQTT 消息服务
57 |
58 | 开始试用 → 59 |
60 | -------------------------------------------------------------------------------- /zh/202109/neuron-1-3-2-release-notes.md: -------------------------------------------------------------------------------- 1 | 近日,**物联网边缘工业协议网关软件 Neuron v1.3.2 正式发布**。 2 | 3 | Neuron 可接入各种工业协议并进行转换,可实现数据采集、运行业务逻辑服务、警报判定,并将数据及警报上传及存储到云平台等功能。支持一站式平台网关配置管理,所有配置、规则、标签都统一管理在云端平台,并通过 Web 服务等部署和客户端应用软件,可实现设备远程监控、远程维护、设备绩效管理、设备和资产管理等功能。 4 | 5 | **最新版本下载地址:** 6 | 7 | [https://www.emqx.com/zh/try?product=neuron](https://www.emqx.com/zh/try?product=neuron) 8 | 9 | 10 | 11 | ## 产品 logo 正式启用 12 | 13 | 从 v1.3.2 起,Neuron 正式拥有了专属的产品 logo,在登陆界面及用户界面左上角均有展现。这一 logo 设计简洁,两个上下箭头状的图标代表了北向和南向数据流,而 Neuron 则接通南北向数据,为工业场景提供通畅的数据通路。 14 | 15 | ![Neuron-Logo](https://assets.emqx.com/images/acae68ba4be1727662893e60b82fe3fa.png) 16 | 17 | ![Neuron后台登陆界面](https://assets.emqx.com/images/39c8b52c6e59ac6cb07e3b39f05759a9.png) 18 | 19 | ## 用户界面换上新装 20 | 21 | 在这一版本中,我们对 Neuron 的用户界面进行了更新升级。新的界面采用白色为主要底色,使各项信息及数字更加清晰易见,给人耳目一新的感觉。 22 | 23 | ![Neuron用户界面](https://assets.emqx.com/images/b01aa32d49f0582f6f7523219bc8c175.png) 24 | 25 | ## 与管理控制台协同 26 | 27 | 目前,Neuron v1.3.2 已经与 EMQ 在云端的管理控制台应用高度协同。用户可以通过该控制台直接控制 Neuron ,并且可通过调用 Neuron 的 API 进行配置及监控。 28 | 29 | ## 问题修复与功能升级 30 | 31 | - 优化了原有代码结构,高并发调用 HTTP API 时不再导致 web 服务内存竞争; 32 | 33 | - 界面上不再限制 object size 的大小; 34 | 35 | ![不限制object size](https://assets.emqx.com/images/4aad83c64099ab931bfef6e748653f81.png) 36 | 37 | - 界面上增加 read time 的单位标注,单位为 100ms。 38 | 39 | ![read time单位标注](https://assets.emqx.com/images/a6e23755e1ade19585436745d9cdd737.png) 40 | 41 | ## 联系 42 | 43 | 如果对 Neuron 有任何问题,请随时通过 [neuron@emqx.io](mailto:neuron@emqx.io) 与我们联系。 44 | 45 | 46 |
47 |
48 | 免费试用 Neuron 49 |
50 | 开始试用 → 51 |
52 | -------------------------------------------------------------------------------- /zh/202110/emqx-newsletter-202109.md: -------------------------------------------------------------------------------- 1 | 九月里,EMQX 团队收获颇丰。 2 | 3 | EMQX 获得了来自海外知名 IIoT 社区 4.0 Solutions 的赞誉,被称为「目前为止市场上最好的企业级 MQTT 消息中间件」,团队成员也受邀参与了社区交流活动。来自社区的肯定转化为项目推进的动力——v5.0 的首个 beta 版迎来了正式发布,又为用户带来了一些振奋人心的新功能。 4 | 5 | 撒下种子,总有收获的一天。 6 | 7 | ## 感受来自 IIoT 社区的热情 8 | 9 | 9 月初,受 IIoT 社区 4.0 Solutions 的邀请,EMQX 团队的技术专家参与了其举办的线上直播活动,向在线用户展示了 EMQ 的先进技术与产品。 10 | 11 | 4.0 Solutions 社区专注于通过大数据、云平台、人工智能 (AI) 和[工业物联网](https://www.emqx.com/zh/blog/iiot-explained-examples-technologies-benefits-and-challenges) (IIoT) 等技术帮助企业实现数字化工厂。打造工业物联网的核心是通过 MQTT 消息服务器(集群)连接海量设备,而 EMQX 则正是这一宏伟蓝图中的完美选择,也因此受到了 4.0 Solutions 社区的高度认可。 12 | 13 | 能够深入 IIoT 社区与成员们交流让我们感到十分荣幸。在一个小时的活动中,我们就有关 EMQ 公司及产品的许多迫切问题进行了一一解答。 14 | 15 | ![IIoT 社区](https://assets.emqx.com/images/b709690f73732fa72e5038a0ba7a4460.png) 16 | 17 | 视频回放链接:[https://www.youtube.com/watch?v=nP7JAlpyvfo](https://www.youtube.com/watch?v=nP7JAlpyvfo) 18 | 19 | ## EMQX v5.0-beta.1 正式发布 20 | 21 | 在九月,我们非常激动和自豪地宣布了 EMQX 5.0 版的首次预发布。 22 | 23 | 在这一版本中主要**新增了以下功能**: 24 | 25 | - 统一认证、授权和网关管理 26 | - 统一的数据桥接和规则引擎功能 27 | - 新的配置管理(HOCON) 28 | - 异步数据库复制 (Mria) ,使集群更具扩展性 29 | - MQTT over QUIC:一个前沿研究项目 30 | 31 | 详细信息请查看发布说明。新功能已经公开,用户可以进行体验和评估。 32 | 33 | 更多 beta 版本推出在即,我们热切欢迎和期待每一个用户充分表达自己的期望或需求,你的意见或将成为影响 EMQX 未来发展的关键要素。 34 | 35 | ## 更多期待的 beta.2 36 | 37 | 在 beta.2 版本中,我们的工作重点是将仪表板(此功能在 beta.1 中进行了隐藏)在前台呈现,此外很多涉及少量 UI 更改的功能也将有所调整。 38 | 39 | ### 过载保护 40 | 41 | 在高负载下,一个理想的稳健系统应该能够在侦测到过载后开始向输入方增加反向压力,而不是降低服务质量甚至崩溃宕机。有了过载保护功能,相较于设置连接总数等硬性限制,EMQX 可以更好地实现自我保护,离「理想的稳健系统」更近了一步。 42 | 43 | ### 插件直接安装 44 | 45 | EMQX 是高度可扩展的。 46 | 47 | 正如我们之前在博客中介绍过的那样,插件可以实现独立安装。从 5.0 版开始,EMQX 开源用户将能够通过直接安装扩展包升级到企业版。 48 | 49 | 50 |
51 |
52 | 免费试用 EMQX Cloud 53 |
无须绑定信用卡
54 |
55 | 开始试用 → 56 |
57 | -------------------------------------------------------------------------------- /zh/202110/hstreamdb-newsletter-202110.md: -------------------------------------------------------------------------------- 1 | [HStreamDB](https://hstream.io/zh) 是首个专为流数据设计的「流原生数据库」,支持高效存储和管理大规模流数据,以及在动态变化的数据流上进行复杂的实时分析,旨在对大规模数据流的接入、存储、处理、分发等环节进行全生命周期管理,非常适合应用于 IoT、互联网、金融等领域的数据管理和实时分析场景。 2 | 3 | 继七月末 v0.5 发布后,HStreamDB 团队一直在专注于下一版本的研发工作。本月里,我们针对易用性和 HStream Server 扩展能力的提升方面为 v0.6 版本规划了诸多新特性。该版本预计将于下周发布。 4 | 5 | ## 新增 HServer 集群支持 6 | 7 | 作为一款[云原生分布式流数据库](https://hstream.io/zh),HStreamDB 从设计之初就采用了计算和存储分离的架构,目标是支持计算层和存储层的独立水平扩展。在 HStreamDB 之前的版本中,存储层 HStore 已经具备了水平扩展的能力。在即将发布的 v0.6 版本中,计算层 HServer 也将支持集群模式,从而可以实现随客户端请求和计算任务的规模对计算层的 HServer 节点进行扩展。 8 | 9 | HStreamDB 的计算节点 HServer 整体上被设计成无状态的,因此非常适合进行快速的水平扩展。v0.6 的 HServer 集群模式主要包含以下特性: 10 | 11 | - 自动节点健康检测和失败恢复 12 | - 按照节点负载情况对客户端请求或者计算任务进行调度和均衡 13 | - 支持节点的动态加入和退出 14 | 15 | ## 新增共享订阅功能 16 | 17 | 在之前的版本中,一个 Subscription 同时只允许一个客户端进行消费,这在较大数据量的场景下限制了客户端的消费能力。因此,为了支持扩展客户端的消费能力,v0.6 版本新增了共享订阅功能,它允许多个客户端在一个订阅上并行消费。 18 | 19 | 同一个订阅里包含的所有的消费者组成一个消费者组(Consumer Group),HServer 会通过 round-robin 的方式向消费者组中的多个消费者派发数据。消费者组中的成员支持随时动态变更,客户端可以在任何时候加入或退出当前的消费者组。 20 | 21 | HStreamDB 目前支持 at least once 的消费语义,每条数据在客户端消费完之后需要回复 Ack,如果超时未接收到某条数据的 Ack,HServer 会自动重新向可用的消费者投递该条数据。 22 | 23 | 同一个消费者组中的成员共享消费进度,HStream 会根据客户端 Ack 的情况维护消费进度,客户端任何时候都可以从上一次的位置恢复消费。 24 | 25 | 需要注意的是,v0.6 的共享订阅模式下不保持数据的顺序,后续共享订阅将支持按 key 派发的模式,可以支持相同 key 的数据有序交付。 26 | 27 | ## 新增统计功能 28 | 29 | v0.6 还增加了基本的数据统计功能,支持对诸如 stream 的写入速率,消费速率等关键指标进行统计。用户可以通过 HStream CLI 来查看相应的统计指标,如下图所示。 30 | 31 | ![HStream CLI 统计功能](https://assets.emqx.com/images/d4dd69dd47f47163f028154245833913.png) 32 | 33 | ## 新增数据写入 Rest API 34 | 35 | v0.6 版本增加了向 HStreamDB 写入数据的 Rest API,通过此 API 并结合 EMQX 开源版的 web hook 功能,可以实现 EMQX 和 HStreamDB 的快速集成。 36 | 37 | ## HStreamDB Java SDK 更新 38 | 39 | HStreamDB-Java 是目前主要支持的 HStreamDB 客户端(后续将会有更多语言的客户端支持),用户主要通过该客户端来使用 HStreamDB 的大多数功能。 40 | 41 | 即将发布的 HStreamDB Java SDK v0.6 主要包含以下特性: 42 | 43 | - 新增对 HStreamDB 集群的支持 44 | - 新增对[共享订阅](https://www.emqx.com/zh/blog/introduction-to-mqtt5-protocol-shared-subscription)的支持 45 | - 重构部分 API 46 | - 修复了一些已知的问题 47 | -------------------------------------------------------------------------------- /zh/202110/mqttx-v-1-6-1-release-notes.md: -------------------------------------------------------------------------------- 1 | [MQTTX](https://mqttx.app/zh) 是由全球领先的 **开源物联网中间件** 提供商 [EMQ](https://www.emqx.com/zh) 开源的一款跨平台 [MQTT 5.0](https://www.emqx.com/zh/blog/introduction-to-mqtt-5) 桌面测试客户端,它支持 macOS,Linux,Windows。MQTTX 的用户界面借助聊天软件的形式简化了页面的操作逻辑,用户可以快速创建多个同时在线的 **MQTT 客户端**,方便测试 MQTT/TCP、MQTT/TLS、MQTT/WebSocket 的连接/发布/订阅功能及其他 **MQTT 协议** 特性。 2 | 3 | MQTTX 网站:[https://mqttx.app/zh](https://mqttx.app/zh) 4 | 5 | MQTTX v1.6.1 版本下载:[https://github.com/emqx/MQTTX/releases/tag/v1.6.1](https://github.com/emqx/MQTTX/releases/tag/v1.6.1) 6 | 7 | Mac 用户可在 App Store 中进行下载:[https://apps.apple.com/cn/app/mqttx/id1514074565?mt=12](https://apps.apple.com/cn/app/mqttx/id1514074565?mt=12) 8 | 9 | Linux 用户可在 Snapcraft 中进行下载:[https://snapcraft.io/mqttx](https://snapcraft.io/mqttx) 10 | 11 | ![mqttx-preview](https://assets.emqx.com/images/9c1ad0d3e678954b67dce923087c7a7a.png) 12 | 13 | > **注意:** 该版本包含破坏性改动!我们重构了底层数据存储结构,升级后将没有原来的数据,请提前备份好重要数据。(可以在设置页面中导出需要数据,在新版本中进行导入)。这是一个重构版本,没有更多的新功能,有问题可以到 [issue](https://github.com/emqx/MQTTX/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc) 区进行讨论。感谢你的帮助和支持。 14 | 15 | 16 | ## 新功能概览 17 | 18 | - 支持在消息框内显示[保留消息](https://www.emqx.com/zh/blog/message-retention-and-message-expiration-interval-of-emqx-mqtt5-broker)的标识 19 | 20 | ## 修复及其优化 21 | 22 | - 优化连接页面的加载样式 23 | - 提高消息列表的显示性能(~10倍) 24 | - 重构数据存储结构 25 | - 修复数据库崩溃问题,在之前的版本中经常数据写入错误后,数据库崩溃导致无法打开软件的问题 26 | - 修复历史消息记录问题 27 | - 修复重新打开客户端时的数据格式转换错误 28 | 29 | 该项目完全开源,您可以到 [GitHub](https://github.com/emqx/MQTTX/issues?q=is%3Aissue+is%3Aopen+sort%3Aupdated-desc) 来提交使用过程中遇到的问题,或是 Fork MQTTX 项目向我们提交修改后的 PR,我们将会及时查阅和处理。也特此感谢社区中所有用户的贡献和反馈。 30 | 31 | 如果您觉得该项目对您还有帮助,请在 GitHub 上给我们一个 Star 进行鼓励!:) 32 | -------------------------------------------------------------------------------- /zh/202110/nanomq-newsletter-202110.md: -------------------------------------------------------------------------------- 1 | 自 [NanoMQ](https://www.emqx.com/zh/products/nanomq) 首个版本发布已有近一年时间,这个十月,我们正式发布了项目首个稳定版本 v0.5.0。从该版本开始,NanoMQ 除了完整支持 [MQTT](https://www.emqx.com/zh/mqtt-guide) 3.1.1 协议外,还将支持 [MQTT Over WebSocket](https://www.emqx.com/zh/blog/connect-to-mqtt-broker-with-websocket)。用户也可以通过配置文件或命令行参数修改 NanoMQ 的启动调优选项。此外还增加了内置的 HTTP 服务器,未来将提供更丰富的 HTTP APIs。 2 | 3 | 接下来我们主要致力于 NanoMQ/NNG 的 [MQTT SDK](https://www.emqx.com/zh/mqtt-client-sdk) 支持和桥接功能开发,此功能预计在 0.6.0 版本中提供。敬请期待。 4 | 5 | 6 | ## 启动调优选项修改 7 | 8 | NanoMQ 自发布之始就具有高兼容性和易移植性等特点,但在 0.4.0 版本之前需要用户根据自有平台的硬件配置在编译阶段选择优化参数进行调优。0.5.0 版本进一步优化了两种配置方式的使用体验。调优指南和主要支持的配置参数如下(以配置文件为例): 9 | 10 | ``` 11 | num_taskq_thread=4 12 | max_taskq_thread=4 13 | ``` 14 | 15 | 据系统的 CPU 线程数来确定初始/最大 taskq 线程数量,默认为 4。此配置决定了 NanoMQ 的性能和 CPU 利用率,建议和 CPU 最大线程数保持一致。 16 | 17 | ``` 18 | parallel=32 19 | ``` 20 | 21 | 为系统最大并行的逻辑线程数,根据系统实际压力设置为宜,影响消息时延和内存使用。建议为 CPU 线程数 2 倍。 22 | 23 | ``` 24 | msq_len=64 25 | ``` 26 | 27 | 为内置每个客户端的消息队列缓存的初始长度,NanoMQ 支持消息队列自动伸缩,建议根据系统内存大小设置为 2 的幂数,低于 128Mb 内存的设备建议固定为 1024。 28 | 29 | ``` 30 | qos_duration=60 31 | ``` 32 | 33 | 为 NanoMQ 服务内置全局定时器的颗粒度,这一选项影响对于连接健康度检测的最小时间差。如果有大量客户端并发的情况,会些许消耗 CPU,建议设置为 MQTT 连接的 keepalive 时间一致。 34 | 35 | ``` 36 | allow_anonymous=yes 是否允许匿名登录 37 | daemon=no 是否以守护进程启动 38 | ``` 39 | 40 | ## Websocket 服务 41 | 42 | MQTT Over Websocket 一直是 MQTT 的一个主要使用领域,特别在前端和小程序开发有广泛应用。现在 NanoMQ 可以通过以下配置选项: 43 | 44 | ``` 45 | websocket.enable=yes 46 | websocket.url=ws://0.0.0.0:8083/mqtt 47 | ``` 48 | 49 | 来开启 Websokcet 端口。目前 Websocket 端口支持完整 MQTT 3.1.1协议。 50 | 51 | 52 | ## HTTP 服务 53 | 54 | 作为一款 [边缘端 MQTT 消息服务器](https://nanomq.io/zh),NanoMQ 也致力于提供易用的 HTTP APIs 给用户。目前 HTTP 服务还只支持获取所有订阅主题列表一个功能,之后我们会尽快完善相关的统计功能。 55 | 56 | ``` 57 | http_server.enable=yes 58 | http_server.username=admin 59 | http_server.password=public 60 | ``` 61 | 62 | 63 | ## 社区 Issue 和 bug 修复 64 | 65 | 0.5.0 版本还修复了社区提交的几个重要安全相关漏洞。NanoMQ 团队将继续倾听用户的声音,为社区和行业交付稳定、强大和安全的边缘 MQTT 消息服务和消息总线。 66 | 67 | 68 |
69 |
70 | 免费试用 NanoMQ 71 |
72 | 开始试用 → 73 |
74 | -------------------------------------------------------------------------------- /zh/202110/neuron-newsletter-202110.md: -------------------------------------------------------------------------------- 1 | 本月,我们的精力主要投入在 Neuron 2.0 版本的开发工作中,希望以最快的速度完成并发布 Neuron 2.0-alpha 版。 2 | 3 | 4 | ## Neuron 2.0 进展与规划 5 | 6 | ### 功能运行基本完成 7 | 8 | 目前我们已基本完成了 2.0 版本较完整功能的运行,并开发了配套的 Web UI 来配置 Neuron,查看 Neuron 的连接状态、读写和监听设备数据。现在已经可以同时连接 OPC UA 和 [Modbus](https://www.emqx.com/zh/blog/modbus-protocol-the-grandfather-of-iot-communication) 的设备,并读写其数据。 9 | 10 | ### 聚焦数据采集、聚合与转发 11 | 12 | 根据用户对 Neuron 1.x 的使用反馈,我们对新版本 Neuron 的产品规划进行了大幅调整,对部分功能进行了精简,专注聚焦于工业协议的数据采集、聚合和转发。 13 | 14 | 另外,Neuron 2.0 将支持同时连接多个相同协议和不同协议的设备,不必再像 Neuron 1.x 中那样启动多个 Neuron 进程来连接多个设备。 15 | 16 | 其他主要新特性如下: 17 | 18 | - 插件化的南向设备驱动和北向应用 19 | - 和 EMQ 其他产品高度融合,包括 eKuiper、EMQX、Fabric 等 20 | - 极少的内存占用 21 | - 支持运行期更新设备驱动 22 | 23 | ## Neuron 1.x 当前状态 24 | 25 | 目前,Neuron 的最新版本是 v1.3.3,我们将会在下个月发布 v1.3.4 版本。主要对数据 Log 大小的维护功能进行修复,避免 Log 因时间增加变得过大,影响系统运作。 26 | 27 | 28 |
29 |
30 | 免费试用 Neuron 31 |
32 | 开始试用 → 33 |
34 | -------------------------------------------------------------------------------- /zh/202111/hstreamdb-newsletter-202111.md: -------------------------------------------------------------------------------- 1 | [云原生分布式流数据库 HStreamDB](https://hstream.io/zh) 本月正式发布了 v0.6。之后,HStreamDB 团队又继续投入到了 v0.7 的开发工作中。v0.7 将引入透明分区等重要功能,提高 HStreamDB 集群的稳定性,并对核心的数据存储和消费能力进行完善和扩展。 2 | 3 | ## v0.6 正式发布 4 | 5 | HStreamDB v0.6 新增了很多实用的新特性和功能,包括 HServer 集群模式、共享订阅、HStream Metrics 以及 REST API 等,详情请查看[《HStreamDB v0.6 正式发布:水平扩展性、数据分发实时性提升,新功能带来新可能》](https://www.emqx.com/zh/blog/hstreamdb-v-0-6-release-notes)。 6 | 7 | ## v0.7 稳步推进 8 | 9 | 在 v0.7 我们将着眼于提高 HStreamDB 集群的稳定性,并对核心的数据存储和消费能力进行完善和扩展。以下是当前的主要进展: 10 | 11 | ### 透明分区功能设计与原型开发 12 | 13 | HStreamDB 目前已经支持存储和管理大规模的数据流(stream),为了进一步提升单个 stream 的扩展能力和读写性能,v0.7 即将引入透明分区的功能:一个 stream 内部将包含多个分区,读写流量将通过分区在集群中实现负载均衡,可以支持单个 stream 的更高吞吐。同时分区对于用户来说是完全透明的,用户无需提前指定分区数量和分区逻辑,也不用担心分区的增加和减少带来的数据重分配以及数据顺序等一系列困扰。我们相信 stream 本身是足够简洁和有力的抽象,分区只是实现的细节,不应该暴露给用户。 14 | 15 | 目前透明分区已经完成基本的功能设计,由于该功能对内部的实现影响较大,我们将首先通过一个原型系统进行功能验证和实现探索,目前正处在原型开发阶段。 16 | 17 | ### 支持 docker-compose 18 | 19 | HStreamDB 本身是一个包含多组件的分布式系统,部署和使用相对比较复杂。为了方便用户在本地环境快速上手和体验,我们对之前基于 docker 的启动方式进行了改善,现在支持通过 docker compose 一键启动,也支持本地启动一个多节点的 HStreamDB 集群,具体介绍可参考[HStreamDB 文档](https://hstream.io/docs/en/latest/start/quickstart-with-docker.html#start-hstreamdb-server-and-store)。 20 | 21 | ### Jepsen 测试 22 | 23 | 我们正在尝试使用 Jepsen 框架测试 HStreamDB 集群的功能和稳定性。Jepsen 是由 Kyle Kingsbury 用 Clojure 编写的验证分布式系统一致性的测试框架,许多知名的数据库产品都通过该框架发现过问题,包括:Elasticsearch,Cassandra 等,目前也有越来越多的分布式系统通过它来测试和验证自身的功能和容错能力。 24 | 25 | 当前我们已经成功将该框架应用于 HStreamDB,进行了一些基本的测试,并发现了几个小问题。后续将结合 HStreamDB 的数据一致性模型,在 Jepsen 中实现专门的 checker 来测试相关功能,并基于 Jepsen 提供的错误注入能力,进行更丰富的测试。 26 | 27 | ### 基于 grpc-gateway 的 REST API 28 | 29 | HStreamDB Server 与客户端的通信协议和接口是基于 gRPC 的,虽然 gRPC 在开发和性能上都有很大优势,但在比如浏览器以及三方生态集成等场景下还是需要通过 REST API 来支持。为此 v0.6 我们基于 Haskell 的 servant 框架实现了部分 REST API,这带来的主要问题是我们需要同时维护这两套接口,代价较高,而且不能总是保证这两套接口的行为是一致的。为了解决这些问题,我们通过调研决定采用 gRPC-Gateway 来替换当前独立的 REST API 实现。 30 | 31 | gRPC-Gateway 能够基于底层的 grpc 实现自动生成一层 REST 的代理服务,这样我们就只需维护一套 grpc 的实现,并且始终能够保证行为的一致性,代价是会损失一部分性能,不过这对于 REST API 应用的大部分场景来说都不是问题。当前我们已经基本完成了 servant 到 gRPC-Gateway 的迁移工作。 32 | -------------------------------------------------------------------------------- /zh/202112/ekuiper-newsletter-202111.md: -------------------------------------------------------------------------------- 1 | LF Edge eKuiper(以下简称 eKuiper)是由 EMQ 发起的 Go 语言实现的轻量级物联网边缘分析、流式处理开源软件项目,现已捐赠给 LF Edge 基金会。[eKuiper](https://github.com/lf-edge/ekuiper) 可以运行在各类物联网的边缘使用场景中进行数据的实时分析。通过 eKuiper 在边缘端的处理,可以提升系统响应速度与安全性,节省网络带宽费用和存储成本。 2 | 3 | 本月,eKuiper 团队聚焦于 v1.4.0 版本的开发,力争在 12 月初正式发布该版本。v1.4.0 是 major 版本,添加了大量新功能,提升了运行性能和开发效率。目前的开发进展顺利,新功能已基本开发完成,接下来的几周将进行测试、UI 等收尾工作。 4 | 5 | 以下功能在上月底发布的 1.4.0-beta.1 中已经可以使用,欢迎大家使用并提出宝贵意见。 6 | 7 | ## 规则流水线:灵活构建复杂业务 8 | 9 | eKuiper 使用 SQL 定义业务逻辑,降低了业务开发的门槛。在实际使用场景中,简单的 SQL 语句可以高效地定义过滤、聚合和数据转换等业务需求。然而对于一些较为复杂的场景,单条 SQL 语句难以定义;即使可以定义,SQL 语句自身也会显得过于复杂,后续难以维护。 10 | 11 | 规则流水线基于新增的内存 source 和 sink,可以简单高效且灵活地连接多条 SQL 规则,从而在实现复杂的业务场景的同时,保持 SQL 语句的可读性和可维护性。规则直接连接采用类似 [MQTT 主题](https://www.emqx.com/zh/blog/advanced-features-of-mqtt-topics)的机制,并支持通配符订阅,实现了异常灵活且高效的规则连接。在提高业务表达能力的同时,规则流水线也可提高某些复杂场景下的运行性能。例如,多个规则都需要处理经过某个条件过滤后的数据。通过把该过滤条件提取成前置规则,可以使过滤仅计算一次,规则多的情况下可大大减少计算量。 12 | 13 | ## Portable 插件:让扩展更容易 14 | 15 | eKuiper 在最初的版本中就支持了基于 Go 原生插件系统的扩展方案,支持对 source、sink 和 function (UDF) 进行个性化扩展。然而,由于 Go 语言插件系统自身的限制,插件的编写和使用对于熟悉 Go 语言的用户都不容易,遑论其他语言的使用者。eKuiper 社区中也收到了大量用户关于插件开发、 运行和部署等的反馈,各种运行问题不一而足。 16 | 17 | 为了平衡开发效率和运行效率,v1.4.0 版本将增加新的 Portable 插件系统,从而降低插件开发使用门槛。新的 Portable 插件基于nng协议进行进程间通信,支持多种语言,当前提供 go 和 python SDK,后续版本可根据用户需求增加更多语言 SDK;简化编译/部署流程,与运行各种语言编写的程序一样,而无需额外限制。由于运行机制不同,Portable 插件崩溃将不会影响 eKuiper 自身。 18 | 19 | 原有插件系统 Native 插件与 Portable 插件可以共存。用户可根据自身需求,选用插件实现方式或混合使用。 20 | 21 | ## 共享连接:同类 Source/Sink 复用连接 22 | 23 | eKuiper 中提供了丰富的 source 和 sink 来接入和发送结果的到外部系统中。其中,很多 source 和 sink 都是同一种外部系统类型的输入输出对。例如,mqtt 和 edgeX 都有对应的 source 和 sink。新的版本中,用户可在 connection.yaml 文件中做所有连接相关配置;在 source/sink 的配置中,可以指定使用的连接而无需重复配置。共享连接实例,可减少多个连接的额外消耗。在部分场景中用户连接外部系统的数量和端口可能有限制,使用共享连接可满足此限制。同时,基于共享连接, eKuiper 可支持连接 edgeX 安全数据总线。 24 | 25 | ## 其他提升 26 | 27 | - 支持通过环境变量进行配置 28 | - eKuiper 默认采用嵌入式数据库 sqlite 存储流和规则等元数据,从而可实现运行时无外部依赖。在新版本中,用户可选择 redis 作为元数据存储方案 29 | - 规则状态返回错误原因 30 | - 优化 SQL 运行时 31 | 32 | ## 即将发布的功能 33 | 34 | - sink 动态参数支持,例如 mqtt sink 可设置主题为结果中的某个字段值,从而实现根据收到的数据发送到动态主题的功能 35 | - 认证支持:用户可配置 REST API 的基于 JWT 的认证 36 | - UI 适配 37 | -------------------------------------------------------------------------------- /zh/202112/ekuiper-newsletter-202112.md: -------------------------------------------------------------------------------- 1 | 本月,eKuiper 团队正式发布了 v1.4.0 版本,同时开始 fixpack 版本 v1.4.1 的开发,并进行了下一年度产品路线图的规划。 2 | 3 | ## eKuiper v1.4.0 正式发布 4 | 5 | [eKuiper v1.4.0 版本于本月初正式发布](https://www.emqx.com/zh/blog/ekuiper-newsletter-202111),该版本新增了规则流水线功能以及 Portable 插件支持,这让 eKuiper 的运行性能和开发效率得到了提升。 6 | 7 | 除了在 beta 版本中已提供的功能之外,正式版还添加了以下功能: 8 | 9 | - sink 动态参数支持:部分参数支持以动态的数据值作为参数值而非固定的值。例如在 mqtt sink 中,topic 参数可设置为某一列的值,从而实现将结果发送到多个不同 topic 的功能。 10 | - 认证支持:用户可配置基于 JWT 的认证。使用 Fabric 管理 eKuiper 时,认证功能将自动启用,并自动生成和管理证书从而自动完成 SSO 。 11 | - UI 适配:添加 portable 插件管理和共享连接配置的管理界面。 12 | 13 | 在 12 月 21 日的 EMQ Demo Day 中,eKuiper 团队展示了 v1.4.0 的主要新功能。 14 | 15 | 视频回放: 16 | 17 |
18 | 19 |
20 | 21 | ## eKuiper v1.4.1 进展 22 | 23 | eKuiper v1.4.1 版本将致力于提高产品稳定性及性能。目前,该版本开发已接近尾声,预计在本月底或下月初发布。 24 | 25 | 该版本修复了一些问题,包括 UI 的进一步优化、portable 插件运行时稳定性的问题、共享源 metric 不准确的问题以及 rest sink 的证书配置问题。同时,我们与用户进行了性能优化的合作开发,在用户场景中进行性能测试和优化,使得运行时 CPU 占用继续下降。特别是在规则中处理超多点位(几千个 case 计算且数据点位几万级别)且大量使用别名的场景中,CPU 占用可以大幅度减少,在该用户的场景中减少了 90% 以上。 26 | 27 | ## 2022 路线图规划 28 | 29 | 本月,eKuiper 团队完成了 2022 路线图规划,并公布在官方 Github:[https://github.com/lf-edge/ekuiper/projects/18](https://github.com/lf-edge/ekuiper/projects/18)。 30 | 31 | 未来我们将开发包括分布式集群模式、与 [Neuron](https://www.emqx.com/zh/products/neuronex) 整合互通、动态更新表等新功能。我们也欢迎大家在 GitHub 上与我们交流互动,提出需求,与我们共同打造更加强大的 eKuiper。 32 | -------------------------------------------------------------------------------- /zh/202112/emqx-kubernetes-operator-v-1-0-officially-released.md: -------------------------------------------------------------------------------- 1 | EMQX 始终致力于为全球客户提供高可靠、高性能的实时数据移动、处理能力。通过 EMQX,无论是公有云还是私有云环境,用户都可以快速构建关键 IoT 应用。 2 | 3 | 作为 EMQX 全面拥抱云原生的一项重要进展,EMQX Kubernetes Operator v1.0 于近日正式发布,将帮助广大用户更方便、快捷、安全地基于 Kubernetes 平台对 EMQX 集群进行生命周期管理。 4 | 5 | 项目地址:[https://github.com/emqx/emqx-operator](https://github.com/emqx/emqx-operator) 6 | 7 | ## 什么是 EMQX Kubernetes Operator? 8 | 9 | EMQX Kubernetes Operator 是一种封装、部署和管理 EMQX 的方法,也是一个特定的应用控制器,允许 DevOps 人员在 Kubernetes 上编排 EMQX 集群,管理他们的生命周期。 10 | 11 | ![EMQX Kubernetes Operator](https://assets.emqx.com/images/33ce831314e38062f253b83b766b5c80.png) 12 | 13 | ## 为什么需要 EMQX Kubernetes Operator? 14 | 15 | EMQX Kubernetes Operator 可以帮助用户在 Kubernetes 的环境上快速创建和管理 EMQX 集群,不仅极大简化部署和管理流程,也降低了管理和配置的专业技能要求。EMQX Kubernetes Operator 将使部署和管理工作变成一种低成本、标准化、可重复性的能力,高效实现集群扩容、无缝升级、故障处理和统一监控。 16 | 17 | ### 快捷部署 18 | 19 | 通过 Helm 或者 Manifest 文件,无需考虑底层存储和 LB,使用默认配置就可以在 Kubernetes 上快速部署一个 EMQX 集群,轻松体验 MQTT 服务。 20 | 21 | 同时提供可配置的 EMQX Custom Resource,供您定制满足业务需求和适配您的 Kubernetes 平台的 EMQX 集群。 22 | 23 | 目前 EMQX Kubernetes Operator 已经完成对阿里云 ACK、AWS EKS 的优化,可实现无缝对接上述 Kubernetes 平台的网络和共享存储资源。其他平台优化也在持续进行中。 24 | 25 | ### 高效运维 26 | 27 | 使用 EMQX Kubernetes Operator,您可以在不中断业务的情况下实现 EMQX 集群扩展、安全升级、配置更新,承载更多设备和更复杂的业务,而现有业务本身不会受到任何影响。 28 | 29 | > Kubernetes 版本需为 1.20.0 或以上 30 | 31 | ### 统一监控 32 | 33 | EMQX Kubernetes Operator 会采集 EMQX 集群运行的关键指标,对集群运行状态进行实时监控。同时支持与 Prometheus 的无缝对接,可将指标数据导出到 Prometheus 中,与您自己的监控系统集成。EMQX 集群运行状态尽在掌握。 34 | 35 | 36 | 作为一款[云原生的分布式 MQTT 消息服务器](https://www.emqx.com/zh/products/emqx),EMQX 产品的部署和运维体验是 EMQ 团队持续关注和优化的重点之一。EMQX Kubernetes Operator 的正式发布,标志着 EMQX 的产品设计又向云原生理念进一步深入,帮助用户充分享受云计算带来的优势。 37 | 38 | 点击项目地址:[https://github.com/emqx/emqx-operator](https://github.com/emqx/emqx-operator) ,访问 GitHub 主页下载试用 EMQX Kubernetes Operator。如果您有任何建议、疑问或反馈,欢迎在 GitHub 上提交 issue。我们期待您与我们一起,成就一个更好的开源产品。 39 | -------------------------------------------------------------------------------- /zh/202112/neuron-newsletter-202111.md: -------------------------------------------------------------------------------- 1 | 本月,Neuron 团队仍专注于 2.0 版本的开发,对部分功能和单元测试进行了完善,增加了整体的功能测试,并解决了测试发现的 Bug。同时,v2.0-alpha 版本发布正在积极筹备中。 2 | 3 | ## Neuron 2.0 的功能完善 4 | 5 | - 完善了 Webserver 部分的 http 请求接口功能。包括用户的登录和注销,节点的设置、启动和停止,datatag 的增加、删除、订阅和读写功能,group config 的配置更新等。 6 | - 完善了 [MQTT](https://www.emqx.com/zh/mqtt-guide) 的部分的接口功能。包括支持 Webserver 部分的功能接口,有支持节点控制,datatag的增加、删除、修改、查找的功能,支持 datatag 的定语,支持 group config 的配置更新,插件的获取更新。 7 | - 完善了 [Modbus](https://www.emqx.com/zh/blog/building-modbus-based-iiot-app-with-neuron) 驱动的功能和稳定性。数据周期读写功能优化,group config 更新后的订阅关系改变。 8 | 9 | ## Neuron 2.0 的测试 10 | 11 | - 完善了通用数据类型的单元测试,对内存泄漏的问题进行了修复,增加了稳定性。 12 | - 使用 robot 自动测试框架来对 Neuron 进行了完整的功能测试。目前已完成节点、分组数据以及插件相关的功能测试。 13 | 14 | ## Neuron 2.0 Bug 修复 15 | 16 | 2.0 版本对以下问题进行了修复: 17 | 18 | - 节点控制方面的系统 crash,获取节点信息不够完整的问题。 19 | - group config 订阅有时出错的问题。 20 | - 核心层有时消息转发到不匹配节点的问题。 21 | - 数据传输的序列化时有些数据类型会出错的问题。 22 | - 传递数据时的内存泄漏问题。 23 | 24 | ## Neuron 1.x 当前状态 25 | 26 | 在 Neuron 2.0 没有正式商业化应用之前,Neuron 1.x 的功能升级及维护尤为重要。近期我们发布了 v1.3.4,新增了以下功能: 27 | 28 | - MQTT json 包里时间戳从10个位扩展到13个位。 29 | - OPC 驱动修复了证书连接 Siemens PLC S71200 时出现「0x00AA0000-非关键超时」问题。 30 | - 修改 UI 界面状态栏中的 SEMI,将其改为 EXPIRED。 31 | - Fins on TCP 驱动数据类型问题修复。 32 | - 限制数据 Log file 的增长过大而影响系统运作。 33 | 34 | 35 | Neuron 1.x 目前已广泛应用或正在测试到不同行业中,包括船运、油田、半导体等等。Neuron 团队也在基于用户反馈和需求持续完善 Neuron 1.x。v1.4.0 将于近期发布,敬请关注。 36 | 37 | 38 |
39 |
40 | 免费试用 Neuron 41 |
42 | 开始试用 → 43 |
44 | -------------------------------------------------------------------------------- /zh/202112/neuron-newsletter-202112.md: -------------------------------------------------------------------------------- 1 | 12月,我们发布了 Neuron2.0-alpha.1 版本。这是第一个具备基本完整功能的内部版本,目前已经提供给内测用户使用。从这个版本我们可以看到 Neuron 2.0 具有非常低的内存消耗和 CPU 占用率。 2 | 3 | ### Neuron 2.0-alpha.1 版本功能 4 | 5 | - 具有完整的 Web UI 界面。用户可以通过 Web UI 来控制和配置 Neuron、设置点位、读写 Neuron 连接设备的数据。 6 | - 支持 [MQTT](https://www.emqx.com/zh/mqtt-guide) 连接。用户可以远程通过 MQTT 来控制和配置 Neuron、设置点位,读写neuron连接的设备的数据。 7 | - 支持同时连接多个相同或不同的工业设备。目前已支持 Modbus TCP 和 OPC UA 协议设备。 8 | - 插件化的应用和驱动支持,可以在运行时独立控制驱动的启动和停止,也可以动态增加应用和驱动,在Neuron 运行时更改配置。 9 | - 使用 Haskell 语言写的代码生成器来生成 json 解析的C代码及序列化成 json 的 C 代码。极大减少了手写的代码数量,以及手写解析代码和序列化代码带来的错误,增强了程序的稳定性。 10 | 11 | ### Neuron 2.0 的测试 12 | 13 | Neuron 2.0 已经有了完整的单元测试,每个独立的模块都有对应的单元测试,可以及时发现模块修改后产生的 Bug。 14 | 15 | 我们使用了 robot 自动测试框架来对 Neuron 进行完整的功能测试。目前已经完成了 Web API 接口、MQTT 接口节点、分组数据、插件、设备连接状态、group config、数据读写等相关的功能测试。 16 | 17 | ### Neuron 2.0 Bug 修复 18 | 19 | 本月我们修复了 Neuron 2.0 中的以下问题: 20 | 21 | - [Modbus](https://www.emqx.com/zh/blog/modbus-protocol-the-grandfather-of-iot-communication) 循环读有时出现崩溃的问题。 22 | - 删除 node 时偶尔崩溃的问题。 23 | - 重启 adapter 系统假死的问题。 24 | - 关闭 Neuron 时引用释放的 group config 导致崩溃的问题。 25 | - MQTT 订阅 node 新建的 group config 不成功的问题。 26 | 27 | ### Neuron 1.x 版本情况 28 | 29 | 基于 1.3.x 版经验以及客户对 Neuron 的建议,我们对 Neuron 进行了架构调整并于本月初发布了 Neuron 1.3.5 。主要更新包括: 30 | 31 | - 在 MQTT JSON 结构中添加 uuid 项。 32 | - 在 MQTT 参数列表中为 Heartbeat 消息添加自定义主题设置。 33 | - 为每个标签添加中文描述字段。 34 | 35 | 同时,本月我们开始对 1.4.0 进行规划,计划在明年一月发布,主要在以下方面进行更新: 36 | 37 | - 添加三菱 FX5U 驱动 38 | 39 | - 为以下 PLC 添加 STRING 数据类型处理,可读写 PLC 字符串 40 | 41 | | Modbus TCP/RTU/RTU on TCP | 42 | | ------------------------- | 43 | | OPC UA | 44 | | 西门子 ISOTCP | 45 | | 欧姆龙 FINS on TCP | 46 | | 三菱 Q 系列和 L 系列 | 47 | | 三菱FX5U | 48 | 49 | 敬请关注 Neuron 的后续进展。 50 | 51 | 52 |
53 |
54 | 免费试用 Neuron 55 |
56 | 开始试用 → 57 |
58 | -------------------------------------------------------------------------------- /zh/202201/emqx-cloud-http-custom-authentication.md: -------------------------------------------------------------------------------- 1 | 身份认证又称「验证」、「鉴权」,是指通过一定的手段,完成对用户身份的确认。身份认证是大多数应用的重要组成部分,启用身份认证能有效阻止非法客户端的连接。[EMQX Cloud](https://www.emqx.com/zh/cloud) 中的认证指的是当一个客户端连接到 EMQX Cloud 的时候,通过服务器端的配置来控制客户端连接服务器的权限。 2 | 3 | 随着用户量的增加,关于认证的用户需求变得越来越复杂。很多用户开始采用自建的认证中心,将认证这一环节保留在用户一侧,以保障数据的安全性,降低数据泄漏风险。这就需要 EMQX Cloud 可以提供连接用户自建认证中心的能力。同时,尽管 EMQX Cloud 支持批量导入添加认证信息,但在实际操作中,如果认证设备的数量增长迅速,出现问题修改或排查往往需要花费很长的时间。 4 | 5 | 针对以上需求,**EMQX Cloud 最近推出了 HTTP 自定义认证功能**。用户可以连接到自己的认证中心,通过返回的信息来判断终端的登录权限,以实现更加复杂的认证鉴权逻辑和 ACL 校验逻辑。目前,自定义认证功能支持权限认证以及访问控制认证。 6 | 7 | ### HTTP 认证原理 8 | 9 | EMQX Cloud 在设备连接事件中使用当前客户端相关信息作为参数,向用户自定义的认证服务发起请求查询权限,通过返回的 HTTP 响应状态码 (HTTP statusCode) 来处理认证请求。 10 | 11 | - 认证失败:API 返回 4xx 状态码 12 | - 认证成功:API 返回 200 状态码 13 | - 忽略认证:API 返回 200 状态码且消息体 ignore 14 | 15 | ### 如何配置 HTTP 自定义认证 16 | 17 | 登录 EMQX Cloud,在部署中左侧点击「认证鉴权」-「自定义认证」,在初始界面中点击「配置认证」开始配置 HTTP 自定义认证。 18 | 19 | ![EMQX Cloud 配置 HTTP 自定义认证](https://assets.emqx.com/images/b4fc20b6537e4b57ef4bf277d68d825f.png) 20 | 21 | 22 | 进行身份认证时,EMQX Cloud 将使用当前客户端信息填充并发起用户配置的认证查询请求,查询出该客户端在 HTTP 服务器端的认证数据。 23 | 24 | 在表单页配置权限认证的必填参数,包括认证请求地址、认证请求参数、HTTP 请求方法和请求内容的类型。其余的参数如果没有特殊要求使用默认值即可。 25 | 26 | ![EMQX Cloud 配置 HTTP 自定义认证](https://assets.emqx.com/images/5538c96ad275646583cc48358c1348c3.png) 27 | 28 | 29 | > 注: 30 | > 31 | > 如果当前部署为基础版,请求地址请填写公网服务验证地址 32 | > 33 | > 如果当前部署为专业版,请求地址请填写内网 IP 服务验证地址 34 | 35 | 36 | 37 | 通过 HTTP 自定义认证,用户可以更加灵活地将自建的认证中心与 EMQX Cloud 结合,大幅提高了认证的安全性,并解决了海量设备认证流程复杂的问题。 38 | 39 | ### 快速上手 EMQX Cloud 40 | 41 | 我们最近也在 EMQX Cloud 的整体使用流程上进行了很多优化,例如连接指引和帮助文档的优化,多语言 SDK 接入 Demo,帮助用户快速上手使用产品。 42 | 43 | ![EMQX Cloud 新手引导优化](https://assets.emqx.com/images/80e2b925616f735dee62f23966b2fd02.png) 44 | 45 |
新手引导优化
46 | 47 | ![EMQX Cloud 帮助文档结构优化](https://assets.emqx.com/images/7674ead69739d888ac542f9906aa5bf8.png) 48 | 49 |
帮助文档结构优化
50 | 51 | 52 |
53 |
54 | 免费试用 EMQX Cloud 55 |
无须绑定信用卡
56 |
57 | 开始试用 → 58 |
59 | -------------------------------------------------------------------------------- /zh/202201/neuron-newsletter-202201.md: -------------------------------------------------------------------------------- 1 | 一月,我们主要专注于月底发布的 Neuron2.0-alpha.2。这个版本主要增加了 [Neuron](https://www.emqx.com/en/products/neuronex) 的持久化功能,支持网页端的导入和导出,增加了压力测试的流程,支持分离的商业化模块,并解决了 alpha.1 中发现的问题。 2 | 3 | ## Neuron 2.0-alpha.2 主要更新 4 | 5 | ### 增加持久化功能 6 | 7 | alpha.2 版本中为 Neuron 增加了持久化功能,可以将 Neuron 的运行状态的节点配置、订阅关系、数据点位配置、已注册的插件等信息保存到网关设备的文件中。重启 Neuron 时,可以根据这些保存到文件中的持久化信息自动恢复 Neuron 中的节点配置、订阅关系、数据点位配置等。 8 | 9 | ### 支持网页端导入导出 10 | 11 | 通过网页端节点配置、订阅关系、数据点位配置的导入导出功能,用户可以在远程批量增加或更新数据点位配置、数据点位的订阅关系等。 12 | 13 | ### OPC UA 驱动数据订阅 14 | 15 | 这一新增功能极大减少了 OPC UA 设备数据变化时产生的数据带宽消耗。 16 | 17 | ### MQTT 接口形式修改 18 | 19 | 最新版本中去除了原来根据功能函数码来调用具体 Neuron 接口功能的方式。新的接口形式将根据接口功能分类,每个接口功能为一个 Topic,所有 Topic 组成一个层次化的 Topic 树,更加方便用户使用。 20 | 21 | ### 增加压力测试流程 22 | 23 | 可以在一定的压力下长时间测试 Neuron 运行的稳定性,为有稳定的 Beta 版本做准备。 24 | 25 | ### 支持分离的商业化模块 26 | 27 | 在 alpha.2 版本中,我们支持了独立的商业化 Neuron 驱动模块的插件开发,第三方用户将可以使用 Neruon 来开发他们自己的私有工业协议驱动。 28 | 29 | ## Neuron 2.0 的测试与 Bug 修复 30 | 31 | 单元测试和功能测试均已经加入到 Neuron 2.0 的日常开发流程中,正在 GitHub 的 CI 工作流中良好的运行着,对每个提交的 PR 都会进行完整的单元测试和功能测试,以保障 Neuron 日常开发工作的稳步进行。 32 | 33 | 同时,我们对上一版本中的以下问题进行了修复: 34 | 35 | - [Modbus](https://www.emqx.com/zh/blog/modbus-protocol-the-grandfather-of-iot-communication) TCP 读写功能测试失败的问题 36 | - Data Value 共享模式下的内存泄漏的问题 37 | - Neuron 有时使用 Control-C 退出崩溃的问题 38 | - Neuron 有时使用 Control-C 不能成功推出的问题 39 | - 需要用户来选择 Node Type 的问题 40 | 41 | ## Neuron 1.4.0 进展 42 | 43 | ### 新增功能 44 | 45 | Neuron 1.4.0 也在本月完成了开发。其中一个重要功能升级是增加了字符串类(String type)的处理,该功能的开发源于客户需求。现在点位数据里除了整数、浮点数也可以支持字符串了。用户可以直接用字符串来表示数值,在读写 PLC 数据时对字符串进行处理。 46 | 47 | 我们在以下驱动中增加了字符串类功能: 48 | 49 | - Modbus TCP/RTU/RTU on TCP 50 | - OPC UA 51 | - Siemens ISOTCP 52 | - Omron FINS on TCP 53 | - Mitsubishi Q-Series and L-Series 54 | - Mitsubishi FX5U 55 | 56 | 此外,我们还增强了 OPC UA 的能力,现已支持处理 OPC 中文标签;对 Siemens ISOTCP 则增加了点位信息写入功能。 57 | 58 | ### Bug 修复 59 | 60 | - 修复 Mitsubishi Q 系列读/写 Dword 和 String。 61 | - 修复 OPCUA 支持使用 utf8。 62 | - 修复不可读点演示。 63 | - 修复 API 函数 50。 64 | 65 | 66 |
67 |
68 | 免费试用 Neuron 69 |
70 | 开始试用 → 71 |
72 | -------------------------------------------------------------------------------- /zh/202202/ekuiper-newsletter-202202.md: -------------------------------------------------------------------------------- 1 | 目前 eKuiper 处于 1.5.0 版本的开发周期中。本月我们主要实现了一个通用的变化检测函数,以满足很多用户提出的仅采集变化数据的需求。同时我们也在进行 1.4.3 版本的开发,解决了共用连接的订阅导致的问题以及其他用户反馈问题。 2 | 3 | ## 变化检测函数 4 | 5 | 通用的变化检测函数 `changed_cols` 已开发完成,并合并到 1.5.0 版本的分支中。`changed_cols` 函数的作用是检测指定的列是否发生变化,如果发生变化,则返回变化的列的值,否则不返回。在变化检测的场景中,用户经常需要监测多个列/表达式,而且数量不固定。因此,该函数可接收不定数量的参数,同时其返回值为多个列。相比于普通的标量函数固定返回单一结果列(多列结果会被包含在 map 中),这是第一个返回多列的函数,我们对函数的实现进行了重构以实现多列函数的支持。 6 | 7 | 该函数的使用语法为 `CHANGED_COLS (, , [,...,])`。在下面的例子中,我们将检测 `temperature` 和 `humidity` 列是否发生变化,如果发生变化,则返回变化的列的值,且为列名添加`c_` 前缀,否则不返回对应的列。 8 | 9 | ``` 10 | SELECT CHANGED_COLS("c_", true, temperature, humidity) FROM demo 11 | _________________________________________________________ 12 | {"c_temperature":23,"c_humidity":88} 13 | {"c_temperature":25} 14 | {"c_humidity":90} 15 | {"c_humidity":91} 16 | ``` 17 | 18 | 我们可以注意到,列的个数是可变的,同时列的参数也可以是别的表达式。列参数也支持 `*` 号,表示检测所有列,例如 `SELECT CHANGED_COLS("c_", true, *) FROM demo`。 19 | 20 | 多列函数仅可在 select 子句中使用。其选出的值不能用于 WHERE 或其他子句中。若需要根据变化值做过滤,需要将 CHANGED_COLS 的规则作为规则流水线的前置规则。我们接下来将实现其他配套的变化检测函数,以标量函数的形式,支持获取变化值,从而在过滤等其余子句中进行使用。 21 | 22 | ## 1.4.3 版本动态 23 | 24 | 1.4.3 版本主要解决本月发现的一些问题。主要是共用连接在 MQTT 和 EdgeX 中的订阅同一个主题导致的问题。我们对共用连接的实现进行了重构,以解决这个问题。另外,我们还修复了预编译的 tdengine 插件运行崩溃的问题。 25 | -------------------------------------------------------------------------------- /zh/202202/hstreamdb-newsletter-202202.md: -------------------------------------------------------------------------------- 1 | 本月,我们发布了 HStreamDB v0.7, 该版本致力于提升 HServer 集群的稳定性、可用性以及可扩展性。v0.8 将延续这一主要目标,并提供更多客户端,为更多用户的开发和使用带来便利,同时将加强安全特性。 2 | 3 | [HStreamDB](https://hstream.io/zh) 正在变得愈发成熟、稳定、可用,未来将在越来越多的实际生产项目中发挥价值。欢迎大家体验试用:[https://github.com/hstreamdb/hstream](https://github.com/hstreamdb/hstream)。 4 | 5 | ## v0.7 版本发布 6 | 7 | [本月 11 日的推送文章中](https://www.emqx.com/zh/blog/hstreamdb-v-0-7-release-notes),我们详细介绍了 v0.7 版本新增的有效缓解单点流量瓶颈的透明分区功能、全新运维管理工具 HAdmin 、支持服务端集群和透明分区的新版 hstreamdb-java、基于一致性哈希的集群负载均衡算法等新的特性,以及一些使用和部署方面的改进等。 8 | 9 | 详细的使用方法可以阅读我们的文档:[https://hstream.io/docs/en/latest/start/quickstart-with-docker.html](https://hstream.io/docs/en/latest/start/quickstart-with-docker.html) 10 | 11 | ## 本月开发进展 12 | 13 | ### Golang Client 14 | 15 | 为了方便不同技术栈和编程语言背景的用户使用 HStreamDB,我们将为多种主流语言提供 HStreamDB Client,包括:Java、Python、Golang 等。其中 Java 客户端是我们最早支持的客户端,各项功能目前也比较完善,也在持续改进和维护中。 16 | 17 | 本月我们新启动了 Golang Client 的开发工作,目前基本的功能已经实现完毕,首个版本预计下月正式发布。 18 | 19 | Python Client 也将在后续发布。 20 | 21 | 其它更多语言的支持也在陆续规划中,欢迎大家进行建议和反馈。由于 HStreamDB 采用 GRPC 和客户端进行通信,得益于 GRPC 广泛的语言支持和工程便利性,使得开发新语言客户端的成本大大降低,也欢迎社区的伙伴们尝试开发新客户端。 22 | 23 | ### 基于 TLS 的连接加密、身份认证等安全特性 24 | 25 | 此前 HStreamDB 主要聚焦于核心功能的开发,还没有对安全方面的特性进行相关支持。考虑到用户在生产环境(比如公有云,私有云等)部署时的安全性需求,本月开始我们启动了相关安全功能的开发,主要涉及连接加密、身份认证和权限管理等方面。 26 | 27 | 目前已经初步完成了基于广泛使用的安全协议 TLS 的连接加密,双向身份验证的功能支持,这些功能预计在 v0.8 和大家正式见面。 28 | 29 | ### 提高测试覆盖率,搭建长期测试加强产品稳定性 30 | 31 | 在开发新功能的同时,我们也始终致力于提升 HStreamDB 的稳定性:通过增加更多的功能测试和行为测试,覆盖更多使用场景,同时也将进一步遵循 chaos engineering 的理念,加强多种条件下的随机错误注入测试,并提高对应的错误注入频率。 32 | 33 | 为了模拟 HStreamDB 在生产环境中的表现,确保实际的稳定可用,本月我们开始着手搭建和维护一个长期运行的 HStreamDB 集群,并开发一套用户日常应用的模拟程序,通过这个程序 7 x 24 小时持续操 HStreamDB 集群。我们将持续监控这个集群的长期运行状态,提前发现并解决可能存在的问题,提升 HStreamDB 的长期稳定性。 34 | 35 | ### 基于 Terraform 的快速部署 36 | 37 | 此前 HStreamDB 提供了快速[集群部署的脚本](https://hstream.io/docs/zh/latest/deployment/quick-deploy-ssh.html)以及对基于 k8s 部署的初步支持[[link](https://hstream.io/docs/en/latest/deployment/deploy-k8s.html)]。为进一步方便用户基于云环境快速部署和测试 HStreamDB,本月我们新开发了基于 Terraform 的部署方案,稍后会将具体的部署指引更新在文档上。 38 | 39 | Terraform 是一款由 HashiCorp 主导开发的开源「基础设施即代码」工具,可以帮助开发及运维人员以自动化和可重现的方式来管理基础架构和资源,高效管理云服务。通过 Terraform,不仅可以快速实验和测试,还能更方便地将 HStreamDB 部署到多种公有云和私有云上,并且由于 Terraform 的不可变基础架构设计,可以避免配置偏离。 40 | -------------------------------------------------------------------------------- /zh/202202/neuron-newsletter-202202.md: -------------------------------------------------------------------------------- 1 | 本月,我们为即将于三月初发布 Neuron 2.0-beta.1 版本进行了紧张有序的准备工作。beta.1 版本是一个重要版本,该版本中我们增加了商业版 Modbus TCP 和 OPC UA 驱动,有完整的持久化功能,并且具备完善的功能测试和压力测试,是第一个经过稳定测试的具有商用模块的版本,也是后续开发的一个基准版本。 2 | 3 | ## Neuron 2.0 的功能完善 4 | 5 | - 新增商业版的 Modbus TCP 驱动和 Modbus RTU 驱动。商业版的 Modbus TCP 驱动具有更好的性能,支持 bit 类型的数据以及更多的点位数量。Modbus RTU 则在此基础上增加了串口通讯的支持。 6 | - 增加了商业版的 OPC UA 驱动,具有更好的数据读写性能,支持数据订阅和登录功能。 7 | - 完善了压力测试流程,现在可以长时间对 Neuron 2.0 进行压力测试,以测试其稳定性,并输出 CPU 占用和内存占用的图形化报告。目前已经完成了 1K、10K、50K 的点位数量下的压力测试,并输出了测试报告。 8 | - 完善了功能测试,增加了商业版的 Modus TCP 和 Modbus RTU、OPC UA 的功能测试。 9 | - 增加 syslog 的支持。现在用户可以通过 syslog 的工具查看 Neuron 的 log。 10 | - 增加 Neuron 的 SDK 开发包的打包,用户可以用这个 SDK 开发包来开发自己的第三方设备协议驱动和应用。 11 | 12 | ## Neuron 2.0 的测试 13 | 14 | 压力测试的流程现已完全可用。用户可以加入到 Neuron2.0 的 weekly build 中使用,也可以在版本发布前进行压力测试。 15 | 16 | 单元测试和功能测试在持续的维护,添加新模块对应的单元测试和功能测试用例。 17 | 18 | ## 重要 Bug 修复 19 | 20 | - 解决了解析复杂 JSON 字符串时占用 CPU 过多,耗费内存过大的问题。 21 | - 解决了自动代码生成器生成的代码在 encode 字符串数组出错的问题。 22 | - 解决了持久化和 OPC UA 驱动中的一些内存泄漏问题。 23 | 24 | 25 |
26 |
27 | 免费试用 Neuron 28 |
29 | 开始试用 → 30 |
31 | -------------------------------------------------------------------------------- /zh/202203/zigbee-lock.md: -------------------------------------------------------------------------------- 1 | 本文系 EMQ&Intel 联合举办的首届“中国物联网数据基础设施最佳案例评选大赛“个人开发者赛道三等奖作品。 2 | 3 | 项目作者:李小文 4 | 5 | 6 | ## 项目简介 7 | 8 | 本项目可用于不可嵌入安装门锁的门,实现门锁的智能控制。项目包含硬件、云服务器和 Android 客户端。其中硬件平台采用两个 Zigbee 设备实现设备间通信,云服务器包含 Web 服务器和 MQTT 服务器,客户端通过和服务器通信间接控制硬件。 9 | 10 | 项目地址:[https://github.com/Magiclxw/ZigBee-Lock](https://github.com/Magiclxw/ZigBee-Lock) 11 | 12 | ## 技术框架 13 | 14 | 硬件平台使用 ESP8266 模块与 EMQX MQTT 消息服务器通信,Android 客户端通过连接 MQTT 服务器实时控制硬件。 15 | 16 | **架构图** 17 | 18 | ![image1.png](https://assets.emqx.com/images/78c123bcccb97e8463e8fce9c0d5520a.png) 19 | 20 | ## 使用说明 21 | 22 | 在和 EMQX MQTT 服务器通信时需要发布/订阅的消息如下: 23 | 24 | 1. LockControl 值:open(开锁命令)/close(上锁命令) 25 | 2. willTopic 值:online(在线状态)/offline(离线状态) 26 | 3. LockState 值:lockon(门开状态)/lockoff(门关状态)/TH(室内温湿度) 27 | 28 | 在使用 Android 和服务器通信时需要注意从 Android 9.0(API 级别 28)开始,不能直接使用 HTTP 访问服务器地址,解决方法见:https://blog.csdn.net/qq_45255519/article/details/120511356?spm=1001.2014.3001.5501。 29 | 30 | 在使用 Android 连接 MQTT 服务器时,需要在服务器地址前添加 ”tcp://”。 31 | 32 | ## 作者寄语 33 | 34 | 本项目不论是在手机的实时控制还是温湿度的实时更新上都实现了很好的效果。后期还可使用 EMQX 充分利用 MQTT 协议的诸多特性,实现更加丰富的功能。 35 | 36 | 在开发 IoT 项目时,构思并画出整体框架对开发过程十分有用,因此需要在项目开始前尽可能的完善整体思路。 37 | -------------------------------------------------------------------------------- /zh/202203/zizhujiesuan.md: -------------------------------------------------------------------------------- 1 | 本文系 EMQ&Intel 联合举办的首届“中国物联网数据基础设施最佳案例评选大赛“个人开发者赛道一等奖作品。 2 | 3 | 项目作者:霍宏亮 4 | 5 | 6 | 7 | ## 项目简介 8 | 9 | 智能餐饮自助结算系统是一个由称重系统、显示屏、自助扫码盒和 Intel CPU 组成的智能自助结算终端,将装有菜品的托盘放到秤盘上结算,显示屏会向就餐顾客显示本次饭菜菜品的份数、金额,顾客可以通过微信支付宝扫描、刷脸或校园卡员工卡进行自助结算,整个自助收银流程不到两秒钟,充分展示了就餐的智能化、人性化、透明化。 10 | 11 | 项目地址:[https://github.com/roushanburou/zizhujiesuan](https://github.com/roushanburou/zizhujiesuan) 12 | 13 | ## 技术框架 14 | 15 | **架构图** 16 | 17 | ![架构图](https://assets.emqx.com/images/aa05f32fab534c0741b864a559717bbf.png) 18 | 19 | 1. 在采购来的自助结算平台安装 USB 高清摄像头,用于采集菜品图片。 20 | 21 | ![image1.png](https://assets.emqx.com/images/af8f1233dbe7478af2b43f456c152360.png) 22 | 23 | 2. 将采集到的数据集转化为 TensorFlow 格式的 tfrecoed。 24 | 25 | ![image2.png](https://assets.emqx.com/images/0a8ee482f0ea103fd0c4972cb046484a.png) 26 | 27 | 3. 本次选用的是 TensorFlow2 下的预训练模型 ssd_mobilenet_v2,因为看到 OpenVINO 在最新的版本不再支持 TensorFlow1.X 版本,所以采用 TensorFlow2.X 版本去做。 28 | 29 | 4. 训练完成后,将模型通过 mo.py 文件转化为 IR 文件 30 | 31 | ![image3.png](https://assets.emqx.com/images/423141e37c33667c23d6404e613c90c5.png) 32 | 33 | 34 | 这次发现 OpenVINO 更新了 PaddlePaddle 模型转换,后期有机会可以试一试。在生成 IR 文件后,根据 OpenVINO 基于目标检测提供的object_detection_sample_ssd.py 自己编写了代码推理模板进行推理,然后把命令和结果封装成 Python 脚本。 35 | 36 | 5. 编写桌面程序,安装 IronPython 库,嵌入 Python 脚本。这款结算平台的称重是串口通信,在调通波特率后顺利解析出协议,通过电子秤感应程序是否需要进行识别,这样免去了需要实时检测的问题,整体效果如下: 37 | 38 | ![image4.jpeg](https://assets.emqx.com/images/f696df1eaeec0ed3ba7105aa68be8b19.jpeg) 39 | 40 | 41 | 实际测试大概两秒左右,效果非常不错。识别后由客户点击结算,结算完成后自助打印小票。 42 | 43 | ## 使用说明 44 | 45 | 将装有菜品的托盘放到秤盘上结算,显示屏会向就餐顾客显示本次饭菜菜品的份数、金额,顾客可以通过微信支付宝扫描,刷脸或校园卡员工卡自助结算,点击结算会有小票打印。 46 | 47 | ## 作者寄语 48 | 49 | 在餐饮这样消费时段集中的行业中,结算速度决定了企业盈利情况。基于 OpenVINO 的智能自助餐饮结算系统可以快速准确识别整盘菜品种类以及数量,软件自动完成金额汇总,不需要人工进行每一个菜品的计价,辅以充值卡、微信、支付宝等快捷支付手段,可以实现结算台前无排队。 50 | 51 | 智能餐饮自助结算结合了物联网技术,将数据通过 MQTT 汇聚至公有云平台,便于后期制作大数据分析系统。通过大数据分析,可实时掌控柜台菜品的数量,及时补充菜品,还可根据每个菜品的销售状况,实时对后厨的制作口味做出调整;也可跟踪长期顾客的饮食喜好,结合健康营养管理系统,对顾客热量摄入提供健康建议,为客户提供更多价值。 52 | -------------------------------------------------------------------------------- /zh/202204/ekuiper-newsletter-202203.md: -------------------------------------------------------------------------------- 1 | 本月初,eKuiper 团队发布了 v1.4.3,主要包含共用连接功能重构以及其他 Bug 修复。由于预编译 TDengine 插件崩溃问题在打包发布后的版本仍然存在,我们计划在下一个版本 v1.4.4 中进行修复,同时解决本月用户发现的其他问题。此外,v1.5.0 的新功能开发仍然在有条不紊地进行中,预计于 4 月份发布。 2 | 3 | ## 本月重要新功能速览 4 | 5 | ### 规则隔离 6 | 7 | 新的版本中,我们对规则运行和生命周期进行了优化和重构,增加了规则运行的稳定性,提高规则之间的隔离性。主要表现在以下几个方面: 8 | 9 | - 规则错误隔离:即使是使用共享源的规则,某个规则的运行时错误也不会影响另外的相关规则。同时,新版本的规则系统级的 panic 错误也会在规则级别进行处理,不再导致整个 eKuiper 进程崩溃。 10 | - 规则负载隔离:使用共享源或者内存源的兄弟规则之间,在保持消息顺序的同时,消息流入吞吐量不受其他规则的影响。 11 | 12 | ### 对选择的列进行分组 13 | 14 | 规则的 SQL 语句中`select`选择出的所有列会组成一个对象,供 sink 插件和下游的应用进行处理。在有些场景中,下游应用需要对选择的列进行分组,然后灵活地对每个分组进行处理。例如,把选择出来的结果分成多个 key/value 集合,其中 key 为文件名,这样可以动态地把结果写入到多个文件中。 15 | 16 | 新的内置方法 `object_construct` 可以轻松实现列的分组和命名。其语法为 `object_construct(key1, col, ...)`,可支持多个参数,并返回由参数构建的对象 。参数为一系列的键值对,因此必须为偶数个。键必须为 string 类型,值可以为任意类型。例如,用户需要把列 1,2,3 写入到文件 1;而列 4,5 写入到文件 2 中。则可使用一条 SQL 规则对列进行分组,并对组名进行赋值: 17 | 18 | ``` 19 | SELECT object_construct("key1", col1, "key2", col2, "key3", col3) AS file1, object_construct("key4", col4, "key5", col5) AS file2 FROM demoStream 20 | ``` 21 | 22 | 其输出结果形如下列 JSON 对象: 23 | 24 | ``` 25 | { 26 | "file1":{"key1":"aValue","key2":23,"key3":2.5}, 27 | "file2":{"key4":"bValue","key5":90} 28 | } 29 | ``` 30 | 31 | ## 其他动态 32 | 33 | ### Bug 修复 34 | 35 | 本月修复的 Bug 会同时进入 1.4.4 和 1.5.0 版本中。影响较大的 Bug 包括: 36 | 37 | - 预编译的 TDengine 插件在 Docker slim 版本中崩溃的问题。 38 | - Portable 插件运行时交互 timeout 容错处理 39 | - 重启 QoS 1 或 2 的规则时,sink cache 清理问题 40 | 41 | ### 1.5.0 版本 42 | 43 | 目前我们正在针对 1.5.0 版本进行其与 Neuron 2.0 的整合,预计下个月将为大家带来正式的功能介绍。 44 | 45 | ### 社区动态 46 | 47 | eKuiper 的社区网站正在开发中,正式上线后大家可以在 eKuiper 社区站一站浏览 eKuiper 相关的博客文章、版本信息等内容。敬请期待。 48 | -------------------------------------------------------------------------------- /zh/202204/emqx-cloud-cost-savings.md: -------------------------------------------------------------------------------- 1 | 为满足不同客户的定制化需求,[EMQX Cloud](https://www.emqx.com/zh/cloud) 于上月上线了增值服务模块,目前已开放了 [NAT 网关和内网负载均衡](https://www.emqx.com/zh/blog/emqx-cloud-intranet-load-balancing-and-net-gateway-service)两项服务。近日,EMQX Cloud 流量包增值服务也正式开放,大消息吞吐业务场景的用户可以通过这一服务获得更加经济实惠的流量服务。 2 | 3 | ## 低连接、大吞吐场景的最佳选择 4 | 5 | 目前,EMQX Cloud 基础版和专业版均会会赠送一定免费流量。 若每月消耗流量超出赠送额度,则会按照 ¥1.5/GB 的价格收取费用。 6 | 7 | ![EMQX Cloud 赠送流量](https://assets.emqx.com/images/dd054a3833308f4dc209a26fd107e58a.jpeg) 8 | 9 | 在用户的实际使用场景中,会出现连接设备少、消息数量大的情况,如工业数据采集、车联网新能源车数据采集、在线教育、即时通讯等。在这类场景中,用户选择较低线数的规格即可满足设备连接需求,但由于消息吞吐量大,消耗的流量很有可能超出低线数规格中赠送的 100G/月。 10 | 11 | 为此 EMQX Cloud 推出了流量包增值服务。如用户每月预估消耗流量大于免费赠送额度,开通该服务将比超出部分按量付费的方式更加节省成本。 12 | 13 | ## 流量包的开通与使用 14 | 15 | 您可以通过以下两个入口开通流量包。 16 | 17 | 1、登陆 EMQX Cloud 控制台,在菜单栏点击「增值服务」,选择流量包。 18 | 19 | ![EMQX Cloud 流量包](https://assets.emqx.com/images/3deaac604c292d94fc6d7d73ebdbe7e7.png) 20 | 21 | 2、在部署的流量消耗处点击「购买流量包」。 22 | 23 | ![EMQX Cloud 购买流量包](https://assets.emqx.com/images/8a0abeecb79d1263e53d04b69192854b.png) 24 | 25 | 目前我们提供 100 GB 和 1 TB 两种规格的流量包,每种流量包的单次购买上限为 10 个。两规格流量包售价分别为 120元 和 1128 元,相较于流量按量付费可节约 20+% 的费用。 26 | 27 | 28 | 注: 29 | 30 | - 流量包为所有部署提供服务,即所有部署共享流量包。 31 | - 流量包的使用有限期为 6 个月。 32 | - 流量包适用范围:计时部署、包年部署。 33 | - 每个部署流量优先使用免费流量,超出部分开始在流量包中计算, 34 | - 若有流量包叠加的情况,优先使用到期的日期在前面的流量包。 35 | 36 | 37 | 38 | 在开通流量包之后,您可以通过以下方式查看详情页面。 39 | 40 | 1、在控制台顶部菜单栏 「增值服务」找到流量包,点击服务详情。 41 | 42 | ![EMQX Cloud 流量包](https://assets.emqx.com/images/3090671e21efc93847a1ef8ac0d1ebdb.png) 43 | 44 | 2、在服务详情页面可查看到流量包 ID、使用情况(GB)、生效时间、到期时间、状态。 45 | 46 | ![EMQX Cloud 流量包](https://assets.emqx.com/images/c2b044e4c66b25c66c4d1b386fa43572.png) 47 | 48 | 3、点击右侧操作的详情按钮,可查看到流量包使用详情。 49 | 50 | ![EMQX Cloud 流量包](https://assets.emqx.com/images/b47f1e1868919a503815b3eed982dddb.png) 51 | 52 | EMQX Cloud 的定价模式以连接数作为主要计价衡量因素,相较于按收发消息数计价的方式,EMQX Cloud 为企业用户提供了更加经济实惠的全托管 MQTT 消息服务,避免了因为消息量飙升而导致成本急剧升高的情况,可以帮助企业有效控制成本。而新上线的流量包服务,则进一步满足了不同类型和规模的业务场景对于消息吞吐的动态需求。 53 | 54 | EMQX Cloud 将持续完善产品功能,提升使用体验,通过可靠、实时的物联网数据移动、处理和集成,加速您的物联网应用开发。 55 | 56 | 57 |
58 |
59 | 免费试用 EMQX Cloud 60 |
无须绑定信用卡
61 |
62 | 开始试用 → 63 |
64 | -------------------------------------------------------------------------------- /zh/202204/neuron-newsletter-202203.md: -------------------------------------------------------------------------------- 1 | 三月, [Neuron](https://github.com/emqx/neuron) 发布了 2.0-beta.2 版本,这个版本包含了 5 个常用的驱动协议以及 License 的验证,每一个驱动都通过连接真实设备进行了测试。Neuron 2.0-beta.2 版本发布后,后续来自的客户新 Driver 需求将在该版本中进行更新。同时,本月还发布了 1.4.2 版本。 2 | 3 | ## Neuron 2.0-beta.2 新功能概览 4 | 5 | - 适配西门子 PLC 的 S7comm 驱动,驱动支持了 int16/uint16/int32/uint32/float/double/bit/string 数据类型,且支持读写 I(输入)O(输出)F(FLAG)T(TIMER)C(COUNTER)DB 数据区域。收发协议数据使用了异步实现,以及支持多个点位一起读写,提高了读写效率。 6 | - 适配欧姆龙 PLC 的 FINS 驱动,驱动支持了 int8/uint8/int16/uint16/int32/uint32/float/double/bit/string 数据类型,且支持欧姆龙 PLC 的内存区域包含 CIO Area、Auxiliary Area、Work Area、Holding Area、Data Memory Area、PV、Completion Flag、Extended Memory。收发协议数据同样使用异步实现,支持多个点位一起进行读写。 7 | - 适配三菱 PLC 的 QnA 3E 驱动,驱动支持了 int16/uint16/int32/uint32/float/double/bit/string 数据类型,且支持三菱 PLC 众多区域的读写,包含 Input、Output、Link、Internal、Special、Latch、Annuncation、Edge、Timer、Retentive、Counter、Data。因此协议版本在协议层面不支持异步收发数据,实现时只能进行同步读写数据。 8 | - 增加了 License 校验,包含校验过期时间、Node 数量以及每个 Node 可配置的 Tag 数量,以及检验授权使用的驱动模块。每个驱动模块独立验证 License。 9 | - 完善优化了交叉编译 CI,缩减了 CI 时间;CI 增加 deb/rpm 类型的包,且使用 systemd 管理 Neuron 进程,发布的包中默认注册了实现的驱动,方便用户安装使用。 10 | - 修复了驱动崩溃,持久化偶发性失效等问题。 11 | - 增加了用户快速使用文档,帮助用户快速使用 Neuron。 12 | - 增加 API 文档,为用户提供 API 使用帮助。 13 | - 增加了驱动配置文档,描述了每个驱动的配置以及一些使用范例。 14 | - Modules 模块 CI 增加单元测试流程。 15 | 16 | ## Neuron 1.4.2 发布 17 | 18 | 主要有以下更新: 19 | 20 | - 升级 IEC104 第三方库,解决因连不上 IEC104 设备导致的程序异常退出。 21 | - IEC104 修改为总召唤的方式读取数据点位,适配了三峡客户设备。 22 | - 修正页面修改 Object 属性失败的问题。 23 | 24 | 25 |
26 |
27 | 免费试用 Neuron 28 |
29 | 开始试用 → 30 |
31 | -------------------------------------------------------------------------------- /zh/202205/emqx-cloud-update-external-authentication-authorization.md: -------------------------------------------------------------------------------- 1 | 对于一些已经规模化的厂商来说,用户侧的海量设备认证信息一般都存储在企业内部的数据库中,不仅便于管理查询,也能够增加数据的安全性,降低数据泄露风险。尽管 EMQX Cloud 支持批量导入认证信息,但在实际操作中,如果认证设备的数量增长迅速,出现问题修改或排查往往需要花费很长的时间。 2 | 3 | 在此之前 [EMQ X Cloud 通过 HTTP 自定义认证功能](https://www.emqx.com/zh/blog/emqx-cloud-http-custom-authentication)为用户提供了连接自建认证中心的能力,以满足日益复杂的用户认证需求。在此基础上,近日,我们又新推出了 MySQL 及 PostgreSQL 外部认证授权,支持直接从用户的 MySQL 或 PostgreSQL 数据库中直接验证设备认证信息,帮助实现更加安全、更加快速的海量设备接入。 4 | 5 | ## **功能详解** 6 | 7 | 作为一款全托管的云原生 MQTT 消息服务,用户可以通过控制台的认证鉴权模块来对设备进行身份认证及 Topic 访问控制。身份认证采用用户名密码的形式进行认证,访问控制支持对客户端 ID、用户名和全部用户三个粒度进行权限控制。身份认证及访问控制均支持 csv 文件批量导入。 8 | 9 | 除了将认证信息存储在 EMQX Cloud 中外,用户还可以通过外部认证授权,通过验证用户侧的认证信息来实现设备的认证及更加复杂的 ACL 校验逻辑。 10 | 11 | 用户可以访问控制台,在左侧菜单栏「认证鉴权」->「外部认证授权」,访问外部认证授权功能。具体配置调试步骤可参考界面提示及文末的帮助文档。 12 | 13 | ![外部认证授权](https://assets.emqx.com/images/814d54403468585cbe69b8a9fc1b48d4.png) 14 | 15 | **MySQL 认证/访问控制示例** 16 | 17 | ![MySQL 认证/访问控制示例](https://assets.emqx.com/images/49934da90a9fc04e0a398941ed0e8074.png) 18 | 19 | **PostgreSQL 认证/访问控制示例** 20 | 21 | ![PostgreSQL 认证/访问控制示例](https://assets.emqx.com/images/78b6d0ce3f6ebecbe448aec3f297adb6.png) 22 | 23 | 通过外部认证授权功能,用户可以从外部 MySQL、PostgreSQL 数据库中验证认证信息作为认证数据源,快速存储⼤量数据的同时也更加⽅便与外部设备管理系统集成。 24 | 25 | 26 | >注意: 27 | > 28 | >1. 若同时启用了内置认证,EMQX Cloud 将按照**先默认认证,后外部认证授权**的顺序进行链式认证 29 | >2. 如果当前部署为基础版,服务器地址请填写公网地址 30 | >3. 如果当前部署为专业版,需创建 VPC 对等连接,服务器地址请填写内网地址 31 | >4. 若提示 Init resource failure! 需检查服务器地址是否无误、安全组是否开启、数据库是否允许 EMQX Cloud 集群访问 32 | 33 | 34 | 35 | ## 操作指南 36 | 37 | 关于 MySQL 及 PostgreSQL 外部认证授权功能更加详细的使用操作,请参考: 38 | 39 | - MySQL 认证/访问控制:[https://docs.emqx.com/zh/cloud/latest/deployments/mysql_auth.html](https://docs.emqx.com/zh/cloud/latest/deployments/mysql_auth.html) 40 | 41 | - PostgreSQL 认证/访问控制:[https://docs.emqx.com/zh/cloud/latest/deployments/pgsql_auth.html](https://docs.emqx.com/zh/cloud/latest/deployments/pgsql_auth.html) 42 | 43 | 44 | 45 |
46 |
47 | 免费试用 EMQX Cloud 48 |
无须绑定信用卡
49 |
50 | 开始试用 → 51 |
52 | -------------------------------------------------------------------------------- /zh/202205/mqttx-newsletter-202204.md: -------------------------------------------------------------------------------- 1 | >MQTTX 是一款由 EMQ 开源的 MQTT 5.0 跨平台桌面客户端。支持快速创建多个同时在线的 MQTT 客户端连接,方便测试 MQTT/TCP、MQTT/TLS、MQTT/WebSocket 的连接、发布、订阅功能及其他 MQTT 协议特性。 2 | > 3 | >社区站网址:[https://mqttx.app/zh](https://mqttx.app/zh) 4 | > 5 | >GitHub 仓库:[https://github.com/emqx/MQTTX](https://github.com/emqx/MQTTX) 6 | 7 | 在过去的一月中,MQTTX 发布了最新的 v1.7.3 版本(下载地址:[https://github.com/emqx/MQTTX/releases/tag/v1.7.3](https://github.com/emqx/MQTTX/releases/tag/v1.7.3) ),同时优化了在社区站中 MQTTX 安装包的下载方式。 8 | 9 | ## v1.7.3 版本概览 10 | 11 | ### 新增 ARM64 和 32bit 安装包 12 | 13 | 在该版本中我们新增了一些可以支持在 ARM64 架构和 Windows 32bit 的 CPU 机器上使用的安装包,对于 macOS、Linux 和 Windows 系统的用户,无论是哪种芯片或系统架构,都可以下载对应格式的安装包来使用。 14 | 15 | ### 支持 MQTT 3.1 版本 16 | 17 | 截止目前,MQTTX 除支持 MQTT 5.0 和 3.1.1 之外,同时也向后兼容并支持了 MQTT 3.1。也就是说, MQTTX 已支持了所有 MQTT 相关协议版本,可支持所有 MQTT 版本的测试连接,为用户提供了更加全面的连接测试能力。 18 | 19 | ### 为 QoS 添加注解 20 | 21 | 很多新手用户可能不太了解在发布订阅时如何选择 QoS。为此我们在发布和订阅页面中对 QoS 的每一个值进行了注解,方便刚开始接触 MQTT 的用户了解和使用 QoS。 22 | 23 | ![为 QoS 添加注解](https://assets.emqx.com/images/a6f8fc9d29b85c5df91ef8cb8c50c58b.png) 24 | 25 | ### 其他优化 26 | 27 | - 优化了新建连接时,开启 TLS / SSL 的选项的样式 28 | - 修复了一些安全性问题 29 | 30 | ## mqttx.app 社区站优化 31 | 32 | ### 下载方式优化 33 | 34 | 由于新版本增加了更多不同系统芯片架构下的安装包,我们对社区站中的下载部分也同步进行了优化。针对下载安装和显示的页面进行了分类,用户可以在选择对应的操作系统后,根据安装包右上角的芯片架构标签,找到符合自己的运行环境的文件,点击下载后即可快速安装和使用。 35 | 36 | ![下载方式优化](https://assets.emqx.com/images/1c0ad5590aef0499f6bf9bafb557ffc0.png) 37 | 38 | ### 文档结构优化 39 | 40 | 我们还对 MQTTX 文档进行了升级和结构调整,优化了之前大篇幅的单文档阅读模式,对文档结构进行了调整和分层。用户可以根据自己的使用需求,在文档页面内快速找到自己想要阅读和了解的内容。 41 | 42 | ![文档结构优化](https://assets.emqx.com/images/20c20a2505096b29628bd8df69b6767e.png) 43 | -------------------------------------------------------------------------------- /zh/202205/neuron-newsletter-202204.md: -------------------------------------------------------------------------------- 1 | >Neuron 为工业物联网的「连接」而生,支持同时为多个不同通讯协议设备、**数十种工业协议**进行一站式接入及 MQTT 协议转换,仅**占用超低资源**,可以原生或容器的方式部署在 X86、ARM 等架构的各类边缘硬件中,助力构建工业物联网平台与应用。 2 | > 3 | >Github 仓库:[https://github.com/emqx/neuron](https://github.com/emqx/neuron) 4 | 5 | 6 | 7 | 四月,我们发布了 Neuron v2.0 的 rc.1 版本以及 release 版本,新增了 IEC60870-5-104 驱动,采用总召唤的方式采集数据,同时实现了与 eKuiper 的对接,支持将采集到的数据直接发送到 eKuiper。 8 | 9 | ## Neuron v2.0 新功能概览 10 | 11 | - IEC60870-5-104 驱动 12 | 13 | 驱动支持了 int16/uint16/float/bit 数据类型,使用总召唤的方式采集设备数据点位。协议层采用异步实现,提高采集效率。此协议配置的 group interval 只影响上报采集数据频率,读取频率可在 NODE 设置中单独配置。 14 | 15 | IEC TYPEID 对应到 Neuron 的数据类型如下: 16 | 17 | | **IEC TYPEID** | **NEURON TYPE** | 18 | | :------------------------------ | :-------------- | 19 | | M_ME_NB_1、M_ME_TE_1 | int16/uint16 | 20 | | M_ME_NC_1、M_ME_TF_1 | float | 21 | | M_SP_NA_1、M_SP_TB_1 | bit | 22 | | M_ME_NA_1、M_ME_TD_1、M_ME_ND_1 | int16/uint16 | 23 | 24 | - 直接与 eKuiper 对接的插件 25 | 26 | Neuron 与 eKuiper 之间采用 nng pari0 直连的方式,降低数据延时。Neuron 作为 server,eKuiper 作为client,通过 Neuron-eKuiper 直接的数据格式进行数据传输,一个 Neuron 实例只支持连接一个 eKuiper 应用。 27 | 28 | - MQTT 插件新增上报数据的格式 29 | 30 | 新增数据格式更有利于使用 EMQX 以及 eKuiper 进行处理,另一种数据格式对于使用代码解析较为友好。 31 | 32 | - 修改 read/write tag API,使用 name 字段替换 id 字段,调用 API 参数更加友好。 33 | - OPC UA 以及 MQTT 使用 SSL 时,支持在 Dashboard 上选择证书以及公私钥,简化 SSL 连接时的操作。 34 | - 新增 Driver 类型 adapter,降低 Driver 开发难度 35 | - 支持以 Demo 的方式启动 36 | - 增加了 Docker 版本 37 | - Modules 模块中增加了 OPC UA 的功能测试 38 | 39 | ## Neuron v1.4.3 修正版 40 | 41 | Neuron 1.x 后续不会再开发新功能,最后版本将会固定在 1.4.x,但可能会有 bug fix 版。 42 | 43 | 本月 v1.4.3 主要有以下更新: 44 | 45 | - IEC104 再次修改总召唤的方式读取数据点位 46 | - 在 Dashboard 修改小数点位时候,显示错误数值 47 | 48 | 49 |
50 |
51 | 免费试用 Neuron 52 |
53 | 开始试用 → 54 |
55 | -------------------------------------------------------------------------------- /zh/202205/xmeter-newsletter-202204.md: -------------------------------------------------------------------------------- 1 | > [XMeter](https://www.emqx.com/zh/products/xmeter) 是 EMQ 基于 Apache 开源项目提供的 MQTT 性能测试云服务,支持千万量级 MQTT 模拟连接与消息吞吐性能测试,并可为 IoT 应用扩展更丰富的测试场景与协议支持。 2 | 3 | 本月,XMeter 团队主要聚焦于企业版 4.0.0 版本的开发,新的 4.0 版本最突出的特性是测试机资源在 Kubernetes 集群上的部署,此外,还将提升管理员对系统配置项进行更改操作的易用性。同时,3.2.x 维护版本也在持续的迭代开发中。 4 | 5 | 公有云服务方面,正在规划全新升级的 XMeter Cloud 测试服务,进一步提升 IoT 压测能力。希望升级的云测试服务很快能与大家见面。 6 | 7 | ## 测试机资源的 Kubernetes 部署 8 | 9 | 4.0 版本之前的测试机集群支持水平扩展。部署时,需要在作为测试机的各台物理机或虚机上安装 XMeter 的测试代理 DCM,测试运行时,由各个空闲的测试代理向主控申请测试任务,申请成功后在测试机上调度相应的测试容器,执行申请到的测试部分。 10 | 11 | 安装测试代理的方式在扩展测试机集群规模时不够方便,需要部署多台新的测试机。同时为了实现主控对各测试机的正常调度与通信,引入了重量级的依赖组件进行协调,导致架构不够简洁。 12 | 13 | 4.0 版本使用 Kubernetes 集群部署测试机资源,主要目的是采用 Kubernetes 自身的能力统一管理测试机的部署与扩展,更灵活地管理测试机的状态,限制并监控测试机所使用的系统资源,同时达到简化系统架构的效果。 14 | 15 | 测试机资源部署在 Kubernetes 后,对终端用户而言,在使用 XMeter 系统管理并运行测试时不会感受到太大的不同,部分需要配置测试机上测试容器规模的操作不再需要,而三方插件支持、测试机状态、错误与跟踪日志、运行时日志、阈值分析等原有的功能依然会支持。对管理员而言,因为先前版本中的测试机概念不再存在,原先针对各台测试机的查看操作会有很大的变化,将被 Kubernetes 上相应测试资源的查看功能代替。 16 | 17 | ## 管理员的系统配置项管理 18 | 19 | XMeter 企业版提供了灵活的系统配置项,以适合不同企业的个性化配置需求。先前版本中的配置管理需要系统管理和运维人员修改服务器上配置文件的相应配置项实现,用户体验不够好。为了提升易用性,将把企业常用的配置项展示在管理员控制台中,方便管理员以可视的方式进行配置。 20 | 21 | ## 3.2.3 版本进展 22 | 23 | 3.2.3 维护版本主要解决 3.2.2 维护版本中发现的问题,以及部分特性的优化。主要包括: 24 | 25 | - 测试报告页面的持续优化 26 | - 测试数据在小吞吐量情况下统计算法的改进 27 | - 错误日志提供统计图表的展示方式 28 | -------------------------------------------------------------------------------- /zh/202206/ekuiper-newsletter-202205.md: -------------------------------------------------------------------------------- 1 | 这个五月,eKuiper 处在 1.6.0 版本新功能开发早期阶段,产品功能开发主要包括 protobuf 编解码支持。针对用户多次提出的用拖拽方式编写数据处理规则需求,我们也在进行原型验证。v1.5.1 的 bug 修复也在进行中,预计于 6 月初发布。 2 | 3 | 此外,作为边缘流式数据处理软件,eKuiper 还参与了中国信通院发起的《边缘流式数据处理技术能力要求》标准评估,通过后 eKuiper 将成为首个通过此标准认定的产品。 4 | 5 | ## protobuf 编解码支持 6 | 7 | 目前 source 和 sink 关于编解码的配置属性 format 默认值为 JSON,用户可以通过新增的 protobuf 的选项选用 protobuf 的编解码能力。相比于 JSON,protobuf 编码的数据量更小,有利于节省云边之间传输的带宽。该功能目前已经开发完成但尚未发布,用户可以通过边缘源码的 v1.6.0 分支进行试用。 8 | 9 | 相比于无模式(schema)的 JSON 格式,protobuf 需要定义 proto 文件作为编解码的 schema。在使用 protobuf 格式之前,用户需要先注册 schema,并通过新增的 schemaId 属性,指定编解码选用的 schema。 10 | 11 | #### Schema 管理 12 | 13 | 使用 REST API 注册,schema 内容可通过文件路径或者文本提供。 14 | 15 | ``` 16 | // POST /schemas 17 | { 18 | "id":"fileName", 19 | "file":"http://myhost/files/abc.proto" 20 | } 21 | ``` 22 | 23 | 或者通过文本内容配置: 24 | 25 | ``` 26 | // POST /schemas 27 | { 28 | "id":"schemaName", 29 | "content":"message Person { 30 | required string name = 1; 31 | required int32 id = 2; 32 | optional string email = 3; 33 | }" 34 | } 35 | ``` 36 | 37 | 无论何种方式,内容会被存储于 etc/schemas/protobuf。 38 | 39 | #### Sink 中使用 protobuf 40 | 41 | - format,用于指定使用的编码 42 | - schemaId, 用于指定使用的 schema 43 | 44 | ``` 45 | { 46 | "mqtt":{ 47 | "server":"tcp://127.0.0.1:1883", 48 | "topic": "result", 49 | "format":"protobuf", 50 | "schemaId":"schemaName.Person" // protobuf的 ID分为两部分,前面为文件名,后面为message名 51 | } 52 | } 53 | ``` 54 | 55 | #### Source 中使用 protobuf 56 | 57 | FORMAT,支持 protobuf 58 | 59 | SCHEMA_ID ,用于指定使用的 schema 60 | 61 | ``` 62 | CREATE STREAM demo() WITH (TYPE="NEURON", FORMAT="protobuf", SCHEMA_ID="schemaName.Person") 63 | ``` 64 | 65 | ## 可视化拖拽编辑能力 66 | 67 | 之前 eKuiper 针对流式数据仅支持 SQL 形式编写数据处理规则,有一定门槛,不方便业务人员直接参与规则编写。为了进一步降低使用门槛,eKuiper 准备支持以可视化方式拖拽数据处理单元并进行简单编辑配置,最终将多个数据处理单元连接起来自动形成数据处理规则,方便更多人直接使用 eKuiper 进行业务处理。目前这个方案正在原型设计阶段。 68 | 69 | ![eKuiper 可视化拖拽编辑能力](https://assets.emqx.com/images/0b82c091c8cfb7d90f82f6436cf11293.png) 70 | 71 | ## 即将到来 72 | 73 | 下个月我们将完善可视化拖拽编辑,并合并到主分支中。另外,eKuiper 将优化 sink 出错之后的缓存机制,实现内存 + 磁盘的离线存储,并在错误恢复后顺序重发,以支持网络断开情况下更强的恢复能力,缓存更长时间的数据。 74 | -------------------------------------------------------------------------------- /zh/202206/neuron-newsletter-202205.md: -------------------------------------------------------------------------------- 1 | 五月,我们发布了 Neuron 2.0.1,该版本主要修复了一些在 2.0.0 版本中发现的问题。此外,这个月我们主要专注于新驱动的开发,新增了南向 BACnet/IP、KNXnet/IP 驱动,北向 Sparkplug 应用,以及定制扩展了 [Modbus](https://www.emqx.com/zh/blog/modbus-protocol-the-grandfather-of-iot-communication) TCP 协议,极大提高了点位采集效率。 2 | 3 | ## KNXnet/IP 驱动 4 | 5 | KNX 是一种统一且独立于制造商的通讯协定,用于智慧地连接最先进的家居与建筑系统技术,包括家庭住宅和办公综合体的供暖、照明和门禁系统管理对舒适性和多功能性要求高。 KNX 可用于规划和实施高效节能的解决方案,在提供更多功能和便利的同时降低能源成本。 6 | 7 | 我们实现驱动支持 BIT/BOOL/INT8/UINT8/INT16/UINT16/FLOAT 数据类型,作为 KNXnet/IP Client 进行数据采集和设备控制。KNXnet/IP 驱动支持两种点位地址,一种为 KNX group address,用户只能对其进行写操作,另一种地址格式为 KNX group address 附带一个 KNX individual address,用户只能对其进行读操作。 8 | 9 | ## BACnet/IP 驱动 10 | 11 | BACnet 是用于智慧型建筑的通讯协定,是国际标准化组织(ISO)、美国国家标准协会(ANSI)及美国采暖、制冷与空调工程师学会(ASHRAE)定义的通讯协定。 BACnet 针对智慧型建筑及控制系统的应用所设计的通讯,可用在暖通空调系统(HVAC,包括暖气、通风、空气调节),也可以用在照明控制、门禁系统、火警侦测系统及其相关的装置。 12 | 13 | 我们实现驱动支持 BIT/FLOAT 数据类型,作为 BACnet/IP Client 进行数据采集和设备反控。BACnet/IP 驱动目前支持的 OBJECT TYPE 主要有 ANALOG INPUT、ANALOG OUTPUT、ANALOG VALUE、BINARY_INPUT、BINARY_OUTPUT、BINARY_VALUE、MULTI_STATE_INPUT、MULTI_STATE_OUTPUT、MULTI_STATE_VALUE。协议层采用了异步收发指令,最大支持 255 条指令并发,提高了采集反控效率。 14 | 15 | ## Sparkplug 插件 16 | 17 | MQTT Sparkplug 是用于智能制造和工业自动化用例的互操作性协议。 Sparkplug 为设备制造商和软件提供商提供了一种一致的方式来共享数据结构,以加速现有工业数字化转型。 18 | 19 | 北向配置与 MQTT 插件类似,MQTT Topic 组成与 Neuron 的 Group 相匹配,支持按照 Neuron 的 Group 为单位上报订阅数据,并支持在 Sparkplug 的 Application 端对 Neuron 的采集设备进行写入操作。数据类型已经支持 Neuron 南向设备的所有定义类型。 20 | 21 | ## 客戶定制化的 Modbus TCP 驱动 22 | 23 | 需要设备侧支持。使用 Modbus TCP MBAP 中 2 字节的长度替代 ADU 中单字节长度来表示帧长,Modbus TCP 帧最大可支持到 65535 字节。扩展后的协议一次采集指令能采集超过三万个数据点位,减少了 Neuron 与设备之间的交互次数,极大提高了采集效率。 24 | 25 | ## 其他更新 26 | 27 | - Neuron 与 eKuiper 的 Dashboard 进行了集成。 28 | - 官网文档进行了大量优化,还在持续改进中。 29 | - 针对 GitHub 社区的一些 issue,对 Neuron 的编译以及交叉编译做了一些优化,降低了搭建入门开发环境的门槛。 30 | - 重构了开源 Modbus TCP 的实现。 31 | - 修复了在 2.0.0 版本中测试发现的问题。 32 | 33 | 34 |
35 |
36 | 免费试用 Neuron 37 |
38 | 开始试用 → 39 |
40 | -------------------------------------------------------------------------------- /zh/202206/xmeter-newsletter-202205.md: -------------------------------------------------------------------------------- 1 | 五月底,XMeter 企业版 4.0.0 版本完成了开发测试,正式发布。仍基于虚拟机/物理机部署测试资源的 3.2.3 版本也已完成大部分的优化项和修复项,预计于 6 月中旬发布。 2 | 3 | ## 企业版 4.0.0 版本概览 4 | 5 | ### 测试机资源基于 k8s 部署 6 | 7 | 4.0.0 版本目前支持在 AWS 的 EKS 和 阿里云的 ACK Kubernetes 集群服务上部署测试机资源。 8 | 9 | 本版本中,包含改造过的 JMeter 单元的容器将运行于 Kubernetes Pod 中,每个 Pod 以预定义的规格申请分配相应的 CPU 及内存资源。测试人员提交测试请求后,系统的测试管理模块将根据测试的配置,计算所需的 Kubernetes Pod 数量,并以 Kubernetes Job 的方式调度相应的 Pod 。协同各 Pod 的状态就绪后,由各 Pod 同时模拟并发的虚拟用户,开始向被测应用服务发压。XMeter 系统主控与 Kubernetes 集群之间的交互通过调用 Kubernetes API 实现,同时,使用了 EKS 或 ACK 的集群节点弹性伸缩功能后,无需事先启动大量节点,根据新启动的 Kubernetes Pod 数量在必要时完成节点自动扩容,即可完成测试任务。 10 | 11 | ![JMeter Kubernetes](https://assets.emqx.com/images/f048597d6a37226fcdc589669720a9be.png) 12 | 13 | 如果希望使用其他云厂商的 Kubernetes 集群服务部署 XMeter 企业版 4.0.0 的测试资源,或者希望使用自建的 Kubernetes 服务,请点击[联系我们](https://www.emqx.com/zh/contact?product=xmeter)与我们取得联系以做进一步的评估。 14 | 15 | ### 系统配置可在管理员端操作 16 | 17 | 除了直接修改服务器上的配置文件以修改系统配置项,从 4.0.0 版本开始,管理人员可以直接从管理员控制台对主要的系统配置项进行更改。 18 | 19 | ![XMeter 系统配置](https://assets.emqx.com/images/56f40c29b6c79bc69ff52129f8ca4e1a.png) 20 | 21 | ### 其他优化与修复 22 | 23 | - 移除对 ZooKeeper 的依赖 24 | - 优化在线测试报告,完善图表之间的联动及折线图的框选功能 25 | - 优化测试报告导出功能 26 | - 修复删除测试脚本时无法级联删除测试记录的问题 27 | - 修复测试报告中,极小失败率下小数位数显示问题 28 | - 修复导出电子报告中,测试图表截图不完整的问题 29 | - 修复一个脚本的多个测试,不同的容器用户数配置会相互影响的问题 30 | - 修复部分页面表格意外触发勾选操作的问题 31 | - 修复测试体配置下载模板的表头样式问题 32 | -------------------------------------------------------------------------------- /zh/202207/emqx-cloud-redis-and-jwt-authentication-authorization.md: -------------------------------------------------------------------------------- 1 | 继之前的 HTTP 自定义认证以及 MySQL、PostgreSQL 外部认证后,近日 [EMQX Cloud](https://www.emqx.com/zh/cloud) 又开放了 Redis 和 JWT 两种外部认证授权方式。用户可以在进行认证鉴权时将有更多的选择,灵活实现更安全、快速的海量设备接入。 2 | 3 | ## 灵活多样的认证方式 4 | 5 | 作为一款全托管的云原生 MQTT 消息服务,用户可以通过控制台的认证鉴权模块来对设备进行身份认证及 Topic 访问控制。身份认证采用用户名密码的形式进行认证,访问控制支持对客户端ID、用户名和全部用户三个粒度进行权限控制。身份认证及访问控制均支持 csv 文件批量导入。 6 | 7 | 除了将认证信息存储在 EMQX Cloud 中,用户还可以通过外部认证授权,在用户存储认证信息的外部数据库中进行身份验证,也支持连接到 JWT 服务进行验证。 8 | 9 | Redis 相较于其他数据库,拥有丰富的数据类型,如字符串、哈希、列表、集合、有序集合等。加之其读写性能高、命令执行速度快等特性,使其被广泛应用在各类场景。 10 | 11 | JWT(JSON Web Token)认证是基于 Token 的鉴权机制,不依赖服务端保留客户端的认证信息或者会话信息,在持有密钥的情况下可以批量签发认证信息,是一种非常简便的认证方式。 12 | 13 | ## 使用指南 14 | 15 | 用户可以通过如下操作配置,使用 Redis 作为外部数据源或 JWT 认证的方式,完成认证和访问控制。 16 | 17 | 访问控制台,在左侧菜单栏「认证鉴权」->「外部认证授权」,访问外部认证授权功能。具体配置调试步骤可参考界面提示及文末的帮助文档。 18 | 19 | ![EMQX Cloud 外部认证授权](https://assets.emqx.com/images/f2ae1400874220e7f69e1299077d2eb8.png) 20 | 21 | **Redis 认证/访问控制** 22 | 23 | ![EMQX Cloud Redis 认证/访问控制](https://assets.emqx.com/images/08360e1ead24028c0e2b3fc6d96846cd.png) 24 | 25 | **JWT 认证/访问控制** 26 | 27 | ![EMQX Cloud JWT 认证/访问控制](https://assets.emqx.com/images/2e183b59010075a0e94030184c7fe495.png) 28 | 29 | 30 | **注意事项** 31 | 32 | 1. 若同时启用了内置认证,EMQX Cloud 将按照**先默认认证,后外部认证授权**的顺序进行链式认证。 33 | 2. 当多种认证方式同时启用时,系统会默认按照 **模块的启用顺序** 来执行查询。 34 | 3. 如果当前部署为基础版,服务器地址请填写公网地址。 35 | 4. 如果当前部署为专业版,需创建 [VPC 对等连接](https://docs.emqx.com/zh/cloud/latest/deployments/vpc_peering.html),服务器地址请填写内网地址。 36 | 5. 若提示 Init resource failure! 需检查服务器地址是否无误、安全组是否开启 。 37 | 38 | 39 | 40 | 本次更新进一步丰富了外部认证授权功能的可选项,用户可根据自己的业务情况选择对应的认证方式,无论是大规模设备接入,还是移动应用场景,都能够灵活应对。 41 | 42 | 43 | 44 | > **相关文档** 45 | > 46 | > Redis 认证/访问控制:https://docs.emqx.com/zh/cloud/latest/deployments/redis_auth.html 47 | > 48 | > JWT 认证/访问控制:https://docs.emqx.com/zh/cloud/latest/deployments/jwt_auth.html 49 | 50 | 51 | 52 |
53 |
54 | 免费试用 EMQX Cloud 55 |
无须绑定信用卡
56 |
57 | 开始试用 → 58 |
59 | -------------------------------------------------------------------------------- /zh/202207/emqx-cloud-update-log-analysis-adds-more-parameters.md: -------------------------------------------------------------------------------- 1 | 近日,全托管 [MQTT 消息云服务 EMQX Cloud](https://www.emqx.com/zh/cloud) 发布功能更新:对「日志」模块进行了优化,新增多个分析参数,帮助用户进行更加有效系统监控与运维。 2 | 3 | ## 功能简介 4 | 5 | 作为一款旨在免除用户基础设施管理维护负担的全托管 MQTT 云服务,EMQX Cloud 通过实时在线查看日志功能帮助用户及时了解系统运行情况,对发现的故障问题进行追溯和排查,以保障系统的稳定运行。 6 | 7 | 之前的日志分析参数仅有时间、日志级别和实例 ID 这三个,功能实现较为基础。最新版本对该功能进行了多项底层优化,新增了可选参数,包括客户端 ID、客户端 IP、用户名、主题、资源 ID、规则 ID,以供用户筛选搜索,更精准、快速地定位错误,解决问题。而节点将直接显示在告警详情中。 8 | 9 | ![EMQX Cloud 日志](https://assets.emqx.com/images/a4ca590714d9529e02784563fe53ec85.png) 10 | 11 | ## 功能使用 12 | 13 | 用户进入控制台后点击「日志」即可查询日志。默认的参数有显示时间、日志级别、错误类型、客户端 ID 和客户端 IP ,点击更多条件可展开根据用户名、主题、资源 ID 和规则 ID 等参数条件进行定向日志检索。 14 | 15 | ![EMQX Cloud 日志](https://assets.emqx.com/images/97af1cba64a48c00c5b0e68403b37db1.png) 16 | 17 |
日志界面
18 | 19 | 日志中包含的字段说明如下表所示: 20 | 21 | | **参数** | **含义** | 22 | | --------- | ------------------------------------------------------------ | 23 | | 时间 | 日志上报的时间 | 24 | | 日志级别 | 主要分以下 3 种告警错误紧急用户可根据不同类别优先级进行对应处理。 | 25 | | 错误类型 | 主要分以下 5 种数据集成:数据集成相关的错误。对应的服务没在运行或其它原因造成的错误。例如存储到 MySQL 时,MySQL 没在运行,未授权、或表错误等。客户端:客户端相关的错误,包含错误的认证信息,错误的访问控制信息,以及其它原因造成无法连接等。消息:消息相关的错误,例如编码问题、消息失弃等。模块:emqx 模块相关的错误, 例如自定义认证因无法连接到对应服务而产生的错误。EMQX 内部错误:Erlang 及无法分类到上述情况的错误。用户可根据错误类型快速定位错误产生模块。 | 26 | | 客户端 ID | 输入 client ID,搜索该 client ID 产生的日志 | 27 | | 客户端 IP | 输入 client IP,搜索改 client IP 产生的日志 | 28 | | 用户名 | 输入 username,搜索该 user name 产生的日志 | 29 | | 主题 | 输入 topic name, 搜索该 topic下产生的日志 | 30 | | 资源 ID | 输入资源 ID,搜索该资源相关的日志 | 31 | | 规则 ID | 输入规则 ID,搜索该规则相关的日志 | 32 | 33 | > 注意:EMQX Cloud 支持 14 天内免费的日志存储和检索,超出 14 天的日志将不支持查询,如您有特殊需求,可以在控制台内提交工单和我们联系。 34 | 35 | 36 | 37 | 常见日志分析及解决措施可参考文档:[https://docs.emqx.com/zh/cloud/latest/deployments/logs.html](https://docs.emqx.com/zh/cloud/latest/deployments/logs.html) 38 | 39 | 40 |
41 |
42 | 免费试用 EMQX Cloud 43 |
无须绑定信用卡
44 |
45 | 开始试用 → 46 |
47 | -------------------------------------------------------------------------------- /zh/202207/hstreamdb-newsletter-202206.md: -------------------------------------------------------------------------------- 1 | 本月,HStreamDB 团队专注于 v0.9 的开发工作,目前已经完成了 HServer 去中心化集群的切换、HStream IO Embedded Runtime 和 CDC Source Connector 的开发, 并带来了新的 Grafana 监控集成以及正式发布了首个可用的 Python 客户端。另外,还与 EMQX 团队协作完成了 HStreamDB 与 EMQX 的集成。 2 | 3 | ## HServer 采用新的集群机制 4 | 5 | 目前我们已经初步完成将 HServer 集群机制从基于 ZooKeeper 的中心化方案切换到基于 SWIM[1] 的去中心化方案,其主要目的是为了支持更大的集群和更好的扩展性,同时减少对外部系统的依赖。后续我们将继续对新集群机制进行更多测试和完善,这一特性将在 v0.9 中正式发布。 6 | 7 | ## HStream IO 支持 CDC Source 8 | 9 | HStream IO 是 HStreamDB v0.9 即将发布一个内部数据集成框架,包含 source connectors、sink connectors、IO Runtime 等组件,它能够实现 HStreamDB 和多种外部系统的互联互通,从而助力促进数据在整个企业数据栈内的高效流转以及实时价值释放。 10 | 11 | 本月我们完成了 Embedded IO Runtime 以及多种数据库的 CDC Source Connector 的开发,包括:MySQL、PostgreSQL、SQL Server 等,能够高效实现将这些数据库的数据增量、实时地同步到 HStreamDB。 12 | 13 | ## 新增 Grafana 监控集成 14 | 15 | 为了方便用户运维和管理 HStreamDB 集群,我们新增了基于 Prometheus 和 Grafana 的监控支持,这也是目前业界主流的监控方案。HStreamDB 内部的监控数据会通过 Exporter 存储到 Prometheus,然后通过 Grafana 的面板进行可视化展示,当前效果如下图所示。 16 | 17 | 关于监控相关的更多内容请参考文档 [https://hstream.io/docs/en/latest/monitoring/grafana.html](https://hstream.io/docs/en/latest/monitoring/grafana.html) 18 | 19 | ![HStream Grafana](https://assets.emqx.com/images/2f4672f1e6f7d9bb280d195cb61779f8.png) 20 | 21 | ## Python 客户端正式发布 22 | 23 | 本月我们正式发布了 HStreamDB 的 Python 客户端 hstreamdb-py [https://github.com/hstreamdb/hstreamdb-pyy](https://github.com/hstreamdb/hstreamdb-py) v0.1.0,支持 HStreamDB v0.8,目前已经具备数据批量写入、订阅消费以及资源管理等核心功能,欢迎大家使用并反馈建议。 24 | 25 | 相关安装指令可参考 [https://pypi.org/project/hstreamdb/](https://pypi.org/project/hstreamdb/) ,更多使用文档参见 [https://hstreamdb.github.io/hstreamdb-py/](https://hstreamdb.github.io/hstreamdb-py/) 26 | 27 | ## 支持与 EMQX 集成 28 | 29 | EMQX 是由 EMQ 开发的全球领先的开源 MQTT 消息服务器,在物联网领域有着广泛应用。本月通过与 EMQX 研发团队合作,我们完成了 EMQX 与 HStreamDB 的高效集成,这将助力用户实现一站式的物联网设备连接、数据接入、持久化存储和实时分析。具体可参考 [https://www.emqx.com/zh/blog/integration-practice-of-emqx-and-hstreamdb](https://www.emqx.com/zh/blog/integration-practice-of-emqx-and-hstreamdb) 30 | 31 | 32 | 33 | [1]:Das, A., Gupta, I. and Motivala, A., 2002, June. Swim: Scalable weakly-consistent infection-style process group membership protocol. In *Proceedings International Conference on Dependable Systems and Networks* (pp. 303-312). IEEE. 34 | -------------------------------------------------------------------------------- /zh/202207/neuron-newsletter-202206.md: -------------------------------------------------------------------------------- 1 | 六月,我们发布了 Neuron 2.1.0 版本,这个版本主要与 eKuiper 进行了深度集成,可一键部署携带数据处理功能的 Neuron。此外,我们主要专注于新驱动的开发,新增南向驱动 DLT645,并对部分功能进行了优化,以更加贴合实际应用场景的使用。Neuron 的 Dashboard 页面进行了开源,用户现在可以对前端界面进行定制化的开发。 2 | 3 | ## DLT645 驱动 4 | 5 | DLT645 驱动适用于 DL/T 645-2007 通信协议,插件支持根据不同的数据标识,自动选择对应的数据格式。目前插件支持 UINT8/UINT64/DOUBLE 数据类型,支持读取 DI3 = 00 , 02 的全部数据标识和 DI3 = 04 的部分数据标识。插件还支持两种连接方式:串口连接和 TCP 连接。 6 | 7 | ## 新增功能概览 8 | 9 | - 新增 IEC104 协议支持设备主动上报数据处理的功能,提高了 IEC104 采集数据点位的效率。 10 | - 新增 Dashboard 数据处理引擎的集成,现在可以直接通过 Neuron 的配置页面,配置北向 eKuiper 插件后(安装包已默认配置),可在数据处理选项中配置数据处理规则,详细使用方式可参考官网文档。 11 | - 新增定制化的 Modbus TCP 模拟器,模拟器支持以标准的 Modbus TCP 协议进行读写数据,并且支持扩展的 Modbus TCP 协议,可以一次读取 65535 字节的数据。 12 | - 重构 Neuron 核心代码的实现,现在 Manager 以及各个 APP 以及 Driver 对应的 Adapter 采用 Actor 模型实现,所以操作都会转换成相应的消息类型,且投递消息到 Manager 或者是 Adapter 对应的消息处理队列,进行顺序处理,解决了很多并发导致的问题;并且现在 Neuron 核心中各个模块采用了无锁的实现,提高了稳定性和对接设备性能。 13 | - 重构了 HTTP API 的参数,使用 PLUGIN/NODE/GROUP/TAG 相应的名字替换 API 中使用的 ID 字段,增强了 HTTP API 的易用性,调用 API 无需再调用其他 API 获取对应的 ID 了。 14 | 15 | ## 问题修复 16 | 17 | - 根据社区反馈较多的一些编译问题,Neuron 删除了一些不必要的依赖库以及删除合并了一些重复的导出头文件,统一 Neuron 中使用的 HASH TABLE、LIST、ARRAY 等数据结构,降低了参与 Neuron 项目开发的门槛;删除了无法在较低内核版本的 Linux 中使用的特性,以使 Neuron 可以在更低端的设备中使用。 18 | - 修复了在之前版本中发现的内存泄漏问题。 19 | - 修复了在之前版本中发现的核心数据异常以及某些驱动对接设备异常的问题。 20 | 21 | ## 其他更新 22 | 23 | - 完善了 Neuron 2.1.0 的官网文档,增加了一些设备配置范例以及一些对应 Neuron 版本的修改。 24 | 25 |
26 |
27 | 免费试用 Neuron 28 |
29 | 开始试用 → 30 |
31 | -------------------------------------------------------------------------------- /zh/202207/xmeter-newsletter-202206.md: -------------------------------------------------------------------------------- 1 | 六月,XMeter 发布了企业版 3.2.3 版本。这个版本仍保留了非 Kubernetes 的测试机部署方式,即在多台物理机或虚机上预安装 XMeter 的测试代理 DCM,以构建可水平扩展的测试机集群。近期暂无计划使用 Kubernetes 容器集群的企业,可以继续延用 3.2 系列的 XMeter,以获取最新的产品优化和问题修复。 2 | 3 | ## 错误日志查看体验提升 4 | 5 | 3.2.3 版本中对错误日志进行了以下调整: 6 | 7 | **优化现有错误日志树状展示结构** 8 | 9 | 3.2.3 版本之前的错误日志树状展示中,不同的测试机发压中产生的相同错误,也有可能展示为多个节点,并且每个节点都会附带容器 ID 信息。 10 | 11 | 考虑到这样的展示方式容易导致歧义,3.2.3 版本中对多个测试机中产生的相同错误进行了合并,树状展示结构中也不再包括容器信息,只包含线程组-事务-请求的层级结构。 12 | 13 | ![优化现有错误日志](https://assets.emqx.com/images/f652bf28d4244738cb6b5e95089f3dff.jpeg) 14 | 15 | 16 | **新增错误分析统计表** 17 | 18 | 从测试报告页面的「错误日志」标签页中,即可查看该统计表。 19 | 20 | 错误分析统计表中,每个事务/请求下,不同的错误按出现次数从高到低依次展现。展现内容包括:该种错误出现的总次数、在所属事务/请求的全部错误中所占的比例、错误的响应码和响应内容等详细信息。 21 | 22 | 默认的统计表包含测试中的全部事务/请求,如果只希望查看部分事务/请求,可以通过点击「选择事务」按钮,勾选所需的事务/请求。 23 | 24 | ![新增错误分析统计表](https://assets.emqx.com/images/6cfd31261eff89c22b7b3dd6ee3a08c3.png) 25 | 26 | ## 测试报告图表优化 27 | 28 | 测试报告图表包含三部分:测试整体数据、多个维度的折线图、具体事务/请求的测试明细数据。经过最近几个版本的迭代,测试图表的优化内容主要有: 29 | 30 | - 框选折线图时,支持三个部分的数据联动 31 | - 折线图提供全选/反选功能 32 | - 在测试运行中框选折线图,将暂停图表的定时刷新,以解决与框选功能的冲突;取消框选后自动恢复定时刷新 33 | - 虚拟用户数折线图只展现所选的事务/请求所在的线程组虚拟用户 34 | - 修复导出测试报告和导出电子表格报告时 csv 及截图不完整的问题 35 | 36 | ![XMeter 测试报告图表优化](https://assets.emqx.com/images/062587376c469c18c5c90b87d730b6f7.png) 37 | 38 | ## 其他优化与修复 39 | 40 | - 阶梯测试插件、ZooKeeper、RabbitMQ 等依赖软件升级版本 41 | - 修复压力机使用统计图表中时间戳不正确问题 42 | - 修复重新上传过的脚本打开旧的测试报告有时无法正常显示的问题 43 | - 修复吞吐量加压探索报警邮件发送频率有时与预设不一致的问题 44 | 45 | ## 即将到来 46 | 47 | XMeter Cloud 测试服务的新版本开发也在进行中,即将上线。XMeter Cloud 希望为海内外客户提供易用的 IoT SaaS 测试服务,降低测试部署和运维成本。新版本将提供免费试用,以便大家快速体验性能测试服务,敬请期待。 48 | -------------------------------------------------------------------------------- /zh/202208/mqttx-newsletter-202207.md: -------------------------------------------------------------------------------- 1 | 7月,[MQTTX](https://mqttx.app/zh) 团队专注于 1.8.1 版本的开发。v1.8.1 中 MQTTX 桌面端版本将支持自动更新,并对 [MQTTX Web](https://mqttx.app/zh/web) 页面进行了优化。目前已完成了 [MQTTX CLI](https://mqttx.app/zh/cli) 对于 MQTT 5.0 的连接支持及用户属性设置支持,并新增了一个 conn 命令来快速测试连接,后续还将添加 bench 命令,将支持部分场景下的 MQTT 协议性能测试。 2 | 3 | ## MQTTX 桌面端应用 4 | 5 | ### 自动更新功能 6 | 7 | 目前已经初步完成该功能的开发,正在进行最后的功能测试。在不同的操作系统下进行测试,不需要手动下载安装包也能完成对软件的更新,当用户收到升级提示时,只要点击更新即可在软件内自动将版本升级至最新,免去了手动下载安装包的繁琐操作。支持自动更新功能后,用户将更快体验到新功能,提升使用体验。该功能特性将在 v1.8.1 中正式发布。 8 | 9 | ### 默认 MQTT 5.0 连接 10 | 11 | 在之前的版本中,MQTTX 默认是 MQTT 3.1.1 连接。作为目前支持 MQTT 5.0 特性最为完整的 [MQTT 客户端工具](https://www.emqx.com/zh/blog/mqtt-client-tools),我们在最新版本中将 MQTTX 默认连接时的 MQTT 版本修改为了 5.0,方便更多的用户快速使用和体验 MQTT 5.0 的新特性。 12 | 13 | ## MQTTX CLI 14 | 15 | ### MQTT 5.0 支持 16 | 17 | MQTTX 目前已经完成了对于 MQTT 5.0 的连接支持,并在使用时默认使用 MQTT 5.0 连接。同时还新增了一个用户属性参数——User Properties,支持在连接、发布、订阅时设置用户属性。例如: 18 | 19 | ``` 20 | mqttx pub -t 'hello' -h 'broker.emqx.io' -p 1883 -m 'from MQTTX CLI' -up "name: mqttx" "company: EMQ" 21 | ``` 22 | 23 | ### 新增 conn 命令 24 | 25 | 在当前 1.8.0 版本中,只支持 pub 和 sub 两个命令,即支持快速的发布与订阅。而对于一些只需要测试 MQTT 服务连通性的简单场景来说, conn 命令则更加便捷。 26 | 27 | ``` 28 | mqttx conn -h 'broker.emqx.io' -p 1883 -u 'admin' -P 'public' 29 | ``` 30 | 31 | 以上新增功能特性,都将在 MQTTX CLI 1.8.1 中正式发布。 32 | 33 | ## MQTTX Web 34 | 35 | MQTTX Web 在线试用地址已修改为:[https://mqttx.app/web-client/](https://mqttx.app/web-client/) 36 | 37 | 只需要访问上述地址,即可快速使用这款在线的 MQTT 5.0 客户端工具,通过 MQTT over WebSocket 连接到 MQTT Broker 并在浏览器中测试消息发布和接收,快速开发和调试您的 MQTT 服务与应用。 38 | 39 | 在 1.8.1 版本中,我们还将继续优化页面样式,完善测试功能等。 40 | 41 | ## 未来规划 42 | 43 | MQTTX 还在持续增强完善中,以期为用户带来更多实用、强大的功能,为物联网平台的测试和开发提供便利。 44 | 45 | 接下来我们将重点关注以下方面: 46 | 47 | - 使用体验升级 48 | - MQTTX CLI 将支持 bench 命令 49 | - 插件系统(例如支持 SparkPlug B,集成 MQTTX CLI) 50 | - 脚本功能优化 51 | - 推出 MQTTX Mobile 移动端应用 52 | - 完善 MQTTX Web 功能 53 | - MQTT Debug 功能 54 | 55 | 56 | 57 |
58 |
59 | 立即体验 MQTTX 60 |
61 | 免费下载 → 62 |
63 | -------------------------------------------------------------------------------- /zh/202208/neuron-newsletter-202207.md: -------------------------------------------------------------------------------- 1 | 七月,我们发布了 Neuron 2.1.1、2.1.2 两个版本,主要修复了 2.1.0 版本中存在的问题。 此外,我们还引入了 SQLite 以存储 Neuron 的配置信息,新增了南向驱动非 A11。同时优化了各插件的错误码,通过错误码可以定位大多数问题。在 CI 中引入了 cppcheck 进行代码的静态检查,在开发阶段就能避免部分问题。 2 | 3 | ## 非 A11 驱动 4 | 5 | 非 A11 驱动适用于非 A11 设备,插件支持 CLIENT 和 SERVER 模式对接设备。目前插件支持 UINT16/INT16/UINT32/INT32/FLOAT/STRING 数据类型,支持用户自定义指令读取数据。 6 | 7 | ## 其他新增功能概览 8 | 9 | - 新增 MQTT 周期上报心跳报文,包含 Neuron 下配置各个 Node 的状态信息等。 10 | - 新增驱动插件测试模版,该模版利用自动测试框架 Robot Framework 的 Template 实现,新增南向驱动利用该测试模版可更加便捷地进行功能测试。 11 | - 引入 SQLite 存储 Neuron 各项配置。 12 | - 三菱驱动 QnA 3E 自动根据配置的点位信息进行批量数据采集,提升采集效率。 13 | - 新增适配西门子 S7-300PLC 的驱动插件。 14 | - 插件停止状态下,将断开与设备的连接,并且读写数据时将会报错。 15 | 16 | ## 问题修复 17 | 18 | - 修复 MQTT 插件某些情况下 CPU 跑满的问题。 19 | - 修复 OPC UA 插件崩溃问题。 20 | - 修复 MODBUS 插件状态显示异常问题。 21 | - 修复 S7COMM 插件 License 校验异常问题。 22 | 23 | ## 文档更新 24 | 25 | - 完善了 Neuron 2.1.0 的官网文档,增加了一些设备配置范例以及一些对应 Neuron 版本的修改。 26 | 27 | ## 即将到来 28 | 29 | - OPC DA 南向插件,可用于连接 OPC DA 服务器。 30 | - Beckhoff 南向插件,可用于连接倍福 Beckhoff 设备。 31 | - 点位订阅,点位采集值变化才进行上报。 32 | - C语言实现的 SDK 包,可使用 SDK 包进行插件开发。 33 | 34 | 35 |
36 |
37 | 免费试用 Neuron 38 |
39 | 开始试用 → 40 |
41 | -------------------------------------------------------------------------------- /zh/202209/ekuiper-newsletter-202208.md: -------------------------------------------------------------------------------- 1 | 8 月,eKuiper 发布了 1.6.1 Fixpack 版本。该版本主要增强了产品运维的稳定性和易用性,包括提供可移植性更强的预编译二进制包、Docker Image 和插件包,管理控制台提供了规则告警等功能。此外,该版本也解决了一些 Bug。接下来,eKuiper 团队将进入 1.7.0 版本的开发周期,更加专注于新功能的开发。 2 | 3 | ## 多平台插件一键安装 4 | 5 | eKuiper 自带的插件在产品发布的持续集成(CI)流水线中会自动预编译和打包,用户在 eKuiper manager 管理控制台中可以选择插件类型,自动拉取预编译包一键安装。 6 | 7 | 之前版本中,预编译插件的编译环境绑定在 Debian/Ubuntu 系统,编译出的插件仅能使用在带 slim 的 Docker 版本中,例如 `lfedge/ekuiper:1.6.0-slim`。用户如果通过二进制安装包或者 alpine 的 Docker Image 部署 eKuiper,需要使用自带插件时,仍然需要通过较为繁琐的步骤进行编译。 8 | 9 | 新版本中,我们重构了 CI 的编译流程,实现了预编译插件的多平台支持。预编译的插件包含两种系统的版本,每个系统下又有多个不同 CPU 架构的预编译包。预编译的插件 URL 格式为 `https://packages.emqx.net/kuiper-plugins/{version}/{os}/{type}/{name}_{arch}.zip`。例如,1.6.1 版本的 Debian 系统下的 Redis sink 插件 AMD64 版本的 URL 为 [https://packages.emqx.net/kuiper-plugins/1.6.1/debian/sinks/redis_amd64.zip](https://packages.emqx.net/kuiper-plugins/1.6.1/debian/sinks/redis_amd64.zip)。预编译插件的有两种 OS 版本:Debian 和 alpine。其中,alpine 专门提供给 Docker Image `lfedge/ekuiper:{version}-alpine` 使用。其余 Linux 平台均可使用 Debian 版本,包括二进制的 tar 包和其余版本的 Docker Image。 10 | 11 | 在新版的 eKuiper manager 中,使用官方的镜像和二进制包,选择插件版本后均可以一键安装插件。 12 | 13 | ### 二进制包低版本系统支持 14 | 15 | 修改了编译流程之后,新的官方二进制包可以支持在较旧的操作系统中使用,例如 Ubuntu 18.04 和 CentOS 7 等 glibC 版本的较低的系统。 16 | 17 | ## Neruon/MQTT 自动重连和连接错误告警 18 | 19 | 使用 Neuron 和 MQTT 连接的规则,若规则运行期间由于网络或应用自身等原因连接断开后,规则将可以得到连接断开的通知。若使用连接的为 source,则连接断开时,source 的异常指标数目会加 1。若使用连接的为 sink,则会在每个数据发送时返回一个发送异常。 20 | 21 | 当故障恢复后,Neuron 和 MQTT 连接会自动重连。新版本中解决了使用 Windows 或 MacOS 的 Docker 运行 eKuiper 时自动重连失效的问题。 22 | 23 | 自动重连的功能保证了规则启动后可以无需人工干预自动从错误中恢复,达到长期稳定运行的效果。但是,由于异常发生时,规则本身仍为运行状态,用户需要点击查看规则的状态才能够知道规则运行中产生过的异常。新版本中,规则的指标添加了 `last_exception` 和 `last_exception_time` 用于获取最近一次异常消息和发生的时间,方便快速地定位问题。 24 | 25 | 新版本的管理控制台中也适配了规则异常指标,提供了规则异常告警功能,并在规则列表中显示,提醒用户进行进一步的排查。告警查看排查完成后,用户可以点击清除告警,以清除已查看过的告警,这样新的告警出现后才会显示在列表页面中。 26 | 27 | ![eKuiper 控制台](https://assets.emqx.com/images/b681cef501e99fdbf2fe8facc16a682a.png) 28 | 29 | ## Bug 修复 30 | 31 | - MQTT 连接默认采用 3.1.1 协议版本,防止 NanoMQ 连接失败 32 | - 兼容 1.5.0 及之前版本的配置文件 33 | - 修复共享源的规则重启可能失败的问题 34 | 35 | ## 即将到来 36 | 37 | 接下来我们将开始 1.7.0 版本的开发。计划中的新功能包括动态表/初步流批一体处理的支持、连接资源管理功能等,敬请期待。 38 | -------------------------------------------------------------------------------- /zh/202209/hstreamdb-newsletter-202208.md: -------------------------------------------------------------------------------- 1 | 继月初 [HStreamDB 0.9](https://hstream.io/zh/blog/hstreamdb-v-0-9-release-notes) 正式发布之后,HStreamDB 团队投入了新的 v0.10 的开发周期。本月主要新增了端到端压缩、CLI 支持 TLS 等功能,并修复了多项已知问题,同时新的 Haskell gRPC 框架以及**云原生的全托管流数据库服务 HStream Cloud** 也正在开发中。 2 | 3 | ## 支持端到端压缩 4 | 5 | 之前版本的 HStreamDB 支持 HServer 端的数据压缩,即数据在发送给 HStore 之前可以被 HServer 先进行压缩,但从 client 到 HServer 的路径上尚不支持压缩。 6 | 7 | 本月我们新引入了端到端的压缩功能,即数据在写入时会在 client 端以 batch 为单位进行压缩,且压缩后的数据会被 HStore 直接进行存储。另外 client 端在消费的时候能够自动进行数据的解压,整个过程对用户无感知。 8 | 9 | 在高吞吐的场景下,通过启用端到端数据压缩能够显著缓解网络带宽瓶颈,提升读写性能,在我们的 benchmark 中显示会有 **4 倍**以上的吞吐提升,当然代价是会增加 client 端的 CPU 消耗。 10 | 11 | 目前此项功能尚未正式发布,但大家可以通过 HStreamDB 的 [latest 镜像](https://hub.docker.com/r/hstreamdb/hstream/tags) 抢先体验。[Java Client v0.10.0-SNAPSHOT](https://s01.oss.sonatype.org/content/repositories/snapshots/io/hstream/hstreamdb-java/0.10.0-SNAPSHOT/) 也已经包含了对端到端压缩的支持(目前仅支持 gzip 压缩),可通过如下代码使用: 12 | 13 | ``` 14 | BufferedProducer producer = 15 | client.newBufferedProducer() 16 | .stream(streamName) 17 | .compressionType(CompressionType.GZIP) 18 | .batchSetting(batchSetting) 19 | .flowControlSetting(flowControlSetting) 20 | .build(); 21 | ``` 22 | 23 | ## 新 Haskell gRPC 框架 24 | 25 | HServer 使用 gRPC 和 client 进行通信,目前我们使用的 Haskell gRPC 框架是通过 Haskell 的 FFI (Foreign Function Interface) 绑定到 gRPC C core lib 的。为了增强性能与稳定性,我们正在尝试开发一套新的 Haskell gRPC server 框架进行替换。 26 | 27 | 新框架受 [hsthrift](https://github.com/facebookincubator/hsthrift) 的启发,将基于 C++ gRPC server 来实现,并且基本不需要对目前的 Haskell 源代码进行改动。目前新框架还在开发和测试过程中,预计将在 v0.10 正式发布。 28 | 29 | ## HStream CLI 30 | 31 | 本月 HStream CLI 也新增了对 TLS 的支持,可参考[文档](https://hstream.io/docs/en/latest/cli/cli.html)使用。 32 | 33 | 另外, CLI 还带来了以下新功能和改进: 34 | 35 | - 新增了多行的 SQL 语句输入的支持 36 | - 新增了 -e、--execute 选项用于非交互式地执行 SQL 语句 37 | - 新增了对输入命令的历史记录的持久化支持 38 | - 优化了执行 SQL 时的错误信息提示 39 | 40 | ## 其它问题修复和改进 41 | 42 | - 更新了 HStream Helm chart 对 v0.9 的部署支持 43 | - 修复了订阅可能会将分区分配给已经失效的 Consumer 的问题 44 | - 修复了 gossip 模块使用 `withAsync` 引起的内存泄漏问题 45 | - 修复了创建 view 时没有检查依赖的 stream 是否存在的问题 46 | - 修复了新节点加入集群时可能会失败的问题 47 | - 改进了 seed-nodes 重启的流程 48 | - 改进了集群启动时对 address 的处理 49 | - 优化了 gossip 模块的线程使用和调度 50 | 51 | ## HStream Cloud 即将上线 52 | 53 | 我们正在开发 HStream Cloud —— 基于公有云平台的 **Streaming-Database-as-a-Service** 服务。Early Access 版本即将上线,用户将无需部署和运维,即可快速上手使用 HStreamDB。敬请期待。 54 | -------------------------------------------------------------------------------- /zh/202209/mqttx-newsletter-202208.md: -------------------------------------------------------------------------------- 1 | 本月,[MQTTX](https://mqttx.app/zh) 团队发布了 1.8.2 版本,目前正专注于 1.8.3 版本的开发。在 1.8.2 版本中,我们主要优化了使用体验并修复了 MQTTX 桌面端 1.8.1 版本中的一些使用问题,新增了使用 Docker 来安装和部署 MQTTX CLI 与 MQTTX Web,同时 MQTTX Web 支持了更多的 MQTT 5.0 属性配置。 2 | 3 | ## MQTTX 桌面端应用 4 | 5 | ### 支持在设置页面中开启或关闭多主题订阅 6 | 7 | 在之前的版本中,MQTTX 默认支持开启多主题订阅。使用方法是:在输入主题时,使用逗号来分割多个主题,但是当订阅的主题中包含了逗号时,就无法单个订阅此主题,这给存在这类特殊需求的用户带来了困扰。 8 | 9 | 在最新的 1.8.2 版本中,我们优化了这个问题,在设置页面新增了一个启用多主题订阅的开关,默认开启,当关闭后就可以订阅单个包含有逗号字符的主题。 10 | 11 | ![MQTT 多主题订阅](https://assets.emqx.com/images/cd29f9b0b3f74c805e844b1a8811d341.png) 12 | 13 | ### 其它使用问题优化 14 | 15 | - 移除了在发布消息时,对包含有 `$` 符号的主题的验证 16 | 17 | - 修复了无法在编辑连接内,修改用户属性的问题 18 | - 修复了在编辑页面内,删除连接后页面跳转的问题 19 | - 优化了订阅主题失败时的错误信息 20 | 21 | ## MQTTX Web 22 | 23 | 在线使用地址:[https://mqttx.app/web-client/](https://mqttx.app/web-client/) 24 | 25 | ### 支持更多 MQTT 5.0 属性 26 | 27 | 支持在 MQTTX Web 中配置连接、发布时的用户属性,支持订阅选项等。 28 | 29 | ![MQTTX Web 支持更多 MQTT 5.0 属性](https://assets.emqx.com/images/d4fada751fd230ce202255c8caeea1a6.png) 30 | 31 | ### 支持使用 Docker 部署 32 | 33 | 除提供在线的公共访问地址外,MQTTX Web 还支持使用 Docker 来进行私有化部署。对于一些只能在内网环境,或想通过浏览器来访问和私有化使用 MQTTX Web 的用户来说,我们为其提供了更加方便和自由的使用方式,这使得用户无论在什么环境下都可以轻松访问 MQTTX Web 来更快地测试您的 MQTT 服务与应用。 34 | 35 | 使用 Docker 镜像部署 MQTTX Web: 36 | 37 | ``` 38 | docker pull emqx/mqttx-web 39 | 40 | docker run -d --name mqttx-web -p 80:80 emqx/mqttx-web 41 | ``` 42 | 43 | ## MQTTX CLI 44 | 45 | ### 支持使用 Docker 安装 46 | 47 | 在之前的版本中,MQTTX CLI 除提供了 macOS、Linux 和 Windows 上的的可执行文件外,还支持在 macOS 上使用 Homebrew,在包含 Node.js 环境的操作系统中使用 NPM 等方式来安装和使用 MQTTX CLI。 48 | 49 | 在最新的 1.8.2 版本中,我们还继续增加了支持 Docker 来安装和使用 MQTTX CLI。无论在什么操作系统环境,用户都能轻松安装并使用 MQTTX CLI,进行 MQTT 服务与应用的测试。 50 | 51 | 使用 Docker 镜像来安装 MQTTX CLI: 52 | 53 | > 注意:使用如下 Docker 命令安装 MQTTX CLI 成功后,会自动进入到该容器内,您可以在容器内直接使用 mqttx 命令,使用完退出时,系统将自动删除容器 54 | 55 | ``` 56 | docker pull emqx/mqttx-cli 57 | 58 | docker run -it --rm emqx/mqttx-cli 59 | ``` 60 | 61 | ## 未来规划 62 | 63 | MQTTX 还在持续增强完善中,以期为用户带来更多实用、强大的功能,为物联网平台的测试和开发提供便利。 64 | 65 | 接下来我们将重点关注以下方面: 66 | 67 | - 使用体验升级 68 | - MQTTX CLI 将支持 bench 命令 69 | - 插件系统(例如支持 SparkPlug B、集成 MQTTX CLI) 70 | - 脚本功能优化 71 | - 推出 MQTTX Mobile 移动端应用 72 | - 完善 MQTTX Web 功能 73 | - MQTT Debug 功能 74 | 75 | 76 | 77 |
78 |
79 | 立即体验 MQTTX 80 |
81 | 免费下载 → 82 |
83 | -------------------------------------------------------------------------------- /zh/202210/ekuiper-newsletter-202209.md: -------------------------------------------------------------------------------- 1 | 本月,eKuiper 处于 v1.7.0 的开发周期中,开发团队和社区的伙伴共同完成了一系列的新功能。我们初步实现了 Lookup Table(查询表)的支持,从而完善了流批结合的运算能力,例如实时数据补全的能力。另外,我们扩展和优化了数据集成,添加了 HTTP 推送源、Influx V2 sink;扩展了 EdgeX 源的数据格式支持。同时,本月底我们也发布了 1.6.2 版本,主要是 Bug 修复和管理控制台的增强。 2 | 3 | ## 流批结合计算 4 | 5 | 并非所有的数据都会经常变化,即使在实时计算中也是如此。在某些情况下,你可能需要用外部存储的静态数据来补全流数据。例如,用户元数据可能存储在一个关系数据库中,流数据中只有实时变化的数据,需要连接流数据与数据库中的批量数据才能补全出完整的数据。新的版本中,eKuiper 添加了新的 Lookup Table 概念,用于绑定外部静态数据,可以在规则中与流数据进行连接,实现流批结合的运算。 6 | 7 | 使用查询表时,通常有三个步骤。 8 | 9 | 1. 创建数据流。该步骤与之前创建普通数据流的过程无异。 10 | 11 | `CREATE STREAM demoStream() WITH (DATASOURCE="demo", FORMAT="json", TYPE="mqtt")` 12 | 13 | 2. 创建查询表。创建表时,增加了新的属性 KIND,用于指定是否为查询表。此处表的源类型为 SQL,需要在 etc/sources.sql.yaml 中配置数据库连接的相关信息。DATASOURCE 属性指定了要连接的物理表名。 14 | 15 | `CREATE TABLE myTable() WITH (DATASOURCE=\"myTable\", TYPE=\"sql\", KIND=\"lookup\")` 16 | 17 | 3. 创建规则,连接流和表,并进行计算。 18 | 19 | `SELECT * FROM demoStream INNER JOIN myTable on demoStream.id = myTable.id` 20 | 21 | 与之前版本支持的动态表不同,查询表不需要在内存中存储表数据的快照,而是在连接时直接查询外部数据,从而可支持更大量的静态数据的查询。查询表提供了可配置的数据内存缓存的支持,提高查询效率。 22 | 23 | 查询表本身需要有存储能力,因此并非所有数据源都可作为查询表类型。目前,我们适配或添加了以下几种查询源(source): 24 | 25 | - SQL 26 | - Redis 27 | - Memory :配合规则流水线,可将别的规则的历史结果作为查询源使用 28 | 29 | 此外,原生插件中增加了 LookupSource 接口,供用户自定义查询源扩展。 30 | 31 | ## 使用 HTTP 推送数据流 32 | 33 | 新增了 httppush source ,它作为一个 HTTP 服务器,可以接收来自 HTTP 客户端的消息。所有的 HTTP 推送源共用单一的全局 HTTP 数据服务器。每个源可以有自己的 URL,这样就可以支持多个端点。HTTP 推送源的配置分成两个部分:全局服务器配置和源配置。全局服务器配置位于 `etc/kuiper.yaml` 中,可配置服务器的监听地址和端口,以及 HTTPS 的相关证书配置。源配置位于 `etc/sources/httppush.yaml` 中,用于配置推送的 HTTP 方法。创建数据流时,可通过 DataSource 属性,配置数据流监听的 URL 端点,从而区分各个数据流的推送 URL。 34 | 35 | ``` 36 | CREATE STREAM httpDemo() WITH (DATASOURCE="/api/data", FORMAT="json", TYPE="httppush") 37 | ``` 38 | 39 | 在此例中,DataSource 配置为 `/api/data`。假设用户使用默认服务器配置,则推送到 `http://localhost:10081/api/data` 中的数据将形成数据流 httpDemo。后续可创建规则对该数据流进行处理。 40 | 41 | ## InfluxDB 2.x Sink 42 | 43 | 之前的版本中,eKuiper 提供了 InfluxDB sink,支持写入数据到 1.x 版本的 InfluxDB 中。然而,由于 InfluxDB 2.x 的 API 不兼容 v1,原有的 sink 不支持写入到 v2 中。新的版本中,感谢社区用户 @elpsyr 提供了 InfluxDB 2.x sink 插件,我们实现了写入 InfluxDB 2.x 的支持。 44 | 45 | ## 处理 EdgeX Foundry 图像数据 46 | 47 | EdgeX Foundry 中使用 `application/cbor` 格式传输二进制数据,例如图像数据。新的版本中,我们提供了对该格式的支持,使得用户使用 eKuiper 处理 EdgeX 中的图像数据成为可能。Edge X Camera 服务采集到图像数据,可通过 eKuiper 进行预处理、AI 推理、后处理等,从而实现使用 SQL 规则完成 AI 图像处理流水线的功能。 48 | 49 | ## 即将到来 50 | 51 | 下个月我们将继续进行 v1.7.0 的开发,计划的新功能包括连接资源管理、分流计算等。预计将在 10 月底完成发布。 52 | -------------------------------------------------------------------------------- /zh/202210/neuron-newsletter-202209.md: -------------------------------------------------------------------------------- 1 | 九月,我们发布了 Neuron 2.2。该版本增加了一系列新驱动以及新特性:新增 Beckhoff ADS、OPC DA、NONA11 驱动,统一了 HTTP 服务对外暴露的端口。 此外,本月我们专注于数据统计以及事件告警系统的搭建,计划在 Neuron 2.3 中将系统内部的关键数据统以及关键事件通过 Prometheus 规范反馈出来,完善在 Neuron 使用过程中对其及其所连接设备的监控管理。 2 | 3 | ## 数据升级 4 | 5 | 最新版本中增加了从 Neuron 1.x 升级至 2.x 的数据升级脚本,同时 Neuron 2.2 之后在安装包中集成了数据升级,在安装新版本时,可自动将老版本的数据升级到新版本支持,无需在安装新版本后再次配置设备以及设备点位数据。 6 | 7 | 在 Neuron 2.2 中引入 SQLite 存储 Neuron 配置信息之后,Neuron 采用了 SQL schema 来对数据存储组织格式进行版本管理,便于在版本升级时进行数据升级。 8 | 9 | ## 关键数据统计以及事件通知 10 | 11 | Neuron 将在 2.3 版本中提供基于 HTTP 与 MQTT 的数据统计插件,将 Neuron 中的一些关键数据及关键事件反馈出去。 12 | 13 | 统计信息主要为南北向 node 数据统计,包括 node 数量、运行中 node 数量、与设备断开连接的 node 数量、南向 node 中配置的点位数量、node 收发数据的字节数、指令数,以及 node 中更为细致的一些状态信息,如与设备之间的延迟等。 14 | 15 | 事件通知主要在 Neuron 内部,将一些关键变更作为事件,通知外部。如增删改设备的相关配置以及点位信息、Neuron 与设备建立连接以及断开连接等。 16 | 17 | 其中基于 HTTP Server 的接口,将以符合 Prometheus 规范的数据格式进行统计信息以及事件的汇总,方便接入 Prometheus 监控系统,对 Neuron 及其设备进行监控管理。 18 | 19 | ## 即将到来的驱动 20 | 21 | ### QnA 1E 驱动 22 | 23 | 此驱动与现有驱动 QnA 3E 类似,主要对接三菱 PLC 中一些比较老的型号,支持以串口连接的方式进行通讯。支持的数据类型与 QnA 3E 相同,囊括了常用的数据类型。 24 | 25 | ### CNC FANUC 驱动 26 | 27 | 此驱动主要应用于 CNC(数控机床),与 FANUC 的数控机床进行交互,获取机床的一些基本信息,如主轴速度、距离、绝对与相对位置信息等。 28 | 29 | ## 问题修复 30 | 31 | - 修复 float 以及 double 类型的数据精度问题。 32 | - 修复导入大量点位花费时间较长的问题。 33 | 34 | ## 其他更新 35 | 36 | - UI 修改导入导出至 group 列表页面,现在可以一次导入导出多个 group 的点位数据。 37 | 38 | - UI 完善错误提示。 39 | 40 | 41 | 42 |
43 |
44 | 免费试用 Neuron 45 |
46 | 开始试用 → 47 |
48 | -------------------------------------------------------------------------------- /zh/202210/xmeter-newsletter-202209.md: -------------------------------------------------------------------------------- 1 | 本月,XMeter Cloud 1.0.2 上线,新增了用户邮件通知功能,修复了部分 bug。同时,XMeter Cloud 专业版的开发工作也已启动。 2 | 3 | ## 上线邮件通知功能 4 | 5 | 为了提升 XMeter Cloud 用户的使用体验,在如下的重要时间节点,用户将收到来自 XMeter 团队的邮件通知: 6 | 7 | - 首次注册发放 300 元测试代金券时 8 | - 测试代金券即将过期时 9 | - 向账户充值时 10 | - 每月 1 日月账单生成时 11 | 12 | ## XMeter Cloud 专业版开发中 13 | 14 | 专业版旨在向用户提供更优质的持续性能测试服务。目前正在开发与规划中的新特性包括: 15 | 16 | - 不限连接数与吞吐量的大规模 MQTT 测试支持 17 | - 基于不同规格资源包的灵活计费方式 18 | - 通过 VPC 私有网络发起 MQTT 测试,获取更小时延的同时节省公网流量 19 | - 更多协议测试场景的支持 20 | - 完善账单功能 21 | 22 | 23 | 24 | 25 | 26 |
27 |
28 | 免费试用 XMeter Cloud 29 |
全托管的 MQTT 负载测试云服务
30 |
31 | 开始试用 → 32 |
33 | -------------------------------------------------------------------------------- /zh/202211/neuron-newsletter-202210.md: -------------------------------------------------------------------------------- 1 | 十月份,我们发布了 Neuron 2.2.6 与 2.2.7 版本,优化修复了在 2.2 版本中发现的一系列问题;新增了监控插件,主要用于以 HTTP、MQTT 的方式对外提供系统内部以及各插件特有的一些监控统计信息;新增三菱 A1E 驱动以适配三菱较老的 PLC 型号;新增 FANUC 驱动支持从发那科机床上采集一些基础数据。 2 | 3 | ## 监控统计 4 | 5 | 开源版 Neuron 增加了监控插件,目前以 HTTP Server 的方式,基于 Prometheus 的数据格式,对外提供一些 Neuron 内部数据以及每个插件通用与自定义的统计字段;新增插件接口,实现基于此接口对外暴露一些插件内部数据;现有插件的监控统计信息也在逐步完善中。 6 | 7 | 监控插件后续还将增加基于 MQTT 对外提供 Neuron 的监控数据。 8 | 9 | ## 新增驱动 10 | 11 | ### 三菱 A1E 驱动 12 | 13 | 此驱动与三菱 QnA3E 驱动类似,实现了 MC 协议的 1E 帧通讯格式,通过以太网连接读写 PLC 软元件。该驱动可以操作三菱 A 系列 PLC、FX3U/FX3G 系列 PLC 和 FX5U 系列 PLC。 14 | 15 | 数据类型可支持:BIT、INT16、UINT16、INT32、UINT32、FLOAT、DOUBLE、STRING。 16 | 17 | ### FAUNC 驱动 18 | 19 | 此驱动主要用于发那科部分型号数控机床,支持通过网络进行连接,支持读取数控机床的 axis feedrate、axis position、spindle speed、distance 等数据。 20 | 21 | 数据类型可支持 INT64 和 STRING。 22 | 23 | ## 日志 API 24 | 25 | 增加了日志相关的 HTTP API,包括修改日志等级、下载日志文件等。修改日志等级的 API 可单独为每一个node 开启 Debug 日志,且每个 node 日志单独输出到 node 对应的日志文件。下载日志 API 将一次性压缩下载所有日志文件,使调试和排查问题更加方便容易。 26 | 27 | ## 其他更新 28 | 29 | - 新增基于 SDK 开发北向应用的文档。 30 | - 完善 S7 驱动文档。 31 | - UI 优化,南向设备管理页面支持搜索过滤,在连接大量设备时方便管理。 32 | - MODBUS RTU 优化,支持一个串口连接多个设备。 33 | 34 | ## 问题修复 35 | 36 | - 修复大量配置请求时,数据库超时的问题。 37 | - 修复 UI 写入 UINT32 数据类型错误的问题。 38 | - 修复 OPC UA 采集数据较慢的问题。 39 | 40 | 41 |
42 |
43 | 免费试用 Neuron 44 |
45 | 开始试用 → 46 |
47 | -------------------------------------------------------------------------------- /zh/202212/custom-jmeter-plug-in.md: -------------------------------------------------------------------------------- 1 | ## 前言 2 | 3 | 在本系列专题之前的文章中,我们已经介绍了 JMeter 扩展开发的一些方法。但是在开发过程中还有一个需要处理的环节,是对编写的代码进行调试。一种方式是将开发的扩展与 JMeter 源码放在一起进行调试,编译与构建 JMeter 源码的具体说明可以参考:[https://jmeter.apache.org/building.html](https://jmeter.apache.org/building.html) 。但是这种方法的缺点是需要将整个 JMeter 的源码都放在工作空间,如果新开发的扩展只是一个小插件的话,这样做就会有点过于重量级。 4 | 5 | 本文将介绍另一种比较轻量级的方式:利用 Java 远程调试(Remote Java Application)来完成对自己开发的 JMeter 扩展的调试。 6 | 7 | 8 | ## 过程 9 | 10 | 我们首先回忆一下开发好的 JMeter 扩展是如何部署到 JMeter 中的:首先将扩展代码编译生成 jar 包,拷贝到 JMeter 扩展目录 $JMETER_HOME/lib/ext 下面,然后重新启动 JMeter,就会发现新加入的扩展插件。 11 | 12 | 为了支持 JMeter 的 Java 远程调试,先要修改下 JMeter 启动时的 JVM 参数。 13 | 14 | - 用文本编辑器打开 $JMETER_HOME/bin/jmeter.sh(如果是 Windows 操作系统的话,打开jmeter.bat); 15 | - 在 jmeter.sh 中定位到 JMeter 启动的位置(该位置通常在最后),并在该位置之前加入一行,在指定的端口上开启远程调试功能。下面的参考配置就是在端口 12345 上开启: 16 | 17 | ``` 18 | JVM_ARGS="$JVM_ARGS -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=12345" 19 | ``` 20 | 21 | 重启 JMeter,如果配置正确的话,在 JMeter 启动的控制台上会打印出类似于下面的语句: 22 | 23 | ``` 24 | Listening for transport dt_socket at address: 12345 25 | ``` 26 | 27 | 切换到开发 JMeter 扩展的 IDE 工作空间,以 Eclipse 为例,选中该扩展的项目,然后右键打开“调试配置(Debug Configurations)”,选中“Remote Java Application”,新建一个远程调试配置,并配置好 JMeter 运行所在的机器的 Host 和端口号,如下图所示,配置的是本地运行的 12345 端口 28 | 29 | ![Remote Java Application](https://assets.emqx.com/images/2168e1d0b1430e45807637a08c3a9c71.png) 30 | 31 | 创建好配置后,点击上图对话框中的 Debug 按钮,然后在 Debug 透视图中能看到类似于如下截图的内容,表示已经成功通过端口连接到本地 JMeter 的 JVM 上。 32 | 33 | ![Debug 透视图](https://assets.emqx.com/images/b7e28e4f21912bb37f7f325e405010ac.png) 34 | 35 | 在代码中需要调试的位置打好断点,在 JMeter 上进行相应操作后,即可在 Eclipse 中看到相关的调试内容,如下所示: 36 | 37 | ![查看调试内容](https://assets.emqx.com/images/0c9a912e6f119d66120a43153265d3d3.png) 38 | 39 | 40 | ## 总结 41 | 42 | 利用 Java 提供的远程调试的功能对 JMeter 扩展插件进行调试,可以比较方便地掌控 JMeter 插件在实际运行过程中的状况,更好地协助开发人员完成扩展的开发。不过也需要注意的是,这种方式有个缺点:每次开发中改了代码后再次调试,需要将更新后的 JMeter 扩展重新编译、打包、部署,并重启 JMeter。如果调试过程中频繁改动代码的话,这种调试方式稍显麻烦。读者可根据自己的实际情况选择更合适的调试方式。 43 | 44 | 45 | 46 | 47 | 48 |
49 |
50 | 免费试用 XMeter Cloud 51 |
全托管的 MQTT 负载测试云服务
52 |
53 | 开始试用 → 54 |
55 | -------------------------------------------------------------------------------- /zh/202212/hstreamdb-newsletter-202211.md: -------------------------------------------------------------------------------- 1 | 本月我们发布了 HStreamDB 0.11,修复了多项已知问题。同时也在继续推进 HStream Platform 的开发,并计划于下月底上线首个 Alpha 版本。 2 | 3 | 4 | ## v0.11 发布 5 | 6 | 随着 HStreamDB 项目的日益成熟,为了更好地适应项目发展,我们决定逐渐缩短发版周期,以更快的速度进行迭代。因此,继上月底我们发布 v0.10 之后,本月我们又发布了 v0.11,主要带来了以下更新和问题修复: 7 | 8 | - 调整 HServer 的启动参数 `host` 和 `address` 为 `bind-address` 和 `advertised-address` ,使它们更容易被理解和使用 9 | - 移除 HServer 端的压缩选项,目前推荐使用端到端压缩功能 10 | - 统一内部资源命名规则并改进了相应的资源命名校验 11 | - 支持获取 stream 和 subscription 的创建时间 12 | - 修复对部分 Client 的 RPC 请求的路由校验 13 | - HStream CLI 新增 subscription 子命令 14 | - 修复提交 subscripton 进度可能失败的问题 15 | - 修复 query 的 join 可能产生错误结果的问题 16 | - 修复写操作超时不可重试的问题 17 | 18 | 19 | ## hdt 新增对 ELK Stack 的部署支持 20 | 21 | hdt 是 HStreamDB 的自动化集群部署工具,目前它除了能在多个节点上快速部署 HStreamDB 的核心组件外,还支持同时可选地部署 Prometheus、HStream Exporter、Grafana 等监控组件。 22 | 23 | 为了更方便用户部署测试以及观测 HStreamDB 集群,本月 hdt 新增了支持通过部署 ELK Stack 来收集和查询 HStreamDB 的运行日志,如果启用了相应选项,hdt 在部署的过程中会自动配置好 Logstash 将 HStreamDB 集群的日志导入 ElasticSearch,并提供默认的 Kibana 面板。 24 | 25 | ![Kibana 面板](https://assets.emqx.com/images/f4386bda64016de907156916f5fd5316.png) 26 | 27 | 28 | ## HStream Platform 即将上线 29 | 30 | HStream Platform 是我们即将推出的基于公有云的 **Serverless** 流数据平台服务,提供免部署、零运维、高可用、一站式的流数据存储、实时处理和分析服务。 31 | 32 | HStream Platform 的首个 Public Alpha 版本计划将于**下月底**上线,届时将提供免费的注册试用,敬请期待!您也可以在 [![img](https://hstream.io/favicon-16x16.png)The Next-Gen Streaming Data Platform in the Cloud](https://hstream.io/cloud) 提前注册,第一时间获取上线通知。 33 | -------------------------------------------------------------------------------- /zh/202212/neuron-newsletter-202211.md: -------------------------------------------------------------------------------- 1 | 11 月我们发布了 [Neuron](https://github.com/emqx/neuron) 2.2.11 版本,主要优化修复了一系列在 2.2 版本中发现的问题,同时为 2.3 版本的发布做准备:增加 EtherNet/IP 驱动,完善 CNC FOOCAS 驱动,OPC DA 支持远程连接;MQTT 插件依赖库切换为 NanoSDK,极大提高数据收发性能。 2 | 3 | ## 新增 EtherNet/IP 驱动 4 | 5 | EtherNet/IP 是由 ODVA 规范管理并公开的工业通信网络。OVDA 是一家国际标准开发组织,由世界领先的自动化供应商成员组成,EtherNet/IP 正是这个组织的代表作。EtherNet/IP 通过将 CIP 协议、TCP/IP、以太网这三者组合之后得以实现。 6 | 7 | Neuron 新增的该协议驱动支持较为完善的数据类型,包括:UINT8/INT8、UINT16/INT16、UINT32/INT32、UINT64/INT64、FLOAT、DOUBLE、STRING、BIT。可用于连接支持 EtherNet/IP 协议的 PLC 设备。 8 | 9 | ## 完善 CNC FOCAS 驱动 10 | 11 | CNC FOOCAS 驱动现支持更多类型的数据采集,包括 CNC 相关数据以及 PMC 区域的数据。 12 | 13 | CNC 数据主要有 AXIS 相关数据(位置、速率等),以及 SPINDLE 相关数据。 14 | 15 | PMC 数据支持采集的数据区域包括 message demand、counter、data table、extended relay、single to CNC → PMC、single to PMC → CNC、keep relay、input single from other device、output single from other device、internal relay、changeable timer、signal to machine → PMC、single to PMC ->machine;每个区域都支持多种数据类型。 16 | 17 | ## OPC DA 远程连接 18 | 19 | - 添加了局域网跨主机访问的功能; 20 | - 添加了 GUI——可视化设置 DA 和 UA 连接参数,可以直观看到测点数据变化; 21 | - UA 服务器添加了默认加密连接和用户名/密码认证等功能; 22 | - 主程序名称由 opcshift 更改为 neuopc; 23 | - 添加了 DCOM 跨主机访问的设置文档; 24 | - 添加了本机数据源读取的设置文档; 25 | 26 | ## 其他更新 27 | 28 | - WEB 与 API 端口统一为 7000。 29 | - 增加适配 DTU 文档。 30 | - 完善官网文档,适配即将发布的 2.3 版本。 31 | 32 | ## 问题修复 33 | 34 | - 修复 [Modbus](https://www.emqx.com/zh/blog/modbus-protocol-the-grandfather-of-iot-communication) 插件处于 server 模式时重连异常的问题。 35 | 36 | 37 | 38 |
39 |
40 | 免费试用 Neuron 41 |
42 | 开始试用 → 43 |
44 | -------------------------------------------------------------------------------- /zh/202212/neuron-newsletter-202212.md: -------------------------------------------------------------------------------- 1 | 十二月,我们发布了 Neuron 2.3.0 版本。该版本主要新增了监控模块,Neuron 内部的关键数据可通过 HTTP API 对外暴露;南向增加了西门子 FetchWrite 驱动,主要用于西门子 S7-300/400 系列 PLC;北向增加 WebSocket 应用,支持读写数据上报。此外,IEC60870-5-104 驱动功能进行了扩展,新增对时请求以及点位写控制支持。 2 | 3 | ## 新增监控模块 4 | 5 | 2.3 版本新增的监控模块通过 HTTP API 将 Neuron 内部的关键数据对外暴露,方便用户对 Neuron 以及设备进行监控管理。 6 | 7 | ## 协议驱动更新 8 | 9 | ### 新增西门子 FetchWrite 驱动 10 | 11 | 西门子的以太网通信模块提供了一种基于 TCP 的 FETCH WRITE 通信方式,该方式无需在 PLC 侧编程就可以得到 PLC 内的所有数据。 12 | 13 | 该驱动基于 FetchWrite 标准协议实现,用于带有网络扩展模块 CP443 的西门子 PLC 访问。可支持 DB、M、I、Q、PEPA、Z、T 等区域的多种数据类型读写。 14 | 15 | ### IEC60870-5-104 驱动 16 | 17 | 增加对时请求,此驱动将会周期性地向设备发送对时请求,同步设备时间。 18 | 19 | 点位支持写操作,现有支持的数据类型 BIT、INT16/UINT16、FLOAT 都支持写入操作。 20 | 21 | ### 新增 EtherNet/IP(CIP)驱动 22 | 23 | 此驱动属于通用驱动,对于支持此驱动的 PLC 都可以进行数据采集与设备控制。 24 | 25 | ## WebSocket 应用 26 | 27 | 支持通过 WebSocket 协议上报所订阅点位数据,上报的数据格式与现有北向 MQTT 插件一致。 28 | 29 | ## 读写文件驱动 30 | 31 | 新增读写文件的驱动,目前已实现读取文件内容的功能。将点位地址设置为文件的绝对路径,点位值将以 string 类型输出读取到的文件内容。后续会支持写文件功能。 32 | 33 | ## 其他更新与问题修复 34 | 35 | - UI 优化以及部分问题修复。 36 | - 官网文档优化完善。 37 | - 修复了某些情况下 OPC UA 异常退出的问题。 38 | 39 | 40 | 41 | 42 | 43 |
44 |
45 | 免费试用 Neuron 46 |
47 | 开始试用 → 48 |
49 | -------------------------------------------------------------------------------- /zh/202212/xmeter-newsletter-202211.md: -------------------------------------------------------------------------------- 1 | 本月,XMeter 团队仍将工作重心放在 [XMeter Cloud](https://www.emqx.com/zh/products/xmeter) 专业版的开发上。目前,XMeter Cloud 专业版计划于下个月上线,将为有大规模 MQTT 测试需求的用户提供更有力的支持,敬请期待。 2 | 3 | ## 模拟更高并发连接和消息吞吐 4 | 5 | XMeter Cloud 基础版侧重于帮助用户快速体验 MQTT 性能测试服务,因此设置了 1000 并发连接和 1000 消息吞吐的规模限制。 6 | 7 | 专业版旨在向用户提供正式的持续性能测试环境,在可支持的 MQTT 并发连接数及消息吞吐量上都有大幅提升,与 XMeter Cloud 内置的多种 MQTT 经典测试场景配合使用,可快速运行高压力、稳定性等负载测试。 8 | 9 | ## 支持 VPC 测试 10 | 11 | 专业版将支持基于 VPC 对等连接的私有网络测试。完成与 XMeter Cloud 的 VPC 对等连接设置后,即可使用该对等连接来使用内网地址进行测试,降低网络时延的同时减轻带宽费用负担。 12 | 13 | 推出的 VPC 测试将首先基于华为云,如果您需要测试的 MQTT 服务搭建于其他平台上,也可以联系我们沟通支持规划。 14 | 15 | ## 更灵活的计费方式 16 | 17 | 专业版的测试定价将基于测试时长以及测试规格两个维度,以适配不同规模的性能测试。我们将推出基于资源包的预付费方式,提供不同规格的资源包,以灵活满足各种测试规模的需求。 18 | 19 | 20 | 21 |
22 |
23 | 免费试用 XMeter Cloud 24 |
全托管的 MQTT 负载测试云服务
25 |
26 | 开始试用 → 27 |
28 | -------------------------------------------------------------------------------- /zh/202301/hstreamdb-newsletter-202212.md: -------------------------------------------------------------------------------- 1 | 本月我们发布了 HStreamDB 0.12,更新了对应的 Java Client 支持,同时带来了 HStream Operator 的首个版本以及新的 HStream Gateway 组件。 2 | 3 | ## HStreamDB 0.12 发布 4 | 5 | 本月 HStreamDB 0.12 版本已经发布,主要带来了以下更新和问题修复: 6 | 7 | - 新增支持基于本地文件的元数据存储,主要用于简化本地开发和测试环境下的部署 8 | - 新增 advertised-listener 的 TLS 支持 9 | - 新增获取连接到订阅上的客户端信息(包括 IP、客户端 SDK 的类型和版本等)的 RPC 接口 10 | - 新增用于获取订阅消费进度的 RPC 接口 11 | - 新增列出当前 ShardReader 的 RPC 接口 12 | - 新增对内部存储消费进度的 stream 的副本数的配置支持 13 | - 修复了某些情况下订阅的消费进度没有被正确保存的问题 14 | - CLI 工具若干优化:部分命令选项简化、集群交互改进、请求重试、删除命令改进 15 | - SQL 层切换到新的 planner 实现 16 | - 提升了稳定性和性能 17 | - 改进了对 FROM 语句中的子查询的支持 18 | - 新增 EXPLAIN 语句用于查看逻辑执行计划 19 | - 整体采用更为模块化的设计,方便后续扩展和优化 20 | 21 | ## Java Client 0.11&0.12 发布 22 | 23 | 本月 Java Client 发布了 0.11 和 0.12 两个版本,包括对 HStreamDB 0.11 和 0.12 新特性的支持,主要更新有: 24 | 25 | - 新增支持获取 `stream` 和 `suscription` 的创建时间 26 | - 新增支持从 `ReceviedRecord` 获取 record 的发布时间(指 HStreamDB 收到对应数据时间) 27 | - `HStreamClient` 新增 `listConsumers` 方法 28 | - `HStreamClient` 新增 `getSubscription` 方法 29 | - 新增默认的请求超时配置 30 | - 规范了连接 HStreamDB 的 URL 的 schema,包括 `hstream://`(plaintext 连接)和 `hstreams://` (TLS 连接) 31 | 32 | ## HStream Gateway 33 | 34 | HStream Gateway 是 HStreamDB 的独立网关组件。在一般的使用场景中它不是必须的,但在某些场景下,比如跨网络访问,出于多种考虑不希望直接暴露 HStreamDB 的集群地址,或者客户端无法直连 HStreamDB 集群的场景,它是非常适用的。 由于 HStreamDB 有自己特定的客户端请求路由协议,无法直接前置通用的代理服务器或者负载均衡器,因此需要专门的 HStream Gateway。 35 | 36 | 目前 HStream Gateway 除了能够代理客户端到 HStreamDB 集群的所有请求,还提供了客户端认证、TLS 终结、请求限流等功能。此外,Gateway 可搭配通用的负载均衡器使用,也支持 gRPC 的客户端负载均衡协议。 37 | 38 | ## HStream Operator 首个版本发布 39 | 40 | HStream Operator 是面向 Kubernetes 的 HStreamDB 自动部署和运维系统,旨在提供对 HStreamDB 的包括部署、扩缩容、配置更新、版本升级、备份恢复等过程的全生命周期自动化管理。通过 HStream Operator,HStreamDB 可以无缝运行在多个公有云或私有部署的 Kubernetes 环境下。 41 | 42 | 本月我们推出了 HStream Operator 的首个版本,该版本主要提供了自动化部署包括 HServer 和 HStore 等 HStreamDB 的核心组件以及 bootstrap 集群的能力,另外还支持通过配置 `PVC` 对数据进行持久化存储。 43 | 目前可参考[文档](https://github.com/hstreamdb/hstream-operator/blob/main/docs/zh_CN/getting-started/getting-started.md)使用 HStream Operator。 44 | 45 | ## 即将到来 46 | 47 | HStream Platform 是我们即将推出的基于公有云的 **Serverless** 流数据平台服务,提供免部署、零运维、高可用、一站式的流数据存储、实时处理和分析服务。 48 | 49 | 本月 HStream Platform Alpha1 已进入内部测试阶段,内测完成后将很快发布公测版本,敬请期待!您也可以在 [https://hstream.io/cloud](https://hstream.io/cloud) 提前注册,第一时间获取上线通知。 50 | -------------------------------------------------------------------------------- /zh/202303/ekuiper-newsletter-202302.md: -------------------------------------------------------------------------------- 1 | eKuiper 团队于年前发布了 [1.8.0 版本](https://www.emqx.com/zh/blog/ekuiper-v-1-8-0-release-notes),并在 2 月对该版本的文档进行了完善,同时通过 EMQ Demo Day 直播帮助用户更进一步了解新功能的使用场景(直播观看地址:[LF Edge eKuiper 1.8 新功能演示_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1EY411e7F8/?buvid=Z743CB7E8E1ECB59410986CA49384DBE7821&is_story_h5=false&mid=CwImi%2BEmNTsMt%2B0d9Tdk0A%3D%3D&p=1&plat_id=114&share_from=ugc&share_medium=iphone&share_plat=ios&share_session_id=079C2455-B50E-4747-A3A1-3F627450E506&share_source=WEIXIN&share_tag=s_i×tamp=1677491216&unique_k=dWkMQvr&up_id=522222081&vd_source=266374e1050bf3ceddfca288be7c5f15) )。 2 | 3 | 我们也开始了下一个版本 1.9.0 的开发,该版本将是一个较小的迭代版本,主要目标是实现与工业协议网关软件 Neuron 的多实例连接。目前主要完成了功能调研和规划工作,以及新功能 Python 插件虚拟环境支持的开发。 4 | 5 | 此外,本月还发布了 1.8.1 版本,包含导入 Portable 插件以及 Flow Editor 等 bug 修复,详情请查看:[https://github.com/lf-edge/ekuiper/releases/tag/1.8.1](https://github.com/lf-edge/ekuiper/releases/tag/1.8.1) 。 6 | 7 | ## Python 插件虚拟环境支持 8 | 9 | 虚拟环境是 Python 开发中常用的技术,对 Python 的依赖性管理很有帮助。Anaconda 或 Miniconda 是最流行的 Python 环境管理器之一。[conda](https://conda.io/projects/conda/en/latest/index.html) 软件包和环境管理器包含在所有版本的 Anaconda®、Miniconda 和 Anaconda Repository 中。eKuiper 支持使用 conda 环境运行 Python 插件。 10 | 11 | 使用该功能之前,用户需要确保 eKuiper 运行的主机或者 Docker container 中已配置好 Python 的 conda 虚拟环境。使用该功能与普通 Python 插件相同,只是需要在插件打包阶段,编写 JSON 元文件时指定使用的虚拟环境名称即可,如下示例文件所示。 12 | 13 | ``` 14 | { 15 | "version": "v1.0.0", 16 | "language": "python", 17 | "executable": "pysam.py", 18 | "virtualEnvType": "conda", 19 | "env": "myenv", 20 | "sources": [ 21 | "pyjson" 22 | ], 23 | "sinks": [ 24 | "print" 25 | ], 26 | "functions": [ 27 | "revert" 28 | ] 29 | } 30 | ``` 31 | 32 | 在本例中,我们指定了虚拟环境类型 `virtualEnvType` 为 `conda`,虚拟环境名称为 `myenv`。这样插件运行时将会运行在 conda 的 myenv 环境中。目前,虚拟环境类型仅支持 conda 。 33 | 34 | ## 即将到来 35 | 36 | 下个月我们将主要进行 1.9.0 版本其他功能的开发,期望在下月底或稍晚与 Neuron 协同发布。在这个版本中,我们将修改与 Neuron 的连接方式,实现多实例连接。此外,我们将开发其他功能,包括局部配置批量下发功能,方便多实例的配置管理;Http Pull Source 支持动态 token,以支持接入更多的 HTTP 数据源等。敬请期待。 37 | -------------------------------------------------------------------------------- /zh/202303/hstreamdb-newsletter-202302.md: -------------------------------------------------------------------------------- 1 | 近两个月,HStreamDB 相继发布了 0.13 和 0.14 版本,包含多项已知问题修复。同时,我们也发布了全新的 HStream Console 组件,为 HStreamDB 带来了简洁友好的图形化管理界面,将帮助用户更轻松地使用和管理 HStreamDB. 2 | 3 | ## HStream Console 4 | 5 | HStream Console 是一套基于 Web 的图形化的 HStream UI,用来管理 HStreamDB 集群内的各项资源和工作负载,目前支持的主要功能如下: 6 | 7 | - stream 管理:包括查看、新建、删除 stream,以及管理 stream 包含的 shard 8 | - subscription 管理:除基本的管理操作以外,还包括查看当前 subscription 上关联的消费客户端,以及查看 subscription 上的消费进度等 9 | - records 查询:包含根据 recordId 查询指定 stream(shard)内的 records,以及在线的 records 写入等 10 | - 查看 metrics:提供 stream 和 subscription 相关的多种指标的统计图展示,并支持查看不同时间范围的数据(目前 metrics 展示依赖 Promethus,后续 metrics 数据将直接保存在 HStreamDB 中) 11 | 12 | ![HStream Console](https://assets.emqx.com/images/73ff144e36ad2d614695cf27678701dc.png) 13 | 14 | ![HStream Console](https://assets.emqx.com/images/a0e1c3c0b6a6bf29785d44781a3b66ce.png) 15 | 16 | ![HStream Console](https://assets.emqx.com/images/3209eb573c5c2ec44d0ab6e935c7f3d5.png) 17 | 18 | 后续计划支持: 19 | 20 | - 管理 streaming query:包括编辑 SQL,任务提交,显示结果,以及结果的数据可视化 21 | - source 和 sink connectors:包括对多种数据库的支持,以及 IO Task 的创建和管理 22 | 23 | ## HStreamDB 0.14 发布 24 | 25 | v0.14 主要包含以下更新和已知问题修复: 26 | 27 | - HServer 默认切换到新的自研 Haskell GRPC 框架 28 | - 新增对 CentOS 7 的部署支持 29 | - 新增对 subscription 上 record 发送失败的指标统计 30 | - 在协议中移除了 pushQuery 相关的 RPC 31 | - 修复多个客户端消费同一个订阅时,由于其中一个退出或不回 ACK 引起其它客户端卡住的问题 32 | - 修复 STM 可能造成 memory leak 的问题 33 | - 修复集群 boostrap 后 status 可能错误的问题 34 | - 修复在同一订阅上创建同名的 consumer 没有报错的问题 35 | - 修复可以在不存在的 shard 上创建 reader 的问题 36 | - 修复 IO check cmd 可能会卡住的问题 37 | 38 | ## HStream Platform 39 | 40 | HStream Platform 是我们正在打造的以开源 HStreamDB 为核心的下一代一站式流数据平台,它将致力于为开发者运行和管理 streaming data workloads 提供真正友好的、统一的、现代化的产品体验。 41 | 42 | 目前基于公有云的 HStream Platform 的 Serverless 版本已在持续内测阶段,之后我们将推出免费的公测版本,同时 HStream Platform 也将提供 on-premises 部署支持, 欢迎通过 [https://hstream.io/zh/cloud](https://hstream.io/zh/cloud) 与我们联系,获取产品的早期访问以及更多产品动态。 43 | -------------------------------------------------------------------------------- /zh/202303/neuron-newsletter-202302.md: -------------------------------------------------------------------------------- 1 | 2 月,Neuron 团队主要侧重于开发新的驱动,新增了南向 IEC61850 驱动、南向 Allen-Bradley DF1 驱动、Profinet 驱动支持以及静态点位等功能,这些新驱动和新功能将在 2.4 版本中正式发布。 2 | 3 | ## IEC61850 驱动 4 | 5 | IEC61850 标准是电力系统自动化领域的通用标准。Neuron IEC61850 驱动实现了该标准中 MMS 协议的连接和读写操作。MMS 中的多种数据类型也已经映射到 Neuron 类型中,现在可以通过指定 IED(智能电子设备)中的 DA(对象属性)地址和类型,完成数据的获取和修改操作。 6 | 7 | ## Allen-Bradley DF1 驱动 8 | 9 | DF1 协议是 AB 公司可编程控制器系统广泛支持的数据链路层通信协议,各系列可编程控制器及装有 RSLinx 通信软件的计算机均支持 DF1 协议。它的物理层建立在 RS232 和 RS485 等电气标准之上,针对不同的设备建立不同的应用层命令。综合物理层、数据链路层和应用层后能够完成基于 DF1 协议的通信。 10 | 11 | 目前 Neuron 已实现半双工通信方式的部分应用层指令,使用 CRC 校验方式。Neuron 与设备之间通过串口建立连接,并通过站点号与指定的 PLC 模块建立通信。 12 | 13 | ## Profinet 驱动 14 | 15 | Profinet 是一个通过以太网通信的现场总线。Neuron 将作为 Profinet 中的 Controller 与 Profinet IO 设备进行高频率的数据交换,交换频率精度根据设备硬件配置可达到毫秒级别。因 Profinet 循环数据主要在以太网第二层上运行,即不存在 IP 网络层,将不能进行路由间的数据转发,需要保证 Neuron 与 Profinet IO 设备在同一个局域网中。 16 | 17 | ## 静态点位支持 18 | 19 | 静态点位主要用于一些静态数据的配置以及上传。静态点位将不会下发到插件层面,完全由 Neuron 核心支持处理,可在任何 Group 中添加静态点位,静态点位可读可写,用户可随时修改静态点位的值;并且通过北向订阅 Group 后进行发送。 20 | 21 | ## 数据处理相关 UI 升级 22 | 23 | 目前已发布的 NeuronEX 版本中实现的数据流处理 UI 适配的是 eKuiper 1.6 版本的相关 UI。因此我们将NeuronEX 版本中的数据流处理 UI 进行了升级,适配较新的版本,并增加了 Source 的配置以及上传插件等 UI。 24 | 25 | ## 问题修复 26 | 27 | 本月我们对如下问题进行了修复: 28 | 29 | - [Modbus](https://www.emqx.com/zh/blog/modbus-protocol-the-grandfather-of-iot-communication) RTU 配置页面未能根据 schema 正确切换 30 | - 配置多个 OPC UA node 时,SSL 证书导致的连接异常 31 | - ADS 插件多线程数据竞争 32 | - S7Comm 插件某些情况下异常退出 33 | - Docker 镜像中设置 VOLUME 异常 34 | 35 | 36 | 37 |
38 |
39 | 免费试用 Neuron 40 |
41 | 开始试用 → 42 |
43 | -------------------------------------------------------------------------------- /zh/202303/xmeter-newsletter-202302.md: -------------------------------------------------------------------------------- 1 | XMeter Cloud 专业版于 2022 年底上线后,已有不少用户试用,对数千甚至上万规模的 MQTT 并发连接和消息吞吐场景进行测试。同时我们也收到了希望支持更多物联网协议测试的需求反馈。 2 | 3 | 新年伊始,XMeter 团队全力聚焦于 XMeter Cloud 新版本的研发,将于 3 月上线自定义测试场景的重要功能,助力用户对更广泛的协议进行测试,包括 TCP、WebSocket、HTTP 等。此外,XMeter Cloud 新版本还将在用户体验和产品性能上进一步提升与优化。 4 | 5 | ## 自定义测试场景支持 6 | 7 | XMeter Cloud 基础版及专业版均已提供多种内置 MQTT 测试场景,包括连接、上报、1 对 1、广播、共享订阅,用户可通过简单的选择及主要参数设置,方便快捷地提交 MQTT 测试。 8 | 9 | 在即将上线的新版本中,我们将为专业版用户提供自定义测试场景功能,以满足自主定义测试场景和测试更广泛协议的需求,帮助用户构建更复杂的 MQTT 测试场景,实现对除 MQTT 以外其他物联网协议的测试。 10 | 11 | XMeter Cloud 基于 Apache JMeter,全面兼容 JMeter 测试脚本。通过自主创建 JMeter 脚本,即可构建更丰富的测试场景。XMeter Cloud 新版本中将开放 JMeter 脚本上传入口,以便用户将自定义的 JMeter 脚本置于 XMeter Cloud 的测试场景中,使用 XMeter Cloud 的测试管理功能对其加以管理,并提交测试运行。用户可充分利用 JMeter 的多种内置协议支持,拓展测试范围。XMeter Cloud 也完全兼容 JMeter 的扩展方式,用户如果对测试有更特殊的需要,可自主开发 JMeter 插件来定制协议测试,并将新插件放置在 XMeter Cloud 中使用。 12 | 13 | 为方便用户针对不同环境运行相似的场景测试,免除重复创建上传 JMeter 脚本的繁琐,自定义测试场景中还将支持运行时变量。用户可将测试环境相关的参数,或有可能变化的配置参数设置为运行时变量,在提交测试前的配置中加以定义,即可快速切换到不同测试环境和配置下进行测试。 14 | 15 | ## 更清晰的版本选择 16 | 17 | XMeter Cloud 目前提供基础版和专业版两种产品版本。基础版支持不超过 1,000 连接和每秒 1,000 消息吞吐的公网 MQTT 测试;专业版支持不超过 500,000 连接和每秒 500,000 消息吞吐的公网及私网 MQTT 测试,并将支持更多协议测试。 18 | 19 | 在新版本中将提供更清晰的版本选择入口,以方便初次使用的用户根据不同需求确定适合的产品,也方便老用户从基础版快捷地升级到专业版。 20 | 21 | ## 测试准备进度提示 22 | 23 | XMeter Cloud 提供负载测试服务时,使用云上按需创建测试资源的策略,以帮助用户更好地控制测试成本。如果提交了较大规格的测试,可能需要一小段时间以等待系统自动完成测试资源的创建。 24 | 25 | 新版本中,我们将实时展示测试准备进度,方便用户了解当前的测试资源创建状态。 26 | 27 | ## 测试数据统计性能优化 28 | 29 | 负载测试过程中将产生海量的测试数据,XMeter Cloud 以实时流式方式汇总测试数据,并进行多个维度的统计。 30 | 31 | 新版本中,我们将对测试数据的采集、汇总和统计进行更细致的优化,以提升数据处理引擎的吞吐能力和稳定性,进一步助力大规模负载测试。 32 | 33 | 34 | 35 | 36 | 37 |
38 |
39 | 免费试用 XMeter Cloud 40 |
全托管的 MQTT 负载测试云服务,无需部署,一键提交测试
41 |
42 | 开始试用 → 43 |
44 | -------------------------------------------------------------------------------- /zh/202304/deploy-the-most-powerful-mqtt-server-in-your-own-cloud.md: -------------------------------------------------------------------------------- 1 | 近日,全球领先的物联网数据基础设施软件供应商 EMQ 映云科技为其旗下全托管 [MQTT 消息云服务产品 EMQX Cloud](https://www.emqx.com/zh/cloud) 推出了 BYOC(Bring Your Own Cloud)版本,该版本将允许用户在其现有的云基础架构环境中部署 MQTT 消息服务。用户不仅可以通过 EMQ 团队提供的专业运维管理服务**享受云计算带来的便利,同时还能获得强大的数据合规与安全保障。** 2 | 3 | EMQX Cloud BYOC 为对数据隐私控制及定制化云服务有更高需求的企业提供了一种理想的解决方案,用户可以充分借助 EMQX 物联网 MQTT 消息服务器的强大能力,在自己的云环境中构建更加安全、高度可扩展的 MQTT 云部署,满足自身的物联网业务需求。 4 | 5 | 了解详情:[https://www.emqx.com/zh/lp/cloud/byoc](https://www.emqx.com/zh/lp/cloud/byoc) 6 | 7 | ## 全面保护数据隐私 8 | 9 | 近年来,云服务凭借速度、效率和可扩展性等诸多优势,使物联网领域发生了深刻变革。随着云服务的普及,云安全也成为企业关注的重点。特别是在高精技术驱动的科技领域,越来越多的企业意识到,在上云的同时保持对数据的掌控是非常必要的。 10 | 11 | 作为一种新兴的全托管云服务模式,BYOC 允许用户自己选择云服务提供商,将自己的数据、应用程序和工作负载部署到所选择的云上,利用自己现有的云基础设施实现平稳、安全地业务运行。 12 | 13 | EMQX Cloud BYOC 也正是利用这一特点,帮助用户将其数据保存在自己的云中,从而**实现对数据的完全掌控。**对于需要遵守诸如《通用数据保护条例(GDPR)》等相关数据法规的企业,EMQX Cloud BYOC 可以有效保障数据隐私安全与合规,免除用户对数据安全风险的担忧。 14 | 15 | 此外,用户还可享受 EMQX 提供的各类企业级安全功能,如 SSL/TLS 加密连接,LDAP、JWT、 PSK、 X.509 certificates 客户端认证以及 MQTT ACL 访问权限控制等,从而构建可靠安全的大规模物联网应用。 16 | 17 | ## 可定制的云上 MQTT 部署 18 | 19 | 除了可靠的数据隐私与安全保障,EMQX Cloud BYOC 还可以满足企业多样化的部署需求: 20 | 21 | - **定制部署:** BYOC 版本支持阿里云、AWS、 Azure 等多个主流公有云平台,用户可以选择在任何云中根据您的需求定制 MQTT 服务的规格和配置,进行灵活部署。相比于传统托管云服务,EMQX Cloud BYOC 可以更好地满足企业定制化的 MQTT 服务需求。 22 | - **成本效益:** EMQX Cloud BYOC 允许客户使用其现有的云基础设施,只需为所使用的服务付费,节省了不必要的资源开销。 23 | - **无缝集成:** EMQX Cloud BYOC 提供的 MQTT 服务可以与您现有的系统无缝衔接,包括诸如 MySQL、Kafka、AWS RDS、MongoDB、Oracle、SAP Event Mesh、OpenTSDB 等各类型数据库、消息队列以及云数据服务。 24 | 25 | ## 服务全行业 MQTT 需求 26 | 27 | 发布至今,EMQX Cloud 凭借出色的性能、强大的可扩展性、全托管的服务模式,获得了全球用户的认可和信赖。超过 500 家公司通过 EMQX Cloud 免除了基础设施维护负担,实现了物联网业务的降本增效。 28 | 29 | 不久前发布的 [Serverless 版本](https://www.emqx.com/zh/cloud/serverless-mqtt)以更加快捷的部署方式和按量计费的付费模式,使每个开发者都拥有免费的 MQTT 消息服务成为可能,为个人开发者和小微企业的物联网业务创新带来极大便利。此次发布的 BYOC 版本则为那些拥有更高定制化和数据安全性要求的大型企业提供了更好的解决方案。 30 | 31 | EMQX Cloud 致力于满足各类 MQTT 服务需求,为各行业提供高效、可靠的 MQTT 云服务,助力企业在全球数字化的发展进程中保持领先优势。 32 | 33 | 34 | 35 |
36 |
37 | 免费试用 EMQX Cloud 38 |
无须绑定信用卡
39 |
40 | 开始试用 → 41 |
42 | -------------------------------------------------------------------------------- /zh/202304/essential-things-to-know-about-mqtt-security.md: -------------------------------------------------------------------------------- 1 | 物联网(IoT)深刻改变了我们与周围世界互动的方式。从智能家居到车联网,IoT 设备已经深入到我们生活的各个领域。 2 | 3 | 然而,物联网的广泛应用也带来了安全方面的挑战。不法分子可以利用漏洞未经授权地访问物联网设备、窃取数据,对物联网系统和终端用户的财产甚至人身安全带来威胁。此外,物联网设备的庞大数量和其互联性也为黑客发起大规模攻击提供了可乘之机。 4 | 5 | 作为物联网通信协议的事实标准,MQTT 协议提供了很多与安全相关的功能特性,以保障物联网系统的安全。为了帮助物联网开发者充分了解这些特性,从多维度构建更加安全可靠的物联网系统与应用,EMQ 特别推出了《MQTT 安全》专题系列文章。 6 | 7 | 该系列文章将包括: 8 | - **[MQTT 安全解析:构建可靠的物联网系统](https://www.emqx.com/zh/blog/understanding-mqtt-security-a-comprehensive-overview)** 9 | - 认证 10 | - **[用户名/密码认证](https://www.emqx.com/zh/blog/securing-mqtt-with-username-and-password-authentication)**:用户名/密码认证方法介绍,如何在 MQTT 中使用,以及该方法可能存在的隐患与解决办法。 11 | - **[SCRAM 增强认证](https://www.emqx.com/zh/blog/leveraging-enhanced-authentication-for-mqtt-security)**:增强认证的作用及用法,如何通过增强认证弥补用户名/密码认证方法的不足。 12 | - **[其他认证方法](https://www.emqx.com/zh/blog/a-deep-dive-into-token-based-authentication-and-oauth-2-0-in-mqtt)**:Token 认证如 JWT 等。 13 | - **[授权](https://www.emqx.com/zh/blog/authorization-in-mqtt-using-acls-to-control-access-to-mqtt-messaging)**:权限控制与认证的区别,访问控制列表介绍。 14 | - **[流量控制](https://www.emqx.com/zh/blog/improve-the-reliability-and-security-of-mqtt-broker-with-rate-limit)**:常见流量控制策略介绍。 15 | - **[TLS/SSL](https://www.emqx.com/zh/blog/fortifying-mqtt-communication-security-with-ssl-tls)**:单向认证、双向认证、TLS PSK、一机一密讲解,TLS 使用注意事项。 16 | - 基础设施安全:如何从基础设施方面加强物联网系统安全性。 17 | - 报文加密:各类加密方式与密钥管理方法介绍。 18 | - MQTT 模糊测试:如何通过模糊测试发现物联网系统中的安全漏洞。 19 | 20 | 21 |
22 |
23 | 免费试用 EMQX Cloud 24 |
全托管的 MQTT 消息云服务
25 |
26 | 开始试用 → 27 |
28 | -------------------------------------------------------------------------------- /zh/202304/neuron-newsletter-202303.md: -------------------------------------------------------------------------------- 1 | 3 月,[Neuron](https://github.com/emqx/neuron) 团队主要在为 2.4.0 版本的发布做准备,进行了官网文档的重构与完善,为常用驱动增加了相应的连接示例及常见问题。同时新增南向驱动 ABB COMLI,此驱动可通过串口连接 ABB 某些型号的 PLC。 2 | 3 | ## 新增驱动插件 4 | 5 | ### 南向驱动 IEC61850 6 | 7 | 此驱动在电力系统自动化中应用广泛,它由国际电工委员会 IEC 制定,定义了用于通信的数据模型、数据服务、通信协议等。Neuron 目前实现了 IEC61850 下的 MMS 消息数据,MMS 是一种面向连接的基于客户端/服务器架构的通信协议,主要用来在 IEC61850 设备之间进行高效可靠的数据采集以及设备控制写入。 8 | 9 | ### 南向驱动 AB DF1 10 | 11 | 由罗克韦尔自动化公司开发的串行通信协议,主要用于 PLC 和其他设备之间进行通信。此通信协议包含两种数据帧格式,二进制格式以及 ASCII 格式,Neuron 实现二进制数据传输,传输效率更高,速度更快。 12 | 13 | ### 南向驱动环保 HJ-212 14 | 15 | 中国环境监测网络中使用的一种通信协议,主要用于在环境监测设备之间进行数据交换,如环境中各种污染物的浓度等。此协议由中国环境保护部分和通信行业专家共同制定,212 为协议版本号,为环境监测工作提供了重要的支持,也为中国环境监测设备的国产化提供了技术支持和保障。此协议在中国环境监测领域有着广泛的应用,包括大气监测、水监测、土壤监测等各个方面。 16 | 17 | ### 南向驱动 ABB COMLI 18 | 19 | 由 ABB 公司开发的一种串行通信协议,主要用于在其 PLC 和其他设备之间进行通信。此协议是一种点对点的通信协议,支持两种数据帧格式、二进制格式和 ASCII 格式。Neuron 实现二进制数据帧格式进行数据采集与设备控制。 20 | 21 | ### 北向 WebSocket 22 | 23 | 主要用于对接 WebSocket Server,可以与 WebSocket Server 通过以 JSON 为基础数据进行采集点位的数据上报等。 24 | 25 | ## 文档与 UI 完善 26 | 27 | 为了用户能更方便使用 Neuron 连接各种设备进行数据采集以及设备控制,我们对现有的官网文档进行了整体的重构完善,增加更多常用功能特性的使用示例,并在持续更新中。 28 | 29 | 此外我们对 UI 也进行了如下优化: 30 | 31 | - NeuronEX 版本的数据处理相关 UI 进行的升级扩展,支持在 NeuronEX 版本中创建数据处理流,上传插件等。 32 | - 设备节点管理支持列表模式,多种排序以及搜索,在配置设备节点较多时,能更快找到相关设备节点。 33 | - 点位配置支持列表模式,简化了配置点位时的部分操作,通过页面配置多个点位时更便捷。 34 | - 点位列表支持多种排序以及搜索,可以方便的在数据监控页面或是配置页面更快的找到点位。 35 | 36 | ## 问题修复 37 | 38 | - 修复部分 UI 报错提示不明确的问题。 39 | - 修复 OPC UA 连接某些型号的 PLC 时连接异常的问题。 40 | - 修复在配置的节点数以及点位数较多时,重启后数据加载较慢的问题。 41 | - 修复 Docker 版本中下载日志失败的问题。 42 | 43 | 44 | 45 |
46 |
47 | 免费试用 Neuron 48 |
49 | 开始试用 → 50 |
51 | -------------------------------------------------------------------------------- /zh/202304/neuron-v-2-4-0-release-notes.md: -------------------------------------------------------------------------------- 1 | 近日,EMQ 旗下的工业协议网关软件 Neuron 发布了最新的 2.4.0 版本。 2 | 3 | 该版本新增了包括 ABB COMLI 在内的四个南向驱动和一个北向应用,同时对现有的插件功能和 UI 进行了优化。 4 | 5 |
6 |
7 | 快速体验 Neuron 新版本 8 |
9 | 免费下载 → 10 |
11 | 12 | ## 新增驱动插件满足不同场景需求 13 | 14 | ### IEC61850 MMS 和 Allen-Bradley DF1 15 | 16 | IEC61850 MMS 这一广泛应用于电力行业的通信协议现已集成到 Neuron 中,用户可以利用 Neuron 更加流畅地与使用该协议的工业设备进行通信。此外,Neuron 2.4.0 还新增了 Allen-Bradley DF1 驱动插件,为用户提供了另一种连接 Allen-Bradley PLC 的选择。 17 | 18 | ### HJ212-2007 和 ABB COMLI 19 | 20 | HJ212-2007 是中国环境空气质量监测的国家标准,ABB COMLI 则是用于工业自动化系统(如机器人、电力和自动化)中设备之间通信的协议。这些驱动插件进一步扩展了 Neuron 的连接能力,使得 Neuron 可以与更加多样化的工业设备实现通信。 21 | 22 | ### WebSocket 应用 23 | 24 | Neuron 2.4.0 版本中还引入一个新的北向应用 WebSocket,用于设备和 Neuron 之间的实时通信,提供更快的响应时间,适用于关键基础设施的监控和控制。 25 | 26 | ## 优化现有插件功能 27 | 28 | 新版本也对现有功能进行了诸多优化: 29 | 30 | - **增强现有驱动插件能力:**IEC60850-5-104 协议驱动现在支持遥测和时钟同步,为用户提供更强大的设备同步控制能力。MQTT 提供可配置的 QoS 和自定义主题订阅以进行组订阅,进一步增加了协议的灵活性。 31 | - **监控插件支持实时配置更改事件报告:**允许用户实时监视其配置的变化,提供更强的工业设备可见性,确保用户可以快速有效地响应问题。 32 | - **在不同机器上连接 eKuiper:**现在用户可以在不同的机器上部署 Neuron 和边缘流式计算引擎 eKuiper,实现高效、定制化的工业物联网环境设置**。** 33 | - **通过新的读写存储点增强数据灵活性:**新的存储点可读可写,提供更大的灵活性,用户可以更轻松地管理和定制其工业物联网环境,以满足其特定需求。 34 | 35 | ## API 和 UI 提升 36 | 37 | Neuron 2.4.0 版本还配备了新的 API 以增强对[工业物联网](https://www.emqx.com/zh/blog/iiot-explained-examples-technologies-benefits-and-challenges)环境的管理。这些 API 提供的能力包括:获取和替换全局配置、文件下载、监控系统 CPU、内存和磁盘使用情况等。新的 API 为用户确保最佳性能和及时监测问题提供了有力工具。 38 | 39 | 新版本也对 UI 进行了更新,节点和点位列表现已支持列表模式和模糊搜索。此外,产品界面提供了更好的中英双语支持,便于全球用户使用。 40 | 41 | ![Neuron 节点列表](https://assets.emqx.com/images/59b8bb541f6d9643fdd69b02fd957f71.png) 42 | 43 |
节点列表
44 | 45 | ## 结语 46 | 47 | Neuron 2.4.0 的发布,进一步促进了工业物联网「互联性」的提升。凭借对丰富多样工业协议的支持,以及便捷高效的一站式配置与管理能力,Neuron 将持续助力工业物联网生产环境的管理,提供强大灵活的功能,帮助用户构建可靠的工业物联网平台与应用。 48 | 49 | 50 | 51 |
52 |
53 | 免费试用 Neuron 54 |
55 | 开始试用 → 56 |
57 | -------------------------------------------------------------------------------- /zh/202304/understanding-mqtt-security-a-comprehensive-overview.md: -------------------------------------------------------------------------------- 1 | 物联网逐渐渗透到医疗保健、智能家居、智慧城市、自动驾驶等我们生活中的各个领域。这其中所涉及到的物联设备的安全也因此变得愈发重要。一旦物联网系统遭到恶意入侵,不仅海量设备数据将面临丢失、被窃取和篡改等安全风险,使用这些设备和物联网应用的终端用户的个人安全也有可能受到威胁。 2 | 3 | 我们经常能看到这样的新闻:黑客利用漏洞入侵到物联网系统,比如儿童的智能玩具中,通过玩具的摄像头、扬声器和麦克风对其进行监视;又或者是入侵到一个心脏起搏器,操纵心率并耗尽电池,对病人造成严重伤害。 4 | 5 | 一个没有足够安全保障的物联网系统虽然也能正常工作、提供服务,但是一旦发生问题,将对企业和其最终用户造成无法估量的伤害。对于用户来说,这可能意味着财产、数据隐私甚至是个人生命安全的损失;对于企业来说,则意味着产品召回的成本、可能产生的法律费用,以及品牌声誉和信任的损失。 6 | 7 | 因此,物联网安全是物联网发展中每个相关企业都需要重点关注的课题。 8 | 9 | ## 物联网系统中的常见安全风险 10 | 11 | 目前,很多企业在构建物联网系统时可能会存在以下这些安全风险: 12 | 13 | - **认证和授权机制不充分。** 物联网设备如果认证机制薄弱或没有认证机制,会使其容易受到未经授权的访问。开发者不仅需要控制设备的访问,还要控制设备连接到网络后被允许做什么。 14 | - **薄弱的密码。** 一些厂商可能对同一设备型号使用相同的密码,或者是使用容易被猜到的弱密码,如「admin」或「password」等。 然而即使是最复杂的加密算法,也无法保障一个容易猜到的密码不被攻破。薄弱的密码使攻击者很容易窃取对设备及其数据的访问权限。因此物联网企业应严格执行强密码政策,并要求用户更改默认密码。 15 | - **不安全的通信协议。** 使用 TCP 等明文协议而不是 TLS 进行通信,会使得攻击者很容易截获数据。以中间人攻击(Man-In-The-Middle)为例,攻击者可以窃听通信,收集密码、健康信息等个人数据。 16 | - **缺乏用户培训。** 一些物联网厂商可能没有向其用户提供适当的安全培训,这使未受过教育的用户容易受到攻击。企业应注意提升用户的安全意识。 17 | - **拒绝服务(DoS)攻击。** 物联网系统可能容易受到 DoS 或分布式 DoS 攻击,这种攻击下大量设备会被用来利用软件缺陷或简单地通过恶意流量来压垮或淹没目标系统。为了防止这种攻击,物联网系统需要有强大的安全措施,包括防火墙、入侵检测和预防系统,以及访问控制。此外,物联网系统应被设计成更具弹性、能够自动检测和缓解攻击,减少管理运维的人力成本。 18 | 19 | 物联网厂商需要在物联网系统设计与建设时优先考虑安全问题,以确保其设备的安全,以及面对攻击时能够弹性应对。 20 | 21 | ## 如何通过 MQTT 保障物联网系统安全? 22 | 23 | 当我们使用 MQTT 构建自己的物联网系统时,可以从以下几个方面考虑安全性问题。按其所在的不同协议层进行细分,可以分为网络层、传输层和应用层。 24 | 25 | - **网络层。** MQTT 在 IP 网络中运行,因此网络层的安全最佳实践都适用于 MQTT。 也就是说,正确使用防火墙、VPN、IPsec,可以帮助防止入侵者访问物联网网络上的数据。 26 | 27 | - **传输层。** 在传输层,我们并不建议通过 TCP 或 WebSocket 等协议直接发送明文数据,例如在应用层中用于认证的用户名、密码等敏感数据,这可能会使应用层的安全机制形同虚设。因为当入侵者直接从传输层窃取数据时,他可以直接知道你正在使用的用户名和密码。 28 | 29 | 更好的办法是,借助 TLS 加密协议为我们的数据提供端到端的安全性。除了使数据变成难以破解的密文数据以外,TLS 还能提供多项保护,例如支持客户端对服务端身份合法性的确认,当要求客户端使用证书时,服务端也能确认客户端是否合法,这将有效避免中间人攻击。 30 | 31 | - **应用层。** 虽然我们已经能够在传输层提供比较到位的安全保护了,但并不是所有的系统都支持 TLS。运行于应用层的 MQTT 协议也通过用户名、密码字段提供了对密码认证和 Token 认证的支持,确保只有合法的设备才能接入 MQTT 代理。MQTT 5.0 中还引入了增强认证机制来提供双向的身份确认。 32 | 33 | 另一方面,应用层的安全机制通常也是最后一层安全保障,除了验证接入者的身份,我们最好对接入者能够执行的操作也进行检查,例如接入者可以发布消息到哪些主题上,以及可以从哪些主题消费消息。 34 | 35 | ## 结语 36 | 37 | 如前文所提,作为物联网通信协议的事实标准,MQTT 协议提供了很多与安全相关的功能特性,以保障物联网系统的安全。为了帮助物联网开发者充分了解这些特性,从多维度构建更加安全可靠的物联网系统与应用,EMQ 特别推出了《MQTT 安全》专题系列文章。 38 | 39 | 在本专题的下一篇文章中,我们将详细讲解基于用户名密码的认证方式,如何在 MQTT 中正确使用这一方式进行身份验证,以及如何避免和解决其中可能的安全隐患。敬请期待。 40 | -------------------------------------------------------------------------------- /zh/202305/experience-neuron-industrial-iot-gateway-software-for-free-with-time-unlimited-trial-license.md: -------------------------------------------------------------------------------- 1 | [Neuron](https://github.com/emqx/neuron) 是一款强大的工业协议网关软件,可以为实时工业数据采集提供必要的物联网连接能力。Neuron 十分轻量,可以运行在各种资源受限的物联网边缘硬件设备中,并通过标准协议或其自有的专用协议与各种各样的工业设备进行通信,将其连接到[工业物联网](https://www.emqx.com/zh/blog/iiot-explained-examples-technologies-benefits-and-challenges)平台。 2 | 3 | 为了方便用户更加轻松地利用 Neuron 进行工业物联网系统的搭建和验证,最新发布的 Neuron 2.4.4 版本提供了无时间限制的小规模免费试用许可证。从这一版本起,用户将可以免费完整体验 Neuron 强大的工业连接能力。 4 | 5 | ## 丰富协议驱动赋能工业物联网连接 6 | 7 | 自 2.0 版本起,Neuron 正式开源运营。核心框架、可视化仪表盘,以及 Modbus-TCP、Modbus-RTU 和 MQTT 等常用的南北向协议驱动模块等,都以 LGPLv3 许可证的形式作为开源项目提供。 8 | 9 | 对于有更多专有协议连接需求的用户,Neuron 还提供了一系列商业化驱动和功能,以解决各种复杂的工业标准协议和 PLC 协议接入与转换需求。提供的商业化驱动包括 BACnet、KNXnet/IP、IEC-104、IEC-61850、三菱 1E 和 3E、西门子 S7 和 Fetch-write、欧姆龙 Fins TCP、倍福 ADS 等。通过更加丰富的商业化协议接入能力,为各种工业设备的无缝集成提供可靠的技术支撑与商业化服务。 10 | 11 | ## 数十种工业协议驱动免费不限时试用 12 | 13 | 在之前的版本中,用户如需试用商业化协议驱动,需要从 EMQ 官方网站下载或与 EMQ 团队联系申请获取 Neuron 的试用许可证,且仅限于 1000 个数据标签、100 个连接和 15 天的使用期限,这对于许多开发人员来说并不足以完全测试和验证其工作。 14 | 15 | 最新版本的 Neuron 提供了一个内嵌的、无时间限制的免费试用许可证,仅对数据标签数量限制为 30 个。用户只需要下载最新版本 Neuron 的 Docker 镜像或安装包,即可在数据标签采集限制数量内对 Neuron 所有的商业功能进行试用。 16 | 17 | > 下载地址:[https://www.emqx.com/zh/try?product=neuron](https://www.emqx.com/zh/try?product=neuron) 18 | 19 | ![下载 Neuron](https://assets.emqx.com/images/e2f7f9665313778d59a46064997f55f6.png) 20 | 21 | 通过无限时的免费试用许可证,用户可以在小规模测试场景中更加方便灵活地探索 Neuron 提供的所有商业化功能,无需担心使用时限。 22 | 23 | ## 结语 24 | 25 | Neuron 2.4.4 为用户提供了完整体验商业化功能与连接能力的机会,帮助工业物联网开发者在小规模数据接入与方案验证阶段进行更加灵活和充分的适配与调试,以确保整体方案切实可行,解决其在前期技术调研与方案选型过程中所面临的挑战。 26 | 27 | 欢迎免费试用 Neuron 的最新版本,为你的工业物联网平台带来更强大的连接能力。 28 | 29 | 30 | 31 |
32 |
33 | 免费试用 Neuron 34 |
35 | 开始试用 → 36 |
37 | -------------------------------------------------------------------------------- /zh/202305/neuron-newsletter-202304.md: -------------------------------------------------------------------------------- 1 | 本月,[Neuron](https://github.com/emqx/neuron) 将 Modbus RTU/TCP 插件进行了完全开源,替换之前的 Modbus TCP 开源插件,现在开源的 Modbus RTU/TCP 插件有更好的兼容性,支持 Client/Server 模式,能适配接入更多的设备,后续也将逐步开放更多的驱动。此外,为了方便用户测试使用,在最新的 2.4.3 版本中,无需导入 License 也可试用所用的插件。 2 | 3 | ## Modbus RTU/TCP 开源 4 | 5 | Modbus RTU 与 Modbus TCP 两个开源插件将在 2.5 版本中正式发布,目前用户可以自行通过编译源码的方式来使用。两个插件将为用户带来以下新特性: 6 | 7 | - 支持了包括 Double、INT64 在内的更多数据类型; 8 | - 支持 Server 模式,可用于接入通过 4G 上网的 DTU 设备,无需配置端口透传转发; 9 | - 支持配置调整指令发送策略,对于一个串口上多个设备的场景有更好的兼容性。 10 | 11 | ## 驱动测试 License 12 | 13 | 在最新的 2.4.3 版本中,Neuron 内置了可试用所有驱动的 30 点位限制许可证。用户通过官网下载的安装包或 Docker 镜像,无需再申请测试 License 即可试用所有驱动。 14 | 15 | ## BACnet/IP 驱动完善 16 | 17 | BACnet 是一种用于自动化和控制系统的通信协议,广泛应用于建筑自动化和控制领域。在 HVAC 系统控制中,BACnet 可以用来检测和控制空气处理器、风机、冷却器、加湿器、排风机等设备;在照明系统中,BACnet 可以用于控制建筑内的照明系统,如灯光开关、调光器、定时器等;在安全系统中,BACnet 用于检测控制监控摄像头、门禁系统、火灾报警系统等;对于建筑内能源系统等管理,如对电力、燃气、水等,通过 BACnet 可实时检测和控制,从而优化能源等使用效率。 18 | 19 | 在 Neuron 2.4 版本中,完善了对 BACnet/IP 的支持,支持对接更多类型的设备,支持读取设备点位的更多信息。 20 | 21 | ## 新驱动开发 22 | 23 | 多个南向驱动正在开发中,包括松下 FP-Series、欧姆龙 FINS over UDP、DLT645-1997、Profinet IO。 24 | 25 | - 松下 FP-Series 南向驱动主要用于对接松下 FP 系列的可编程逻辑控制器 (PLC), 包括 FP0、FP-X、FP2、FP5等。 26 | - 欧姆龙 FINS over UDP 主要用于欧姆龙 NX、CJ 系列的 PLC,这些系列型号的欧姆龙 PLC 不再支持 FINS over TCP。与之相比,FINS over UDP 拥有更高的传输效率以及传输速度。 27 | - DLT645 是一种用于电力行业的通信协议,它是由中国电力行业标准化技术委员会制定的标准,用于电能表及相关设备之间的通信。DLT645 目前主要分为 1997 和 2007 两个版本,Neuron 目前已经支持的是 2007 版本的标准,1997 版本的标准也即将支持。 28 | - Profinet IO 是一种用于工业自动化领域的通信协议,支持实时数据交换和控制,广泛应用于自动化生产线、机器控制、工业网络等领域。Profinet IO 使用以太网介质,但不使用 TCP/IP 协议栈,具有高速、实时性强等特点。 29 | 30 | ## 问题修复 31 | 32 | - 修复 2.4.0 版本中已知的 UI 问题。 33 | - 修复 SparkPlug B 在未配置时异常退出的问题。 34 | - 修复 WebSocket 连接异常的问题。 35 | 36 | 37 | 38 |
39 |
40 | 免费试用 Neuron 41 |
42 | 开始试用 → 43 |
44 | -------------------------------------------------------------------------------- /zh/202305/xmeter-newsletter-202304.md: -------------------------------------------------------------------------------- 1 | 本月,XMeter 团队致力于企业版 3.2.5 的研发。XMeter 3.2.5 版本将推出新的基于 Docker 的安装方式,降低安装难度,简化部署步骤,助力用户以更便捷的方式使用 XMeter 企业版。此外,企业版的测试数据处理引擎也将进行升级,还对测试报告页面进行了改进。 2 | 3 | ## 基于 Docker 的全新部署方式 4 | 5 | XMeter 企业版由主控和压力机集群组成。主控通常包含 master 和 asteroid 两台服务器(如果只用于小规模性能测试,也可将 master 和 asteroid 安装在同一台服务器上),提供测试管理、测试调度、测试数据收集处理的功能。压力机集群中部署多台服务器,接收主控的调度,执行具体的压测任务,并将原始结果数据上报到主控。 6 | 7 | 在 XMeter 企业版 3.2.4 及更早版本中,主控的压力机集群都是直接安装部署在虚拟机或物理机上,实际执行测试时,每台压力机根据测试任务的大小,启动若干个容器,容器中将运行改造过的 JMeter 应用,完成分配到的测试任务部分。XMeter 企业版为了提供完善的测试管理与测试执行的功能,使用了不少开源组件用于数据存储、高速缓存、消息交互、日志收集、报告展现,在安装时需要依次安装各个依赖组件和 XMeter 测试服务,处理好各组件与服务之间的依赖关系,并对文件系统进行相应的配置。这为 XMeter 企业版的安装带来了一定难度。 8 | 9 | 为帮助用户解决企业版部署困难的难题,3.2.5 版本将简化安装作为产品重心。我们将使用 Docker 来部署各个依赖组件和 XMeter 测试服务,将整个 XMeter 企业版划分为 master、asteroid、压力机三个容器集群。每个容器集群都使用 Docker-compose 对其中的多个容器进行编排管理。 10 | 11 | 如果需要在内网环境中进行安装,用户只需确保 XMeter 依赖的开源组件容器镜像存在于内网镜像仓库中,并下载获取 XMeter 的容器镜像,将安装参数针对实际需要进行必要的适配调整,运行 Docker-compose 命令即可快捷地完成 XMeter 企业版的部署。 12 | 13 | 如果需要在公有云上进行安装,我们还为主要的公用云提供了使用 Terraform 进行部署的方式,快速定义编排基础资源,并在基础资源创建完成后,自动部署 Docker-compose 中的各个容器集群,从零开始,轻松完成 XMeter 企业版的安装。 14 | 15 | ## 测试数据处理引擎优化 16 | 17 | 3.2.5 版本中,修复了汇总数据在某些偶发情况下的统计错误,对 90 百分位响应时间的处理进行了优化,并新增了 50 百分位、75 百分位、95 百分位、99 百分位等多个分位的响应时间数据,用户可通过我们提供的 Grafana 仪表面板查看这些分位的相关数据。 18 | 19 | ## 其他更新 20 | 21 | 进行复杂场景测试时,测试中有可能会包含很多个事务或请求。为方便用户快速切换希望查看的事务请求相关数据折线图,测试报告页面「自定义选择事务」功能新增了名称筛选框,帮助用户从大量事务请求中定位所需的内容。 22 | 23 | 对失败数极少、失败占比极低的事务请求,我们也对测试明细数据的展示进行了优化,以更直观的方式呈现这些测试中的失败率、成功率。 24 | 25 | 26 | 27 |
28 |
29 | 免费试用 XMeter Cloud 30 |
全托管的 MQTT 负载测试云服务,无需部署,一键提交测试
31 |
32 | 开始试用 → 33 |
34 | -------------------------------------------------------------------------------- /zh/202306/xmeter-newsletter-202305.md: -------------------------------------------------------------------------------- 1 | 本月,XMeter 团队发布了基于容器化部署的企业版 3.3.0 版本(原规划为 3.2.5 版本),该版本支持 XMeter master 服务、asteroid 服务、压力机 DCM 及各依赖组件以容器方式运行,并使用 docker-compose 对各容器服务进行编排管理,降低了 XMeter 企业版的安装部署难度,保证了 XMeter 企业版运行时的健壮性。同时,还实现了使用 Terraform 部署到阿里云,助力用户在公有云上快速搭建 XMeter 企业版环境。此外,XMeter 3.3.0 还包含了一系列功能优化和问题修复。 2 | 3 | ## 使用 docker-compose 安装部署 XMeter 企业版 4 | 5 | XMeter 企业版服务及各依赖组件的编排管理已封装在若干个 docker-compose.yml 文件中。如果希望在内网环境中或非阿里云的公有云环境上安装 XMeter 企业版,可以通过 [xmeter@emqx.io](mailto:xmeter@emqx.io) 联系我们获取安装文件包,提前准备好测试所需服务器和网络环境后,将安装包上传至目标服务器,配置必要的环境变量参数(如目标服务器ip/host、邮件服务器信息等),并执行部署脚本,以启动 docker-compose 管理下的各个容器服务。相关容器在几分钟内即可完成部署并开始运行,用户即可登录用户或管理员控制台进行 XMeter 的使用。 6 | 7 | ![使用 docker-compose 安装部署 XMeter 企业版](https://assets.emqx.com/images/d4030c0cd97d8ea984040d2cf07b366e.png) 8 | 9 | 3.3.0 版本企业版将基于给 XMeter 服务配置的 HTTPS ssl 证书颁发许可证。试用阶段,可以使用自带的自签名 ssl 证书进行体验,系统将自动生成为期一个月的试用许可证。试用期之后,或重要环境上,建议用户使用权威机构签发的 ssl 证书,并联系我们获取正式的 XMeter 企业版许可证。 10 | 11 | ## 使用 Terraform 安装部署 XMeter 企业版 12 | 13 | 为了进一步简化公有云用户搭建 XMeter 企业版的步骤,3.3.0 还发布了适用于阿里云的 Terraform 部署方案。用户使用我们提供的 Terraform 脚本及 XMeter 安装包,在配置文件中指定阿里云所需创建的资源后,执行 terraform apply,即可一键完成测试所需云资源的远程创建及其上 XMeter 相关服务的部署。整个过程将于 1 个小时内完成(网络带宽条件会对部署安装时间造成一定影响)。 14 | 15 | ![使用 Terraform 安装部署 XMeter 企业版 1](https://assets.emqx.com/images/17cb623b0ba9be156154ea5f12660079.png) 16 | 17 | ![使用 Terraform 安装部署 XMeter 企业版 2](https://assets.emqx.com/images/bb5092a9401721450ecabdd1c8f139d8.png) 18 | 19 | 后续我们还将陆续支持 Terraform 方式部署 XMeter 企业版到 AWS、华为云等多个云厂商,敬请关注。 20 | 21 | ## 其他优化与修复 22 | 23 | 3.3.0 企业版中比较显著的优化和修复有: 24 | 25 | - 通过指定相关配置项,测试报告中支持使用秒或毫秒为单位展示响应时间,以满足不同时间精度的需求。 26 | - 测试明细数据的响应时间增加 50 百分位、75 百分位、95 百分位、99 百分位的支持,并提供 grafana 图表以查看这些百分位数据,以更全面地展示响应时间的分布情况。 27 | - 错误日志的计数限制从原来的按日志数量统计,改为按日志种类统计,避免日志数较多时无法查看到后面的错误情况。 28 | - 测试报告选择需要展示的自定义事务/请求时,支持按名称筛选,以快速定位所需展示的内容。 29 | - 修复计划任务无法正确选择时间的问题。 30 | - 修复部分情况下总吞吐量折线图显示不正确的问题。 31 | - 修复阈值告警邮件发送频率的问题。 32 | - 修复部分模板无法导入测试体配置文件的问题。 33 | 34 | 35 | 36 |
37 |
38 | 免费试用 XMeter Cloud 39 |
全托管的 MQTT 负载测试云服务
40 |
41 | 开始试用 → 42 |
43 | -------------------------------------------------------------------------------- /zh/202308/embedded-mqtt-message-storage-using-rocksdb-for-emqx-broker.md: -------------------------------------------------------------------------------- 1 | [EMQX](https://github.com/emqx/emqx) 是一个开源的 [MQTT Broker](https://www.emqx.com/zh/blog/the-ultimate-guide-to-mqtt-broker-comparison),它允许客户端通过 [MQTT 协议](https://www.emqx.com/zh/blog/the-easiest-guide-to-getting-started-with-mqtt)进行数据的发布和订阅。EMQX 的消息路由主要是将消息存储在内存中,以实现低延迟和高吞吐量。然而,这种存储方式也存在一些限制,例如当 Broker 节点掉线时,内存中的消息将会丢失,可能导致客户端无法接收到消息。 2 | 3 | 为了解决这一问题并提高可靠性,EMQX 团队正在采用嵌入式数据库 RocksDB 来实现消息的持久化。通过这个功能,在 Broker 节点失去连接时,消息仍然会被保存下来,从而确保消息的可靠传递。 4 | 5 | ## 挑战与解决方案 6 | 7 | 实现快速的 [MQTT 会话](https://www.emqx.com/zh/blog/mqtt-session)和消息持久化有很多挑战,主要包括: 8 | 9 | 1. **保证消息顺序。**来自同一个客户端和主题的消息应该按照正确的顺序进行转发。EMQX 会让客户端在数据保留期间发送的消息都能够传递给其他订阅者,并且保证消息的相对顺序不变。 10 | 2. **匹配订阅者和发布者的吞吐量。**单个订阅者接收一个主题的所有消息可能会导致连接过载。EMQX 支持分组订阅,使用分组订阅可以让多个订阅者分担工作负载。 11 | 3. **分片数据。**为了处理大量数据,EMQX 会根据发布者的客户端 ID 将消息进行分片。这样可以实现负载均衡,确保负载均匀分配,并且负载均衡器能够将客户端正确引导到相应的分片。但是,要想回放分片的数据,就需要 Broker 节点之间相互协作。 12 | 4. **设计数据库模式。**为了实现消息插入和回放的高效性,与通配符的兼容性,以及在任意时刻的回放能力,同时最小化空间使用等等,EMQX 设计了高效的数据库键,其中包括时间戳、主题索引和消息 ID。 13 | 14 | 在未来的优化过程中,EMQX 将对主题模式进行分析,并建立一个更有效的键空间。还会通过监测常见的主题结构,得出优化的模式,并用紧凑的格式来保存数据。 15 | 16 | ## 实现细节 17 | 18 | 整体设计由三个层次组成:存储层、复制层和逻辑层。存储层负责在节点上保存消息数据。复制层负责提供冗余。逻辑层负责封装底层的实现细节,并提供与 MQTT Broker 的集成。 19 | 20 | ![Implementation Details](https://assets.emqx.com/images/5025e78580b151a5dbbac497be04e963.png) 21 | 22 | ### 存储层 23 | 24 | EMQX 使用嵌入式数据库 RocksDB 在 Broker 节点存储消息。RocksDB 提供快速的插入和压缩功能,以最小化存储空间的使用。此外,它还允许根据 EMQX 的保留策略设置 TTL,以自动删除旧数据。 25 | 26 | ### 复制层 27 | 28 | 为了应对节点故障,EMQX 会在不同的节点上备份消息数据。它将物理代理节点映射到虚拟节点,每个虚拟节点负责一部分数据。如果某个物理节点出现故障,其他节点可以接管它的虚拟节点。这一层负责实现冗余和故障转移。 29 | 30 | ### 逻辑层 31 | 32 | 逻辑层提供了简洁的 API,用于存取消息,同时隐藏了存储层和复制层的复杂性。与消息持久化相关的代码会调用逻辑层的 API,由它来根据实际情况协调底层的操作。这样的抽象设计使得这个功能可以轻松地集成到 EMQX Broker 中,并且可以在必要时更换消息存储的后端。当客户端需要回放消息时,逻辑层会从底层的数据库中取出消息,并转发给客户端。 33 | 34 | ## 结语 35 | 36 | 这个消息持久化解决方案能够大幅增强 EMQX 的可靠性,并让它拓展到对消息传送有严苛要求的新领域。EMQX 的团队正全力以赴,争取早日将这项功能推出给用户。 37 | 38 | 关于该功能的更多设计细节,欢迎阅读: [https://github.com/emqx/eip/blob/main/active/0023-rocksdb-message-persistence.md](https://github.com/emqx/eip/blob/main/active/0023-rocksdb-message-persistence.md) 39 | 40 | 41 | 42 | 43 | 44 |
45 |
46 | 免费试用 EMQX 企业版 47 |
无限连接,任意集成,随处运行。
48 |
49 | 开始试用 → 50 |
51 | -------------------------------------------------------------------------------- /zh/202308/emqx-enterprise-v-4-4-20-release-notes.md: -------------------------------------------------------------------------------- 1 | 我们很高兴地宣布:[EMQX Enterprise](https://www.emqx.com/zh/products/emqx) 4.4.20 版本现已正式发布! 2 | 3 | 本次发布我们改进了 Kafka 和 HStreamDB 数据集成的性能,为 GCP PubSub 数据集成添加了属性和排序键的支持。除此之外还修复了多项 BUG。 4 | 5 | ## 提升 Kafka 和 HStreamDB 数据集成的性能 6 | 7 | EMQX 通过集成 Kafka 和 HStreamDB,可以实现物联网消息事件流的一站式采集、存储、处理和分发,这为各种实时物联网应用场景提供了强大支持。 8 | 9 | 此前版本中,EMQX 已经实现了异步、批处理机制,可满足大规模海量数据集成场景下的高性能需求。在 EMQX Enterprise 4.4.20 中,改进后的 Kafka 与 HStreamDB 驱动为 Erlang 进程通信增加了一个消息缓冲区,利用批处理机制提升内部的消息传递速度,进而提升整体的吞吐性能,以满足更极端的性能需求。 10 | 11 | 此功能默认关闭,用户可以通过 Kafka 和 HStreamDB 动作中的**最大 Erlang 消息累积数**与**最大 Erlang 消息累积间隔**配置开启。 12 | 13 | 内部测试表明,启用此新特性后,不同场景下数据集成吞吐量可提升 10%-40%。该优化特性也将同步到 EMQX 企业版 5.0 后续的版本中。 14 | 15 | ## GCP PubSub 集成添加属性和排序键的支持 16 | 17 | GCP PubSub 作为一个全托管的事件流和订阅服务,广泛用于构建可靠的实时流式处理管道。EMQX 规则引擎支持将数据经过处理后发布到 GCP PubSub,实现与 GCP 服务的无缝集成。 18 | 19 | EMQX Enterprise 4.4.20 为 GCP PubSub 动作新增了属性(Attributes)和排序键(Ordering Keys)的支持,可以为数据集成提供更丰富的上下文信息和顺序保证,实现灵活的物联网数据处理。 20 | 21 | ## 其他新增特性 22 | 23 | - 为 SQL Server 数据集成增加 `auto_reconnect` 选项,能够在 EMQX 与 SQL Server 之间的连接断开后自动重新建立连接,保证数据写入的连续性。 24 | 25 | - 为 RabbitMQ 数据集成添加了 TLS 连接支持,提高传输数据的安全性和完整性。 26 | 27 | ## BUG 修复 28 | 29 | - 修复了无法在 Dashboard 上测试规则引擎的 `mongo_date()` 函数的问题。 30 | 31 | - 修复了热升级到 4.4.19 之后,规则引擎通过 RabbitMQ 动作发送消息失败的问题。 32 | 33 | 34 | 35 |
36 |
37 | 免费试用 EMQX 企业版 38 |
无限连接,任意集成,随处运行。
39 |
40 | 开始试用 → 41 |
42 | -------------------------------------------------------------------------------- /zh/202309/mqtt-5-0-control-packets-04-pingreq-and-pingresp.md: -------------------------------------------------------------------------------- 1 | 欢迎阅读 [MQTT 5.0 报文系列](https://www.emqx.com/zh/blog/introduction-to-mqtt-control-packets) 的第四篇文章。在上一篇中,我们已经介绍了 [MQTT 5.0 中的 SUBSCRIBE 报文和 UNSUBSCRIBE 报文](https://www.emqx.com/zh/blog/mqtt-5-0-control-packets-03-subscribe-and-unsubscribe)。现在,我们将介绍用于维持连接的控制报文:PINGREQ 和 PINGRESP。 2 | 3 | 除了用于连接、发布和订阅的控制报文,MQTT 还有一类报文用于在客户端和服务端之间模拟心跳,以达到保持连接的目的,它们分别是 PINGREQ 报文和 PINGRESP 报文,我们通常也会称它们为心跳报文。 4 | 5 | 客户端定期向服务端发送 PINGREQ 报文,服务端可以由此得知连接良好且客户端仍然活跃。每收到一个 PINGREQ 报文,服务端就会回复一个 PINGRESP 报文,因此客户端也可以由此得知连接良好且服务端仍然活跃。 6 | 7 | ## 报文示例 8 | 9 | 我们使用 [MQTTX CLI](https://mqttx.app/zh) 向 [公共 MQTT 服务器](http://broker.emqx.io/) 发起一个客户端连接,不发布消息也不订阅主题,但我们仍然可以在 [Wireshark](https://www.wireshark.org/) 中看到客户端和服务端之间总是周期性地出现 MQTT 报文的往返,这些报文就是 PINGREQ 和 PINGRESP 报文。 10 | 11 | 以下命令将创建一个 Keep Alive 为 5 秒的客户端连接,这可以让我们尽快看到客户端发送 PINGREQ 报文: 12 | 13 | ``` 14 | mqttx conn --hostname broker.emqx.io --mqtt-version 5 --keepalive 5 15 | ``` 16 | 17 | 我们会发现 PINGREQ 和 PINGRESP 报文总是只有 2 个字节的大小,并且它们的内容似乎也永远不会发生变化: 18 | 19 | ``` 20 | # PINGREQ 21 | c0 00 22 | # PINGRESP 23 | d0 00 24 | ``` 25 | 26 | 这是因为这两个报文有着非常简单的报文结构。 27 | 28 | ## PINGREQ & PINGRESP 报文结构 29 | 30 | PINGREQ 和 PINGRESP 报文的区别仅仅是固定报头中报文类型的不同,12(0xC)表示这是一个 PINGREQ 报文,13(0xD)则表示这是一个 PINGRESP 报文。 31 | 32 | 因为 PINGREQ 和 PINGRESP 报文均不包含**可变报头**和**有效载荷**,所以它们的**固定报头**中剩余长度字段的值永远都是 0。 33 | 34 | ![PING 报文.png](https://assets.emqx.com/images/eaf716b210700b04e6645307324b3f4c.png) 35 | 36 | 这种报文结构让 PINGREQ 和 PINGRESP 报文的大小降到了最低,所以发送它们并不会占用太多的带宽。 37 | 38 | ## 总结 39 | 40 | PINGREQ 和 PINGRESP 是 MQTT 中最简单的报文类型,它们的内容固定不变。我们唯一可以改变的,就是通过连接时的 **Keep Alive 选项**,影响客户端发送 PINGREQ 报文的频率。 41 | 42 | 如果服务端没有在 1.5 倍 Keep Alive 时间内收到客户端发送的任何控制报文,就会认为客户端处于非活跃状态或网络异常而断开连接。在本文的报文示例中,我们在连接时 Keep Alive 设置为 5 秒,那么对服务端来说超时时间就是 7.5 秒。 43 | 44 | 对于客户端来说,如果在发送 PINGREQ 报文之后的一段时间内,没有收到服务端返回的 PINRESP 报文,那么它应该断开连接。这个时间的长短,主要取决于客户端对网络延迟的预期以及各个客户端 SDK 的具体实现。 45 | 46 | 现在,我们对 MQTT 报文的了解又更进了一步,在下一篇文章中我们将继续介绍在断开连接时使用的 DISCONNECT 报文。 47 | 48 |
49 |
50 | 免费试用 EMQX Cloud 51 |
全托管的 MQTT 消息云服务
52 |
53 | 开始试用 → 54 |
55 | -------------------------------------------------------------------------------- /zh/202310/emqx-enterprise-5-2-1-release-notes.md: -------------------------------------------------------------------------------- 1 | [EMQX Enterprise](https://www.emqx.com/zh/products/emqx) 5.2.1 版本现已正式发布! 2 | 3 | 这是一个维护版本,包含了几项小更新,主要进行了多项 BUG 修复,进一步提高了产品的稳定性。 4 | 5 | ## 功能更新 6 | 7 | 1. 在规则引擎消息重发布规则动作中,支持设置 MQTT 5.0 发布属性与用户属性,以便实现更灵活的消息转发处理。该功能目前仅提供了 REST API,将在后续版本开发 Dashboard 的支持。 8 | 2. 客户端认证中,将认证器密码哈希 bcrypt 算法的工作因子 (work factor) 限制在 5-10 的范围内,避免较高的值会消耗太多 CPU 资源。同事更新了 Bcrypt 以允许并行哈希计算,提高认证性能。 9 | 3. 改进节点疏散功能,支持疏散所有断开连接的会话,而不仅仅是那些 `clean_start = false` 的客户端的会话,确保节点疏散适用于更多使用场景。 10 | 4. 改进了解析 MQTT 无效数据包时的错误消息,以提供更清晰的错误提示。 11 | 12 | ## BUG 修复 13 | 14 | 以下是主要 BUG 修复列表: 15 | 16 | - 修复了 REST API 示例文档中 `POST /api/v5/publish` API 错误响应的描述,之前的示例指出错误响应将返回一个列表,但实际情况并非如此。[#11493](https://github.com/emqx/emqx/pull/11493) 17 | - 修复了尝试下载不存在的日志追踪文件时,会下载一个空的文件的问题。修复后,服务器将返回 404 状态码以及以下 JSON 消息:`{"code":"NOT_FOUND","message":"Trace is empty"}`。[#11506](https://github.com/emqx/emqx/pull/11506) 18 | - 修复了 CLI 无法清理特定客户端 ID(例如客户端 ID 为纯数字)授权缓存的问题。[#11531](https://github.com/emqx/emqx/pull/11531) 19 | - 修复了在 Dashboard 中测试 SQL 时 `mongo_date` 函数无法正确输出结果的问题。现在`mongo_date` 函数将返回 `ISODate(*)` 格式的字符串(其中 `*` 是 ISO 日期字符串)。这个格式与 MongoDB 存储日期的格式保持一致。[#11401](https://github.com/emqx/emqx/pull/11401) 20 | - 修复了核心节点(Core)可能会卡在 `mria_schema:bootstrap/0` 状态,导致新节点加入集群失败的问题。[#11630](https://github.com/emqx/emqx/pull/11630) 21 | 22 | 更多功能变更和 BUG 修复请查看 [EMQX Enterprise 5.2.1 更新日志](https://www.emqx.com/zh/changelogs/enterprise/5.2.1)。 23 | 24 | 25 | 26 |
27 |
28 | 免费试用 EMQX 企业版 29 |
无限连接,任意集成,随处运行。
30 |
31 | 开始试用 → 32 |
33 | -------------------------------------------------------------------------------- /zh/202311/emqx-ecp-2-0-product-launch-review.md: -------------------------------------------------------------------------------- 1 | EMQ 全新产品 —— 工业互联数据平台 EMQX ECP 2.0 现已正式发布。ECP 2.0 针对工业场景设计,致力帮助工业企业**建立统一数据平台**,实现海量**工业数据实时采集、接入、处理、存储与分析**。同时,平台赋能工业客户,让其能充分利用人工智能、机器学习,边缘计算,云原生和云边协同等前沿技术,实现智能化生产,提高生产效率、质量和可持续性。 2 | 3 | 11 月 16 日,EMQX ECP 2.0 线上产品发布会成功举行。来自中天钢铁集团皓鸣科技、三峡集团科研院的技术专家与 EMQ 共同深入探讨了 ECP 的产品亮点及其在工业领域的实际应用价值,以及如何运用 ECP 来解决各类工业数据痛点。 4 | 5 | ## ECP 2.0 平台亮点 6 | 7 | - **软件定义制造:** 平台帮助工业企业将物联网、大数据和人工智能等数字技术融入工业生产制造过程中。将当前工业领域的单机自动化智能扩展到全局的智能。提高效率、质量和可持续性。实现 IT 和 OT 系统的融合。 8 | - **数据互联互通:** 将工厂海量数据统一接入,利用统一命名空间架构(UNS) 实现系统的互操作性,连接从边缘到云的 OT 和 IT 系统,打通数据流、消除数据孤岛。 9 | - **工业人工智能:** 将生产制造数据实时发送到云端进行 AI/ML (人工智能/机器学习)训练,然后将训练后的 ML 模型下发到工厂车间执行,实现生产计划优化、质量控制和预测性维护。 10 | - **云边实时协同:** 边缘端支持实时流式数据处理和转发,可执行原始数据预处理、过滤和分析。与云平台无缝集成,提供边缘软件的全生命周期管理,统一远程配置及管理。实时远程监控,及时发现运行异常,确保系统可靠运行。 11 | 12 | ## 中天钢铁:利用 ECP 打造全流程智慧工厂 13 | 14 | ![利用 ECP 打造全流程智慧工厂](https://assets.emqx.com/images/b9b9c589703d68a912b88195eef3b889.png) 15 | 16 | 发布会上,中天钢铁集团皓鸣科技的史垚分享了集团通过 ECP 产品建立示范性智慧工厂的案例。通过 ECP,中天的淮安钢帘线厂实现了一体化管理六个工厂、总计近 2.5 万个工作机台 PLC,约 60 万个数据点位的大规模工业数采、集中管理和监控。 17 | 18 | ECP 将采集、边缘计算、数据存储、控制下发和网络等资源集成到多台服务器中,根据业务需求自动协调资源、高效地进行数据处理和分析,减少数据传输延迟和网络带宽占用,为集团打造了高性能、高可用数字底座。 19 | 20 | ## 三峡集团:ECP 在大规模电池监控系统设计中的应用 21 | 22 | ![三峡集团:ECP 在大规模电池监控系统设计中的应用](https://assets.emqx.com/images/e87206a5fd5219a259dbb8f16f5e96db.png) 23 | 24 | 三峡集团科研院的庄宇飞分享了 ECP 在三峡乌兰察布储能电站中的实际应用。由于大规模数字储能电站本身对延时和实时处理高要求的特性,三峡利用 ECP 解决了海量数据的实时采集与处理的挑战。 满足大规模电池储能系统超过 1 万点位数据 100ms 采集的需求。 25 | 26 | ECP 帮助储能电站完成高并发、高吞吐量、高安全性、低延时的数据需求。在边缘端提供灵活的实时计算框架,支持储能系统去重、电池一致性和 SOC/SoH 和预警告警等一系列算法的实现并实现数据的存储。云端通过集群的模式支撑百万数据点的汇聚、存储和转发。同时满足大规模电池储能物联网的安全和监控需求。 27 | 28 | ## 未来展望 29 | 30 | 随着工业数字化转型进程的不断推进,ECP 将成为智能制造时代的关键引擎。通过提供一体化的工业数据平台,ECP 将助力企业更高效地进行大规模数据采集、处理和存储分析,实现数据驱动的生产运营。结合边缘计算和人工智能技术,ECP 还将帮助工业企业实现更智能、灵活的生产监测和实时决策。在未来,EMQ 将持续完善这一工业互联数据平台,通过坚实的数据基础设施,助力工业企业数字化转型。 31 | 32 | ![扫码申请演示](https://assets.emqx.com/images/e94bd82f84e00c9cd80c2766ffdf4cac.png) 33 | -------------------------------------------------------------------------------- /zh/202312/emqx-enterprise-4-4-23-release-notes.md: -------------------------------------------------------------------------------- 1 | [EMQX Enterprise](https://www.emqx.com/zh/products/emqx) 4.4.23 版本现已正式发布! 2 | 3 | 这是一个维护版本,优化了节点通信性能、并修复了 2 个 BUG,进一步提高了产品的稳定性。 4 | 5 | ## 性能提升 6 | 7 | 优化了用于节点间 MQTT 消息传输的 `gen_rpc` 库,改进了其对通道中积压消息的处理能力,从而使系统更快地从流量高峰中恢复。 8 | 9 | ## BUG 修复 10 | 11 | 以下是 BUG 修复列表: 12 | 13 | - 修复规则引擎无法连接到 [Upstash](https://upstash.com/) Redis 的问题。修复前,在与 Redis 服务建立 TCP 连接之后,EMQX 的 Redis 驱动程序使用 [inline commands](https://redis.io/docs/reference/protocol-spec/#inline-commands) 来发送 AUTH 和 SELECT 命令。但 Upstash Redis 服务不支持 inline commands,导致 EMQX 无法连接到 Upstash Redis 服务。 修复后,EMQX 的 Redis 驱动使用 RESP (Redis Serialization Protocol) 来发送 AUTH 和 SELECT 命令。 14 | - 为 "离线消息保存到 Redis" 动作和 Redis 资源的某些参数增加了合法性校验。 15 | - 校验 "离线消息保存到 Redis" 动作的 "Redis Key 超期时间" 参数。 16 | - 校验 Redis 资源的 "Redis 数据库" 参数。 17 | 18 | 19 | 20 |
21 |
22 | 免费试用 EMQX 企业版 23 |
无限连接,任意集成,随处运行。
24 |
25 | 开始试用 → 26 |
27 | -------------------------------------------------------------------------------- /zh/202401/emqx-ecp-2-1-0-release-notes.md: -------------------------------------------------------------------------------- 1 | EMQX ECP 工业互联数据平台 2.1.0 版本现已正式发布。新版本优化了安装过程、提升与边缘软件 NeuronEX 的集成能力,并强化监控告警体系,为用户提供更简单、强大的工业数字化解决方案。 2 | 3 | ## 优化安装部署流程 4 | 5 | ECP 2.1.0 优化了安装包及安装过程,降低了部署 ECP 的复杂性。让用户可以更轻松地完成安装,并更快速地投入使用。 6 | 7 | 新版 ECP 安装步骤: 8 | 9 | 1. 下载 [emqx-ecp-docker-compose-installer-2.1.0.tar.gz](https://www.emqx.com/zh/downloads/emqx-ecp/2.1.0/emqx-ecp-docker-compose-installer-2.1.0.tar.gz) 10 | 11 | ``` 12 | tar -xzvf emqx-ecp-docker-compose-installer-2.1.0.tar.gz && cd docker-compose 13 | ``` 14 | 15 | 2. 依赖检查 16 | 17 | ``` 18 | ./emqx_ecp_ctl precheck 19 | ``` 20 | 21 | 3. 配置环境 22 | 23 | ``` 24 | ./emqx_ecp_ctl configure 25 | ``` 26 | 27 | 4. 启动服务 28 | 29 | ``` 30 | ./emqx_ecp_ctl start 31 | ``` 32 | 33 | 5. 创建用户 34 | 35 | ``` 36 | ./emqx_ecp_ctl create-user 37 | ``` 38 | 39 | 6. 浏览器访问 40 | 41 | ``` 42 | http://:8082 43 | ``` 44 | 45 | 新版本 ECP 安装包下载地址如下,欢迎下载试用:[https://www.emqx.cn/downloads-and-install/emqx-ecp](https://www.emqx.cn/downloads-and-install/emqx-ecp)。 46 | 47 | ## 强化与 NeuronEX 的集成 48 | 49 | 新版本引入了全新的架构和实现,使其能够更加方便、灵活地与工业边缘软件 NeuronEX 集成,为用户提供更一体化的工业互联体验。通过重新设计,实现了 ECP 与 NeuronEX 之间的探活机制,提升了两者之间的通信效率和稳定性。 50 | 51 | ## 优化监控告警体系 52 | 53 | 在 ECP 2.1.0 版本中, 我们重新设计了当前的告警及历史告警判断逻辑,支持用户自定义告警规则。这使得告警系统更加灵活,能够更好地满足不同用户的需求。同时,我们也优化了告警推送功能,现在可以通过标签分组推送告警信息,使用户能够更精准地获取关键信息。 54 | 55 | ![优化监控告警体系](https://assets.emqx.com/images/1fa4b6464e37adf692108c5a7759ced1.png) 56 | 57 | ## 边缘服务管理的优化 58 | 59 | EMQX ECP 提供了对不同网络条件和不同接入方式的边缘服务,进行远程配置管理、实时状态监控、故障诊断、驱动及算法更新等操作的能力,简化现场运维工作。 60 | 61 | ECP 2.1.0 版本针对”托管 - Docker 直连“类型的边缘服务进行了全面的优化升级,显著提升了边缘服务的性能和稳定性。此外,该版本还新增了边缘服务强制删除功能,使管理者可以更加灵活地进行服务管理。 62 | 63 | ![边缘服务管理的优化](https://assets.emqx.com/images/138ade47050105820947cd172d3c995f.png) 64 | 65 | ## 流程完善及易用性提升 66 | 67 | 本次更新还进一步优化了边缘服务的管理流程,包括对其纳入和取消管理的流程,使操作更加流畅和清晰。同时,我们对新安装的 ECP 配置项的默认设置进行了重新审视,以确保用户在初次使用时就能够获得最佳的体验。 68 | 69 | ## 结语 70 | 71 | 这次更新希望提升工业用户在数字化转型中的体验,帮助用户消除数据孤岛、降低运维成本、提升生产效率及质量。我们期待用户能够通过这一版本获得更多的便利和价值。欢迎前往 [ECP 官网](https://www.emqx.cn/products/emqx-ecp)下载最新版本,开始您的数字化之旅! 72 | 73 |
74 |
75 | 免费试用 EMQX ECP 76 |
77 | 开始试用 → 78 |
79 | -------------------------------------------------------------------------------- /zh/202408/neuronex-role-based-access-control.md: -------------------------------------------------------------------------------- 1 | 随着企业数字化转型的不断深入,确保数据和信息安全变得日益重要。传统的访问控制方法往往需要为每个用户单独配置权限,这种方法管理复杂且漏洞百出,难以适应快速变化的业务需求。而基于角色的访问控制(RBAC)功能通过定义不同角色及其权限来简化权限管理,不仅能有效地控制用户对敏感信息和系统的访问,而且减轻了企业的运维负担。 2 | 3 | NeuronEX 作为一款工业边缘网关软件,提供工业多协议接入与边缘计算能力。能够实现工业设备协议采集、工业各系统数据集成、边端数据过滤分析、AI算法集成以及数据转发和平台对接等功能,为工业场景提供低延迟的数据接入管理及智能分析服务。 4 | 5 | 本文将重点介绍 NeuronEX 中基于角色的访问控制功能。该功能支持用户创建不同的角色,不同的角色相对应不同的操作权限,以此达到权限隔离的目的,提高用户数据的安全性、合规性和灵活性。 6 | 7 | ## 用户管理 8 | 9 | 当前系统内置了一个用户名为 admin 的超级管理员用户,首次登录系统后可更改此用户的密码。为了实现基于角色访问控制功能,NeuronEX 新增了用户管理的功能,通过前端右上角的 **用户管理** 按钮即可进入。 10 | 11 | ![用户管理](https://assets.emqx.com/images/7f2ddcc2a0a81d5f69292bc46dda7aaf.png) 12 | 13 | 点击 **创建用户** 按钮,在弹出的页面中,需要填写新创建用户的名字、密码、角色和描述信息,在角色下拉选项框中,可选择 Administrator 和 Viewer 两种角色。填写好用户信息后,点击 **提交** 按钮即可保存。 14 | 15 | ![创建用户](https://assets.emqx.com/images/84bf72b36be872b6ead07c89b5644335.png) 16 | 17 | 此外用户创建好后,在用户列表中还支持重新编辑用户信息、修改密码和删除用户。 18 | 19 | ## 访问控制 20 | 21 | NeuronEX 的权限与角色密切关联,并且不支持用户自定义权限与角色之间的对应关系,其对应关系由 NeuronEX 决定 。目前 Administrator 角色拥有 NeuronEX 所有的控制权限,可以查看、创建、修改和删除所有配置,而 Viewer 角色对一些配置只有查看的权限。 22 | 23 | 当创建好用户后,凭借新用户的登录信息即可登录系统。由于用户在创建时已被赋予了 Administrator 或者 Viewer 角色,因此在登录时该用户的权限已经确定。对于 Viewer 角色的用户来说,前端上的某些编辑按钮会呈现出不可编辑的状态。 24 | 25 | ![访问控制——Administrator](https://assets.emqx.com/images/c83012b399251ba1fa8926288f350893.png) 26 | 27 | Administrator 角色可以创建新的南向设备 28 | 29 | ![访问控制——Viewer](https://assets.emqx.com/images/988dab1aa973d336d632005faf173b6b.png) 30 | 31 | Viewer 角色无法创建新的南向设备 32 | 33 | 此外,访问控制除了在前端生效外,针对 NeuronEX API 的请求依旧生效,用户需要首先调用 /api/login 接口来获取 Token, 然后用获得的 Token 来调用对应的 NeuronEX API。以 Administrator 角色获得的 Token 可以请求任意 API,而用 Viewer 角色获得的 Token 请求没有权限的 API 时会返回 403 状态码。 34 | 35 | ## 总结 36 | 37 | 本文介绍了 NeuronEX 中基于角色的访问控制功能。通过支持创建多个用户并赋予用户 Administrator 或 Viewer 角色,并将角色与控制权限做了对应关系,实现了基本的访问控制功能。本例中,当用户分别以角色Administrator 和 Viewer 请求时,会根据角色限制用户的访问。该功能从 3.0.0 版本开始支持,欢迎体验。 38 | 39 |
40 |
41 | 咨询 EMQ 技术专家 42 |
43 | 联系我们 → 44 |
45 | -------------------------------------------------------------------------------- /zh/202506/emqx-cloud-serverless-deployment-upgrades-june-2025.md: -------------------------------------------------------------------------------- 1 | 为提升系统稳定性、性能和可观测性,我们将对 Serverless 平台进行升级。专有版(Dedicated)和 BYOC 部署不受影响。 2 | 3 | ## 升级时间安排 4 | 5 | **升级时间:** 2025年6月3日 22:00-23:00(北京时间) 6 | 7 | **预计中断:** 30-60秒(可能发生2-3次短暂断连) 8 | 9 | **受影响服务:** Serverless 部署 10 | 11 | ## 升级影响 12 | 13 | ### 维护期间 14 | 15 | - MQTT 连接将短暂中断 2-3 次,每次 30-60 秒 16 | - 暂停创建或修改 Serverless 部署 17 | - 无设备在线的工作负载不受影响 18 | 19 | ### 维护完成后 20 | 21 | - 域名地址保持不变 22 | - IP 地址会发生变化 23 | - 如使用 IP 白名单,需及时更新 24 | 25 | ## 您需要做的准备 26 | 27 | ### 升级前 28 | 29 | - 确保 MQTT 客户端支持自动重连 30 | - 建议使用域名连接,避免 IP 变更影响 31 | 32 | ### 升级后 33 | 34 | - 如有 IP 白名单,请及时更新 35 | - 验证设备连接和数据传输正常 36 | 37 | ## 服务保障 38 | 39 | - **实时状态:** https://status.emqxcloud.cn/ 40 | - **技术支持:** 提交工单获得 SRE 团队支持 41 | - **严格流程:** 按标准维护流程执行,确保平稳过渡 42 | 43 | 我们将以最小的业务影响换取更好的服务体验。感谢您对 EMQX Cloud 的信任与支持! 44 | 45 | **EMQX Cloud SRE 团队** **2025 年 6 月** 46 | --------------------------------------------------------------------------------