parent
6b12c501a0
commit
21d282ee1b
@ -1,4 +1,36 @@
|
||||
import * as Blockly from "blockly/core";
|
||||
import { getColour } from "../helpers/colour";
|
||||
import * as Types from "../helpers/types";
|
||||
|
||||
Blockly.Blocks["sensebox_multiplexer_init"] = {
|
||||
init: function () {
|
||||
this.appendDummyInput().appendField(Blockly.Msg.senseBox_multiplexer_init);
|
||||
this.appendValueInput("nrChannels").setCheck(
|
||||
Types.getCompatibleTypes("int")
|
||||
);
|
||||
this.appendDummyInput().appendField(
|
||||
Blockly.Msg.senseBox_multplexer_nchannels
|
||||
);
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
this.setInputsInline("true");
|
||||
this.setColour(getColour().sensebox);
|
||||
this.setTooltip(Blockly.Msg.senseBox_multiplexer_init_tooltip);
|
||||
this.setHelpUrl(Blockly.Msg.senseBox_multiplexer_init_helpurl);
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
|
||||
Blockly.Blocks["sensebox_multiplexer_changeChannel"] = {
|
||||
init: function () {
|
||||
this.appendDummyInput().appendField(
|
||||
Blockly.Msg.senseBox_multiplexer_changeChannel
|
||||
);
|
||||
this.appendValueInput("Channel").setCheck(Types.getCompatibleTypes("int"));
|
||||
this.setInputsInline("true");
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
this.setColour(getColour().sensebox);
|
||||
this.setTooltip(Blockly.Msg.sensebox_multiplexer_changeChannel_tooltip);
|
||||
this.setHelpUrl(Blockly.Msg.sensebox_multiplexer_changeChannel_helpurl);
|
||||
},
|
||||
};
|
||||
|
@ -1,24 +1,23 @@
|
||||
import './generator';
|
||||
import './loops';
|
||||
import './sensebox-sensors';
|
||||
import './sensebox-telegram';
|
||||
import './sensebox-osem';
|
||||
import './sensebox-web';
|
||||
import './sensebox-display';
|
||||
import './sensebox-lora';
|
||||
import './sensebox-led';
|
||||
import './sensebox-sd';
|
||||
import './mqtt';
|
||||
import './logic';
|
||||
import './text';
|
||||
import './math';
|
||||
import './map';
|
||||
import './io';
|
||||
import './audio';
|
||||
import './procedures';
|
||||
import './time';
|
||||
import './variables';
|
||||
import './lists';
|
||||
import './webserver';
|
||||
|
||||
|
||||
import "./generator";
|
||||
import "./loops";
|
||||
import "./sensebox-sensors";
|
||||
import "./sensebox-telegram";
|
||||
import "./sensebox-osem";
|
||||
import "./sensebox-web";
|
||||
import "./sensebox-display";
|
||||
import "./sensebox-lora";
|
||||
import "./sensebox-led";
|
||||
import "./sensebox-sd";
|
||||
import "./sensebox";
|
||||
import "./mqtt";
|
||||
import "./logic";
|
||||
import "./text";
|
||||
import "./math";
|
||||
import "./map";
|
||||
import "./io";
|
||||
import "./audio";
|
||||
import "./procedures";
|
||||
import "./time";
|
||||
import "./variables";
|
||||
import "./lists";
|
||||
import "./webserver";
|
||||
|
@ -1,3 +1,38 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
import { Block } from 'blockly';
|
||||
import * as Blockly from "blockly/core";
|
||||
|
||||
/*
|
||||
* Multiplexer
|
||||
*/
|
||||
Blockly.Arduino.sensebox_multiplexer_init = function () {
|
||||
// Blockly.Arduino.libraries_['library_spi'] = '#include <SPI.h>';
|
||||
var nrChannels =
|
||||
Blockly.Arduino.valueToCode(
|
||||
this,
|
||||
"nrChannels",
|
||||
Blockly.Arduino.ORDER_ATOMIC
|
||||
) | 0;
|
||||
var array = [];
|
||||
for (var i = 0; i < nrChannels; i++) {
|
||||
array.push(i);
|
||||
}
|
||||
Blockly.Arduino.libraries_["library_wire"] = "#include <Wire.h>";
|
||||
Blockly.Arduino.definitions_[
|
||||
"define_multiplexer"
|
||||
] = `byte multiplexAddress = 0x77;
|
||||
byte channels[] = {${array}};`;
|
||||
// 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_multiplexer_changeChannel = function () {
|
||||
var channel = Blockly.Arduino.valueToCode(
|
||||
this,
|
||||
"Channel",
|
||||
Blockly.Arduino.ORDER_ATOMIC
|
||||
);
|
||||
var code = `Wire.beginTransmission(0x77);
|
||||
Wire.write(1 << channels[${channel - 1}]);
|
||||
Wire.endTransmission();`;
|
||||
return code;
|
||||
};
|
||||
|
@ -1,48 +1,49 @@
|
||||
|
||||
import { AUDIO } from './de/audio';
|
||||
import { FAQ } from './de/faq';
|
||||
import { IO } from './de/io';
|
||||
import { LOGIC } from './de/logic';
|
||||
import { LOOPS } from './de/loops';
|
||||
import { MATH } from './de/math';
|
||||
import { MQTT } from './de/mqtt';
|
||||
import { DISPLAY } from './de/sensebox-display';
|
||||
import { LED } from './de/sensebox-led';
|
||||
import { LORA } from './de/sensebox-lora';
|
||||
import { OSEM } from './de/sensebox-osem';
|
||||
import { SD } from './de/sensebox-sd';
|
||||
import { SENSORS } from './de/sensebox-sensors';
|
||||
import { TELEGRAM } from './de/sensebox-telegram';
|
||||
import { WEB } from './de/sensebox-web';
|
||||
import { TEXT } from './de/text';
|
||||
import { TIME } from './de/time';
|
||||
import { TOURS } from './de/tours';
|
||||
import { TRANSLATIONS } from './de/translations';
|
||||
import { UI } from './de/ui';
|
||||
import { VARIABLES } from './de/variables';
|
||||
import { WEBSERVER } from './de/webserver';
|
||||
import { AUDIO } from "./de/audio";
|
||||
import { FAQ } from "./de/faq";
|
||||
import { IO } from "./de/io";
|
||||
import { LOGIC } from "./de/logic";
|
||||
import { LOOPS } from "./de/loops";
|
||||
import { MATH } from "./de/math";
|
||||
import { MQTT } from "./de/mqtt";
|
||||
import { DISPLAY } from "./de/sensebox-display";
|
||||
import { LED } from "./de/sensebox-led";
|
||||
import { LORA } from "./de/sensebox-lora";
|
||||
import { OSEM } from "./de/sensebox-osem";
|
||||
import { SD } from "./de/sensebox-sd";
|
||||
import { SENSORS } from "./de/sensebox-sensors";
|
||||
import { SENSEBOX } from "./de/sensebox";
|
||||
import { TELEGRAM } from "./de/sensebox-telegram";
|
||||
import { WEB } from "./de/sensebox-web";
|
||||
import { TEXT } from "./de/text";
|
||||
import { TIME } from "./de/time";
|
||||
import { TOURS } from "./de/tours";
|
||||
import { TRANSLATIONS } from "./de/translations";
|
||||
import { UI } from "./de/ui";
|
||||
import { VARIABLES } from "./de/variables";
|
||||
import { WEBSERVER } from "./de/webserver";
|
||||
|
||||
export const De = {
|
||||
...AUDIO,
|
||||
...FAQ,
|
||||
...IO,
|
||||
...LOGIC,
|
||||
...LOOPS,
|
||||
...MATH,
|
||||
...MQTT,
|
||||
...DISPLAY,
|
||||
...LED,
|
||||
...LORA,
|
||||
...OSEM,
|
||||
...SD,
|
||||
...SENSORS,
|
||||
...TELEGRAM,
|
||||
...WEB,
|
||||
...TEXT,
|
||||
...TIME,
|
||||
...TOURS,
|
||||
...TRANSLATIONS,
|
||||
...UI,
|
||||
...VARIABLES,
|
||||
...WEBSERVER
|
||||
}
|
||||
...AUDIO,
|
||||
...FAQ,
|
||||
...IO,
|
||||
...LOGIC,
|
||||
...LOOPS,
|
||||
...MATH,
|
||||
...MQTT,
|
||||
...DISPLAY,
|
||||
...LED,
|
||||
...LORA,
|
||||
...OSEM,
|
||||
...SD,
|
||||
...SENSORS,
|
||||
...SENSEBOX,
|
||||
...TELEGRAM,
|
||||
...WEB,
|
||||
...TEXT,
|
||||
...TIME,
|
||||
...TOURS,
|
||||
...TRANSLATIONS,
|
||||
...UI,
|
||||
...VARIABLES,
|
||||
...WEBSERVER,
|
||||
};
|
||||
|
16
src/components/Blockly/msg/de/sensebox.js
Normal file
16
src/components/Blockly/msg/de/sensebox.js
Normal file
@ -0,0 +1,16 @@
|
||||
export const SENSEBOX = {
|
||||
/**
|
||||
* Multiplexer
|
||||
*/
|
||||
senseBox_multiplexer_init: "Initialisiere Multiplexer mit ",
|
||||
senseBox_multiplexer_init_tooltip:
|
||||
"Schließe den Multiplexer mit einem JST-JST Kabel an einen der 5 I2C-Ports an. Nun kannst du bis zu 8 gleiche Sensoren verwenden über die entsprechenden Kanäle ansprechen. Gib im Block die Anzahl der verwendeten Kanäle an",
|
||||
senseBox_multiplexer_init_helpurl:
|
||||
"https://docs.sensebox.de/hardware/zubehoer-multiplexer/",
|
||||
senseBox_multplexer_nchannels: "Kanälen",
|
||||
senseBox_multiplexer_changeChannel: "Wechsel Kanal auf:",
|
||||
sensebox_multiplexer_changeChannel_tooltip:
|
||||
"Wähle den entsprechenden Kanal aus",
|
||||
sensebox_multiplexer_changeChannel_helpurl:
|
||||
"https://docs.sensebox.de/hardware/zubehoer-multiplexer/",
|
||||
};
|
@ -1,47 +1,49 @@
|
||||
import { AUDIO } from './en/audio';
|
||||
import { FAQ } from './en/faq';
|
||||
import { IO } from './en/io';
|
||||
import { LOGIC } from './en/logic';
|
||||
import { LOOPS } from './en/loops';
|
||||
import { MATH } from './en/math';
|
||||
import { MQTT } from './en/mqtt';
|
||||
import { DISPLAY } from './en/sensebox-display';
|
||||
import { LED } from './en/sensebox-led';
|
||||
import { LORA } from './en/sensebox-lora';
|
||||
import { OSEM } from './en/sensebox-osem';
|
||||
import { SD } from './en/sensebox-sd';
|
||||
import { SENSORS } from './en/sensebox-sensors';
|
||||
import { TELEGRAM } from './en/sensebox-telegram';
|
||||
import { WEB } from './en/sensebox-web';
|
||||
import { TEXT } from './en/text';
|
||||
import { TIME } from './en/time';
|
||||
import { TOURS } from './en/tours';
|
||||
import { TRANSLATIONS } from './en/translations';
|
||||
import { UI } from './en/ui';
|
||||
import { VARIABLES } from './en/variables';
|
||||
import { WEBSERVER } from './en/webserver';
|
||||
import { AUDIO } from "./en/audio";
|
||||
import { FAQ } from "./en/faq";
|
||||
import { IO } from "./en/io";
|
||||
import { LOGIC } from "./en/logic";
|
||||
import { LOOPS } from "./en/loops";
|
||||
import { MATH } from "./en/math";
|
||||
import { MQTT } from "./en/mqtt";
|
||||
import { SENSEBOX } from "./en/sensebox";
|
||||
import { DISPLAY } from "./en/sensebox-display";
|
||||
import { LED } from "./en/sensebox-led";
|
||||
import { LORA } from "./en/sensebox-lora";
|
||||
import { OSEM } from "./en/sensebox-osem";
|
||||
import { SD } from "./en/sensebox-sd";
|
||||
import { SENSORS } from "./en/sensebox-sensors";
|
||||
import { TELEGRAM } from "./en/sensebox-telegram";
|
||||
import { WEB } from "./en/sensebox-web";
|
||||
import { TEXT } from "./en/text";
|
||||
import { TIME } from "./en/time";
|
||||
import { TOURS } from "./en/tours";
|
||||
import { TRANSLATIONS } from "./en/translations";
|
||||
import { UI } from "./en/ui";
|
||||
import { VARIABLES } from "./en/variables";
|
||||
import { WEBSERVER } from "./en/webserver";
|
||||
|
||||
export const En = {
|
||||
...AUDIO,
|
||||
...FAQ,
|
||||
...IO,
|
||||
...LOGIC,
|
||||
...LOOPS,
|
||||
...MATH,
|
||||
...MQTT,
|
||||
...DISPLAY,
|
||||
...LED,
|
||||
...LORA,
|
||||
...OSEM,
|
||||
...SD,
|
||||
...SENSORS,
|
||||
...TELEGRAM,
|
||||
...WEB,
|
||||
...TEXT,
|
||||
...TIME,
|
||||
...TOURS,
|
||||
...TRANSLATIONS,
|
||||
...UI,
|
||||
...VARIABLES,
|
||||
...WEBSERVER
|
||||
}
|
||||
...AUDIO,
|
||||
...FAQ,
|
||||
...IO,
|
||||
...LOGIC,
|
||||
...LOOPS,
|
||||
...MATH,
|
||||
...MQTT,
|
||||
...DISPLAY,
|
||||
...LED,
|
||||
...LORA,
|
||||
...OSEM,
|
||||
...SD,
|
||||
...SENSORS,
|
||||
...SENSEBOX,
|
||||
...TELEGRAM,
|
||||
...WEB,
|
||||
...TEXT,
|
||||
...TIME,
|
||||
...TOURS,
|
||||
...TRANSLATIONS,
|
||||
...UI,
|
||||
...VARIABLES,
|
||||
...WEBSERVER,
|
||||
};
|
||||
|
16
src/components/Blockly/msg/en/sensebox.js
Normal file
16
src/components/Blockly/msg/en/sensebox.js
Normal file
@ -0,0 +1,16 @@
|
||||
export const SENSEBOX = {
|
||||
/**
|
||||
* Multiplexer
|
||||
*/
|
||||
senseBox_multiplexer_init: "Initialise Multiplexer with ",
|
||||
senseBox_multiplexer_init_tooltip:
|
||||
"Connect the multiplexer with a JST-JST cable to one of the 5 I2C ports. Now you can use up to 8 sensors of the same type and address them via the corresponding channels. Enter the number of used channels in the block",
|
||||
senseBox_multiplexer_init_helpurl:
|
||||
"https://en.docs.sensebox.de/hardware/zubehoer-multiplexer/",
|
||||
senseBox_multplexer_nchannels: "Channels",
|
||||
senseBox_multiplexer_changeChannel: "Change active channel to:",
|
||||
sensebox_multiplexer_changeChannel_tooltip:
|
||||
"Changes the active channel to the selected number",
|
||||
sensebox_multiplexer_changeChannel_helpurl:
|
||||
"https://en.docs.sensebox.de/hardware/zubehoer-multiplexer/",
|
||||
};
|
@ -75,6 +75,20 @@ class Toolbox extends React.Component {
|
||||
<Block type="sensebox_sensor_watertemperature" />
|
||||
{/* <Block type="sensebox_windspeed" /> */}
|
||||
<Block type="sensebox_soundsensor_dfrobot" />
|
||||
<Block type="sensebox_multiplexer_init">
|
||||
<Value name="nrChannels">
|
||||
<Block type="math_number">
|
||||
<Field name="NUM">1</Field>
|
||||
</Block>
|
||||
</Value>
|
||||
</Block>
|
||||
<Block type="sensebox_multiplexer_changeChannel">
|
||||
<Value name="Channel">
|
||||
<Block type="math_number">
|
||||
<Field name="NUM">1</Field>
|
||||
</Block>
|
||||
</Value>
|
||||
</Block>
|
||||
</Category>
|
||||
<Category name="WIFI" colour={getColour().sensebox}>
|
||||
<Block type="sensebox_wifi" />
|
||||
|
@ -50,6 +50,7 @@ export class Login extends Component {
|
||||
}
|
||||
// Check for login error
|
||||
else if (message.id === "LOGIN_FAIL") {
|
||||
console.log("login fail");
|
||||
this.setState({
|
||||
email: "",
|
||||
password: "",
|
||||
|
@ -1,59 +1,69 @@
|
||||
import { MYBADGES_CONNECT, MYBADGES_DISCONNECT, USER_LOADED, USER_LOADING, AUTH_ERROR, LOGIN_SUCCESS, LOGIN_FAIL, LOGOUT_SUCCESS, LOGOUT_FAIL, REFRESH_TOKEN_SUCCESS } from '../actions/types';
|
||||
|
||||
import {
|
||||
MYBADGES_CONNECT,
|
||||
MYBADGES_DISCONNECT,
|
||||
USER_LOADED,
|
||||
USER_LOADING,
|
||||
AUTH_ERROR,
|
||||
LOGIN_SUCCESS,
|
||||
LOGIN_FAIL,
|
||||
LOGOUT_SUCCESS,
|
||||
LOGOUT_FAIL,
|
||||
REFRESH_TOKEN_SUCCESS,
|
||||
} from "../actions/types";
|
||||
|
||||
const initialState = {
|
||||
token: localStorage.getItem('token'),
|
||||
refreshToken: localStorage.getItem('refreshToken'),
|
||||
token: localStorage.getItem("token"),
|
||||
refreshToken: localStorage.getItem("refreshToken"),
|
||||
isAuthenticated: null,
|
||||
progress: true,
|
||||
user: null
|
||||
user: null,
|
||||
};
|
||||
|
||||
export default function foo(state = initialState, action){
|
||||
switch(action.type){
|
||||
export default function foo(state = initialState, action) {
|
||||
switch (action.type) {
|
||||
case USER_LOADING:
|
||||
return {
|
||||
...state,
|
||||
progress: true
|
||||
progress: true,
|
||||
};
|
||||
case USER_LOADED:
|
||||
return {
|
||||
...state,
|
||||
isAuthenticated: true,
|
||||
progress: false,
|
||||
user: action.payload
|
||||
user: action.payload,
|
||||
};
|
||||
case LOGIN_SUCCESS:
|
||||
case REFRESH_TOKEN_SUCCESS:
|
||||
localStorage.setItem('token', action.payload.token);
|
||||
localStorage.setItem('refreshToken', action.payload.refreshToken);
|
||||
localStorage.setItem("token", action.payload.token);
|
||||
localStorage.setItem("refreshToken", action.payload.refreshToken);
|
||||
return {
|
||||
...state,
|
||||
user: action.payload.user,
|
||||
token: action.payload.token,
|
||||
refreshToken: action.payload.refreshToken,
|
||||
isAuthenticated: true,
|
||||
progress: false
|
||||
progress: false,
|
||||
};
|
||||
case MYBADGES_CONNECT:
|
||||
case MYBADGES_DISCONNECT:
|
||||
return {
|
||||
...state,
|
||||
user: action.payload
|
||||
user: action.payload,
|
||||
};
|
||||
case AUTH_ERROR:
|
||||
case LOGIN_FAIL:
|
||||
case LOGOUT_SUCCESS:
|
||||
case LOGOUT_FAIL:
|
||||
localStorage.removeItem('token');
|
||||
localStorage.removeItem('refreshToken');
|
||||
localStorage.removeItem("token");
|
||||
localStorage.removeItem("refreshToken");
|
||||
return {
|
||||
...state,
|
||||
token: null,
|
||||
refreshToken: null,
|
||||
user: null,
|
||||
isAuthenticated: false,
|
||||
progress: false
|
||||
progress: false,
|
||||
};
|
||||
default:
|
||||
return state;
|
||||
|
Loading…
x
Reference in New Issue
Block a user