|
@@ -11,6 +11,8 @@ package cc.iotkit.comp.emqx;
|
|
|
|
|
|
import cc.iotkit.common.thing.ThingService;
|
|
import cc.iotkit.common.thing.ThingService;
|
|
import cc.iotkit.model.device.message.ThingModelMessage;
|
|
import cc.iotkit.model.device.message.ThingModelMessage;
|
|
|
|
+import cc.iotkit.model.product.ProductModel;
|
|
|
|
+import lombok.Data;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.apache.commons.beanutils.BeanUtils;
|
|
import org.apache.commons.beanutils.BeanUtils;
|
|
import org.luaj.vm2.LuaTable;
|
|
import org.luaj.vm2.LuaTable;
|
|
@@ -27,14 +29,21 @@ import java.util.List;
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
|
|
@Slf4j
|
|
@Slf4j
|
|
|
|
+@Data
|
|
public class LuaScripter implements IScripter {
|
|
public class LuaScripter implements IScripter {
|
|
|
|
|
|
|
|
+ private ProductModel model;
|
|
|
|
+
|
|
private final LuaScriptEngine engine = (LuaScriptEngine) (
|
|
private final LuaScriptEngine engine = (LuaScriptEngine) (
|
|
new ScriptEngineManager().getEngineByName("luaj"));
|
|
new ScriptEngineManager().getEngineByName("luaj"));
|
|
|
|
|
|
private LuaValue decoder;
|
|
private LuaValue decoder;
|
|
private LuaValue encoder;
|
|
private LuaValue encoder;
|
|
|
|
|
|
|
|
+ public LuaScripter(ProductModel model) {
|
|
|
|
+ this.model = model;
|
|
|
|
+ }
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
public void setScript(String script) {
|
|
public void setScript(String script) {
|
|
try {
|
|
try {
|
|
@@ -52,14 +61,14 @@ public class LuaScripter implements IScripter {
|
|
try {
|
|
try {
|
|
LuaTable table = new LuaTable();
|
|
LuaTable table = new LuaTable();
|
|
table.set("model", msg.getModel());
|
|
table.set("model", msg.getModel());
|
|
- table.set("mac", msg.getMac());
|
|
|
|
|
|
+ table.set("deviceName", msg.getDeviceName());
|
|
table.set("data", msg.getData());
|
|
table.set("data", msg.getData());
|
|
Map result = (Map) parse(decoder.call(table));
|
|
Map result = (Map) parse(decoder.call(table));
|
|
ThingModelMessage modelMessage = new ThingModelMessage();
|
|
ThingModelMessage modelMessage = new ThingModelMessage();
|
|
BeanUtils.populate(modelMessage, result);
|
|
BeanUtils.populate(modelMessage, result);
|
|
|
|
|
|
modelMessage.setProductKey(msg.getProductKey());
|
|
modelMessage.setProductKey(msg.getProductKey());
|
|
- modelMessage.setDeviceName(msg.getMac());
|
|
|
|
|
|
+ modelMessage.setDeviceName(msg.getDeviceName());
|
|
return modelMessage;
|
|
return modelMessage;
|
|
} catch (Throwable e) {
|
|
} catch (Throwable e) {
|
|
log.error("execute decode script error", e);
|
|
log.error("execute decode script error", e);
|
|
@@ -85,6 +94,9 @@ public class LuaScripter implements IScripter {
|
|
Map map = (Map) parse(result);
|
|
Map map = (Map) parse(result);
|
|
TransparentMsg message = new TransparentMsg();
|
|
TransparentMsg message = new TransparentMsg();
|
|
BeanUtils.populate(message, map);
|
|
BeanUtils.populate(message, map);
|
|
|
|
+ message.setProductKey(model.getProductKey());
|
|
|
|
+ message.setModel(model.getModel());
|
|
|
|
+ message.setDeviceName(service.getDeviceName());
|
|
return message;
|
|
return message;
|
|
} catch (Throwable e) {
|
|
} catch (Throwable e) {
|
|
log.error("execute encode script error", e);
|
|
log.error("execute encode script error", e);
|