Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add-rainsensor #195

Open
wants to merge 6 commits into
base: development
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions src/components/Blockly/blocks/sensebox-sensors.js
Original file line number Diff line number Diff line change
Expand Up @@ -603,6 +603,35 @@ Blockly.Blocks["sensebox_soundsensor_dfrobot"] = {
},
};

/**
* rg15 rainsensor
*/

Blockly.Blocks["sensebox_rg15_rainsensor"] = {
init: function () {
var dropdownOptionsValues = [
[Blockly.Msg.sensebox_rg15_rainsensor_acc, "getAccumulation"],
[Blockly.Msg.sensebox_rg15_rainsensor_totalAcc, "getTotalAccumulation"],
[Blockly.Msg.sensebox_rg15_rainsensor_eventAcc, "getEventAccumulation"],
[Blockly.Msg.sensebox_rg15_rainsensor_rainInt, "getRainfallIntensity"],
];
this.setColour(getColour().sensebox);
this.appendDummyInput().appendField(Blockly.Msg.sensebox_rg15_rainsensor);
this.appendDummyInput()
.appendField(Blockly.Msg.sensebox_rg15_rainsensor_port)
.appendField(
new Blockly.FieldDropdown(selectedBoard().serialSensors),
"SERIAL",
);
this.appendDummyInput()
.appendField(Blockly.Msg.sensebox_rg15_rainsensor_value)
.appendField(new Blockly.FieldDropdown(dropdownOptionsValues), "VALUE");
this.setOutput(true, Types.DECIMAL.typeName);
this.setTooltip(Blockly.Msg.sensebox_rg15_rainsensor_tooltip);
this.setHelpUrl(Blockly.Msg.sensebox_rg15_rainsensor_helpurl);
},
};

/**
* Infineon DPS310 Pressure Sensor
*
Expand Down
38 changes: 30 additions & 8 deletions src/components/Blockly/generator/sensebox-sensors.js
Original file line number Diff line number Diff line change
Expand Up @@ -272,13 +272,13 @@ Blockly.Generator.Arduino.forBlock["sensebox_sensor_bme680_bsec"] =
digitalWrite(LED_BUILTIN, LOW);
delay(100);
}`;
//Setup Code
Blockly.Generator.Arduino.preSetupCode_["Wire.begin"] = "Wire.begin();";
Blockly.Generator.Arduino.setupCode_["iaqSensor.begin"] =
"iaqSensor.begin(BME68X_I2C_ADDR_LOW, Wire);";
Blockly.Generator.Arduino.setupCode_["checkIaqSensorStatus"] =
"checkIaqSensorStatus();";
Blockly.Generator.Arduino.setupCode_["bsec_sensorlist"] = `
//Setup Code
Blockly.Generator.Arduino.preSetupCode_["Wire.begin"] = "Wire.begin();";
Blockly.Generator.Arduino.setupCode_["iaqSensor.begin"] =
"iaqSensor.begin(BME68X_I2C_ADDR_LOW, Wire);";
Blockly.Generator.Arduino.setupCode_["checkIaqSensorStatus"] =
"checkIaqSensorStatus();";
Blockly.Generator.Arduino.setupCode_["bsec_sensorlist"] = `
bsec_virtual_sensor_t sensorList[13] = {
BSEC_OUTPUT_IAQ,
BSEC_OUTPUT_STATIC_IAQ,
Expand Down Expand Up @@ -381,7 +381,8 @@ Blockly.Generator.Arduino.forBlock["sensebox_tof_imager"] = function () {
`;

Blockly.Generator.Arduino.preSetupCode_["Wire.begin"] = "Wire.begin();";
Blockly.Generator.Arduino.preSetupCode_["vl53l8cx_clock_address"] = `sensor_vl53l8cx.set_i2c_address(0x51); // need to change address, because default address is shared with other sensor`;
Blockly.Generator.Arduino.preSetupCode_["vl53l8cx_clock_address"] =
`sensor_vl53l8cx.set_i2c_address(0x51); // need to change address, because default address is shared with other sensor`;

Blockly.Generator.Arduino.setupCode_["setup_vl53l8cx"] = `
Wire.setClock(1000000); // vl53l8cx can operate at 1MHz
Expand Down Expand Up @@ -916,6 +917,27 @@ Blockly.Generator.Arduino.forBlock["sensebox_soundsensor_dfrobot"] =
return [code, Blockly.Generator.Arduino.ORDER_ATOMIC];
};

/**
* rg15 rainsensor
*/

Blockly.Generator.Arduino.forBlock["sensebox_rg15_rainsensor"] = function () {
var port = this.getFieldValue("SERIAL");
var value = this.getFieldValue("VALUE");
Blockly.Generator.Arduino.libraries_["library_senseBoxIO"] =
"#include <senseBoxIO.h>";
Blockly.Generator.Arduino.libraries_["library_rg15"] = "#include <RG15.h>";
Blockly.Generator.Arduino.definitions_["def_rg15_rainsensor_" + port] =
"RG15 rg15_" + port + "(" + port + ");";
Blockly.Generator.Arduino.setupCode_["setup_rg15_rainsensor_" + port] =
"rg15_" + port + ".begin();";
Blockly.Generator.Arduino.loopCodeOnce_["loop_rg15_rainsensor_" + port] =
"rg15_" + port + ".poll();";

var code = "rg15_" + port + "." + value + "()";
return [code, Blockly.Generator.Arduino.ORDER_ATOMIC];
};

/**
* Infineon DPS310 Pressure Sensor
*
Expand Down
42 changes: 30 additions & 12 deletions src/components/Blockly/msg/de/sensebox-sensors.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,8 @@ export const SENSORS = {
senseBox_sensor_dps310: "Luftdruck-/Temperatursensor (DPS310)",
senseBox_sensor_dps310_tooltip:
"Schließe den Sensor an einen der **I2C-Anschlüsse** an. Der Sensor gibt dir den Messwert für den Luftdruck in hPa. Um die korrekte Höhe über NN zu berechnen benötigt der Sensor einen aktuellen Referenzwert.",
senseBox_sensor_dps310_helpurl: "https://docs.sensebox.de/docs/hardware/sensors/luftdruck-temperatur",
senseBox_sensor_dps310_helpurl:
"https://docs.sensebox.de/docs/hardware/sensors/luftdruck-temperatur",

/**
* Mikro
Expand Down Expand Up @@ -116,7 +117,8 @@ Wenn die maximale Distanz überschritten wird, wird ein Wert von **O** ausgegebe

**Beachte:** Das GPS Modul benöigt beim ersten Verwenden relativ lange (ca. 5-10 Minuten) bis es deinen Standort gefunden hat!
`,
senseBox_gps_helpurl: "https://docs.sensebox.de/docs/hardware/accessoires/gps/",
senseBox_gps_helpurl:
"https://docs.sensebox.de/docs/hardware/accessoires/gps/",

/**
* Windspeed
Expand All @@ -132,10 +134,24 @@ Wenn die maximale Distanz überschritten wird, wird ein Wert von **O** ausgegebe
"Schließe den Sensor an einen der **Digital/Analog Ports** an. Der Sensor gibt dir den Messwert in dB mit einer Nachkommastelle",
senseBox_soundsensor_dfrobot_helpurl:
"https://docs.sensebox.de/hardware/sensoren-lautstaerke/",

/*
* BME680
* rg15 rainsensor
*/
sensebox_rg15_rainsensor: "Regensensor (RG-15)",
sensebox_rg15_rainsensor_port: "Serieller Port:",
sensebox_rg15_rainsensor_value: "Messwert:",
sensebox_rg15_rainsensor_totalAcc: "gesamter Niederschlag in mm",
sensebox_rg15_rainsensor_rainInt: "Niederschlagsintensität in mm/h",
sensebox_rg15_rainsensor_eventAcc: "Niederschlag pro Event in mm",
sensebox_rg15_rainsensor_acc: "Niederschlag seit letzter Messung in mm",
sensebox_rg15_rainsensor_tooltip:
"Regensensor (RG-15) an einen der Seriellen Ports anschließen.",
sensebox_rg15_rainsensor_helpurl: "https://rainsensors.com/products/rg-15/",

/*
* BME680
*/
senseBox_bme680: "Umweltsensor (BME680)",
senseBox_bme_iaq: "Innenraumluftqualität (IAQ)",
senseBox_bme_iaq_accuracy: "Kalibrierungswert",
Expand Down Expand Up @@ -224,16 +240,17 @@ Die Messwerte für Temperatur, Luftfeuchtigkeit und Luftdruck können direkt ver
senseBox_esp32_photodiode: "Lichtintensität",
senseBox_esp32_photodiode_tooltip:
"Die Photodiode misst Lichtintensität. Der ausgegebene Wert ist eine **Ganzzahl** zwischen 0 und 4095. Je höher der Wert, desto heller ist die Umgebung.",
senseBox_esp32_photodiode_helpurl:"https://docs.sensebox.de/docs/hardware/sensors/photodiode",

/**
* MPU6050 */
senseBox_mpu6050_tooltip: "Der MPU6050 ist ein Beschleunigungs- und Gyroskopsensor. Schließe den Sensor an einen der I2C Anschlüsse an. Der Sensor gibt dir die Beschleunigung in m/s² und die Winkelgeschwindigkeit in °/s zurück.",
senseBox_mpu6050_helpurl:"https://docs.sensebox.de/docs/hardware/sensors/mpu6050/",

senseBox_esp32_photodiode_helpurl:
"https://docs.sensebox.de/docs/hardware/sensors/photodiode",

/**
* MPU6050 */
senseBox_mpu6050_tooltip:
"Der MPU6050 ist ein Beschleunigungs- und Gyroskopsensor. Schließe den Sensor an einen der I2C Anschlüsse an. Der Sensor gibt dir die Beschleunigung in m/s² und die Winkelgeschwindigkeit in °/s zurück.",
senseBox_mpu6050_helpurl:
"https://docs.sensebox.de/docs/hardware/sensors/mpu6050/",

/**
/**
* ToF Imager
*
*/
Expand All @@ -244,5 +261,6 @@ Die Messwerte für Temperatur, Luftfeuchtigkeit und Luftdruck können direkt ver
sensebox_distance_bitmap: "8x8 Distanzen als Bitmap (für LED-Matrix)",
sensebox_tof_imager_max_distance: "Maximal messbare Distanz ",
sensebox_tof_imager_max_distance_unit: "cm",
sensebox_tof_imager_helpurl: "https://docs.sensebox.de/docs/hardware/sensors/tof",
sensebox_tof_imager_helpurl:
"https://docs.sensebox.de/docs/hardware/sensors/tof",
};
16 changes: 16 additions & 0 deletions src/components/Blockly/msg/en/sensebox-sensors.js
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,22 @@ If the max distance is reached the a value of **O** will be returned`,
senseBox_soundsensor_dfrobot_helpurl:
"https://en.docs.sensebox.de/hardware/sensoren-lautstaerke/",

/*
* rg15 rainsensor
*/
sensebox_rg15_rainsensor: "Rainsensor (RG-15)",
sensebox_rg15_rainsensor_port: "Serial Port:",
sensebox_rg15_rainsensor_serial1: "Serial1",
sensebox_rg15_rainsensor_serial2: "Serial2",
sensebox_rg15_rainsensor_value: "value:",
sensebox_rg15_rainsensor_totalAcc: "total Accumulation in mm",
sensebox_rg15_rainsensor_rainInt: "Rainfall Intensity in mm/h",
sensebox_rg15_rainsensor_eventAcc: "Accumulation per Event in mm",
sensebox_rg15_rainsensor_acc: "Accumulation since last loop in mm",
sensebox_rg15_rainsensor_tooltip:
"Connect Rainsensor (RG-15) to one of the Serial ports.",
sensebox_rg15_rainsensor_helpurl: "https://rainsensors.com/products/rg-15/",

/*
* BME680
*/
Expand Down
1 change: 1 addition & 0 deletions src/components/Blockly/toolbox/ToolboxMcu.js
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ export const ToolboxMcu = () => {
<Block type="sensebox_button" />
<Block type="sensebox_sensor_truebner_smt50" />
<Block type="sensebox_sensor_watertemperature" />
<Block type="sensebox_rg15_rainsensor" />
{/* <Block type="sensebox_windspeed" /> */}
<Block type="sensebox_soundsensor_dfrobot" />
<Block type="sensebox_multiplexer_init">
Expand Down