2014-11-19 04:07:46 +01:00
<!DOCTYPE html> < html > < head > < meta charset = "utf-8" > < style > b o d y {
width: 45em;
border: 1px solid #ddd;
outline: 1300px solid #fff;
margin: 16px auto;
}
body .markdown-body
{
padding: 30px;
}
@font-face {
font-family: fontawesome-mini;
src: url(data:font/woff;charset=utf-8;base64,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
}
@font-face {
font-family: octicons-anchor;
src: url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAYcAA0AAAAACjQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABMAAAABwAAAAca8vGTk9TLzIAAAFMAAAARAAAAFZG1VHVY21hcAAAAZAAAAA+AAABQgAP9AdjdnQgAAAB0AAAAAQAAAAEACICiGdhc3AAAAHUAAAACAAAAAj//wADZ2x5ZgAAAdwAAADRAAABEKyikaNoZWFkAAACsAAAAC0AAAA2AtXoA2hoZWEAAALgAAAAHAAAACQHngNFaG10eAAAAvwAAAAQAAAAEAwAACJsb2NhAAADDAAAAAoAAAAKALIAVG1heHAAAAMYAAAAHwAAACABEAB2bmFtZQAAAzgAAALBAAAFu3I9x/Nwb3N0AAAF/AAAAB0AAAAvaoFvbwAAAAEAAAAAzBdyYwAAAADP2IQvAAAAAM/bz7t4nGNgZGFgnMDAysDB1Ml0hoGBoR9CM75mMGLkYGBgYmBlZsAKAtJcUxgcPsR8iGF2+O/AEMPsznAYKMwIkgMA5REMOXicY2BgYGaAYBkGRgYQsAHyGMF8FgYFIM0ChED+h5j//yEk/3KoSgZGNgYYk4GRCUgwMaACRoZhDwCs7QgGAAAAIgKIAAAAAf//AAJ4nHWMMQrCQBBF/0zWrCCIKUQsTDCL2EXMohYGSSmorScInsRGL2DOYJe0Ntp7BK+gJ1BxF1stZvjz/v8DRghQzEc4kIgKwiAppcA9LtzKLSkdNhKFY3HF4lK69ExKslx7Xa+vPRVS43G98vG1DnkDMIBUgFN0MDXflU8tbaZOUkXUH0+U27RoRpOIyCKjbMCVejwypzJJG4jIwb43rfl6wbwanocrJm9XFYfskuVC5K/TPyczNU7b84CXcbxks1Un6H6tLH9vf2LRnn8Ax7A5WQAAAHicY2BkYGAA4teL1+yI57f5ysDNwgAC529f0kOmWRiYVgEpDgYmEA8AUzEKsQAAAHicY2BkYGB2+O/AEMPCAAJAkpEBFbAAADgKAe0EAAAiAAAAAAQAAAAEAAAAAAAAKgAqACoAiAAAeJxjYGRgYGBhsGFgYgABEMkFhAwM/xn0QAIAD6YBhwB4nI1Ty07cMBS9QwKlQapQW3VXySvEqDCZGbGaHULiIQ1FKgjWMxknMfLEke2A+IJu+wntrt/QbVf9gG75jK577Lg8K1qQPCfnnnt8fX1NRC/pmjrk/zprC+8D7tBy9DHgBXoWfQ44Av8t4Bj4Z8CLtBL9CniJluPXASf0Lm4CXqFX8Q84dOLnMB17N4c7tBo1AS/Qi+hTwBH4rwHHwN8DXqQ30XXAS7QaLwSc0Gn8NuAVWou/gFmnjLrEaEh9GmDdDGgL3B4JsrRPDU2hTOiMSuJUIdKQQayiAth69r6akSSFqIJuA19TrzCIaY8sIoxyrNIrL//pw7A2iMygkX5vDj+G+kuoLdX4GlGK/8Lnlz6/h9MpmoO9rafrz7ILXEHHaAx95s9lsI7AHNMBWEZHULnfAXwG9/ZqdzLI08iuwRloXE8kfhXYAvE23+23DU3t626rbs8/8adv+9DWknsHp3E17oCf+Z48rvEQNZ78paYM38qfk3v/u3l3u3GXN2Dmvmvpf1Srwk3pB/VSsp512bA/GG5i2WJ7wu430yQ5K3nFGiOqgtmSB5pJVSizwaacmUZzZhXLlZTq8qGGFY2YcSkqbth6aW1tRmlaCFs2016m5qn36SbJrqosG4uMV4aP2PHBmB3tjtmgN2izkGQyLWprekbIntJFing32a5rKWCN/SdSoga45EJykyQ7asZvHQ8PTm6cslIpwyeyjbVltNikc2HTR7YKh9LBl9DADC0U/jLcBZDKrMhUBfQBvXRzLtFtjU9eNHKin0x5InTqb8lNpfKv1s1xHzTXRqgKzek/mb7nB8RZTCDhGEX3kK/8Q75AmUM/eLkfA+0Hi908Kx4eNsMgudg5GLdRD7a84npi+YxNr5i5KIbW5izXas7cHXIMAau1OueZhfj+cOcP3P8MNIWLyYOBuxL6DRylJ4cAAAB4nGNgYoAALjDJyIAOWMCiTIxMLDmZedkABtIBygAAAA==) format('woff');
}
.markdown-body {
font-family: sans-serif;
-ms-text-size-adjust: 100%;
-webkit-text-size-adjust: 100%;
color: #333333;
overflow: hidden;
font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif;
font-size: 16px;
line-height: 1.6;
word-wrap: break-word;
}
.markdown-body a {
background: transparent;
}
.markdown-body a:active,
.markdown-body a:hover {
outline: 0;
}
.markdown-body b,
.markdown-body strong {
font-weight: bold;
}
.markdown-body mark {
background: #ff0;
color: #000;
font-style: italic;
font-weight: bold;
}
.markdown-body sub,
.markdown-body sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
.markdown-body sup {
top: -0.5em;
}
.markdown-body sub {
bottom: -0.25em;
}
.markdown-body h1 {
font-size: 2em;
margin: 0.67em 0;
}
.markdown-body img {
border: 0;
}
.markdown-body hr {
-moz-box-sizing: content-box;
box-sizing: content-box;
height: 0;
}
.markdown-body pre {
overflow: auto;
}
.markdown-body code,
.markdown-body kbd,
.markdown-body pre,
.markdown-body samp {
font-family: monospace, monospace;
font-size: 1em;
}
.markdown-body input {
color: inherit;
font: inherit;
margin: 0;
}
.markdown-body html input[disabled] {
cursor: default;
}
.markdown-body input {
line-height: normal;
}
.markdown-body input[type="checkbox"] {
box-sizing: border-box;
padding: 0;
}
.markdown-body table {
border-collapse: collapse;
border-spacing: 0;
}
.markdown-body td,
.markdown-body th {
padding: 0;
}
.markdown-body .codehilitetable {
border: 0;
border-spacing: 0;
}
.markdown-body .codehilitetable tr {
border: 0;
}
.markdown-body .codehilitetable pre,
.markdown-body .codehilitetable div.codehilite {
margin: 0;
}
.markdown-body .linenos,
.markdown-body .code,
.markdown-body .codehilitetable td {
border: 0;
padding: 0;
}
.markdown-body td:not(.linenos) .linenodiv {
padding: 0 !important;
}
.markdown-body .code {
width: 100%;
}
.markdown-body .linenos div pre,
.markdown-body .linenodiv pre,
.markdown-body .linenodiv {
border: 0;
-webkit-border-radius: 0;
-moz-border-radius: 0;
border-radius: 0;
-webkit-border-top-left-radius: 3px;
-webkit-border-bottom-left-radius: 3px;
-moz-border-radius-topleft: 3px;
-moz-border-radius-bottomleft: 3px;
border-top-left-radius: 3px;
border-bottom-left-radius: 3px;
}
.markdown-body .code div pre,
.markdown-body .code div {
border: 0;
-webkit-border-radius: 0;
-moz-border-radius: 0;
border-radius: 0;
-webkit-border-top-right-radius: 3px;
-webkit-border-bottom-right-radius: 3px;
-moz-border-radius-topright: 3px;
-moz-border-radius-bottomright: 3px;
border-top-right-radius: 3px;
border-bottom-right-radius: 3px;
}
.markdown-body * {
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.markdown-body input {
font: 13px Helvetica, arial, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";
line-height: 1.4;
}
.markdown-body a {
color: #4183c4;
text-decoration: none;
}
.markdown-body a:hover,
.markdown-body a:focus,
.markdown-body a:active {
text-decoration: underline;
}
.markdown-body hr {
height: 0;
margin: 15px 0;
overflow: hidden;
background: transparent;
border: 0;
border-bottom: 1px solid #ddd;
}
.markdown-body hr:before,
.markdown-body hr:after {
display: table;
content: " ";
}
.markdown-body hr:after {
clear: both;
}
.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
margin-top: 15px;
margin-bottom: 15px;
line-height: 1.1;
}
.markdown-body h1 {
font-size: 30px;
}
.markdown-body h2 {
font-size: 21px;
}
.markdown-body h3 {
font-size: 16px;
}
.markdown-body h4 {
font-size: 14px;
}
.markdown-body h5 {
font-size: 12px;
}
.markdown-body h6 {
font-size: 11px;
}
.markdown-body blockquote {
margin: 0;
}
.markdown-body ul,
.markdown-body ol {
padding: 0;
margin-top: 0;
margin-bottom: 0;
}
.markdown-body ol ol,
.markdown-body ul ol {
list-style-type: lower-roman;
}
.markdown-body ul ul ol,
.markdown-body ul ol ol,
.markdown-body ol ul ol,
.markdown-body ol ol ol {
list-style-type: lower-alpha;
}
.markdown-body dd {
margin-left: 0;
}
.markdown-body code,
.markdown-body pre,
.markdown-body samp {
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
font-size: 12px;
}
.markdown-body pre {
margin-top: 0;
margin-bottom: 0;
}
.markdown-body kbd {
background-color: #e7e7e7;
background-image: -moz-linear-gradient(#fefefe, #e7e7e7);
background-image: -webkit-linear-gradient(#fefefe, #e7e7e7);
background-image: linear-gradient(#fefefe, #e7e7e7);
background-repeat: repeat-x;
border-radius: 2px;
border: 1px solid #cfcfcf;
color: #000;
padding: 3px 5px;
line-height: 10px;
font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace;
display: inline-block;
}
.markdown-body>*:first-child {
margin-top: 0 !important;
}
.markdown-body>*:last-child {
margin-bottom: 0 !important;
}
.markdown-body .headeranchor-link {
position: absolute;
top: 0;
bottom: 0;
left: 0;
display: block;
padding-right: 6px;
padding-left: 30px;
margin-left: -30px;
}
.markdown-body .headeranchor-link:focus {
outline: none;
}
.markdown-body h1,
.markdown-body h2,
.markdown-body h3,
.markdown-body h4,
.markdown-body h5,
.markdown-body h6 {
position: relative;
margin-top: 1em;
margin-bottom: 16px;
font-weight: bold;
line-height: 1.4;
}
.markdown-body h1 .headeranchor,
.markdown-body h2 .headeranchor,
.markdown-body h3 .headeranchor,
.markdown-body h4 .headeranchor,
.markdown-body h5 .headeranchor,
.markdown-body h6 .headeranchor {
display: none;
color: #000;
vertical-align: middle;
}
.markdown-body h1:hover .headeranchor-link,
.markdown-body h2:hover .headeranchor-link,
.markdown-body h3:hover .headeranchor-link,
.markdown-body h4:hover .headeranchor-link,
.markdown-body h5:hover .headeranchor-link,
.markdown-body h6:hover .headeranchor-link {
height: 1em;
padding-left: 8px;
margin-left: -30px;
line-height: 1;
text-decoration: none;
}
.markdown-body h1:hover .headeranchor-link .headeranchor,
.markdown-body h2:hover .headeranchor-link .headeranchor,
.markdown-body h3:hover .headeranchor-link .headeranchor,
.markdown-body h4:hover .headeranchor-link .headeranchor,
.markdown-body h5:hover .headeranchor-link .headeranchor,
.markdown-body h6:hover .headeranchor-link .headeranchor {
display: inline-block;
}
.markdown-body h1 {
padding-bottom: 0.3em;
font-size: 2.25em;
line-height: 1.2;
border-bottom: 1px solid #eee;
}
.markdown-body h2 {
padding-bottom: 0.3em;
font-size: 1.75em;
line-height: 1.225;
border-bottom: 1px solid #eee;
}
.markdown-body h3 {
font-size: 1.5em;
line-height: 1.43;
}
.markdown-body h4 {
font-size: 1.25em;
}
.markdown-body h5 {
font-size: 1em;
}
.markdown-body h6 {
font-size: 1em;
color: #777;
}
.markdown-body p,
.markdown-body blockquote,
.markdown-body ul,
.markdown-body ol,
.markdown-body dl,
.markdown-body table,
.markdown-body pre,
.markdown-body .admonition {
margin-top: 0;
margin-bottom: 16px;
}
.markdown-body hr {
height: 4px;
padding: 0;
margin: 16px 0;
background-color: #e7e7e7;
border: 0 none;
}
.markdown-body ul,
.markdown-body ol {
padding-left: 2em;
}
.markdown-body ul ul,
.markdown-body ul ol,
.markdown-body ol ol,
.markdown-body ol ul {
margin-top: 0;
margin-bottom: 0;
}
.markdown-body li>p {
margin-top: 16px;
}
.markdown-body dl {
padding: 0;
}
.markdown-body dl dt {
padding: 0;
margin-top: 16px;
font-size: 1em;
font-style: italic;
font-weight: bold;
}
.markdown-body dl dd {
padding: 0 16px;
margin-bottom: 16px;
}
.markdown-body blockquote {
padding: 0 15px;
color: #777;
border-left: 4px solid #ddd;
}
.markdown-body blockquote>:first-child {
margin-top: 0;
}
.markdown-body blockquote>:last-child {
margin-bottom: 0;
}
.markdown-body table {
display: block;
width: 100%;
overflow: auto;
word-break: normal;
word-break: keep-all;
}
.markdown-body table th {
font-weight: bold;
}
.markdown-body table th,
.markdown-body table td {
padding: 6px 13px;
border: 1px solid #ddd;
}
.markdown-body table tr {
background-color: #fff;
border-top: 1px solid #ccc;
}
.markdown-body table tr:nth-child(2n) {
background-color: #f8f8f8;
}
.markdown-body img {
max-width: 100%;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.markdown-body code,
.markdown-body samp {
padding: 0;
padding-top: 0.2em;
padding-bottom: 0.2em;
margin: 0;
font-size: 85%;
background-color: rgba(0,0,0,0.04);
border-radius: 3px;
}
.markdown-body code:before,
.markdown-body code:after {
letter-spacing: -0.2em;
content: "\00a0";
}
.markdown-body pre>code {
padding: 0;
margin: 0;
font-size: 100%;
word-break: normal;
white-space: pre;
background: transparent;
border: 0;
}
.markdown-body .codehilite {
margin-bottom: 16px;
}
.markdown-body .codehilite pre,
.markdown-body pre {
padding: 16px;
overflow: auto;
font-size: 85%;
line-height: 1.45;
background-color: #f7f7f7;
border-radius: 3px;
}
.markdown-body .codehilite pre {
margin-bottom: 0;
word-break: normal;
}
.markdown-body pre {
word-wrap: normal;
}
.markdown-body pre code {
display: inline;
max-width: initial;
padding: 0;
margin: 0;
overflow: initial;
line-height: inherit;
word-wrap: normal;
background-color: transparent;
border: 0;
}
.markdown-body pre code:before,
.markdown-body pre code:after {
content: normal;
}
/* Admonition */
.markdown-body .admonition {
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
position: relative;
border-radius: 3px;
border: 1px solid #e0e0e0;
border-left: 6px solid #333;
padding: 10px 10px 10px 30px;
}
.markdown-body .admonition table {
color: #333;
}
.markdown-body .admonition p {
padding: 0;
}
.markdown-body .admonition-title {
font-weight: bold;
margin: 0;
}
.markdown-body .admonition>.admonition-title {
color: #333;
}
.markdown-body .attention>.admonition-title {
color: #a6d796;
}
.markdown-body .caution>.admonition-title {
color: #d7a796;
}
.markdown-body .hint>.admonition-title {
color: #96c6d7;
}
.markdown-body .danger>.admonition-title {
color: #c25f77;
}
.markdown-body .question>.admonition-title {
color: #96a6d7;
}
.markdown-body .note>.admonition-title {
color: #d7c896;
}
.markdown-body .admonition:before,
.markdown-body .attention:before,
.markdown-body .caution:before,
.markdown-body .hint:before,
.markdown-body .danger:before,
.markdown-body .question:before,
.markdown-body .note:before {
font: normal normal 16px fontawesome-mini;
-moz-osx-font-smoothing: grayscale;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
line-height: 1.5;
color: #333;
position: absolute;
left: 0;
top: 0;
padding-top: 10px;
padding-left: 10px;
}
.markdown-body .admonition:before {
content: "\f056\00a0";
color: 333;
}
.markdown-body .attention:before {
content: "\f058\00a0";
color: #a6d796;
}
.markdown-body .caution:before {
content: "\f06a\00a0";
color: #d7a796;
}
.markdown-body .hint:before {
content: "\f05a\00a0";
color: #96c6d7;
}
.markdown-body .danger:before {
content: "\f057\00a0";
color: #c25f77;
}
.markdown-body .question:before {
content: "\f059\00a0";
color: #96a6d7;
}
.markdown-body .note:before {
content: "\f040\00a0";
color: #d7c896;
}
.markdown-body .admonition::after {
content: normal;
}
.markdown-body .attention {
border-left: 6px solid #a6d796;
}
.markdown-body .caution {
border-left: 6px solid #d7a796;
}
.markdown-body .hint {
border-left: 6px solid #96c6d7;
}
.markdown-body .danger {
border-left: 6px solid #c25f77;
}
.markdown-body .question {
border-left: 6px solid #96a6d7;
}
.markdown-body .note {
border-left: 6px solid #d7c896;
}
.markdown-body .admonition>*:first-child {
margin-top: 0 !important;
}
.markdown-body .admonition>*:last-child {
margin-bottom: 0 !important;
}
/* progress bar*/
.markdown-body .progress {
display: block;
width: 300px;
margin: 10px 0;
height: 24px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
background-color: #ededed;
position: relative;
box-shadow: inset -1px 1px 3px rgba(0, 0, 0, .1);
}
.markdown-body .progress-label {
position: absolute;
text-align: center;
font-weight: bold;
width: 100%; margin: 0;
line-height: 24px;
color: #333;
text-shadow: 1px 1px 0 #fefefe, -1px -1px 0 #fefefe, -1px 1px 0 #fefefe, 1px -1px 0 #fefefe, 0 1px 0 #fefefe, 0 -1px 0 #fefefe, 1px 0 0 #fefefe, -1px 0 0 #fefefe, 1px 1px 2px #000;
-webkit-font-smoothing: antialiased !important;
white-space: nowrap;
overflow: hidden;
}
.markdown-body .progress-bar {
height: 24px;
float: left;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
background-color: #96c6d7;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .5), inset 0 -1px 0 rgba(0, 0, 0, .1);
background-size: 30px 30px;
background-image: -webkit-linear-gradient(
135deg, rgba(255, 255, 255, .4) 27%,
transparent 27%,
transparent 52%, rgba(255, 255, 255, .4) 52%,
rgba(255, 255, 255, .4) 77%,
transparent 77%, transparent
);
background-image: -moz-linear-gradient(
135deg,
rgba(255, 255, 255, .4) 27%, transparent 27%,
transparent 52%, rgba(255, 255, 255, .4) 52%,
rgba(255, 255, 255, .4) 77%, transparent 77%,
transparent
);
background-image: -ms-linear-gradient(
135deg,
rgba(255, 255, 255, .4) 27%, transparent 27%,
transparent 52%, rgba(255, 255, 255, .4) 52%,
rgba(255, 255, 255, .4) 77%, transparent 77%,
transparent
);
background-image: -o-linear-gradient(
135deg,
rgba(255, 255, 255, .4) 27%, transparent 27%,
transparent 52%, rgba(255, 255, 255, .4) 52%,
rgba(255, 255, 255, .4) 77%, transparent 77%,
transparent
);
background-image: linear-gradient(
135deg,
rgba(255, 255, 255, .4) 27%, transparent 27%,
transparent 52%, rgba(255, 255, 255, .4) 52%,
rgba(255, 255, 255, .4) 77%, transparent 77%,
transparent
);
}
.markdown-body .progress-100plus .progress-bar {
background-color: #a6d796;
}
.markdown-body .progress-80plus .progress-bar {
background-color: #c6d796;
}
.markdown-body .progress-60plus .progress-bar {
background-color: #d7c896;
}
.markdown-body .progress-40plus .progress-bar {
background-color: #d7a796;
}
.markdown-body .progress-20plus .progress-bar {
background-color: #d796a6;
}
.markdown-body .progress-0plus .progress-bar {
background-color: #c25f77;
}
.markdown-body .candystripe-animate .progress-bar{
-webkit-animation: animate-stripes 3s linear infinite;
-moz-animation: animate-stripes 3s linear infinite;
animation: animate-stripes 3s linear infinite;
}
@-webkit-keyframes animate-stripes {
0% {
background-position: 0 0;
}
100% {
background-position: 60px 0;
}
}
@-moz-keyframes animate-stripes {
0% {
background-position: 0 0;
}
100% {
background-position: 60px 0;
}
}
@keyframes animate-stripes {
0% {
background-position: 0 0;
}
100% {
background-position: 60px 0;
}
}
.markdown-body .gloss .progress-bar {
box-shadow:
inset 0 4px 12px rgba(255, 255, 255, .7),
inset 0 -12px 0 rgba(0, 0, 0, .05);
}
/* Multimarkdown Critic Blocks */
.markdown-body .critic_mark {
background: #ff0;
}
.markdown-body .critic_delete {
color: #c82829;
text-decoration: line-through;
}
.markdown-body .critic_insert {
color: #718c00 ;
text-decoration: underline;
}
.markdown-body .critic_comment {
color: #8e908c;
font-style: italic;
}
.markdown-body .headeranchor {
font: normal normal 16px octicons-anchor;
line-height: 1;
display: inline-block;
text-decoration: none;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.headeranchor:before {
content: '\f05c';
}
.markdown-body .task-list-item {
list-style-type: none;
}
.markdown-body .task-list-item+.task-list-item {
margin-top: 3px;
}
.markdown-body .task-list-item input {
margin: 0 4px 0.25em -20px;
vertical-align: middle;
}
/* Media */
@media only screen and (min-width: 480px) {
.markdown-body {
font-size:14px;
}
}
@media only screen and (min-width: 768px) {
.markdown-body {
font-size:16px;
}
}
@media print {
.markdown-body * {
background: transparent !important;
color: black !important;
filter:none !important;
-ms-filter: none !important;
}
.markdown-body {
font-size:12pt;
max-width:100%;
outline:none;
border: 0;
}
.markdown-body a,
.markdown-body a:visited {
text-decoration: underline;
}
.markdown-body .headeranchor-link {
display: none;
}
.markdown-body a[href]:after {
content: " (" attr(href) ")";
}
.markdown-body abbr[title]:after {
content: " (" attr(title) ")";
}
.markdown-body .ir a:after,
.markdown-body a[href^="javascript:"]:after,
.markdown-body a[href^="#"]:after {
content: "";
}
.markdown-body pre {
white-space: pre;
white-space: pre-wrap;
word-wrap: break-word;
}
.markdown-body pre,
.markdown-body blockquote {
border: 1px solid #999;
padding-right: 1em;
page-break-inside: avoid;
}
.markdown-body .progress,
.markdown-body .progress-bar {
-moz-box-shadow: none;
-webkit-box-shadow: none;
box-shadow: none;
}
.markdown-body .progress {
border: 1px solid #ddd;
}
.markdown-body .progress-bar {
height: 22px;
border-right: 1px solid #ddd;
}
.markdown-body tr,
.markdown-body img {
page-break-inside: avoid;
}
.markdown-body img {
max-width: 100% !important;
}
.markdown-body p,
.markdown-body h2,
.markdown-body h3 {
orphans: 3;
widows: 3;
}
.markdown-body h2,
.markdown-body h3 {
page-break-after: avoid;
}
}
2014-11-20 08:45:21 +01:00
< / style > < style > . c o d e h i l i t e p r e . h l l { b a c k g r o u n d - c o l o r : # f 8 e e c 7 }
.codehilite pre { background: #ffffff; color: #333333 }
.codehilite pre .c { color: #999988; font-style: italic } /* Comment */
.codehilite pre .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.codehilite pre .k { font-weight: bold } /* Keyword */
.codehilite pre .n { color: #333333 } /* Name */
.codehilite pre .o { font-weight: bold } /* Operator */
.codehilite pre .cm { color: #999988; font-style: italic } /* Comment.Multiline */
.codehilite pre .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
.codehilite pre .c1 { color: #999988; font-style: italic } /* Comment.Single */
.codehilite pre .cs { color: #999988; font-style: italic } /* Comment.Special */
.codehilite pre .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.codehilite pre .ge { font-style: italic } /* Generic.Emph */
.codehilite pre .gr { color: #aa0000 } /* Generic.Error */
.codehilite pre .gh { color: #999999 } /* Generic.Heading */
.codehilite pre .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.codehilite pre .go { color: #888888 } /* Generic.Output */
.codehilite pre .gp { color: #555555 } /* Generic.Prompt */
.codehilite pre .gs { font-weight: bold } /* Generic.Strong */
.codehilite pre .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
.codehilite pre .gt { color: #aa0000 } /* Generic.Traceback */
.codehilite pre .kc { font-weight: bold } /* Keyword.Constant */
.codehilite pre .kd { font-weight: bold } /* Keyword.Declaration */
.codehilite pre .kn { font-weight: bold } /* Keyword.Namespace */
.codehilite pre .kp { font-weight: bold } /* Keyword.Pseudo */
.codehilite pre .kr { font-weight: bold } /* Keyword.Reserved */
.codehilite pre .kt { font-weight: bold } /* Keyword.Type */
.codehilite pre .m { color: #945277 } /* Literal.Number */
.codehilite pre .s { color: #df5000 } /* Literal.String */
.codehilite pre .na { color: #008080 } /* Name.Attribute */
.codehilite pre .nb { color: #0086b3 } /* Name.Builtin */
.codehilite pre .nc { color: #445588; font-weight: bold } /* Name.Class */
.codehilite pre .no { color: #094e99 } /* Name.Constant */
.codehilite pre .nd { color: #333333 } /* Name.Decorator */
.codehilite pre .ni { color: #800080 } /* Name.Entity */
.codehilite pre .ne { color: #990000; font-weight: bold } /* Name.Exception */
.codehilite pre .nf { color: #945277; font-weight: bold } /* Name.Function */
.codehilite pre .nl { color: #333333 } /* Name.Label */
.codehilite pre .nn { color: #555555 } /* Name.Namespace */
.codehilite pre .nx { color: #333333 } /* Name.Other */
.codehilite pre .py { color: #333333 } /* Name.Property */
.codehilite pre .nt { color: #000080 } /* Name.Tag */
.codehilite pre .nv { color: #008080 } /* Name.Variable */
.codehilite pre .ow { font-weight: bold } /* Operator.Word */
.codehilite pre .w { color: #bbbbbb } /* Text.Whitespace */
.codehilite pre .mb { color: #945277 } /* Literal.Number.Bin */
.codehilite pre .mf { color: #945277 } /* Literal.Number.Float */
.codehilite pre .mh { color: #945277 } /* Literal.Number.Hex */
.codehilite pre .mi { color: #945277 } /* Literal.Number.Integer */
.codehilite pre .mo { color: #945277 } /* Literal.Number.Oct */
.codehilite pre .sb { color: #df5000 } /* Literal.String.Backtick */
.codehilite pre .sc { color: #df5000 } /* Literal.String.Char */
.codehilite pre .sd { color: #df5000 } /* Literal.String.Doc */
.codehilite pre .s2 { color: #df5000 } /* Literal.String.Double */
.codehilite pre .se { color: #df5000 } /* Literal.String.Escape */
.codehilite pre .sh { color: #df5000 } /* Literal.String.Heredoc */
.codehilite pre .si { color: #df5000 } /* Literal.String.Interpol */
.codehilite pre .sx { color: #df5000 } /* Literal.String.Other */
.codehilite pre .sr { color: #017936 } /* Literal.String.Regex */
.codehilite pre .s1 { color: #df5000 } /* Literal.String.Single */
.codehilite pre .ss { color: #8b467f } /* Literal.String.Symbol */
.codehilite pre .bp { color: #999999 } /* Name.Builtin.Pseudo */
.codehilite pre .vc { color: #008080 } /* Name.Variable.Class */
.codehilite pre .vg { color: #008080 } /* Name.Variable.Global */
.codehilite pre .vi { color: #008080 } /* Name.Variable.Instance */
.codehilite pre .il { color: #945277 } /* Literal.Number.Integer.Long */< / style > < title > README< / title > < / head > < body > < article class = "markdown-body" > < h1 id = "nodemcu" > < strong > NodeMcu< / strong > < / h1 >
2014-11-19 04:07:46 +01:00
< h3 id = "a-lua-based-firmware-for-wifi-soc-esp8266" > < a name = "user-content-a-lua-based-firmware-for-wifi-soc-esp8266" href = "#a-lua-based-firmware-for-wifi-soc-esp8266" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > A lua based firmware for wifi-soc esp8266< / h3 >
2014-11-20 08:45:21 +01:00
< p > version 0.9.2 build 2014-11-20< / p >
2014-11-19 04:07:46 +01:00
< h1 id = "change-log" > < a name = "user-content-change-log" href = "#change-log" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Change log< / h1 >
< p > < a href = "https://github.com/funshine/nodemcu-firmware/wiki/nodemcu_api_en#change_log" > change log< / a > < br / > < br / >
< a href = "https://github.com/funshine/nodemcu-firmware/wiki/nodemcu_api_cn#change_log" > 变更日志< / a > < / p >
< h1 id = "summary" > < a name = "user-content-summary" href = "#summary" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Summary< / h1 >
< ul >
< li > Easy to access wireless router< / li >
< li > Based on Lua 5.1.4< / li >
< li > Event-Drive programming preferred.< / li >
< li > Build-in file, timer, pwm, i2c, net, gpio, wifi, and system api.< / li >
< li > GPIO pin re-mapped, use the index to access gpio, i2c, pwm.< / li >
< li > GPIO Map Table:< / li >
< / ul >
< table >
< tr >
< th scope = "col" > IO index< / th > < th scope = "col" > ESP8266 pin< / th > < th scope = "col" > IO index< / th > < th scope = "col" > ESP8266 pin< / th >
< / tr >
< tr >
< td > 0< / td > < td > GPIO12< / td > < td > 8< / td > < td > GPIO0< / td >
< / tr >
< tr >
< td > 1< / td > < td > GPIO13< / td > < td > 9< / td > < td > GPIO2< / td >
< / tr >
< tr >
< td > 2< / td > < td > GPIO14< / td > < td > 10< / td > < td > GPIO4< / td >
< / tr >
< tr >
< td > 3< / td > < td > GPIO15< / td > < td > 11< / td > < td > GPIO5< / td >
< / tr >
< tr >
< td > 4< / td > < td > GPIO3< / td > < td > < / td > < td > < / td >
< / tr >
< tr >
< td > 5< / td > < td > GPIO1< / td > < td > < / td > < td > < / td >
< / tr >
< tr >
< td > 6< / td > < td > GPIO9< / td > < td > < / td > < td > < / td >
< / tr >
< tr >
< td > 7< / td > < td > GPIO10< /td< td > < / td > < td > < / td >
< / tr >
< / table >
< h1 id = "flash-the-firmware" > < a name = "user-content-flash-the-firmware" href = "#flash-the-firmware" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Flash the firmware< / h1 >
< p > nodemcu_512k.bin: 0x00000< br / > < br / >
for most esp8266 modules, just pull GPIO0 down and restart.< / p >
< h1 id = "connect-the-hardware-in-serial" > < a name = "user-content-connect-the-hardware-in-serial" href = "#connect-the-hardware-in-serial" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Connect the hardware in serial< / h1 >
< p > braudrate:9600< / p >
< h1 id = "start-play" > < a name = "user-content-start-play" href = "#start-play" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Start play< / h1 >
< h4 id = "connect-to-your-ap" > < a name = "user-content-connect-to-your-ap" href = "#connect-to-your-ap" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Connect to your ap< / h4 >
2014-11-20 08:45:21 +01:00
< div class = "codehilite" > < pre > < span class = "nb" > print< / span > < span class = "p" > (< / span > < span class = "n" > wifi< / span > < span class = "p" > .< / span > < span class = "n" > sta< / span > < span class = "p" > .< / span > < span class = "n" > getip< / span > < span class = "p" > ())< / span >
< span class = "c1" > --0.0.0.0< / span >
< span class = "n" > wifi< / span > < span class = "p" > .< / span > < span class = "n" > setmode< / span > < span class = "p" > (< / span > < span class = "n" > wifi< / span > < span class = "p" > .< / span > < span class = "n" > STATION< / span > < span class = "p" > )< / span >
< span class = "n" > wifi< / span > < span class = "p" > .< / span > < span class = "n" > sta< / span > < span class = "p" > .< / span > < span class = "n" > config< / span > < span class = "p" > (< / span > < span class = "s2" > " < / span > < span class = "s" > SSID" < / span > < span class = "p" > ,< / span > < span class = "s2" > " < / span > < span class = "s" > password" < / span > < span class = "p" > )< / span >
< span class = "nb" > print< / span > < span class = "p" > (< / span > < span class = "n" > wifi< / span > < span class = "p" > .< / span > < span class = "n" > sta< / span > < span class = "p" > .< / span > < span class = "n" > getip< / span > < span class = "p" > ())< / span >
< span class = "c1" > --192.168.18.110< / span >
< / pre > < / div >
2014-11-19 04:07:46 +01:00
< h4 id = "manipulate-hardware-like-a-arduino" > < a name = "user-content-manipulate-hardware-like-a-arduino" href = "#manipulate-hardware-like-a-arduino" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Manipulate hardware like a arduino< / h4 >
2014-11-20 08:45:21 +01:00
< div class = "codehilite" > < pre > < span class = "n" > pin< / span > < span class = "o" > =< / span > < span class = "mi" > 1< / span >
< span class = "n" > gpio< / span > < span class = "p" > .< / span > < span class = "n" > mode< / span > < span class = "p" > (< / span > < span class = "n" > pin< / span > < span class = "p" > ,< / span > < span class = "n" > gpio< / span > < span class = "p" > .< / span > < span class = "n" > OUTPUT< / span > < span class = "p" > )< / span >
< span class = "n" > gpio< / span > < span class = "p" > .< / span > < span class = "n" > write< / span > < span class = "p" > (< / span > < span class = "n" > pin< / span > < span class = "p" > ,< / span > < span class = "n" > gpio< / span > < span class = "p" > .< / span > < span class = "n" > HIGH< / span > < span class = "p" > )< / span >
< span class = "nb" > print< / span > < span class = "p" > (< / span > < span class = "n" > gpio< / span > < span class = "p" > .< / span > < span class = "n" > read< / span > < span class = "p" > (< / span > < span class = "n" > pin< / span > < span class = "p" > ))< / span >
< / pre > < / div >
2014-11-19 04:07:46 +01:00
< h4 id = "write-network-application-in-nodejs-style" > < a name = "user-content-write-network-application-in-nodejs-style" href = "#write-network-application-in-nodejs-style" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Write network application in nodejs style< / h4 >
2014-11-20 08:45:21 +01:00
< div class = "codehilite" > < pre > < span class = "c1" > -- A simple http client< / span >
< span class = "n" > conn< / span > < span class = "o" > =< / span > < span class = "n" > net< / span > < span class = "p" > .< / span > < span class = "n" > createConnection< / span > < span class = "p" > (< / span > < span class = "n" > net< / span > < span class = "p" > .< / span > < span class = "n" > TCP< / span > < span class = "p" > ,< / span > < span class = "mi" > 0< / span > < span class = "p" > )< / span >
< span class = "n" > conn< / span > < span class = "p" > :< / span > < span class = "n" > on< / span > < span class = "p" > (< / span > < span class = "s2" > " < / span > < span class = "s" > receive" < / span > < span class = "p" > ,< / span > < span class = "k" > function< / span > < span class = "p" > (< / span > < span class = "n" > conn< / span > < span class = "p" > ,< / span > < span class = "n" > payload< / span > < span class = "p" > )< / span > < span class = "nb" > print< / span > < span class = "p" > (< / span > < span class = "n" > c< / span > < span class = "p" > )< / span > < span class = "k" > end< / span > < span class = "p" > )< / span >
< span class = "n" > conn< / span > < span class = "p" > :< / span > < span class = "n" > connect< / span > < span class = "p" > (< / span > < span class = "mi" > 80< / span > < span class = "p" > ,< / span > < span class = "s2" > " < / span > < span class = "s" > 115.239.210.27" < / span > < span class = "p" > )< / span >
< span class = "n" > conn< / span > < span class = "p" > :< / span > < span class = "n" > send< / span > < span class = "p" > (< / span > < span class = "s2" > " < / span > < span class = "s" > GET / HTTP/1.1< / span > < span class = "se" > \r\n< / span > < span class = "s" > Host: www.baidu.com< / span > < span class = "se" > \r\n< / span > < span class = "s" > " < / span >
< span class = "o" > ..< / span > < span class = "s2" > " < / span > < span class = "s" > Connection: keep-alive< / span > < span class = "se" > \r\n< / span > < span class = "s" > Accept: */*< / span > < span class = "se" > \r\n\r\n< / span > < span class = "s" > " < / span > < span class = "p" > )< / span >
< / pre > < / div >
2014-11-19 04:07:46 +01:00
< h4 id = "or-a-simple-http-server" > < a name = "user-content-or-a-simple-http-server" href = "#or-a-simple-http-server" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Or a simple http server< / h4 >
2014-11-20 08:45:21 +01:00
< div class = "codehilite" > < pre > < span class = "c1" > -- A simple http server< / span >
< span class = "n" > srv< / span > < span class = "o" > =< / span > < span class = "n" > net< / span > < span class = "p" > .< / span > < span class = "n" > createServer< / span > < span class = "p" > (< / span > < span class = "n" > net< / span > < span class = "p" > .< / span > < span class = "n" > TCP< / span > < span class = "p" > )< / span >
< span class = "n" > srv< / span > < span class = "p" > :< / span > < span class = "n" > listen< / span > < span class = "p" > (< / span > < span class = "mi" > 80< / span > < span class = "p" > ,< / span > < span class = "k" > function< / span > < span class = "p" > (< / span > < span class = "n" > conn< / span > < span class = "p" > )< / span >
< span class = "n" > conn< / span > < span class = "p" > :< / span > < span class = "n" > on< / span > < span class = "p" > (< / span > < span class = "s2" > " < / span > < span class = "s" > receive" < / span > < span class = "p" > ,< / span > < span class = "k" > function< / span > < span class = "p" > (< / span > < span class = "n" > conn< / span > < span class = "p" > ,< / span > < span class = "n" > payload< / span > < span class = "p" > )< / span >
< span class = "nb" > print< / span > < span class = "p" > (< / span > < span class = "n" > payload< / span > < span class = "p" > )< / span >
< span class = "n" > conn< / span > < span class = "p" > :< / span > < span class = "n" > send< / span > < span class = "p" > (< / span > < span class = "s2" > " < / span > < span class = "s" > < h1> Hello, NodeMcu.< /h1> " < / span > < span class = "p" > )< / span >
< span class = "k" > end< / span > < span class = "p" > )< / span >
< span class = "k" > end< / span > < span class = "p" > )< / span >
< / pre > < / div >
2014-11-19 04:07:46 +01:00
< h4 id = "do-something-shining" > < a name = "user-content-do-something-shining" href = "#do-something-shining" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Do something shining< / h4 >
2014-11-20 08:45:21 +01:00
< div class = "codehilite" > < pre > < span class = "k" > function< / span > < span class = "nf" > led< / span > < span class = "p" > (< / span > < span class = "n" > r< / span > < span class = "p" > ,< / span > < span class = "n" > g< / span > < span class = "p" > ,< / span > < span class = "n" > b< / span > < span class = "p" > )< / span >
< span class = "n" > pwm< / span > < span class = "p" > .< / span > < span class = "n" > setduty< / span > < span class = "p" > (< / span > < span class = "mi" > 0< / span > < span class = "p" > ,< / span > < span class = "n" > r< / span > < span class = "p" > )< / span >
< span class = "n" > pwm< / span > < span class = "p" > .< / span > < span class = "n" > setduty< / span > < span class = "p" > (< / span > < span class = "mi" > 1< / span > < span class = "p" > ,< / span > < span class = "n" > g< / span > < span class = "p" > )< / span >
< span class = "n" > pwm< / span > < span class = "p" > .< / span > < span class = "n" > setduty< / span > < span class = "p" > (< / span > < span class = "mi" > 2< / span > < span class = "p" > ,< / span > < span class = "n" > b< / span > < span class = "p" > )< / span >
< span class = "k" > end< / span >
< span class = "n" > pwm< / span > < span class = "p" > .< / span > < span class = "n" > setup< / span > < span class = "p" > (< / span > < span class = "mi" > 0< / span > < span class = "p" > ,< / span > < span class = "mi" > 500< / span > < span class = "p" > ,< / span > < span class = "mi" > 50< / span > < span class = "p" > )< / span >
< span class = "n" > pwm< / span > < span class = "p" > .< / span > < span class = "n" > setup< / span > < span class = "p" > (< / span > < span class = "mi" > 1< / span > < span class = "p" > ,< / span > < span class = "mi" > 500< / span > < span class = "p" > ,< / span > < span class = "mi" > 50< / span > < span class = "p" > )< / span >
< span class = "n" > pwm< / span > < span class = "p" > .< / span > < span class = "n" > setup< / span > < span class = "p" > (< / span > < span class = "mi" > 2< / span > < span class = "p" > ,< / span > < span class = "mi" > 500< / span > < span class = "p" > ,< / span > < span class = "mi" > 50< / span > < span class = "p" > )< / span >
< span class = "n" > pwm< / span > < span class = "p" > .< / span > < span class = "n" > start< / span > < span class = "p" > (< / span > < span class = "mi" > 0< / span > < span class = "p" > )< / span >
< span class = "n" > pwm< / span > < span class = "p" > .< / span > < span class = "n" > start< / span > < span class = "p" > (< / span > < span class = "mi" > 1< / span > < span class = "p" > )< / span >
< span class = "n" > pwm< / span > < span class = "p" > .< / span > < span class = "n" > start< / span > < span class = "p" > (< / span > < span class = "mi" > 2< / span > < span class = "p" > )< / span >
< span class = "n" > led< / span > < span class = "p" > (< / span > < span class = "mi" > 50< / span > < span class = "p" > ,< / span > < span class = "mi" > 0< / span > < span class = "p" > ,< / span > < span class = "mi" > 0< / span > < span class = "p" > )< / span > < span class = "c1" > -- red< / span >
< span class = "n" > led< / span > < span class = "p" > (< / span > < span class = "mi" > 0< / span > < span class = "p" > ,< / span > < span class = "mi" > 0< / span > < span class = "p" > ,< / span > < span class = "mi" > 50< / span > < span class = "p" > )< / span > < span class = "c1" > -- blue< / span >
< / pre > < / div >
2014-11-19 04:07:46 +01:00
< h4 id = "and-blink-it" > < a name = "user-content-and-blink-it" href = "#and-blink-it" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > And blink it< / h4 >
2014-11-20 08:45:21 +01:00
< div class = "codehilite" > < pre > < span class = "n" > lighton< / span > < span class = "o" > =< / span > < span class = "mi" > 0< / span >
< span class = "n" > tmr< / span > < span class = "p" > .< / span > < span class = "n" > alarm< / span > < span class = "p" > (< / span > < span class = "mi" > 1000< / span > < span class = "p" > ,< / span > < span class = "mi" > 1< / span > < span class = "p" > ,< / span > < span class = "k" > function< / span > < span class = "p" > ()< / span >
< span class = "k" > if< / span > < span class = "n" > lighton< / span > < span class = "o" > ==< / span > < span class = "mi" > 0< / span > < span class = "k" > then< / span >
< span class = "n" > lighton< / span > < span class = "o" > =< / span > < span class = "mi" > 1< / span >
< span class = "n" > led< / span > < span class = "p" > (< / span > < span class = "mi" > 50< / span > < span class = "p" > ,< / span > < span class = "mi" > 50< / span > < span class = "p" > ,< / span > < span class = "mi" > 50< / span > < span class = "p" > )< / span >
< span class = "k" > else< / span >
< span class = "n" > lighton< / span > < span class = "o" > =< / span > < span class = "mi" > 0< / span >
< span class = "n" > led< / span > < span class = "p" > (< / span > < span class = "mi" > 0< / span > < span class = "p" > ,< / span > < span class = "mi" > 0< / span > < span class = "p" > ,< / span > < span class = "mi" > 0< / span > < span class = "p" > )< / span >
< span class = "k" > end< / span >
< span class = "k" > end< / span > < span class = "p" > )< / span >
< / pre > < / div >
2014-11-19 04:07:46 +01:00
< h4 id = "if-you-want-to-run-something-when-system-started" > < a name = "user-content-if-you-want-to-run-something-when-system-started" href = "#if-you-want-to-run-something-when-system-started" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > If you want to run something when system started< / h4 >
2014-11-20 08:45:21 +01:00
< div class = "codehilite" > < pre > < span class = "c1" > --init.lua will be excuted< / span >
< span class = "n" > file< / span > < span class = "p" > .< / span > < span class = "n" > open< / span > < span class = "p" > (< / span > < span class = "s2" > " < / span > < span class = "s" > init.lua" < / span > < span class = "p" > ,< / span > < span class = "s2" > " < / span > < span class = "s" > w" < / span > < span class = "p" > )< / span >
< span class = "n" > file< / span > < span class = "p" > .< / span > < span class = "n" > writeline< / span > < span class = "p" > (< / span > < span class = "s" > [[print(" Hello, do this at the beginning." )]]< / span > < span class = "p" > )< / span >
< span class = "n" > file< / span > < span class = "p" > .< / span > < span class = "n" > close< / span > < span class = "p" > ()< / span >
< span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "n" > restart< / span > < span class = "p" > ()< / span > < span class = "c1" > -- this will restart the module.< / span >
< / pre > < / div >
2014-11-19 04:07:46 +01:00
< h4 id = "with-below-code-you-can-telnet-to-your-esp8266-now" > < a name = "user-content-with-below-code-you-can-telnet-to-your-esp8266-now" href = "#with-below-code-you-can-telnet-to-your-esp8266-now" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > With below code, you can telnet to your esp8266 now< / h4 >
2014-11-20 08:45:21 +01:00
< div class = "codehilite" > < pre > < span class = "c1" > -- a simple telnet server< / span >
< span class = "n" > s< / span > < span class = "o" > =< / span > < span class = "n" > net< / span > < span class = "p" > .< / span > < span class = "n" > createServer< / span > < span class = "p" > (< / span > < span class = "n" > net< / span > < span class = "p" > .< / span > < span class = "n" > TCP< / span > < span class = "p" > )< / span >
< span class = "n" > s< / span > < span class = "p" > :< / span > < span class = "n" > listen< / span > < span class = "p" > (< / span > < span class = "mi" > 2323< / span > < span class = "p" > ,< / span > < span class = "k" > function< / span > < span class = "p" > (< / span > < span class = "n" > c< / span > < span class = "p" > )< / span >
< span class = "n" > con_std< / span > < span class = "o" > =< / span > < span class = "n" > c< / span >
< span class = "k" > function< / span > < span class = "nf" > s_output< / span > < span class = "p" > (< / span > < span class = "n" > str< / span > < span class = "p" > )< / span >
< span class = "k" > if< / span > < span class = "p" > (< / span > < span class = "n" > con_std< / span > < span class = "o" > ~=< / span > < span class = "kc" > nil< / span > < span class = "p" > )< / span >
< span class = "k" > then< / span > < span class = "n" > con_std< / span > < span class = "p" > :< / span > < span class = "n" > send< / span > < span class = "p" > (< / span > < span class = "n" > str< / span > < span class = "p" > )< / span >
< span class = "k" > end< / span >
< span class = "k" > end< / span >
< span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "n" > output< / span > < span class = "p" > (< / span > < span class = "n" > s_output< / span > < span class = "p" > ,< / span > < span class = "mi" > 0< / span > < span class = "p" > )< / span > < span class = "c1" > -- re-direct output to function s_ouput.< / span >
< span class = "n" > c< / span > < span class = "p" > :< / span > < span class = "n" > on< / span > < span class = "p" > (< / span > < span class = "s2" > " < / span > < span class = "s" > receive" < / span > < span class = "p" > ,< / span > < span class = "k" > function< / span > < span class = "p" > (< / span > < span class = "n" > c< / span > < span class = "p" > ,< / span > < span class = "n" > l< / span > < span class = "p" > )< / span >
< span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "n" > input< / span > < span class = "p" > (< / span > < span class = "n" > l< / span > < span class = "p" > )< / span > < span class = "c1" > -- works like pcall(loadstring(l)) but support multiple separate line< / span >
< span class = "k" > end< / span > < span class = "p" > )< / span >
< span class = "n" > c< / span > < span class = "p" > :< / span > < span class = "n" > on< / span > < span class = "p" > (< / span > < span class = "s2" > " < / span > < span class = "s" > disconnection" < / span > < span class = "p" > ,< / span > < span class = "k" > function< / span > < span class = "p" > (< / span > < span class = "n" > c< / span > < span class = "p" > )< / span >
< span class = "n" > con_std< / span > < span class = "o" > =< / span > < span class = "kc" > nil< / span >
< span class = "n" > node< / span > < span class = "p" > .< / span > < span class = "n" > output< / span > < span class = "p" > (< / span > < span class = "kc" > nil< / span > < span class = "p" > )< / span > < span class = "c1" > -- un-regist the redirect output function, output goes to serial< / span >
< span class = "k" > end< / span > < span class = "p" > )< / span >
< span class = "k" > end< / span > < span class = "p" > )< / span >
< / pre > < / div >
2014-11-19 04:07:46 +01:00
< h1 id = "check-this-out" > < a name = "user-content-check-this-out" href = "#check-this-out" class = "headeranchor-link" aria-hidden = "true" > < span class = "headeranchor" > < / span > < / a > Check this out< / h1 >
< p > Tencent QQ group: 309957875< br / > < br / >
< a href = "https://github.com/funshine/nodemcu-firmware/wiki/nodeMcu:-lua-based-interactive-firmware-for-mcu" > nodemcu wiki< / a > < br / > < br / >
< a href = "http://www.nodemcu.com" > nodemcu.com< / a > < / p > < / article > < / body > < / html >