replace more senseBox MCU includes

This commit is contained in:
Mario Pesch 2021-11-24 18:33:35 +01:00
parent 8acc89b99e
commit d21847454a
8 changed files with 320 additions and 164 deletions

View File

@ -1,52 +1,77 @@
import * as Blockly from 'blockly/core'; import * as Blockly from "blockly/core";
/** /**
* MQTT Blocks * MQTT Blocks
*/ */
let service; let service;
Blockly.Arduino.sensebox_mqtt_setup = function () { Blockly.Arduino.sensebox_mqtt_setup = function () {
var server = this.getFieldValue('server'); var server = this.getFieldValue("server");
var port = this.getFieldValue('port'); var port = this.getFieldValue("port");
var username = this.getFieldValue('username'); var username = this.getFieldValue("username");
var pass = this.getFieldValue('password'); var pass = this.getFieldValue("password");
service = this.getFieldValue('service'); service = this.getFieldValue("service");
Blockly.Arduino.libraries_['library_senseBoxMCU'] = '#include "SenseBoxMCU.h"'; Blockly.Arduino.libraries_["library_senseBoxIO"] = "#include <senseBoxIO.h>";
Blockly.Arduino.libraries_['library_adafruitmqtt'] = '#include "Adafruit_MQTT.h"'; Blockly.Arduino.libraries_["library_adafruitmqtt"] =
Blockly.Arduino.libraries_['library_adafruitmqttclient'] = '#include "Adafruit_MQTT_Client.h"'; '#include "Adafruit_MQTT.h"';
Blockly.Arduino.definitions_['mqtt_server'] = '#define SERVER "' + server + '"'; Blockly.Arduino.libraries_["library_adafruitmqttclient"] =
Blockly.Arduino.definitions_['mqtt_port'] = '#define SERVERPORT ' + port + ''; '#include "Adafruit_MQTT_Client.h"';
Blockly.Arduino.definitions_['mqtt_username'] = '#define USERNAME "' + username + '"'; Blockly.Arduino.definitions_["mqtt_server"] =
Blockly.Arduino.definitions_['mqtt_pass'] = '#define PASS "' + pass + '"'; '#define SERVER "' + server + '"';
Blockly.Arduino.definitions_['wifi_client'] = 'WiFiClient client;'; Blockly.Arduino.definitions_["mqtt_port"] =
Blockly.Arduino.definitions_['mqtt_client'] = 'Adafruit_MQTT_Client mqtt(&client, SERVER, SERVERPORT, USERNAME, PASS);' "#define SERVERPORT " + port + "";
var code = ''; Blockly.Arduino.definitions_["mqtt_username"] =
return code; '#define USERNAME "' + username + '"';
Blockly.Arduino.definitions_["mqtt_pass"] =
'#define PASS "' + pass + '"';
Blockly.Arduino.definitions_["wifi_client"] = "WiFiClient client;";
Blockly.Arduino.definitions_["mqtt_client"] =
"Adafruit_MQTT_Client mqtt(&client, SERVER, SERVERPORT, USERNAME, PASS);";
var code = "";
return code;
}; };
Blockly.Arduino.sensebox_mqtt_publish = function (block) { Blockly.Arduino.sensebox_mqtt_publish = function (block) {
var feedname = this.getFieldValue('publishfeed'); var feedname = this.getFieldValue("publishfeed");
var res = feedname.split("/"); var res = feedname.split("/");
var feed_client = res[res.length - 1]; var feed_client = res[res.length - 1];
var value = Blockly.Arduino.valueToCode(this, 'value', Blockly.Arduino.ORDER_ATOMIC) || '"No Block connected"'; var value =
Blockly.Arduino.valueToCode(this, "value", Blockly.Arduino.ORDER_ATOMIC) ||
'"No Block connected"';
switch (service) { switch (service) {
case 'adafruitio': case "adafruitio":
Blockly.Arduino.definitions_['mqtt_' + feed_client + ''] = 'Adafruit_MQTT_Publish ' + feed_client + ' = Adafruit_MQTT_Publish(&mqtt, USERNAME "/feeds/' + feedname + '");' Blockly.Arduino.definitions_["mqtt_" + feed_client + ""] =
break; "Adafruit_MQTT_Publish " +
case 'dioty': feed_client +
Blockly.Arduino.definitions_['mqtt_' + feed_client + ''] = 'Adafruit_MQTT_Publish ' + feed_client + ' = Adafruit_MQTT_Publish(&mqtt, "/"USERNAME"/' + feedname + '");' ' = Adafruit_MQTT_Publish(&mqtt, USERNAME "/feeds/' +
break; feedname +
case 'custom': '");';
Blockly.Arduino.definitions_['mqtt_' + feed_client + ''] = 'Adafruit_MQTT_Publish ' + feed_client + ' = Adafruit_MQTT_Publish(&mqtt, "' + feedname + '");' break;
break; case "dioty":
default: Blockly.Arduino.definitions_["mqtt_" + feed_client + ""] =
break; "Adafruit_MQTT_Publish " +
feed_client +
' = Adafruit_MQTT_Publish(&mqtt, "/"USERNAME"/' +
feedname +
'");';
break;
case "custom":
Blockly.Arduino.definitions_["mqtt_" + feed_client + ""] =
"Adafruit_MQTT_Publish " +
feed_client +
' = Adafruit_MQTT_Publish(&mqtt, "' +
feedname +
'");';
break;
default:
break;
}
} //Blockly.Arduino.definitions_['mqtt_' + feed_client + ''] = 'Adafruit_MQTT_Publish ' + feed_client + ' = Adafruit_MQTT_Publish(&mqtt, USERNAME "/feeds/' + feedname + '");'
Blockly.Arduino.codeFunctions_[
//Blockly.Arduino.definitions_['mqtt_' + feed_client + ''] = 'Adafruit_MQTT_Publish ' + feed_client + ' = Adafruit_MQTT_Publish(&mqtt, USERNAME "/feeds/' + feedname + '");' "mqtt_connect_function"
Blockly.Arduino.codeFunctions_['mqtt_connect_function'] = `// Function to connect and reconnect as necessary to the MQTT server. ] = `// Function to connect and reconnect as necessary to the MQTT server.
// Should be called in the loop function and it will take care if connecting. // Should be called in the loop function and it will take care if connecting.
void MQTT_connect() { void MQTT_connect() {
int8_t ret; int8_t ret;
@ -59,23 +84,34 @@ void MQTT_connect() {
delay(5000); // wait 5 seconds delay(5000); // wait 5 seconds
} }
}`; }`;
Blockly.Arduino.loopCodeOnce_['mqtt_connect'] = 'MQTT_connect();'; Blockly.Arduino.loopCodeOnce_["mqtt_connect"] = "MQTT_connect();";
var code = '' + feed_client + '.publish(' + value + ');'; var code = "" + feed_client + ".publish(" + value + ");";
return code return code;
}; };
Blockly.Arduino.sensebox_mqtt_subscribe = function (block) { Blockly.Arduino.sensebox_mqtt_subscribe = function (block) {
var feedname = this.getFieldValue('subscribefeed'); var feedname = this.getFieldValue("subscribefeed");
var x = 5, feed_client; var x = 5,
feed_client = feedname.substr(feedname.length - x, x); feed_client;
Blockly.Arduino.definitions_['mqtt_' + feed_client + ''] = 'Adafruit_MQTT_Subscribe ' + feed_client + '= Adafruit_MQTT_Subscribe(&mqtt,' + feedname + ');'; feed_client = feedname.substr(feedname.length - x, x);
Blockly.Arduino.codeFunctions_['mqtt_' + feed_client + 'callbackFunction'] = `void ` + feed_client + `Callback (double x){ Blockly.Arduino.definitions_["mqtt_" + feed_client + ""] =
"Adafruit_MQTT_Subscribe " +
feed_client +
"= Adafruit_MQTT_Subscribe(&mqtt," +
feedname +
");";
Blockly.Arduino.codeFunctions_["mqtt_" + feed_client + "callbackFunction"] =
`void ` +
feed_client +
`Callback (double x){
Serial.println(x); Serial.println(x);
}`; }`;
Blockly.Arduino.setupCode_['mqtt_' + feed_client + '_callback'] = '' + feed_client + '.setCallback(' + feed_client + 'Callback);'; Blockly.Arduino.setupCode_["mqtt_" + feed_client + "_callback"] =
Blockly.Arduino.setupCode_['mqtt_' + feed_client + '_subscribe'] = 'mqtt.subscribe(&' + feed_client + ');'; "" + feed_client + ".setCallback(" + feed_client + "Callback);";
Blockly.Arduino.loopCodeOnce_['mqtt_processPackages'] = 'mqtt.processPackets(10);'; Blockly.Arduino.setupCode_["mqtt_" + feed_client + "_subscribe"] =
var code = ''; "mqtt.subscribe(&" + feed_client + ");";
return code; Blockly.Arduino.loopCodeOnce_["mqtt_processPackages"] =
"mqtt.processPackets(10);";
var code = "";
return code;
}; };

View File

@ -3,8 +3,7 @@ import * as Blockly from "blockly/core";
Blockly.Arduino.sensebox_phyphox_init = function () { Blockly.Arduino.sensebox_phyphox_init = function () {
var name = this.getFieldValue("devicename"); var name = this.getFieldValue("devicename");
Blockly.Arduino.libraries_["phyphox_library"] = `#include <phyphoxBle.h>`; Blockly.Arduino.libraries_["phyphox_library"] = `#include <phyphoxBle.h>`;
Blockly.Arduino.libraries_["library_senseBoxMCU"] = Blockly.Arduino.libraries_["library_senseBoxIO"] = "#include <senseBoxIO.h>";
'#include "SenseBoxMCU.h"';
Blockly.Arduino.phyphoxSetupCode_[ Blockly.Arduino.phyphoxSetupCode_[
"phyphox_start" "phyphox_start"
] = `PhyphoxBLE::start("${name}");`; ] = `PhyphoxBLE::start("${name}");`;

View File

@ -1,45 +1,75 @@
import * as Blockly from 'blockly/core'; import * as Blockly from "blockly/core";
/*Display Blocks*/ /*Display Blocks*/
Blockly.Arduino.sensebox_display_beginDisplay = function () { Blockly.Arduino.sensebox_display_beginDisplay = function () {
Blockly.Arduino.libraries_['library_spi'] = '#include <SPI.h>'; Blockly.Arduino.libraries_["library_spi"] = "#include <SPI.h>";
Blockly.Arduino.libraries_['library_wire'] = '#include <Wire.h>'; Blockly.Arduino.libraries_["library_wire"] = "#include <Wire.h>";
Blockly.Arduino.libraries_['library_AdafruitGFX'] = '#include <Adafruit_GFX.h>'; Blockly.Arduino.libraries_["library_AdafruitGFX"] =
Blockly.Arduino.libraries_['library_AdafruitSSD1306'] = '#include <Adafruit_SSD1306.h>'; "#include <Adafruit_GFX.h>";
Blockly.Arduino.libraries_['library_senseBoxMCU'] = '#include "SenseBoxMCU.h"'; Blockly.Arduino.libraries_["library_AdafruitSSD1306"] =
Blockly.Arduino.definitions_['define_display'] = '#define OLED_RESET 4\nAdafruit_SSD1306 display(OLED_RESET);'; "#include <Adafruit_SSD1306.h>";
Blockly.Arduino.setupCode_['sensebox_display_begin'] = 'senseBoxIO.powerI2C(true);\ndelay(2000);\ndisplay.begin(SSD1306_SWITCHCAPVCC, 0x3D);\ndisplay.display();\ndelay(100);\ndisplay.clearDisplay();'; Blockly.Arduino.libraries_["library_senseBoxIO"] = "#include <senseBoxIO.h>";
var code = ''; Blockly.Arduino.definitions_["define_display"] =
return code; "#define OLED_RESET 4\nAdafruit_SSD1306 display(OLED_RESET);";
Blockly.Arduino.setupCode_["sensebox_display_begin"] =
"senseBoxIO.powerI2C(true);\ndelay(2000);\ndisplay.begin(SSD1306_SWITCHCAPVCC, 0x3D);\ndisplay.display();\ndelay(100);\ndisplay.clearDisplay();";
var code = "";
return code;
}; };
Blockly.Arduino.sensebox_display_clearDisplay = function () { Blockly.Arduino.sensebox_display_clearDisplay = function () {
var code = 'display.clearDisplay();\n'; var code = "display.clearDisplay();\n";
return code; return code;
}; };
Blockly.Arduino.sensebox_display_printDisplay = function () { Blockly.Arduino.sensebox_display_printDisplay = function () {
var x = this.getFieldValue('X'); var x = this.getFieldValue("X");
var y = this.getFieldValue('Y'); var y = this.getFieldValue("Y");
var printDisplay = Blockly.Arduino.valueToCode(this, 'printDisplay', Blockly.Arduino.ORDER_ATOMIC) || '"Keine Eingabe"'; var printDisplay =
var size = this.getFieldValue('SIZE'); Blockly.Arduino.valueToCode(
var color = this.getFieldValue('COLOR'); this,
var code = 'display.setCursor(' + x + ',' + y + ');\n'; "printDisplay",
code += 'display.setTextSize(' + size + ');\n'; Blockly.Arduino.ORDER_ATOMIC
code += 'display.setTextColor(' + color + ');\n'; ) || '"Keine Eingabe"';
code += 'display.println(' + printDisplay + ');\n'; var size = this.getFieldValue("SIZE");
return code; var color = this.getFieldValue("COLOR");
var code = "display.setCursor(" + x + "," + y + ");\n";
code += "display.setTextSize(" + size + ");\n";
code += "display.setTextColor(" + color + ");\n";
code += "display.println(" + printDisplay + ");\n";
return code;
}; };
Blockly.Arduino.sensebox_display_fastPrint = function () { Blockly.Arduino.sensebox_display_fastPrint = function () {
var title1 = Blockly.Arduino.valueToCode(this, 'Title1', Blockly.Arduino.ORDER_ATOMIC) || '0' var title1 =
var value1 = Blockly.Arduino.valueToCode(this, 'Value1', Blockly.Arduino.ORDER_ATOMIC); Blockly.Arduino.valueToCode(this, "Title1", Blockly.Arduino.ORDER_ATOMIC) ||
var dimension1 = Blockly.Arduino.valueToCode(this, 'Dimension1', Blockly.Arduino.ORDER_ATOMIC) || '0' "0";
var title2 = Blockly.Arduino.valueToCode(this, 'Title2', Blockly.Arduino.ORDER_ATOMIC) || '0' var value1 = Blockly.Arduino.valueToCode(
var value2 = Blockly.Arduino.valueToCode(this, 'Value2', Blockly.Arduino.ORDER_ATOMIC); this,
var dimension2 = Blockly.Arduino.valueToCode(this, 'Dimension2', Blockly.Arduino.ORDER_ATOMIC) || '0' "Value1",
Blockly.Arduino.codeFunctions_['sensebox_fastPrint'] = ` Blockly.Arduino.ORDER_ATOMIC
);
var dimension1 =
Blockly.Arduino.valueToCode(
this,
"Dimension1",
Blockly.Arduino.ORDER_ATOMIC
) || "0";
var title2 =
Blockly.Arduino.valueToCode(this, "Title2", Blockly.Arduino.ORDER_ATOMIC) ||
"0";
var value2 = Blockly.Arduino.valueToCode(
this,
"Value2",
Blockly.Arduino.ORDER_ATOMIC
);
var dimension2 =
Blockly.Arduino.valueToCode(
this,
"Dimension2",
Blockly.Arduino.ORDER_ATOMIC
) || "0";
Blockly.Arduino.codeFunctions_["sensebox_fastPrint"] = `
void printOnDisplay(String title1, String measurement1, String unit1, String title2, String measurement2, String unit2) { void printOnDisplay(String title1, String measurement1, String unit1, String title2, String measurement2, String unit2) {
display.setCursor(0, 0); display.setCursor(0, 0);
@ -62,67 +92,141 @@ Blockly.Arduino.sensebox_display_fastPrint = function () {
display.setTextSize(1); display.setTextSize(1);
display.println(unit2); display.println(unit2);
} }
` `;
var code = ` printOnDisplay(${title1}, String(${value1}), ${dimension1}, ${title2}, String(${value2}), ${dimension2});\n`; var code = ` printOnDisplay(${title1}, String(${value1}), ${dimension1}, ${title2}, String(${value2}), ${dimension2});\n`;
return code; return code;
}; };
Blockly.Arduino.sensebox_display_show = function (block) { Blockly.Arduino.sensebox_display_show = function (block) {
var show = Blockly.Arduino.statementToCode(block, 'SHOW'); var show = Blockly.Arduino.statementToCode(block, "SHOW");
var code = ''; var code = "";
code += show; code += show;
code += 'display.display();\n'; code += "display.display();\n";
return code; return code;
}; };
Blockly.Arduino.sensebox_display_plotDisplay = function () { Blockly.Arduino.sensebox_display_plotDisplay = function () {
var YLabel = Blockly.Arduino.valueToCode(this, 'YLabel', Blockly.Arduino.ORDER_ATOMIC) || 'Y' var YLabel =
var XLabel = Blockly.Arduino.valueToCode(this, 'XLabel', Blockly.Arduino.ORDER_ATOMIC) || 'X' Blockly.Arduino.valueToCode(this, "YLabel", Blockly.Arduino.ORDER_ATOMIC) ||
var Title = Blockly.Arduino.valueToCode(this, 'Title', Blockly.Arduino.ORDER_ATOMIC) || 'Title' "Y";
var XRange1 = Blockly.Arduino.valueToCode(this, 'XRange1', Blockly.Arduino.ORDER_ATOMIC) || '0' var XLabel =
var XRange2 = Blockly.Arduino.valueToCode(this, 'XRange2', Blockly.Arduino.ORDER_ATOMIC) || '0' Blockly.Arduino.valueToCode(this, "XLabel", Blockly.Arduino.ORDER_ATOMIC) ||
var YRange1 = Blockly.Arduino.valueToCode(this, 'YRange1', Blockly.Arduino.ORDER_ATOMIC) || '0' "X";
var YRange2 = Blockly.Arduino.valueToCode(this, 'YRange2', Blockly.Arduino.ORDER_ATOMIC) || '0' var Title =
var XTick = Blockly.Arduino.valueToCode(this, 'XTick', Blockly.Arduino.ORDER_ATOMIC) || '0' Blockly.Arduino.valueToCode(this, "Title", Blockly.Arduino.ORDER_ATOMIC) ||
var YTick = Blockly.Arduino.valueToCode(this, 'YTick', Blockly.Arduino.ORDER_ATOMIC) || '0' "Title";
var TimeFrame = Blockly.Arduino.valueToCode(this, 'TimeFrame', Blockly.Arduino.ORDER_ATOMIC) || '0' var XRange1 =
var plotDisplay = Blockly.Arduino.valueToCode(this, 'plotDisplay', Blockly.Arduino.ORDER_ATOMIC) || '"Keine Eingabe"'; Blockly.Arduino.valueToCode(
Blockly.Arduino.libraries_['library_plot'] = '#include <Plot.h>'; this,
Blockly.Arduino.definitions_['define_plot_class'] = 'Plot DataPlot(&display);\n'; "XRange1",
Blockly.Arduino.variables_['define_plot_class'] = 'const double TIMEFRAME = ' + TimeFrame + ';\n'; Blockly.Arduino.ORDER_ATOMIC
Blockly.Arduino.setupCode_['sensebox_plot_setup'] = 'DataPlot.setTitle(' + Title + ');\nDataPlot.setXLabel(' + XLabel + ');\nDataPlot.setYLabel(' + YLabel + ');\nDataPlot.setXRange(' + XRange1 + ',' + XRange2 + ');\nDataPlot.setYRange(' + YRange1 + ',' + YRange2 + ');\nDataPlot.setXTick(' + XTick + ');\nDataPlot.setYTick(' + YTick + ');\nDataPlot.setXPrecision(0);\nDataPlot.setYPrecision(0);\n'; ) || "0";
var code = 'DataPlot.clear();' var XRange2 =
code += 'double starttime = millis();\ndouble t = 0;\nwhile (t <= TIMEFRAME) {\nt = (millis() - starttime) / 1000.0;\nfloat value = ' + plotDisplay + ';\n'; Blockly.Arduino.valueToCode(
code += 'DataPlot.addDataPoint(t,value);\n}\n'; this,
return code; "XRange2",
Blockly.Arduino.ORDER_ATOMIC
) || "0";
var YRange1 =
Blockly.Arduino.valueToCode(
this,
"YRange1",
Blockly.Arduino.ORDER_ATOMIC
) || "0";
var YRange2 =
Blockly.Arduino.valueToCode(
this,
"YRange2",
Blockly.Arduino.ORDER_ATOMIC
) || "0";
var XTick =
Blockly.Arduino.valueToCode(this, "XTick", Blockly.Arduino.ORDER_ATOMIC) ||
"0";
var YTick =
Blockly.Arduino.valueToCode(this, "YTick", Blockly.Arduino.ORDER_ATOMIC) ||
"0";
var TimeFrame =
Blockly.Arduino.valueToCode(
this,
"TimeFrame",
Blockly.Arduino.ORDER_ATOMIC
) || "0";
var plotDisplay =
Blockly.Arduino.valueToCode(
this,
"plotDisplay",
Blockly.Arduino.ORDER_ATOMIC
) || '"Keine Eingabe"';
Blockly.Arduino.libraries_["library_plot"] = "#include <Plot.h>";
Blockly.Arduino.definitions_["define_plot_class"] =
"Plot DataPlot(&display);\n";
Blockly.Arduino.variables_["define_plot_class"] =
"const double TIMEFRAME = " + TimeFrame + ";\n";
Blockly.Arduino.setupCode_["sensebox_plot_setup"] =
"DataPlot.setTitle(" +
Title +
");\nDataPlot.setXLabel(" +
XLabel +
");\nDataPlot.setYLabel(" +
YLabel +
");\nDataPlot.setXRange(" +
XRange1 +
"," +
XRange2 +
");\nDataPlot.setYRange(" +
YRange1 +
"," +
YRange2 +
");\nDataPlot.setXTick(" +
XTick +
");\nDataPlot.setYTick(" +
YTick +
");\nDataPlot.setXPrecision(0);\nDataPlot.setYPrecision(0);\n";
var code = "DataPlot.clear();";
code +=
"double starttime = millis();\ndouble t = 0;\nwhile (t <= TIMEFRAME) {\nt = (millis() - starttime) / 1000.0;\nfloat value = " +
plotDisplay +
";\n";
code += "DataPlot.addDataPoint(t,value);\n}\n";
return code;
}; };
Blockly.Arduino.sensebox_display_fillCircle = function () { Blockly.Arduino.sensebox_display_fillCircle = function () {
let code = ''; let code = "";
var x = Blockly.Arduino.valueToCode(this, 'X', Blockly.Arduino.ORDER_ATOMIC) || '0' var x =
var y = Blockly.Arduino.valueToCode(this, 'Y', Blockly.Arduino.ORDER_ATOMIC) || '0' Blockly.Arduino.valueToCode(this, "X", Blockly.Arduino.ORDER_ATOMIC) || "0";
var radius = Blockly.Arduino.valueToCode(this, 'Radius', Blockly.Arduino.ORDER_ATOMIC) || '0' var y =
var fill = this.getFieldValue('FILL'); Blockly.Arduino.valueToCode(this, "Y", Blockly.Arduino.ORDER_ATOMIC) || "0";
if (fill === 'TRUE') { var radius =
code = 'display.fillCircle(' + x + ',' + y + ',' + radius + ',1);\n'; Blockly.Arduino.valueToCode(this, "Radius", Blockly.Arduino.ORDER_ATOMIC) ||
} "0";
else { var fill = this.getFieldValue("FILL");
code = 'display.drawCircle(' + x + ',' + y + ',' + radius + ',1);\n'; if (fill === "TRUE") {
} code = "display.fillCircle(" + x + "," + y + "," + radius + ",1);\n";
return code; } else {
} code = "display.drawCircle(" + x + "," + y + "," + radius + ",1);\n";
}
return code;
};
Blockly.Arduino.sensebox_display_drawRectangle = function () { Blockly.Arduino.sensebox_display_drawRectangle = function () {
let code = ''; let code = "";
var x = Blockly.Arduino.valueToCode(this, 'X', Blockly.Arduino.ORDER_ATOMIC) || '0' var x =
var y = Blockly.Arduino.valueToCode(this, 'Y', Blockly.Arduino.ORDER_ATOMIC) || '0' Blockly.Arduino.valueToCode(this, "X", Blockly.Arduino.ORDER_ATOMIC) || "0";
var width = Blockly.Arduino.valueToCode(this, 'width', Blockly.Arduino.ORDER_ATOMIC) || '0' var y =
var height = Blockly.Arduino.valueToCode(this, 'height', Blockly.Arduino.ORDER_ATOMIC) || '0' Blockly.Arduino.valueToCode(this, "Y", Blockly.Arduino.ORDER_ATOMIC) || "0";
var fill = this.getFieldValue('FILL'); var width =
if (fill === 'TRUE') { Blockly.Arduino.valueToCode(this, "width", Blockly.Arduino.ORDER_ATOMIC) ||
code = 'display.fillRect(' + x + ',' + y + ',' + width + ',' + height + ',1);\n'; "0";
} var height =
else { Blockly.Arduino.valueToCode(this, "height", Blockly.Arduino.ORDER_ATOMIC) ||
code = 'display.drawRect(' + x + ',' + y + ',' + width + ',' + height + ',1);\n'; "0";
} var fill = this.getFieldValue("FILL");
return code; if (fill === "TRUE") {
} code =
"display.fillRect(" + x + "," + y + "," + width + "," + height + ",1);\n";
} else {
code =
"display.drawRect(" + x + "," + y + "," + width + "," + height + ",1);\n";
}
return code;
};

View File

@ -5,8 +5,7 @@ Blockly.Arduino.sensebox_lora_initialize_otaa = function (block) {
var appID = this.getFieldValue("APPID"); var appID = this.getFieldValue("APPID");
var appKey = this.getFieldValue("APPKEY"); var appKey = this.getFieldValue("APPKEY");
var interval = this.getFieldValue("INTERVAL"); var interval = this.getFieldValue("INTERVAL");
Blockly.Arduino.libraries_["library_senseBoxMCU"] = Blockly.Arduino.libraries_["library_senseBoxIO"] = "#include <senseBoxIO.h>";
'#include "SenseBoxMCU.h"';
Blockly.Arduino.libraries_["library_spi"] = "#include <SPI.h>"; Blockly.Arduino.libraries_["library_spi"] = "#include <SPI.h>";
Blockly.Arduino.libraries_["library_lmic"] = "#include <lmic.h>"; Blockly.Arduino.libraries_["library_lmic"] = "#include <lmic.h>";
Blockly.Arduino.libraries_["library_hal"] = "#include <hal/hal.h>"; Blockly.Arduino.libraries_["library_hal"] = "#include <hal/hal.h>";
@ -278,8 +277,7 @@ Blockly.Arduino.sensebox_lora_initialize_abp = function (block) {
var appskey = this.getFieldValue("APPSKEY"); var appskey = this.getFieldValue("APPSKEY");
var devaddr = this.getFieldValue("DEVADDR"); var devaddr = this.getFieldValue("DEVADDR");
var interval = this.getFieldValue("INTERVAL"); var interval = this.getFieldValue("INTERVAL");
Blockly.Arduino.libraries_["library_senseBoxMCU"] = Blockly.Arduino.libraries_["library_senseBoxIO"] = "#include <senseBoxIO.h>";
'#include "SenseBoxMCU.h"';
Blockly.Arduino.libraries_["library_spi"] = "#include <SPI.h>"; Blockly.Arduino.libraries_["library_spi"] = "#include <SPI.h>";
Blockly.Arduino.libraries_["library_lmic"] = "#include <lmic.h>"; Blockly.Arduino.libraries_["library_lmic"] = "#include <lmic.h>";
Blockly.Arduino.libraries_["library_hal"] = "#include <hal/hal.h>"; Blockly.Arduino.libraries_["library_hal"] = "#include <hal/hal.h>";

View File

@ -34,8 +34,7 @@ Blockly.Arduino.sensebox_osem_connection = function (Block) {
} }
} }
var num_sensors = count; var num_sensors = count;
Blockly.Arduino.libraries_["library_senseBoxMCU"] = Blockly.Arduino.libraries_["library_senseBoxIO"] = "#include <senseBoxIO.h>";
'#include "SenseBoxMCU.h"';
Blockly.Arduino.setupCode_["initBearSSL"] = Blockly.Arduino.setupCode_["initBearSSL"] =
"ArduinoBearSSL.onGetTime(getTime);"; "ArduinoBearSSL.onGetTime(getTime);";
Blockly.Arduino.definitions_["num_sensors"] = Blockly.Arduino.definitions_["num_sensors"] =

View File

@ -3,8 +3,7 @@ import Blockly from "blockly";
Blockly.Arduino.sensebox_rtc_init = function () { Blockly.Arduino.sensebox_rtc_init = function () {
Blockly.Arduino.libraries_["RV8523"] = `#include <RV8523.h>`; Blockly.Arduino.libraries_["RV8523"] = `#include <RV8523.h>`;
Blockly.Arduino.definitions_["RTC"] = `RV8523 rtc;`; Blockly.Arduino.definitions_["RTC"] = `RV8523 rtc;`;
Blockly.Arduino.libraries_["library_senseBoxMCU"] = Blockly.Arduino.libraries_["library_senseBoxIO"] = "#include <senseBoxIO.h>";
'#include "SenseBoxMCU.h"';
Blockly.Arduino.setupCode_["rtc.begin"] = `rtc.begin();`; Blockly.Arduino.setupCode_["rtc.begin"] = `rtc.begin();`;
var code = ``; var code = ``;
return code; return code;

View File

@ -9,6 +9,7 @@ Blockly.Arduino.sensebox_sensor_temp_hum = function () {
var dropdown_name = this.getFieldValue("NAME"); var dropdown_name = this.getFieldValue("NAME");
Blockly.Arduino.libraries_["library_senseBoxMCU"] = Blockly.Arduino.libraries_["library_senseBoxMCU"] =
'#include "SenseBoxMCU.h"'; '#include "SenseBoxMCU.h"';
Blockly.Arduino.libraries_["library_senseBoxIO"] = "#include <senseBoxIO.h>";
Blockly.Arduino.definitions_["define_hdc"] = "HDC1080 hdc;"; Blockly.Arduino.definitions_["define_hdc"] = "HDC1080 hdc;";
Blockly.Arduino.setupCode_["sensebox_sensor_temp_hum"] = "hdc.begin();"; Blockly.Arduino.setupCode_["sensebox_sensor_temp_hum"] = "hdc.begin();";
var code = "hdc.get" + dropdown_name + "()"; var code = "hdc.get" + dropdown_name + "()";

View File

@ -1,29 +1,40 @@
import * as Blockly from 'blockly/core'; import * as Blockly from "blockly/core";
/** /**
* Telegram Bot by re:edu * Telegram Bot by re:edu
*/ */
Blockly.Arduino.sensebox_telegram = function (Block) { Blockly.Arduino.sensebox_telegram = function (Block) {
let token = Block.getFieldValue('telegram_token'); let token = Block.getFieldValue("telegram_token");
Blockly['Arduino'].libraries_['library_senseBoxMCU'] = '#include "SenseBoxMCU.h"'; Blockly.Arduino.libraries_["library_senseBoxIO"] = "#include <senseBoxIO.h>";
Blockly['Arduino'].libraries_['library_telegram'] = `#include <UniversalTelegramBot.h>` Blockly["Arduino"].libraries_[
Blockly['Arduino'].functionNames_['WiFiSSLClient'] = 'WiFiSSLClient client;'; "library_telegram"
Blockly['Arduino'].functionNames_['telegram_objects'] = `#define BOTtoken "${token}" // your Bot Token (Get from Botfather) ] = `#include <UniversalTelegramBot.h>`;
Blockly["Arduino"].functionNames_["WiFiSSLClient"] = "WiFiSSLClient client;";
Blockly["Arduino"].functionNames_[
"telegram_objects"
] = `#define BOTtoken "${token}" // your Bot Token (Get from Botfather)
UniversalTelegramBot bot(BOTtoken, client);` UniversalTelegramBot bot(BOTtoken, client);`;
let code = ''; let code = "";
return code; return code;
}; };
Blockly.Arduino.sensebox_telegram_do = function (block) { Blockly.Arduino.sensebox_telegram_do = function (block) {
var messageProcessing = Blockly.Arduino.statementToCode(block, 'telegram_do', Blockly.Arduino.ORDER_ATOMIC); var messageProcessing = Blockly.Arduino.statementToCode(
block,
"telegram_do",
Blockly.Arduino.ORDER_ATOMIC
);
Blockly.Arduino.definitions_['telegram_variables'] = `int Bot_mtbs = 1000; //mean time between scan messages Blockly.Arduino.definitions_[
long Bot_lasttime; //last time messages' scan has been done` "telegram_variables"
] = `int Bot_mtbs = 1000; //mean time between scan messages
long Bot_lasttime; //last time messages' scan has been done`;
Blockly.Arduino.loopCodeOnce_['sensebox_telegram_loop'] = `if (millis() > Bot_lasttime + Bot_mtbs) { Blockly.Arduino.loopCodeOnce_[
"sensebox_telegram_loop"
] = `if (millis() > Bot_lasttime + Bot_mtbs) {
int numNewMessages = bot.getUpdates(bot.last_message_received + 1); int numNewMessages = bot.getUpdates(bot.last_message_received + 1);
while(numNewMessages) { while(numNewMessages) {
for(int i=0; i<numNewMessages; i++) { for(int i=0; i<numNewMessages; i++) {
@ -36,13 +47,17 @@ Blockly.Arduino.sensebox_telegram_do = function (block) {
} }
Bot_lasttime = millis(); Bot_lasttime = millis();
}`; }`;
var code = ''; var code = "";
return code; return code;
}; };
Blockly.Arduino.sensebox_telegram_do_on_message = function (block) { Blockly.Arduino.sensebox_telegram_do_on_message = function (block) {
var message = this.getFieldValue('telegram_message'); var message = this.getFieldValue("telegram_message");
var stuffToDo = Blockly.Arduino.statementToCode(block, 'telegram_do_on_message', Blockly.Arduino.ORDER_ATOMIC); var stuffToDo = Blockly.Arduino.statementToCode(
block,
"telegram_do_on_message",
Blockly.Arduino.ORDER_ATOMIC
);
var code = ` var code = `
if (text == "${message}") { if (text == "${message}") {
${stuffToDo} ${stuffToDo}
@ -51,7 +66,12 @@ Blockly.Arduino.sensebox_telegram_do_on_message = function (block) {
}; };
Blockly.Arduino.sensebox_telegram_send = function (block) { Blockly.Arduino.sensebox_telegram_send = function (block) {
var textToSend = Blockly.Arduino.valueToCode(this, 'telegram_text_to_send', Blockly.Arduino.ORDER_ATOMIC) || '"Keine Eingabe"'; var textToSend =
Blockly.Arduino.valueToCode(
this,
"telegram_text_to_send",
Blockly.Arduino.ORDER_ATOMIC
) || '"Keine Eingabe"';
var code = `bot.sendMessage(chat_id, String(${textToSend}), "");\n`; var code = `bot.sendMessage(chat_id, String(${textToSend}), "");\n`;
return code; return code;
}; };