Git Product home page Git Product logo

kimai-rfid-esp's Introduction

Kimai RFID ESP

This programm is build for for an ESP8265/ESP8266 to communicate with the open source Kimai timetracking software via the API sending RFIDs to the server for starting/stopping timesheets. Written in C++ with PlatformIO Extension in VSCode.

Features

  • Show username and timesheet duration
  • Captive Portal for configuration
  • OLED display support
  • NTP Client for current time

Little video preview

Intro

The programm is optimized for an ESP8265 controller but the performance should be the same on a ESP8266. I made it modular for the usage with/without serial output or/and a display. The platformio.ini file includes settings for you environment like board type, debug (for WiFiManager and HTTPClient) and board speed. In the main.ccp you can set the debug for the programm or enable/disable display.

All links to the needed parts are picked randomly on Amazon and maybe you can find cheaper modules on other sites.

First Start

The first start will set up a WiFi accesspoint that you can manage your settings for WiFi and your Kimai Server. Note: Actually theres no HTTPS client implemented!

alt text

If everything went well you are ready to run your Kimai remote device.

Usage

The usage is simply requesting the Remote Kimai API with the RFID and printing infos via serial or showing infos on display.

Status with display

(My camera is faster than the refreshing rate, so not everything seems to be correctly drawn on the display) After a successful start the menu is a analogue clock.

alt text

When reading a card and doing a successful request to the Kimai API the status of the timesheet will be shown.

alt text

Status without display or serial debug

  • Constant LED light when connected to WiFi
  • 1 Hz blink after successfull request
  • 2 Hz blink on a not registred card
  • 10 Hz blink on connection errrors

Hardware

In my case I used a "Sonoff Touch" switch for the reader thats based on a ESP8265 contoller. But the librarys are also usable for the ESP8266 controllers. On the PCB of the Sonoff Switch is a useable LED that can used for displaying the status. Additionally a MFRC522 RFID reader is neccessary and if you want to a OLED display.

Sonoff hack ESP8265

Prerequirements

alt text

Preparation

The Sonoff switch consits of two PCBs the controller and power part that are connected with 4 pins. We just have to mod the upper controller PCB that's glued with double sided tape to the power PCB. The reader fits very well into the enclosure.

alt text

Theres a flat white diffusor for the relay status on top of the PCB. We have to remove it to reduce the height.

Now there are three ways:

  1. If you want to reuse the WiFi status LED of the switch you have to drill through the readers PCB
  2. Use the LED and modify the reader
  3. Dont use the LED and dont modify the reader

I encountered some problems with the reader when the controller board is really close to it. Only the cards delivered with the reader work well. I guess it's a shielding problem. But to get more distance to the controller PCB you need to change the readers crystal position so you can place the reader with the coil side to the enclosure.

You also should remove one of the 4 pins for the power PCB (see picture in wireing). Its connected to the relay but the pin (12) will be used for the reader.

Wireing

alt text

Description ESP GPIO Reader Pin Display Pin
Chip select 15 SDA
Clock 14 SCK
MOSI and LED 13 MOSI
MISO 12 MISO
Reset 0 RST
Data 4 SDA
Clock 5 SCL
Ground anywhere GND GND
VCC (3,3 V) anywhere VCC VCC

In my case it looks like this.

alt text

NodeMCU (ESP8266)

With the NodeMCU it should be a plug and play solution without soldering and just useing the jumper cables. But sometimes the board headers aren't presoldered so please have a look before buying.

Prerequirements

The GPIOs are compatibel with the ESP8265. Just use the upper table.

Software

  1. Clone or download this git.
  2. Open in PlatformIO
  3. Do your configstuff
  4. Flash your device

Building

You need PlatformIO to build the code. It should install all neccessary libraries automaticly. Choose your build environment in the plaform.ini file. Actually it's just building for the ESP8265. Change it to your needs. In this file you can also setup specific parameters like the debug settings for the HTTP client.

;example for the Sonoff hack
[platformio]
default_envs = esp8285

In the src/main.h file are additional settings for the usage with a display or for serial debugging.

#define SERIAL_DEBUG true
#define SERIAL_RESPONSE true
#define OLED_DISP true

You also should configure your timezone.

// edit it to your needs. The 7200 stands for + 2h
NTPClient timeClient(ntpUDP, "europe.pool.ntp.org", 7200, 60000);

Flashing

Sonoff

For flashing the Sonoff board you'll need an UART port eg. with an USB TTL adapter. For further details have a look for Sonoff flashing. there are several guides out.

ESP8266 with USB port

Just put in a micro USB cable and upload it..

Used librarys

Thank you guys for your great work!

Known issues

  • In my Kimai test environment with XAMPP on Windows the request time was sometimes over 3 seconds. Running it on my Nginx server response was under 400 ms with a non persistent TCP connection
  • The refreshing of the WiFI signal is done every 5 seconds. Sometimes the RSSI value isn't correct in that moment so the signal strength sometimes varies a little bit.

kimai-rfid-esp's People

Contributors

alexlienert avatar aligeenius avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

ymarkus laverma

kimai-rfid-esp's Issues

How to configure Kimai?

Hello,
I tried to get your stuff running and now I'm stuck at the point how to get it to talk with Kimai. Is there a plugin for Kimai I have to install?

Tagging the repo

Could you tag the repository (with the topics), then its easier to find. Like this:

Bildschirmfoto 2020-04-15 um 23 43 12

Missing video file

Hello!

I recently stumbled upon your project repository. Nice work!

The preview video is not found via your cloud link anymore.

Maybe you want to update/fix that.

Thanks!

kimai2 api bridge

Hi Ali!
A friend is trying to implement your great sonoff stuff! But I guess he needs the api, so what is the cost of the kimai2 bridge ?

All the best
.A.

Hardcoded IP

Today I was browsing the code, trying to understand it and stumbled upon:

http.begin(client, "192.168.178.200", port, request, false);

Is that on purpose or a mistake where the config should be used instead?

Package not building

I am having some issues compiling the project.

I am using an Node MCU ESP8266

Is this an issue with the library setup for Brzo I2C?

My platform.ini is

; 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
; https://docs.platformio.org/page/projectconf.html

[platformio]
default_envs = nodemcu

[env]
platform = espressif8266
framework = arduino
board_build.f_cpu = 80000000L
monitor_speed = 115200
upload_speed = 921600
lib_deps = 
	bblanchon/ArduinoJson
	miguelbalboa/MFRC522
	tzapu/WiFiManager
	thingpulse/ESP8266 and ESP32 OLED driver for SSD1306 [email protected]
	pasko-zh/Brzo I2C@^1.3.3
	arduino-libraries/NTPClient

[env:esp8285]
board = esp8285
lib_deps = 
	bblanchon/ArduinoJson
	miguelbalboa/MFRC522
	tzapu/WiFiManager
	thingpulse/ESP8266 and ESP32 OLED driver for SSD1306 [email protected]
	pasko-zh/Brzo I2C@^1.3.3
	arduino-libraries/NTPClient

[env:nodemcu]
board = nodemcu
lib_deps = 
	bblanchon/ArduinoJson
	miguelbalboa/MFRC522
	tzapu/WiFiManager
	thingpulse/ESP8266 and ESP32 OLED driver for SSD1306 [email protected]
	pasko-zh/Brzo I2C@^1.3.3
	arduino-libraries/NTPClient

[debug]
build_flags = 
	-DDEBUG_ESP_HTTP_CLIENT=1
	-DDEBUG_ESP_PORT=Serial

The terminal gives this output.

Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif8266/nodemcu.html
PLATFORM: Espressif 8266 (4.2.1) > NodeMCU 0.9 (ESP-12 Module)
HARDWARE: ESP8266 80MHz, 80KB RAM, 4MB Flash
PACKAGES: 
 - framework-arduinoespressif8266 @ 3.30102.0 (3.1.2) 
 - tool-esptool @ 1.413.0 (4.13) 
 - tool-esptoolpy @ 1.30000.201119 (3.0.0) 
 - toolchain-xtensa @ 2.100300.220621 (10.3.0)
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 43 compatible libraries
Scanning dependencies...
Dependency Graph
|-- ArduinoJson @ 7.1.0
|-- MFRC522 @ 1.4.11
|-- WiFiManager @ 0.16.0
|-- ESP8266 and ESP32 OLED driver for SSD1306 displays @ 4.3.0
|-- Brzo I2C @ 1.3.3
|-- NTPClient @ 3.2.1
|-- DNSServer @ 1.1.1
|-- ESP8266HTTPClient @ 1.2
|-- ESP8266WebServer @ 1.0
|-- ESP8266WiFi @ 1.0
|-- SPI @ 1.0
|-- Ticker @ 1.0
|-- Wire @ 1.0
Building in release mode
Compiling .pio/build/nodemcu/src/main.cpp.o
Compiling .pio/build/nodemcu/lib4a2/Brzo I2C/brzo_i2c.c.o
Compiling .pio/build/nodemcu/FrameworkArduino/WMath.cpp.o
Compiling .pio/build/nodemcu/FrameworkArduino/WString.cpp.o
.pio/libdeps/nodemcu/Brzo I2C/src/brzo_i2c.c: In function 'brzo_i2c_write':
.pio/libdeps/nodemcu/Brzo I2C/src/brzo_i2c.c:72:2: error: cannot find a register in class 'RL_REGS' while reloading 'asm'
   72 |  asm volatile (
      |  ^~~
.pio/libdeps/nodemcu/Brzo I2C/src/brzo_i2c.c:72:2: error: 'asm' operand has impossible constraints
*** [.pio/build/nodemcu/lib4a2/Brzo I2C/brzo_i2c.c.o] Error 1
Compiling .pio/build/nodemcu/FrameworkArduino/abi.cpp.o
In file included from src/main.cpp:1:
src/main.h:67:40: error: 'MILLIS' was not declared in this scope
   67 | Ticker wifiTicker(sigRefresh, 5000, 0, MILLIS);
      |                                        ^~~~~~
src/main.h:110:21: error: no matching function for call to 'ArduinoJson::V710PB22::JsonDocument::JsonDocument(int)'
  110 | JsonDocument doc(512);
      |                     ^
In file included from .pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson.hpp:33,
                 from .pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson.h:9,
                 from src/main.h:2,
                 from src/main.cpp:1:
.pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp:40:3: note: candidate: 'template<class T> ArduinoJson::V710PB22::JsonDocument::JsonDocument(const T&, ArduinoJson::V710PB22::Allocator*, ArduinoJson::V710PB22::detail::enable_if_t<((((ArduinoJson::V710PB22::detail::IsVariant<T>::value || ArduinoJson::V710PB22::detail::is_same<T, ArduinoJson::V710PB22::JsonArray>::value) || ArduinoJson::V710PB22::detail::is_same<T, ArduinoJson::V710PB22::JsonArrayConst>::value) || ArduinoJson::V710PB22::detail::is_same<T, ArduinoJson::V710PB22::JsonObject>::value) || ArduinoJson::V710PB22::detail::is_same<T, ArduinoJson::V710PB22::JsonObjectConst>::value)>*)'
   40 |   JsonDocument(
      |   ^~~~~~~~~~~~
.pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp:40:3: note:   template argument deduction/substitution failed:
In file included from .pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp:8,
                 from .pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp:7,
                 from .pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson/Memory/StringNode.hpp:11,
                 from .pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson/Memory/StringPool.hpp:8,
                 from .pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson/Memory/ResourceManager.hpp:8,
                 from .pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson/Variant/JsonVariantConst.hpp:10,
                 from .pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson/Variant/VariantRefBase.hpp:9,
                 from .pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp:7,
                 from .pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp:7,
                 from .pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson.hpp:29,
                 from .pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson.h:9,
                 from src/main.h:2,
                 from src/main.cpp:1:
.pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp: In substitution of 'template<bool Condition, class T> using enable_if_t = typename ArduinoJson::V710PB22::detail::enable_if::type [with bool Condition = false; T = void]':
.pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp:40:3:   required by substitution of 'template<class T> ArduinoJson::V710PB22::JsonDocument::JsonDocument(const T&, ArduinoJson::V710PB22::Allocator*, ArduinoJson::V710PB22::detail::enable_if_t<((((ArduinoJson::V710PB22::detail::IsVariant<T>::value || ArduinoJson::V710PB22::detail::is_same<T, ArduinoJson::V710PB22::JsonArray>::value) || ArduinoJson::V710PB22::detail::is_same<T, ArduinoJson::V710PB22::JsonArrayConst>::value) || ArduinoJson::V710PB22::detail::is_same<T, ArduinoJson::V710PB22::JsonObject>::value) || ArduinoJson::V710PB22::detail::is_same<T, ArduinoJson::V710PB22::JsonObjectConst>::value)>*) [with T = int]'
src/main.h:110:21:   required from here
.pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp:21:7: error: no type named 'type' in 'struct ArduinoJson::V710PB22::detail::enable_if<false, void>'
   21 | using enable_if_t = typename enable_if<Condition, T>::type;
      |       ^~~~~~~~~~~
In file included from .pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson.hpp:33,
                 from .pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson.h:9,
                 from src/main.h:2,
                 from src/main.cpp:1:
.pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp:33:3: note: candidate: 'ArduinoJson::V710PB22::JsonDocument::JsonDocument(ArduinoJson::V710PB22::JsonDocument&&)'
   33 |   JsonDocument(JsonDocument&& src)
      |   ^~~~~~~~~~~~
.pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp:33:31: note:   no known conversion for argument 1 from 'int' to 'ArduinoJson::V710PB22::JsonDocument&&'
   33 |   JsonDocument(JsonDocument&& src)
      |                ~~~~~~~~~~~~~~~^~~
.pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp:28:3: note: candidate: 'ArduinoJson::V710PB22::JsonDocument::JsonDocument(const ArduinoJson::V710PB22::JsonDocument&)'
   28 |   JsonDocument(const JsonDocument& src) : JsonDocument(src.allocator()) {
      |   ^~~~~~~~~~~~
.pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp:28:36: note:   no known conversion for argument 1 from 'int' to 'const ArduinoJson::V710PB22::JsonDocument&'
   28 |   JsonDocument(const JsonDocument& src) : JsonDocument(src.allocator()) {
      |                ~~~~~~~~~~~~~~~~~~~~^~~
.pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp:24:12: note: candidate: 'ArduinoJson::V710PB22::JsonDocument::JsonDocument(ArduinoJson::V710PB22::Allocator*)' (near match)
   24 |   explicit JsonDocument(Allocator* alloc = detail::DefaultAllocator::instance())
      |            ^~~~~~~~~~~~
.pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp:24:12: note:   conversion of argument 1 would be ill-formed:
In file included from src/main.cpp:1:
src/main.h:110:18: error: invalid conversion from 'int' to 'ArduinoJson::V710PB22::Allocator*' [-fpermissive]
  110 | JsonDocument doc(512);
      |                  ^~~
      |                  |
      |                  int
src/main.h:114:29: error: 'MILLIS' was not declared in this scope
  114 | Ticker ticker(tick, 600, 0, MILLIS);
      |                             ^~~~~~
src/main.cpp: In function 'void setup()':
src/main.cpp:10:10: error: 'class Ticker' has no member named 'start'
   10 |   ticker.start();
      |          ^~~~~
src/main.cpp: In function 'void loop()':
src/main.cpp:43:10: error: 'class Ticker' has no member named 'update'
   43 |   ticker.update();
      |          ^~~~~~
src/main.cpp:44:14: error: 'class Ticker' has no member named 'update'
   44 |   wifiTicker.update();
      |              ^~~~~~
src/main.cpp:72:14: error: 'class Ticker' has no member named 'state'
   72 |   if (ticker.state() == RUNNING)
      |              ^~~~~
src/main.cpp:72:25: error: 'RUNNING' was not declared in this scope
   72 |   if (ticker.state() == RUNNING)
      |                         ^~~~~~~
src/main.cpp:74:12: error: 'class Ticker' has no member named 'stop'
   74 |     ticker.stop();
      |            ^~~~
src/main.cpp:171:12: error: 'class Ticker' has no member named 'interval'
  171 |     ticker.interval(800);
      |            ^~~~~~~~
src/main.cpp:183:12: error: 'class Ticker' has no member named 'interval'
  183 |     ticker.interval(500);
      |            ^~~~~~~~
src/main.cpp:196:12: error: 'class Ticker' has no member named 'interval'
  196 |     ticker.interval(100);
      |            ^~~~~~~~
src/main.cpp: In function 'void wifiManInit()':
src/main.cpp:211:7: warning: 'SPIFFS' is deprecated: SPIFFS has been deprecated. Please consider moving to LittleFS or other filesystems. [-Wdeprecated-declarations]
  211 |   if (SPIFFS.begin())
      |       ^~~~~~
In file included from /Users/reedact/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src/CertStoreBearSSL.h:26,
                 from /Users/reedact/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src/WiFiClientSecureBearSSL.h:30,
                 from /Users/reedact/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src/WiFiClientSecure.h:23,
                 from /Users/reedact/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src/WiFiServerSecure.h:20,
                 from /Users/reedact/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src/ESP8266WiFi.h:41,
                 from /Users/reedact/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WebServer/src/ESP8266WebServer.h:30,
                 from src/main.h:5,
                 from src/main.cpp:1:
/Users/reedact/.platformio/packages/framework-arduinoespressif8266/cores/esp8266/FS.h:286:15: note: declared here
  286 | extern fs::FS SPIFFS __attribute__((deprecated("SPIFFS has been deprecated. Please consider moving to LittleFS or other filesystems.")));
      |               ^~~~~~
src/main.cpp:213:9: warning: 'SPIFFS' is deprecated: SPIFFS has been deprecated. Please consider moving to LittleFS or other filesystems. [-Wdeprecated-declarations]
  213 |     if (SPIFFS.exists("/config.json"))
      |         ^~~~~~
In file included from /Users/reedact/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src/CertStoreBearSSL.h:26,
                 from /Users/reedact/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src/WiFiClientSecureBearSSL.h:30,
                 from /Users/reedact/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src/WiFiClientSecure.h:23,
                 from /Users/reedact/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src/WiFiServerSecure.h:20,
                 from /Users/reedact/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src/ESP8266WiFi.h:41,
                 from /Users/reedact/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WebServer/src/ESP8266WebServer.h:30,
                 from src/main.h:5,
                 from src/main.cpp:1:
/Users/reedact/.platformio/packages/framework-arduinoespressif8266/cores/esp8266/FS.h:286:15: note: declared here
  286 | extern fs::FS SPIFFS __attribute__((deprecated("SPIFFS has been deprecated. Please consider moving to LittleFS or other filesystems.")));
      |               ^~~~~~
src/main.cpp:220:25: warning: 'SPIFFS' is deprecated: SPIFFS has been deprecated. Please consider moving to LittleFS or other filesystems. [-Wdeprecated-declarations]
  220 |       File configFile = SPIFFS.open("/config.json", "r");
      |                         ^~~~~~
In file included from /Users/reedact/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src/CertStoreBearSSL.h:26,
                 from /Users/reedact/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src/WiFiClientSecureBearSSL.h:30,
                 from /Users/reedact/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src/WiFiClientSecure.h:23,
                 from /Users/reedact/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src/WiFiServerSecure.h:20,
                 from /Users/reedact/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src/ESP8266WiFi.h:41,
                 from /Users/reedact/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WebServer/src/ESP8266WebServer.h:30,
                 from src/main.h:5,
                 from src/main.cpp:1:
/Users/reedact/.platformio/packages/framework-arduinoespressif8266/cores/esp8266/FS.h:286:15: note: declared here
  286 | extern fs::FS SPIFFS __attribute__((deprecated("SPIFFS has been deprecated. Please consider moving to LittleFS or other filesystems.")));
      |               ^~~~~~
src/main.cpp:227:32: warning: 'DynamicJsonDocument' is deprecated: use JsonDocument instead [-Wdeprecated-declarations]
  227 |         DynamicJsonDocument doc(256);
      |                                ^
In file included from .pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson.hpp:56,
                 from .pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson.h:9,
                 from src/main.h:2,
                 from src/main.cpp:1:
.pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson/compatibility.hpp:125:58: note: declared here
  125 | class ARDUINOJSON_DEPRECATED("use JsonDocument instead") DynamicJsonDocument
      |                                                          ^~~~~~~~~~~~~~~~~~~
src/main.cpp:289:10: error: 'class Ticker' has no member named 'stop'
  289 |   ticker.stop();
      |          ^~~~
src/main.cpp:301:28: warning: 'DynamicJsonDocument' is deprecated: use JsonDocument instead [-Wdeprecated-declarations]
  301 |     DynamicJsonDocument doc(256);
      |                            ^
In file included from .pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson.hpp:56,
                 from .pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson.h:9,
                 from src/main.h:2,
                 from src/main.cpp:1:
.pio/libdeps/nodemcu/ArduinoJson/src/ArduinoJson/compatibility.hpp:125:58: note: declared here
  125 | class ARDUINOJSON_DEPRECATED("use JsonDocument instead") DynamicJsonDocument
      |                                                          ^~~~~~~~~~~~~~~~~~~
src/main.cpp:307:23: warning: 'SPIFFS' is deprecated: SPIFFS has been deprecated. Please consider moving to LittleFS or other filesystems. [-Wdeprecated-declarations]
  307 |     File configFile = SPIFFS.open("/config.json", "w");
      |                       ^~~~~~
In file included from /Users/reedact/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src/CertStoreBearSSL.h:26,
                 from /Users/reedact/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src/WiFiClientSecureBearSSL.h:30,
                 from /Users/reedact/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src/WiFiClientSecure.h:23,
                 from /Users/reedact/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src/WiFiServerSecure.h:20,
                 from /Users/reedact/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src/ESP8266WiFi.h:41,
                 from /Users/reedact/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WebServer/src/ESP8266WebServer.h:30,
                 from src/main.h:5,
                 from src/main.cpp:1:
/Users/reedact/.platformio/packages/framework-arduinoespressif8266/cores/esp8266/FS.h:286:15: note: declared here
  286 | extern fs::FS SPIFFS __attribute__((deprecated("SPIFFS has been deprecated. Please consider moving to LittleFS or other filesystems.")));
      |               ^~~~~~
src/main.cpp: In function 'void uiInit()':
src/main.cpp:418:14: error: 'class Ticker' has no member named 'start'
  418 |   wifiTicker.start();
      |              ^~~~~
*** [.pio/build/nodemcu/src/main.cpp.o] Error 1
========================================================================================= [FAILED] Took 2.42 seconds =========================================================================================

Environment    Status    Duration
-------------  --------  ------------
nodemcu        FAILED    00:00:02.424
==================================================================================== 1 failed, 0 succeeded in 00:00:02.424 ====================================================================================

 *  The terminal process "platformio 'run'" terminated with exit code: 1. 
 *  Terminal will be reused by tasks, press any key to close it. 

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.