初始化提交
This commit is contained in:
3
boards/default_src/arduino_esp8266/.npmignore
Normal file
3
boards/default_src/arduino_esp8266/.npmignore
Normal file
@@ -0,0 +1,3 @@
|
||||
node_modules
|
||||
build
|
||||
origin
|
||||
41
boards/default_src/arduino_esp8266/blocks/ethernet.js
Normal file
41
boards/default_src/arduino_esp8266/blocks/ethernet.js
Normal file
@@ -0,0 +1,41 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
|
||||
const ETHERNET_HUE = 0;
|
||||
|
||||
//esp_now
|
||||
export const esp_now_send = {
|
||||
init: function () {
|
||||
this.appendDummyInput()
|
||||
.appendField("ESP NOW" + Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_SEND);
|
||||
this.appendValueInput("mac")
|
||||
.setCheck(null)
|
||||
.appendField(Blockly.Msg.MIXLY_ETHERNET_MAC_ADDRESS);
|
||||
this.appendValueInput("data")
|
||||
.setCheck(null)
|
||||
.appendField(Blockly.Msg.MIXLY_SD_DATA);
|
||||
this.appendStatementInput("success")
|
||||
.setCheck(null)
|
||||
.appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_SEND + Blockly.Msg.MIXLY_SUCCESS);
|
||||
this.appendStatementInput("failure")
|
||||
.setCheck(null)
|
||||
.appendField(Blockly.Msg.MIXLY_MICROPYTHON_SOCKET_SEND + Blockly.Msg.MIXLY_FAILED);
|
||||
this.setPreviousStatement(true, null);
|
||||
this.setNextStatement(true, null);
|
||||
this.setColour(ETHERNET_HUE);
|
||||
this.setTooltip("");
|
||||
this.setHelpUrl("https://randomnerdtutorials.com/esp-now-esp32-arduino-ide/");
|
||||
}
|
||||
};
|
||||
|
||||
//esp_now
|
||||
export const esp_now_receive = {
|
||||
init: function () {
|
||||
this.appendDummyInput()
|
||||
.appendField("ESP NOW" + Blockly.Msg.MQTT_subscribe2 + Blockly.Msg.MIXLY_SD_DATA);
|
||||
this.appendStatementInput("receive_data")
|
||||
.setCheck(null);
|
||||
this.setColour(ETHERNET_HUE);
|
||||
this.setTooltip("");
|
||||
this.setHelpUrl("https://randomnerdtutorials.com/esp-now-esp32-arduino-ide/");
|
||||
}
|
||||
};
|
||||
355
boards/default_src/arduino_esp8266/css/color.css
Normal file
355
boards/default_src/arduino_esp8266/css/color.css
Normal file
@@ -0,0 +1,355 @@
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(1)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/inout.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(1)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/inout2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(2)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/ctrl.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(2)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/ctrl2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(3)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/math.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(3)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/math2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(4)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/logic.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(4)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/logic2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(5)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/text.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(5)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/text2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(6)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/list.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(6)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/list2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(7)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/var.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(7)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/var2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(8)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/func.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(8)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/func2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(9)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/port.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(9)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/port2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(10)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/sensor.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(10)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/sensor2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第一个图标(未选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(11)>div:nth-child(2)>div:nth-child(1)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/motor.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第一个图标(选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(11)>div:nth-child(2)>div:nth-child(1)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/motor2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第一个图标(未选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(11)>div:nth-child(2)>div:nth-child(2)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/voice.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第一个图标(选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(11)>div:nth-child(2)>div:nth-child(2)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/voice2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第一个图标(未选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(11)>div:nth-child(2)>div:nth-child(3)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/light.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第一个图标(选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(11)>div:nth-child(2)>div:nth-child(3)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/light2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第一个图标(未选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(12)>div:nth-child(2)>div:nth-child(1)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/4Digitdisplay.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第一个图标(选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(12)>div:nth-child(2)>div:nth-child(1)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/4Digitdisplay2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第二个图标(未选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(12)>div:nth-child(2)>div:nth-child(2)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/lcd.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第二个图标(选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(12)>div:nth-child(2)>div:nth-child(2)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/lcd2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第三个图标(未选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(12)>div:nth-child(2)>div:nth-child(3)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/oled.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第三个图标(选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(12)>div:nth-child(2)>div:nth-child(3)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/oled2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第四个图标(未选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(12)>div:nth-child(2)>div:nth-child(4)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/oled.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第四个图标(选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(12)>div:nth-child(2)>div:nth-child(4)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/oled2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第五个图标(未选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(12)>div:nth-child(2)>div:nth-child(5)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/Matrix.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第五个图标(选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(12)>div:nth-child(2)>div:nth-child(5)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/Matrix2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(13)>div.blocklyTreeRow>span.blocklyTreeIcon.blocklyTreeIconNone {
|
||||
background: url('../../../../common/media/mark/comuni.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(13)>div.blocklyTreeRow.blocklyTreeSelected>span.blocklyTreeIcon.blocklyTreeIconNone {
|
||||
background: url('../../../../common/media/mark/comuni2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第1个图标(未选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(13)>div:nth-child(2)>div:nth-child(1)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第1个图标(选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(13)>div:nth-child(2)>div:nth-child(1)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第2个图标(未选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(13)>div:nth-child(2)>div:nth-child(2)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第2个图标(选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(13)>div:nth-child(2)>div:nth-child(2)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第3个图标(未选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(13)>div:nth-child(2)>div:nth-child(3)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第3个图标(选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(13)>div:nth-child(2)>div:nth-child(3)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第4个图标(未选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(13)>div:nth-child(2)>div:nth-child(4)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第4个图标(选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(13)>div:nth-child(2)>div:nth-child(4)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/comuni2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(14)>div.blocklyTreeRow>span.blocklyTreeIcon.blocklyTreeIconNone {
|
||||
background: url('../../../../common/media/mark/store.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(14)>div.blocklyTreeRow.blocklyTreeSelected>span.blocklyTreeIcon.blocklyTreeIconNone {
|
||||
background: url('../../../../common/media/mark/store2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第一个图标(未选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(14)>div:nth-child(2)>div:nth-child(1)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/store.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第一个图标(选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(14)>div:nth-child(2)>div:nth-child(1)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/store2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第二个图标(未选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(14)>div:nth-child(2)>div:nth-child(2)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/store.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第二个图标(选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(14)>div:nth-child(2)>div:nth-child(2)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/store2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第二个图标(未选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(15)>div:nth-child(2)>div:nth-child(1)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/WIFI.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第二个图标(选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(15)>div:nth-child(2)>div:nth-child(1)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/WIFI2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第二个图标(未选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(15)>div:nth-child(2)>div:nth-child(2)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/blynk.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第二个图标(选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(15)>div:nth-child(2)>div:nth-child(2)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/blynk2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第三个图标(未选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(15)>div:nth-child(2)>div:nth-child(3)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/iot.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第三个图标(选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(15)>div:nth-child(2)>div:nth-child(3)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/iot2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第四个图标(未选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(15)>div:nth-child(2)>div:nth-child(4)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/weather.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
/*子模块的第四个图标(选中时)*/
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(15)>div:nth-child(2)>div:nth-child(4)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/weather2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(17)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/factory3.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(17)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/factory4.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(18)>div.blocklyTreeRow>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/tool.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
|
||||
div.blocklyToolboxDiv>div.blocklyToolboxContents>div:nth-child(18)>div.blocklyTreeRow.blocklyTreeSelected>div.blocklyTreeRowContentContainer>span.blocklyTreeIcon {
|
||||
background: url('../../../../common/media/mark/tool2.png') no-repeat;
|
||||
background-size: 100% auto;
|
||||
}
|
||||
16
boards/default_src/arduino_esp8266/export.js
Normal file
16
boards/default_src/arduino_esp8266/export.js
Normal file
@@ -0,0 +1,16 @@
|
||||
import ArduinoESP8266Pins from './pins/pins';
|
||||
import * as ArduinoESP8266EthernetBlocks from './blocks/ethernet';
|
||||
import * as ArduinoESP8266EthernetGenerators from './generators/ethernet';
|
||||
|
||||
import ArduinoESP8266ZhHans from './language/zh-hans';
|
||||
import ArduinoESP8266ZhHant from './language/zh-hant';
|
||||
import ArduinoESP8266En from './language/en';
|
||||
|
||||
export {
|
||||
ArduinoESP8266Pins,
|
||||
ArduinoESP8266EthernetBlocks,
|
||||
ArduinoESP8266EthernetGenerators,
|
||||
ArduinoESP8266ZhHans,
|
||||
ArduinoESP8266ZhHant,
|
||||
ArduinoESP8266En
|
||||
};
|
||||
112
boards/default_src/arduino_esp8266/generators/esp8266.js
Normal file
112
boards/default_src/arduino_esp8266/generators/esp8266.js
Normal file
@@ -0,0 +1,112 @@
|
||||
// LM35 Temperature
|
||||
export const LM35 = function (_, generator) {
|
||||
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
|
||||
var code = 'analogRead(' + dropdown_pin + ')*0.322';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const store_eeprom_write_long = function (_, generator) {
|
||||
var address = generator.valueToCode(this, 'ADDRESS', generator.ORDER_ATOMIC) || '0';
|
||||
var data = generator.valueToCode(this, 'DATA', generator.ORDER_ATOMIC) || '0';
|
||||
generator.definitions_['include_EEPROM'] = '#include <EEPROM.h>';
|
||||
generator.setups_['setup_EEPROM.begin'] = 'EEPROM.begin(512);';
|
||||
var funcName = 'eepromWriteLong';
|
||||
var code2 = 'void ' + funcName + '(int address, unsigned long value) {\n'
|
||||
+ ' union u_tag {\n'
|
||||
+ ' byte b[4];\n'
|
||||
+ ' unsigned long ULtime;\n'
|
||||
+ ' }\n'
|
||||
+ ' time;\n'
|
||||
+ ' time.ULtime=value;\n'
|
||||
+ ' EEPROM.write(address, time.b[0]);\n'
|
||||
+ ' EEPROM.write(address+1, time.b[1]);\n'
|
||||
+ ' if (time.b[2] != EEPROM.read(address+2) ) EEPROM.write(address+2, time.b[2]);\n'
|
||||
+ ' if (time.b[3] != EEPROM.read(address+3) ) EEPROM.write(address+3, time.b[3]);\n'
|
||||
+ ' EEPROM.commit();\n'
|
||||
+ '}\n';
|
||||
generator.definitions_[funcName] = code2;
|
||||
return 'eepromWriteLong(' + address + ', ' + data + ');\n';
|
||||
}
|
||||
|
||||
export const store_eeprom_read_long = function (_, generator) {
|
||||
var address = generator.valueToCode(this, 'ADDRESS', generator.ORDER_ATOMIC) || '0';
|
||||
generator.definitions_['include_EEPROM'] = '#include <EEPROM.h>';
|
||||
generator.setups_['setup_EEPROM.begin'] = 'EEPROM.begin(512);';
|
||||
var code = 'eepromReadLong(' + address + ')';
|
||||
var funcName = 'eepromReadLong';
|
||||
var code2 = 'unsigned long ' + funcName + '(int address) {\n'
|
||||
+ ' union u_tag {\n'
|
||||
+ ' byte b[4];\n'
|
||||
+ ' unsigned long ULtime;\n'
|
||||
+ ' }\n'
|
||||
+ ' time;\n'
|
||||
+ ' time.b[0] = EEPROM.read(address);\n'
|
||||
+ ' time.b[1] = EEPROM.read(address+1);\n'
|
||||
+ ' time.b[2] = EEPROM.read(address+2);\n'
|
||||
+ ' time.b[3] = EEPROM.read(address+3);\n'
|
||||
+ ' return time.ULtime;\n'
|
||||
+ '}\n';
|
||||
generator.definitions_[funcName] = code2;
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const store_eeprom_write_byte = function (_, generator) {
|
||||
var address = generator.valueToCode(this, 'ADDRESS', generator.ORDER_ATOMIC) || '0';
|
||||
var data = generator.valueToCode(this, 'DATA', generator.ORDER_ATOMIC) || '0';
|
||||
generator.definitions_['include_EEPROM'] = '#include <EEPROM.h>';
|
||||
generator.setups_['setup_EEPROM.begin'] = 'EEPROM.begin(512);';
|
||||
return 'EEPROM.write(' + address + ', ' + data + ');\nEEPROM.commit();\n';
|
||||
}
|
||||
|
||||
export const controls_attachInterrupt = function (_, generator) {
|
||||
var dropdown_pin = generator.valueToCode(this, 'PIN', generator.ORDER_ATOMIC);
|
||||
var dropdown_mode = this.getFieldValue('mode');
|
||||
generator.setups_['setup_input_' + dropdown_pin] = 'pinMode(' + dropdown_pin + ', INPUT_PULLUP);';
|
||||
//var interrupt_pin=digitalPinToInterrupt(dropdown_pin).toString();
|
||||
var interrupt_pin = 'digitalPinToInterrupt(' + dropdown_pin + ')';
|
||||
var code = 'attachInterrupt' + '(' + interrupt_pin + ',' + 'attachInterrupt_fun_' + dropdown_pin + ',' + dropdown_mode + ');\n'
|
||||
var funcName = 'attachInterrupt_fun_' + dropdown_pin;
|
||||
var branch = generator.statementToCode(this, 'DO');
|
||||
var code2 = 'ICACHE_RAM_ATTR void' + ' ' + funcName + '() {\n' + branch + '}\n';
|
||||
generator.definitions_[funcName] = code2;
|
||||
return code;
|
||||
}
|
||||
|
||||
export const store_eeprom_read_byte = function (_, generator) {
|
||||
var address = generator.valueToCode(this, 'ADDRESS', generator.ORDER_ATOMIC) || '0';
|
||||
generator.definitions_['include_EEPROM'] = '#include <EEPROM.h>';
|
||||
generator.setups_['setup_EEPROM.begin'] = 'EEPROM.begin(512);';
|
||||
var code = 'EEPROM.read(' + address + ')';
|
||||
return [code, generator.ORDER_ATOMIC];
|
||||
}
|
||||
|
||||
export const store_eeprom_put = function (_, generator) {
|
||||
generator.setups_['setup_EEPROM_begin'] = 'EEPROM.begin(4000);';
|
||||
var address = generator.valueToCode(this, 'ADDRESS', generator.ORDER_ATOMIC) || '0';
|
||||
var data = generator.valueToCode(this, 'DATA', generator.ORDER_ATOMIC) || '0';
|
||||
generator.definitions_['include_EEPROM'] = '#include <EEPROM.h>';
|
||||
return 'EEPROM.put(' + address + ', ' + data + ');\nEEPROM.commit();';
|
||||
}
|
||||
|
||||
export const store_eeprom_get = function (_, generator) {
|
||||
generator.setups_['setup_EEPROM_begin'] = 'EEPROM.begin(4000);';
|
||||
var address = generator.valueToCode(this, 'ADDRESS', generator.ORDER_ATOMIC) || '0';
|
||||
var data = generator.valueToCode(this, 'DATA', generator.ORDER_ATOMIC) || '0';
|
||||
generator.definitions_['include_EEPROM'] = '#include <EEPROM.h>';
|
||||
return 'EEPROM.get(' + address + ', ' + data + ');\n';
|
||||
}
|
||||
|
||||
export const controls_soft_reset = function () {
|
||||
return ' ESP.restart();\n';
|
||||
}
|
||||
|
||||
export const servo_move = function (_, generator) {
|
||||
var dropdown_pin = this.getFieldValue('PIN');
|
||||
var value_degree = generator.valueToCode(this, 'DEGREE', generator.ORDER_ATOMIC);
|
||||
var delay_time = generator.valueToCode(this, 'DELAY_TIME', generator.ORDER_ATOMIC) || '0'
|
||||
generator.definitions_['include_Servo'] = '#include <Servo.h>';
|
||||
generator.definitions_['var_declare_servo' + dropdown_pin] = 'Servo servo_' + dropdown_pin + ';';
|
||||
generator.setups_['setup_servo_' + dropdown_pin] = 'servo_' + dropdown_pin + '.attach(' + dropdown_pin + ',500,2500);';
|
||||
var code = 'servo_' + dropdown_pin + '.write(' + value_degree + ');\n' + 'delay(' + delay_time + ');\n';
|
||||
return code;
|
||||
}
|
||||
82
boards/default_src/arduino_esp8266/generators/ethernet.js
Normal file
82
boards/default_src/arduino_esp8266/generators/ethernet.js
Normal file
@@ -0,0 +1,82 @@
|
||||
// esp_now发送数据
|
||||
export const esp_now_send = function (_, generator) {
|
||||
var mac = generator.valueToCode(this, 'mac', generator.ORDER_ATOMIC);
|
||||
var data = generator.valueToCode(this, 'data', generator.ORDER_ATOMIC);
|
||||
var branch = generator.statementToCode(this, 'success');
|
||||
//branch = branch.replace(/(^\s*)|(\s*$)/g, "");
|
||||
var branch1 = generator.statementToCode(this, 'failure');
|
||||
//branch1 = branch1.replace(/(^\s*)|(\s*$)/g, "");
|
||||
mac = mac.replaceAll('"', '');
|
||||
mac = mac.toUpperCase();
|
||||
const macList = mac.split(':');
|
||||
mac = macList.join(', 0x');
|
||||
mac = '0x' + mac;
|
||||
generator.definitions_['include_ESP8266WiFi'] = '#include <ESP8266WiFi.h>';
|
||||
generator.definitions_['include_WifiEspNow'] = '#include <WifiEspNow.h>';
|
||||
const macName = macList.join('');
|
||||
generator.definitions_['var_declare_PEER_' + macName] = 'uint8_t PEER_' + macName + '[] = {' + mac + '};\n';
|
||||
generator.definitions_['function_sendMessage'] = 'bool sendMessage(uint8_t *macAddress, String _data) {\n'
|
||||
+ ' bool ok = WifiEspNow.addPeer(macAddress, 0, nullptr, WIFI_IF_STA);\n'
|
||||
+ ' if (!ok) return false;\n'
|
||||
+ ' uint16_t length = _data.length();\n'
|
||||
+ ' char _msg[length];\n'
|
||||
+ ' strcpy(_msg, _data.c_str());\n'
|
||||
+ ' return WifiEspNow.send(macAddress, reinterpret_cast<const uint8_t*>(_msg), length);\n'
|
||||
+ '}\n';
|
||||
generator.setups_['setup_esp_now'] = `
|
||||
WiFi.persistent(false);
|
||||
WiFi.mode(WIFI_AP);
|
||||
WiFi.disconnect();
|
||||
WiFi.softAP("ESPNOW", nullptr, 3);
|
||||
WiFi.softAPdisconnect(false);
|
||||
|
||||
Serial.print("当前设备MAC:");
|
||||
Serial.println(WiFi.softAPmacAddress());
|
||||
|
||||
bool ok = WifiEspNow.begin();
|
||||
if (!ok) {
|
||||
Serial.println("WifiEspNow初始化失败");
|
||||
ESP.restart();
|
||||
}`;
|
||||
var code = `if (sendMessage(PEER_${macName}, ${data})) {\n`
|
||||
+ branch
|
||||
+ '} else {\n'
|
||||
+ branch1
|
||||
+ '}\n';
|
||||
return code;
|
||||
}
|
||||
|
||||
// esp_now接收数据
|
||||
export const esp_now_receive = function (_, generator) {
|
||||
var branch = generator.statementToCode(this, 'receive_data');
|
||||
branch = branch.replace(/(^\s*)|(\s*$)/g, "");
|
||||
generator.definitions_['include_ESP8266WiFi'] = '#include <ESP8266WiFi.h>';
|
||||
generator.definitions_['include_WifiEspNow'] = '#include <WifiEspNow.h>';
|
||||
generator.definitions_['function_onMessageRecv'] = 'void OnMessageRecv(const uint8_t _mac[WIFIESPNOW_ALEN], const uint8_t* _buf, size_t _count, void* arg) {\n'
|
||||
+ ' // Serial.printf("从MAC:%02X:%02X:%02X:%02X:%02X:%02X处收到数据\\n", _mac[0], _mac[1], _mac[2], _mac[3], _mac[4], _mac[5]);\n'
|
||||
+ ' String message = "";\n'
|
||||
+ ' for (int i = 0; i < static_cast<int>(_count); i++) {\n'
|
||||
+ ' message += String(static_cast<char>(_buf[i]));\n'
|
||||
+ ' }\n'
|
||||
+ ' ' + branch + '\n'
|
||||
+ '}\n';
|
||||
|
||||
generator.setups_['setup_esp_now_message_receive_cb'] = 'WifiEspNow.onReceive(OnMessageRecv, nullptr);';
|
||||
generator.setups_['setup_esp_now'] = `
|
||||
WiFi.persistent(false);
|
||||
WiFi.mode(WIFI_AP);
|
||||
WiFi.disconnect();
|
||||
WiFi.softAP("ESPNOW", nullptr, 3);
|
||||
WiFi.softAPdisconnect(false);
|
||||
|
||||
Serial.print("当前设备MAC:");
|
||||
Serial.println(WiFi.softAPmacAddress());
|
||||
|
||||
bool ok = WifiEspNow.begin();
|
||||
if (!ok) {
|
||||
Serial.println("WifiEspNow初始化失败");
|
||||
ESP.restart();
|
||||
}`;
|
||||
var code = '';
|
||||
return code;
|
||||
}
|
||||
134
boards/default_src/arduino_esp8266/index.js
Normal file
134
boards/default_src/arduino_esp8266/index.js
Normal file
@@ -0,0 +1,134 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
import { Profile } from 'mixly';
|
||||
|
||||
import {
|
||||
ArduinoEthernetBlocks,
|
||||
ArduinoTextBlocks,
|
||||
ArduinoEthernetGenerators,
|
||||
ArduinoTextGenerators,
|
||||
Procedures,
|
||||
Variables,
|
||||
Arduino
|
||||
} from '@mixly/arduino';
|
||||
|
||||
import {
|
||||
ArduinoAVRActuatorBlocks,
|
||||
ArduinoAVRBlynkBlocks,
|
||||
ArduinoAVRCommunicateBlocks,
|
||||
ArduinoAVRControlBlocks,
|
||||
ArduinoAVRDisplayBlocks,
|
||||
ArduinoAVREthernetBlocks,
|
||||
ArduinoAVRFactoryBlocks,
|
||||
ArduinoAVRInoutBlocks,
|
||||
ArduinoAVRListsBlocks,
|
||||
ArduinoAVRLogicBlocks,
|
||||
ArduinoAVRMathBlocks,
|
||||
ArduinoAVRPinsBlocks,
|
||||
ArduinoAVRProceduresBlocks,
|
||||
ArduinoAVRSensorBlocks,
|
||||
ArduinoAVRSerialBlocks,
|
||||
ArduinoAVRStorageBlocks,
|
||||
ArduinoAVRTextBlocks,
|
||||
ArduinoAVRToolsBlocks,
|
||||
ArduinoAVRVariablesBlocks,
|
||||
ArduinoAVRActuatorGenerators,
|
||||
ArduinoAVRBlynkGenerators,
|
||||
ArduinoAVRCommunicateGenerators,
|
||||
ArduinoAVRControlGenerators,
|
||||
ArduinoAVRDisplayGenerators,
|
||||
ArduinoAVREthernetGenerators,
|
||||
ArduinoAVRFactoryGenerators,
|
||||
ArduinoAVRInoutGenerators,
|
||||
ArduinoAVRListsGenerators,
|
||||
ArduinoAVRLogicGenerators,
|
||||
ArduinoAVRMathGenerators,
|
||||
ArduinoAVRPinsGenerators,
|
||||
ArduinoAVRProceduresGenerators,
|
||||
ArduinoAVRSensorGenerators,
|
||||
ArduinoAVRSerialGenerators,
|
||||
ArduinoAVRStorageGenerators,
|
||||
ArduinoAVRTextGenerators,
|
||||
ArduinoAVRToolsGenerators,
|
||||
ArduinoAVRVariablesGenerators
|
||||
} from '@mixly/arduino-avr';
|
||||
|
||||
import {
|
||||
ArduinoESP8266Pins,
|
||||
ArduinoESP8266EthernetBlocks,
|
||||
ArduinoESP8266EthernetGenerators,
|
||||
ArduinoESP8266ZhHans,
|
||||
ArduinoESP8266ZhHant,
|
||||
ArduinoESP8266En
|
||||
} from './';
|
||||
|
||||
import addBoardFSItem from './mixly-modules/loader';
|
||||
|
||||
import './css/color.css';
|
||||
|
||||
Blockly.Arduino = Arduino;
|
||||
Blockly.generator = Arduino;
|
||||
|
||||
Object.assign(Blockly.Variables, Variables);
|
||||
Object.assign(Blockly.Procedures, Procedures);
|
||||
|
||||
Profile.default = {};
|
||||
Object.assign(Profile, ArduinoESP8266Pins);
|
||||
Object.assign(Profile.default, ArduinoESP8266Pins.arduino_esp8266);
|
||||
|
||||
Object.assign(Blockly.Lang.ZhHans, ArduinoESP8266ZhHans);
|
||||
Object.assign(Blockly.Lang.ZhHant, ArduinoESP8266ZhHant);
|
||||
Object.assign(Blockly.Lang.En, ArduinoESP8266En);
|
||||
|
||||
addBoardFSItem();
|
||||
|
||||
Object.assign(
|
||||
Blockly.Blocks,
|
||||
ArduinoEthernetBlocks,
|
||||
ArduinoTextBlocks,
|
||||
ArduinoAVRActuatorBlocks,
|
||||
ArduinoAVRBlynkBlocks,
|
||||
ArduinoAVRCommunicateBlocks,
|
||||
ArduinoAVRControlBlocks,
|
||||
ArduinoAVRDisplayBlocks,
|
||||
ArduinoAVREthernetBlocks,
|
||||
ArduinoAVRFactoryBlocks,
|
||||
ArduinoAVRInoutBlocks,
|
||||
ArduinoAVRListsBlocks,
|
||||
ArduinoAVRLogicBlocks,
|
||||
ArduinoAVRMathBlocks,
|
||||
ArduinoAVRPinsBlocks,
|
||||
ArduinoAVRProceduresBlocks,
|
||||
ArduinoAVRSensorBlocks,
|
||||
ArduinoAVRSerialBlocks,
|
||||
ArduinoAVRStorageBlocks,
|
||||
ArduinoAVRTextBlocks,
|
||||
ArduinoAVRToolsBlocks,
|
||||
ArduinoAVRVariablesBlocks,
|
||||
ArduinoESP8266EthernetBlocks
|
||||
);
|
||||
|
||||
Object.assign(
|
||||
Blockly.Arduino.forBlock,
|
||||
ArduinoEthernetGenerators,
|
||||
ArduinoTextGenerators,
|
||||
ArduinoAVRActuatorGenerators,
|
||||
ArduinoAVRBlynkGenerators,
|
||||
ArduinoAVRCommunicateGenerators,
|
||||
ArduinoAVRControlGenerators,
|
||||
ArduinoAVRDisplayGenerators,
|
||||
ArduinoAVREthernetGenerators,
|
||||
ArduinoAVRFactoryGenerators,
|
||||
ArduinoAVRInoutGenerators,
|
||||
ArduinoAVRListsGenerators,
|
||||
ArduinoAVRLogicGenerators,
|
||||
ArduinoAVRMathGenerators,
|
||||
ArduinoAVRPinsGenerators,
|
||||
ArduinoAVRProceduresGenerators,
|
||||
ArduinoAVRSensorGenerators,
|
||||
ArduinoAVRSerialGenerators,
|
||||
ArduinoAVRStorageGenerators,
|
||||
ArduinoAVRTextGenerators,
|
||||
ArduinoAVRToolsGenerators,
|
||||
ArduinoAVRVariablesGenerators,
|
||||
ArduinoESP8266EthernetGenerators
|
||||
);
|
||||
140
boards/default_src/arduino_esp8266/language/en.js
Normal file
140
boards/default_src/arduino_esp8266/language/en.js
Normal file
@@ -0,0 +1,140 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
import * as Mixly from 'mixly';
|
||||
import TEMPLATE from '../template/board-config-message.html';
|
||||
|
||||
const { XML } = Mixly;
|
||||
const { En } = Blockly.Lang;
|
||||
|
||||
En.ESP8266_CONFIG_TEMPLATE = TEMPLATE;
|
||||
|
||||
En.ESP8266_CONFIG_INTRODUCE = 'For more information, please visit';
|
||||
|
||||
En.ESP8266_CONFIG_MESSAGE_XTAL = XML.render(En.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'CPU Frequency',
|
||||
moreInfo: En.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#cpu-frequency',
|
||||
name: 'CPU Frequency'
|
||||
});
|
||||
|
||||
En.ESP8266_CONFIG_MESSAGE_VT = XML.render(En.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'VTable location',
|
||||
moreInfo: En.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#vtable-location',
|
||||
name: 'VTable'
|
||||
});
|
||||
|
||||
En.ESP8266_CONFIG_MESSAGE_EXCEPTION = XML.render(En.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'C++ Exceptions',
|
||||
moreInfo: En.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#c-exceptions',
|
||||
name: 'C++ Exceptions'
|
||||
});
|
||||
|
||||
En.ESP8266_CONFIG_MESSAGE_STACKSMASH = XML.render(En.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'Stack Protection',
|
||||
moreInfo: En.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#stack-protection',
|
||||
name: 'Stack Protection'
|
||||
});
|
||||
|
||||
En.ESP8266_CONFIG_MESSAGE_SSL = XML.render(En.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'SSL支持',
|
||||
moreInfo: En.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#ssl-support',
|
||||
name: 'SSL Support'
|
||||
});
|
||||
|
||||
En.ESP8266_CONFIG_MESSAGE_MMU = XML.render(En.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'Memory Management Unit',
|
||||
moreInfo: En.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#mmu-memory-management-unit',
|
||||
name: 'MMU'
|
||||
});
|
||||
|
||||
En.ESP8266_CONFIG_MESSAGE_NON32XFER = XML.render(En.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'Non-32-Bit Access',
|
||||
moreInfo: En.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#non-32-bit-access',
|
||||
name: 'Non-32-Bit Access'
|
||||
});
|
||||
|
||||
En.ESP8266_CONFIG_MESSAGE_RESET_METHOD = XML.render(En.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'Reset Method',
|
||||
moreInfo: En.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#reset-method',
|
||||
name: 'Reset Method'
|
||||
});
|
||||
|
||||
En.ESP8266_CONFIG_MESSAGE_CRYSTAL_FREQ = XML.render(En.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'Crystal Frequency',
|
||||
moreInfo: En.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#crystal-frequency',
|
||||
name: 'Crystal Frequency'
|
||||
});
|
||||
|
||||
En.ESP8266_CONFIG_MESSAGE_FLASH_FREQ = XML.render(En.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'Flash Frequency',
|
||||
moreInfo: En.ESP8266_CONFIG_INTRODUCE,
|
||||
href: '#',
|
||||
name: 'None'
|
||||
});
|
||||
|
||||
En.ESP8266_CONFIG_MESSAGE_FLASH_MODE = XML.render(En.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'Flash Mode',
|
||||
moreInfo: En.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#flash-mode',
|
||||
name: 'Flash Mode'
|
||||
});
|
||||
|
||||
En.ESP8266_CONFIG_MESSAGE_EESZ = XML.render(En.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'Flash Size',
|
||||
moreInfo: En.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#flash-size',
|
||||
name: 'Flash Size'
|
||||
});
|
||||
|
||||
En.ESP8266_CONFIG_MESSAGE_LED = XML.render(En.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'Builtin Led',
|
||||
moreInfo: En.ESP8266_CONFIG_INTRODUCE,
|
||||
href: '#',
|
||||
name: 'None'
|
||||
});
|
||||
|
||||
En.ESP8266_CONFIG_MESSAGE_SDK = XML.render(En.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'NONOS SDK Version',
|
||||
moreInfo: En.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#nonos-sdk-version',
|
||||
name: 'NONOS SDK Version'
|
||||
});
|
||||
|
||||
En.ESP8266_CONFIG_MESSAGE_IP = XML.render(En.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'lwIP Variant',
|
||||
moreInfo: En.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#lwip-variant',
|
||||
name: 'lwIP Variant'
|
||||
});
|
||||
|
||||
En.ESP8266_CONFIG_MESSAGE_DBG = XML.render(En.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'Debug port',
|
||||
moreInfo: En.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#debug-port',
|
||||
name: 'Debug port'
|
||||
});
|
||||
|
||||
En.ESP8266_CONFIG_MESSAGE_WIPE = XML.render(En.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'Erase Flash',
|
||||
moreInfo: En.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#erase-flash',
|
||||
name: 'Erase Flash'
|
||||
});
|
||||
|
||||
En.ESP8266_CONFIG_MESSAGE_BAUD = XML.render(En.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'Upload Speed',
|
||||
moreInfo: En.ESP8266_CONFIG_INTRODUCE,
|
||||
href: '#',
|
||||
name: 'None'
|
||||
});
|
||||
|
||||
En.BOARD_FS = 'Board FS';
|
||||
|
||||
export default En;
|
||||
140
boards/default_src/arduino_esp8266/language/zh-hans.js
Normal file
140
boards/default_src/arduino_esp8266/language/zh-hans.js
Normal file
@@ -0,0 +1,140 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
import * as Mixly from 'mixly';
|
||||
import TEMPLATE from '../template/board-config-message.html';
|
||||
|
||||
const { XML } = Mixly;
|
||||
const { ZhHans } = Blockly.Lang;
|
||||
|
||||
ZhHans.ESP8266_CONFIG_TEMPLATE = TEMPLATE;
|
||||
|
||||
ZhHans.ESP8266_CONFIG_INTRODUCE = '详细介绍请参考';
|
||||
|
||||
ZhHans.ESP8266_CONFIG_MESSAGE_XTAL = XML.render(ZhHans.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'CPU时钟频率',
|
||||
moreInfo: ZhHans.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#cpu-frequency',
|
||||
name: 'CPU Frequency'
|
||||
});
|
||||
|
||||
ZhHans.ESP8266_CONFIG_MESSAGE_VT = XML.render(ZhHans.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'VTable location',
|
||||
moreInfo: ZhHans.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#vtable-location',
|
||||
name: 'VTable'
|
||||
});
|
||||
|
||||
ZhHans.ESP8266_CONFIG_MESSAGE_EXCEPTION = XML.render(ZhHans.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'C++异常',
|
||||
moreInfo: ZhHans.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#c-exceptions',
|
||||
name: 'C++ Exceptions'
|
||||
});
|
||||
|
||||
ZhHans.ESP8266_CONFIG_MESSAGE_STACKSMASH = XML.render(ZhHans.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: '堆栈保护',
|
||||
moreInfo: ZhHans.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#stack-protection',
|
||||
name: 'Stack Protection'
|
||||
});
|
||||
|
||||
ZhHans.ESP8266_CONFIG_MESSAGE_SSL = XML.render(ZhHans.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'SSL支持',
|
||||
moreInfo: ZhHans.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#ssl-support',
|
||||
name: 'SSL Support'
|
||||
});
|
||||
|
||||
ZhHans.ESP8266_CONFIG_MESSAGE_MMU = XML.render(ZhHans.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: '内存管理单元',
|
||||
moreInfo: ZhHans.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#mmu-memory-management-unit',
|
||||
name: 'MMU'
|
||||
});
|
||||
|
||||
ZhHans.ESP8266_CONFIG_MESSAGE_NON32XFER = XML.render(ZhHans.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: '非32位访问',
|
||||
moreInfo: ZhHans.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#non-32-bit-access',
|
||||
name: 'Non-32-Bit Access'
|
||||
});
|
||||
|
||||
ZhHans.ESP8266_CONFIG_MESSAGE_RESET_METHOD = XML.render(ZhHans.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: '复位方式',
|
||||
moreInfo: ZhHans.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#reset-method',
|
||||
name: 'Reset Method'
|
||||
});
|
||||
|
||||
ZhHans.ESP8266_CONFIG_MESSAGE_CRYSTAL_FREQ = XML.render(ZhHans.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: '晶振频率',
|
||||
moreInfo: ZhHans.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#crystal-frequency',
|
||||
name: 'Crystal Frequency'
|
||||
});
|
||||
|
||||
ZhHans.ESP8266_CONFIG_MESSAGE_FLASH_FREQ = XML.render(ZhHans.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: '闪存频率',
|
||||
moreInfo: ZhHans.ESP8266_CONFIG_INTRODUCE,
|
||||
href: '#',
|
||||
name: '无'
|
||||
});
|
||||
|
||||
ZhHans.ESP8266_CONFIG_MESSAGE_FLASH_MODE = XML.render(ZhHans.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: '烧录方式',
|
||||
moreInfo: ZhHans.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#flash-mode',
|
||||
name: 'Flash Mode'
|
||||
});
|
||||
|
||||
ZhHans.ESP8266_CONFIG_MESSAGE_EESZ = XML.render(ZhHans.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: '闪存大小',
|
||||
moreInfo: ZhHans.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#flash-size',
|
||||
name: 'Flash Size'
|
||||
});
|
||||
|
||||
ZhHans.ESP8266_CONFIG_MESSAGE_LED = XML.render(ZhHans.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: '内置LED',
|
||||
moreInfo: ZhHans.ESP8266_CONFIG_INTRODUCE,
|
||||
href: '#',
|
||||
name: '无'
|
||||
});
|
||||
|
||||
ZhHans.ESP8266_CONFIG_MESSAGE_SDK = XML.render(ZhHans.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'NonOS SDK版本',
|
||||
moreInfo: ZhHans.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#nonos-sdk-version',
|
||||
name: 'NONOS SDK Version'
|
||||
});
|
||||
|
||||
ZhHans.ESP8266_CONFIG_MESSAGE_IP = XML.render(ZhHans.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'lwIP变体',
|
||||
moreInfo: ZhHans.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#lwip-variant',
|
||||
name: 'lwIP Variant'
|
||||
});
|
||||
|
||||
ZhHans.ESP8266_CONFIG_MESSAGE_DBG = XML.render(ZhHans.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: '调试端口',
|
||||
moreInfo: ZhHans.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#debug-port',
|
||||
name: 'Debug port'
|
||||
});
|
||||
|
||||
ZhHans.ESP8266_CONFIG_MESSAGE_WIPE = XML.render(ZhHans.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: '擦除Flash',
|
||||
moreInfo: ZhHans.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#erase-flash',
|
||||
name: 'Erase Flash'
|
||||
});
|
||||
|
||||
ZhHans.ESP8266_CONFIG_MESSAGE_BAUD = XML.render(ZhHans.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: '上传速度',
|
||||
moreInfo: ZhHans.ESP8266_CONFIG_INTRODUCE,
|
||||
href: '#',
|
||||
name: '无'
|
||||
});
|
||||
|
||||
ZhHans.BOARD_FS = '板卡文件管理';
|
||||
|
||||
export default ZhHans;
|
||||
140
boards/default_src/arduino_esp8266/language/zh-hant.js
Normal file
140
boards/default_src/arduino_esp8266/language/zh-hant.js
Normal file
@@ -0,0 +1,140 @@
|
||||
import * as Blockly from 'blockly/core';
|
||||
import * as Mixly from 'mixly';
|
||||
import TEMPLATE from '../template/board-config-message.html';
|
||||
|
||||
const { XML } = Mixly;
|
||||
const { ZhHant } = Blockly.Lang;
|
||||
|
||||
ZhHant.ESP8266_CONFIG_TEMPLATE = TEMPLATE;
|
||||
|
||||
ZhHant.ESP8266_CONFIG_INTRODUCE = '詳細介紹請參攷';
|
||||
|
||||
ZhHant.ESP8266_CONFIG_MESSAGE_XTAL = XML.render(ZhHant.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'CPU時鐘頻率',
|
||||
moreInfo: ZhHant.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#cpu-frequency',
|
||||
name: 'CPU Frequency'
|
||||
});
|
||||
|
||||
ZhHant.ESP8266_CONFIG_MESSAGE_VT = XML.render(ZhHant.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'VTable location',
|
||||
moreInfo: ZhHant.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#vtable-location',
|
||||
name: 'VTable'
|
||||
});
|
||||
|
||||
ZhHant.ESP8266_CONFIG_MESSAGE_EXCEPTION = XML.render(ZhHant.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'C++异常',
|
||||
moreInfo: ZhHant.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#c-exceptions',
|
||||
name: 'C++ Exceptions'
|
||||
});
|
||||
|
||||
ZhHant.ESP8266_CONFIG_MESSAGE_STACKSMASH = XML.render(ZhHant.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: '堆棧保護',
|
||||
moreInfo: ZhHant.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#stack-protection',
|
||||
name: 'Stack Protection'
|
||||
});
|
||||
|
||||
ZhHant.ESP8266_CONFIG_MESSAGE_SSL = XML.render(ZhHant.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'SSL支持',
|
||||
moreInfo: ZhHant.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#ssl-support',
|
||||
name: 'SSL Support'
|
||||
});
|
||||
|
||||
ZhHant.ESP8266_CONFIG_MESSAGE_MMU = XML.render(ZhHant.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: '記憶體管理單元',
|
||||
moreInfo: ZhHant.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#mmu-memory-management-unit',
|
||||
name: 'MMU'
|
||||
});
|
||||
|
||||
ZhHant.ESP8266_CONFIG_MESSAGE_NON32XFER = XML.render(ZhHant.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: '非32比特訪問',
|
||||
moreInfo: ZhHant.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#non-32-bit-access',
|
||||
name: 'Non-32-Bit Access'
|
||||
});
|
||||
|
||||
ZhHant.ESP8266_CONFIG_MESSAGE_RESET_METHOD = XML.render(ZhHant.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: '復位管道',
|
||||
moreInfo: ZhHant.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#reset-method',
|
||||
name: 'Reset Method'
|
||||
});
|
||||
|
||||
ZhHant.ESP8266_CONFIG_MESSAGE_CRYSTAL_FREQ = XML.render(ZhHant.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: '晶振頻率',
|
||||
moreInfo: ZhHant.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#crystal-frequency',
|
||||
name: 'Crystal Frequency'
|
||||
});
|
||||
|
||||
ZhHant.ESP8266_CONFIG_MESSAGE_FLASH_FREQ = XML.render(ZhHant.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: '閃存頻率',
|
||||
moreInfo: ZhHant.ESP8266_CONFIG_INTRODUCE,
|
||||
href: '#',
|
||||
name: '無'
|
||||
});
|
||||
|
||||
ZhHant.ESP8266_CONFIG_MESSAGE_FLASH_MODE = XML.render(ZhHant.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: '燒錄管道',
|
||||
moreInfo: ZhHant.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#flash-mode',
|
||||
name: 'Flash Mode'
|
||||
});
|
||||
|
||||
ZhHant.ESP8266_CONFIG_MESSAGE_EESZ = XML.render(ZhHant.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: '閃存大小',
|
||||
moreInfo: ZhHant.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#flash-size',
|
||||
name: 'Flash Size'
|
||||
});
|
||||
|
||||
ZhHant.ESP8266_CONFIG_MESSAGE_LED = XML.render(ZhHant.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: '內寘LED',
|
||||
moreInfo: ZhHant.ESP8266_CONFIG_INTRODUCE,
|
||||
href: '#',
|
||||
name: '無'
|
||||
});
|
||||
|
||||
ZhHant.ESP8266_CONFIG_MESSAGE_SDK = XML.render(ZhHant.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'NonOS SDK版本',
|
||||
moreInfo: ZhHant.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#nonos-sdk-version',
|
||||
name: 'NONOS SDK Version'
|
||||
});
|
||||
|
||||
ZhHant.ESP8266_CONFIG_MESSAGE_IP = XML.render(ZhHant.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: 'lwIP變體',
|
||||
moreInfo: ZhHant.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#lwip-variant',
|
||||
name: 'lwIP Variant'
|
||||
});
|
||||
|
||||
ZhHant.ESP8266_CONFIG_MESSAGE_DBG = XML.render(ZhHant.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: '調試埠',
|
||||
moreInfo: ZhHant.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#debug-port',
|
||||
name: 'Debug port'
|
||||
});
|
||||
|
||||
ZhHant.ESP8266_CONFIG_MESSAGE_WIPE = XML.render(ZhHant.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: '擦除Flash',
|
||||
moreInfo: ZhHant.ESP8266_CONFIG_INTRODUCE,
|
||||
href: 'https://arduino-esp8266.readthedocs.io/en/latest/ideoptions.html#erase-flash',
|
||||
name: 'Erase Flash'
|
||||
});
|
||||
|
||||
ZhHant.ESP8266_CONFIG_MESSAGE_BAUD = XML.render(ZhHant.ESP8266_CONFIG_TEMPLATE, {
|
||||
title: '上傳速度',
|
||||
moreInfo: ZhHant.ESP8266_CONFIG_INTRODUCE,
|
||||
href: '#',
|
||||
name: '無'
|
||||
});
|
||||
|
||||
ZhHant.BOARD_FS = '闆卡文件管理';
|
||||
|
||||
export default ZhHant;
|
||||
1953
boards/default_src/arduino_esp8266/mixly-modules/boards-eesz-info.js
Normal file
1953
boards/default_src/arduino_esp8266/mixly-modules/boards-eesz-info.js
Normal file
File diff suppressed because it is too large
Load Diff
14
boards/default_src/arduino_esp8266/mixly-modules/commands.js
Normal file
14
boards/default_src/arduino_esp8266/mixly-modules/commands.js
Normal file
@@ -0,0 +1,14 @@
|
||||
export default {
|
||||
littlefs: {
|
||||
download: "{{&esptool}} --chip esp8266 --port {{&port}} --baud {{&baud}} read_flash {{&offset}} {{&size}} {{&img}} && {{&fsTool}} -u {{&usrFolder}} -b {{&blockSize}} -p {{&pageSize}} -s {{&size}} {{&img}}",
|
||||
upload: "{{&fsTool}} -c {{&usrFolder}} -b {{&blockSize}} -p {{&pageSize}} -s {{&size}} {{&img}} && {{&esptool}} --chip esp8266 --port {{&port}} --baud {{&baud}} write_flash --flash_mode {{&flashMode}} --flash_freq {{&flashFreq}} --flash_size {{&flashSize}} {{&offset}} {{&img}}"
|
||||
},
|
||||
spiffs: {
|
||||
download: "{{&esptool}} --chip esp8266 --port {{&port}} --baud {{&baud}} read_flash {{&offset}} {{&size}} {{&img}} && {{&fsTool}} -u {{&usrFolder}} -b {{&blockSize}} -p {{&pageSize}} -s {{&size}} {{&img}}",
|
||||
upload: "{{&fsTool}} -c {{&usrFolder}} -b {{&blockSize}} -p {{&pageSize}} -s {{&size}} {{&img}} && {{&esptool}} --chip esp8266 --port {{&port}} --baud {{&baud}} write_flash --flash_mode {{&flashMode}} --flash_freq {{&flashFreq}} --flash_size {{&flashSize}} {{&offset}} {{&img}}"
|
||||
},
|
||||
fatfs: {
|
||||
download: "{{&esptool}} --chip esp8266 --port {{&port}} --baud {{&baud}} read_flash {{&offset}} {{&size}} {{&img}} && {{&fsTool}} -u {{&usrFolder}} -t fatfs -s {{&size}} {{&img}}",
|
||||
upload: "{{&fsTool}} -c {{&usrFolder}} -t fatfs -s {{&size}} {{&img}} && {{&esptool}} --chip esp8266 --port {{&port}} --baud {{&baud}} write_flash --flash_mode {{&flashMode}} --flash_freq {{&flashFreq}} --flash_size {{&flashSize}} {{&offset}} {{&img}}"
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,80 @@
|
||||
import { Env, Boards, FSBoardHandler } from 'mixly';
|
||||
import * as path from 'path';
|
||||
import COMMANDS from './commands';
|
||||
import BOARDS_EESZ_INFO from './boards-eesz-info';
|
||||
import MENU from './menu';
|
||||
import FS_INFO from './fs-info';
|
||||
|
||||
export default class FSArduEsp8266Handler extends FSBoardHandler {
|
||||
constructor() {
|
||||
super();
|
||||
for (let key in COMMANDS) {
|
||||
this.setFSCommands(key, COMMANDS[key]);
|
||||
}
|
||||
}
|
||||
|
||||
onBeforeUpload() {
|
||||
const boardKey = Boards.getSelectedBoardKey();
|
||||
const flashMode = Boards.getSelectedBoardConfigParam('FlashMode') || 'keep';
|
||||
let flashFreq = Boards.getSelectedBoardConfigParam('FlashFreq') || 'keep';
|
||||
if (flashFreq !== 'keep') {
|
||||
flashFreq += 'm';
|
||||
}
|
||||
const baud = Boards.getSelectedBoardConfigParam('baud') || '115200';
|
||||
const eesz = Boards.getSelectedBoardConfigParam('eesz');
|
||||
const info = BOARDS_EESZ_INFO[boardKey][eesz];
|
||||
const partition = {
|
||||
offset: info.spiffs_start,
|
||||
size: info.spiffs_end - info.spiffs_start,
|
||||
blockSize: info.spiffs_blocksize,
|
||||
pageSize: info.spiffs_pagesize
|
||||
};
|
||||
const flashSize = info.flash_size + 'B';
|
||||
const fsTool = this.getFSToolPath();
|
||||
const img = path.join(Env.boardDirPath, 'build', 'script.img');
|
||||
this.updateConfig({
|
||||
fsTool, img, flashMode, flashFreq, flashSize, baud,
|
||||
...partition
|
||||
});
|
||||
}
|
||||
|
||||
onBeforeDownload() {
|
||||
const boardKey = Boards.getSelectedBoardKey();
|
||||
const baud = Boards.getSelectedBoardConfigParam('baud') || '115200';
|
||||
const eesz = Boards.getSelectedBoardConfigParam('eesz');
|
||||
const info = BOARDS_EESZ_INFO[boardKey][eesz];
|
||||
const partition = {
|
||||
offset: info.spiffs_start,
|
||||
size: info.spiffs_end - info.spiffs_start,
|
||||
blockSize: info.spiffs_blocksize,
|
||||
pageSize: info.spiffs_pagesize
|
||||
};
|
||||
const fsTool = this.getFSToolPath();
|
||||
const img = path.join(Env.boardDirPath, 'build', 'script.img');
|
||||
this.updateConfig({ fsTool, img, baud, ...partition });
|
||||
}
|
||||
|
||||
getFSMenu() {
|
||||
return MENU;
|
||||
}
|
||||
|
||||
getFSToolPath() {
|
||||
const fsType = this.getFSType();
|
||||
let arch = 'x64';
|
||||
switch (process.arch) {
|
||||
case 'arm64':
|
||||
case 'arm':
|
||||
arch = 'arm';
|
||||
break;
|
||||
case 'ia32':
|
||||
arch = 'x32';
|
||||
break;
|
||||
case 'x64':
|
||||
default:
|
||||
arch = 'x64';
|
||||
}
|
||||
const platform = Env.currentPlatform;
|
||||
const fsToolInfo = FS_INFO[`mk${fsType}`];
|
||||
return path.join(Env.boardDirPath, 'build/tools', fsToolInfo[platform][arch]);
|
||||
}
|
||||
}
|
||||
34
boards/default_src/arduino_esp8266/mixly-modules/fs-info.js
Normal file
34
boards/default_src/arduino_esp8266/mixly-modules/fs-info.js
Normal file
@@ -0,0 +1,34 @@
|
||||
export default {
|
||||
"mkspiffs": {
|
||||
"version": "0.2.3",
|
||||
"linux": {
|
||||
"x32": "./mkspiffs/linux/mkspiffs-x32.bin",
|
||||
"x64": "./mkspiffs/linux/mkspiffs-x64.bin",
|
||||
"arm": "./mkspiffs/linux/mkspiffs-arm.bin"
|
||||
},
|
||||
"darwin": {
|
||||
"x64": "./mkspiffs/darwin/mkspiffs.bin",
|
||||
"arm": "./mkspiffs/darwin/mkspiffs.bin"
|
||||
},
|
||||
"win32": {
|
||||
"x32": "./mkspiffs/win32/mkspiffs.exe",
|
||||
"x64": "./mkspiffs/win32/mkspiffs.exe"
|
||||
}
|
||||
},
|
||||
"mklittlefs": {
|
||||
"version": "3.2.0",
|
||||
"linux": {
|
||||
"x32": "./mklittlefs/linux/mklittlefs-x64.bin",
|
||||
"x64": "./mklittlefs/linux/mklittlefs-x64.bin",
|
||||
"arm": "./mklittlefs/linux/mklittlefs-arm.bin"
|
||||
},
|
||||
"darwin": {
|
||||
"x64": "./mklittlefs/darwin/mklittlefs.bin",
|
||||
"arm": "./mklittlefs/darwin/mklittlefs.bin"
|
||||
},
|
||||
"win32": {
|
||||
"x32": "./mklittlefs/win32/mklittlefs-x32.exe",
|
||||
"x64": "./mklittlefs/win32/mklittlefs-x64.exe"
|
||||
}
|
||||
}
|
||||
};
|
||||
29
boards/default_src/arduino_esp8266/mixly-modules/loader.js
Normal file
29
boards/default_src/arduino_esp8266/mixly-modules/loader.js
Normal file
@@ -0,0 +1,29 @@
|
||||
import { Workspace, ContextMenu } from 'mixly';
|
||||
import FSArduEsp8266Handler from './fs-board-handler';
|
||||
import { Msg } from 'blockly/core';
|
||||
|
||||
export default function addBoardFSItem () {
|
||||
const mainWorkspace = Workspace.getMain();
|
||||
const statusBarsManager = mainWorkspace.getStatusBarsManager();
|
||||
const dropdownMenu = statusBarsManager.getDropdownMenu();
|
||||
const menu = dropdownMenu.getItem('menu');
|
||||
menu.add({
|
||||
weight: 2,
|
||||
type: 'sep1',
|
||||
data: '---------'
|
||||
});
|
||||
menu.add({
|
||||
weight: 3,
|
||||
type: 'filesystem-tool',
|
||||
data: {
|
||||
isHtmlName: true,
|
||||
name: ContextMenu.getItem(Msg.BOARD_FS, ''),
|
||||
callback: () => {
|
||||
statusBarsManager.add('board-fs', 'board-fs', Msg.BOARD_FS, Msg.BOARD_FS);
|
||||
statusBarsManager.changeTo('board-fs');
|
||||
const fsStatusBar = statusBarsManager.getStatusBarById('board-fs');
|
||||
fsStatusBar.setHandler(new FSArduEsp8266Handler());
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
9
boards/default_src/arduino_esp8266/mixly-modules/menu.js
Normal file
9
boards/default_src/arduino_esp8266/mixly-modules/menu.js
Normal file
@@ -0,0 +1,9 @@
|
||||
export default [
|
||||
{
|
||||
id: 'littlefs',
|
||||
text: 'littlefs'
|
||||
}, {
|
||||
id: 'spiffs',
|
||||
text: 'spiffs'
|
||||
}
|
||||
];
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
1101
boards/default_src/arduino_esp8266/origin/config.json
Normal file
1101
boards/default_src/arduino_esp8266/origin/config.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 2.0 Beta11" board="Arduino ESP8266@Generic ESP8266 Module" xmlns="http://www.w3.org/1999/xhtml"><block type="base_setup" id="K8YD0`WZdrz}kh[$!P#C" x="0" y="0"><statement name="DO"><block type="serial_begin" id="T{6=cLU=KJZl82N{rTA%"><field name="serial_select">Serial</field><value name="CONTENT"><shadow type="math_number" id="NKEs$]{60-D1Q8qY$)VC"><field name="NUM">115200</field></shadow></value><next><block type="WIFI_info" id="|P%PM5hwLmy/--{{UH-F"><value name="SSID"><shadow type="text" id="B+2Ml.mEpx:#{AEE@Ejk"><field name="TEXT">ssid</field></shadow></value><value name="PWD"><shadow type="text" id="GnE[SUu^a[;C?j2YBlrb"><field name="TEXT">password</field></shadow></value><next><block type="MQTT_server" id="S=*T:!l~mm6AY?@*A;{L"><value name="server_add"><shadow type="text" id="Ca%W#$L#gu9o*yI][BRb"><field name="TEXT">39.98.114.122</field></shadow></value><value name="server_port"><shadow type="math_number" id="3OLX3/_BPIow-F^J}23q"><field name="NUM">1883</field></shadow></value><value name="IOT_ID"><shadow type="text" id="Z?GjjUdSCcSM@LiHN}l+"><field name="TEXT">siot</field></shadow></value><value name="IOT_PWD"><shadow type="text" id="3qnvwQu.|@qYI{l^gkQI"><field name="TEXT">siot</field></shadow></value><value name="Client_ID"><shadow type="text" id="emsiy)psQ2(yYumBpF,{"><field name="TEXT">ID</field></shadow></value></block></next></block></next></block></statement></block><block type="simple_timer" id="[u=@XBR,{*F1`wU:7S#d" x="0" y="331"><field name="NO">1</field><value name="timein"><shadow type="math_number" id="^[T@5h]zuI+/nX)mgjUZ"><field name="NUM">1000</field></shadow></value><statement name="zxhs"><block type="MQTT_publish" id="9KP(}PKH^$tb@Qrn-xl$"><field name="Topic">Topic</field><value name="data"><shadow type="math_number" id="|AcQ#f/zi7-^.`rp4=GB"><field name="NUM">120</field></shadow></value></block></statement></block><block type="MQTT_subscribe" id="U@fEBy9_YXJp(R#krXpj" x="-9" y="437"><field name="Topic_0">Topic_0</field><statement name="DO0"><block type="serial_println" id="skqRg$su@1McV1!mMwYs"><field name="serial_select">Serial</field><field name="new_line">println</field><value name="CONTENT"><block type="MQTT_subscribe_value" id="D5#UkJT?H$SW3V!OJXxu"><field name="Topic_0">Topic_0</field></block></value></block></statement></block></xml>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 2.0 Beta11" board="Arduino ESP8266@Generic ESP8266 Module" xmlns="http://www.w3.org/1999/xhtml"><block type="blynk_server" id="q=N7)ba@cJ~oKa9^bp3B" x="0" y="0"><value name="server_add"><shadow type="text" id="*Es+ZjL,Bl56L!,]-aY)"><field name="TEXT"></field></shadow></value><value name="wifi_ssid"><shadow type="text" id="Z`-8?G~!FnzL%rl@[=UP"><field name="TEXT">wifi-ssid</field></shadow></value><value name="wifi_pass"><shadow type="text" id="j@jD791woyhBBQ$QC~-L"><field name="TEXT">wifi-pass</field></shadow></value><value name="auth_key"><shadow type="text" id="Q;9gW29_7P3nuueH@dj}"><field name="TEXT">d9efdd0413ec4b74ab0057a0b8675654</field></shadow></value></block><block type="base_setup" id=")zzvjCG35lm.JDGQZa(~" x="0" y="163"><statement name="DO"><block type="display_rgb_init" id="dgPkXeQ;P5Tm$,O}l4X^"><field name="PIN">12</field><field name="TYPE">NEO_GRB</field><value name="LEDCOUNT"><shadow type="math_number" id="Q@do8SU6ZVurUs]bCvWJ"><field name="NUM">4</field></shadow></value><next><block type="display_rgb_Brightness" id="ukxVnoc)~sl%T)jmYS^."><field name="PIN">12</field><value name="Brightness"><shadow type="math_number" id="j1du@E?^wU#t5Fx^b4iY"><field name="NUM">20</field></shadow></value></block></next></block></statement></block><block type="blynk_iot_get_data" id="$S.[r9aoW8XzyKM(7Hl#" x="0" y="303"><mutation xmlns="http://www.w3.org/1999/xhtml"><arg name="R" vartype="int"></arg><arg name="G" vartype="int"></arg><arg name="B" vartype="int"></arg></mutation><field name="Vpin">V0</field><statement name="STACK"><block type="display_rgb" id="r10^C!DLI]btp7JwLh,L"><field name="PIN">12</field><value name="_LED_"><shadow type="math_number" id="6uF9tBKY9h859VO/?{RS"><field name="NUM">1</field></shadow></value><value name="COLOR"><shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number"><field name="NUM">\n </field></shadow><block type="RGB_color_rgb" id=".TF*]EEljeP-Tp/6F@l^"><value name="R"><shadow type="math_number" id="*5{XeiyzUhC2XpJ^sPDx"><field name="NUM">R</field></shadow></value><value name="G"><shadow type="math_number" id="060w$8b^V^d|8S1^SMXa"><field name="NUM">G</field></shadow></value><value name="B"><shadow type="math_number" id="bpMoI+;w#n7AD%x3!RI8"><field name="NUM">B</field></shadow></value></block></value><next><block type="display_rgb_show" id="I,]M^}DOz`I1X*aErQk}"><field name="PIN">12</field></block></next></block></statement></block></xml>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 2.0 Beta11" board="Arduino ESP8266@Generic ESP8266 Module" xmlns="http://www.w3.org/1999/xhtml"><block type="blynk_server" id="p/!#MT4.V,SjXAlMP#e/" x="-5" y="3"><value name="server_add"><shadow type="text" id="X}3n*tTG|8v4v=CQBNMi"><field name="TEXT"></field></shadow></value><value name="wifi_ssid"><shadow type="text" id=",@9XKXtHtN1yQh]mV4f*"><field name="TEXT">wifi-ssid</field></shadow></value><value name="wifi_pass"><shadow type="text" id="R;B*!8lf`/53KgM{*HaI"><field name="TEXT">wifi-pass</field></shadow></value><value name="auth_key"><shadow type="text" id="Uq_U9vZ7Q#z2l-Jcyw.0"><field name="TEXT">d9efdd0413ec4b74ab0057a0b8675654</field></shadow></value></block><block type="blynk_iot_get_data" id="awP.TjEYfp+d^tGVEy/P" x="0" y="163"><mutation xmlns="http://www.w3.org/1999/xhtml"><arg name="vpin_value" vartype="int"></arg></mutation><field name="Vpin">V0</field><statement name="STACK"><block type="serial_println" id="vf#st9lZqjqfa#GL~=48"><field name="serial_select">Serial</field><field name="new_line">println</field><value name="CONTENT"><block type="variables_get" id="t/-evP{X9iZc;zT5dABz"><field name="VAR">vpin_value</field></block></value><next><block type="servo_move" id="%2|`3VdL8jI5SLSF)O}="><field name="PIN">12</field><value name="DEGREE"><shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number" id="S*ItD#^+2#qo3=emSD2S"><field name="NUM">0</field></shadow><block type="variables_get" id="en}0(3Ej1riFHE{Qb},q"><field name="VAR">vpin_value</field></block></value><value name="DELAY_TIME"><shadow type="math_number" id="KWN0{)Qp=A4ldIeA9!#J"><field name="NUM">200</field></shadow></value></block></next></block></statement></block></xml>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 2.0 Beta11" board="Arduino ESP8266@Generic ESP8266 Module" xmlns="http://www.w3.org/1999/xhtml"><block type="blynk_server" id="U^c~|vW)e:rHRx),vNVC" x="0" y="0"><value name="server_add"><shadow type="text" id="Ij/yD:vRf^FS*U$tEk`?"><field name="TEXT"></field></shadow></value><value name="wifi_ssid"><shadow type="text" id=",c=BNLUN=cM]iWZMGX3I"><field name="TEXT">wifi-ssid</field></shadow></value><value name="wifi_pass"><shadow type="text" id="zS9J(9ubRwb%]BQnTt13"><field name="TEXT">wifi-pass</field></shadow></value><value name="auth_key"><shadow type="text" id="~2E(nr]cAisWW5}s,s(o"><field name="TEXT">d9efdd0413ec4b74ab0057a0b8675654</field></shadow></value><next><block type="blynk_bridge_auth" id="=_4s9.iSQ]@nHd:=+zZd"><field name="Vpin">V0</field><value name="auth"><shadow type="text" id="(Mdo/5U;,XIT0HgN:`YX"><field name="TEXT">e8d3214523d148a1beacc8022af22553d</field></shadow></value></block></next></block><block type="Blynk_iot_timer" id="$l7#EE/`Kslv/N-h=Pzd" x="0" y="204"><field name="timerNo">1</field><value name="TIME"><shadow type="math_number" id="(ac:Xox?9JGZgl+!7w~}"><field name="NUM">1000</field></shadow></value><statement name="DO"><block type="controls_if" id="4ro(+3o+p`B-ZJ}trCSs"><mutation xmlns="http://www.w3.org/1999/xhtml" else="1"></mutation><value name="IF0"><block type="inout_digital_read2" id="TD*mK+PTDd|8_TA(2P(,"><value name="PIN"><shadow type="pins_digital" id="SSKvs0*_#LoAJ/?5dqoT"><field name="PIN">12</field></shadow></value></block></value><statement name="DO0"><block type="blynk_bridge_digitalWrite" id="[(CQ5F!}Cr9w+7;kNd$b"><field name="Vpin">V0</field><value name="PIN"><shadow type="pins_digital" id="$f)e=lXNzeUt{W:vXS8Q"><field name="PIN">2</field></shadow></value><value name="STAT"><shadow type="inout_highlow" id=")YXbhiNRVt)kFFiets4)"><field name="BOOL">HIGH</field></shadow></value></block></statement><statement name="ELSE"><block type="blynk_bridge_digitalWrite" id="N?.:R9=EVCDg,pEwB5ml"><field name="Vpin">V0</field><value name="PIN"><shadow type="pins_digital" id="qNwS/B/-vY1WULznX2KL"><field name="PIN">2</field></shadow></value><value name="STAT"><shadow type="inout_highlow" id="A{)x!*pC*Xxa9f4$S~K/"><field name="BOOL">LOW</field></shadow></value></block></statement></block></statement></block></xml>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 2.0 Beta11" board="Arduino ESP8266@Generic ESP8266 Module" xmlns="http://www.w3.org/1999/xhtml"><block type="blynk_server" id="K}4o1WcPLt:kjtkr;Wub" x="0" y="0"><value name="server_add"><shadow type="text" id="OzZpu+cZRwY=gOcOXcLu"><field name="TEXT">116.62.49.166</field></shadow></value><value name="wifi_ssid"><shadow type="text" id="c6]BZci||i-fM^+OvsRi"><field name="TEXT">wifi-ssid</field></shadow></value><value name="wifi_pass"><shadow type="text" id="G,JwZm%C(SZY(cSLO@4L"><field name="TEXT">wifi-pass</field></shadow></value><value name="auth_key"><shadow type="text" id="EE7dSM3e48l?HlK|rTVs"><field name="TEXT">d9efdd0413ec4b74ab0057a0b8675654</field></shadow></value><next><block type="oled_init" id="[^EgBY)m*iK+!P.k7~[-"><field name="OLED_TYPE">SSD1306_128X64_NONAME</field><field name="NAME">u8g2</field><field name="ROTATION">U8G2_R0</field><field name="SCL">5</field><field name="SDA">4</field><value name="ADDRESS"><shadow type="math_number" id="j;OGvEI@M?tlLRS6f$-r"><field name="NUM">0x3C</field></shadow></value><next><block type="variables_declare" id=".+j;5VyVYDweN}xwyo(j"><field name="variables_type">global_variate</field><field name="VAR">temp</field><field name="TYPE">int</field><value name="VALUE"><block type="DHT" id="-h@-XAUDR(RyU`+Q9H1N"><field name="TYPE">11</field><field name="PIN">12</field><field name="WHAT">temperature</field></block></value><next><block type="variables_declare" id="G$]P,WllO/xZNX1)*ELM"><field name="variables_type">global_variate</field><field name="VAR">hum</field><field name="TYPE">int</field><value name="VALUE"><block type="DHT" id="^=i}NS;`fP5z9-zsrv@d"><field name="TYPE">11</field><field name="PIN">12</field><field name="WHAT">humidity</field></block></value></block></next></block></next></block></next></block><block type="simple_timer" id="F,u2Ja[gy3;tsKM:kz9b" x="0" y="252"><field name="NO">1</field><value name="timein"><shadow type="math_number" id="+~g2qG(um[*xsu.D[^%5"><field name="NUM">1000</field></shadow></value><statement name="zxhs"><block type="oled_page" id="2%y_Pk23Pa`~M+(L84p7"><field name="NAME">u8g2</field><statement name="DO"><block type="procedures_callnoreturn" id="8o82zXQDpUGO[8=+zwQV"><mutation xmlns="http://www.w3.org/1999/xhtml" name="page1"></mutation></block></statement></block></statement></block><block type="procedures_defnoreturn" id="`{u+DtI4Ma5],#g9;R]V" x="0" y="394"><field name="NAME">page1</field><statement name="STACK"><block type="oled_set_CN_Font" id="Ye~X4ZJJD$60{+^{axh)"><field name="NAME">u8g2</field><field name="FONT_NAME">_t_gb2312a</field><field name="FONT_SIZE">wqy12</field><next><block type="oled_print" id="k1Xqu90w3XSgUIm^8VYy"><field name="NAME">u8g2</field><value name="POS_X"><shadow type="math_number" id="wA{Ufu;Vg=~-wq?UiO[j"><field name="NUM">10</field></shadow></value><value name="POS_Y"><shadow type="math_number" id="J~b!V^u4G^%T,z*jy-*B"><field name="NUM">0</field></shadow></value><value name="TEXT"><shadow type="text" id="F6s=,9NG*TKwDL{radN("><field name="TEXT">校园气象站</field></shadow></value><next><block type="oled_print" id="p}d8$9]9P1keB#X4/BbT"><field name="NAME">u8g2</field><value name="POS_X"><shadow type="math_number" id="B_V!FJ6h-txQy0]=fD)B"><field name="NUM">10</field></shadow></value><value name="POS_Y"><shadow type="math_number" id="uC4l+|urqHY979x|9I#N"><field name="NUM">20</field></shadow></value><value name="TEXT"><shadow xmlns="http://www.w3.org/1999/xhtml" type="text" id="F6s=,9NG*TKwDL{radN("><field name="TEXT">1234</field></shadow><block type="text_join" id="F{s5Ii;R-u`N.;SInqT#"><value name="A"><shadow type="text" id="dG+c(4Ybb?C/zjhjb7LX"><field name="TEXT">温度:</field></shadow></value><value name="B"><shadow xmlns="http://www.w3.org/1999/xhtml" type="text" id="zgu4u[6G[YFG:Poc,+t|"><field name="TEXT">Mixly</field></shadow><block type="variables_get" id="hSm20F?o|q-F7J!rJX{S"><field name="VAR">temp</field></block></value></block></value><next><block type="oled_print" id="DTY-0;lQ:xap]Rq|%OJ{"><field name="NAME">u8g2</field><value name="POS_X"><shadow type="math_number" id="4m`zWMcNV`QoYG2DC0O*"><field name="NUM">10</field></shadow></value><value name="POS_Y"><shadow type="math_number" id="US9#[D%6/:FzHzt!*@EV"><field name="NUM">40</field></shadow></value><value name="TEXT"><shadow xmlns="http://www.w3.org/1999/xhtml" type="text" id="F6s=,9NG*TKwDL{radN("><field name="TEXT">1234</field></shadow><block type="text_join" id="BqRQj]-I:0OHsQ7!;fR9"><value name="A"><shadow type="text" id="Pq$?ZtfZd!R5+65|)7~8"><field name="TEXT">湿度:</field></shadow></value><value name="B"><shadow xmlns="http://www.w3.org/1999/xhtml" type="text" id="zgu4u[6G[YFG:Poc,+t|"><field name="TEXT">Mixly</field></shadow><block type="variables_get" id="(nM432TNXJ$3JV]-8AaV"><field name="VAR">hum</field></block></value></block></value></block></next></block></next></block></next></block></statement></block></xml>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 2.0 Beta11" board="Arduino ESP8266@Generic ESP8266 Module" xmlns="http://www.w3.org/1999/xhtml"><block type="blynk_server" id="m.rFsbJh?To_N$J*|sCG" x="0" y="0"><value name="server_add"><shadow type="text" id="(56Y^e0]2Wz#]v~tf.eA"><field name="TEXT"></field></shadow></value><value name="wifi_ssid"><shadow type="text" id="0#,d!T~VDpFb}`]gT]f0"><field name="TEXT">wifi-ssid</field></shadow></value><value name="wifi_pass"><shadow type="text" id="=Qbr4UpA5V(];K_GR5A#"><field name="TEXT">wifi-pass</field></shadow></value><value name="auth_key"><shadow type="text" id=".0w4Gpb_R0WIc-@3%/{Z"><field name="TEXT">d9efdd0413ec4b74ab0057a0b8675654</field></shadow></value><next><block type="oled_init" id="~:eoZ$I(o|~{J$e]o8Q}"><field name="OLED_TYPE">SSD1306_128X64_NONAME</field><field name="NAME">u8g2</field><field name="ROTATION">U8G2_R0</field><field name="SCL">5</field><field name="SDA">4</field><value name="ADDRESS"><shadow type="math_number" id="(Ewg`]|t^z,s:|EV6Tgd"><field name="NUM">0x3C</field></shadow></value></block></next></block><block type="procedures_defnoreturn" id="4iW3AIC!tG#.vIlhO2N+" x="0" y="200"><field name="NAME">page1</field><statement name="STACK"><block type="oled_set_CN_Font" id="E`eXD3`?7lFbzUgJDBA."><field name="NAME">u8g2</field><field name="FONT_NAME">_t_gb2312a</field><field name="FONT_SIZE">wqy12</field><next><block type="oled_print" id="~nH#J|a0=v1Ffp,2f=aC"><field name="NAME">u8g2</field><value name="POS_X"><shadow type="math_number" id="sFUfc#P+5/(U[U:Wp{+l"><field name="NUM">0</field></shadow></value><value name="POS_Y"><shadow type="math_number" id="0`=Nf6K9A}/.-HC!E}96"><field name="NUM">0</field></shadow></value><value name="TEXT"><shadow xmlns="http://www.w3.org/1999/xhtml" type="text" id=")PN891(r6agWM.ot$4U("><field name="TEXT">1234</field></shadow><block type="variables_get" id="sFt{|v[:k6{A7fu23}rq"><field name="VAR">message</field></block></value></block></next></block></statement></block><block type="blynk_iot_get_data" id="d`Aq9rFTXOaU^=-K@BSA" x="0" y="329"><mutation xmlns="http://www.w3.org/1999/xhtml"><arg name="message" vartype="String"></arg></mutation><field name="Vpin">V0</field><statement name="STACK"><block type="serial_println" id="UOgXJ6~0ThY+Uv3[{ZV7"><field name="serial_select">Serial</field><field name="new_line">println</field><value name="CONTENT"><block type="variables_get" id="EmBz$_$AGkH]-sQjGH9Q"><field name="VAR">message</field></block></value><next><block type="oled_page" id="zaKo/PF@pkg*xcG]DeaH"><field name="NAME">u8g2</field><statement name="DO"><block type="procedures_callnoreturn" id="?p+UD8|sx~BkagqS=ghh"><mutation xmlns="http://www.w3.org/1999/xhtml" name="page1"></mutation></block></statement></block></next></block></statement></block></xml>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 2.0 Beta11" board="Arduino ESP8266@Generic ESP8266 Module" xmlns="http://www.w3.org/1999/xhtml"><block type="blynk_server" id="5g/J;M[S@M/M$FX*}1@L" x="5" y="91"><value name="server_add"><shadow type="text" id="8*p;y#w7=}Q7!0Q#A/`O"><field name="TEXT"></field></shadow></value><value name="wifi_ssid"><shadow type="text" id="3#h-MIS7#~hR`}w`AB!i"><field name="TEXT">wifi-ssid</field></shadow></value><value name="wifi_pass"><shadow type="text" id="9=MCBR^OOqu5+Jl@_GrK"><field name="TEXT">wifi-pass</field></shadow></value><value name="auth_key"><shadow type="text" id="2PsHHx3!@c,90lKRRz8."><field name="TEXT">d9efdd0413ec4b74ab0057a0b8675654</field></shadow></value></block></xml>
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 2.0 rc2" board="Arduino ESP8266@WeMos D1 R1"><block type="base_setup" id="(yKS~^D:8cgzSYG?UGWY" x="0" y="0"><statement name="DO"><block type="serial_begin" id="V7)_$e38aw`6bk89kZYU"><field name="serial_select">Serial</field><value name="CONTENT"><shadow type="math_number" id="CW{(i2#@ybUp3[XQI~D]"><field name="NUM">115200</field></shadow></value><next><block type="WIFI_info" id="]{jtD_pSvka~JaMo.M,b"><value name="SSID"><shadow type="text" id="kFT|)?*er$5Uou8)9@(E"><field name="TEXT"></field></shadow></value><value name="PWD"><shadow type="text" id="D:gJ:;*vv{]eI=28!~nn"><field name="TEXT"></field></shadow></value><next><block type="MQTT_server" id="PKuvoX]E1_OG.(hgWR*l"><comment pinned="true" h="80" w="160">连接df的easy iot服务器时,项目ID必须留空</comment><value name="server_add"><shadow type="text" id="sB`:71-GSoCJepDMGAQq"><field name="TEXT">iot.dfrobot.com.cn</field></shadow></value><value name="server_port"><shadow type="math_number" id="Us#H)@ZC_dG+9u}h`YfX"><field name="NUM">1883</field></shadow></value><value name="IOT_ID"><shadow type="text" id="-p)*#m]R*4!i3oZd`}H)"><field name="TEXT">55hNFlj7g</field></shadow></value><value name="IOT_PWD"><shadow type="text" id="P+6r^oAD#au4D{N.mBhu"><field name="TEXT">cchNK_j7g</field></shadow></value><value name="Client_ID"><shadow type="text" id="(]H~.R$|~4=db{|9h5XU"><field name="TEXT"></field></shadow></value></block></next></block></next></block></statement></block><block type="controls_if" id=":VRV-WE3Rt4=L/xW`C*Z" x="0" y="330"><value name="IF0"><block type="inout_digital_read2" id="w/OR`Z[:FPcAg``QO[~9"><value name="PIN"><shadow type="pins_digital" id="}I$@qhu$_yL?_GG{_DgL"><field name="PIN">0</field></shadow></value></block></value><statement name="DO0"><block type="serial_println" id="2g]9cm9gpZZ6T]`+}ix8"><field name="serial_select">Serial</field><field name="new_line">println</field><value name="CONTENT"><block type="text" id="mn;a!qhLPv`9$$yXu|X6"><field name="TEXT">hello</field></block></value><next><block type="MQTT_publish" id=".e~TF~-]aeELv^;?{eu)"><field name="Topic">Iv_SEca7g</field><value name="data"><shadow type="math_number" id="}^T`$MHA(0:ba}.q|_eF"><field name="NUM">120</field></shadow></value></block></next></block></statement></block></xml><code>CiNpbmNsdWRlIDxFU1A4MjY2V2lGaS5oPgojaW5jbHVkZSAiQWRhZnJ1aXRfTVFUVC5oIgojaW5jbHVkZSAiQWRhZnJ1aXRfTVFUVF9DbGllbnQuaCIKV2lGaUNsaWVudCBjbGllbnQ7CgpBZGFmcnVpdF9NUVRUX0NsaWVudCBtcXR0KCZjbGllbnQsICJpb3QuZGZyb2JvdC5jb20uY24iLCAxODgzLCAiNTVoTkZsajdnIiwgImNjaE5LX2o3ZyIpOwp2b2lkIE1RVFRfY29ubmVjdCgpOwp2b2lkIE1RVFRfY29ubmVjdCgpIHsKICBpbnQ4X3QgcmV0OwogIGlmIChtcXR0LmNvbm5lY3RlZCgpKSB7CiAgICByZXR1cm47CiAgfQogIFNlcmlhbC5wcmludCgiQ29ubmVjdGluZyB0byBNUVRULi4uICIpOwogIHVpbnQ4X3QgcmV0cmllcyA9IDM7CiAgd2hpbGUgKChyZXQgPSBtcXR0LmNvbm5lY3QoKSkgIT0gMCkgewogICAgU2VyaWFsLnByaW50bG4obXF0dC5jb25uZWN0RXJyb3JTdHJpbmcocmV0KSk7CiAgICBTZXJpYWwucHJpbnRsbigiUmV0cnlpbmcgTVFUVCBjb25uZWN0aW9uIGluIDUgc2Vjb25kcy4uLiIpOwogICAgbXF0dC5kaXNjb25uZWN0KCk7CiAgICBkZWxheSg1MDAwKTsKICAgIHJldHJpZXMtLTsKICAgIGlmIChyZXRyaWVzID09IDApIHsKICAgICAgd2hpbGUgKDEpOwogICAgfQogIH0KICBTZXJpYWwucHJpbnRsbigiTVFUVCBDb25uZWN0ZWQhIik7Cn0KCkFkYWZydWl0X01RVFRfUHVibGlzaCBNUVRUX1RvcGljX0l2X1NFY2E3ZyA9IEFkYWZydWl0X01RVFRfUHVibGlzaCgmbXF0dCwgIkl2X1NFY2E3ZyIpOwoKdm9pZCBzZXR1cCgpewogIFNlcmlhbC5iZWdpbigxMTUyMDApOwogIFdpRmkuYmVnaW4oIiIsICIiKTsKICB3aGlsZSAoV2lGaS5zdGF0dXMoKSAhPSBXTF9DT05ORUNURUQpIHsKICAgIGRlbGF5KDUwMCk7CiAgICBTZXJpYWwucHJpbnQoIi4iKTsKICB9CiAgU2VyaWFsLnByaW50bG4oIkxvY2FsIElQOiIpOwogIFNlcmlhbC5wcmludChXaUZpLmxvY2FsSVAoKSk7CgogIC8vIOi/nuaOpWRm55qEZWFzeSBpb3TmnI3liqHlmajml7bvvIzpobnnm65JROW/hemhu+eVmeepugogIE1RVFRfY29ubmVjdCgpOwogIHBpbk1vZGUoMCwgSU5QVVQpOwp9Cgp2b2lkIGxvb3AoKXsKICBpZiAoZGlnaXRhbFJlYWQoMCkpIHsKICAgIFNlcmlhbC5wcmludGxuKCJoZWxsbyIpOwogICAgTVFUVF9Ub3BpY19Jdl9TRWNhN2cucHVibGlzaCgxMjApOwoKICB9Cgp9</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 2.0 Beta11" board="Arduino ESP8266@Generic ESP8266 Module" xmlns="http://www.w3.org/1999/xhtml"><block type="base_setup" id="X,T{e3m|sw.xt9[900Bf" x="0" y="0"><statement name="DO"><block type="serial_begin" id="/;;jy)nz*2Cp${m6z71z"><field name="serial_select">Serial</field><value name="CONTENT"><shadow type="math_number" id="=_3Y08AX?!FkAz~H*R[y"><field name="NUM">9600</field></shadow></value><next><block type="WIFI_info" id="S$tHl7DIRU+C9av(RXBp"><value name="SSID"><shadow type="text" id="oMWhd}*{18)_[q_+^+VC"><field name="TEXT">ssid</field></shadow></value><value name="PWD"><shadow type="text" id="wQ5RnB;mc`M59W/dpoO:"><field name="TEXT">password</field></shadow></value><next><block type="NTP_server" id="n|`h%#QFQux;A5VWU7pp"><value name="server_add"><shadow type="text" id="fs0E:thT;kC/R0Z6vb*Z"><field name="TEXT">ntp1.aliyun.com</field></shadow></value><value name="timeZone"><shadow type="math_number" id="CZ/g~6i,}Y]_%c!o}=M5"><field name="NUM">8</field></shadow></value><value name="Interval"><shadow type="math_number" id="S,@RlPy3--pz|pxZ4qYC"><field name="NUM">600</field></shadow></value></block></next></block></next></block></statement></block><block type="simple_timer" id=",0yNeH?U/^V77d)yi|C%" x="0" y="247"><field name="NO">1</field><value name="timein"><shadow type="math_number" id="C]%ZSHbJS5Qv0Gs8yjzJ"><field name="NUM">1000</field></shadow></value><statement name="zxhs"><block type="serial_print" id="1p/:%I,{HXQ!,DmrvF]~"><field name="serial_select">Serial</field><field name="new_line">print</field><value name="CONTENT"><block type="NTP_server_get_time" id="7OHc^Gm]=gDrK#Gt$41d"><field name="TIME_TYPE">NTP.getDateYear()</field></block></value><next><block type="serial_print" id=",1^i(xLuQsz^oKc_oKlv"><field name="serial_select">Serial</field><field name="new_line">print</field><value name="CONTENT"><block type="text_char" id="f*vGaBOSZkiOuP;8ry/,"><field name="TEXT">-</field></block></value><next><block type="serial_print" id="#nR=EEoVUHF_zc@W.o#*"><field name="serial_select">Serial</field><field name="new_line">print</field><value name="CONTENT"><block type="NTP_server_get_time" id="{H),jrZw;+Ri`]?7LZK^"><field name="TIME_TYPE">NTP.getDateMonth()</field></block></value><next><block type="serial_print" id="M-_+Si8lQbPjrjg7(mk9"><field name="serial_select">Serial</field><field name="new_line">print</field><value name="CONTENT"><block type="text_char" id="0qhi~=1~!)Fzx]IGU^Pp"><field name="TEXT">-</field></block></value><next><block type="serial_println" id="VG105Xgt,_Q~r72r_-CB"><field name="serial_select">Serial</field><field name="new_line">println</field><value name="CONTENT"><block type="NTP_server_get_time" id="u/}YUh5Zr#n|QZl=nnb8"><field name="TIME_TYPE">NTP.getDateDay()</field></block></value><next><block type="serial_print" id="SOW4)k:SJTb@uwFHY7Zb"><field name="serial_select">Serial</field><field name="new_line">print</field><value name="CONTENT"><block type="NTP_server_get_time" id="D*e0$Mp=}P]m-.WFqSKX"><field name="TIME_TYPE">NTP.getTimeHour24()</field></block></value><next><block type="serial_print" id="Gxv.xT$}@iHTrB:P6+FR"><field name="serial_select">Serial</field><field name="new_line">print</field><value name="CONTENT"><block type="text_char" id="#fV#[3huip(Y;kb{Sex$"><field name="TEXT">:</field></block></value><next><block type="serial_print" id="t3Eo0k;|lzHB$R(5|JMP"><field name="serial_select">Serial</field><field name="new_line">print</field><value name="CONTENT"><block type="NTP_server_get_time" id="0|P3CDs[yN,TYL7w/EX_"><field name="TIME_TYPE">NTP.getTimeMinute()</field></block></value><next><block type="serial_print" id="9v$,0(Vww#ti,;XaFx[k"><field name="serial_select">Serial</field><field name="new_line">print</field><value name="CONTENT"><block type="text_char" id=".E69![]toct!%NnLoorY"><field name="TEXT">:</field></block></value><next><block type="serial_println" id="9=r7eT%AnR]Y{qP]GjqJ"><field name="serial_select">Serial</field><field name="new_line">println</field><value name="CONTENT"><block type="NTP_server_get_time" id="*MFKC#Vm$bBA?p(3)Rt["><field name="TIME_TYPE">NTP.getTimeSecond()</field></block></value></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block></xml>
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 2.0 Beta11" board="Arduino ESP8266@Generic ESP8266 Module" xmlns="http://www.w3.org/1999/xhtml"><block type="base_setup" id="KSVtjQdDio?h2}R?bo!O" x="0" y="0"><statement name="DO"><block type="WIFI_info" id="H9nXn[8]ywuE|FfCv3uA"><value name="SSID"><shadow type="text" id="$ra!a1KeOZ6:[h0~@Zw^"><field name="TEXT">ssid</field></shadow></value><value name="PWD"><shadow type="text" id="u$3!6(NtNb/#M2(o-b=o"><field name="TEXT">password</field></shadow></value><next><block type="NTP_server" id="wEh_M!u5SFXZE7%]n4b|"><value name="server_add"><shadow type="text" id="_ec:p,[3i0)uq#%9^kuL"><field name="TEXT">ntp1.aliyun.com</field></shadow></value><value name="timeZone"><shadow type="math_number" id="N%iwch,^Rl#J#ek+XtCw"><field name="NUM">8</field></shadow></value><value name="Interval"><shadow type="math_number" id="Rf^~]0+YILzpnl^/08S;"><field name="NUM">600</field></shadow></value><next><block type="display_TM1637_init" id="iYj)3`_a=f#pKy4YH~PB"><field name="NAME">display</field><field name="CLK">2</field><field name="DIO">4</field></block></next></block></next></block></statement></block><block type="simple_timer" id="SUJZl~JelJPfb8z9|w{/" x="0" y="236"><field name="NO">1</field><value name="timein"><shadow type="math_number" id="-_1JChs5[%x}@J(STZ4v"><field name="NUM">1000</field></shadow></value><statement name="zxhs"><block type="display_TM1637_displayTime" id="mnFk-xio#|*3y?yXVzPI"><field name="NAME">display</field><field name="STAT">true</field><value name="hour"><shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number" id="b8,okET#QsTow99A2]MT"><field name="NUM">12</field></shadow><block type="NTP_server_get_time" id="GCMN):mjgQe)3e.Qa[h_"><field name="TIME_TYPE">NTP.getTimeHour24()</field></block></value><value name="minute"><shadow xmlns="http://www.w3.org/1999/xhtml" type="math_number" id="h(BJ~b$}[Qu6zSKsJ^{N"><field name="NUM">30</field></shadow><block type="NTP_server_get_time" id="M123[jTPzt9WgXLp/,Z?"><field name="TIME_TYPE">NTP.getTimeMinute()</field></block></value></block></statement></block></xml>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 2.0 rc4" board="Arduino ESP8266@Generic ESP8266 Module"><block type="base_setup" id="BW;FlBf1=G?PkND`ijxA" x="-435" y="62"><statement name="DO"><block type="serial_begin" id="bf~pF7aXupJ`d!ni9{68"><field name="serial_select">Serial</field><value name="CONTENT"><shadow type="math_number" id="L6P8YTnXzqPD[tMuYoan"><field name="NUM">9600</field></shadow></value><next><block type="serial_print" id="H/W]`Rt#.-?a:RJwLa$M"><field name="serial_select">Serial</field><field name="new_line">println</field><value name="CONTENT"><block type="text" id="@I$Ng+4K()e}UF0,Xjp]"><field name="TEXT">=========Base64编解码=========</field></block></value><next><block type="serial_print" id="`d3Hh_Ti?-UY7wOY@vcf"><field name="serial_select">Serial</field><field name="new_line">println</field><value name="CONTENT"><block type="text_base64_url_codec" id="J8?H9Q.iIWq.rf(:w*PB"><field name="TYPE">BASE64</field><field name="OPTION">ENCODE</field><value name="VALUE"><shadow type="text" id="GDFKfTOw=UIpH-VEmz!/"><field name="TEXT">你好Mixly</field></shadow></value></block></value><next><block type="serial_print" id=")eo[4Lod8kDO_pDa?4lv"><field name="serial_select">Serial</field><field name="new_line">println</field><value name="CONTENT"><block type="text_base64_url_codec" id="0V2xn=os|pqjE#rZew3P"><field name="TYPE">BASE64</field><field name="OPTION">DECODE</field><value name="VALUE"><shadow type="text" id="=jqkwR}aVi!83kx1(0ky"><field name="TEXT">5L2g5aW9TWl4bHk=</field></shadow></value></block></value><next><block type="serial_print" id="#7K}Yhk3qhmV./bwQr5;"><field name="serial_select">Serial</field><field name="new_line">println</field><value name="CONTENT"><block type="text" id="ut3YM,rxoiYJXdvk23W^"><field name="TEXT">==========Url编解码===========</field></block></value><next><block type="serial_print" id="Aq^Vioo*xK={vh9e}@Vp"><field name="serial_select">Serial</field><field name="new_line">println</field><value name="CONTENT"><block type="text_base64_url_codec" id="s43sgBC4KQb+s{?,Z}K0"><field name="TYPE">URL</field><field name="OPTION">ENCODE</field><value name="VALUE"><shadow type="text" id=",bDlu;#x}f|b@ElFwUz1"><field name="TEXT">你好Mixly</field></shadow></value></block></value><next><block type="serial_print" id="x:kJ1HcUw_r,_A7qWP#s"><field name="serial_select">Serial</field><field name="new_line">println</field><value name="CONTENT"><block type="text_base64_url_codec" id="82A@G!l-zG-JQ5S0a,P6"><field name="TYPE">URL</field><field name="OPTION">DECODE</field><value name="VALUE"><shadow type="text" id="|75viF}9th~6=1-!TzT}"><field name="TEXT">%E4%BD%A0%E5%A5%BDMixly</field></shadow></value></block></value><next><block type="serial_print" id="5fmmL?u86:g6G[Q~E)_j"><field name="serial_select">Serial</field><field name="new_line">println</field><value name="CONTENT"><block type="text" id="cXmXosOy0Ir(s1{30/WN"><field name="TEXT">==============================</field></block></value></block></next></block></next></block></next></block></next></block></next></block></next></block></next></block></statement></block></xml><config>{"xtal":{"key":"80","label":"80 MHz"},"vt":{"key":"flash","label":"Flash"},"exception":{"key":"disabled","label":"Disabled (new aborts on oom)"},"stacksmash":{"key":"disabled","label":"Disabled"},"ssl":{"key":"all","label":"All SSL ciphers (most compatible)"},"mmu":{"key":"3232","label":"32KB cache + 32KB IRAM (balanced)"},"non32xfer":{"key":"fast","label":"Use pgm_read macros for IRAM/PROGMEM"},"ResetMethod":{"key":"nodemcu","label":"dtr (aka nodemcu)"},"CrystalFreq":{"key":"26","label":"26 MHz"},"FlashFreq":{"key":"40","label":"40MHz"},"FlashMode":{"key":"dout","label":"DOUT (compatible)"},"eesz":{"key":"1M64","label":"1MB (FS:64KB OTA:~470KB)"},"led":{"key":"2","label":"2"},"sdk":{"key":"nonosdk_190703","label":"nonos-sdk 2.2.1+100 (190703)"},"ip":{"key":"lm2f","label":"v2 Lower Memory"},"dbg":{"key":"Disabled","label":"Disabled"},"wipe":{"key":"none","label":"Only Sketch"},"baud":{"key":"115200","label":"115200"}}</config><code>CiNpbmNsdWRlIDxyQmFzZTY0Lmg+CiNpbmNsdWRlIDxVUkxDb2RlLmg+CgpVUkxDb2RlIHVybENvZGU7CgpTdHJpbmcgdXJsRW5jb2RlKFN0cmluZyB1cmxTdHIpIHsKICB1cmxDb2RlLnN0cmNvZGUgPSB1cmxTdHI7CiAgdXJsQ29kZS51cmxlbmNvZGUoKTsKICByZXR1cm4gdXJsQ29kZS51cmxjb2RlOwp9CgpTdHJpbmcgdXJsRGVjb2RlKFN0cmluZyB1cmxTdHIpIHsKICB1cmxDb2RlLnVybGNvZGUgPSB1cmxTdHI7CiAgdXJsQ29kZS51cmxkZWNvZGUoKTsKICByZXR1cm4gdXJsQ29kZS5zdHJjb2RlOwp9Cgp2b2lkIHNldHVwKCl7CiAgU2VyaWFsLmJlZ2luKDk2MDApOwogIFNlcmlhbC5wcmludGxuKCI9PT09PT09PT1CYXNlNjTnvJbop6PnoIE9PT09PT09PT0iKTsKICBTZXJpYWwucHJpbnRsbihyYmFzZTY0LmVuY29kZSgi5L2g5aW9TWl4bHkiKSk7CiAgU2VyaWFsLnByaW50bG4ocmJhc2U2NC5kZWNvZGUoIjVMMmc1YVc5VFdsNGJIaz0iKSk7CiAgU2VyaWFsLnByaW50bG4oIj09PT09PT09PT1VcmznvJbop6PnoIE9PT09PT09PT09PSIpOwogIFNlcmlhbC5wcmludGxuKHVybEVuY29kZSgi5L2g5aW9TWl4bHkiKSk7CiAgU2VyaWFsLnByaW50bG4odXJsRGVjb2RlKCIlRTQlQkQlQTAlRTUlQTUlQkRNaXhseSIpKTsKICBTZXJpYWwucHJpbnRsbigiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Iik7Cn0KCnZvaWQgbG9vcCgpewoKfQ==</code>
|
||||
82
boards/default_src/arduino_esp8266/origin/examples/map.json
Normal file
82
boards/default_src/arduino_esp8266/origin/examples/map.json
Normal file
@@ -0,0 +1,82 @@
|
||||
{
|
||||
"15-MQTT Send Message.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "15-MQTT Send Message.mix"
|
||||
},
|
||||
"Blynk-远程七彩灯.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "Blynk-远程七彩灯.mix"
|
||||
},
|
||||
"Blynk控制舵机.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "Blynk控制舵机.mix"
|
||||
},
|
||||
"Blynk无线桥接通信.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "Blynk无线桥接通信.mix"
|
||||
},
|
||||
"Blynk气象站.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "Blynk气象站.mix"
|
||||
},
|
||||
"Blynk留言机.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "Blynk留言机.mix"
|
||||
},
|
||||
"Blynk连接服务器.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "Blynk连接服务器.mix"
|
||||
},
|
||||
"MAX7219点阵时钟.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "MAX7219点阵时钟.mix"
|
||||
},
|
||||
"MQTT连接DF EASY_IOT.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "MQTT连接DF EASY_IOT.mix"
|
||||
},
|
||||
"NTP时间服务器.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "NTP时间服务器.mix"
|
||||
},
|
||||
"OLED网络时钟.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "OLED网络时钟.mix"
|
||||
},
|
||||
"TM1637网络时钟.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "TM1637网络时钟.mix"
|
||||
},
|
||||
"URL和Base64编解码.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "URL和Base64编解码.mix"
|
||||
},
|
||||
"使用http发送POST请求.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "使用http发送POST请求.mix"
|
||||
},
|
||||
"心知天气.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "心知天气.mix"
|
||||
},
|
||||
"旋转编码器读取数据.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "旋转编码器读取数据.mix"
|
||||
},
|
||||
"简明教程": {
|
||||
"AP模式一键配置网络与清除网络信息.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "AP模式一键配置网络与清除网络信息.mix"
|
||||
},
|
||||
"MQTT断线反馈与重连.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "MQTT断线反馈与重连.mix"
|
||||
},
|
||||
"网络连接超时优化.mix": {
|
||||
"__file__": true,
|
||||
"__name__": "网络连接超时优化.mix"
|
||||
},
|
||||
"__file__": false,
|
||||
"__name__": "简明教程"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 2.0 rc4" board="Arduino ESP8266@Generic ESP8266 Module"><block type="base_setup" id="*{6gvYug,:6](/yz?0+S" x="-581" y="-161"><statement name="DO"><block type="WIFI_info" id="dP9EFCJA?8mq~ZQ-2O9y"><value name="SSID"><shadow type="text" id="*THzNH#t95gyFB+6T+4,"><field name="TEXT">WIFI名称</field></shadow></value><value name="PWD"><shadow type="text" id="gg6Tl:ih7H*f~Sq1*o:e"><field name="TEXT">WIFI密码</field></shadow></value></block></statement></block><block type="http_post" id="q!ybIpE5MIFsXHF:xgAG" x="-578" y="-27"><field name="TYPE">POST</field><value name="api"><shadow type="text" id="U=C8wcqDr|/1L1,]BPuH"><field name="TEXT">http://IPAddress:3000/login/</field></shadow></value><value name="data"><shadow type="text" id=";Ff*NMEDul|#gt0TQi(P"><field name="TEXT">{\"name\":\"Mixly\"}</field></shadow></value><statement name="success"><block type="serial_println" id="Rm$e2lw|3~?cBayS}_dL"><field name="serial_select">Serial</field><field name="new_line">println</field><value name="CONTENT"><block type="variables_get" id="ZrX;qVMf-`AU76z/lbnE"><field name="VAR">Request_result</field></block></value></block></statement><statement name="failure"><block type="serial_println" id="1Hv2M~j]/xh9f+O{(N[U"><field name="serial_select">Serial</field><field name="new_line">println</field><value name="CONTENT"><block type="text" id="7gRGTJTmHNfnZ+y5mciZ"><field name="TEXT">Invalid response!</field></block></value></block></statement><next><block type="controls_delay" id="1bN(m7oCQ;+(E@+_7@zR"><field name="UNIT">delay</field><value name="DELAY_TIME"><shadow type="math_number" id="FlA;{ShbPi#L=MpX,_@E"><field name="NUM">1000</field></shadow></value></block></next></block></xml><config>{"xtal":{"key":"80","label":"80 MHz"},"vt":{"key":"flash","label":"Flash"},"exception":{"key":"disabled","label":"Disabled (new aborts on oom)"},"stacksmash":{"key":"disabled","label":"Disabled"},"ssl":{"key":"all","label":"All SSL ciphers (most compatible)"},"mmu":{"key":"3232","label":"32KB cache + 32KB IRAM (balanced)"},"non32xfer":{"key":"fast","label":"Use pgm_read macros for IRAM/PROGMEM"},"ResetMethod":{"key":"nodemcu","label":"dtr (aka nodemcu)"},"CrystalFreq":{"key":"26","label":"26 MHz"},"FlashFreq":{"key":"40","label":"40MHz"},"FlashMode":{"key":"dout","label":"DOUT (compatible)"},"eesz":{"key":"1M64","label":"1MB (FS:64KB OTA:~470KB)"},"led":{"key":"2","label":"2"},"sdk":{"key":"nonosdk_190703","label":"nonos-sdk 2.2.1+100 (190703)"},"ip":{"key":"lm2f","label":"v2 Lower Memory"},"dbg":{"key":"Disabled","label":"Disabled"},"wipe":{"key":"none","label":"Only Sketch"},"baud":{"key":"115200","label":"115200"}}</config><code>CiNpbmNsdWRlIDxFU1A4MjY2V2lGaS5oPgojaW5jbHVkZSA8RVNQODI2NkhUVFBDbGllbnQuaD4KCnZvaWQgc2V0dXAoKXsKICBXaUZpLmJlZ2luKCJXSUZJ5ZCN56ewIiwgIldJRknlr4bnoIEiKTsKICB3aGlsZSAoV2lGaS5zdGF0dXMoKSAhPSBXTF9DT05ORUNURUQpIHsKICAgIGRlbGF5KDUwMCk7CiAgICBTZXJpYWwucHJpbnQoIi4iKTsKICB9CiAgU2VyaWFsLnByaW50bG4oIkxvY2FsIElQOiIpOwogIFNlcmlhbC5wcmludChXaUZpLmxvY2FsSVAoKSk7CgogIFNlcmlhbC5iZWdpbig5NjAwKTsKfQoKdm9pZCBsb29wKCl7CiAgaWYgKFdpRmkuc3RhdHVzKCkgPT0gV0xfQ09OTkVDVEVEKSB7CiAgICBIVFRQQ2xpZW50IGh0dHA7CiAgICBXaUZpQ2xpZW50IGNsaWVudDsKICAgIGh0dHAuYmVnaW4oY2xpZW50LCAiaHR0cDovL0lQQWRkcmVzczozMDAwL2xvZ2luLyIpOwogICAgaHR0cC5hZGRIZWFkZXIoIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qc29uIik7CiAgICBpbnQgaHR0cENvZGUgPSBodHRwLlBPU1QoIntcIm5hbWVcIjpcIk1peGx5XCJ9Iik7CiAgICBpZiAoaHR0cENvZGUgPiAwKSB7CiAgICAgIFN0cmluZyBSZXF1ZXN0X3Jlc3VsdCA9IGh0dHAuZ2V0U3RyaW5nKCk7CiAgICAgIFNlcmlhbC5wcmludGxuKFJlcXVlc3RfcmVzdWx0KTsKICAgIH0gZWxzZSB7CiAgICAgIFNlcmlhbC5wcmludGxuKCJJbnZhbGlkIHJlc3BvbnNlISIpOwogICAgfQogICAgaHR0cC5lbmQoKTsKICB9CiAgZGVsYXkoMTAwMCk7Cgp9</code>
|
||||
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 2.0 Beta11" board="Arduino ESP8266@Generic ESP8266 Module" xmlns="http://www.w3.org/1999/xhtml"><block type="base_setup" id="X,T{e3m|sw.xt9[900Bf" x="0" y="0"><statement name="DO"><block type="serial_begin" id="/;;jy)nz*2Cp${m6z71z"><field name="serial_select">Serial</field><value name="CONTENT"><shadow type="math_number" id="=_3Y08AX?!FkAz~H*R[y"><field name="NUM">9600</field></shadow></value><next><block type="WIFI_info" id="S$tHl7DIRU+C9av(RXBp"><value name="SSID"><shadow type="text" id="oMWhd}*{18)_[q_+^+VC"><field name="TEXT">Xiaomi_0432</field></shadow></value><value name="PWD"><shadow type="text" id="wQ5RnB;mc`M59W/dpoO:"><field name="TEXT">18768195210</field></shadow></value><next><block type="weather_seniverse_city_weather" id="sQ,B6+IBLGSqA5[{tcAE"><field name="api">weather/now</field><field name="language">zh-Hans</field><field name="unit">c</field><value name="location"><shadow type="china_city" id="QuA?L|}NKMElnH)1Dss)"><field name="province">浙江</field><field name="city">杭州</field></shadow></value><value name="private_key"><shadow type="weather_private_key" id="7)pGyI`~N#G*Uuh14DWR"><field name="key">S9l2sb_ZK-UsWaynG</field></shadow></value></block></next></block></next></block></statement></block><block type="simple_timer" id="T!1p73n2`8/eTf`.UJ" x="0" y="272"><field name="NO">1</field><value name="timein"><shadow type="math_number" id="M_rB?je%do_%oj$s]QU?"><field name="NUM">5000</field></shadow></value><statement name="zxhs"><block type="controls_if" id="oeHg^P_x0H4:tg_$L)I+"><value name="IF0"><block type="weather_get_seniverse_weather_info" id="pu:8R1ObR+pS-r;4BKw-"><field name="api">weather/now</field><field name="type">update</field></block></value><statement name="DO0"><block type="serial_println" id="F|N_Ly4O8q(D9(2t,{IE"><field name="serial_select">Serial</field><field name="new_line">println</field><value name="CONTENT"><block type="weather_get_seniverse_weather_info1" id="DX3X%0T;i(EG#A/O;P{u"><field name="type">getWeatherText</field></block></value></block></statement></block></statement></block></xml>
|
||||
File diff suppressed because one or more lines are too long
@@ -0,0 +1 @@
|
||||
<xml version="Mixly 2.0 rc3" board="Arduino ESP8266@Generic ESP8266 Module"><block type="factory_notes" id="N/v:0@^M0B;6eZ6`Zlni" x="-297" y="-639"><field name="VALUE">当我们使用ESP系列开发板编写好程序后,可能会&#10;遇到更改设备位置等情况,这个时候我们不需要&#10;重新编写程序连接wifi只需要用下方的AP一键配网&#10;便可随时更改网络</field><next><block type="factory_notes" id="1L8`gENf;Ir.JT::I|$J"><field name="VALUE">一键配网在程序初始化时执行一次会尝试连接上次&#10;已连接成功的wifi,若连接失败或者不在原来的网&#10;络环境则会启用一个ESP开头的热点名称(无密码),&#10;使用手机或者电脑连接此网络输入ip地址192.168.4.1&#10;就可以通过网页配置wifi信息</field><next><block type="factory_notes" id="tT{{/Fujvfg4/jT)g[C~"><field name="VALUE">第一次使用建议打开串口监视器先体验一键配网,&#10;按照串口监视器提示操作</field><next><block type="factory_notes" id="KPZht_Ip{(eA@VFj-0{H"><field name="VALUE">单机按钮0可以清除上次已连接的网络信息,从而重新配网</field></block></next></block></next></block></next></block><block type="base_setup" id="7}-q;3K5!Le]R2t@tRPz" x="-296" y="-291"><statement name="DO"><block type="serial_begin" id="Q/KI+2,,nNoU6#D6u@#w"><field name="serial_select">Serial</field><value name="CONTENT"><shadow type="math_number" id="2;RoXW}5cbX}-#M14j9-"><field name="NUM">9600</field></shadow></value><next><block type="WIFI_smartConfig" id="rTjBa)EW3s5u-qg(C@qj"><field name="MODE">AP</field></block></next></block></statement></block><block type="simple_timer" id="oHoRL?;2#/1u$~K~-zC-" x="-294" y="-164"><field name="NO">1</field><value name="timein"><shadow type="math_number" id="f5PGuRS.R!NZ4NRq-xG("><field name="NUM">1000</field></shadow></value><statement name="zxhs"><block type="serial_println" id="`6oHq8}m934YM_BXKSBb"><field name="serial_select">Serial</field><field name="new_line">println</field><value name="CONTENT"><block type="text" id="/rj7[?]e`@[ZyU3zY:+5"><field name="TEXT">hello</field></block></value></block></statement></block><block type="OneButton_interrupt" id="zVL{?wJDX^[7xY=aV$Ob" x="-297" y="-67"><field name="mode">attachClick</field><value name="PIN"><shadow type="pins_digital" id="SsV)pq0FW./.!?WRpQYU"><field name="PIN">0</field></shadow></value><value name="STAT"><shadow type="inout_highlow" id="ncf}@(XQzzyMc0IwAqbR"><field name="BOOL">LOW</field></shadow></value><statement name="DO"><block type="factory_block_with_textarea" id="OSYe-K7l@fUvHZU?+$CR"><field name="VALUE">WiFiManager wifiManager;&#10;wifiManager.resetSettings();</field><comment pinned="false" h="80" w="160">这两句代码可以清除已连接的网络信息</comment></block></statement></block></xml><config>{"xtal":"80","vt":"flash","exception":"disabled","stacksmash":"disabled","ssl":"all","mmu":"3232","non32xfer":"fast","ResetMethod":"nodemcu","CrystalFreq":"26","FlashFreq":"40","FlashMode":"dout","eesz":"1M64","led":"2","sdk":"nonosdk_190703","ip":"lm2f","dbg":"Disabled","wipe":"none","baud":"115200"}</config><code>CiNpbmNsdWRlIDxXaUZpTWFuYWdlci5oPgojaW5jbHVkZSA8U2ltcGxlVGltZXIuaD4KCiNpbmNsdWRlIDxPbmVCdXR0b24uaD4KCldpRmlTZXJ2ZXIgc2VydmVyKDgwKTsKU2ltcGxlVGltZXIgdGltZXI7Ck9uZUJ1dHRvbiBidXR0b24wKDAsdHJ1ZSk7Cgp2b2lkIFNpbXBsZV90aW1lcl8xKCkgewogIFNlcmlhbC5wcmludGxuKCJoZWxsbyIpOwp9Cgp2b2lkIGF0dGFjaENsaWNrMCgpIHsKICAvLyDov5nkuKTlj6Xku6PnoIHlj6/ku6XmuIXpmaTlt7Lov57mjqXnmoTnvZHnu5zkv6Hmga8KICBXaUZpTWFuYWdlciB3aWZpTWFuYWdlcjsKICB3aWZpTWFuYWdlci5yZXNldFNldHRpbmdzKCk7Cn0KCnZvaWQgc2V0dXAoKXsKICBTZXJpYWwuYmVnaW4oOTYwMCk7CiAgV2lGaS5tb2RlKFdJRklfU1RBKTsKICBXaUZpTWFuYWdlciB3bTsKICBib29sIHJlczsKICByZXM9d20uYXV0b0Nvbm5lY3QoKTsKICB0aW1lci5zZXRJbnRlcnZhbCgxMDAwTCwgU2ltcGxlX3RpbWVyXzEpOwoKICBidXR0b24wLmF0dGFjaENsaWNrKGF0dGFjaENsaWNrMCk7Cn0KCnZvaWQgbG9vcCgpewogIC8v5b2T5oiR5Lus5L2/55SoRVNQ57O75YiX5byA5Y+R5p2/57yW5YaZ5aW956iL5bqP5ZCO77yM5Y+v6IO95LyaCiAgLy/pgYfliLDmm7TmlLnorr7lpIfkvY3nva7nrYnmg4XlhrXvvIzov5nkuKrml7blgJnmiJHku6zkuI3pnIDopoEKICAvL+mHjeaWsOe8luWGmeeoi+W6j+i/nuaOpXdpZmnlj6rpnIDopoHnlKjkuIvmlrnnmoRBUOS4gOmUrumFjee9kQogIC8v5L6/5Y+v6ZqP5pe25pu05pS5572R57ucCiAgLy/kuIDplK7phY3nvZHlnKjnqIvluo/liJ3lp4vljJbml7bmiafooYzkuIDmrKHkvJrlsJ3or5Xov57mjqXkuIrmrKEKICAvL+W3sui/nuaOpeaIkOWKn+eahHdpZmnvvIzoi6Xov57mjqXlpLHotKXmiJbogIXkuI3lnKjljp/mnaXnmoTnvZEKICAvL+e7nOeOr+Wig+WImeS8muWQr+eUqOS4gOS4qkVTUOW8gOWktOeahOeDreeCueWQjeensO+8iOaXoOWvhuegge+8ie+8jAogIC8v5L2/55So5omL5py65oiW6ICF55S16ISR6L+e5o6l5q2k572R57uc6L6T5YWlaXDlnLDlnYAxOTIuMTY4LjQuMQogIC8v5bCx5Y+v5Lul6YCa6L+H572R6aG16YWN572ud2lmaeS/oeaBrwogIC8v56ys5LiA5qyh5L2/55So5bu66K6u5omT5byA5Liy5Y+j55uR6KeG5Zmo5YWI5L2T6aqM5LiA6ZSu6YWN572R77yMCiAgLy/mjInnhafkuLLlj6Pnm5Hop4blmajmj5DnpLrmk43kvZwKICAvL+WNleacuuaMiemSrjDlj6/ku6XmuIXpmaTkuIrmrKHlt7Lov57mjqXnmoTnvZHnu5zkv6Hmga/vvIzku47ogIzph43mlrDphY3nvZEKCiAgdGltZXIucnVuKCk7CgogIGJ1dHRvbjAudGljaygpOwp9</code>
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Binary file not shown.
|
After Width: | Height: | Size: 105 KiB |
29
boards/default_src/arduino_esp8266/package.json
Normal file
29
boards/default_src/arduino_esp8266/package.json
Normal file
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"name": "@mixly/arduino-esp8266",
|
||||
"version": "1.1.0",
|
||||
"description": "适用于mixly的arduino esp8266模块",
|
||||
"scripts": {
|
||||
"build:dev": "webpack --config=webpack.dev.js",
|
||||
"build:prod": "webpack --config=webpack.prod.js"
|
||||
},
|
||||
"main": "./export.js",
|
||||
"author": "Mixly Team",
|
||||
"keywords": [
|
||||
"mixly",
|
||||
"mixly-plugin",
|
||||
"arduino-esp8266"
|
||||
],
|
||||
"homepage": "https://gitee.com/mixly2/mixly2.0_src/tree/develop/boards/default_src/arduino_esp8266",
|
||||
"bugs": {
|
||||
"url": "https://gitee.com/mixly2/mixly2.0_src/issues"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://gitee.com/mixly2/mixly2.0_src.git",
|
||||
"directory": "default_src/arduino_esp8266"
|
||||
},
|
||||
"publishConfig": {
|
||||
"access": "public"
|
||||
},
|
||||
"license": "Apache 2.0"
|
||||
}
|
||||
56
boards/default_src/arduino_esp8266/pins/pins.js
Normal file
56
boards/default_src/arduino_esp8266/pins/pins.js
Normal file
@@ -0,0 +1,56 @@
|
||||
const pins = {};
|
||||
|
||||
pins.arduino_esp8266 = {
|
||||
description: "esp8266_Arduino",
|
||||
digital: [["0", "0"], ["2", "2"], ["4", "4"], ["5", "5"], ["12", "12"], ["13", "13"], ["14", "14"], ["15", "15"], ["16", "16"], ["A0", "A0"]],
|
||||
analog: [["A0", "A0"]],
|
||||
pwm: [["0", "0"], ["2", "2"], ["4", "4"], ["5", "5"], ["12", "12"], ["13", "13"], ["14", "14"], ["15", "15"], ["A0", "A0"]],
|
||||
interrupt: [["0", "0"], ["2", "2"], ["4", "4"], ["5", "5"], ["12", "12"], ["13", "13"], ["14", "14"], ["15", "15"], ["A0", "A0"]],
|
||||
SDA: [["4", "4"]],
|
||||
SCL: [["5", "5"]],
|
||||
MOSI: [["13", "13"]],
|
||||
MISO: [["12", "12"]],
|
||||
SCK: [["14", "14"]],
|
||||
serial_select: [["Serial", "Serial"], ["SoftwareSerial", "mySerial"], ["SoftwareSerial1", "mySerial1"], ["SoftwareSerial2", "mySerial2"], ["SoftwareSerial3", "mySerial3"]],
|
||||
serial: 9600
|
||||
};
|
||||
|
||||
pins["ESPectro Core"] =
|
||||
pins['Arduino ESP8266 Generic'] =
|
||||
pins["Generic_ESP8266"] =
|
||||
pins["ESP8266_Modules"] =
|
||||
pins["Generic ESP8266 Module"] =
|
||||
pins["Generic ESP8285 Module"] =
|
||||
pins["Adafruit HUZZAH ESP8266"] =
|
||||
pins["NodeMCU 0.9 (ESP-12 Module)"] =
|
||||
pins["NodeMCU 1.0 (ESP-12E Module)"] =
|
||||
pins["Olimex MOD-WIFI-ESP8266(-DEV)"] =
|
||||
pins["SparkFun ESP8266 Thing"] =
|
||||
pins["SweetPea ESP-210"] =
|
||||
pins["ESPDuino"] =
|
||||
pins["Adafruit Feather HUZZAH ESP8266"] =
|
||||
pins["Invent One"] =
|
||||
pins["XinaBox CW01"] =
|
||||
pins["ESPresso Lite 1.0"] =
|
||||
pins["ESPresso Lite 2.0"] =
|
||||
pins["Phoenix 1.0"] =
|
||||
pins["Phoenix 2.0"] =
|
||||
pins["NodeMCU 0.9"] =
|
||||
pins["NodeMCU 1.0"] =
|
||||
pins["Olimex MOD-WIFI-ESP8266"] =
|
||||
pins["SparkFun ESP8266 Thing Dev"] =
|
||||
pins["LOLIN"] =
|
||||
pins["WeMos D1 R1"] =
|
||||
pins["ESPino"] =
|
||||
pins["ThaiEasyElec's ESPino"] =
|
||||
pins["Arduino ESP8266"] =
|
||||
pins["WifInfo"] =
|
||||
pins["esp8266_Arduino"] =
|
||||
pins["4D Systems gen4 IoD Range"] =
|
||||
pins["Digistump Oak"] =
|
||||
pins["WiFiduino"] =
|
||||
pins["Amperka WiFi Slot"] =
|
||||
pins["Seeed Wio Link"] =
|
||||
pins.arduino_esp8266;
|
||||
|
||||
export default pins;
|
||||
3392
boards/default_src/arduino_esp8266/template.xml
Normal file
3392
boards/default_src/arduino_esp8266/template.xml
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,19 @@
|
||||
<div>
|
||||
<h5 style="
|
||||
font-weight: bold;
|
||||
padding-bottom: 8px;
|
||||
user-select: text;
|
||||
">{{-d.title}}</h5>
|
||||
<div>
|
||||
{{# if (d.message) { }}
|
||||
<p style="white-space: normal;user-select: text;padding-bottom: 5px;">
|
||||
{{-d.message}}
|
||||
</p>
|
||||
{{# } }}
|
||||
{{# if (d.href === '#') { }}
|
||||
<p style="user-select: text;">{{d.moreInfo}}: <a class="link-secondary" href="javascript:void(0)">{{-d.name}}</a></p>
|
||||
{{# } else { }}
|
||||
<p style="user-select: text;">{{d.moreInfo}}: <a class="link-primary" href="javascript:void(0)" onclick="Mixly.Url.open('{{-d.href}}')" style="user-select: text;">{{-d.name}}</a></p>
|
||||
{{# } }}
|
||||
</div>
|
||||
</div>
|
||||
12
boards/default_src/arduino_esp8266/webpack.common.js
Normal file
12
boards/default_src/arduino_esp8266/webpack.common.js
Normal file
@@ -0,0 +1,12 @@
|
||||
const path = require("path");
|
||||
const common = require("../../../webpack.common");
|
||||
const { merge } = require("webpack-merge");
|
||||
|
||||
module.exports = merge(common, {
|
||||
resolve: {
|
||||
alias: {
|
||||
'@mixly/arduino': path.resolve(__dirname, '../arduino'),
|
||||
'@mixly/arduino-avr': path.resolve(__dirname, '../arduino_avr')
|
||||
}
|
||||
}
|
||||
});
|
||||
21
boards/default_src/arduino_esp8266/webpack.dev.js
Normal file
21
boards/default_src/arduino_esp8266/webpack.dev.js
Normal file
@@ -0,0 +1,21 @@
|
||||
const path = require("path");
|
||||
const common = require("./webpack.common");
|
||||
const { merge } = require("webpack-merge");
|
||||
const HtmlWebpackPlugin = require("html-webpack-plugin");
|
||||
const ESLintPlugin = require('eslint-webpack-plugin');
|
||||
|
||||
module.exports = merge(common, {
|
||||
mode: "development",
|
||||
devtool: 'source-map',
|
||||
plugins: [
|
||||
new ESLintPlugin({
|
||||
context: process.cwd(),
|
||||
}),
|
||||
new HtmlWebpackPlugin({
|
||||
inject: false,
|
||||
template: path.resolve(process.cwd(), 'template.xml'),
|
||||
filename: 'index.xml',
|
||||
minify: false
|
||||
}),
|
||||
]
|
||||
});
|
||||
27
boards/default_src/arduino_esp8266/webpack.prod.js
Normal file
27
boards/default_src/arduino_esp8266/webpack.prod.js
Normal file
@@ -0,0 +1,27 @@
|
||||
const path = require("path");
|
||||
const common = require("./webpack.common");
|
||||
const { merge } = require("webpack-merge");
|
||||
const TerserPlugin = require("terser-webpack-plugin");
|
||||
var HtmlWebpackPlugin = require("html-webpack-plugin");
|
||||
|
||||
module.exports = merge(common, {
|
||||
mode: "production",
|
||||
optimization: {
|
||||
minimize: true,
|
||||
minimizer: [
|
||||
new TerserPlugin({
|
||||
extractComments: false,
|
||||
}),
|
||||
new HtmlWebpackPlugin({
|
||||
inject: false,
|
||||
template: path.resolve(process.cwd(), 'template.xml'),
|
||||
filename: 'index.xml',
|
||||
minify: {
|
||||
removeAttributeQuotes: true,
|
||||
collapseWhitespace: true,
|
||||
removeComments: true,
|
||||
}
|
||||
})
|
||||
]
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user