diff --git a/boards/default_src/python_mixpy/blocks/iot.js b/boards/default_src/python_mixpy/blocks/iot.js index d81c367e..95e52f25 100644 --- a/boards/default_src/python_mixpy/blocks/iot.js +++ b/boards/default_src/python_mixpy/blocks/iot.js @@ -323,6 +323,29 @@ export const IOT_MIXIO_PUBLISH = { } }; +export const IOT_MIXIO_PUBLISHEX = { + init: function () { + this.setColour(IOT_HUE); + this.appendDummyInput() + .appendField("MixIO") + this.appendValueInput('TOPIC') + .appendField(Blockly.Msg.MIXLY_EMQX_PUBLISH_NEW) + .appendField(Blockly.Msg.MIXLY_EMQX_PUBLISH_TOPIC); + this.appendValueInput('MSG') + .appendField(Blockly.Msg.HTML_BODY); + this.appendDummyInput() + .appendField(Blockly.Msg.MIXLY_Service_quality_display) + .appendField(new Blockly.FieldDropdown([ + [Blockly.Msg.MIXLY_AT_MOST_ONCE,"0"], + [Blockly.Msg.MIXLY_AT_LEAST_ONCE,"1"] + ]),"quality") + this.setInputsInline(true); + this.setPreviousStatement(true); + this.setNextStatement(true); + this.setTooltip(Blockly.Msg.MIXLY_ESP32_IOT_EMQX_PUBLISH_TOOLTIP); + } +}; + export const IOT_MIXIO_SUBSCRIBE = { init: function () { this.setColour(IOT_HUE); diff --git a/boards/default_src/python_mixpy/generators/iot.js b/boards/default_src/python_mixpy/generators/iot.js index 3a2e27d1..22502dfb 100644 --- a/boards/default_src/python_mixpy/generators/iot.js +++ b/boards/default_src/python_mixpy/generators/iot.js @@ -19,6 +19,15 @@ export const IOT_MIXIO_PUBLISH = function (_, generator) { return code; } +export const IOT_MIXIO_PUBLISHEX = function (_, generator) { + var topic = generator.valueToCode(this, 'TOPIC', generator.ORDER_ATOMIC); + var msg = generator.valueToCode(this, 'MSG', generator.ORDER_ATOMIC); + var q = this.getFieldValue('quality'); + generator.definitions_['import_mixiot'] = "import mixiot"; + var code = 'mqtt_client.publish(MQTT_USR_PRJ + ' + topic + ', ' + msg + ', qos='+ q +')\n'; + return code; +} + export const IOT_MIXIO_SUBSCRIBE = function (_, generator) { var topic = generator.valueToCode(this, 'TOPIC', generator.ORDER_ATOMIC); var method = generator.valueToCode(this, 'METHOD', generator.ORDER_ATOMIC);