commit
bb024fc904
6 changed files with 541 additions and 0 deletions
@ -0,0 +1,21 @@ |
||||
The MIT License (MIT) |
||||
|
||||
Copyright (c) 2018 Tanner Collin, Matthew Mulrooney |
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy |
||||
of this software and associated documentation files (the "Software"), to deal |
||||
in the Software without restriction, including without limitation the rights |
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
||||
copies of the Software, and to permit persons to whom the Software is |
||||
furnished to do so, subject to the following conditions: |
||||
|
||||
The above copyright notice and this permission notice shall be included in all |
||||
copies or substantial portions of the Software. |
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
||||
SOFTWARE. |
@ -0,0 +1,90 @@ |
||||
#include <Arduino.h> |
||||
#include <ArduinoJson.h> |
||||
|
||||
#include <ESP8266WiFi.h> |
||||
#include <ESP8266WiFiMulti.h> |
||||
|
||||
#include <ESP8266HTTPClient.h> |
||||
|
||||
#define USE_SERIAL Serial |
||||
|
||||
ESP8266WiFiMulti WiFiMulti; |
||||
char macAddr[18]; |
||||
|
||||
// Generated with: https://arduinojson.org/assistant/
|
||||
const size_t bufferSize = JSON_OBJECT_SIZE(3) + 50; |
||||
DynamicJsonBuffer jsonBuffer(bufferSize); |
||||
|
||||
void setup() { |
||||
|
||||
pinMode(D2, OUTPUT); |
||||
digitalWrite(D2, HIGH); |
||||
|
||||
USE_SERIAL.begin(115200); |
||||
// USE_SERIAL.setDebugOutput(true);
|
||||
|
||||
USE_SERIAL.println(); |
||||
USE_SERIAL.println(); |
||||
USE_SERIAL.println(); |
||||
|
||||
for(uint8_t t = 4; t > 0; t--) { |
||||
USE_SERIAL.printf("[SETUP] WAIT %d...\n", t); |
||||
USE_SERIAL.flush(); |
||||
delay(1000); |
||||
} |
||||
|
||||
WiFi.mode(WIFI_STA); |
||||
WiFiMulti.addAP("Protospace", "yycmakers"); |
||||
|
||||
byte ar[6]; |
||||
WiFi.macAddress(ar); |
||||
sprintf(macAddr, "%02X%02X%02X%02X%02X%02X", ar[0], ar[1], ar[2], ar[3], ar[4], ar[5]); |
||||
USE_SERIAL.println(macAddr); |
||||
|
||||
} |
||||
|
||||
void loop() { |
||||
// wait for WiFi connection
|
||||
if((WiFiMulti.run() == WL_CONNECTED)) { |
||||
|
||||
HTTPClient http; |
||||
|
||||
USE_SERIAL.print("[HTTP] begin...\n"); |
||||
// configure traged server and url
|
||||
//http.begin("https://192.168.1.12/test.html", "7a 9c f4 db 40 d3 62 5a 6e 21 bc 5c cc 66 c8 3e a1 45 59 38"); //HTTPS
|
||||
http.begin(String("http://172.17.32.164:3000/api/tool/") + macAddr); //HTTP
|
||||
|
||||
USE_SERIAL.print("[HTTP] GET...\n"); |
||||
// start connection and send HTTP header
|
||||
int httpCode = http.GET(); |
||||
|
||||
// httpCode will be negative on error
|
||||
if(httpCode > 0) { |
||||
// HTTP header has been send and Server response header has been handled
|
||||
USE_SERIAL.printf("[HTTP] GET... code: %d\n", httpCode); |
||||
|
||||
// file found at server
|
||||
if(httpCode == HTTP_CODE_OK) { |
||||
String payload = http.getString(); |
||||
USE_SERIAL.println(payload); |
||||
JsonObject& root = jsonBuffer.parseObject(payload); |
||||
|
||||
bool relayOn = root["relayOn"]; // true
|
||||
bool ledOn = root["ledOn"]; // true
|
||||
const char* date = root["date"]; // "2018-02-01"
|
||||
|
||||
USE_SERIAL.println(String("relayOn: ") + relayOn + String(" ledOn: ") + ledOn + String(" Date: ") + date);
|
||||
|
||||
digitalWrite(D2, !relayOn); |
||||
|
||||
} |
||||
} else { |
||||
USE_SERIAL.printf("[HTTP] GET... failed, error: %s\n", http.errorToString(httpCode).c_str()); |
||||
} |
||||
|
||||
http.end(); |
||||
} |
||||
|
||||
delay(10000); |
||||
} |
||||
|
@ -0,0 +1,23 @@ |
||||
# See https://help.github.com/ignore-files/ for more about ignoring files. |
||||
|
||||
# dependencies |
||||
/node_modules |
||||
|
||||
# testing |
||||
/coverage |
||||
|
||||
# production |
||||
/build |
||||
|
||||
# misc |
||||
.DS_Store |
||||
.env.local |
||||
.env.development.local |
||||
.env.test.local |
||||
.env.production.local |
||||
*.swp |
||||
*.swo |
||||
|
||||
npm-debug.log* |
||||
yarn-debug.log* |
||||
yarn-error.log* |
@ -0,0 +1,362 @@ |
||||
{ |
||||
"name": "webserver", |
||||
"version": "1.0.0", |
||||
"lockfileVersion": 1, |
||||
"requires": true, |
||||
"dependencies": { |
||||
"accepts": { |
||||
"version": "1.3.4", |
||||
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.4.tgz", |
||||
"integrity": "sha1-hiRnWMfdbSGmR0/whKR0DsBesh8=", |
||||
"requires": { |
||||
"mime-types": "2.1.17", |
||||
"negotiator": "0.6.1" |
||||
} |
||||
}, |
||||
"array-flatten": { |
||||
"version": "1.1.1", |
||||
"resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", |
||||
"integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" |
||||
}, |
||||
"body-parser": { |
||||
"version": "1.18.2", |
||||
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.18.2.tgz", |
||||
"integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=", |
||||
"requires": { |
||||
"bytes": "3.0.0", |
||||
"content-type": "1.0.4", |
||||
"debug": "2.6.9", |
||||
"depd": "1.1.2", |
||||
"http-errors": "1.6.2", |
||||
"iconv-lite": "0.4.19", |
||||
"on-finished": "2.3.0", |
||||
"qs": "6.5.1", |
||||
"raw-body": "2.3.2", |
||||
"type-is": "1.6.15" |
||||
} |
||||
}, |
||||
"bytes": { |
||||
"version": "3.0.0", |
||||
"resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", |
||||
"integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" |
||||
}, |
||||
"content-disposition": { |
||||
"version": "0.5.2", |
||||
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz", |
||||
"integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=" |
||||
}, |
||||
"content-type": { |
||||
"version": "1.0.4", |
||||
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", |
||||
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" |
||||
}, |
||||
"cookie": { |
||||
"version": "0.3.1", |
||||
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.3.1.tgz", |
||||
"integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=" |
||||
}, |
||||
"cookie-signature": { |
||||
"version": "1.0.6", |
||||
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", |
||||
"integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" |
||||
}, |
||||
"debug": { |
||||
"version": "2.6.9", |
||||
"resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", |
||||
"integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", |
||||
"requires": { |
||||
"ms": "2.0.0" |
||||
} |
||||
}, |
||||
"depd": { |
||||
"version": "1.1.2", |
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", |
||||
"integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" |
||||
}, |
||||
"destroy": { |
||||
"version": "1.0.4", |
||||
"resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", |
||||
"integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" |
||||
}, |
||||
"ee-first": { |
||||
"version": "1.1.1", |
||||
"resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", |
||||
"integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" |
||||
}, |
||||
"encodeurl": { |
||||
"version": "1.0.2", |
||||
"resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", |
||||
"integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" |
||||
}, |
||||
"escape-html": { |
||||
"version": "1.0.3", |
||||
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", |
||||
"integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" |
||||
}, |
||||
"etag": { |
||||
"version": "1.8.1", |
||||
"resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", |
||||
"integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" |
||||
}, |
||||
"express": { |
||||
"version": "4.16.2", |
||||
"resolved": "https://registry.npmjs.org/express/-/express-4.16.2.tgz", |
||||
"integrity": "sha1-41xt/i1kt9ygpc1PIXgb4ymeB2w=", |
||||
"requires": { |
||||
"accepts": "1.3.4", |
||||
"array-flatten": "1.1.1", |
||||
"body-parser": "1.18.2", |
||||
"content-disposition": "0.5.2", |
||||
"content-type": "1.0.4", |
||||
"cookie": "0.3.1", |
||||
"cookie-signature": "1.0.6", |
||||
"debug": "2.6.9", |
||||
"depd": "1.1.2", |
||||
"encodeurl": "1.0.2", |
||||
"escape-html": "1.0.3", |
||||
"etag": "1.8.1", |
||||
"finalhandler": "1.1.0", |
||||
"fresh": "0.5.2", |
||||
"merge-descriptors": "1.0.1", |
||||
"methods": "1.1.2", |
||||
"on-finished": "2.3.0", |
||||
"parseurl": "1.3.2", |
||||
"path-to-regexp": "0.1.7", |
||||
"proxy-addr": "2.0.2", |
||||
"qs": "6.5.1", |
||||
"range-parser": "1.2.0", |
||||
"safe-buffer": "5.1.1", |
||||
"send": "0.16.1", |
||||
"serve-static": "1.13.1", |
||||
"setprototypeof": "1.1.0", |
||||
"statuses": "1.3.1", |
||||
"type-is": "1.6.15", |
||||
"utils-merge": "1.0.1", |
||||
"vary": "1.1.2" |
||||
} |
||||
}, |
||||
"finalhandler": { |
||||
"version": "1.1.0", |
||||
"resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", |
||||
"integrity": "sha1-zgtoVbRYU+eRsvzGgARtiCU91/U=", |
||||
"requires": { |
||||
"debug": "2.6.9", |
||||
"encodeurl": "1.0.2", |
||||
"escape-html": "1.0.3", |
||||
"on-finished": "2.3.0", |
||||
"parseurl": "1.3.2", |
||||
"statuses": "1.3.1", |
||||
"unpipe": "1.0.0" |
||||
} |
||||
}, |
||||
"forwarded": { |
||||
"version": "0.1.2", |
||||
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", |
||||
"integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" |
||||
}, |
||||
"fresh": { |
||||
"version": "0.5.2", |
||||
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", |
||||
"integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" |
||||
}, |
||||
"http-errors": { |
||||
"version": "1.6.2", |
||||
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.2.tgz", |
||||
"integrity": "sha1-CgAsyFcHGSp+eUbO7cERVfYOxzY=", |
||||
"requires": { |
||||
"depd": "1.1.1", |
||||
"inherits": "2.0.3", |
||||
"setprototypeof": "1.0.3", |
||||
"statuses": "1.3.1" |
||||
}, |
||||
"dependencies": { |
||||
"depd": { |
||||
"version": "1.1.1", |
||||
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.1.tgz", |
||||
"integrity": "sha1-V4O04cRZ8G+lyif5kfPQbnoxA1k=" |
||||
}, |
||||
"setprototypeof": { |
||||
"version": "1.0.3", |
||||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.0.3.tgz", |
||||
"integrity": "sha1-ZlZ+NwQ+608E2RvWWMDL77VbjgQ=" |
||||
} |
||||
} |
||||
}, |
||||
"iconv-lite": { |
||||
"version": "0.4.19", |
||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz", |
||||
"integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==" |
||||
}, |
||||
"inherits": { |
||||
"version": "2.0.3", |
||||
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", |
||||
"integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" |
||||
}, |
||||
"ipaddr.js": { |
||||
"version": "1.5.2", |
||||
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.5.2.tgz", |
||||
"integrity": "sha1-1LUFvemUaYfM8PxY2QEP+WB+P6A=" |
||||
}, |
||||
"media-typer": { |
||||
"version": "0.3.0", |
||||
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", |
||||
"integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=" |
||||
}, |
||||
"merge-descriptors": { |
||||
"version": "1.0.1", |
||||
"resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", |
||||
"integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=" |
||||
}, |
||||
"methods": { |
||||
"version": "1.1.2", |
||||
"resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", |
||||
"integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=" |
||||
}, |
||||
"mime": { |
||||
"version": "1.4.1", |
||||
"resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", |
||||
"integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==" |
||||
}, |
||||
"mime-db": { |
||||
"version": "1.30.0", |
||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.30.0.tgz", |
||||
"integrity": "sha1-dMZD2i3Z1qRTmZY0ZbJtXKfXHwE=" |
||||
}, |
||||
"mime-types": { |
||||
"version": "2.1.17", |
||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.17.tgz", |
||||
"integrity": "sha1-Cdejk/A+mVp5+K+Fe3Cp4KsWVXo=", |
||||
"requires": { |
||||
"mime-db": "1.30.0" |
||||
} |
||||
}, |
||||
"ms": { |
||||
"version": "2.0.0", |
||||
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", |
||||
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" |
||||
}, |
||||
"negotiator": { |
||||
"version": "0.6.1", |
||||
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.1.tgz", |
||||
"integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=" |
||||
}, |
||||
"on-finished": { |
||||
"version": "2.3.0", |
||||
"resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", |
||||
"integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", |
||||
"requires": { |
||||
"ee-first": "1.1.1" |
||||
} |
||||
}, |
||||
"parseurl": { |
||||
"version": "1.3.2", |
||||
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz", |
||||
"integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=" |
||||
}, |
||||
"path-to-regexp": { |
||||
"version": "0.1.7", |
||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", |
||||
"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=" |
||||
}, |
||||
"proxy-addr": { |
||||
"version": "2.0.2", |
||||
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.2.tgz", |
||||
"integrity": "sha1-ZXFQT0e7mI7IGAJT+F3X4UlSvew=", |
||||
"requires": { |
||||
"forwarded": "0.1.2", |
||||
"ipaddr.js": "1.5.2" |
||||
} |
||||
}, |
||||
"qs": { |
||||
"version": "6.5.1", |
||||
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz", |
||||
"integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==" |
||||
}, |
||||
"range-parser": { |
||||
"version": "1.2.0", |
||||
"resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.0.tgz", |
||||
"integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=" |
||||
}, |
||||
"raw-body": { |
||||
"version": "2.3.2", |
||||
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.3.2.tgz", |
||||
"integrity": "sha1-vNYMd9Prk83gBQKVw/N5OJvIj4k=", |
||||
"requires": { |
||||
"bytes": "3.0.0", |
||||
"http-errors": "1.6.2", |
||||
"iconv-lite": "0.4.19", |
||||
"unpipe": "1.0.0" |
||||
} |
||||
}, |
||||
"safe-buffer": { |
||||
"version": "5.1.1", |
||||
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz", |
||||
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg==" |
||||
}, |
||||
"send": { |
||||
"version": "0.16.1", |
||||
"resolved": "https://registry.npmjs.org/send/-/send-0.16.1.tgz", |
||||
"integrity": "sha512-ElCLJdJIKPk6ux/Hocwhk7NFHpI3pVm/IZOYWqUmoxcgeyM+MpxHHKhb8QmlJDX1pU6WrgaHBkVNm73Sv7uc2A==", |
||||
"requires": { |
||||
"debug": "2.6.9", |
||||
"depd": "1.1.2", |
||||
"destroy": "1.0.4", |
||||
"encodeurl": "1.0.2", |
||||
"escape-html": "1.0.3", |
||||
"etag": "1.8.1", |
||||
"fresh": "0.5.2", |
||||
"http-errors": "1.6.2", |
||||
"mime": "1.4.1", |
||||
"ms": "2.0.0", |
||||
"on-finished": "2.3.0", |
||||
"range-parser": "1.2.0", |
||||
"statuses": "1.3.1" |
||||
} |
||||
}, |
||||
"serve-static": { |
||||
"version": "1.13.1", |
||||
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.1.tgz", |
||||
"integrity": "sha512-hSMUZrsPa/I09VYFJwa627JJkNs0NrfL1Uzuup+GqHfToR2KcsXFymXSV90hoyw3M+msjFuQly+YzIH/q0MGlQ==", |
||||
"requires": { |
||||
"encodeurl": "1.0.2", |
||||
"escape-html": "1.0.3", |
||||
"parseurl": "1.3.2", |
||||
"send": "0.16.1" |
||||
} |
||||
}, |
||||
"setprototypeof": { |
||||
"version": "1.1.0", |
||||
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", |
||||
"integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==" |
||||
}, |
||||
"statuses": { |
||||
"version": "1.3.1", |
||||
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", |
||||
"integrity": "sha1-+vUbnrdKrvOzrPStX2Gr8ky3uT4=" |
||||
}, |
||||
"type-is": { |
||||
"version": "1.6.15", |
||||
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.15.tgz", |
||||
"integrity": "sha1-yrEPtJCeRByChC6v4a1kbIGARBA=", |
||||
"requires": { |
||||
"media-typer": "0.3.0", |
||||
"mime-types": "2.1.17" |
||||
} |
||||
}, |
||||
"unpipe": { |
||||
"version": "1.0.0", |
||||
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", |
||||
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" |
||||
}, |
||||
"utils-merge": { |
||||
"version": "1.0.1", |
||||
"resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", |
||||
"integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" |
||||
}, |
||||
"vary": { |
||||
"version": "1.1.2", |
||||
"resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", |
||||
"integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,15 @@ |
||||
{ |
||||
"name": "webserver", |
||||
"version": "1.0.0", |
||||
"description": "", |
||||
"main": "server.js", |
||||
"scripts": { |
||||
"test": "echo \"Error: no test specified\" && exit 1", |
||||
"start": "node server.js" |
||||
}, |
||||
"author": "", |
||||
"license": "MIT", |
||||
"dependencies": { |
||||
"express": "^4.16.2" |
||||
} |
||||
} |
@ -0,0 +1,30 @@ |
||||
const express = require('express'); |
||||
const app = express(); |
||||
|
||||
const tools = { |
||||
"2C3AE843A15F": { |
||||
relayOn: false, |
||||
ledOn: true, |
||||
date: "2018-02-01", |
||||
}, |
||||
}; |
||||
|
||||
const server = app.listen(3000, function () { |
||||
console.log('Example app listening on port 3000!'); |
||||
}); |
||||
|
||||
app.use('/', express.static('dist')); |
||||
|
||||
app.get('/api/tool/:mac', function (req, res) { |
||||
const mac = req.params.mac; |
||||
|
||||
const data = tools[mac]; |
||||
if (!data) { |
||||
res.send(404); |
||||
} |
||||
|
||||
console.log("Request from MAC: " + mac); |
||||
|
||||
res.setHeader('Content-Type', 'application/json'); |
||||
res.send(JSON.stringify(data)); |
||||
}); |
Loading…
Reference in new issue