Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 42A9B200B3C for ; Wed, 13 Jul 2016 22:44:57 +0200 (CEST) Received: by cust-asf.ponee.io (Postfix) id 410F1160A6E; Wed, 13 Jul 2016 20:44:57 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 861D4160A62 for ; Wed, 13 Jul 2016 22:44:56 +0200 (CEST) Received: (qmail 90492 invoked by uid 500); 13 Jul 2016 20:44:55 -0000 Mailing-List: contact dev-help@quarks.incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@quarks.incubator.apache.org Delivered-To: mailing list dev@quarks.incubator.apache.org Received: (qmail 90475 invoked by uid 99); 13 Jul 2016 20:44:55 -0000 Received: from pnap-us-west-generic-nat.apache.org (HELO spamd1-us-west.apache.org) (209.188.14.142) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 13 Jul 2016 20:44:55 +0000 Received: from localhost (localhost [127.0.0.1]) by spamd1-us-west.apache.org (ASF Mail Server at spamd1-us-west.apache.org) with ESMTP id F00B2C9E4C for ; Wed, 13 Jul 2016 20:44:54 +0000 (UTC) X-Virus-Scanned: Debian amavisd-new at spamd1-us-west.apache.org X-Spam-Flag: NO X-Spam-Score: -5.307 X-Spam-Level: X-Spam-Status: No, score=-5.307 tagged_above=-999 required=6.31 tests=[KAM_LAZY_DOMAIN_SECURITY=1, RCVD_IN_DNSWL_HI=-5, RCVD_IN_MSPIKE_H3=-0.01, RCVD_IN_MSPIKE_WL=-0.01, RP_MATCHES_RCVD=-1.287] autolearn=disabled Received: from mx1-lw-eu.apache.org ([10.40.0.8]) by localhost (spamd1-us-west.apache.org [10.40.0.7]) (amavisd-new, port 10024) with ESMTP id y530jzBsJLRG for ; Wed, 13 Jul 2016 20:44:54 +0000 (UTC) Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by mx1-lw-eu.apache.org (ASF Mail Server at mx1-lw-eu.apache.org) with SMTP id 8C74960D59 for ; Wed, 13 Jul 2016 20:44:53 +0000 (UTC) Received: (qmail 90461 invoked by uid 99); 13 Jul 2016 20:44:52 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 13 Jul 2016 20:44:52 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 7CF51E04BE; Wed, 13 Jul 2016 20:44:52 +0000 (UTC) From: dlaboss To: dev@quarks.incubator.apache.org Reply-To: dev@quarks.incubator.apache.org References: In-Reply-To: Subject: [GitHub] incubator-quarks pull request #154: [WIP] Quarks 176 - Update Javadoc for Mq... Content-Type: text/plain Message-Id: <20160713204452.7CF51E04BE@git1-us-west.apache.org> Date: Wed, 13 Jul 2016 20:44:52 +0000 (UTC) archived-at: Wed, 13 Jul 2016 20:44:57 -0000 Github user dlaboss commented on a diff in the pull request: https://github.com/apache/incubator-quarks/pull/154#discussion_r70704776 --- Diff: connectors/mqtt/src/main/java/quarks/connectors/mqtt/iot/MqttDevice.java --- @@ -45,7 +45,21 @@ Licensed to the Apache Software Foundation (ASF) under one * The connector doesn't presume a particular pattern for * Device MQTT "event" topic and "command" topics though default * patterns are provided. + *

*

+ * MqttDevice supports payload in String and Json formats. + * For command messages, JsonObject is returned with structure as follows: + *
+ *

    + * {
    + *     "command" : "<>",
    + *     "tsms" : "<>",
    + *     "format" : "<>",
    + *     "payload" : "<>"
    + * }
    + * 
+ *

+ *

--- End diff -- so sorry for the delay. 1. Correct. The topic suffix defines the required payload fmt and MqttDevice currently only supports /fmt/json. 2. See scripts/apps/sensorAnalytics/README. You can edit the sensorAnalytics.properties file there to tell the sample to use a public MQTT server as noted there. 3. Correct, that overload of events() specifies tuple independent eventId and qos values and serializes the tuple to JSON and sends a MQTT message with that JSON as its payload. The fact that a JsonObject is both a stream tuple and payload in different contexts adds to the confusion imo :-/ Let me see if I can clarify things by more clearly separating the protocol from the API. The MqttDevice's MQTT protocol is defined by the "command" and "eventId" MQTT topics and MQTT message payload content. MqttDevice defines default MQTT topic formats for eventId messages and command messages but an organization / service / interoperating group of applications are free to define their own topic formats subject to the minimum requirements described in MqttDevice's javadoc. An "event" is a MQTT message whose payload is JSON, published to an "eventId" topic. The definition of a particular event id's JSON contents is entirely up to the application; the JSON content is opaque to MqttDevice. Depending on which MqttDevice.events() method is used, the JSON is either the serialized TStream tuple, or the serialized JsonObject that the application generates from the TStream tuple. A "command" is a MQTT message whose payload is JSON, published to a "command" topic. The definition of a particular command's JSON contents is entirely up to the application; the JSON content is opaque to MqttDevice. MqttDevice packages a received "command" MQTT message into a TStream tuple whose contents are defined by IotDevice.command(). The tuple's CMD_FORMAT is "json" and its CMD_PAYLOAD is a JsonObject generated from the MQTT message's JSON payload. Hope that helps :-) --- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastructure@apache.org or file a JIRA ticket with INFRA. ---