update osem block
This commit is contained in:
parent
14947267d1
commit
cc54c18b47
@ -42,3 +42,32 @@ Blockly.Blocks['sensebox_rgb_led'] = {
|
|||||||
this.setHelpUrl('https://sensebox.de/books');
|
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');
|
||||||
|
}
|
||||||
|
};
|
@ -21,6 +21,10 @@ Blockly.Blocks['sensebox_osem_connection'] = {
|
|||||||
.setAlign(Blockly.ALIGN_LEFT)
|
.setAlign(Blockly.ALIGN_LEFT)
|
||||||
.appendField("senseBox ID")
|
.appendField("senseBox ID")
|
||||||
.appendField(new Blockly.FieldTextInput("senseBox ID"), "BoxID");
|
.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')
|
this.appendStatementInput('DO')
|
||||||
.appendField(Blockly.Msg.senseBox_sensor)
|
.appendField(Blockly.Msg.senseBox_sensor)
|
||||||
.setCheck(null);
|
.setCheck(null);
|
||||||
|
@ -20,3 +20,27 @@ Blockly.Arduino.sensebox_rgb_led = function () {
|
|||||||
code += 'rgb_led_' + dropdown_pin + '.show();';
|
code += 'rgb_led_' + dropdown_pin + '.show();';
|
||||||
return code;
|
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 <Adafruit_NeoPixel.h>\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;
|
||||||
|
};
|
@ -18,6 +18,7 @@ Blockly.Arduino.sensebox_osem_connection = function (Block) {
|
|||||||
var box_id = this.getFieldValue('BoxID');
|
var box_id = this.getFieldValue('BoxID');
|
||||||
var host = this.getFieldValue('host');
|
var host = this.getFieldValue('host');
|
||||||
var branch = Blockly.Arduino.statementToCode(Block, 'DO');
|
var branch = Blockly.Arduino.statementToCode(Block, 'DO');
|
||||||
|
var access_token = this.getFieldValue('access_token');
|
||||||
var blocks = this.getDescendants();
|
var blocks = this.getDescendants();
|
||||||
var type = this.getFieldValue('type');
|
var type = this.getFieldValue('type');
|
||||||
var ssl = this.getFieldValue('SSL');
|
var ssl = this.getFieldValue('SSL');
|
||||||
@ -86,7 +87,7 @@ Blockly.Arduino.sensebox_osem_connection = function (Block) {
|
|||||||
if (connected == true) {
|
if (connected == true) {
|
||||||
// construct the HTTP POST request:
|
// construct the HTTP POST request:
|
||||||
sprintf_P(buffer,
|
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"),
|
"text/csv\\nConnection: close\\nContent-Length: %i\\n\\n"),
|
||||||
SENSEBOX_ID, server, num_measurements * lengthMultiplikator);
|
SENSEBOX_ID, server, num_measurements * lengthMultiplikator);
|
||||||
// send the HTTP POST request:
|
// send the HTTP POST request:
|
||||||
@ -146,7 +147,7 @@ Blockly.Arduino.sensebox_osem_connection = function (Block) {
|
|||||||
if (connected == true) {
|
if (connected == true) {
|
||||||
// construct the HTTP POST request:
|
// construct the HTTP POST request:
|
||||||
sprintf_P(buffer,
|
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"),
|
"text/csv\\nConnection: close\\nContent-Length: %i\\n\\n"),
|
||||||
SENSEBOX_ID, server, num_measurements * lengthMultiplikator);
|
SENSEBOX_ID, server, num_measurements * lengthMultiplikator);
|
||||||
// send the HTTP POST request:
|
// send the HTTP POST request:
|
||||||
|
@ -606,6 +606,7 @@ Blockly.Msg.senseBox_osem_connection = "Verbinde mit openSenseMap";
|
|||||||
Blockly.Msg.senseBox_osem_exposure = "Typ";
|
Blockly.Msg.senseBox_osem_exposure = "Typ";
|
||||||
Blockly.Msg.senseBox_osem_stationary = "Stationär";
|
Blockly.Msg.senseBox_osem_stationary = "Stationär";
|
||||||
Blockly.Msg.senseBox_osem_mobile = "Mobil";
|
Blockly.Msg.senseBox_osem_mobile = "Mobil";
|
||||||
|
Blockly.Msg.senseBox_osem_access_token = "API Schlüssel";
|
||||||
Blockly.Msg.senseBox_sds011 = "Feinstaubsensor";
|
Blockly.Msg.senseBox_sds011 = "Feinstaubsensor";
|
||||||
Blockly.Msg.senseBox_sds011_dimension = "in µg/m³ an";
|
Blockly.Msg.senseBox_sds011_dimension = "in µg/m³ an";
|
||||||
Blockly.Msg.senseBox_sds011_pm25 = "PM2.5";
|
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_do_on_message = "bei Nachricht"
|
||||||
Blockly.Msg.senseBox_telegram_message = "Nachricht"
|
Blockly.Msg.senseBox_telegram_message = "Nachricht"
|
||||||
Blockly.Msg.senseBox_telegram_send = "Sende Nachricht"
|
Blockly.Msg.senseBox_telegram_send = "Sende Nachricht"
|
||||||
|
//SCD30 CO2 Sensor
|
||||||
Blockly.Msg.senseBox_scd30 = "CO2 Sensor (Sensirion SCD30)";
|
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;
|
export const De = Blockly.Msg;
|
@ -677,6 +677,7 @@ Blockly.Msg.senseBox_osem_host = "opensensemap.org";
|
|||||||
Blockly.Msg.senseBox_osem_host_workshop = "workshop.opensensemap.org";
|
Blockly.Msg.senseBox_osem_host_workshop = "workshop.opensensemap.org";
|
||||||
Blockly.Msg.senseBox_osem_mobile = "Mobile";
|
Blockly.Msg.senseBox_osem_mobile = "Mobile";
|
||||||
Blockly.Msg.senseBox_osem_stationary = "Stationary";
|
Blockly.Msg.senseBox_osem_stationary = "Stationary";
|
||||||
|
Blockly.Msg.senseBox_osem_access_token = "API Key";
|
||||||
Blockly.Msg.senseBox_output_filename = "filename";
|
Blockly.Msg.senseBox_output_filename = "filename";
|
||||||
Blockly.Msg.senseBox_output_format = "format:";
|
Blockly.Msg.senseBox_output_format = "format:";
|
||||||
Blockly.Msg.senseBox_output_linebreak = "linebreak";
|
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_sd_filename = "data";
|
||||||
Blockly.Msg.sensebox_soil_smt50 = "Soil Moisture and Temperature (SMT50)";
|
Blockly.Msg.sensebox_soil_smt50 = "Soil Moisture and Temperature (SMT50)";
|
||||||
Blockly.Msg.sensebox_web_readHTML_filename = "File:";
|
Blockly.Msg.sensebox_web_readHTML_filename = "File:";
|
||||||
|
//SCD30 CO2 Sensor
|
||||||
Blockly.Msg.senseBox_scd30 = "CO2 Sensor (Sensirion SCD30)";
|
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;
|
export const En = Blockly.Msg;
|
@ -62,6 +62,33 @@ class Toolbox extends React.Component {
|
|||||||
<Category name="LED" colour={getColour().sensebox}>
|
<Category name="LED" colour={getColour().sensebox}>
|
||||||
<Block type="sensebox_rgb_led" />
|
<Block type="sensebox_rgb_led" />
|
||||||
<Block type="sensebox_led" />
|
<Block type="sensebox_led" />
|
||||||
|
<Block type="sensebox_ws2818_led">
|
||||||
|
<Value name="POSITION">
|
||||||
|
<Block type="math_number">
|
||||||
|
<Field name="NUM">0</Field>
|
||||||
|
</Block>
|
||||||
|
</Value>
|
||||||
|
<Value name="BRIGHTNESS">
|
||||||
|
<Block type="math_number">
|
||||||
|
<Field name="NUM">30</Field>
|
||||||
|
</Block>
|
||||||
|
</Value>
|
||||||
|
<Value name="RED">
|
||||||
|
<Block type="math_number">
|
||||||
|
<Field name="NUM">0</Field>
|
||||||
|
</Block>
|
||||||
|
</Value>
|
||||||
|
<Value name="GREEN">
|
||||||
|
<Block type="math_number">
|
||||||
|
<Field name="NUM">0</Field>
|
||||||
|
</Block>
|
||||||
|
</Value>
|
||||||
|
<Value name="BLUE">
|
||||||
|
<Block type="math_number">
|
||||||
|
<Field name="NUM">0</Field>
|
||||||
|
</Block>
|
||||||
|
</Value>
|
||||||
|
</Block>
|
||||||
</Category>
|
</Category>
|
||||||
<Category name="Display" colour={getColour().sensebox}>
|
<Category name="Display" colour={getColour().sensebox}>
|
||||||
<Block type="sensebox_display_beginDisplay" />
|
<Block type="sensebox_display_beginDisplay" />
|
||||||
|
Loading…
x
Reference in New Issue
Block a user