Code Monkey home page Code Monkey logo

watchy's Introduction

Watchy - Fully Open Source E-Paper Watch

Watchy

Buy Watchy from The Pi Hut, Crowd Supply, and Mouser!

Watchy Case & Accessories

Visit https://watchy.sqfmi.com for documentation, hardware design files, and more!

Setup

  1. In the Arduino IDE Boards Manager, install support for the ESP32.
    • Arduino > Preferences > Additional Board Manager URLs
    • https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json
  2. Install this library (search for Watchy in the library manager), and any other dependencies when prompted
  3. Check out the examples under Examples -> Watchy
  4. Compile & Upload with these board settings:
    • Board: "Watchy"
    • Partition Scheme: "Huge App"
    • Board Revision: Choose your Watchy version
    • All Other Settings: leave to default

You may also have to install the CP2104 USB to Serial drivers if the port is not automatically detected.

Have Fun! :)

Got Questions?

Join our Discord

watchy's People

Contributors

ajraymond avatar alex-k37 avatar aneeshdurg avatar batchyx avatar charlesrocket avatar clayton-rogers avatar dandelany avatar darkzeros avatar denics avatar elasticdotventures avatar gudnithor avatar gwilsonosu avatar khenderick avatar kicker22004 avatar kylepotts avatar leonmatthes avatar lifton avatar meptl avatar metaln00b avatar nabijaczleweli avatar pacohope avatar per1234 avatar sc68cal avatar schodet avatar shtrom avatar sqfmi avatar stuartpb avatar sukhpalhub avatar tomasekeli avatar wjgeorge avatar

Stargazers

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

Watchers

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

watchy's Issues

Broke a bottom left button, what do I do?

When assembling my watchy and putting it into the case, I ended up somehow breaking the bottom left button. I have the little plastic piece but it will not stay in. Either I need to do micro dots of glue or try to get a new pcb. Is there a way to get just the pcb part? I don't want to have to get a whole other kit. I just want to know what can I do in this case?

RTC alarm not working

I got my Watchy today but to my surprises the time is not updating. Upon further investigation it seems like no RTC alarm is ever received (ESP_SLEEP_WAKEUP_EXT0).
What should I do?

Inaccurate step count

The step count from the BMA423 is inaccurate. Just shaking my arm around increases the step count by a few 100s.
I removed the step count function altogether from the 7-seg watchface example.

Buttons do not seem to work

I just assembled my watchy and successfully flashed a couple watchfaces to it. I've seen the time update, but could not figure out how to set the time or connect to wifi. Eventually I pressed something which made a menu come up and was able to scroll down a couple entries, but then it disappeared. Since that moment, I have not been able to open the menu with any combination of button presses. To help me debug, I guess the first thing I want to know is "What button is supposed to open the menu?". Once I know what's supposed to do it, maybe I can have better luck troubleshooting...

Not updating/ not getting out of deep sleep

I followed the instructions and managed to make the watchy run.
So far I couldn't manage to make it update or show the right time.
It looks like the real time clock is not working properly?
When I upload the code the following warning comes up:
WARNING: library DS3232RTC-1.3.0 claims to run on avr architecture(s) and may be incompatible with your current board which runs on esp32 architecture(s).
But it still uploads the code. Might this be the problem?
Then It shows the watch face but sticks to the shown time. And doesn't change at all.
I reinstalled all the libraries, but didn't helped.

OpenWeather API called too frequently

According to OpenWeather's API care reccomendations it is of no benefit to call the API more often than once every 10 minutes. The current example in Watchy7SEG fetches weather data every minute.

Caching the weatherData will save battery life (due to not needing to power up the wifi radio) and allow Watchy to be a responsible OpenWeather API user.

Need documentation on how to compile the whole library

Hi sqfmi team,

This project needs a documentation on how to compile the whole library so we can test changes on it and not only changes on faces or new elements. Currently the only setup provided use the already compiled on with t;he Arduino IDE, but it would be great to be able to change code inside the library as well, instead of only on faces files.

Thanks for the great work you are doing here. I'm still loving my Watchy. <3

Weather API settings

Hey, first of all - thankyou for the great product! Just got my Watchy and can't get away from tinkering with it.
I wanted to change my weather location, and was able to find the weather API settings in Watchy/src/config.h. My question is, how can I redefine these in my watchface? I have tried it everywhere, but it's still showing me weather from New York. The API code is tested and works in my browser. My code:

    #define CITY_NAME "KURESSAARE" //if your city name has a space, replace with '+'
    #define COUNTRY_CODE "EE"
    #define OPENWEATHERMAP_APIKEY "[my API key]" //use your own API key :)
    #define OPENWEATHERMAP_URL "http://api.openweathermap.org/data/2.5/weather?q="

Sorry if it's something really obvious, I have no prior experience in Arduino or C++.

Build instructions for library

In order to do any meaningful development apart from the watch faces, it would be very helpful with instructions on how to set up a development environment for the library. When naively trying to use my own forked library to override other functions (as in #22), some libraries are missing:

ARNING: library DS3232RTC claims to run on avr architecture(s) and may be incompatible with your current board which runs on esp32 architecture(s).
WARNING: library DS3232RTC claims to run on avr architecture(s) and may be incompatible with your current board which runs on esp32 architecture(s).
libraries/Watchy/Watchy.cpp.o:(.literal._ZN6Watchy13drawWatchFaceEv+0xc): undefined reference to `Print::print(char const*)'
libraries/Watchy/Watchy.cpp.o:(.literal._ZN6Watchy13drawWatchFaceEv+0x10): undefined reference to `Print::print(unsigned char, int)'
libraries/Watchy/Watchy.cpp.o:(.literal._ZN6Watchy13drawWatchFaceEv+0x14): undefined reference to `Print::println(unsigned char, int)'
libraries/Watchy/Watchy.cpp.o: In function `Watchy::drawWatchFace()':
/home/user/Arduino/libraries/Watchy/src/Watchy.cpp:811: undefined reference to `Print::print(char const*)'
Multiple libraries were found for "WiFi.h"
 Used: /home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/WiFi
 Not used: /nix/store/7s7wjqyqrfhsx9ikfi3qkgnbgfy67s42-arduino-1.8.13/share/arduino/libraries/WiFi
/home/user/Arduino/libraries/Watchy/src/Watchy.cpp:811: undefined reference to `Print::print(unsigned char, int)'
/home/user/Arduino/libraries/Watchy/src/Watchy.cpp:811: undefined reference to `Print::print(char const*)'
/home/user/Arduino/libraries/Watchy/src/Watchy.cpp:811: undefined reference to `Print::print(char const*)'
/home/user/Arduino/libraries/Watchy/src/Watchy.cpp:811: undefined reference to `Print::println(unsigned char, int)'
libraries/Watchy/Watchy.cpp.o: In function `_GLOBAL__sub_I__ZN6Watchy3RTCE':
/home/user/Arduino/libraries/Watchy/src/Watchy.cpp:811: undefined reference to `IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char)'
libraries/Watchy/Watchy.cpp.o:(.rodata._ZTV9GxEPD2_BWI14GxEPD2_154_D67Lt200EE[vtable for GxEPD2_BW<GxEPD2_154_D67, (unsigned short)200>]+0x14): undefined reference to `Print::write(unsigned char const*, unsigned int)'
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/lib/libesp32.a(cpu_start.o):(.literal.main_task+0x14): undefined reference to `app_main'
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/lib/libesp32.a(cpu_start.o): In function `main_task':
/home/runner/work/esp32-arduino-lib-builder/esp32-arduino-lib-builder/esp-idf/components/esp32/cpu_start.c:545: undefined reference to `app_main'
sketch/StarryHorizon.ino.cpp.o:(.literal.startup._GLOBAL__sub_I__Z9initStarsv+0xc): undefined reference to `IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char)'
sketch/StarryHorizon.ino.cpp.o:(.literal._ZN13StarryHorizon18drawCenteredStringERK6Stringiib[StarryHorizon::drawCenteredString(String const&, int, int, bool)]+0x0): undefined reference to `Print::print(String const&)'
sketch/StarryHorizon.ino.cpp.o:(.literal._ZN13StarryHorizon8drawTimeEv[StarryHorizon::drawTime()]+0xc): undefined reference to `String::String(char const*)'
sketch/StarryHorizon.ino.cpp.o:(.literal._ZN13StarryHorizon8drawTimeEv[StarryHorizon::drawTime()]+0x10): undefined reference to `String::~String()'
sketch/StarryHorizon.ino.cpp.o: In function `_GLOBAL__sub_I__Z9initStarsv':
/home/user/dev/watchy/Watchy/examples/WatchFaces/StarryHorizon/StarryHorizon.ino:294: undefined reference to `IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char)'
sketch/StarryHorizon.ino.cpp.o: In function `StarryHorizon::drawCenteredString(String const&, int, int, bool)':
/home/user/dev/watchy/Watchy/examples/WatchFaces/StarryHorizon/StarryHorizon.ino:134: undefined reference to `Print::print(String const&)'
sketch/StarryHorizon.ino.cpp.o: In function `StarryHorizon::drawTime()':
/home/user/dev/watchy/Watchy/examples/WatchFaces/StarryHorizon/StarryHorizon.ino:108: undefined reference to `String::String(char const*)'
/home/user/dev/watchy/Watchy/examples/WatchFaces/StarryHorizon/StarryHorizon.ino:108: undefined reference to `String::~String()'
/home/user/dev/watchy/Watchy/examples/WatchFaces/StarryHorizon/StarryHorizon.ino:108: undefined reference to `String::~String()'
sketch/StarryHorizon.ino.cpp.o: In function `StarryHorizon::drawDate()':
/home/user/dev/watchy/Watchy/examples/WatchFaces/StarryHorizon/StarryHorizon.ino:113: undefined reference to `String::String(char const*)'
/home/user/dev/watchy/Watchy/examples/WatchFaces/StarryHorizon/StarryHorizon.ino:114: undefined reference to `String::String(char const*)'
/home/user/dev/watchy/Watchy/examples/WatchFaces/StarryHorizon/StarryHorizon.ino:120: undefined reference to `String::String(char const*)'
/home/user/dev/watchy/Watchy/examples/WatchFaces/StarryHorizon/StarryHorizon.ino:120: undefined reference to `String::~String()'
/home/user/dev/watchy/Watchy/examples/WatchFaces/StarryHorizon/StarryHorizon.ino:114: undefined reference to `String::~String()'
/home/user/dev/watchy/Watchy/examples/WatchFaces/StarryHorizon/StarryHorizon.ino:113: undefined reference to `String::~String()'
/home/user/dev/watchy/Watchy/examples/WatchFaces/StarryHorizon/StarryHorizon.ino:120: undefined reference to `String::~String()'
/home/user/dev/watchy/Watchy/examples/WatchFaces/StarryHorizon/StarryHorizon.ino:114: undefined reference to `String::~String()'
sketch/StarryHorizon.ino.cpp.o:/home/user/dev/watchy/Watchy/examples/WatchFaces/StarryHorizon/StarryHorizon.ino:113: more undefined references to `String::~String()' follow
libraries/WiFi/WiFiSTA.cpp.o: In function `_GLOBAL__sub_I__ZN12WiFiSTAClass14_autoReconnectE':
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/cores/esp32/IPAddress.h:94: undefined reference to `IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char)'
libraries/WiFi/WiFiSTA.cpp.o: In function `_GLOBAL__sub_I__ZN12WiFiSTAClass14_autoReconnectE':
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/WiFi/src/WiFiSTA.cpp:74: undefined reference to `String::String(char const*)'
libraries/WiFi/WiFiSTA.cpp.o: In function `_GLOBAL__sub_D__ZN12WiFiSTAClass14_autoReconnectE':
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/WiFi/src/WiFiSTA.cpp:74: undefined reference to `String::~String()'
libraries/Arduino_JSON/JSON.cpp.o: In function `_GLOBAL__sub_I__ZN9JSONClassC2Ev':
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/cores/esp32/IPAddress.h:94: undefined reference to `IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char)'
libraries/Arduino_JSON/JSONVar.cpp.o: In function `JSONVar::printTo(Print&) const':
/home/user/Arduino/libraries/Arduino_JSON/src/JSONVar.cpp:299: undefined reference to `Print::print(char const*)'
libraries/Arduino_JSON/JSONVar.cpp.o: In function `_GLOBAL__sub_I__ZN7JSONVarC2EP5cJSONS1_':
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/cores/esp32/IPAddress.h:94: undefined reference to `IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char)'
libraries/Time/DateStrings.cpp.o: In function `_GLOBAL__sub_I__Z8monthStrh':
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/cores/esp32/IPAddress.h:94: undefined reference to `IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char)'
libraries/GxEPD2/GxEPD2_EPD.cpp.o:(.literal._ZN10GxEPD2_EPD4initEjbtb+0x4): undefined reference to `Serial'
libraries/GxEPD2/GxEPD2_EPD.cpp.o:(.literal._ZN10GxEPD2_EPD4initEjbtb+0x10): undefined reference to `HardwareSerial::begin(unsigned long, unsigned int, signed char, signed char, bool, unsigned long)'
libraries/GxEPD2/GxEPD2_EPD.cpp.o:(.literal._ZN10GxEPD2_EPD14_waitWhileBusyEPKct+0x8): undefined reference to `Print::println(char const*)'
libraries/GxEPD2/GxEPD2_EPD.cpp.o:(.literal._ZN10GxEPD2_EPD14_waitWhileBusyEPKct+0xc): undefined reference to `Print::println(unsigned long, int)'
libraries/GxEPD2/GxEPD2_EPD.cpp.o: In function `GxEPD2_EPD::init(unsigned int, bool, unsigned short, bool)':
/home/user/Arduino/libraries/GxEPD2/src/GxEPD2_EPD.cpp:242: undefined reference to `HardwareSerial::begin(unsigned long, unsigned int, signed char, signed char, bool, unsigned long)'
libraries/GxEPD2/GxEPD2_EPD.cpp.o: In function `GxEPD2_EPD::_waitWhileBusy(char const*, unsigned short)':
/home/user/Arduino/libraries/GxEPD2/src/GxEPD2_EPD.cpp:242: undefined reference to `Print::println(char const*)'
/home/user/Arduino/libraries/GxEPD2/src/GxEPD2_EPD.cpp:242: undefined reference to `Print::print(char const*)'
/home/user/Arduino/libraries/GxEPD2/src/GxEPD2_EPD.cpp:242: undefined reference to `Print::print(char const*)'
/home/user/Arduino/libraries/GxEPD2/src/GxEPD2_EPD.cpp:242: undefined reference to `Print::println(unsigned long, int)'
libraries/GxEPD2/GxEPD2_EPD.cpp.o: In function `_GLOBAL__sub_I__ZN10GxEPD2_EPDC2EaaaaajttN6GxEPD25PanelEbbb':
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/cores/esp32/IPAddress.h:94: undefined reference to `IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char)'
libraries/GxEPD2/epd/GxEPD2_154_D67.cpp.o: In function `_GLOBAL__sub_I__ZN14GxEPD2_154_D67C2Eaaaa':
/home/user/Arduino/libraries/GxEPD2/src/epd/../GxEPD2_EPD.h:84: undefined reference to `IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char)'
libraries/Adafruit_GFX_Library/Adafruit_GFX.cpp.o: In function `_GLOBAL__sub_I__ZN12Adafruit_GFXC2Ess':
/home/user/Arduino/libraries/Adafruit_GFX_Library/Adafruit_GFX.cpp:1295: undefined reference to `IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char)'
libraries/Adafruit_GFX_Library/Adafruit_GFX.cpp.o:(.rodata._ZTV12Adafruit_GFX[vtable for Adafruit_GFX]+0x14): undefined reference to `Print::write(unsigned char const*, unsigned int)'
libraries/Wire/Wire.cpp.o: In function `_GLOBAL__sub_I__ZN7TwoWireC2Eh':
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/cores/esp32/Stream.h:105: undefined reference to `IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char)'
libraries/Wire/Wire.cpp.o:(.rodata._ZTV7TwoWire[vtable for TwoWire]+0x2c): undefined reference to `Stream::readBytes(char*, unsigned int)'
libraries/Wire/Wire.cpp.o:(.rodata._ZTV7TwoWire[vtable for TwoWire]+0x34): undefined reference to `Stream::readString()'
libraries/Watchy/BLE.cpp.o: In function `_GLOBAL__sub_I_otaHandler':
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/cores/esp32/IPAddress.h:94: undefined reference to `IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char)'
libraries/Watchy/bma.cpp.o: In function `_GLOBAL__sub_I__ZN6BMA423C2Ev':
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/cores/esp32/IPAddress.h:94: undefined reference to `IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char)'
libraries/WiFiManager/WiFiManager.cpp.o: In function `_GLOBAL__sub_I__ZN11WiFiManager18_lastconxresulttmpE':
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/cores/esp32/IPAddress.h:94: undefined reference to `IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char)'
libraries/WiFi/ETH.cpp.o: In function `_GLOBAL__sub_I__ZN8ETHClassC2Ev':
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/cores/esp32/IPAddress.h:94: undefined reference to `IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char)'
libraries/WiFi/WiFi.cpp.o: In function `_GLOBAL__sub_I__ZN9WiFiClass9printDiagER5Print':
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/cores/esp32/IPAddress.h:94: undefined reference to `IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char)'
libraries/WiFi/WiFiAP.cpp.o:/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/cores/esp32/IPAddress.h:94: more undefined references to `IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char)' follow
libraries/SPI/SPI.cpp.o:(.literal._ZN8SPIClass5beginEaaaa+0x0): undefined reference to `spiFrequencyToClockDiv'
libraries/SPI/SPI.cpp.o:(.literal._ZN8SPIClass5beginEaaaa+0x4): undefined reference to `spiStartBus'
libraries/SPI/SPI.cpp.o:(.literal._ZN8SPIClass5beginEaaaa+0x8): undefined reference to `spiAttachSCK'
libraries/SPI/SPI.cpp.o:(.literal._ZN8SPIClass5beginEaaaa+0xc): undefined reference to `spiAttachMISO'
libraries/SPI/SPI.cpp.o:(.literal._ZN8SPIClass5beginEaaaa+0x10): undefined reference to `spiAttachMOSI'
libraries/SPI/SPI.cpp.o:(.literal._ZN8SPIClass16beginTransactionE11SPISettings+0x0): undefined reference to `spiGetClockDiv'
libraries/SPI/SPI.cpp.o:(.literal._ZN8SPIClass16beginTransactionE11SPISettings+0x4): undefined reference to `spiTransaction'
libraries/SPI/SPI.cpp.o:(.literal._ZN8SPIClass14endTransactionEv+0x0): undefined reference to `spiEndTransaction'
libraries/SPI/SPI.cpp.o:(.literal._ZN8SPIClass8transferEh+0x0): undefined reference to `spiTransferByteNL'
libraries/SPI/SPI.cpp.o:(.literal._ZN8SPIClass8transferEh+0x4): undefined reference to `spiTransferByte'
libraries/SPI/SPI.cpp.o: In function `SPIClass::begin(signed char, signed char, signed char, signed char)':
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/SPI/src/SPI.cpp:269: undefined reference to `spiFrequencyToClockDiv'
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/SPI/src/SPI.cpp:269: undefined reference to `spiStartBus'
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/SPI/src/SPI.cpp:269: undefined reference to `spiAttachSCK'
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/SPI/src/SPI.cpp:269: undefined reference to `spiAttachMISO'
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/SPI/src/SPI.cpp:269: undefined reference to `spiAttachMOSI'
libraries/SPI/SPI.cpp.o: In function `SPIClass::beginTransaction(SPISettings)':
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/SPI/src/SPI.cpp:269: undefined reference to `spiGetClockDiv'
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/SPI/src/SPI.cpp:269: undefined reference to `spiFrequencyToClockDiv'
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/SPI/src/SPI.cpp:269: undefined reference to `spiTransaction'
libraries/SPI/SPI.cpp.o: In function `SPIClass::endTransaction()':
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/SPI/src/SPI.cpp:269: undefined reference to `spiEndTransaction'
libraries/SPI/SPI.cpp.o: In function `SPIClass::transfer(unsigned char)':
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/SPI/src/SPI.cpp:269: undefined reference to `spiTransferByteNL'
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/SPI/src/SPI.cpp:269: undefined reference to `spiTransferByte'
libraries/FS/FS.cpp.o: In function `_GLOBAL__sub_I__ZN2fs4File5writeEh':
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/cores/esp32/IPAddress.h:94: undefined reference to `IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char)'
libraries/FS/vfs_api.cpp.o: In function `_GLOBAL__sub_I__ZN7VFSImpl4openEPKcS1_':
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/cores/esp32/IPAddress.h:94: undefined reference to `IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char)'
libraries/Adafruit_BusIO/Adafruit_BusIO_Register.cpp.o: In function `_GLOBAL__sub_I__ZN23Adafruit_BusIO_RegisterC2EP18Adafruit_I2CDevicethhh':
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/cores/esp32/IPAddress.h:94: undefined reference to `IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char)'
libraries/Adafruit_BusIO/Adafruit_I2CDevice.cpp.o: In function `_GLOBAL__sub_I__ZN18Adafruit_I2CDeviceC2EhP7TwoWire':
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/cores/esp32/IPAddress.h:94: undefined reference to `IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char)'
libraries/Adafruit_BusIO/Adafruit_SPIDevice.cpp.o: In function `_GLOBAL__sub_I__ZN18Adafruit_SPIDeviceC2Eaj9_BitOrderhP8SPIClass':
/home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/cores/esp32/IPAddress.h:94: undefined reference to `IPAddress::IPAddress(unsigned char, unsigned char, unsigned char, unsigned char)'
collect2: error: ld returned 1 exit status
exit status 1
Error compiling for board ESP32 Dev Module.
Traceback (most recent call last):
  File "/home/user/.arduino15/packages/esp32/tools/esptool_py/3.0.0/esptool.py", line 3682, in <module>
    _main()
  File "/home/user/.arduino15/packages/esp32/tools/esptool_py/3.0.0/esptool.py", line 3675, in _main
    main()
  File "/home/user/.arduino15/packages/esp32/tools/esptool_py/3.0.0/esptool.py", line 3409, in main
    operation_func(args)
  File "/home/user/.arduino15/packages/esp32/tools/esptool_py/3.0.0/esptool.py", line 2874, in elf2image
    e = ELFFile(args.input)
  File "/home/user/.arduino15/packages/esp32/tools/esptool_py/3.0.0/esptool.py", line 2337, in __init__
    with open(self.name, 'rb') as f:
FileNotFoundError: [Errno 2] No such file or directory: 'StarryHorizon.ino.elf'
Multiple libraries were found for "WiFi.h"
 Used: /home/user/.arduino15/packages/esp32/hardware/esp32/1.0.6/libraries/WiFi
 Not used: /nix/store/7s7wjqyqrfhsx9ikfi3qkgnbgfy67s42-arduino-1.8.13/share/arduino/libraries/WiFi
exit status 1
Error compiling for board ESP32 Dev Module.

Watchy_Basic doesn't compile

Tried testing out the Watchy, got this error when I attempted to compile Watchy_Basic.

Arduino: 1.8.10 (Linux), Board: "ESP32 Wrover Module, Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS), QIO, 80MHz, 921600, None"

Multiple libraries were found for "DS3232RTC.h"
 Used: /home/player1/Arduino/libraries/DS3232RTC
In file included from /home/player1/bin/Watchy/examples/Watchy_Basic/Watchy_Basic.ino:7:0:
Multiple libraries were found for "TimeLib.h"
/home/player1/Arduino/libraries/GxEPD/src/GxEPD.h:19:26: fatal error: Adafruit_GFX.h: No such file or directory
compilation terminated.
 Used: /home/player1/Arduino/libraries/Time
Multiple libraries were found for "GxEPD.h"
 Used: /home/player1/Arduino/libraries/GxEPD
Multiple libraries were found for "SPI.h"
 Used: /home/player1/.arduino15/packages/esp32/hardware/esp32/1.0.4/libraries/SPI
exit status 1
Error compiling for board ESP32 Wrover Module.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

New Watchy - OSX High Sierra - 10.13.6

I just received watchy. When trying to upload one of the example sketches. It appears to start uploading but stops around 10% and throws this error.

Not sure if its just me, but do the buttons do anything? The screen is on and I can see full battery but everything is zero's out. ie. 00:00 time, 01 Jan 2000, 0 Steps etc etc.
I have managed to see a menu screen once, but otherwise it feels like its bricked.

Any help would be appreciated

Arduino: 1.8.15 (Mac OS X), Board: "ESP32 Dev Module, Disabled, Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None"

WARNING: library DS3232RTC claims to run on avr architecture(s) and may be incompatible with your current board which runs on esp32 architecture(s).

esptool.py v3.0-dev
Serial port /dev/cu.SLAB_USBtoUART
Connecting....
Chip is ESP32-PICO-D4 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, Embedded Flash, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 98:cd:ac:c3:b6:68
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 8192 bytes to 47...
Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.0 seconds (effective 12260.9 kbit/s)...
Hash of data verified.
Compressed 18656 bytes to 12053...
Writing at 0x00001000... (100 %)
Wrote 18656 bytes (12053 compressed) at 0x00001000 in 0.2 seconds (effective 905.3 kbit/s)...
Hash of data verified.
Compressed 1783728 bytes to 1023832...
Writing at 0x00010000... (1 %)
Writing at 0x00014000... (3 %)
Writing at 0x00018000... (4 %)
Writing at 0x0001c000... (6 %)
Writing at 0x00020000... (7 %)

A fatal error occurred: Timed out waiting for packet header
A fatal error occurred: Timed out waiting for packet header



This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Trouble Compilling

Arduino: 1.8.13 (Mac OS X), Board: "ESP32 Dev Module, Disabled, Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None"

Mac OS: 11.0.1

WARNING: library DS3232RTC claims to run on avr architecture(s) and may be incompatible with your current board which runs on esp32 architecture(s).
Traceback (most recent call last):
File "esptool.py", line 57, in
File "/Library/Python/2.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 389, in load_module
File "serial/tools/list_ports.py", line 29, in
File "/Library/Python/2.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 389, in load_module
File "serial/tools/list_ports_posix.py", line 31, in
File "/Library/Python/2.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 389, in load_module
File "serial/tools/list_ports_osx.py", line 32, in
ValueError: dlsym(RTLD_DEFAULT, kIOMasterPortDefault): symbol not found
Failed to execute script esptool
Multiple libraries were found for "WiFi.h"
Used: /Users/davidheld/Library/Arduino15/packages/esp32/hardware/esp32/1.0.4/libraries/WiFi
Not used: /Applications/Arduino.app/Contents/Java/libraries/WiFi
exit status 255
/Applications/Arduino.app/Contents/Java/arduino-builder returned 255
Error compiling for board ESP32 Dev Module.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Watchy won't do anything / not running.

Watch arrived with some time and date from initial testing.
As soon as I connected battery it went to 00:00 01 Jan 2000 empty battery, 0 steps. So far, so good.

However, the time never incremented, and the buttons don't do anything, so I plugged it in to charge for a while. After some time, nothing had changed on the display, so I figured there was some issue with waking up with low battery, so I downloaded and installed the libraries.

Building and flashing examples makes the screen change (e.g DOS gives me a DOS looking screen, 7-SEG gives me the original 7 segment display), but it doesn't seem to "run" - buttons don't do anything, time never increments, nothing seems to happen.

Clearly the display is connected properly, and the Arduino can reset the board, but it doesn't seem to "run". Any ideas?

I just be missing something.

I admittedly have a lot to learn about programming these. And I am fairly new to Arduino.

I can't even figure out how to access the menu to turn on wifi or configure basic settings. I got a watchface on their but cannot get anything going with buttons.

Aluminum top case doesn't _quite_ fit PCB (easy fix though)

Leaving this here for anyone who runs into a similar problem, or maybe an addition to the FAQ or troubleshooting sections. My top case didn't quite fit the PCB, and the problem ended up being the leftover tabs from PCB manufacture. There's four of them, two on each of the right and left sides.

watchy_tabs

This is an easy if delicate fix: the components do not have a lot of clearance from the nominal edge of the PCB! But one or two light strokes with a small file, taking care to keep it perpendicular to the PCB, and problem solved:

IMG_8954

Stuck at Firmware Update

I had accidentally gone into the menu and selected firmware update (to fast to click, screen was still refershing) and the watch is now stuck on "Bluetooth Started" where I assume it's waiting to get a firmware through the Bluetooth and to connect to something. Problem is there is no way to back out of this, cancel or exit short of pulling the batter. Not a big deal in the plastic case but if I had the aluminum one instead it would be a lot of work to open it up to pull the battery (which one must re-set the time as well at that point)

I've accidentally done this 3 times now, and it would be nice to have some way to back out of this screen or cancel the request. The back button doesn't seem to register once you've gone into the firmware update. (which I can't find any documentation on how to even do a firmware update) .

Watchy not connecting to Arduino IDE

Hi -- I can't get Watchy to accept an upload from the Arduino IDE under either MacOS Big Sur or Windows 10 on my Intel iMac. I have installed the CP2104 drivers under both environments, and tried varying the serial rate. In both, the Watchy's port appears to be recognized, as cu.usbserial-XXXX in MacOS, and as COM3 in Windows. The console output under MacOS with verbose option os for upload is below, and the windows version gives a similar "Failed to connect to ESP32: Timed out waiting for packet header"
Any help you could give would be much appreciated!

Arduino: 1.8.13 (Mac OS X), Board: "ESP32 Dev Module, Disabled, Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 115200, None"

WARNING: library DS3232RTC claims to run on avr architecture(s) and may be incompatible with your current board which runs on esp32 architecture(s).
Sketch uses 1773169 bytes (90%) of program storage space. Maximum is 1966080 bytes.
Global variables use 58644 bytes (17%) of dynamic memory, leaving 269036 bytes for local variables. Maximum is 327680 bytes.
/Users/stephen/Library/Arduino15/packages/esp32/tools/esptool_py/3.0.0/esptool --chip esp32 --port /dev/cu.usbserial-00BFDDF4 --baud 115200 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect 0xe000 /Users/stephen/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc6/tools/partitions/boot_app0.bin 0x1000 /Users/stephen/Library/Arduino15/packages/esp32/hardware/esp32/1.0.5-rc6/tools/sdk/bin/bootloader_qio_80m.bin 0x10000 /var/folders/c0/jxtk96zj7h96mxm_jl13vg8r0000gn/T/arduino_build_494456/7_SEG.ino.bin 0x8000 /var/folders/c0/jxtk96zj7h96mxm_jl13vg8r0000gn/T/arduino_build_494456/7_SEG.ino.partitions.bin
esptool.py v3.0-dev
Serial port /dev/cu.usbserial-00BFDDF4
Connecting......................................____An error occurred while uploading the sketch
_

A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Time is incorrect - which sketch or file has parameters?

Hi, I'm enjoying Watchy very much. Probably I'm missing something really obvious, but the time on Watchy is 6 hours off, the month is correct but the day says 03 (today is the 30th). I changed the year offset in config.h to 1991 and now the year is correct, but the setHour() etc. in config.h seem to be pulling values from an array - where can I find parameters to set the time accurately?

Thanks!

Classes inheriting from Watchy class seem to get constructed each update

Having a great time with Watchy so far but ran into an issue with variables never changing from their default values.

Modifying both the Pokemon watch face and the DOS watch face to have data the persist between drawWatchFace() calls doesn't seem to work. Adding a static variable to WatchyDOS and then incrementing it in drawWatchFace always results in the same value after the next update. From my investigation it looks like the constructor is being called every time the watch face updates. I'm wondering if this is a known limitation or a bug. I'll keep investigating in the mean time, thanks!

Arduino: cannot connect to the device (esptoop.py cannot connect to the device)

Hello,

I followed the steps from the Setup guide for connection to the Arduino IDE, but when I try to flash a new example sketch I get the following errors:

WARNING: library DS3232RTC claims to run on avr architecture(s) and may be incompatible with your current board which runs on esp32 architecture(s).
Sketch uses 1755634 bytes (89%) of program storage space. Maximum is 1966080 bytes.
Global variables use 65388 bytes (19%) of dynamic memory, leaving 262292 bytes for local variables. Maximum is 327680 bytes.
esptool.py v2.6
Serial port COM6
Connecting........_____....._____....._____....._____....._____....._____.....____An error occurred while uploading the sketch
_

A fatal error occurred: Failed to connect to ESP32: Timed out waiting for packet header

I also tried to set the watch initially in BLE OTA mode (thinking that the watch is not held "awake" during the connection request, but I had no luck.

Imperial Temperature Units not Working

I added #define TEMP_UNIT "imperial" to Watchy_7_SEG.cpp, which results in the watchface showing fahrenheit instead of celsius. However, I still am seeing the same 22 degrees as before. I'm have watchy 1.2.6 installed.

I have tried using different API keys and different cities. I've also tried to check the API call manually via postman, and I do not see how it is displaying the current value it is.

How to use Watchy with Platformio

I don't really understand the folder structure of this project.

The example watch faces obviously contain ino files meant for Arduino IDE - but you can't do much here. I don't even see an option to change the city.

In the src folder it's all cpp and h files that look more like something I would like to meddle with ๐Ÿ˜ƒ And I even found the config.h where I can set all the user settings.

Has anyone got this to work in Platformio yet? I seem to be able to install the Watchy library, but there is no board type to select for it.

I'd really love to use Platformio for programming this gadget and I'd appreciate any help someone with more knowledge of this could provide.

More Questions about Watchy

I have a few questions about the Watchy before I buy it:

  • How good is the firmware, can I for example track my steps / get notifications from my phone?
  • How long is the real world battery life?
  • Will the firmware get better over time?
  • Are there any good case designs
    Thank You

Support Network Time Lookup

I could be missing something, but I'd expect that a watch with wifi connectivity would use network time servers, or at least have the option to. I have been playing around with mine, and the watch went dead. This results in the time and date being reset, and it isn't the easiest thing to manually set via the menu.

There are a number of network time arduino examples and libraries like ezTime, but there could be others that would be better to use. This could be maybe implemented into a watch face, but I believe it should be part of watchy core, so that watch face designers don't have to worry about it.

Battery Problem?

Bought Watchy about a month ago. i assembled the Watchy per instructions. When charging, the red indicator light will be bright for the first few minutes and the it will dim. But the battery indicator on the display never reaches 3 bars despite plugged into USB charging for many hours. The watch display has constant problems refreshing and it's showing "ghost". I double checked the display connection and lock and they seemed to be done correctly.

What else can I do to fix the problem?

Instructions for update via bluetooth

Sorry if this is a dumb question. I'm new to hackable hardware.

I can put watchy in to firmware update mode and connect it to a device, but I'm not sure what to do after that.
Being connected doesn't add any ports in the arduinio ide and the mode isn't mentioned in the documentation.
Can compiled sketches be upload to watchy via bluetooth?

Watch running but buttons not responsive

Hi, the watch is working but have been unable to gain access to the configuration menu as the buttons are not responsive. Is there a trick to getting access to the menu?

ESP32 stops responding after WLAN connection

Hi,

i modified the "DOS" WatchFace a little bit and at first everything went fine. Now i want the ESP32 to connect to my WLAN and do something over the network which works as expected. At the end of all the ESP32 gets back to deep sleep and it stops responding to the buttons or the RTC interrupt.
As soon as i call the function connectWiFi() the ESP32 doesn't get up anymore when going into deep sleep mode. But while it is awake everything works as expected, even the network transmissions do work.

I added some serial debugging lines to Watchy.cpp:

void Watchy::init(String datetime){
    esp_sleep_wakeup_cause_t wakeup_reason;
    wakeup_reason = esp_sleep_get_wakeup_cause(); //get wake up reason
    Wire.begin(SDA, SCL); //init i2c
    Serial.begin(115200);
    Serial.print("Wakeup: ");

    switch (wakeup_reason)
    {
        #ifdef ESP_RTC
        case ESP_SLEEP_WAKEUP_TIMER: //ESP Internal RTC
            Serial.println("RTC intern");
            if(guiState == WATCHFACE_STATE){
                RTC.read(currentTime);
                currentTime.Minute++;
                tmElements_t tm;
                tm.Month = currentTime.Month;
                tm.Day = currentTime.Day;
                tm.Year = currentTime.Year;
                tm.Hour = currentTime.Hour;
                tm.Minute = currentTime.Minute;
                tm.Second = 0;
                time_t t = makeTime(tm);
                RTC.set(t);
                RTC.read(currentTime);           
                showWatchFace(true); //partial updates on tick
            }
            break;        
        #endif
        case ESP_SLEEP_WAKEUP_EXT0: //RTC Alarm
            Serial.println("RTC extern");
            RTC.alarm(ALARM_2); //resets the alarm flag in the RTC
            if(guiState == WATCHFACE_STATE){
                RTC.read(currentTime);
                showWatchFace(true); //partial updates on tick
            }
            break;
        case ESP_SLEEP_WAKEUP_EXT1: //button Press
            Serial.println("Button");
            handleButtonPress();
            break;
        default: //reset
            Serial.println("Reset");
            #ifndef ESP_RTC
            _rtcConfig(datetime);
            #endif
            _bmaConfig();
            showWatchFace(false); //full update on reset
            break;
    }
    Serial.println("Power down");
    deepSleep();
}

Here is the relevant part which i added to the Watchy_DOS.cpp file:

void WatchyDOS::drawWatchFace() {
    Serial.println("Start Watchface");
...
    networkActions();
    Serial.println("End Watchface");
}

void WatchyDOS::networkActions() {
    Serial.print("WLAN: ");
    if (connectWiFi()) {
        Serial.println("OK");
        Serial.print("SSID:");
        Serial.println(WiFi.SSID());
        Serial.print("IP:");
        Serial.println(WiFi.localIP().toString());

        // do domething
//      transmitData();

        Serial.println("Stop Wlan");
        WiFi.mode(WIFI_OFF);
    }
    else
        Serial.println("ERR");
}

I can see in the serial console that the ESP32 starts up fine, connects to my WLAN and shows the assigned IP and at the end goes back to to deep sleep.
But after that nothing happens anymore, no response to the buttons nor wakeup from RTC. If i comment out the function networkActions() everything works as expected and it wakes up by button press or RTC interrupt.

So is there something i'm missing for the WLAN connection to used?

Can't seem to connect to WiFi

I just got my Watchy and it seems like the wifi feature does not work. I go through the menu and connect to the AP and enter the SSID and password and the watch responds with the message "Connected to [my network name]". I then press the top left button to go back but the watch face indicates that I am not connected to the internet (the wifi symbol on the default watch face is crossed out) and the weather doesn't seem to update.

My router's device list includes esp32-arduino so it seems to connect just fine. The router lists the device as being disconnected but from what I understand that is to be expected because the watch disables its radios to save battery life.

I have tried to restart the device through the web interface and I have tried erasing the WiFi config to no avail. I have also tried to connect to my phone's hotspot but that didn't seem to change anything.

Out of stock?

The PayPal link say out of stock. Will it be back soon?

Override other methods?

Hi, loving Watchy. :)

I see in Watchy.h that only drawWatchFace() is marked as virtual, but really I'd like to be able to override any of Watchy's methods. For example, I'd like to swap out setTime() for my own that uses NTP instead of manually setting the time, or change getWeatherData() to use a different provider.

Any suggestions on how to do achieve this without modifying the library?

Both Right buttons not working

Neither of my buttons on the right side were working when I first booted up the device. Reinstalling the firmware via the arduino IDE resolved the issue.

Can't get it to Work

Love the product! I'm pretty new to coding...bought this to tinker with. I went through all the setup steps, but when I try to upload a watch face I keep getting errors. Here's what I'm getting trying to upload the 7_SEG face:

Arduino: 1.8.13 (Mac OS X), Board: "ESP32 Dev Module, Disabled, Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None"

WARNING: library DS3232RTC claims to run on avr architecture(s) and may be incompatible with your current board which runs on esp32 architecture(s).
Traceback (most recent call last):
File "esptool.py", line 57, in
File "/Library/Python/2.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 389, in load_module
File "serial/tools/list_ports.py", line 29, in
File "/Library/Python/2.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 389, in load_module
File "serial/tools/list_ports_posix.py", line 31, in
File "/Library/Python/2.7/site-packages/PyInstaller/loader/pyimod03_importers.py", line 389, in load_module
File "serial/tools/list_ports_osx.py", line 32, in
ValueError: dlsym(RTLD_DEFAULT, kIOMasterPortDefault): symbol not found
Failed to execute script esptool
Multiple libraries were found for "WiFi.h"
Used: /Users/*****/Library/Arduino15/packages/esp32/hardware/esp32/1.0.4/libraries/WiFi
Not used: /private/var/folders/xq/lghvjj8s6xv33wfpm_x9dbm00000gn/T/AppTranslocation/7FF2DDFC-648C-4BFA-A503-CAC2DFC3A2E5/d/Arduino.app/Contents/Java/libraries/WiFi
exit status 255
/private/var/folders/xq/lghvjj8s6xv33wfpm_x9dbm00000gn/T/AppTranslocation/7FF2DDFC-648C-4BFA-A503-> > > CAC2DFC3A2E5/d/Arduino.app/Contents/Java/arduino-builder returned 255
Error compiling for board ESP32 Dev Module.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

Time is 2 minutes off after one day

Hello, I set my Watchy time manually in the settings about 20 hours ago. Now I noticed that the time is about 2 minutes too early. Here is a picture of it:
My PC clock is synced, and I set the Watchy time with my PC.
EDIT: I am using Firmware version 1.2.6

Support Alternative Weather API Requests

I live in a city that doesn't appear to have a unique name, which appears to be the only way to configure weather data at the moment. I think supporting a city id and/or coordinates would provide much more flexibility. See API docs here.

I went to look for my city name here: https://openweathermap.org/find?q=huntsville. You can see there are multiple returned. I found the correct one, then requested it by city id from the API. The API returned the data, but the city name was simply "Huntsville". I tried one of the other cities sharing the same name, and they also return a city name of "Huntsville". So, I don't think that requesting by city name should be used at all really, considering that it could have unexpected results.

Down the line, it would be nice to expose these kinds of settings through the menu, so all personalized settings could be completed without having to flash the device. Zip code could be pretty easy to input, given it has a small number of digits, so it could be configured similar to the time settings.

Issue with the display on watchy

Hi,

I just received my watchy and was assembling it. I saw that the display looked off and the top half is not updating and just the bottom half is updating. I tried to disconnect and reconnect the display, but that is not working.

image

Thanks,
Nishant

Trouble Compiling 7 Segment Watch Face Example

Hi, I followed the documentation and ran into an issue where esp8266wifi.h doesn't exist. I believe I have updated each library, and checked all the settings, so I'm not sure what I'm missing. Is there a comprehensive list of libraries that are needed to be installed and known working versions? For example, WifiManager has alpha versions available that I didn't install, but I'm not sure if these are required or not.

Arduino: 1.8.13 (Mac OS X), Board: "ESP32 Dev Module, Disabled, Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS), 240MHz (WiFi/BT), QIO, 80MHz, 4MB (32Mb), 921600, None"

/Applications/Arduino.app/Contents/Java/arduino-builder -dump-prefs -logger=machine -hardware /Applications/Arduino.app/Contents/Java/hardware -hardware /Users/nroth/Library/Arduino15/packages -hardware /Users/nroth/Documents/Arduino/hardware -tools /Applications/Arduino.app/Contents/Java/tools-builder -tools /Applications/Arduino.app/Contents/Java/hardware/tools/avr -tools /Users/nroth/Library/Arduino15/packages -built-in-libraries /Applications/Arduino.app/Contents/Java/libraries -libraries /Users/nroth/Documents/Arduino/libraries -fqbn=esp32:esp32:esp32:PSRAM=disabled,PartitionScheme=min_spiffs,CPUFreq=240,FlashMode=qio,FlashFreq=80,FlashSize=4M,UploadSpeed=921600,DebugLevel=none -ide-version=10813 -build-path /var/folders/0v/0z62tzvn037cpx7drn6wp97m0000gp/T/arduino_build_637921 -warnings=none -build-cache /var/folders/0v/0z62tzvn037cpx7drn6wp97m0000gp/T/arduino_cache_183859 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.xtensa-esp32-elf-gcc.path=/Users/nroth/Library/Arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/1.22.0-97-gc752ad5-5.2.0 -prefs=runtime.tools.xtensa-esp32-elf-gcc-1.22.0-97-gc752ad5-5.2.0.path=/Users/nroth/Library/Arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/1.22.0-97-gc752ad5-5.2.0 -prefs=runtime.tools.esptool_py.path=/Users/nroth/Library/Arduino15/packages/esp32/tools/esptool_py/3.0.0 -prefs=runtime.tools.esptool_py-3.0.0.path=/Users/nroth/Library/Arduino15/packages/esp32/tools/esptool_py/3.0.0 -prefs=runtime.tools.mkspiffs.path=/Users/nroth/Library/Arduino15/packages/esp32/tools/mkspiffs/0.2.3 -prefs=runtime.tools.mkspiffs-0.2.3.path=/Users/nroth/Library/Arduino15/packages/esp32/tools/mkspiffs/0.2.3 -verbose /Users/nroth/Documents/Arduino/libraries/Watchy/examples/WatchFaces/7_SEG/7_SEG.ino
/Applications/Arduino.app/Contents/Java/arduino-builder -compile -logger=machine -hardware /Applications/Arduino.app/Contents/Java/hardware -hardware /Users/nroth/Library/Arduino15/packages -hardware /Users/nroth/Documents/Arduino/hardware -tools /Applications/Arduino.app/Contents/Java/tools-builder -tools /Applications/Arduino.app/Contents/Java/hardware/tools/avr -tools /Users/nroth/Library/Arduino15/packages -built-in-libraries /Applications/Arduino.app/Contents/Java/libraries -libraries /Users/nroth/Documents/Arduino/libraries -fqbn=esp32:esp32:esp32:PSRAM=disabled,PartitionScheme=min_spiffs,CPUFreq=240,FlashMode=qio,FlashFreq=80,FlashSize=4M,UploadSpeed=921600,DebugLevel=none -ide-version=10813 -build-path /var/folders/0v/0z62tzvn037cpx7drn6wp97m0000gp/T/arduino_build_637921 -warnings=none -build-cache /var/folders/0v/0z62tzvn037cpx7drn6wp97m0000gp/T/arduino_cache_183859 -prefs=build.warn_data_percentage=75 -prefs=runtime.tools.xtensa-esp32-elf-gcc.path=/Users/nroth/Library/Arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/1.22.0-97-gc752ad5-5.2.0 -prefs=runtime.tools.xtensa-esp32-elf-gcc-1.22.0-97-gc752ad5-5.2.0.path=/Users/nroth/Library/Arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/1.22.0-97-gc752ad5-5.2.0 -prefs=runtime.tools.esptool_py.path=/Users/nroth/Library/Arduino15/packages/esp32/tools/esptool_py/3.0.0 -prefs=runtime.tools.esptool_py-3.0.0.path=/Users/nroth/Library/Arduino15/packages/esp32/tools/esptool_py/3.0.0 -prefs=runtime.tools.mkspiffs.path=/Users/nroth/Library/Arduino15/packages/esp32/tools/mkspiffs/0.2.3 -prefs=runtime.tools.mkspiffs-0.2.3.path=/Users/nroth/Library/Arduino15/packages/esp32/tools/mkspiffs/0.2.3 -verbose /Users/nroth/Documents/Arduino/libraries/Watchy/examples/WatchFaces/7_SEG/7_SEG.ino
Using board 'esp32' from platform in folder: /Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6
Using core 'esp32' from platform in folder: /Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6
bash -c "[ ! -f \"/Users/nroth/Documents/Arduino/libraries/Watchy/examples/WatchFaces/7_SEG\"/partitions.csv ] || cp -f \"/Users/nroth/Documents/Arduino/libraries/Watchy/examples/WatchFaces/7_SEG\"/partitions.csv \"/var/folders/0v/0z62tzvn037cpx7drn6wp97m0000gp/T/arduino_build_637921\"/partitions.csv"
bash -c "[ -f \"/var/folders/0v/0z62tzvn037cpx7drn6wp97m0000gp/T/arduino_build_637921\"/partitions.csv ] || cp \"/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6\"/tools/partitions/min_spiffs.csv \"/var/folders/0v/0z62tzvn037cpx7drn6wp97m0000gp/T/arduino_build_637921\"/partitions.csv"
Detecting libraries used...
/Users/nroth/Library/Arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/1.22.0-97-gc752ad5-5.2.0/bin/xtensa-esp32-elf-g++ -DESP_PLATFORM "-DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\"" -DHAVE_CONFIG_H -DGCC_NOT_5_2_0=0 -DWITH_POSIX -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/config -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/app_trace -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/app_update -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/asio -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/bootloader_support -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/bt -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/coap -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/console -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/driver -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/efuse -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp-tls -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp32 -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp_adc_cal -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp_event -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp_http_client -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp_http_server -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp_https_ota -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp_https_server -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp_ringbuf -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp_websocket_client -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/espcoredump -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/ethernet -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/expat -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/fatfs -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/freemodbus -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/freertos -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/heap -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/idf_test -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/jsmn -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/json -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/libsodium -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/log -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/lwip -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/mbedtls -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/mdns -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/micro-ecc -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/mqtt -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/newlib -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/nghttp -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/nvs_flash -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/openssl -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/protobuf-c -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/protocomm -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/pthread -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/sdmmc -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/smartconfig_ack -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/soc -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/spi_flash -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/spiffs -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/tcp_transport -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/tcpip_adapter -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/ulp -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/unity -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/vfs -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/wear_levelling -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/wifi_provisioning -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/wpa_supplicant -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/xtensa-debug-module -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp-face -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp32-camera -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp-face -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/fb_gfx -std=gnu++11 -Os -g3 -Wpointer-arith -fexceptions -fstack-protector -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -mlongcalls -nostdlib -w -Wno-error=maybe-uninitialized -Wno-error=unused-function -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-missing-field-initializers -Wno-sign-compare -fno-rtti -c -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10813 -DARDUINO_ESP32_DEV -DARDUINO_ARCH_ESP32 "-DARDUINO_BOARD=\"ESP32_DEV\"" "-DARDUINO_VARIANT=\"esp32\"" -DESP32 -DCORE_DEBUG_LEVEL=0 -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/cores/esp32 -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/variants/esp32 /var/folders/0v/0z62tzvn037cpx7drn6wp97m0000gp/T/arduino_build_637921/sketch/7_SEG.ino.cpp -o /dev/null -DARDUINO_LIB_DISCOVERY_PHASE
Alternatives for Watchy.h: [[email protected]]
ResolveLibrary(Watchy.h)
  -> candidates: [[email protected]]
/Users/nroth/Library/Arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/1.22.0-97-gc752ad5-5.2.0/bin/xtensa-esp32-elf-g++ -DESP_PLATFORM "-DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\"" -DHAVE_CONFIG_H -DGCC_NOT_5_2_0=0 -DWITH_POSIX -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/config -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/app_trace -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/app_update -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/asio -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/bootloader_support -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/bt -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/coap -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/console -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/driver -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/efuse -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp-tls -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp32 -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp_adc_cal -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp_event -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp_http_client -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp_http_server -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp_https_ota -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp_https_server -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp_ringbuf -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp_websocket_client -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/espcoredump -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/ethernet -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/expat -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/fatfs -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/freemodbus -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/freertos -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/heap -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/idf_test -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/jsmn -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/json -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/libsodium -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/log -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/lwip -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/mbedtls -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/mdns -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/micro-ecc -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/mqtt -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/newlib -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/nghttp -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/nvs_flash -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/openssl -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/protobuf-c -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/protocomm -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/pthread -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/sdmmc -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/smartconfig_ack -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/soc -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/spi_flash -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/spiffs -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/tcp_transport -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/tcpip_adapter -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/ulp -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/unity -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/vfs -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/wear_levelling -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/wifi_provisioning -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/wpa_supplicant -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/xtensa-debug-module -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp-face -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp32-camera -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp-face -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/fb_gfx -std=gnu++11 -Os -g3 -Wpointer-arith -fexceptions -fstack-protector -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -mlongcalls -nostdlib -w -Wno-error=maybe-uninitialized -Wno-error=unused-function -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-missing-field-initializers -Wno-sign-compare -fno-rtti -c -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10813 -DARDUINO_ESP32_DEV -DARDUINO_ARCH_ESP32 "-DARDUINO_BOARD=\"ESP32_DEV\"" "-DARDUINO_VARIANT=\"esp32\"" -DESP32 -DCORE_DEBUG_LEVEL=0 -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/cores/esp32 -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/variants/esp32 -I/Users/nroth/Documents/Arduino/libraries/Watchy/src /var/folders/0v/0z62tzvn037cpx7drn6wp97m0000gp/T/arduino_build_637921/sketch/7_SEG.ino.cpp -o /dev/null -DARDUINO_LIB_DISCOVERY_PHASE
Alternatives for WiFiManager.h: [[email protected]]
ResolveLibrary(WiFiManager.h)
  -> candidates: [[email protected]]
/Users/nroth/Library/Arduino15/packages/esp32/tools/xtensa-esp32-elf-gcc/1.22.0-97-gc752ad5-5.2.0/bin/xtensa-esp32-elf-g++ -DESP_PLATFORM "-DMBEDTLS_CONFIG_FILE=\"mbedtls/esp_config.h\"" -DHAVE_CONFIG_H -DGCC_NOT_5_2_0=0 -DWITH_POSIX -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/config -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/app_trace -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/app_update -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/asio -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/bootloader_support -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/bt -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/coap -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/console -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/driver -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/efuse -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp-tls -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp32 -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp_adc_cal -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp_event -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp_http_client -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp_http_server -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp_https_ota -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp_https_server -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp_ringbuf -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp_websocket_client -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/espcoredump -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/ethernet -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/expat -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/fatfs -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/freemodbus -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/freertos -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/heap -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/idf_test -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/jsmn -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/json -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/libsodium -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/log -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/lwip -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/mbedtls -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/mdns -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/micro-ecc -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/mqtt -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/newlib -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/nghttp -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/nvs_flash -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/openssl -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/protobuf-c -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/protocomm -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/pthread -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/sdmmc -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/smartconfig_ack -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/soc -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/spi_flash -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/spiffs -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/tcp_transport -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/tcpip_adapter -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/ulp -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/unity -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/vfs -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/wear_levelling -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/wifi_provisioning -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/wpa_supplicant -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/xtensa-debug-module -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp-face -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp32-camera -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/esp-face -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/tools/sdk/include/fb_gfx -std=gnu++11 -Os -g3 -Wpointer-arith -fexceptions -fstack-protector -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -mlongcalls -nostdlib -w -Wno-error=maybe-uninitialized -Wno-error=unused-function -Wno-error=unused-but-set-variable -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-missing-field-initializers -Wno-sign-compare -fno-rtti -c -w -x c++ -E -CC -DF_CPU=240000000L -DARDUINO=10813 -DARDUINO_ESP32_DEV -DARDUINO_ARCH_ESP32 "-DARDUINO_BOARD=\"ESP32_DEV\"" "-DARDUINO_VARIANT=\"esp32\"" -DESP32 -DCORE_DEBUG_LEVEL=0 -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/cores/esp32 -I/Users/nroth/Library/Arduino15/packages/esp32/hardware/esp32/1.0.6/variants/esp32 -I/Users/nroth/Documents/Arduino/libraries/Watchy/src -I/Users/nroth/Documents/Arduino/libraries/WiFiManager /var/folders/0v/0z62tzvn037cpx7drn6wp97m0000gp/T/arduino_build_637921/sketch/7_SEG.ino.cpp -o /dev/null -DARDUINO_LIB_DISCOVERY_PHASE
Alternatives for ESP8266WiFi.h: []
ResolveLibrary(ESP8266WiFi.h)
  -> candidates: []
In file included from /Users/nroth/Documents/Arduino/libraries/Watchy/src/Watchy.h:5:0,
                 from /var/folders/0v/0z62tzvn037cpx7drn6wp97m0000gp/T/arduino_build_637921/sketch/Watchy_7_SEG.h:4,
                 from /Users/nroth/Documents/Arduino/libraries/Watchy/examples/WatchFaces/7_SEG/7_SEG.ino:1:
/Users/nroth/Documents/Arduino/libraries/WiFiManager/WiFiManager.h:16:25: fatal error: ESP8266WiFi.h: No such file or directory
compilation terminated.
Using library Watchy at version 1.2.5 in folder: /Users/nroth/Documents/Arduino/libraries/Watchy 
Using library WiFiManager at version 0.16.0 in folder: /Users/nroth/Documents/Arduino/libraries/WiFiManager 
exit status 1
Error compiling for board ESP32 Dev Module.

Questions about Watchy

I was made aware of this watch by a article on CNX-software. In the post they mentioned this watch supports Micropython.

How does the micropython support work?
How is this device charged?
Does it already have the ability to sync over bluetooth to a phone for firmware updates and time sync?

Firmware update can't be cancelled/exited

While testing everything out before taping it down, I entered the "Update Firmware" menu, dug around the site for a while until I found #55 that indicates the BLE is only for beta watch face uploads, and I've discovered that I can't back out of this mode; neither the cancel/back button nor any of the other have any effect when pressed, held, or pressed multiple times (including waiting for the various timeouts noted in #43)

From time to time, using wifi triggers a reset loop

From time to time, after a WiFi connection, the ESP32 keeps reseting. I see the screen flashing every 10s or so.

I tried this:

diff --git a/src/Watchy.cpp b/src/Watchy.cpp
index c744d6a..d4d0a1f 100644
--- a/src/Watchy.cpp
+++ b/src/Watchy.cpp
@@ -72,7 +72,12 @@ void Watchy::init(String datetime){
             _rtcConfig(datetime);
             #endif
             _bmaConfig();
-            showWatchFace(false); //full update on reset
+            pinMode(MENU_BTN_PIN, INPUT);^M
+            if(digitalRead(MENU_BTN_PIN) == 1){^M
+                    showMenu(menuIndex, false);^M
+            }else{^M
+                    showWatchFace(false); //full update on reset^M
+            }^M
             break;
     }
     deepSleep();

On reset, instead of showing the watch face I show the menu if the menu button is pressed and this breaks the reset cycle.

Question about battery voltage

Hello,

first of all, thank you very much for this great project! I have one question regarding the measurement of the battery voltage: I got my Watchy and the voltage that is shown in the menu was at most (also after several h of charging) ~3.97V. Is it possible that the measurements made by my Watchy are shifted by about -0.25V? I compared it with some measurements I made between +BATT and GND (using a voltmeter) and the internal voltage was always shifted by -0.25V?

Therefore, also the battery level in Watchy_7_SEG was only at level 1 or level 2 in my case...

Thank you very much,
David

Use ALARM1 for second updates?

Is this possible? It seems possible at first blush and kinda working but I think it might break the button interrupts?

Experiences, questions and documentation improvement ideas for beginners

Beginner experiences so far. Blindly go where someone has gone before.

  1. Opened the box and started to assembly according instructions https://watchy.sqfmi.com/docs/getting-started.
  • I finished the assembly and checked that watch face was on. I did not find any documentation what button is what so I just pressed them all. Managed to find menu and tried battery information and it stuck there. No response from any button. Whatchy is now stuck. Ok - I guess I need to re-flash it.
  1. https://watchy.sqfmi.com/docs/getting-started#arduino-setup
  1. https://playground.arduino.cc/Linux/All/#Permission
  1. Now I could upload 7_SEG watch face again - and get it working

Watchy code
Watch face examples were there in Ide but it took some time for Arduino beginner to find where Watchy code is.
$ ~/Documents/Arduino/libraries/Watchy
For example: config.h - change Weather location here

Default Watch face - instruction

  • Button details - which button does what. LeftUp - back, LeftDown - menu/action, RightUp - Up, RightDown -Down
  • Manu item functions
    • Battery Check
      • will stuck if used
    • Vibrate motor
    • Show Accellerometer
    • Set Time
      • works
    • Setup Wifi
      • works if finished other vice stuck
      • connect to your Watchy Wifi AP and follow instructions
    • Update firmware - no idea how to do this or what this does?
      • will stuck

Common problems and solutions

  • Stuck to menu
    • personally I can not much use menu without it getting stuck
      #49
    • I have Aluminum Case - I have not wanted to open it again as don't want to crack the screen.
    • workaround - upload 7_SEG again
    • solution?
  • Check out other issues if problems: https://github.com/sqfmi/Watchy/issues

Questions:

  • Does Ide watch face upload update firmware?
  • how to update firmware?
  • BLE information?
  • any good links to Watchy relevant Arduino beginner documentation?

Possibly this experience can be used to improve documentation and after learning something -> I guess Arduino beginner documentation PR's and some other relevant documentation PR's are ok to do? :)

Factory Reset?

Hi, I ran the 7 segment and basic watchfaces; now my Watchy appears to be bricked - it won't update the display and the serial monitor shows:

Guru Meditation Error: Core 0 panic'ed (LoadProhibited). Exception was unhandled.
Core 0 register dump:
PC : 0x4012028e PS : 0x00060030 A0 : 0x800ee005 A1 : 0x3ffbba40
A2 : 0x0000008c A3 : 0x00000001 A4 : 0x85150000 A5 : 0x00000001
A6 : 0xffffffff A7 : 0x00000000 A8 : 0x800ee0ac A9 : 0x3ffbba20
A10 : 0x00000011 A11 : 0x00000000 A12 : 0x00000000 A13 : 0x3ffbd2c8
A14 : 0x0000001f A15 : 0x00000000 SAR : 0x0000000f EXCCAUSE: 0x0000001c
EXCVADDR: 0x85150000 LBEG : 0x4000c2e0 LEND : 0x4000c2f6 LCOUNT : 0xffffffff

Backtrace: 0x4012028e:0x3ffbba40 0x400ee002:0x3ffbba60 0x400f034b:0x3ffbba80 0x400f40de:0x3ffbbab0 0x40091cc9:0x3ffbbad0

Rebooting...

I have tried uploading a few different watchfaces; they upload and say: Leaving...
Hard resetting via RTS pin...

But nothing changes; the display is locked on 00:24 and the serial monitor shows the same error.

Is there any way to reset and start over?

Thanks,

-Bill

Blank screen after assembly and power on

My watch does not show anything on the screen (it is all blank, white-grey). When I first assembled, I forced the FPC connector, I didn't know that I should pull it first (this was not written on the first instructions, just "Connect the screen to the FPC connector". Also the video seems to be an accelerated recording, nothing important can be discerned. The second video is much better, and the instructions also say "Pull lightly to unlock the FFC connector". Sorry for me being so lame ;()

Anyway, the screen connector seems OK now, but it shows nothing: connecting power cleared it up. I connected Watchy to an Arduino IDE and uploaded some sketch (apparently OK, the last log says "Hard resetting via RTS pin..."), but no avail, screen blank. The buttons don't do anything. Is there a way to debug and check if the screen is connected, ...?

Using the BMA423 to trigger wakeup is slow

I just saw that you updated the code and included support for accessing the BMA423 accelerometer.
Seeing the enableWakeupInterrupt got me interested in using that to wakeup the device. I have successfully adapted the Button_Test example to include the ACC_INT_1 (GPIO 25) as seen in the Schematic in the esp_sleep_enable_ext1_wakeup call which made it possible to react to it.

The issue I am facing is that initialising the BMA Sensor on every boot takes approx. 1-2s So I thought I would only need to do it on the first hard reset of the esp32 as the BMA sensor should keep it's config across reboots but that isn't working. If I don't initialise the BMA the ext1 wakeup is triggered all the time.

I looked into the implementation of the BMA423 sensor you provided and saw that you are uploading the config in the begin() call.

One "solution" I came up with is to do the init of the BMA on the second core of the esp32 but that seams unnecessarily complicated.

Do you have any pointers what I could try next?

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.