281 lines
11 KiB
JavaScript
281 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_tip);
|
|
this.setHelpUrl('');
|
|
this.setColour(getColour().sensebox);
|
|
this.appendDummyInput()
|
|
.appendField("Initialize LoRa (OTAA)");
|
|
|
|
this.appendDummyInput()
|
|
.setAlign(Blockly.ALIGN_LEFT)
|
|
.appendField(Blockly.Msg.senseBox_LoRa_device_id)
|
|
.appendField(new Blockly.FieldTextInput("DEVICE ID"), "DEVICEID");
|
|
this.appendDummyInput()
|
|
.setAlign(Blockly.ALIGN_LEFT)
|
|
.appendField(Blockly.Msg.senseBox_LoRa_app_id)
|
|
.appendField(new Blockly.FieldTextInput("APP ID"), "APPID");
|
|
this.appendDummyInput()
|
|
.setAlign(Blockly.ALIGN_LEFT)
|
|
.appendField(Blockly.Msg.senseBox_LoRa_app_key)
|
|
.appendField(new Blockly.FieldTextInput("APP KEY"), "APPKEY");
|
|
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_tip);
|
|
this.setHelpUrl('');
|
|
this.setColour(getColour().sensebox);
|
|
this.appendDummyInput()
|
|
.appendField("Initialize LoRa (ABP)");
|
|
this.appendDummyInput()
|
|
.setAlign(Blockly.ALIGN_LEFT)
|
|
.appendField(Blockly.Msg.senseBox_LoRa_nwskey_id)
|
|
.appendField(new Blockly.FieldTextInput("NWSKEY"), "NWSKEY");
|
|
this.appendDummyInput()
|
|
.setAlign(Blockly.ALIGN_LEFT)
|
|
.appendField(Blockly.Msg.senseBox_LoRa_appskey_id)
|
|
.appendField(new Blockly.FieldTextInput("APPSKEY"), "APPSKEY");
|
|
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_tip);
|
|
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.appendValueInput('Latitude')
|
|
.appendField('Latitude')
|
|
.setCheck(null);
|
|
this.appendValueInput('Longitude')
|
|
.appendField('Longitude')
|
|
.setCheck(null);
|
|
this.appendValueInput('Altitude')
|
|
.appendField('Altitude')
|
|
.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_display_printDisplay_tip);
|
|
this.setHelpUrl('https://sensebox.de/books');
|
|
}
|
|
};
|
|
|
|
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'],
|
|
};
|