From e44cab49fb5cbb6bc4f76eff7d15abc28823af04 Mon Sep 17 00:00:00 2001 From: Mario Pesch Date: Mon, 7 Feb 2022 12:38:58 +0100 Subject: [PATCH] add cayenne concentration block --- .../Blockly/blocks/sensebox-lora.js | 20 +++- .../Blockly/generator/sensebox-lora.js | 9 ++ .../Blockly/msg/de/sensebox-lora.js | 91 +++++++++++-------- .../Blockly/msg/en/sensebox-lora.js | 89 +++++++++--------- src/components/Blockly/toolbox/Toolbox.js | 1 + 5 files changed, 125 insertions(+), 85 deletions(-) diff --git a/src/components/Blockly/blocks/sensebox-lora.js b/src/components/Blockly/blocks/sensebox-lora.js index df75ec6..00af880 100644 --- a/src/components/Blockly/blocks/sensebox-lora.js +++ b/src/components/Blockly/blocks/sensebox-lora.js @@ -158,7 +158,7 @@ Blockly.Blocks["sensebox_lora_ttn_mapper"] = { this.appendValueInput("Fix Type").appendField("Fix Type").setCheck(null); this.setPreviousStatement(true, null); this.setNextStatement(true, null); - this.setTooltip(Blockly.Msg.senseBox_display_printDisplay_tip); + this.setTooltip(Blockly.Msg.sensebox_lora_ttn_mapper_tip); }, }; @@ -299,3 +299,21 @@ Blockly.Blocks["sensebox_lora_cayenne_gps"] = { }, LOOP_TYPES: ["sensebox_lora_cayenne_send"], }; + +Blockly.Blocks["sensebox_lora_cayenne_concentration"] = { + init: function () { + this.setTooltip(Blockly.Msg.senseBox_LoRa_cayenne_concentration_tip); + this.setHelpUrl(""); + this.setColour(getColour().sensebox); + this.appendValueInput("Value").appendField( + Blockly.Msg.senseBox_LoRa_cayenne_concentration + ); + this.appendDummyInput() + .setAlign(Blockly.ALIGN_LEFT) + .appendField(Blockly.Msg.senseBox_LoRa_cayenne_channel) + .appendField(new Blockly.FieldTextInput("1"), "CHANNEL"); + this.setPreviousStatement(true, null); + this.setNextStatement(true, null); + }, + LOOP_TYPES: ["sensebox_lora_cayenne_send"], +}; diff --git a/src/components/Blockly/generator/sensebox-lora.js b/src/components/Blockly/generator/sensebox-lora.js index dc4b1c2..c6b2394 100644 --- a/src/components/Blockly/generator/sensebox-lora.js +++ b/src/components/Blockly/generator/sensebox-lora.js @@ -523,3 +523,12 @@ Blockly.Arduino.sensebox_lora_cayenne_gps = function (block) { var code = `lpp.addGPS(${channel}, ${lat}, ${lng}, ${alt});\n`; return code; }; + +Blockly.Arduino.sensebox_lora_cayenne_concentration = function (block) { + var value = + Blockly.Arduino.valueToCode(this, "Value", Blockly.Arduino.ORDER_ATOMIC) || + 0; + var channel = this.getFieldValue("CHANNEL"); + var code = `lpp.addConcentration(${channel}, ${value});\n`; + return code; +}; diff --git a/src/components/Blockly/msg/de/sensebox-lora.js b/src/components/Blockly/msg/de/sensebox-lora.js index bb82897..8b25306 100644 --- a/src/components/Blockly/msg/de/sensebox-lora.js +++ b/src/components/Blockly/msg/de/sensebox-lora.js @@ -1,44 +1,57 @@ export const LORA = { - /* - * LoRa Blöcke - */ + /* + * LoRa Blöcke + */ - senseBox_LoRa_connect: "Zu TTN senden", - senseBox_LoRa_device_id: "Device EUI (lsb)", - senseBox_LoRa_app_id: "Application EUI (lsb)", - senseBox_LoRa_app_key: "App Key (msb)", - senseBox_LoRa_nwskey_id: "Network Session Key (msb)", - senseBox_LoRa_appskey_id: "App Session Key (msb)", - senseBox_LoRa_devaddr_id: "Device Adress", - senseBox_LoRa_interval: "Intervall in Minuten", - senseBox_measurement: "Messung", - senseBox_measurements: "Messungen", + senseBox_LoRa_connect: "Zu TTN senden", + senseBox_LoRa_device_id: "Device EUI (lsb)", + senseBox_LoRa_app_id: "Application EUI (lsb)", + senseBox_LoRa_app_key: "App Key (msb)", + senseBox_LoRa_nwskey_id: "Network Session Key (msb)", + senseBox_LoRa_appskey_id: "App Session Key (msb)", + senseBox_LoRa_devaddr_id: "Device Adress", + senseBox_LoRa_interval: "Intervall in Minuten", + senseBox_measurement: "Messung", + senseBox_measurements: "Messungen", - senseBox_LoRa_send_message: "Sende als Lora Nachricht", - senseBox_LoRa_send_cayenne: "Sende als Cayenne Nachricht", - senseBox_LoRa_cayenne_temperature: "Temperatur", - senseBox_LoRa_cayenne_channel: "Kanal", - senseBox_LoRa_cayenne_humidity: "Luftfeuchtigkeit", - senseBox_LoRa_cayenne_pressure: "Luftdruck", - senseBox_LoRa_cayenne_luminosity: "Helligkeit", - senseBox_LoRa_cayenne_analog: "Analoger Wert", - senseBox_LoRa_cayenne_x: "X Wert", - senseBox_LoRa_cayenne_y: "Y Wert", - senseBox_LoRa_cayenne_z: "Z Wert", - senseBox_LoRa_cayenne_lat: "Breitengrad", - senseBox_LoRa_cayenne_lng: "Längengrad", - senseBox_LoRa_cayenne_alt: "Höhe", + senseBox_LoRa_send_message: "Sende als Lora Nachricht", + senseBox_LoRa_send_cayenne: "Sende als Cayenne Nachricht", + senseBox_LoRa_cayenne_temperature: "Temperatur", + senseBox_LoRa_cayenne_channel: "Kanal", + senseBox_LoRa_cayenne_humidity: "Luftfeuchtigkeit", + senseBox_LoRa_cayenne_pressure: "Luftdruck", + senseBox_LoRa_cayenne_luminosity: "Helligkeit", + senseBox_LoRa_cayenne_analog: "Analoger Wert", + senseBox_LoRa_cayenne_x: "X Wert", + senseBox_LoRa_cayenne_y: "Y Wert", + senseBox_LoRa_cayenne_z: "Z Wert", + senseBox_LoRa_cayenne_lat: "Breitengrad", + senseBox_LoRa_cayenne_lng: "Längengrad", + senseBox_LoRa_cayenne_alt: "Höhe", + senseBox_LoRa_cayenne_concentration: "Konzentration", - senseBox_LoRa_cayenne_tip: "Sende Daten als Cayenne Payload Format", - senseBox_LoRa_cayenne_gps_tip: "Sende GPS", - senseBox_LoRa_cayenne_temperature_tip: "Sendet Temperaturwert mit einer Nachkommastelle", - senseBox_LoRa_cayenne_pressure_tip: "Sendet Luftdruck mit einer Nachkommastelle", - senseBox_LoRa_cayenne_luminosity_tip: "Sendet Helligkeitswert", - senseBox_LoRa_cayenne_analog_tip: "Sendet einen Dezimalwert mit einer Nachkommastelle", + senseBox_LoRa_cayenne_tip: "Sende Daten als Cayenne Payload Format", + senseBox_LoRa_cayenne_gps_tip: "Sende GPS", + senseBox_LoRa_cayenne_temperature_tip: + "Sendet Temperaturwert mit einer Nachkommastelle", + senseBox_LoRa_cayenne_pressure_tip: + "Sendet Luftdruck mit einer Nachkommastelle", + senseBox_LoRa_cayenne_luminosity_tip: "Sendet Helligkeitswert", + senseBox_LoRa_cayenne_analog_tip: + "Sendet einen Dezimalwert mit einer Nachkommastelle", - senseBox_LoRa_message_tooltip: "Sende eine Nachricht über LoRa", - senseBox_LoRa_sensor_tip: "Sende einen Sensorwert mit einer bestimmten Anzahl an Bytes", - senseBox_LoRa_init_abp_tooltip: "Initialisiere die LoRa übertragung. Die Aktivierung erfolgt über ABP. Registriere eine Application auf [thethingsnetwork](https://thethingsnetwork.com) und kopiere den **Network Session Key** und den **App Session Key** im **msb Format** und die **Device ID** im **hex Format**.", - senseBox_LoRa_init_helpurl: "https://docs.sensebox.de/blockly/blockly-web-lora/", - senseBox_LoRa_init_otaa_tooltip: "Initialisiere die LoRa übertragung. Die Aktivierung erfolgt über OTAA. Registriere eine Application auf [thethingsnetwork](https://thethingsnetwork.com) und kopiere die **DEVICE EUI** und die **Application EUI** im **lsb Format** den **App Key** im **msb Format**.", -} \ No newline at end of file + senseBox_LoRa_cayenne_concentration_tip: "Sendet eine Konzentration in PPM", + + senseBox_LoRa_message_tooltip: "Sende eine Nachricht über LoRa", + senseBox_LoRa_sensor_tip: + "Sende einen Sensorwert mit einer bestimmten Anzahl an Bytes", + senseBox_LoRa_init_abp_tooltip: + "Initialisiere die LoRa übertragung. Die Aktivierung erfolgt über ABP. Registriere eine Application auf [thethingsnetwork](https://thethingsnetwork.com) und kopiere den **Network Session Key** und den **App Session Key** im **msb Format** und die **Device ID** im **hex Format**.", + senseBox_LoRa_init_helpurl: + "https://docs.sensebox.de/blockly/blockly-web-lora/", + senseBox_LoRa_init_otaa_tooltip: + "Initialisiere die LoRa übertragung. Die Aktivierung erfolgt über OTAA. Registriere eine Application auf [thethingsnetwork](https://thethingsnetwork.com) und kopiere die **DEVICE EUI** und die **Application EUI** im **lsb Format** den **App Key** im **msb Format**.", + + sensebox_lora_ttn_mapper_tip: + "Mit einem TTN Mapper kannst du die LoRa-Netzabdeckung in deiner Umgebung aufzeichnen. Die Daten werden dann auf [ttnmaper](https://ttnmapper.org) angezeigt.", +}; diff --git a/src/components/Blockly/msg/en/sensebox-lora.js b/src/components/Blockly/msg/en/sensebox-lora.js index a5c1b45..9eaf394 100644 --- a/src/components/Blockly/msg/en/sensebox-lora.js +++ b/src/components/Blockly/msg/en/sensebox-lora.js @@ -1,51 +1,50 @@ export const LORA = { - /* - * LoRa Blöcke - */ + /* + * LoRa Blöcke + */ + senseBox_LoRa_connect: "Send to TTN", + senseBox_LoRa_device_id: "Device EUI (lsb)", + senseBox_LoRa_app_id: "Application EUI (lsb)", + senseBox_LoRa_app_key: "App Key (msb)", + senseBox_LoRa_nwskey_id: "Network Session Key (msb)", + senseBox_LoRa_appskey_id: "App Session Key (msb)", + senseBox_LoRa_devaddr_id: "Device Adress", + senseBox_LoRa_interval: "Transmission interval in minutes", + senseBox_measurement: "Messung", + senseBox_measurements: "Messungen", - senseBox_LoRa_connect: "Send to TTN", - senseBox_LoRa_device_id: "Device EUI (lsb)", - senseBox_LoRa_app_id: "Application EUI (lsb)", - senseBox_LoRa_app_key: "App Key (msb)", - senseBox_LoRa_nwskey_id: "Network Session Key (msb)", - senseBox_LoRa_appskey_id: "App Session Key (msb)", - senseBox_LoRa_devaddr_id: "Device Adress", - senseBox_LoRa_interval: "Transmission interval in minutes", - senseBox_measurement: "Messung", - senseBox_measurements: "Messungen", - - senseBox_LoRa_send_message: "Send as Lora Message", - senseBox_LoRa_send_cayenne: "Send as Cayenne Payload", - senseBox_LoRa_cayenne_temperature: "Temperature", - senseBox_LoRa_cayenne_channel: "Channel", - senseBox_LoRa_cayenne_humidity: "Humidity", - senseBox_LoRa_cayenne_pressure: "Pressure", - senseBox_LoRa_cayenne_luminosity: "Luminosity", - senseBox_LoRa_cayenne_analog: "Analog Value", - senseBox_LoRa_cayenne_x: "X Value", - senseBox_LoRa_cayenne_y: "Y Value", - senseBox_LoRa_cayenne_z: "Z Value", - senseBox_LoRa_cayenne_lat: "Latitude", - senseBox_LoRa_cayenne_lng: "Longitude", - senseBox_LoRa_cayenne_alt: "Altitude", - - senseBox_LoRa_cayenne_humidity_tip: "Send temperature with one decimal", - senseBox_LoRa_cayenne_tip: "Send Data as Cayenne Payload Format", - senseBox_LoRa_cayenne_gps_tip: "Send GPS Data", - senseBox_LoRa_cayenne_temperature_tip: "Send temperature with one decimal", - senseBox_LoRa_cayenne_pressure_tip: "Send pressure with one decimal", - senseBox_LoRa_cayenne_luminosity_tip: "Send luminosity without any decimals", - senseBox_LoRa_cayenne_analog_tip: "Send a value with one decimal", - - senseBox_LoRa_message_tooltip: "Send a message with LoRa", - senseBox_LoRa_sensor_tip: "Send a value with a specific number of bytes", - senseBox_LoRa_init_abp_tooltip: "Initialize the LoRa transmission. The activation is done via ABP. Register an application on [thethingsnetwork](https://thethingsnetwork.com) and copy the **Network Session Key** and the **App Session Key** in **msb format** and the **Device ID** in **hex format**.", - senseBox_LoRa_init_helpurl: "https://en.docs.sensebox.de/blockly/blockly-web-lora/", - - senseBox_LoRa_init_otaa_tooltip: "Initialize the LoRa transmission. The activation is done via OTAA. Register an application on [thethingsnetwork](https://thethingsnetwork.com) and copy the **DEVICE EUI** and the **Application EUI** in **lsb format** the **App Key** in **msb format**.", - -} + senseBox_LoRa_send_message: "Send as Lora Message", + senseBox_LoRa_send_cayenne: "Send as Cayenne Payload", + senseBox_LoRa_cayenne_temperature: "Temperature", + senseBox_LoRa_cayenne_channel: "Channel", + senseBox_LoRa_cayenne_humidity: "Humidity", + senseBox_LoRa_cayenne_pressure: "Pressure", + senseBox_LoRa_cayenne_luminosity: "Luminosity", + senseBox_LoRa_cayenne_analog: "Analog Value", + senseBox_LoRa_cayenne_x: "X Value", + senseBox_LoRa_cayenne_y: "Y Value", + senseBox_LoRa_cayenne_z: "Z Value", + senseBox_LoRa_cayenne_lat: "Latitude", + senseBox_LoRa_cayenne_lng: "Longitude", + senseBox_LoRa_cayenne_alt: "Altitude", + senseBox_LoRa_cayenne_concentration: "Concentration", + senseBox_LoRa_cayenne_humidity_tip: "Send temperature with one decimal", + senseBox_LoRa_cayenne_tip: "Send Data as Cayenne Payload Format", + senseBox_LoRa_cayenne_gps_tip: "Send GPS Data", + senseBox_LoRa_cayenne_temperature_tip: "Send temperature with one decimal", + senseBox_LoRa_cayenne_pressure_tip: "Send pressure with one decimal", + senseBox_LoRa_cayenne_luminosity_tip: "Send luminosity without any decimals", + senseBox_LoRa_cayenne_analog_tip: "Send a value with one decimal", + senseBox_LoRa_message_tooltip: "Send a message with LoRa", + senseBox_LoRa_sensor_tip: "Send a value with a specific number of bytes", + senseBox_LoRa_init_abp_tooltip: + "Initialize the LoRa transmission. The activation is done via ABP. Register an application on [thethingsnetwork](https://thethingsnetwork.com) and copy the **Network Session Key** and the **App Session Key** in **msb format** and the **Device ID** in **hex format**.", + senseBox_LoRa_init_helpurl: + "https://en.docs.sensebox.de/blockly/blockly-web-lora/", + senseBox_LoRa_init_otaa_tooltip: + "Initialize the LoRa transmission. The activation is done via OTAA. Register an application on [thethingsnetwork](https://thethingsnetwork.com) and copy the **DEVICE EUI** and the **Application EUI** in **lsb format** the **App Key** in **msb format**.", +}; diff --git a/src/components/Blockly/toolbox/Toolbox.js b/src/components/Blockly/toolbox/Toolbox.js index b0359eb..275af4d 100644 --- a/src/components/Blockly/toolbox/Toolbox.js +++ b/src/components/Blockly/toolbox/Toolbox.js @@ -376,6 +376,7 @@ class Toolbox extends React.Component { +