Files
mixly3/boards/default_src/micropython/generators/iot.js

370 lines
16 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
export const iot_wifi_connect = function (_, generator) {
generator.definitions_['import_mixiot'] = "import mixiot";
var username = generator.valueToCode(this, 'WIFINAME', generator.ORDER_ATOMIC);
var password = generator.valueToCode(this, 'PASSWORD', generator.ORDER_ATOMIC);
var code = 'mixiot.wlan_connect(' + username + ', ' + password + ')\n';
return code;
}
export const iot_onenet_connect = function (_, generator) {
generator.definitions_['import_onenet'] = "import onenet";
var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var client = generator.valueToCode(this, 'CLIENT', generator.ORDER_ATOMIC);
var server = generator.valueToCode(this, 'SERVER', generator.ORDER_ATOMIC);
var username = generator.valueToCode(this, 'USERNAME', generator.ORDER_ATOMIC);
var password = generator.valueToCode(this, 'PASSWORD', generator.ORDER_ATOMIC);
var topic = generator.valueToCode(this, 'TOPIC', generator.ORDER_ATOMIC);
var subscribe = generator.valueToCode(this, 'SUB', generator.ORDER_ASSIGNMENT) || 'None';
var code = v + ' = onenet.init_MQTT_client(' + client + ', ' + server + ', ' + username + ', ' + password + ', ' + topic + ', ' + subscribe + ')\n';
return code;
}
export const iot_onenet_disconnect = function (_, generator) {
var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
generator.definitions_['import_onenet'] = "import onenet";
var code = v + '.do_disconnect()\n';
return code;
}
export const iot_onenet_publish_dict = function (_, generator) {
var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var d = generator.valueToCode(this, 'DICT', generator.ORDER_ATOMIC);
var check = this.getFieldValue("is_print") == 'TRUE' ? 'True' : 'False';
generator.definitions_['import_onenet'] = "import onenet";
var code = v + '.publish(' + d + ', is_print=' + check + ')\n';
return code;
}
export const iot_onenet_check = function (_, generator) {
var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
generator.definitions_['import_onenet'] = "import onenet";
var code = v + '.check_msg()\n';
return code;
}
export const iot_onenet_publish = function (_, generator) {
// Create a list with any number of elements of any type.
//var size=window.parseFloat(this.getFieldValue('SIZE'));
generator.definitions_['import_onenet'] = "import onenet";
var ck = new Array(this.itemCount_);
var cv = new Array(this.itemCount_);
var ct = new Array(this.itemCount_);
var default_value = '0';
var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
for (let n = 0; n < this.itemCount_; n++) {
var keyName = this.getFieldValue('KEY' + n);
ck[n] = keyName;
}
for (let n = 0; n < this.itemCount_; n++) {
cv[n] = generator.valueToCode(this, 'ADD' + n,
generator.ORDER_NONE) || default_value;
}
var code = v + ".publish({";
for (let n = 0; n < this.itemCount_; n++) {
ct[n] = ck[n] + ': ' + cv[n];
}
//var code = "c.publish('$dp', pubData("+ '{' + code.join(', ') + '})\n';
//var code =''+varName+'['+size+"]"+'='+ '{' + code.join(', ') + '}\n';
//generator.setups_['setup_lists'+varName] = code;
code = code + ct.join(', ') + "})\n";
return code;
}
export const iot_mixio_connect = function (_, generator) {
generator.definitions_['import_mixiot'] = "import mixiot";
generator.definitions_['import_machine'] = "import machine";
generator.definitions_['import_ubinascii_hexlify'] = "from ubinascii import hexlify";
var server = generator.valueToCode(this, 'SERVER', generator.ORDER_ATOMIC);
var username = generator.valueToCode(this, 'USERNAME', generator.ORDER_ATOMIC);
var password = generator.valueToCode(this, 'PASSWORD', generator.ORDER_ATOMIC);
var project = generator.valueToCode(this, 'PROJECT', generator.ORDER_ATOMIC);
//var subscribe = generator.valueToCode(this, 'SUB', generator.ORDER_ASSIGNMENT) || '0';
var a = "'" + username.replace("'", "").replace("'", "") + "/" + project.replace("'", "").replace("'", "") + "/'"
var code = 'MQTT_USR_PRJ = ' + a + '\n' + 'mqtt_client = mixiot.init_MQTT_client(' + server + ', ' + username + ', ' + password + ', MQTT_USR_PRJ)\n';
return code;
}
export const IOT_MIXIO_PUBLISH = function (_, generator) {
var topic = generator.valueToCode(this, 'TOPIC', generator.ORDER_ATOMIC);
var msg = generator.valueToCode(this, 'MSG', generator.ORDER_ATOMIC);
generator.definitions_['import_mixiot'] = "import mixiot";
var code = 'mqtt_client.publish(MQTT_USR_PRJ + ' + topic + ', ' + msg + ')\n';
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);
generator.definitions_['import_mixiot'] = "import mixiot";
var code = 'mqtt_client.set_callback(' + topic + ',' + method + ', MQTT_USR_PRJ)\n';
code += 'mqtt_client.subscribe(MQTT_USR_PRJ + ' + topic + ')\n';
return code;
}
export const iot_mixio_disconnect = function (_, generator) {
generator.definitions_['import_mixiot'] = "import mixiot";
var code = 'mqtt_client.disconnect(MQTT_USR_PRJ)\n';
return code;
}
export const iot_mixio_connect_only = function (_, generator) {
generator.definitions_['import_mixiot'] = "import mixiot";
var code = 'mqtt_client.connect()\n';
return code;
}
export const iot_mixio_check = function (_, generator) {
generator.definitions_['import_mixiot'] = "import mixiot";
var code = 'mqtt_client.check_msg()\n';
return code;
}
export const iot_mixio_format_topic = function (_, generator) {
var code = 'mqtt_client.decode("utf-8").split("/")[-1]';
return [code, generator.ORDER_ATOMIC];
}
export const iot_mixio_format_msg = function (_, generator) {
var code = 'mqtt_client.decode("utf-8")';
return [code, generator.ORDER_ATOMIC];
}
export const IOT_FORMATTING = function (_, generator) {
generator.definitions_['import_mixpy'] = "import mixpy";
var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var code = 'mixpy.format_content(' + v + ', mqtt_client.client_id)';
return [code, generator.ORDER_ATOMIC];
}
export const IOT_FORMAT_STRING = function (_, generator) {
generator.definitions_['import_mixpy'] = "import mixpy";
var v = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
var code = 'mixpy.format_str(' + v + ')';
return [code, generator.ORDER_ATOMIC];
}
export const IOT_EMQX_INIT_AND_CONNECT_BY_SHARE_CODE = function (_, generator) {
var server = generator.valueToCode(this, 'SERVER', generator.ORDER_ATOMIC);
// var port = '1883';
var share_code = generator.valueToCode(this, 'KEY', generator.ORDER_ATOMIC);
generator.definitions_['import_mixiot'] = "import mixiot";
generator.definitions_['import_machine'] = "import machine";
generator.definitions_['import_urequests'] = "import urequests";
generator.definitions_['import_ubinascii_hexlify'] = "from ubinascii import hexlify";
generator.definitions_['import_mixpy_analyse_sharekey'] = "from mixpy import analyse_sharekey";
// var mac_address = 'str(binascii.hexlify(wifi.radio.mac_address))[2:14]'
// var socket_pool = 'socketpool.SocketPool(wifi.radio)'
// var ssl_context = 'ssl.create_default_context()'
var code = 'sk = analyse_sharekey(\'https://' + server.substring(1, server.length - 1) + '/mixio-php/sharekey.php?sk=' + share_code + '\')\n' +
'MQTT_USR_PRJ = sk[0]+\'/\'+sk[1]+\'/\'\n';
// 根据server是否包含":"来生成不同的mqtt_client代码
if (server.indexOf(':') !== -1) {
// 包含":"使用server.substring(1, server.indexOf(':'))
code += 'mqtt_client = mixiot.init_MQTT_client(' + server.substring(1, server.indexOf(':')) + ', sk[0], sk[2]' + ', MQTT_USR_PRJ)\n';
} else {
// 不包含":"使用完整的server去掉首尾的引号
code += 'mqtt_client = mixiot.init_MQTT_client(' + server.substring(1, server.length - 1) + ', sk[0], sk[2]' + ', MQTT_USR_PRJ)\n';
}
return code;
}
export const iot_mixly_key = function (_, generator) {
var code = this.getFieldValue('VISITOR_ID');
return [code, generator.ORDER_ATOMIC];
}
export const IOT_EMQX_INIT_AND_CONNECT_BY_MIXLY_CODE = function (_, generator) {
generator.definitions_['import_mixiot'] = "import mixiot";
generator.definitions_['import_machine'] = "import machine";
generator.definitions_['import_ubinascii_hexlify'] = "from ubinascii import hexlify";
var server = generator.valueToCode(this, 'SERVER', generator.ORDER_ATOMIC);
// var port = '1883';
var username = '"MixIO_public"';
var password = '"MixIO_public"';
var mixly_code = generator.valueToCode(this, 'KEY', generator.ORDER_ATOMIC);
var a = '"MixIO/' + mixly_code + '/default/"'
// var mac_address = 'str(binascii.hexlify(wifi.radio.mac_address))[2:14]'
// var socket_pool = 'socketpool.SocketPool(wifi.radio)'
// var ssl_context = 'ssl.create_default_context()'
var code = 'MQTT_USR_PRJ = ' + a + '\n' + 'mqtt_client = mixiot.init_MQTT_client(' + server + ', ' + username + ', ' + password + ', MQTT_USR_PRJ)\n';
return code;
}
export const IOT_EMQX_PING = function (_, generator) {
generator.definitions_['import_mixiot'] = "import mixiot";
var code = 'mqtt_client.pingSync()';
return [code, generator.ORDER_ATOMIC];
}
export const IOT_MIXIO_NTP = function (_, generator) {
generator.definitions_['import_mixiot'] = "import mixiot";
var addr = generator.valueToCode(this, 'addr', generator.ORDER_ATOMIC);
var code = 'mixiot.ntp(' + addr + ')';
return [code, generator.ORDER_ATOMIC];
}
export const iot_client_onboard = function (_, generator) {
var code = 'mqtt_client';
return [code, generator.ORDER_ATOMIC];
}
export const iot_http_client = function (_, generator) {
generator.definitions_['import_debugnet'] = "import debugnet";
var addr = generator.valueToCode(this, 'addr', generator.ORDER_ATOMIC);
var key = this.getFieldValue('key');
var code = 'HTTP_client = debugnet.request("GET", ' + addr + ', debug=' + key + ')\n';
return code;
}
export const iot_http_data = function (_, generator) {
generator.definitions_['import_debugnet'] = "import debugnet";
var key = this.getFieldValue('key');
var code = 'HTTP_client.' + key;
return [code, generator.ORDER_ATOMIC];
}
export const iot_mqtt_client = function (_, generator) {
generator.definitions_['import_debugnet'] = "import debugnet";
var addr = generator.valueToCode(this, 'addr', generator.ORDER_ATOMIC);
var key = this.getFieldValue('key2');
var code = 'mqtt_client = debugnet.init_MQTT_client(' + addr + ', "MixIO_public", "MixIO_public", "MixIO/3QBAGKRL/default/",debug=' + key + ')\n';
code += 'mqtt_client.subscribe("$SYS/hello")\n';
return code;
}
export const iot_mqtt_data = function (_, generator) {
generator.definitions_['import_mixiot'] = "import mixiot";
var key = this.getFieldValue('key');
var code = 'mqtt_client.' + key;
return [code, generator.ORDER_ATOMIC];
}
export const iot_connect_ollama = function (_, generator) {
generator.definitions_['import_ollama'] = "from ollama import Ollama";
var ser = generator.valueToCode(this, 'SERVER', generator.ORDER_ATOMIC);
var name = generator.valueToCode(this, 'NAME', generator.ORDER_ATOMIC);
var num = generator.valueToCode(this, 'NUMBER', generator.ORDER_ATOMIC);
var code = 'llm = Ollama(' + ser + ', ' + name + ', ' + num + ')\n';
return code;
}
export const IOT_CONNECT_OLLAMA = iot_connect_ollama;
export const iot_connect_openai = function (_, generator) {
generator.definitions_['import_openai'] = "from openai import OpenAI";
var ser = generator.valueToCode(this, 'SERVER', generator.ORDER_ATOMIC);
var key = generator.valueToCode(this, 'KEY', generator.ORDER_ATOMIC);
var name = generator.valueToCode(this, 'NAME', generator.ORDER_ATOMIC);
var num = generator.valueToCode(this, 'NUMBER', generator.ORDER_ATOMIC);
var code = `llm = OpenAI(${ser}, ${key}, ${name}, ${num})\n`;
return code;
}
export const use_ollama_llm_to_chat = function (_, generator) {
var topic = generator.valueToCode(this, 'TOPIC', generator.ORDER_ATOMIC);
var method = generator.valueToCode(this, 'METHOD', generator.ORDER_ATOMIC);
var code = 'llm.chat(' + topic + ', ' + method + ')\n';
return code;
}
export const use_ollama_llm_to_chat_return = function (_, generator) {
var topic = generator.valueToCode(this, 'TOPIC', generator.ORDER_ATOMIC);
var code = 'llm.chat(' + topic + ')';
return [code, generator.ORDER_ATOMIC];
}
// export const ollama_set_timeout = function (_,generator) {
// var t = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
// var code = 'llm.set_timeout(' + t + ')\n';
// return code;
// }
// export const ollama_set_max_retries = function (_,generator) {
// var t = generator.valueToCode(this, 'VAR', generator.ORDER_ATOMIC);
// var code = 'llm.set_max_retries(' + t + ')\n';
// return code;
// }
// export const ollama_set_custom_url = function (_,generator) {
// var t = generator.valueToCode(this, 'TEXT', generator.ORDER_ATOMIC);
// var code = 'llm.set_custom_url(' + t + ')\n';
// return code;
// }
// export const ollama_select_model = function (_,generator) {
// var t = generator.valueToCode(this, 'TEXT', generator.ORDER_ATOMIC);
// var code = 'llm.select_model(' + t + ')\n';
// return code;
// }
// export const ollama_clear_user_history = function (_,generator) {
// var code = 'llm.clear_user_history()\n';
// return code;
// }
export const ollama_empty_history = function () {
var code = 'llm.empty_history()\n';
return code;
}
export const iot_tiny_web_db_init = function (_,generator) {
generator.definitions_['import_tiny_webdb'] = "import tiny_webdb";
const addr = generator.valueToCode(this, 'ADDR', generator.ORDER_ATOMIC);
const username = generator.valueToCode(this, 'USERNAME', generator.ORDER_ATOMIC);
const password = generator.valueToCode(this, 'PASSWORD', generator.ORDER_ATOMIC);
const code = `webdb = tiny_webdb.TinyWebDB(${addr}, ${username}, ${password})\n`;
return code;
}
export const iot_tiny_web_db_init_with_mqtt = function (_,generator) {
const mqtt = generator.valueToCode(this, 'MQTT', generator.ORDER_ATOMIC);
const code = `webdb = tiny_webdb.TinyWebDB(${mqtt})\n`;
return code;
}
export const iot_tiny_web_db_update = function (_,generator) {
const tag = generator.valueToCode(this, 'TAG', generator.ORDER_ATOMIC);
const value = generator.valueToCode(this, 'VALUE', generator.ORDER_ATOMIC);
const code = `webdb.update(${tag}, ${value})\n`;
return code;
}
export const iot_tiny_web_db_get = function (_,generator) {
const tag = generator.valueToCode(this, 'TAG', generator.ORDER_ATOMIC);
const code = `webdb.get(${tag})`;
return [code, generator.ORDER_ATOMIC];
}
export const iot_tiny_web_db_count = function (_,generator) {
const code = 'webdb.count()';
return [code, generator.ORDER_ATOMIC];
}
export const iot_tiny_web_db_search = function (_,generator) {
const no = generator.valueToCode(this, 'NO', generator.ORDER_ATOMIC);
const count = generator.valueToCode(this, 'COUNT', generator.ORDER_ATOMIC);
const tag = generator.valueToCode(this, 'TAG', generator.ORDER_ATOMIC);
const dtype = this.getFieldValue('DTYPE');
const code = `webdb.search(${no}, ${count}, ${tag}, '${dtype}')`;
return [code, generator.ORDER_ATOMIC];
}
export const iot_tiny_web_db_delete = function (_,generator) {
const tag = generator.valueToCode(this, 'TAG', generator.ORDER_ATOMIC);
const code = `webdb.delete(${tag})\n`;
return code;
}