new api integrated

This commit is contained in:
2017-10-29 12:04:30 +01:00
parent 1c9739c5cf
commit 4f4e072542
12 changed files with 174 additions and 36 deletions

3
.gitignore vendored
View File

@@ -1 +1,4 @@
node_modules/
.pioenvs
.piolibdeps
.vscode/

65
.travis.yml Normal file
View File

@@ -0,0 +1,65 @@
# Continuous Integration (CI) is the practice, in software
# engineering, of merging all developer working copies with a shared mainline
# several times a day < http://docs.platformio.org/page/ci/index.html >
#
# Documentation:
#
# * Travis CI Embedded Builds with PlatformIO
# < https://docs.travis-ci.com/user/integration/platformio/ >
#
# * PlatformIO integration with Travis CI
# < http://docs.platformio.org/page/ci/travis.html >
#
# * User Guide for `platformio ci` command
# < http://docs.platformio.org/page/userguide/cmd_ci.html >
#
#
# Please choice one of the following templates (proposed below) and uncomment
# it (remove "# " before each line) or use own configuration according to the
# Travis CI documentation (see above).
#
#
# Template #1: General project. Test it using existing `platformio.ini`.
#
# language: python
# python:
# - "2.7"
#
# sudo: false
# cache:
# directories:
# - "~/.platformio"
#
# install:
# - pip install -U platformio
#
# script:
# - platformio run
#
# Template #2: The project is intended to by used as a library with examples
#
# language: python
# python:
# - "2.7"
#
# sudo: false
# cache:
# directories:
# - "~/.platformio"
#
# env:
# - PLATFORMIO_CI_SRC=path/to/test/file.c
# - PLATFORMIO_CI_SRC=examples/file.ino
# - PLATFORMIO_CI_SRC=path/to/test/directory
#
# install:
# - pip install -U platformio
#
# script:
# - platformio ci --lib="." --board=ID_1 --board=ID_2 --board=ID_N

View File

@@ -1,5 +1,5 @@
{
"apMode": 0,
"SSID": "",
"Password": ""
"SSID": "tErAx1d",
"Password": "ramalamadingdong"
}

View File

@@ -94,13 +94,13 @@
<div id="prototypControls">
<label>L</label>
<input type="range" class="laser slider" value="0" max="128">
<input type="range" class="laser slider" value="1" min="1" max="128">
<label>M1</label>
<input type="range" class="motor slider" value="0" max="128" data-motor-nr="1">
<input type="range" class="motor slider" value="1" min="1" max="128" data-motor-nr="1">
<label>M2</label>
<input type="range" class="motor slider" value="0" max="128" data-motor-nr="2">
<input type="range" class="motor slider" value="1" min="1" max="128" data-motor-nr="2">
<label>M3</label>
<input type="range" class="motor slider" value="0" max="128" data-motor-nr="3">
<input type="range" class="motor slider" value="1" min="1" max="128" data-motor-nr="3">
</div>
<div id="prototypControls">
<text class="sectionDesc">last uri:</text>

View File

@@ -99,7 +99,8 @@ var $ = function(selector){
let update = function(endpoint, method, props) {
Sui.http.ajax({
method: method,
endpoint: node.api[endpoint] + (props ? props.join('/') : ''),
endpoint: node.api[endpoint],
data: props,
cache: false
}, actuator.onResponse || null);
};
@@ -107,7 +108,7 @@ var $ = function(selector){
let handle = function(event) {
update.call(this,
actuator.api,
'GET',
actuator.method,
actuator.data ?
actuator.data.call(this) : [this.value]
);
@@ -147,7 +148,7 @@ var $ = function(selector){
if(!cache) {
data['_'] = new Date().getTime();
}
var serializedData = Sui.util.serialize(data);
var serializedData = data; //Sui.util.serialize(data);
var endPointUrl = (config.method === 'GET' || config.method === 'DELETE') && data ? config.endpoint+'?'+serializedData : config.endpoint;
var postData = config.method === 'POST' || config.method === 'PUT' ? serializedData : null;
@@ -166,23 +167,30 @@ var $ = function(selector){
};
[{
api: 'MOTOR',
method: 'GET',
method: 'POST',
selector: '.motor.slider',
event: 'change',
data: function() {
return [this.getAttribute('data-motor-nr'), this.value];
let payload = {};
payload['motor' + this.getAttribute('data-motor-nr')] = this.value;
return Sui.util.serialize(payload);
},
onResponse: debugResponse
}, {
api: 'LASER',
method: 'GET',
method: 'POST',
selector: '.laser.slider',
event: 'change',
onResponse: debugResponse
onResponse: debugResponse,
data: function() {
return Sui.util.serialize({
laser: this.value
});
}
}].forEach(Sui.link({
api: {
MOTOR: '/motor/', // {motorNr}/{value}
LASER: '/laser/' // {value}
MOTOR: '/spirograph', // {motorNr}/{value}
LASER: '/spirograph' // {value}
}
}));
});

View File

@@ -1,5 +1,5 @@
{
"apMode": 0,
"SSID": "",
"Password": ""
"SSID": "tErAx1d",
"Password": "ramalamadingdong"
}

View File

@@ -94,13 +94,13 @@
<div id="prototypControls">
<label>L</label>
<input type="range" class="laser slider" value="0" max="128">
<input type="range" class="laser slider" value="1" min="1" max="128">
<label>M1</label>
<input type="range" class="motor slider" value="0" max="128" data-motor-nr="1">
<input type="range" class="motor slider" value="1" min="1" max="128" data-motor-nr="1">
<label>M2</label>
<input type="range" class="motor slider" value="0" max="128" data-motor-nr="2">
<input type="range" class="motor slider" value="1" min="1" max="128" data-motor-nr="2">
<label>M3</label>
<input type="range" class="motor slider" value="0" max="128" data-motor-nr="3">
<input type="range" class="motor slider" value="1" min="1" max="128" data-motor-nr="3">
</div>
<div id="prototypControls">
<text class="sectionDesc">last uri:</text>

View File

@@ -12,7 +12,8 @@ var Sui = {
let update = function(endpoint, method, props) {
Sui.http.ajax({
method: method,
endpoint: node.api[endpoint] + (props ? props.join('/') : ''),
endpoint: node.api[endpoint],
data: props,
cache: false
}, actuator.onResponse || null);
};
@@ -20,7 +21,7 @@ var Sui = {
let handle = function(event) {
update.call(this,
actuator.api,
'GET',
actuator.method,
actuator.data ?
actuator.data.call(this) : [this.value]
);
@@ -60,7 +61,7 @@ var Sui = {
if(!cache) {
data['_'] = new Date().getTime();
}
var serializedData = Sui.util.serialize(data);
var serializedData = data; //Sui.util.serialize(data);
var endPointUrl = (config.method === 'GET' || config.method === 'DELETE') && data ? config.endpoint+'?'+serializedData : config.endpoint;
var postData = config.method === 'POST' || config.method === 'PUT' ? serializedData : null;

View File

@@ -4,23 +4,30 @@ Sui.ready(() => {
};
[{
api: 'MOTOR',
method: 'GET',
method: 'POST',
selector: '.motor.slider',
event: 'change',
data: function() {
return [this.getAttribute('data-motor-nr'), this.value];
let payload = {};
payload['motor' + this.getAttribute('data-motor-nr')] = this.value;
return Sui.util.serialize(payload);
},
onResponse: debugResponse
}, {
api: 'LASER',
method: 'GET',
method: 'POST',
selector: '.laser.slider',
event: 'change',
onResponse: debugResponse
onResponse: debugResponse,
data: function() {
return Sui.util.serialize({
laser: this.value
});
}
}].forEach(Sui.link({
api: {
MOTOR: '/motor/', // {motorNr}/{value}
LASER: '/laser/' // {value}
MOTOR: '/spirograph', // {motorNr}/{value}
LASER: '/spirograph' // {value}
}
}));
});

36
lib/readme.txt Normal file
View File

@@ -0,0 +1,36 @@
This directory is intended for the project specific (private) libraries.
PlatformIO will compile them to static libraries and link to executable file.
The source code of each library should be placed in separate directory, like
"lib/private_lib/[here are source files]".
For example, see how can be organized `Foo` and `Bar` libraries:
|--lib
| |--Bar
| | |--docs
| | |--examples
| | |--src
| | |- Bar.c
| | |- Bar.h
| |--Foo
| | |- Foo.c
| | |- Foo.h
| |- readme.txt --> THIS FILE
|- platformio.ini
|--src
|- main.c
Then in `src/main.c` you should use:
#include <Foo.h>
#include <Bar.h>
// rest H/C/CPP code
PlatformIO will find your libraries automatically, configure preprocessor's
include paths and build them.
More information about PlatformIO Library Dependency Finder
- http://docs.platformio.org/page/librarymanager/ldf.html

19
platformio.ini Normal file
View File

@@ -0,0 +1,19 @@
; PlatformIO Project Configuration File
;
; Build options: build flags, source filter
; Upload options: custom upload port, speed and extra flags
; Library options: dependencies, extra library storages
; Advanced options: extra scripting
;
; Please visit documentation for the other options and examples
; http://docs.platformio.org/page/projectconf.html
[env:nodemcu]
platform = espressif8266
board = nodemcu
framework = arduino
monitor_baud = 115200
build_flags = -Wl,-Tesp8266.flash.4m.ld
board_f_flash = 80000000L
board_flash_mode = dio
upload_resetmethod = nodemcu

View File

@@ -126,7 +126,7 @@ void hWriteSpiro()
String responseBuffer = String();
StaticJsonBuffer<200> jsonBuffer;
JsonObject& root = jsonBuffer.createObject();
JsonObject& data = root.createNestedObject("wificonfig");
JsonObject& data = root.createNestedObject("spirograph");
if (server.hasArg("laser") ) {
lmValues[0] = server.arg("laser").toInt();
data["laser"] = (String)lmValues[0];
@@ -439,4 +439,3 @@ void loop(void) {
server.handleClient();
}