321 lines
11 KiB
JavaScript
321 lines
11 KiB
JavaScript
import * as Blockly from "blockly/core";
|
|
import { getColour } from "../helpers/colour";
|
|
|
|
/*
|
|
----------------------------------LoRa--------------------------------------------------
|
|
*/
|
|
|
|
Blockly.Blocks["sensebox_lora_initialize_otaa"] = {
|
|
init: function () {
|
|
this.setTooltip(Blockly.Msg.senseBox_LoRa_init_otaa_tooltip);
|
|
this.setHelpUrl(Blockly.Msg.senseBox_LoRa_init_helpurl);
|
|
this.setColour(getColour().sensebox);
|
|
this.appendDummyInput().appendField("Initialize LoRa (OTAA)");
|
|
this.appendDummyInput()
|
|
.setAlign(Blockly.ALIGN_LEFT)
|
|
.appendField(Blockly.Msg.senseBox_LoRa_device_id)
|
|
.appendField("{")
|
|
.appendField(new Blockly.FieldTextInput("DEVICE ID"), "DEVICEID")
|
|
.appendField("}");
|
|
this.appendDummyInput()
|
|
.setAlign(Blockly.ALIGN_LEFT)
|
|
.appendField(Blockly.Msg.senseBox_LoRa_app_id)
|
|
.appendField("{")
|
|
.appendField(new Blockly.FieldTextInput("APP ID"), "APPID")
|
|
.appendField("}");
|
|
this.appendDummyInput()
|
|
.setAlign(Blockly.ALIGN_LEFT)
|
|
.appendField(Blockly.Msg.senseBox_LoRa_app_key)
|
|
.appendField("{")
|
|
.appendField(new Blockly.FieldTextInput("APP KEY"), "APPKEY")
|
|
.appendField("}");
|
|
this.appendDummyInput()
|
|
.setAlign(Blockly.ALIGN_LEFT)
|
|
.appendField(Blockly.Msg.senseBox_LoRa_interval)
|
|
.appendField(new Blockly.FieldTextInput("5"), "INTERVAL");
|
|
this.setPreviousStatement(true, null);
|
|
this.setNextStatement(true, null);
|
|
},
|
|
};
|
|
|
|
Blockly.Blocks["sensebox_lora_initialize_abp"] = {
|
|
init: function () {
|
|
this.setTooltip(Blockly.Msg.senseBox_LoRa_init_abp_tooltip);
|
|
this.setHelpUrl(Blockly.Msg.senseBox_LoRa_init_helpurl);
|
|
this.setColour(getColour().sensebox);
|
|
this.appendDummyInput().appendField("Initialize LoRa (ABP)");
|
|
this.appendDummyInput()
|
|
.setAlign(Blockly.ALIGN_LEFT)
|
|
.appendField(Blockly.Msg.senseBox_LoRa_nwskey_id)
|
|
.appendField("{")
|
|
.appendField(new Blockly.FieldTextInput("NWSKEY"), "NWSKEY")
|
|
.appendField("}");
|
|
this.appendDummyInput()
|
|
.setAlign(Blockly.ALIGN_LEFT)
|
|
.appendField(Blockly.Msg.senseBox_LoRa_appskey_id)
|
|
.appendField("{")
|
|
.appendField(new Blockly.FieldTextInput("APPSKEY"), "APPSKEY")
|
|
.appendField("}");
|
|
this.appendDummyInput()
|
|
.setAlign(Blockly.ALIGN_LEFT)
|
|
.appendField(Blockly.Msg.senseBox_LoRa_devaddr_id)
|
|
.appendField(new Blockly.FieldTextInput("DEVADDR"), "DEVADDR");
|
|
this.appendDummyInput()
|
|
.setAlign(Blockly.ALIGN_LEFT)
|
|
.appendField(Blockly.Msg.senseBox_LoRa_interval)
|
|
.appendField(new Blockly.FieldTextInput("5"), "INTERVAL");
|
|
// this.appendStatementInput('DO')
|
|
// .appendField(Blockly.Msg.senseBox_measurements)
|
|
// .setCheck(null);
|
|
this.setPreviousStatement(true, null);
|
|
this.setNextStatement(true, null);
|
|
},
|
|
};
|
|
|
|
Blockly.Blocks["sensebox_lora_message_send"] = {
|
|
init: function () {
|
|
this.setTooltip(Blockly.Msg.senseBox_LoRa_message_tooltip);
|
|
this.setHelpUrl("");
|
|
this.setColour(getColour().sensebox);
|
|
this.appendStatementInput("DO")
|
|
.appendField(Blockly.Msg.senseBox_LoRa_send_message)
|
|
.setCheck(null);
|
|
this.setPreviousStatement(true, null);
|
|
this.setNextStatement(true, null);
|
|
},
|
|
};
|
|
|
|
Blockly.Blocks["sensebox_send_lora_sensor_value"] = {
|
|
init: function () {
|
|
this.setTooltip(Blockly.Msg.senseBox_LoRa_sensor_tip);
|
|
this.setHelpUrl("");
|
|
this.setColour(getColour().sensebox);
|
|
this.appendValueInput("Value").appendField(
|
|
Blockly.Msg.senseBox_measurement
|
|
);
|
|
this.appendDummyInput()
|
|
.setAlign(Blockly.ALIGN_LEFT)
|
|
.appendField("Bytes")
|
|
.appendField(new Blockly.FieldTextInput("2"), "MESSAGE_BYTES");
|
|
this.setPreviousStatement(true, null);
|
|
this.setNextStatement(true, null);
|
|
},
|
|
/**
|
|
* Called whenever anything on the workspace changes.
|
|
* Add warning if block is not nested inside a the correct loop.
|
|
* @param {!Blockly.Events.Abstract} e Change event.
|
|
* @this Blockly.Block
|
|
*/
|
|
onchange: function (e) {
|
|
var legal = false;
|
|
// Is the block nested in a loop?
|
|
var block = this;
|
|
do {
|
|
if (this.LOOP_TYPES.indexOf(block.type) !== -1) {
|
|
legal = true;
|
|
break;
|
|
}
|
|
block = block.getSurroundParent();
|
|
} while (block);
|
|
if (legal) {
|
|
this.setWarningText(null);
|
|
} else {
|
|
this.setWarningText(Blockly.Msg.CONTROLS_FLOW_STATEMENTS_WARNING);
|
|
}
|
|
},
|
|
LOOP_TYPES: ["sensebox_lora_message_send"],
|
|
};
|
|
|
|
Blockly.Blocks["sensebox_lora_ttn_mapper"] = {
|
|
init: function (block) {
|
|
this.setColour(getColour().sensebox);
|
|
this.appendDummyInput().appendField("TTN Mapper");
|
|
this.appendDummyInput()
|
|
.setAlign(Blockly.ALIGN_RIGHT)
|
|
.appendField("Fix Type Limit")
|
|
.appendField(
|
|
new Blockly.FieldDropdown(
|
|
[
|
|
["0", "0"],
|
|
["1", "1"],
|
|
["2", "2"],
|
|
["3", "3"],
|
|
].reverse()
|
|
),
|
|
"dropdown"
|
|
);
|
|
// reverse() because i want 3 be be at first and i'm to lazy to write the array again
|
|
this.appendValueInput("Latitude")
|
|
.appendField(Blockly.Msg.senseBox_gps_lat)
|
|
.setCheck(null);
|
|
this.appendValueInput("Longitude")
|
|
.appendField(Blockly.Msg.senseBox_gps_lng)
|
|
.setCheck(null);
|
|
this.appendValueInput("Altitude")
|
|
.appendField(Blockly.Msg.senseBox_gps_alt)
|
|
.setCheck(null);
|
|
this.appendValueInput("pDOP").appendField("pDOP").setCheck(null);
|
|
this.appendValueInput("Fix Type").appendField("Fix Type").setCheck(null);
|
|
this.setPreviousStatement(true, null);
|
|
this.setNextStatement(true, null);
|
|
this.setTooltip(Blockly.Msg.sensebox_lora_ttn_mapper_tip);
|
|
this.setHelpUrl(Blockly.Msg.sensebox_lora_ttn_mapper_helpurl);
|
|
},
|
|
};
|
|
|
|
Blockly.Blocks["sensebox_lora_cayenne_send"] = {
|
|
init: function () {
|
|
this.setTooltip(Blockly.Msg.senseBox_LoRa_cayenne_tip);
|
|
this.setHelpUrl("");
|
|
this.setColour(getColour().sensebox);
|
|
this.appendStatementInput("DO")
|
|
.appendField(Blockly.Msg.senseBox_LoRa_send_cayenne)
|
|
.setCheck(null);
|
|
this.setPreviousStatement(true, null);
|
|
this.setNextStatement(true, null);
|
|
},
|
|
};
|
|
Blockly.Blocks["sensebox_lora_cayenne_temperature"] = {
|
|
init: function () {
|
|
this.setTooltip(Blockly.Msg.senseBox_LoRa_cayenne_temperature_tip);
|
|
this.setHelpUrl("");
|
|
this.setColour(getColour().sensebox);
|
|
this.appendValueInput("Value").appendField(
|
|
Blockly.Msg.senseBox_LoRa_cayenne_temperature
|
|
);
|
|
this.appendDummyInput()
|
|
.setAlign(Blockly.ALIGN_LEFT)
|
|
.appendField(Blockly.Msg.senseBox_LoRa_cayenne_channel)
|
|
.appendField(new Blockly.FieldTextInput("1"), "CHANNEL");
|
|
this.setPreviousStatement(true, null);
|
|
this.setNextStatement(true, null);
|
|
},
|
|
LOOP_TYPES: ["sensebox_lora_cayenne_send"],
|
|
};
|
|
Blockly.Blocks["sensebox_lora_cayenne_humidity"] = {
|
|
init: function () {
|
|
this.setTooltip(Blockly.Msg.senseBox_LoRa_cayenne_humidity_tip);
|
|
this.setHelpUrl("");
|
|
this.setColour(getColour().sensebox);
|
|
this.appendValueInput("Value").appendField(
|
|
Blockly.Msg.senseBox_LoRa_cayenne_humidity
|
|
);
|
|
this.appendDummyInput()
|
|
.setAlign(Blockly.ALIGN_LEFT)
|
|
.appendField(Blockly.Msg.senseBox_LoRa_cayenne_channel)
|
|
.appendField(new Blockly.FieldTextInput("1"), "CHANNEL");
|
|
this.setPreviousStatement(true, null);
|
|
this.setNextStatement(true, null);
|
|
},
|
|
LOOP_TYPES: ["sensebox_lora_cayenne_send"],
|
|
};
|
|
Blockly.Blocks["sensebox_lora_cayenne_pressure"] = {
|
|
init: function () {
|
|
this.setTooltip(Blockly.Msg.senseBox_LoRa_cayenne_pressure_tip);
|
|
this.setHelpUrl("");
|
|
this.setColour(getColour().sensebox);
|
|
this.appendValueInput("Value").appendField(
|
|
Blockly.Msg.senseBox_LoRa_cayenne_pressure
|
|
);
|
|
this.appendDummyInput()
|
|
.setAlign(Blockly.ALIGN_LEFT)
|
|
.appendField(Blockly.Msg.senseBox_LoRa_cayenne_channel)
|
|
.appendField(new Blockly.FieldTextInput("1"), "CHANNEL");
|
|
this.setPreviousStatement(true, null);
|
|
this.setNextStatement(true, null);
|
|
},
|
|
LOOP_TYPES: ["sensebox_lora_cayenne_send"],
|
|
};
|
|
Blockly.Blocks["sensebox_lora_cayenne_luminosity"] = {
|
|
init: function () {
|
|
this.setTooltip(Blockly.Msg.senseBox_LoRa_cayenne_luminosity_tip);
|
|
this.setHelpUrl("");
|
|
this.setColour(getColour().sensebox);
|
|
this.appendValueInput("Value").appendField(
|
|
Blockly.Msg.senseBox_LoRa_cayenne_luminosity
|
|
);
|
|
this.appendDummyInput()
|
|
.setAlign(Blockly.ALIGN_LEFT)
|
|
.appendField(Blockly.Msg.senseBox_LoRa_cayenne_channel)
|
|
.appendField(new Blockly.FieldTextInput("1"), "CHANNEL");
|
|
this.setPreviousStatement(true, null);
|
|
this.setNextStatement(true, null);
|
|
},
|
|
LOOP_TYPES: ["sensebox_lora_cayenne_send"],
|
|
};
|
|
Blockly.Blocks["sensebox_lora_cayenne_sensor"] = {
|
|
init: function () {
|
|
this.setTooltip(Blockly.Msg.senseBox_LoRa_cayenne_analog_tip);
|
|
this.setHelpUrl("");
|
|
this.setColour(getColour().sensebox);
|
|
this.appendValueInput("Value").appendField(
|
|
Blockly.Msg.senseBox_LoRa_cayenne_analog
|
|
);
|
|
this.appendDummyInput()
|
|
.setAlign(Blockly.ALIGN_LEFT)
|
|
.appendField(Blockly.Msg.senseBox_LoRa_cayenne_channel)
|
|
.appendField(new Blockly.FieldTextInput("1"), "CHANNEL");
|
|
this.setPreviousStatement(true, null);
|
|
this.setNextStatement(true, null);
|
|
},
|
|
LOOP_TYPES: ["sensebox_lora_cayenne_send"],
|
|
};
|
|
Blockly.Blocks["sensebox_lora_cayenne_accelerometer"] = {
|
|
init: function () {
|
|
this.setTooltip(Blockly.Msg.senseBox_LoRa_cayenne_gyros_tip);
|
|
this.setHelpUrl("");
|
|
this.setColour(getColour().sensebox);
|
|
this.appendValueInput("X").appendField(Blockly.Msg.senseBox_LoRa_cayenne_x);
|
|
this.appendValueInput("Y").appendField(Blockly.Msg.senseBox_LoRa_cayenne_y);
|
|
this.appendValueInput("Z").appendField(Blockly.Msg.senseBox_LoRa_cayenne_z);
|
|
this.appendDummyInput()
|
|
.setAlign(Blockly.ALIGN_LEFT)
|
|
.appendField(Blockly.Msg.senseBox_LoRa_cayenne_channel)
|
|
.appendField(new Blockly.FieldTextInput("1"), "CHANNEL");
|
|
this.setPreviousStatement(true, null);
|
|
this.setNextStatement(true, null);
|
|
},
|
|
LOOP_TYPES: ["sensebox_lora_cayenne_send"],
|
|
};
|
|
Blockly.Blocks["sensebox_lora_cayenne_gps"] = {
|
|
init: function () {
|
|
this.setTooltip(Blockly.Msg.senseBox_LoRa_cayenne_gps_tip);
|
|
this.setHelpUrl("");
|
|
this.setColour(getColour().sensebox);
|
|
this.appendValueInput("LAT").appendField(
|
|
Blockly.Msg.senseBox_LoRa_cayenne_lat
|
|
);
|
|
this.appendValueInput("LNG").appendField(
|
|
Blockly.Msg.senseBox_LoRa_cayenne_lng
|
|
);
|
|
this.appendValueInput("ALT").appendField(
|
|
Blockly.Msg.senseBox_LoRa_cayenne_alt
|
|
);
|
|
this.appendDummyInput()
|
|
.setAlign(Blockly.ALIGN_LEFT)
|
|
.appendField(Blockly.Msg.senseBox_LoRa_cayenne_channel)
|
|
.appendField(new Blockly.FieldTextInput("1"), "CHANNEL");
|
|
this.setPreviousStatement(true, null);
|
|
this.setNextStatement(true, null);
|
|
},
|
|
LOOP_TYPES: ["sensebox_lora_cayenne_send"],
|
|
};
|
|
|
|
Blockly.Blocks["sensebox_lora_cayenne_concentration"] = {
|
|
init: function () {
|
|
this.setTooltip(Blockly.Msg.senseBox_LoRa_cayenne_concentration_tip);
|
|
this.setHelpUrl("");
|
|
this.setColour(getColour().sensebox);
|
|
this.appendValueInput("Value").appendField(
|
|
Blockly.Msg.senseBox_LoRa_cayenne_concentration
|
|
);
|
|
this.appendDummyInput()
|
|
.setAlign(Blockly.ALIGN_LEFT)
|
|
.appendField(Blockly.Msg.senseBox_LoRa_cayenne_channel)
|
|
.appendField(new Blockly.FieldTextInput("1"), "CHANNEL");
|
|
this.setPreviousStatement(true, null);
|
|
this.setNextStatement(true, null);
|
|
},
|
|
LOOP_TYPES: ["sensebox_lora_cayenne_send"],
|
|
};
|