254 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			254 lines
		
	
	
		
			10 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_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'],
 | |
| };
 |