From 36b1fc06d95cfefa15c15c000033a7d24e1b9476 Mon Sep 17 00:00:00 2001 From: Mario Pesch Date: Fri, 26 Nov 2021 18:16:58 +0000 Subject: [PATCH 1/8] quick fix --- src/components/Blockly/generator/sensebox-osem.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Blockly/generator/sensebox-osem.js b/src/components/Blockly/generator/sensebox-osem.js index 2e6626f..cdefc2d 100644 --- a/src/components/Blockly/generator/sensebox-osem.js +++ b/src/components/Blockly/generator/sensebox-osem.js @@ -210,7 +210,7 @@ Blockly.Arduino.sensebox_osem_connection = function (Block) { lat + "/float(10000000)),(" + lng + - "/float(10000000),(" + + "/float(10000000)),(" + altitude + "/float(100))," + timestamp + From b2b03b8a1b6857d361acbe82a49ae6fff08732ae Mon Sep 17 00:00:00 2001 From: Mario Pesch Date: Mon, 29 Nov 2021 09:42:42 +0100 Subject: [PATCH 2/8] fix rtc generation --- src/components/Blockly/generator/sensebox-rtc.js | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/components/Blockly/generator/sensebox-rtc.js b/src/components/Blockly/generator/sensebox-rtc.js index 1c3f5e3..d34dead 100644 --- a/src/components/Blockly/generator/sensebox-rtc.js +++ b/src/components/Blockly/generator/sensebox-rtc.js @@ -15,19 +15,22 @@ Blockly.Arduino.sensebox_rtc_set = function () { Blockly.Arduino.valueToCode(this, "second", Blockly.Arduino.ORDER_ATOMIC) || "0"; var minutes = - Blockly.Arduino.valueToCode(this, "second", Blockly.Arduino.ORDER_ATOMIC) || - "0"; + Blockly.Arduino.valueToCode( + this, + "minutes", + Blockly.Arduino.ORDER_ATOMIC + ) || "0"; var hour = - Blockly.Arduino.valueToCode(this, "second", Blockly.Arduino.ORDER_ATOMIC) || + Blockly.Arduino.valueToCode(this, "hour", Blockly.Arduino.ORDER_ATOMIC) || "0"; var day = - Blockly.Arduino.valueToCode(this, "second", Blockly.Arduino.ORDER_ATOMIC) || + Blockly.Arduino.valueToCode(this, "day", Blockly.Arduino.ORDER_ATOMIC) || "0"; var month = - Blockly.Arduino.valueToCode(this, "second", Blockly.Arduino.ORDER_ATOMIC) || + Blockly.Arduino.valueToCode(this, "month", Blockly.Arduino.ORDER_ATOMIC) || "0"; var year = - Blockly.Arduino.valueToCode(this, "second", Blockly.Arduino.ORDER_ATOMIC) || + Blockly.Arduino.valueToCode(this, "year", Blockly.Arduino.ORDER_ATOMIC) || "0"; Blockly.Arduino.libraries_["RV8523"] = `#include `; Blockly.Arduino.setupCode_["rtc.start"] = `rtc.start();`; From d34c5714e78c2a73be631bcd46151d49fbc58261 Mon Sep 17 00:00:00 2001 From: Mario Pesch Date: Thu, 13 Jan 2022 11:25:59 +0100 Subject: [PATCH 3/8] fix problem with negativ lat/lng --- src/components/Blockly/generator/sensebox-sd.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/Blockly/generator/sensebox-sd.js b/src/components/Blockly/generator/sensebox-sd.js index 395844b..ab54e47 100644 --- a/src/components/Blockly/generator/sensebox-sd.js +++ b/src/components/Blockly/generator/sensebox-sd.js @@ -162,15 +162,15 @@ void addMeasurement(const char *sensorId, float value) { } `; Blockly.Arduino.functionNames_["writeMeasurementsToSdCard"] = ` -void writeMeasurementsToSdCard(char* timeStamp, uint32_t latitudes, uint32_t longitudes) { +void writeMeasurementsToSdCard(char* timeStamp, int32_t latitudes, int32_t longitudes) { // iterate throug the measurements array for (uint8_t i = 0; i < num_measurements; i++) { char lng[20]; char lat[20]; float longitude = longitudes / (float)10000000; float latitude = latitudes / (float)10000000; - dtostrf(longitude, 2, 7, lng); - dtostrf(latitude, 1, 7, lat); + dtostrf(longitude, 8, 7, lng); + dtostrf(latitude, 8, 7, lat); sprintf_P(buffer, PSTR("%s,%9.2f,%s,%02s,%02s"), measurements[i].sensorId, measurements[i].value, timeStamp, lng, lat); // transmit buffer to client ${filename}.println(buffer); From 62b728cf49a503c205c85fb73f48d85b66b266c1 Mon Sep 17 00:00:00 2001 From: Mario Pesch Date: Thu, 13 Jan 2022 11:26:12 +0100 Subject: [PATCH 4/8] fix #135 --- src/components/Blockly/blocks/sensebox-display.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/Blockly/blocks/sensebox-display.js b/src/components/Blockly/blocks/sensebox-display.js index c4f0de0..96d8fd3 100644 --- a/src/components/Blockly/blocks/sensebox-display.js +++ b/src/components/Blockly/blocks/sensebox-display.js @@ -49,10 +49,10 @@ Blockly.Blocks["sensebox_display_printDisplay"] = { .appendField(new FieldSlider(1, 1, 4), "SIZE"); this.appendDummyInput() .appendField(Blockly.Msg.senseBox_display_printDisplay_x) - .appendField(new FieldSlider(0, 0, 128), "X"); + .appendField(new FieldSlider(0, 0, 127), "X"); this.appendDummyInput() .appendField(Blockly.Msg.senseBox_display_printDisplay_y) - .appendField(new FieldSlider(0, 0, 64), "Y"); + .appendField(new FieldSlider(0, 0, 63), "Y"); this.appendValueInput("printDisplay") .appendField(Blockly.Msg.senseBox_display_printDisplay_value) .setCheck(null); From 405b7fd4657044fac2c0d91f4cf0bbf77f6c8215 Mon Sep 17 00:00:00 2001 From: Mario Pesch Date: Mon, 24 Jan 2022 14:48:35 +0100 Subject: [PATCH 5/8] init adding ethernet bee --- src/components/Blockly/blocks/sensebox-web.js | 164 ++++++++++++------ .../Blockly/generator/sensebox-osem.js | 32 +++- .../Blockly/generator/sensebox-web.js | 89 ++++++++-- .../Blockly/helpers/maxInstances.js | 1 + src/components/Blockly/toolbox/Toolbox.js | 3 + 5 files changed, 208 insertions(+), 81 deletions(-) diff --git a/src/components/Blockly/blocks/sensebox-web.js b/src/components/Blockly/blocks/sensebox-web.js index 6045657..3d77fa9 100644 --- a/src/components/Blockly/blocks/sensebox-web.js +++ b/src/components/Blockly/blocks/sensebox-web.js @@ -1,60 +1,112 @@ -import Blockly from 'blockly'; -import { getColour } from '../helpers/colour' +import Blockly from "blockly"; +import { getColour } from "../helpers/colour"; -Blockly.Blocks['sensebox_wifi'] = { - init: function () { - this.setTooltip(Blockly.Msg.senseBox_wifi_tooltip); - this.setHelpUrl(''); - this.setColour(getColour().sensebox); - this.appendDummyInput() - .appendField(Blockly.Msg.senseBox_wifi_connect); - this.appendDummyInput() - .setAlign(Blockly.ALIGN_LEFT) - .appendField(Blockly.Msg.senseBox_wifi_ssid) - .appendField(new Blockly.FieldTextInput("SSID"), "SSID"); - this.appendDummyInput() - .setAlign(Blockly.ALIGN_LEFT) - .appendField(Blockly.Msg.senseBox_output_password) - .appendField(new Blockly.FieldTextInput("Password"), "Password"); - this.setHelpUrl(Blockly.Msg.senseBox_wifi_helpurl) - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - }, - 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: ['arduino_functions'], +Blockly.Blocks["sensebox_wifi"] = { + init: function () { + this.setTooltip(Blockly.Msg.senseBox_wifi_tooltip); + this.setHelpUrl(""); + this.setColour(getColour().sensebox); + this.appendDummyInput().appendField(Blockly.Msg.senseBox_wifi_connect); + this.appendDummyInput() + .setAlign(Blockly.ALIGN_LEFT) + .appendField(Blockly.Msg.senseBox_wifi_ssid) + .appendField(new Blockly.FieldTextInput("SSID"), "SSID"); + this.appendDummyInput() + .setAlign(Blockly.ALIGN_LEFT) + .appendField(Blockly.Msg.senseBox_output_password) + .appendField(new Blockly.FieldTextInput("Password"), "Password"); + this.setHelpUrl(Blockly.Msg.senseBox_wifi_helpurl); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + }, + 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: ["arduino_functions"], }; -Blockly.Blocks['sensebox_startap'] = { - init: function () { - this.setTooltip(Blockly.Msg.senseBox_wifi_startap_tooltip); - this.setHelpUrl(''); - this.setColour(getColour().sensebox); - this.appendDummyInput() - .appendField(Blockly.Msg.senseBox_wifi_startap); - this.appendDummyInput() - .setAlign(Blockly.ALIGN_LEFT) - .appendField(Blockly.Msg.senseBox_wifi_ssid) - .appendField(new Blockly.FieldTextInput("SSID"), "SSID"); - this.setHelpUrl(Blockly.Msg.senseBox_wifi_helpurl) - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); +Blockly.Blocks["sensebox_startap"] = { + init: function () { + this.setTooltip(Blockly.Msg.senseBox_wifi_startap_tooltip); + this.setHelpUrl(""); + this.setColour(getColour().sensebox); + this.appendDummyInput().appendField(Blockly.Msg.senseBox_wifi_startap); + this.appendDummyInput() + .setAlign(Blockly.ALIGN_LEFT) + .appendField(Blockly.Msg.senseBox_wifi_ssid) + .appendField(new Blockly.FieldTextInput("SSID"), "SSID"); + this.setHelpUrl(Blockly.Msg.senseBox_wifi_helpurl); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + }, +}; + +Blockly.Blocks["sensebox_ethernet"] = { + init: function () { + this.setTooltip(Blockly.Msg.senseBox_ethernet_tooltip); + this.setHelpUrl(""); + this.setColour(getColour().sensebox); + this.appendDummyInput() + .appendField("Connect with Ethernet") + .appendField("using") + .appendField( + new Blockly.FieldDropdown([ + ["dhcp", "Dhcp"], + ["manual configuration", "Manual"], + ]), + "dhcp" + ); + this.appendDummyInput() + .appendField("MAC-Address") + .appendField( + new Blockly.FieldTextInput("0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED"), + "mac" + ); + + this.setHelpUrl(Blockly.Msg.senseBox_ethernet_helpurl); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.getField("dhcp").setValidator( + function (val) { + this.updateShape_(val === "Manual"); + }.bind(this) + ); + }, + + updateShape_(isManual) { + // console.log(isDhcp); + if (isManual) { + this.appendDummyInput("ip-field") + .appendField("Ip Adress") + .appendField(new Blockly.FieldTextInput("192.168.1.100"), "ip"); + this.appendDummyInput("subnetmask-field") + .appendField("Subnetmask") + .appendField(new Blockly.FieldTextInput("255.255.255.0"), "subnetmask"); + this.appendDummyInput("gateway-field") + .appendField("Gateway") + .appendField(new Blockly.FieldTextInput("192.168.1.1"), "gateway"); + this.appendDummyInput("dns-field") + .appendField("DNS") + .appendField(new Blockly.FieldTextInput("8.8.8.8"), "dns"); + } else { + this.removeInput("ip-field", true); + this.removeInput("subnetmask-field", true); + this.removeInput("gateway-field", true); + this.removeInput("dns-field", true); } -}; \ 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 cdefc2d..6681006 100644 --- a/src/components/Blockly/generator/sensebox-osem.js +++ b/src/components/Blockly/generator/sensebox-osem.js @@ -17,6 +17,16 @@ Blockly.Arduino.sensebox_send_to_osem = function (block) { }; Blockly.Arduino.sensebox_osem_connection = function (Block) { + var workspace = Blockly.getMainWorkspace(); + var wifi = false; + var ethernet = false; + if (workspace.getBlocksByType("sensebox_wifi").length > 0) { + wifi = true; + ethernet = false; + } else if (workspace.getBlocksByType("sensebox_ethernet").length > 0) { + ethernet = true; + wifi = false; + } var box_id = this.getFieldValue("BoxID"); var host = this.getFieldValue("host"); var branch = Blockly.Arduino.statementToCode(Block, "DO"); @@ -42,12 +52,22 @@ Blockly.Arduino.sensebox_osem_connection = function (Block) { 'const char SENSEBOX_ID [] PROGMEM = "' + box_id + '";'; Blockly.Arduino.definitions_["host"] = "const char server [] PROGMEM =" + host + ";"; - if (ssl === "TRUE") { - Blockly.Arduino.definitions_["WiFiSSLClient"] = "WiFiSSLClient client;"; - port = 443; - } else if (ssl === "FALSE") { - Blockly.Arduino.definitions_["WiFiClient"] = "WiFiClient client;"; - port = 80; + if (wifi === true) { + if (ssl === "TRUE") { + Blockly.Arduino.definitions_["WiFiSSLClient"] = "WiFiSSLClient client;"; + port = 443; + } else if (ssl === "FALSE") { + Blockly.Arduino.definitions_["WiFiClient"] = "WiFiClient client;"; + port = 80; + } + } else if (ethernet === true) { + if (ssl === "TRUE") { + Blockly.Arduino.definitions_["WiFiSSLClient"] = "WiFiSSLClient client;"; + port = 443; + } else if (ssl === "FALSE") { + Blockly.Arduino.definitions_["EthernetClient"] = "EthernetClient client;"; + port = 80; + } } Blockly.Arduino.definitions_["measurement"] = `typedef struct measurement { diff --git a/src/components/Blockly/generator/sensebox-web.js b/src/components/Blockly/generator/sensebox-web.js index 8727328..eedf246 100644 --- a/src/components/Blockly/generator/sensebox-web.js +++ b/src/components/Blockly/generator/sensebox-web.js @@ -1,25 +1,76 @@ -import Blockly from 'blockly'; - +import Blockly from "blockly"; /* Wifi connection and openSenseMap Blocks*/ Blockly.Arduino.sensebox_wifi = function (block) { - var pw = this.getFieldValue('Password'); - var ssid = this.getFieldValue('SSID'); - Blockly.Arduino.libraries_['library_senseBoxMCU'] = '#include "SenseBoxMCU.h"'; - Blockly.Arduino.definitions_['define_network'] = 'Bee* b = new Bee();'; - if (pw === "") { - Blockly.Arduino.setupCode_['sensebox_network'] = 'b->connectToWifi("' + ssid + '");\ndelay(1000);'; - } else - Blockly.Arduino.setupCode_['sensebox_network'] = 'b->connectToWifi("' + ssid + '","' + pw + '");\ndelay(1000);'; - var code = ''; - return code; + var pw = this.getFieldValue("Password"); + var ssid = this.getFieldValue("SSID"); + Blockly.Arduino.libraries_["library_senseBoxMCU"] = + '#include "SenseBoxMCU.h"'; + Blockly.Arduino.definitions_["define_network"] = "Bee* b = new Bee();"; + if (pw === "") { + Blockly.Arduino.setupCode_["sensebox_network"] = + 'b->connectToWifi("' + ssid + '");\ndelay(1000);'; + } else + Blockly.Arduino.setupCode_["sensebox_network"] = + 'b->connectToWifi("' + ssid + '","' + pw + '");\ndelay(1000);'; + var code = ""; + return code; }; Blockly.Arduino.sensebox_startap = function (block) { - var ssid = this.getFieldValue('SSID'); - Blockly.Arduino.libraries_['library_senseBoxMCU'] = '#include "SenseBoxMCU.h"'; - Blockly.Arduino.definitions_['define_network'] = 'Bee* b = new Bee();'; - Blockly.Arduino.setupCode_['sensebox_network'] = 'b->startAP("' + ssid + '");' - var code = ''; - return code; -}; \ No newline at end of file + var ssid = this.getFieldValue("SSID"); + Blockly.Arduino.libraries_["library_senseBoxMCU"] = + '#include "SenseBoxMCU.h"'; + Blockly.Arduino.definitions_["define_network"] = "Bee* b = new Bee();"; + Blockly.Arduino.setupCode_["sensebox_network"] = + 'b->startAP("' + ssid + '");'; + var code = ""; + return code; +}; + +Blockly.Arduino.sensebox_ethernet = function () { + var ip = this.getFieldValue("ip"); + var gateway = this.getFieldValue("gateway"); + var subnetmask = this.getFieldValue("subnetmask"); + var dns = this.getFieldValue("dns"); + var mac = this.getFieldValue("mac"); + var dhcp = this.getFieldValue("dhcp"); + + Blockly.Arduino.libraries_["library_senseBoxMCU"] = + '#include "SenseBoxMCU.h"'; + Blockly.Arduino.libraries_["library_ethernet"] = "#include "; + + Blockly.Arduino.definitions_["ethernet_config"] = ` + byte mac[] = { ${mac}};`; + if (dhcp === "Manual") { + Blockly.Arduino.definitions_["ethernet_manual_config"] = ` + //Configure static IP setup (only needed if DHCP is disabled) + IPAddress myIp(${ip.replaceAll(".", ", ")}); + IPAddress myDns(${dns.replaceAll(".", ",")}); + IPAddress myGateway(${gateway.replaceAll(".", ",")}192, 168, 0, 177); + IPAddress mySubnet(${subnetmask.replaceAll(".", ",")}255, 255, 255, 0); + `; + Blockly.Arduino.setupCode_["ethernet_setup"] = ` + Ethernet.init(23); + // start the Ethernet connection: + if (Ethernet.begin(mac) == 0) { + // no point in carrying on, so do nothing forevermore: + // try to congifure using IP address instead of DHCP: + Ethernet.begin(mac, myIp); + } + // give the Ethernet shield a second to initialize: + delay(1000); + `; + } else { + Blockly.Arduino.setupCode_["ethernet_setup"] = ` + Ethernet.init(23); + // start the Ethernet connection: + Ethernet.begin(mac); + // give the Ethernet shield a second to initialize: + delay(1000); + `; + } + + var code = ""; + return code; +}; diff --git a/src/components/Blockly/helpers/maxInstances.js b/src/components/Blockly/helpers/maxInstances.js index 1b0ebc1..f546233 100644 --- a/src/components/Blockly/helpers/maxInstances.js +++ b/src/components/Blockly/helpers/maxInstances.js @@ -14,6 +14,7 @@ const maxInstances = { sensebox_lora_initialize_otaa: 1, sensebox_lora_initialize_abp: 1, sensebox_phyphox_init: 1, + sensebox_ethernet: 1, }; export const getMaxInstances = () => { diff --git a/src/components/Blockly/toolbox/Toolbox.js b/src/components/Blockly/toolbox/Toolbox.js index 0ee760e..39e2095 100644 --- a/src/components/Blockly/toolbox/Toolbox.js +++ b/src/components/Blockly/toolbox/Toolbox.js @@ -94,6 +94,9 @@ class Toolbox extends React.Component { + + + From 3e3956b185eb8affe3dbcf1f1173795c9b11081d Mon Sep 17 00:00:00 2001 From: Mario Pesch Date: Tue, 25 Jan 2022 19:39:23 +0100 Subject: [PATCH 6/8] add translations --- .../Blockly/blocks/sensebox-osem.js | 405 ++++++++++-------- src/components/Blockly/blocks/sensebox-web.js | 18 +- .../Blockly/generator/sensebox-web.js | 4 +- src/components/Blockly/msg/de/sensebox-web.js | 32 +- src/components/Blockly/msg/en/sensebox-web.js | 33 +- 5 files changed, 270 insertions(+), 222 deletions(-) diff --git a/src/components/Blockly/blocks/sensebox-osem.js b/src/components/Blockly/blocks/sensebox-osem.js index a572e82..9981dd2 100644 --- a/src/components/Blockly/blocks/sensebox-osem.js +++ b/src/components/Blockly/blocks/sensebox-osem.js @@ -1,202 +1,227 @@ -import * as Blockly from 'blockly/core'; -import { getColour } from '../helpers/colour'; +import * as Blockly from "blockly/core"; +import { getColour } from "../helpers/colour"; -import store from '../../../store'; +import store from "../../../store"; -var boxes = store.getState().auth.user ? store.getState().auth.user.boxes : null; +var boxes = store.getState().auth.user + ? store.getState().auth.user.boxes + : null; store.subscribe(() => { - boxes = store.getState().auth.user ? store.getState().auth.user.boxes : null; + boxes = store.getState().auth.user ? store.getState().auth.user.boxes : null; }); -var selectedBox = ''; +var selectedBox = ""; +Blockly.Blocks["sensebox_osem_connection"] = { + init: function () { + var ssl = "TRUE"; + var workspace = Blockly.getMainWorkspace(); + if (workspace.getBlocksByType("sensebox_ethernet").length > 0) { + ssl = "FALSE"; + console.log("ethernet"); + } + this.setTooltip(Blockly.Msg.senseBox_osem_connection_tip); + this.setHelpUrl(""); + this.setColour(getColour().sensebox); + this.appendDummyInput() + .appendField(Blockly.Msg.senseBox_osem_connection) + .appendField( + new Blockly.FieldDropdown([ + [Blockly.Msg.senseBox_osem_host, '"ingress.opensensemap.org"'], + [ + Blockly.Msg.senseBox_osem_host_workshop, + '"ingress.workshop.opensensemap.org"', + ], + ]), + "host" + ) + .appendField("SSL") + .appendField(new Blockly.FieldCheckbox(ssl), "SSL"); + this.appendDummyInput() + .setAlign(Blockly.ALIGN_LEFT) + .appendField(Blockly.Msg.senseBox_osem_exposure) + .appendField( + new Blockly.FieldDropdown([ + [Blockly.Msg.senseBox_osem_stationary, "Stationary"], + [Blockly.Msg.senseBox_osem_mobile, "Mobile"], + ]), + "type" + ); + if (!boxes) { + this.appendDummyInput() + .setAlign(Blockly.ALIGN_LEFT) + .appendField("senseBox ID") + .appendField(new Blockly.FieldTextInput("senseBox ID"), "BoxID"); + } else { + var dropdown = []; + for (var i = 0; i < boxes.length; i++) { + dropdown.push([boxes[i].name, boxes[i]._id]); + } + this.appendDummyInput() + .setAlign(Blockly.ALIGN_LEFT) + .appendField("senseBox ID") + .appendField(new Blockly.FieldDropdown(dropdown), "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); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + }, + 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); + } -Blockly.Blocks['sensebox_osem_connection'] = { - init: function () { - this.setTooltip(Blockly.Msg.senseBox_osem_connection_tip); - this.setHelpUrl(''); - this.setColour(getColour().sensebox); - this.appendDummyInput() - .appendField(Blockly.Msg.senseBox_osem_connection) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.senseBox_osem_host, '"ingress.opensensemap.org"'], [Blockly.Msg.senseBox_osem_host_workshop, '"ingress.workshop.opensensemap.org"']]), "host") - .appendField('SSL') - .appendField(new Blockly.FieldCheckbox("TRUE"), "SSL"); - this.appendDummyInput() - .setAlign(Blockly.ALIGN_LEFT) - .appendField(Blockly.Msg.senseBox_osem_exposure) - .appendField(new Blockly.FieldDropdown([[Blockly.Msg.senseBox_osem_stationary, 'Stationary'], [Blockly.Msg.senseBox_osem_mobile, 'Mobile']]), "type"); - if (!boxes) { - this.appendDummyInput() - .setAlign(Blockly.ALIGN_LEFT) - .appendField("senseBox ID") - .appendField(new Blockly.FieldTextInput("senseBox ID"), "BoxID"); - } else { - var dropdown = [] - for (var i = 0; i < boxes.length; i++) { - dropdown.push([boxes[i].name, boxes[i]._id]) - } - this.appendDummyInput() - .setAlign(Blockly.ALIGN_LEFT) - .appendField("senseBox ID") - .appendField(new Blockly.FieldDropdown(dropdown), '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); - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - }, - 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); - } - - /** - * List of block types that are loops and thus do not need warnings. - * To add a new loop type add this to your code: - * Blockly.Blocks['controls_flow_statements'].LOOP_TYPES.push('custom_loop'); - */ - selectedBox = this.getFieldValue('BoxID'); - if (selectedBox !== '' && boxes) { - var accessToken = boxes.find(element => element._id === selectedBox).access_token - if (accessToken !== undefined) { - this.getField('access_token').setValue(accessToken) - } else { - this.getField('access_token').setValue('access_token') - } - } - - }, - - mutationToDom: function () { - var container = document.createElement('mutation'); - var input = this.getFieldValue('type'); - this.updateShape_(input); - container.setAttribute('type', input); - return container; - }, - - domToMutation: function (xmlElement) { - var connections = xmlElement.getAttribute('connections'); - this.updateShape_(connections); - }, /** - * Modify this block to have the correct number of pins available. - * @param {boolean} - * @private - * @this Blockly.Block + * List of block types that are loops and thus do not need warnings. + * To add a new loop type add this to your code: + * Blockly.Blocks['controls_flow_statements'].LOOP_TYPES.push('custom_loop'); */ - updateShape_: function () { - var extraFieldExist = this.getFieldValue('gps'); - var input = this.getFieldValue('type'); - if ((input === 'Mobile') && extraFieldExist === null) { - this.appendValueInput('lat', 'Number') - .appendField(Blockly.Msg.senseBox_gps_lat, 'gps'); - this.appendValueInput('lng', 'Number') - .appendField(Blockly.Msg.senseBox_gps_lng); - this.appendValueInput('altitude', 'Number') - .appendField(Blockly.Msg.senseBox_gps_alt); - this.appendValueInput('timeStamp', 'Number') - .appendField(Blockly.Msg.senseBox_gps_timeStamp); - } + selectedBox = this.getFieldValue("BoxID"); + if (selectedBox !== "" && boxes) { + var accessToken = boxes.find( + (element) => element._id === selectedBox + ).access_token; + if (accessToken !== undefined) { + this.getField("access_token").setValue(accessToken); + } else { + this.getField("access_token").setValue("access_token"); + } + } + }, - if (input === 'Stationary' && extraFieldExist !== null) { - this.removeInput('lat'); - this.removeInput('lng'); - this.removeInput('altitude'); - this.removeInput('timeStamp'); - } - }, - LOOP_TYPES: ['sensebox_interval_timer'] + mutationToDom: function () { + var container = document.createElement("mutation"); + var input = this.getFieldValue("type"); + this.updateShape_(input); + container.setAttribute("type", input); + return container; + }, + + domToMutation: function (xmlElement) { + var connections = xmlElement.getAttribute("connections"); + this.updateShape_(connections); + }, + /** + * Modify this block to have the correct number of pins available. + * @param {boolean} + * @private + * @this Blockly.Block + */ + updateShape_: function () { + var extraFieldExist = this.getFieldValue("gps"); + var input = this.getFieldValue("type"); + if (input === "Mobile" && extraFieldExist === null) { + this.appendValueInput("lat", "Number").appendField( + Blockly.Msg.senseBox_gps_lat, + "gps" + ); + this.appendValueInput("lng", "Number").appendField( + Blockly.Msg.senseBox_gps_lng + ); + this.appendValueInput("altitude", "Number").appendField( + Blockly.Msg.senseBox_gps_alt + ); + this.appendValueInput("timeStamp", "Number").appendField( + Blockly.Msg.senseBox_gps_timeStamp + ); + } + + if (input === "Stationary" && extraFieldExist !== null) { + this.removeInput("lat"); + this.removeInput("lng"); + this.removeInput("altitude"); + this.removeInput("timeStamp"); + } + }, + LOOP_TYPES: ["sensebox_interval_timer"], }; -Blockly.Blocks['sensebox_send_to_osem'] = { - init: function () { - this.setTooltip(Blockly.Msg.senseBox_send_to_osem_tip); - this.setHelpUrl(''); - this.setColour(getColour().sensebox); - this.appendDummyInput() - .appendField(Blockly.Msg.senseBox_send_to_osem); - if (boxes) { - this.appendValueInput('Value') - .appendField('Phänomen') - .appendField(new Blockly.FieldDropdown( - this.generateOptions), 'SensorID'); - } else { - this.appendValueInput('Value') - .setAlign(Blockly.ALIGN_LEFT) - .appendField('Phänomen') - .appendField(new Blockly.FieldTextInput( - 'sensorID'), 'SensorID') +Blockly.Blocks["sensebox_send_to_osem"] = { + init: function () { + this.setTooltip(Blockly.Msg.senseBox_send_to_osem_tip); + this.setHelpUrl(""); + this.setColour(getColour().sensebox); + this.appendDummyInput().appendField(Blockly.Msg.senseBox_send_to_osem); + if (boxes) { + this.appendValueInput("Value") + .appendField("Phänomen") + .appendField( + new Blockly.FieldDropdown(this.generateOptions), + "SensorID" + ); + } else { + this.appendValueInput("Value") + .setAlign(Blockly.ALIGN_LEFT) + .appendField("Phänomen") + .appendField(new Blockly.FieldTextInput("sensorID"), "SensorID"); + } + + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + }, + + generateOptions: function () { + var dropdown = [["", ""]]; + var boxID = selectedBox; + if (boxID !== "" && boxes) { + let box = boxes.find((el) => el._id === boxID); + if (box !== undefined) { + for (var i = 0; i < box.sensors.length; i++) { + dropdown.push([box.sensors[i].title, box.sensors[i]._id]); } - - this.setPreviousStatement(true, null); - this.setNextStatement(true, null); - }, - - generateOptions: function () { - var dropdown = [['', '']]; - var boxID = selectedBox; - if (boxID !== '' && boxes) { - - let box = boxes.find(el => el._id === boxID); - if (box !== undefined) { - for (var i = 0; i < box.sensors.length; i++) { - dropdown.push([box.sensors[i].title, box.sensors[i]._id]) - } - } - if (dropdown.length > 1) { - var options = dropdown.slice(1) - return options - } else { - return dropdown - } - } - return dropdown - }, - /** - * 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 () { - - 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); - } - }, - /** - * List of block types that are loops and thus do not need warnings. - * To add a new loop type add this to your code: - * Blockly.Blocks['controls_flow_statements'].LOOP_TYPES.push('custom_loop'); - */ - LOOP_TYPES: ['sensebox_osem_connection'] + } + if (dropdown.length > 1) { + var options = dropdown.slice(1); + return options; + } else { + return dropdown; + } + } + return dropdown; + }, + /** + * 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 () { + 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); + } + }, + /** + * List of block types that are loops and thus do not need warnings. + * To add a new loop type add this to your code: + * Blockly.Blocks['controls_flow_statements'].LOOP_TYPES.push('custom_loop'); + */ + LOOP_TYPES: ["sensebox_osem_connection"], }; diff --git a/src/components/Blockly/blocks/sensebox-web.js b/src/components/Blockly/blocks/sensebox-web.js index 3d77fa9..5471e75 100644 --- a/src/components/Blockly/blocks/sensebox-web.js +++ b/src/components/Blockly/blocks/sensebox-web.js @@ -61,17 +61,16 @@ Blockly.Blocks["sensebox_ethernet"] = { this.setHelpUrl(""); this.setColour(getColour().sensebox); this.appendDummyInput() - .appendField("Connect with Ethernet") - .appendField("using") + .appendField(Blockly.Msg.senseBox_ethernet) .appendField( new Blockly.FieldDropdown([ - ["dhcp", "Dhcp"], - ["manual configuration", "Manual"], + [Blockly.Msg.senseBox_ethernet_dhcp, "Dhcp"], + [Blockly.Msg.senseBox_ethernet_manuel_config, "Manual"], ]), "dhcp" ); this.appendDummyInput() - .appendField("MAC-Address") + .appendField(Blockly.Msg.senseBox_ethernet_mac) .appendField( new Blockly.FieldTextInput("0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED"), "mac" @@ -88,19 +87,18 @@ Blockly.Blocks["sensebox_ethernet"] = { }, updateShape_(isManual) { - // console.log(isDhcp); if (isManual) { this.appendDummyInput("ip-field") - .appendField("Ip Adress") + .appendField(Blockly.Msg.senseBox_ethernet_ip) .appendField(new Blockly.FieldTextInput("192.168.1.100"), "ip"); this.appendDummyInput("subnetmask-field") - .appendField("Subnetmask") + .appendField(Blockly.Msg.senseBox_ethernet_subnetmask) .appendField(new Blockly.FieldTextInput("255.255.255.0"), "subnetmask"); this.appendDummyInput("gateway-field") - .appendField("Gateway") + .appendField(Blockly.Msg.senseBox_ethernet_gateway) .appendField(new Blockly.FieldTextInput("192.168.1.1"), "gateway"); this.appendDummyInput("dns-field") - .appendField("DNS") + .appendField(Blockly.Msg.senseBox_ethernet_dns) .appendField(new Blockly.FieldTextInput("8.8.8.8"), "dns"); } else { this.removeInput("ip-field", true); diff --git a/src/components/Blockly/generator/sensebox-web.js b/src/components/Blockly/generator/sensebox-web.js index eedf246..359cfd4 100644 --- a/src/components/Blockly/generator/sensebox-web.js +++ b/src/components/Blockly/generator/sensebox-web.js @@ -47,8 +47,8 @@ Blockly.Arduino.sensebox_ethernet = function () { //Configure static IP setup (only needed if DHCP is disabled) IPAddress myIp(${ip.replaceAll(".", ", ")}); IPAddress myDns(${dns.replaceAll(".", ",")}); - IPAddress myGateway(${gateway.replaceAll(".", ",")}192, 168, 0, 177); - IPAddress mySubnet(${subnetmask.replaceAll(".", ",")}255, 255, 255, 0); + IPAddress myGateway(${gateway.replaceAll(".", ",")}); + IPAddress mySubnet(${subnetmask.replaceAll(".", ",")}); `; Blockly.Arduino.setupCode_["ethernet_setup"] = ` Ethernet.init(23); diff --git a/src/components/Blockly/msg/de/sensebox-web.js b/src/components/Blockly/msg/de/sensebox-web.js index d86618c..f38b96f 100644 --- a/src/components/Blockly/msg/de/sensebox-web.js +++ b/src/components/Blockly/msg/de/sensebox-web.js @@ -1,11 +1,23 @@ export const WEB = { - /** - * WiFi - */ - senseBox_wifi_connect: "Verbinde mit WLAN", - senseBox_wifi_ssid: "Netzwerkname", - senseBox_wifi_tooltip: "Stellt eine Verbindung mit einem WLAN-Netzwerk her. Möchtest du dich mit einem ungesicheren Netzwerk (z.B. Freifunk) verbinden lösche das Feld Passwort. Das WiFi-Bee muss auf den Steckplatz **XBEE1** aufgesteckt werden.", - senseBox_wifi_startap: "Initialisiere WLAN Access Point", - senseBox_wifi_startap_tooltip: "Erstellt einen WiFi-Accesspoint zu dem du dich verbinden kannst. Beachte, dass immer nur 1 Gerät gleichzeitig verbunden werden kann.", - senseBox_wifi_helpurl: "https://docs.sensebox.de/blockly/blockly-web-wifi/", -} \ No newline at end of file + /** + * WiFi + */ + senseBox_wifi_connect: "Verbinde mit WLAN", + senseBox_wifi_ssid: "Netzwerkname", + senseBox_wifi_tooltip: + "Stellt eine Verbindung mit einem WLAN-Netzwerk her. Möchtest du dich mit einem ungesicheren Netzwerk (z.B. Freifunk) verbinden lösche das Feld Passwort. Das WiFi-Bee muss auf den Steckplatz **XBEE1** aufgesteckt werden.", + senseBox_wifi_startap: "Initialisiere WLAN Access Point", + senseBox_wifi_startap_tooltip: + "Erstellt einen WiFi-Accesspoint zu dem du dich verbinden kannst. Beachte, dass immer nur 1 Gerät gleichzeitig verbunden werden kann.", + senseBox_wifi_helpurl: "https://docs.sensebox.de/blockly/blockly-web-wifi/", + senseBox_ethernet: "Verbinde mit Ethernet", + senseBox_ethernet_dhcp: "DHCP", + senseBox_ethernet_manuel_config: "Manuelle Konfiguration", + senseBox_ethernet_ip: "IP-Adresse", + senseBox_ethernet_gateway: "Gateway", + senseBox_ethernet_subnetmask: "Subnetzmaske", + senseBox_ethernet_mac: "MAC-Adresse", + senseBox_ethernet_dns: "DNS-Server", + senseBox_ethernet_tooltip: + "Verbinde das LAN-Bee mit dem Steckplatz XBEE1. Die meisten Netzwerke verwenden DHCP und vergeben automatisch eine IP-Adresse. Solltest du eine Manuelle Konfiguration durchführen wollen wählen im Dropdown Menü **Manuelle Konfiguration** aus und gebe die entsprechenden Daten ein.", +}; diff --git a/src/components/Blockly/msg/en/sensebox-web.js b/src/components/Blockly/msg/en/sensebox-web.js index 63fc98a..3ca102e 100644 --- a/src/components/Blockly/msg/en/sensebox-web.js +++ b/src/components/Blockly/msg/en/sensebox-web.js @@ -1,11 +1,24 @@ export const WEB = { - /** - * WiFi - */ - senseBox_wifi_connect: "Connect to Wifi", - senseBox_wifi_ssid: "Networkname", - senseBox_wifi_tooltip: "Connects to a wireless network. If you want to connect to an unsecured network (e.g. Freifunk) clear the password field. The WiFi-Bee must be plugged into the **XBEE1** slot.", - senseBox_wifi_startap: "Initialize Wifi Access Point", - senseBox_wifi_startap_tooltip: "Creates a WiFi access point to which you can connect. Note that only 1 device can be connected at a time.", - senseBox_wifi_helpurl: "https://en.docs.sensebox.de/blockly/blockly-web-wifi/", -} \ No newline at end of file + /** + * WiFi + */ + senseBox_wifi_connect: "Connect to Wifi", + senseBox_wifi_ssid: "Networkname", + senseBox_wifi_tooltip: + "Connects to a wireless network. If you want to connect to an unsecured network (e.g. Freifunk) clear the password field. The WiFi-Bee must be plugged into the **XBEE1** slot.", + senseBox_wifi_startap: "Initialize Wifi Access Point", + senseBox_wifi_startap_tooltip: + "Creates a WiFi access point to which you can connect. Note that only 1 device can be connected at a time.", + senseBox_wifi_helpurl: + "https://en.docs.sensebox.de/blockly/blockly-web-wifi/", + senseBox_ethernet: "Connect to Ethernet", + senseBox_ethernet_dhcp: "DHCP", + senseBox_ethernet_manuel_config: "Manual configuration", + senseBox_ethernet_ip: "IP address", + senseBox_ethernet_gateway: "Gateway", + senseBox_ethernet_subnetmask: "Subnet mask", + senseBox_ethernet_mac: "MAC address", + senseBox_ethernet_dns: "DNS-Server", + senseBox_ethernet_tooltip: + "Connect the LAN-Bee to the XBEE1 slot. Most networks use DHCP and assign an IP address automatically. If you want to do a manual configuration select **Manual Configuration** in the dropdown menu and enter the appropriate data.", +}; From 0c8ae9012405a5b02f7a83188c623ac391f5d4ea Mon Sep 17 00:00:00 2001 From: Mario Pesch Date: Wed, 26 Jan 2022 09:52:50 +0100 Subject: [PATCH 7/8] add watchdog --- src/components/Blockly/blocks/index.js | 1 + src/components/Blockly/blocks/watchdog.js | 28 +++++++++++ src/components/Blockly/generator/index.js | 1 + src/components/Blockly/generator/watchdog.js | 16 +++++++ src/components/Blockly/toolbox/Toolbox.js | 50 +++++++++++--------- 5 files changed, 74 insertions(+), 22 deletions(-) create mode 100644 src/components/Blockly/blocks/watchdog.js create mode 100644 src/components/Blockly/generator/watchdog.js diff --git a/src/components/Blockly/blocks/index.js b/src/components/Blockly/blocks/index.js index b4bf8fa..307c4f4 100644 --- a/src/components/Blockly/blocks/index.js +++ b/src/components/Blockly/blocks/index.js @@ -21,6 +21,7 @@ import "./procedures"; import "./time"; import "./variables"; import "./lists"; +import "./watchdog"; import "./webserver"; import "../helpers/types"; diff --git a/src/components/Blockly/blocks/watchdog.js b/src/components/Blockly/blocks/watchdog.js new file mode 100644 index 0000000..09ce26d --- /dev/null +++ b/src/components/Blockly/blocks/watchdog.js @@ -0,0 +1,28 @@ +import Blockly from "blockly/core"; +import { getColour } from "../helpers/colour"; + +Blockly.Blocks["watchdog_enable"] = { + init: function () { + this.appendDummyInput() + .appendField("Watchdog aktivieren") + .appendField(new Blockly.FieldTextInput("10000"), "TIME") + .appendField("ms"); + + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setColour(getColour().io); + this.setTooltip(""); + this.setHelpUrl(""); + }, +}; + +Blockly.Blocks["watchdog_reset"] = { + init: function () { + this.appendDummyInput().appendField("Watchdog zurücksetzen"); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + this.setColour(getColour().io); + this.setTooltip(""); + this.setHelpUrl(""); + }, +}; diff --git a/src/components/Blockly/generator/index.js b/src/components/Blockly/generator/index.js index d2cb21e..f913c5a 100644 --- a/src/components/Blockly/generator/index.js +++ b/src/components/Blockly/generator/index.js @@ -22,4 +22,5 @@ import "./procedures"; import "./time"; import "./variables"; import "./lists"; +import "./watchdog"; import "./webserver"; diff --git a/src/components/Blockly/generator/watchdog.js b/src/components/Blockly/generator/watchdog.js new file mode 100644 index 0000000..0f51766 --- /dev/null +++ b/src/components/Blockly/generator/watchdog.js @@ -0,0 +1,16 @@ +import * as Blockly from "blockly/core"; + +Blockly.Arduino.watchdog_enable = function () { + var time = this.getFieldValue("TIME"); + + Blockly.Arduino.libraries_["Adafruit_sleepydog"] = + "#include "; + Blockly.Arduino.setupCode_["watchdog_enable"] = `Watchdog.enable(${time});`; + var code = ""; + return code; +}; + +Blockly.Arduino.watchdog_reset = function () { + var code = "Watchdog.reset();"; + return code; +}; diff --git a/src/components/Blockly/toolbox/Toolbox.js b/src/components/Blockly/toolbox/Toolbox.js index 39e2095..8f71bbc 100644 --- a/src/components/Blockly/toolbox/Toolbox.js +++ b/src/components/Blockly/toolbox/Toolbox.js @@ -608,28 +608,34 @@ class Toolbox extends React.Component { custom="PROCEDURE" > - - - - - - - - - - - - - - - - - - - 100 - - - + + + + + + + + + + + + + + + + + + + + 100 + + + + + + + + {/* this block is the initial block of the workspace; not necessary to display, because it can only be used once anyway From c711596285ad0c79463dc737f68472d94b91309b Mon Sep 17 00:00:00 2001 From: Mario Pesch Date: Sat, 29 Jan 2022 10:50:30 +0100 Subject: [PATCH 8/8] update generated code --- src/components/Blockly/blocks/sensebox-web.js | 11 +++++ .../Blockly/generator/sensebox-web.js | 45 ++++++++++--------- src/components/Blockly/toolbox/Toolbox.js | 3 +- 3 files changed, 38 insertions(+), 21 deletions(-) diff --git a/src/components/Blockly/blocks/sensebox-web.js b/src/components/Blockly/blocks/sensebox-web.js index 5471e75..b98d33e 100644 --- a/src/components/Blockly/blocks/sensebox-web.js +++ b/src/components/Blockly/blocks/sensebox-web.js @@ -108,3 +108,14 @@ Blockly.Blocks["sensebox_ethernet"] = { } }, }; + +Blockly.Blocks["sensebox_ethernetIp"] = { + init: function () { + this.appendDummyInput().appendField(Blockly.Msg.senseBox_ethernet_ip); + + this.setColour(getColour().sensebox); + this.setHelpUrl(Blockly.Msg.senseBox_ethernetIp_helpurl); + this.setTooltip(Blockly.Msg.senseBox_ethernet_ip_tooltip); + this.setOutput(true, null); + }, +}; diff --git a/src/components/Blockly/generator/sensebox-web.js b/src/components/Blockly/generator/sensebox-web.js index 359cfd4..5f4124c 100644 --- a/src/components/Blockly/generator/sensebox-web.js +++ b/src/components/Blockly/generator/sensebox-web.js @@ -41,36 +41,41 @@ Blockly.Arduino.sensebox_ethernet = function () { Blockly.Arduino.libraries_["library_ethernet"] = "#include "; Blockly.Arduino.definitions_["ethernet_config"] = ` - byte mac[] = { ${mac}};`; +byte mac[] = { ${mac}};`; if (dhcp === "Manual") { Blockly.Arduino.definitions_["ethernet_manual_config"] = ` - //Configure static IP setup (only needed if DHCP is disabled) - IPAddress myIp(${ip.replaceAll(".", ", ")}); - IPAddress myDns(${dns.replaceAll(".", ",")}); - IPAddress myGateway(${gateway.replaceAll(".", ",")}); - IPAddress mySubnet(${subnetmask.replaceAll(".", ",")}); +//Configure static IP setup (only needed if DHCP is disabled) +IPAddress myIp(${ip.replaceAll(".", ", ")}); +IPAddress myDns(${dns.replaceAll(".", ",")}); +IPAddress myGateway(${gateway.replaceAll(".", ",")}); +IPAddress mySubnet(${subnetmask.replaceAll(".", ",")}); `; Blockly.Arduino.setupCode_["ethernet_setup"] = ` - Ethernet.init(23); - // start the Ethernet connection: - if (Ethernet.begin(mac) == 0) { - // no point in carrying on, so do nothing forevermore: - // try to congifure using IP address instead of DHCP: - Ethernet.begin(mac, myIp); - } - // give the Ethernet shield a second to initialize: - delay(1000); +Ethernet.init(23); +// start the Ethernet connection: +if (Ethernet.begin(mac) == 0) { + // no point in carrying on, so do nothing forevermore: + // try to congifure using IP address instead of DHCP: + Ethernet.begin(mac, myIp); +} +// give the Ethernet shield a second to initialize: +delay(1000); `; } else { Blockly.Arduino.setupCode_["ethernet_setup"] = ` - Ethernet.init(23); - // start the Ethernet connection: - Ethernet.begin(mac); - // give the Ethernet shield a second to initialize: - delay(1000); +Ethernet.init(23); +// start the Ethernet connection: +Ethernet.begin(mac); +// give the Ethernet shield a second to initialize: +delay(1000); `; } var code = ""; return code; }; + +Blockly.Arduino.sensebox_ethernetIp = function () { + var code = "Ethernet.localIP()"; + return [code, Blockly.Arduino.ORDER_ATOMIC]; +}; diff --git a/src/components/Blockly/toolbox/Toolbox.js b/src/components/Blockly/toolbox/Toolbox.js index 8f71bbc..961233f 100644 --- a/src/components/Blockly/toolbox/Toolbox.js +++ b/src/components/Blockly/toolbox/Toolbox.js @@ -94,8 +94,9 @@ class Toolbox extends React.Component { - + +