diff --git a/src/components/Blockly/blocks/sensebox-led.js b/src/components/Blockly/blocks/sensebox-led.js index 6038d34..0041dbc 100644 --- a/src/components/Blockly/blocks/sensebox-led.js +++ b/src/components/Blockly/blocks/sensebox-led.js @@ -41,4 +41,33 @@ Blockly.Blocks['sensebox_rgb_led'] = { this.setTooltip(Blockly.Msg.senseBox_rgb_led_tip); this.setHelpUrl('https://sensebox.de/books'); } +}; + + +Blockly.Blocks['sensebox_ws2818_led'] = { + init: function () { + + var dropdownOptions = [[Blockly.Msg.senseBox_ultrasonic_port_A, '1'], + [Blockly.Msg.senseBox_ultrasonic_port_B, '3'], [Blockly.Msg.senseBox_ultrasonic_port_C, '5']]; + + this.setColour(getColour().sensebox); + this.appendDummyInput() + .appendField(Blockly.Msg.senseBox_ws2818_rgb_led) + .appendField("Pin:") + .appendField(new Blockly.FieldDropdown(dropdownOptions), "Port") + this.appendValueInput("BRIGHTNESS", "brightness") + .appendField((Blockly.Msg.senseBox_ws2818_rgb_led_brightness)); + this.appendValueInput("POSITION", "position") + .appendField((Blockly.Msg.senseBox_ws2818_rgb_led_position)); + this.appendValueInput("RED", 'Number') + .appendField(Blockly.Msg.COLOUR_RGB_RED);//Blockly.Msg.senseBox_basic_red + this.appendValueInput("GREEN", 'Number') + .appendField(Blockly.Msg.COLOUR_RGB_GREEN);//Blockly.Msg.senseBox_basic_green + this.appendValueInput("BLUE", 'Number') + .appendField(Blockly.Msg.COLOUR_RGB_BLUE); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setTooltip(Blockly.Msg.senseBox_rgb_led_tip); + this.setHelpUrl('https://sensebox.de/books'); + } }; \ No newline at end of file diff --git a/src/components/Blockly/blocks/sensebox-osem.js b/src/components/Blockly/blocks/sensebox-osem.js index 232853e..0bad7b4 100644 --- a/src/components/Blockly/blocks/sensebox-osem.js +++ b/src/components/Blockly/blocks/sensebox-osem.js @@ -21,6 +21,10 @@ Blockly.Blocks['sensebox_osem_connection'] = { .setAlign(Blockly.ALIGN_LEFT) .appendField("senseBox ID") .appendField(new Blockly.FieldTextInput("senseBox ID"), "BoxID"); + this.appendDummyInput() + .setAlign(Blockly.ALIGN_LEFT) + .appendField(Blockly.Msg.senseBox_osem_access_token) + .appendField(new Blockly.FieldTextInput("access_token"), "access_token"); this.appendStatementInput('DO') .appendField(Blockly.Msg.senseBox_sensor) .setCheck(null); diff --git a/src/components/Blockly/generator/sensebox-led.js b/src/components/Blockly/generator/sensebox-led.js index eea4c9f..f3e36d5 100644 --- a/src/components/Blockly/generator/sensebox-led.js +++ b/src/components/Blockly/generator/sensebox-led.js @@ -19,4 +19,28 @@ Blockly.Arduino.sensebox_rgb_led = function () { var code = 'rgb_led_' + dropdown_pin + '.setPixelColor(0,rgb_led_' + dropdown_pin + '.Color(' + red + ',' + green + ',' + blue + '));\n'; code += 'rgb_led_' + dropdown_pin + '.show();'; return code; +}; + + +Blockly.Arduino.sensebox_ws2818_led = function () { + var dropdown_pin = this.getFieldValue('Port'); + var blocks = Blockly.mainWorkspace.getAllBlocks(); + var count = 0; + for (var i = 0; i < blocks.length; i++) { + if (blocks[i].type === 'sensebox_ws2818_led' && blocks[i].getFieldValue('Port') === dropdown_pin) { + count++; + + } + } + var numPixel = count; + var brightness = Blockly.Arduino.valueToCode(this, 'BRIGHTNESS', Blockly.Arduino.ORDER_ATOMIC) || '50' + var position = Blockly.Arduino.valueToCode(this, 'POSITION', Blockly.Arduino.ORDER_ATOMIC) || '0'; + var red = Blockly.Arduino.valueToCode(this, 'RED', Blockly.Arduino.ORDER_ATOMIC) || '0' + var green = Blockly.Arduino.valueToCode(this, 'GREEN', Blockly.Arduino.ORDER_ATOMIC) || '0' + var blue = Blockly.Arduino.valueToCode(this, 'BLUE', Blockly.Arduino.ORDER_ATOMIC) || '0' + Blockly.Arduino.definitions_['define_rgb_led' + dropdown_pin] = `#include \n Adafruit_NeoPixel rgb_led_${dropdown_pin}= Adafruit_NeoPixel(${numPixel}, ${dropdown_pin},NEO_GRB + NEO_KHZ800);\n`; + Blockly.Arduino.setupCode_['setup_rgb_led' + dropdown_pin] = 'rgb_led_' + dropdown_pin + '.begin();\n'; + Blockly.Arduino.setupCode_['setup_rgb_led_brightness' + dropdown_pin] = `rgb_led_${dropdown_pin}.setBrightness(${brightness});\n`; + var code = `rgb_led_${dropdown_pin}.setPixelColor(${position},rgb_led_${dropdown_pin}.Color(${red},${green},${blue}));\nrgb_led_${dropdown_pin}.show();\n`; + return code; }; \ No newline at end of file diff --git a/src/components/Blockly/generator/sensebox-osem.js b/src/components/Blockly/generator/sensebox-osem.js index c90a882..410dc7b 100644 --- a/src/components/Blockly/generator/sensebox-osem.js +++ b/src/components/Blockly/generator/sensebox-osem.js @@ -18,6 +18,7 @@ Blockly.Arduino.sensebox_osem_connection = function (Block) { var box_id = this.getFieldValue('BoxID'); var host = this.getFieldValue('host'); var branch = Blockly.Arduino.statementToCode(Block, 'DO'); + var access_token = this.getFieldValue('access_token'); var blocks = this.getDescendants(); var type = this.getFieldValue('type'); var ssl = this.getFieldValue('SSL'); @@ -86,7 +87,7 @@ Blockly.Arduino.sensebox_osem_connection = function (Block) { if (connected == true) { // construct the HTTP POST request: sprintf_P(buffer, - PSTR("POST /boxes/%s/data HTTP/1.1\\nHost: %s\\nContent-Type: " + PSTR("POST /boxes/%s/data HTTP/1.1\\nAuthorization: ${access_token}\\nHost: %s\\nContent-Type: " "text/csv\\nConnection: close\\nContent-Length: %i\\n\\n"), SENSEBOX_ID, server, num_measurements * lengthMultiplikator); // send the HTTP POST request: @@ -146,7 +147,7 @@ Blockly.Arduino.sensebox_osem_connection = function (Block) { if (connected == true) { // construct the HTTP POST request: sprintf_P(buffer, - PSTR("POST /boxes/%s/data HTTP/1.1\\nHost: %s\\nContent-Type: " + PSTR("POST /boxes/%s/data HTTP/1.1\\nAuthorization: ${access_token}\\nHost: %s\\nContent-Type: " "text/csv\\nConnection: close\\nContent-Length: %i\\n\\n"), SENSEBOX_ID, server, num_measurements * lengthMultiplikator); // send the HTTP POST request: diff --git a/src/components/Blockly/msg/de.js b/src/components/Blockly/msg/de.js index 9d019c9..bcdf3dd 100644 --- a/src/components/Blockly/msg/de.js +++ b/src/components/Blockly/msg/de.js @@ -606,6 +606,7 @@ Blockly.Msg.senseBox_osem_connection = "Verbinde mit openSenseMap"; Blockly.Msg.senseBox_osem_exposure = "Typ"; Blockly.Msg.senseBox_osem_stationary = "Stationär"; Blockly.Msg.senseBox_osem_mobile = "Mobil"; +Blockly.Msg.senseBox_osem_access_token = "API Schlüssel"; Blockly.Msg.senseBox_sds011 = "Feinstaubsensor"; Blockly.Msg.senseBox_sds011_dimension = "in µg/m³ an"; Blockly.Msg.senseBox_sds011_pm25 = "PM2.5"; @@ -771,9 +772,12 @@ Blockly.Msg.senseBox_telegram_do = "Telegram mache" Blockly.Msg.senseBox_telegram_do_on_message = "bei Nachricht" Blockly.Msg.senseBox_telegram_message = "Nachricht" Blockly.Msg.senseBox_telegram_send = "Sende Nachricht" - +//SCD30 CO2 Sensor Blockly.Msg.senseBox_scd30 = "CO2 Sensor (Sensirion SCD30)"; - +//WS2818 RGB LED +Blockly.Msg.senseBox_ws2818_rgb_led = "senseBox WS2812 - RGB LED"; +Blockly.Msg.senseBox_ws2818_rgb_led_position = "Position"; +Blockly.Msg.senseBox_ws2818_rgb_led_brightness = "Helligkeit"; export const De = Blockly.Msg; \ No newline at end of file diff --git a/src/components/Blockly/msg/en.js b/src/components/Blockly/msg/en.js index 7474b93..e48673b 100644 --- a/src/components/Blockly/msg/en.js +++ b/src/components/Blockly/msg/en.js @@ -677,6 +677,7 @@ Blockly.Msg.senseBox_osem_host = "opensensemap.org"; Blockly.Msg.senseBox_osem_host_workshop = "workshop.opensensemap.org"; Blockly.Msg.senseBox_osem_mobile = "Mobile"; Blockly.Msg.senseBox_osem_stationary = "Stationary"; +Blockly.Msg.senseBox_osem_access_token = "API Key"; Blockly.Msg.senseBox_output_filename = "filename"; Blockly.Msg.senseBox_output_format = "format:"; Blockly.Msg.senseBox_output_linebreak = "linebreak"; @@ -754,7 +755,13 @@ Blockly.Msg.sensebox_display_show_tip = "Print on Display"; Blockly.Msg.sensebox_sd_filename = "data"; Blockly.Msg.sensebox_soil_smt50 = "Soil Moisture and Temperature (SMT50)"; Blockly.Msg.sensebox_web_readHTML_filename = "File:"; - +//SCD30 CO2 Sensor Blockly.Msg.senseBox_scd30 = "CO2 Sensor (Sensirion SCD30)"; +//WS2818 RGB LED +Blockly.Msg.senseBox_ws2818_rgb_led = "senseBox WS2812 - RGB LED"; +Blockly.Msg.senseBox_ws2818_rgb_led_brightness = "Helligkeit"; +Blockly.Msg.senseBox_ws2818_rgb_led_position = "Position"; + + export const En = Blockly.Msg; \ No newline at end of file diff --git a/src/components/Blockly/toolbox/Toolbox.js b/src/components/Blockly/toolbox/Toolbox.js index fa9a822..868eebb 100644 --- a/src/components/Blockly/toolbox/Toolbox.js +++ b/src/components/Blockly/toolbox/Toolbox.js @@ -62,6 +62,33 @@ class Toolbox extends React.Component { + + + + 0 + + + + + 30 + + + + + 0 + + + + + 0 + + + + + 0 + + +