From fccbe2247e9e658c1cff4c3ffa16f47a1df59d11 Mon Sep 17 00:00:00 2001 From: Jens True Date: Sat, 23 Mar 2019 15:48:17 +0100 Subject: [PATCH] Initial import --- .gitignore | 4 ++++ README.md | 4 ++++ data/homie/ui_bundle.gz | Bin 0 -> 59573 bytes lib/readme.txt | 38 ++++++++++++++++++++++++++++++++++++ platformio.ini | 27 ++++++++++++++++++++++++++ src/main.cpp | 42 ++++++++++++++++++++++++++++++++++++++++ 6 files changed, 115 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 data/homie/ui_bundle.gz create mode 100644 lib/readme.txt create mode 100644 platformio.ini create mode 100644 src/main.cpp diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6c97aa4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +.pioenvs +.piolibdeps +data/homie/config.json +nbproject diff --git a/README.md b/README.md new file mode 100644 index 0000000..5e80006 --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# README # +edit data/homie/config.json +platformio run -t upload +platformio run -t uploadfs \ No newline at end of file diff --git a/data/homie/ui_bundle.gz b/data/homie/ui_bundle.gz new file mode 100644 index 0000000000000000000000000000000000000000..3ef3bd568b8b933b51efd4a950707ae3d632582f GIT binary patch literal 59573 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 GgaZK6iP>NP literal 0 HcmV?d00001 diff --git a/lib/readme.txt b/lib/readme.txt new file mode 100644 index 0000000..b06c940 --- /dev/null +++ b/lib/readme.txt @@ -0,0 +1,38 @@ + +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 organised `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 +#include + +// rest H/C/CPP code + +PlatformIO will find your libraries automatically, configure preprocessor's +include paths and build them. + +See additional options for PlatformIO Library Dependency Finder `lib_*`: + +http://docs.platformio.org/en/latest/projectconf.html#lib-install + diff --git a/platformio.ini b/platformio.ini new file mode 100644 index 0000000..8720c4d --- /dev/null +++ b/platformio.ini @@ -0,0 +1,27 @@ +# +# Project Configuration File +# +# A detailed documentation with the EXAMPLES is located here: +# http://docs.platformio.org/en/latest/projectconf.html +# + +# A sign `#` at the beginning of the line indicates a comment +# Comment lines are ignored. + +# Simple and base environment +# [env:mybaseenv] +# platform = %INSTALLED_PLATFORM_NAME_HERE% +# framework = +# board = +# +# Automatic targets - enable auto-uploading +# targets = upload + +[env:nodemcu] +platform = espressif8266 +framework = arduino +board = nodemcu +upload_speed=921600 + +build_flags = -D PIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY +lib_deps = https://github.com/homieiot/homie-esp8266.git#develop diff --git a/src/main.cpp b/src/main.cpp new file mode 100644 index 0000000..1bdd5cb --- /dev/null +++ b/src/main.cpp @@ -0,0 +1,42 @@ +#include + +const int PIN_RELAY = D1; +int timer = 0; +HomieNode powerNode("power", "switch"); + +bool powerOnHandler(const HomieRange& range, const String& value) { + if (value != "true" && value != "false") return false; + bool on = (value == "true"); + digitalWrite(PIN_RELAY, on ? LOW : HIGH); + powerNode.setProperty("on").send(value); + Homie.getLogger() << "Power is " << (on ? "on" : "off") << endl; + + return true; +} + +void setupHandler() { + pinMode(PIN_RELAY, OUTPUT); + digitalWrite(PIN_RELAY, HIGH); + + powerNode.setProperty("on").send("false"); +} + +void setup() { + Serial.begin(115200); + + Serial << endl << endl; + Serial << "Firmware 0.0.1" << endl; + Serial << endl << endl; + + Homie_setFirmware("deskcontrol", "1.0.0"); + Homie_setBrand("FuryFire"); + + powerNode.advertise("on").settable(powerOnHandler); + + Homie.setSetupFunction(setupHandler); + Homie.setup(); +} + +void loop() { + Homie.loop(); +} \ No newline at end of file