ESP32-C3 Pocuter word watch

Home
A small watch that displays the time in words in Dutch, English, French and German or digital on a tiny display.

The watch is able to receive time via NTP from the internet.
Settings can be controlled via a webpage, PC and Bluetooth LE.
If the watch is used stand-alone, without connections, it can be controlled with buttons.

Latest versions and updates on Github

Pocuters

The watch is built in a Pocuter One equipped with  a ESP32-C3 chip and SSD1131 OLED display built by www.pocuter.com
The software is written in the Arduino IDE 1.8.19 and IDE 2.0.0.

The software contains coding to use the:
1 Pocuter One with 96x64 pixels OLED colour display
2 BLE nRF UART connection with an option to send strings longer than 20 bytes
3 Get time zone corrected time with daylight savings from a NTP server via WIFI
4 RGB LED
5 RTC for time keeping when off line
6 Storage of the settings on SD-card.
7 Or storage of the settings in the ESP32-C3 SPIFSS Flash memory
8 Menu driven control of preferences with serial monitor, BLE and WIFI-html page
9 Buttons
10 Four languages to display time

Het was tien over tien 10:13:00
Il est dix heures et quart 10:14:00
Il est dix heures et quart 10:15:00
Het is kwart over tien 10:16:00
Es war viertel nach zehn 10:17:00
It was quarter past ten 10:18:00
Il est dix heures vingt 10:19:00
Es ist zehn vor halb elf 10:20:00
Het is tien voor half elf 10:21:00
It was twenty past ten 10:22:00
It was twenty past ten 10:23:00
Het is vijf voor half elf 10:24:00
Es ist funf vor halb elf 10:25:00
It is twenty five past ten 10:26:00
Es war funf vor halb elf 10:27:00
MS phone and iPhone8
Display of the time in the serial output HTML page in iPhone 8 and Microsoft Phone

First Use
When the Pocuter is started and running properly the LED on the Pocuter will pulse red every second.
When connected to WIFI  the same led will also pulse green. 
Press the the top right button to see the ip-address, time and date of the clock .
Date and ip-address will disappear as a new minute starts.
Enter the ip-address in a browser or connect via Bluetooth and send the character 'I' to see for the menu.
In the menu the name of the router to connect to, the SSID, and its password can be entered.

IP-address

Installations 
There are two versions of this application.
One version has the option to store preferences on a SD-card. The a fast screen access is also possible.
In this mode the screen updates much faster.
The other version has a slower screen access. No SD card is needed because the settings are stored in the SPIFFS memory of the ESP32-C3.
There are to ino files and .bin version to upload available. The filename of the fast screen version end with FS.
If you compile the application your self locate this line in the top of the program and remove the // for fast screen access and the use of an SD card.
Compile and upload it into the pocuter

//#define FASTSCREEN     // Use SD for storage instead of SPIFFS. ....

When a SD card is used:
Insert a FAT formatted SD-card. Settings will be saved on it in both version.
In 2022 the SD-card reader does not read all SD-cards properly. Use an old slow (eg 80MB/s) 16GB or less card.
If the SD-card is omitted the data will be stored in the Pocuter when the slow screen access version is used. With the FS-version data will be lost when the
If the clock is connected to the internet it will seek contact with a time server.
The time zone is set to UTC+1 Amsterdam but can be changed in the menu.
To connect to a WIFI network a SSID and password must be entered.
There are a few methods:
- Connect the Pocuter with a serial cable to a PC and use a serial terminal. I use the Arduino IDE or Termite as serial terminal.

Sending the I for information will display the menu followed with the actual settings of several preferences

Menu on iPhone Termite terminal
HTML page on iPhone
Termite Terminal from a PC

- USE the BLE nRF connection with an UART serial terminal app to control it with your mobile phone or tablet.
Use the IOS app:  BLE Serial Pro. Turn on Fast BLE with option Z

For Android use: Serial Bluetooth terminal. Turn off (default) Fast BLE.

Start the app and find the Pocuter in the list of devices and connect to it. You can change it's beacon name in the menu with option C.

In both cases send the letter I of Information and the menu shows up.
Enter the first letter of the setting you want to changes followed with a code.
Some entries just toggle On and Off. Like the W to set WIFI Off or On.

To change the SSID and password:
Amy-ssid and send this command. Eg AFRITZ!Box01 or aFRITZ!Box01. Starting with an upper or lower case character is an identical instruction in the command string
Then  Bmy password and send that password.
Cbroadcastname  will change to name displayed in the Bluetooth connection list. 
If the length of the SSID and/or password is less then 5 characters the WIFI will be turned off automatically. This will speed up startup time if no internet connection is available
Use a length of minimal 8 characters for SSID and password.
Check in the menu (third row from the bottom) if WIFI and NTP are on.
If WIFI is connected the LED on the Pocuter will pulse green.

Enter @ to reset the Pocuter. It will restart and connections will be made.

To set a time zone. Send the the time zone string between the quotes prefixed with the character E or e.
See the time zones at the bottom of this page.
For example; if you live in Australia/Sydney send the string, eAEST-10AEDT,M10.1.0,M4.1.0/3

 

A SSID B Password C BLE beacon name
D Set Date (D15012021)
E Set Timezone E<-02>2 or E<+01>-1
Make own colour of: (Hex RRGGBB)
F Font G Dimmed font H Bkgnd
I To print this Info menu
L L0 = NL, L1 = UK, L2 = DE
L3 = FR, L4 = Wheel
N Display off between Nhhhh (N2208)
O Display toggle On/Off
Q Display colour choice (Q0-6)
Q0 Yellow Q1 hourly
Q2 White Q3 All Own
Q4 Own Q5 Wheel
Q6 Digital display
R Reset settings @ = Reset Pocuter
T Set Time (T132145)
W=WIFI, X=NTP, Y=BLE, Z=Fast BLE
Ed Nieuwenhuys Okt 2022
___________________________________
Display off: 00h - 00h
Display choice: Wheel
SSID: FRITZ!BoxEd
BLE name: PocClockBlack
IP-address: 192.168.178.77
Timezone:CET-1CEST,M3.5.0,M10.5.0/3
WIFI=On NTP=On BLE=On Fast BLE=Off
Language choice: Rotate language
Software: PocuterWordClockV050.ino
___________________________________
  Menu shown in serial output.


Pocuter word clock

Control and settings of the clock

If there is no WIFI connection time and digital or word clock mode can be set with the three buttons.
Check at the bottom of the menu if WIFI is OFF.
The clock will start much quicker because it will not try to connect.
Pocuter menu bottom


Top Left: + 1 hour
Right bottom: + 1 minute
Top Right: Toggle between word or digital display

As mentioned before the clock can be controlled with the WIFI webpage or BLE UART terminal app.
When the clock is connected to WIFI the ip-address is displayed in the Digital display (Press Top right button to select it).
Enter this ip-address numbers and dots (for example: 192.168.178.77) in the browser of your mobile or PC where you type your internet addresses (URL).
or search items.
Or
Open the BLE terminal app. Look for the WordClock to connect to and connect.
BLE connection can be made with my app BLE Serial pro on the app store for Apple IOS devices.
For Android  nRF UART terminal program and Serial Bluetooth terminal from Kai Morich
Unfortunately this Android apps can not read strings longer than 20 characters.
If you see a garbled menu enter and send the character 'Z' to select the slower transmission mode

Settings are set by entering the first character of a command following by parameters if necessary.
For example: To set the colours of the fonts in the display to white enter: Q2
To shown random all four languages every minute send L4.

Set the time by entering T130245. (130245 will also work)

Turn off WIFI by sending a W.

Reset the Pocuter with the letter @.

Reset to default setting by send R.

In the BLE connection the SSID and password will be shown.


Phone WIFI-BLE
HTML page BLE menu

Detailed description

With the menu many preferences can be set. These preferences are stored on a SD-card or in the ESP32-C3 storage space.
 
Enter the first character in the menu of the item to be changed followed with the parameter.
There is no difference between upper or lower case. Both are OK.
Between the ( )

A SSID B Password C BLE beacon name
Change the name of the SSID of the router to be connected to.
aFRITZ!BoxEd or AFRITZ!BoxEd
Then enter the password. For example: BSecret_pass
Restart the Pocuter by sending @
Entering a single 'b' will show the used password. This Easter egg can can used to check if a valid password was entered

D Set Date  and T Set Time
If you are not connected to WIFI you have to set the time and date by hand
For example enter: D06112022 to set the date to 6 November 2022.

Enter for example T132145 (or 132145 , or t132145)  to set the time to 45 seconds and 21 minute past one o'clock.

E Set Timezone E<-02>2 or E<+01>-1
At the bottom of this page you can find the time zones used in 2022.
It is a rather complicated string and it is therefore wise to copy it.
Let's pick one if you happen to live here: Antarctica/Troll,"<+00>0<+02>-2,M3.5.0/1,M10.5.0/3"
Copy the string between the " "'s and send it with starting with an 'E' or 'e' in front.
E<+00>0<+02>-2,M3.5.0/1,M10.5.0/3

Time zones and daylight savings should be ended and replaced by one universal date and time for the while planet cq universe.
But that is my opinion.

Make own colour of: (Hex RRGGBB)
F Font G Dimmed font H Bkgnd

You can set the colours of the highlighted and dimmed characters and  the back ground
The time is shown with the colour defined with Font when Display choice Q3 or Q4 is chosen and the rest of the not highlighted characters are coloured with the setting in Dimmed font.
The format to be entered is hexadecimal. 0123456789ABCDEF are the character that can be used.
The command is 2 digits for Red followed with  two for Green and ending with two digits for Blue.
To colour the characters intense red enter FF0000 prefixed with the letter F, G or H.
To set the background to intense blue enter: H0000FF
To set the dimmed character to dark gray enter for example: G191919. You get gray if red, green and blue has the same intensity.

I To print this Info menu
Print the menu to Bluetooth and the serial monitor connected with an USB-cable

L L0 = NL, L1 = UK, L2 = DE, L3 = FR, L4 = Wheel
You can choose between four languages to display or show them randomly every minute.

N Display off between Nhhhh (N2208)
With N2208 the display will be turned off between 22:00 and 8:00.

O Display toggle On/Off
O toggle the display off and on.


Q Display colour choice (Q0-6)
Q0 Yellow Q1 hourly Q2 White Q3 All Own Q4 Own Q5 Wheel Q6 Digital display


Q0 will show the time with yellow words.
Q1 will show every hour another colour.
Q2 shows all the texts white.
Q3 and Q4 uses you own defined colours.
Q5 will follow rainbow colours every minute.
Q6 is the digital display with the IP-address and date until seconds are 00.
You can also press the top right button.
The selected choice is displayed at the bottom of the menu.
Send an 'I' to display the latest's settings

R Reset settings
R will set all preferences to default settings, it also clears the SSID and password.

@ = Restart Pocuter
@ will restart the Pocuter. This is handy when the SSID, et cetera are changed and the program must be restarted.

W=WIFI, X=NTP, Y=BLE, Z=Use SD
Toggle WIFI, NTP on and off.
Enter the character will toggle it on or off. A the bottom of the menu the stated is printed.
Bottom menu

Z Fast BLE
The BLE UART protocol sends default packets of 20 bytes. Between every packet there is a delay of 50 msec
The IOS BLEserial app, and maybe others too, is able to receive packets of 80 bytes or more before characters are missed and
Option Z toggles between the long and short packages. 

Because not all Pocuter functionalities in the Pocuter library were described or could be found by me at the moment of writing this program several standard ESP32-C3 DEV functionality was used.
In this software version only the Pocuter Button and OLED screen functionality were used

Settings are stored on the SD-card or if no SD is present in the SPIFFS space from the ESP32-C3

The following libraries are used.

#include <Pocuter.h>
#include <NimBLEDevice.h>      // For BLE communication  https://github.com/h2zero/NimBLE-Arduino
#include <ESPNtpClient.h>      // https://github.com/gmag11/ESPNtpClient
#include <WiFi.h>              // Used for NTP tme and web page
#include <AsyncTCP.h>          // Used for webpage   https://github.com/me-no-dev/ESPAsyncWebServer
#include <ESPAsyncWebServer.h> // Used for webpage   https://github.com/me-no-dev/ESPAsyncWebServer
#include <Preferences.h>       // Used for SPIFFS file system

To compile the software some standard setting must be changed.
First copy the Pocuter libraries in the libraries folder where your sketches are saved.
In my case copy from here: c:\Program Files (x86)\Arduino\libraries\Pocuter\ to here c:\Users\ednie\Documents\Files\Arduino\libraries\Pocuter\
Now we do not change the original Pocuter library and we keep all the non-standard Arduino libraries in one place.

To be able to compile the ESP32 Arduino boards must be installed and the ESP32 C3 DEV board selected.
Maybe the latest Pocuter board also compiles fine and you can use Fast screen mode with SPIFFS storage.

 

ESP32-c3 DEV board


One change must be made in the file: "C:\Users\ednie\Documents\Files\Arduino\libraries\Pocuter\include\PocuterLibConfig.h"
Because we do not use the Pocuter WIFI library we have to disable the WIFI to avoid a compilation error of the ESP32 WIFI library.
So remove the // before #define POCUTER_DISABLE_WIFI to disable the Pocuter WIFI lbrary.
/* Dont use WIFI functions */
 #define POCUTER_DISABLE_WIFI
When compiling the program these are the last lines for Version V052:
Successfully created esp32c3 image.
"C:\\Users\\ednie\\AppData\\Local\\Arduino15\\packages\\esp32\\hardware\\esp32\\2.0.5/tools/gen_esp32part.exe" -q "C:\\Users\\ednie\\AppData\\Local\\Temp\\arduino_build_992263/partitions.csv" "C:\\Users\\ednie\\AppData\\Local\\Temp\\arduino_build_992263/PocuterWordClockV052.ino.partitions.bin"
Multiple libraries were found for "WiFi.h"
Used: C:\Users\ednie\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5\libraries\WiFi
Not used: C:\Users\ednie\Documents\Files\Arduino\libraries\WiFiNINA
Not used: C:\Program Files (x86)\Arduino\libraries\WiFi
Multiple libraries were found for "Pocuter.h"
Used: C:\Users\ednie\Documents\Files\Arduino\libraries\Pocuter
Not used: C:\Program Files (x86)\Arduino\libraries\Pocuter
Using library Pocuter in folder: C:\Users\ednie\Documents\Files\Arduino\libraries\Pocuter (legacy)
Using library NimBLE-Arduino at version 1.4.1 in folder: C:\Users\ednie\Documents\Files\Arduino\libraries\NimBLE-Arduino 
Using library ESPNTP in folder: C:\Users\ednie\Documents\Files\Arduino\libraries\ESPNTP (legacy)
Using library WiFi at version 2.0.0 in folder: C:\Users\ednie\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5\libraries\WiFi 
Using library Ticker at version 2.0.0 in folder: C:\Users\ednie\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5\libraries\Ticker 
Using library AsyncTCP-master at version 1.1.1 in folder: C:\Users\ednie\Documents\Files\Arduino\libraries\AsyncTCP-master 
Using library ESPAsyncWebServer-master at version 1.2.3 in folder: C:\Users\ednie\Documents\Files\Arduino\libraries\ESPAsyncWebServer-master 
Using library FS at version 2.0.0 in folder: C:\Users\ednie\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5\libraries\FS 
Using library Preferences at version 2.0.0 in folder: C:\Users\ednie\AppData\Local\Arduino15\packages\esp32\hardware\esp32\2.0.5\libraries\Preferences 
"C:\\Users\\ednie\\AppData\\Local\\Arduino15\\packages\\esp32\\tools\\riscv32-esp-elf-gcc\\gcc8_4_0-esp-2021r2-patch3/bin/riscv32-esp-elf-size" -A "C:\\Users\\ednie\\AppData\\Local\\Temp\\arduino_build_992263/PocuterWordClockV052.ino.elf"
Sketch uses 1265096 bytes (40%) of program storage space. Maximum is 3145728 bytes.
Global variables use 44044 bytes (13%) of dynamic memory, leaving 283636 bytes for local variables. Maximum is 327680 bytes. 

 

Some lessons learned:

If the Pocuter hangs or rests constantly uploads are not possible anymore you can place the pocuter in upload mode
Press the button near the pins, keep it down, press and release the reset button near the USB-port and release the button near the pins.

It is a little fiddling with the small buttons but it worked for me always to upload again after dozens of crashes due to bugs and programming errors

 

@Ed Nieuwenhuys, November 2022 

 

Timezones.
Copy the text between the quotes and paste them after the character E

Africa/Abidjan,"GMT0"
Africa/Accra,"GMT0"
Africa/Addis_Ababa,"EAT-3"
Africa/Algiers,"CET-1"
Africa/Asmara,"EAT-3"
Africa/Bamako,"GMT0"
Africa/Bangui,"WAT-1"
Africa/Banjul,"GMT0"
Africa/Bissau,"GMT0"
Africa/Blantyre,"CAT-2"
Africa/Brazzaville,"WAT-1"
Africa/Bujumbura,"CAT-2"
Africa/Cairo,"EET-2"
Africa/Casablanca,"<+01>-1"
Africa/Ceuta,"CET-1CEST,M3.5.0,M10.5.0/3"
Africa/Conakry,"GMT0"
Africa/Dakar,"GMT0"
Africa/Dar_es_Salaam,"EAT-3"
Africa/Djibouti,"EAT-3"
Africa/Douala,"WAT-1"
Africa/El_Aaiun,"<+01>-1"
Africa/Freetown,"GMT0"
Africa/Gaborone,"CAT-2"
Africa/Harare,"CAT-2"
Africa/Johannesburg,"SAST-2"
Africa/Juba,"CAT-2"
Africa/Kampala,"EAT-3"
Africa/Khartoum,"CAT-2"
Africa/Kigali,"CAT-2"
Africa/Kinshasa,"WAT-1"
Africa/Lagos,"WAT-1"
Africa/Libreville,"WAT-1"
Africa/Lome,"GMT0"
Africa/Luanda,"WAT-1"
Africa/Lubumbashi,"CAT-2"
Africa/Lusaka,"CAT-2"
Africa/Malabo,"WAT-1"
Africa/Maputo,"CAT-2"
Africa/Maseru,"SAST-2"
Africa/Mbabane,"SAST-2"
Africa/Mogadishu,"EAT-3"
Africa/Monrovia,"GMT0"
Africa/Nairobi,"EAT-3"
Africa/Ndjamena,"WAT-1"
Africa/Niamey,"WAT-1"
Africa/Nouakchott,"GMT0"
Africa/Ouagadougou,"GMT0"
Africa/Porto-Novo,"WAT-1"
Africa/Sao_Tome,"GMT0"
Africa/Tripoli,"EET-2"
Africa/Tunis,"CET-1"
Africa/Windhoek,"CAT-2"
America/Adak,"HST10HDT,M3.2.0,M11.1.0"
America/Anchorage,"AKST9AKDT,M3.2.0,M11.1.0"
America/Anguilla,"AST4"
America/Antigua,"AST4"
America/Araguaina,"<-03>3"
America/Argentina/Buenos_Aires,"<-03>3"
America/Argentina/Catamarca,"<-03>3"
America/Argentina/Cordoba,"<-03>3"
America/Argentina/Jujuy,"<-03>3"
America/Argentina/La_Rioja,"<-03>3"
America/Argentina/Mendoza,"<-03>3"
America/Argentina/Rio_Gallegos,"<-03>3"
America/Argentina/Salta,"<-03>3"
America/Argentina/San_Juan,"<-03>3"
America/Argentina/San_Luis,"<-03>3"
America/Argentina/Tucuman,"<-03>3"
America/Argentina/Ushuaia,"<-03>3"
America/Aruba,"AST4"
America/Asuncion,"<-04>4<-03>,M10.1.0/0,M3.4.0/0"
America/Atikokan,"EST5"
America/Bahia,"<-03>3"
America/Bahia_Banderas,"CST6CDT,M4.1.0,M10.5.0"
America/Barbados,"AST4"
America/Belem,"<-03>3"
America/Belize,"CST6"
America/Blanc-Sablon,"AST4"
America/Boa_Vista,"<-04>4"
America/Bogota,"<-05>5"
America/Boise,"MST7MDT,M3.2.0,M11.1.0"
America/Cambridge_Bay,"MST7MDT,M3.2.0,M11.1.0"
America/Campo_Grande,"<-04>4"
America/Cancun,"EST5"
America/Caracas,"<-04>4"
America/Cayenne,"<-03>3"
America/Cayman,"EST5"
America/Chicago,"CST6CDT,M3.2.0,M11.1.0"
America/Chihuahua,"MST7MDT,M4.1.0,M10.5.0"
America/Costa_Rica,"CST6"
America/Creston,"MST7"
America/Cuiaba,"<-04>4"
America/Curacao,"AST4"
America/Danmarkshavn,"GMT0"
America/Dawson,"MST7"
America/Dawson_Creek,"MST7"
America/Denver,"MST7MDT,M3.2.0,M11.1.0"
America/Detroit,"EST5EDT,M3.2.0,M11.1.0"
America/Dominica,"AST4"
America/Edmonton,"MST7MDT,M3.2.0,M11.1.0"
America/Eirunepe,"<-05>5"
America/El_Salvador,"CST6"
America/Fortaleza,"<-03>3"
America/Fort_Nelson,"MST7"
America/Glace_Bay,"AST4ADT,M3.2.0,M11.1.0"
America/Godthab,"<-03>3<-02>,M3.5.0/-2,M10.5.0/-1"
America/Goose_Bay,"AST4ADT,M3.2.0,M11.1.0"
America/Grand_Turk,"EST5EDT,M3.2.0,M11.1.0"
America/Grenada,"AST4"
America/Guadeloupe,"AST4"
America/Guatemala,"CST6"
America/Guayaquil,"<-05>5"
America/Guyana,"<-04>4"
America/Halifax,"AST4ADT,M3.2.0,M11.1.0"
America/Havana,"CST5CDT,M3.2.0/0,M11.1.0/1"
America/Hermosillo,"MST7"
America/Indiana/Indianapolis,"EST5EDT,M3.2.0,M11.1.0"
America/Indiana/Knox,"CST6CDT,M3.2.0,M11.1.0"
America/Indiana/Marengo,"EST5EDT,M3.2.0,M11.1.0"
America/Indiana/Petersburg,"EST5EDT,M3.2.0,M11.1.0"
America/Indiana/Tell_City,"CST6CDT,M3.2.0,M11.1.0"
America/Indiana/Vevay,"EST5EDT,M3.2.0,M11.1.0"
America/Indiana/Vincennes,"EST5EDT,M3.2.0,M11.1.0"
America/Indiana/Winamac,"EST5EDT,M3.2.0,M11.1.0"
America/Inuvik,"MST7MDT,M3.2.0,M11.1.0"
America/Iqaluit,"EST5EDT,M3.2.0,M11.1.0"
America/Jamaica,"EST5"
America/Juneau,"AKST9AKDT,M3.2.0,M11.1.0"
America/Kentucky/Louisville,"EST5EDT,M3.2.0,M11.1.0"
America/Kentucky/Monticello,"EST5EDT,M3.2.0,M11.1.0"
America/Kralendijk,"AST4"
America/La_Paz,"<-04>4"
America/Lima,"<-05>5"
America/Los_Angeles,"PST8PDT,M3.2.0,M11.1.0"
America/Lower_Princes,"AST4"
America/Maceio,"<-03>3"
America/Managua,"CST6"
America/Manaus,"<-04>4"
America/Marigot,"AST4"
America/Martinique,"AST4"
America/Matamoros,"CST6CDT,M3.2.0,M11.1.0"
America/Mazatlan,"MST7MDT,M4.1.0,M10.5.0"
America/Menominee,"CST6CDT,M3.2.0,M11.1.0"
America/Merida,"CST6CDT,M4.1.0,M10.5.0"
America/Metlakatla,"AKST9AKDT,M3.2.0,M11.1.0"
America/Mexico_City,"CST6CDT,M4.1.0,M10.5.0"
America/Miquelon,"<-03>3<-02>,M3.2.0,M11.1.0"
America/Moncton,"AST4ADT,M3.2.0,M11.1.0"
America/Monterrey,"CST6CDT,M4.1.0,M10.5.0"
America/Montevideo,"<-03>3"
America/Montreal,"EST5EDT,M3.2.0,M11.1.0"
America/Montserrat,"AST4"
America/Nassau,"EST5EDT,M3.2.0,M11.1.0"
America/New_York,"EST5EDT,M3.2.0,M11.1.0"
America/Nipigon,"EST5EDT,M3.2.0,M11.1.0"
America/Nome,"AKST9AKDT,M3.2.0,M11.1.0"
America/Noronha,"<-02>2"
America/North_Dakota/Beulah,"CST6CDT,M3.2.0,M11.1.0"
America/North_Dakota/Center,"CST6CDT,M3.2.0,M11.1.0"
America/North_Dakota/New_Salem,"CST6CDT,M3.2.0,M11.1.0"
America/Nuuk,"<-03>3<-02>,M3.5.0/-2,M10.5.0/-1"
America/Ojinaga,"MST7MDT,M3.2.0,M11.1.0"
America/Panama,"EST5"
America/Pangnirtung,"EST5EDT,M3.2.0,M11.1.0"
America/Paramaribo,"<-03>3"
America/Phoenix,"MST7"
America/Port-au-Prince,"EST5EDT,M3.2.0,M11.1.0"
America/Port_of_Spain,"AST4"
America/Porto_Velho,"<-04>4"
America/Puerto_Rico,"AST4"
America/Punta_Arenas,"<-03>3"
America/Rainy_River,"CST6CDT,M3.2.0,M11.1.0"
America/Rankin_Inlet,"CST6CDT,M3.2.0,M11.1.0"
America/Recife,"<-03>3"
America/Regina,"CST6"
America/Resolute,"CST6CDT,M3.2.0,M11.1.0"
America/Rio_Branco,"<-05>5"
America/Santarem,"<-03>3"
America/Santiago,"<-04>4<-03>,M9.1.6/24,M4.1.6/24"
America/Santo_Domingo,"AST4"
America/Sao_Paulo,"<-03>3"
America/Scoresbysund,"<-01>1<+00>,M3.5.0/0,M10.5.0/1"
America/Sitka,"AKST9AKDT,M3.2.0,M11.1.0"
America/St_Barthelemy,"AST4"
America/St_Johns,"NST3:30NDT,M3.2.0,M11.1.0"
America/St_Kitts,"AST4"
America/St_Lucia,"AST4"
America/St_Thomas,"AST4"
America/St_Vincent,"AST4"
America/Swift_Current,"CST6"
America/Tegucigalpa,"CST6"
America/Thule,"AST4ADT,M3.2.0,M11.1.0"
America/Thunder_Bay,"EST5EDT,M3.2.0,M11.1.0"
America/Tijuana,"PST8PDT,M3.2.0,M11.1.0"
America/Toronto,"EST5EDT,M3.2.0,M11.1.0"
America/Tortola,"AST4"
America/Vancouver,"PST8PDT,M3.2.0,M11.1.0"
America/Whitehorse,"MST7"
America/Winnipeg,"CST6CDT,M3.2.0,M11.1.0"
America/Yakutat,"AKST9AKDT,M3.2.0,M11.1.0"
America/Yellowknife,"MST7MDT,M3.2.0,M11.1.0"
Antarctica/Casey,"<+11>-11"
Antarctica/Davis,"<+07>-7"
Antarctica/DumontDUrville,"<+10>-10"
Antarctica/Macquarie,"AEST-10AEDT,M10.1.0,M4.1.0/3"
Antarctica/Mawson,"<+05>-5"
Antarctica/McMurdo,"NZST-12NZDT,M9.5.0,M4.1.0/3"
Antarctica/Palmer,"<-03>3"
Antarctica/Rothera,"<-03>3"
Antarctica/Syowa,"<+03>-3"
Antarctica/Troll,"<+00>0<+02>-2,M3.5.0/1,M10.5.0/3"
Antarctica/Vostok,"<+06>-6"
Arctic/Longyearbyen,"CET-1CEST,M3.5.0,M10.5.0/3"
Asia/Aden,"<+03>-3"
Asia/Almaty,"<+06>-6"
Asia/Amman,"EET-2EEST,M2.5.4/24,M10.5.5/1"
Asia/Anadyr,"<+12>-12"
Asia/Aqtau,"<+05>-5"
Asia/Aqtobe,"<+05>-5"
Asia/Ashgabat,"<+05>-5"
Asia/Atyrau,"<+05>-5"
Asia/Baghdad,"<+03>-3"
Asia/Bahrain,"<+03>-3"
Asia/Baku,"<+04>-4"
Asia/Bangkok,"<+07>-7"
Asia/Barnaul,"<+07>-7"
Asia/Beirut,"EET-2EEST,M3.5.0/0,M10.5.0/0"
Asia/Bishkek,"<+06>-6"
Asia/Brunei,"<+08>-8"
Asia/Chita,"<+09>-9"
Asia/Choibalsan,"<+08>-8"
Asia/Colombo,"<+0530>-5:30"
Asia/Damascus,"EET-2EEST,M3.5.5/0,M10.5.5/0"
Asia/Dhaka,"<+06>-6"
Asia/Dili,"<+09>-9"
Asia/Dubai,"<+04>-4"
Asia/Dushanbe,"<+05>-5"
Asia/Famagusta,"EET-2EEST,M3.5.0/3,M10.5.0/4"
Asia/Gaza,"EET-2EEST,M3.4.4/48,M10.5.5/1"
Asia/Hebron,"EET-2EEST,M3.4.4/48,M10.5.5/1"
Asia/Ho_Chi_Minh,"<+07>-7"
Asia/Hong_Kong,"HKT-8"
Asia/Hovd,"<+07>-7"
Asia/Irkutsk,"<+08>-8"
Asia/Jakarta,"WIB-7"
Asia/Jayapura,"WIT-9"
Asia/Jerusalem,"IST-2IDT,M3.4.4/26,M10.5.0"
Asia/Kabul,"<+0430>-4:30"
Asia/Kamchatka,"<+12>-12"
Asia/Karachi,"PKT-5"
Asia/Kathmandu,"<+0545>-5:45"
Asia/Khandyga,"<+09>-9"
Asia/Kolkata,"IST-5:30"
Asia/Krasnoyarsk,"<+07>-7"
Asia/Kuala_Lumpur,"<+08>-8"
Asia/Kuching,"<+08>-8"
Asia/Kuwait,"<+03>-3"
Asia/Macau,"CST-8"
Asia/Magadan,"<+11>-11"
Asia/Makassar,"WITA-8"
Asia/Manila,"PST-8"
Asia/Muscat,"<+04>-4"
Asia/Nicosia,"EET-2EEST,M3.5.0/3,M10.5.0/4"
Asia/Novokuznetsk,"<+07>-7"
Asia/Novosibirsk,"<+07>-7"
Asia/Omsk,"<+06>-6"
Asia/Oral,"<+05>-5"
Asia/Phnom_Penh,"<+07>-7"
Asia/Pontianak,"WIB-7"
Asia/Pyongyang,"KST-9"
Asia/Qatar,"<+03>-3"
Asia/Qyzylorda,"<+05>-5"
Asia/Riyadh,"<+03>-3"
Asia/Sakhalin,"<+11>-11"
Asia/Samarkand,"<+05>-5"
Asia/Seoul,"KST-9"
Asia/Shanghai,"CST-8"
Asia/Singapore,"<+08>-8"
Asia/Srednekolymsk,"<+11>-11"
Asia/Taipei,"CST-8"
Asia/Tashkent,"<+05>-5"
Asia/Tbilisi,"<+04>-4"
Asia/Tehran,"<+0330>-3:30<+0430>,J79/24,J263/24"
Asia/Thimphu,"<+06>-6"
Asia/Tokyo,"JST-9"
Asia/Tomsk,"<+07>-7"
Asia/Ulaanbaatar,"<+08>-8"
Asia/Urumqi,"<+06>-6"
Asia/Ust-Nera,"<+10>-10"
Asia/Vientiane,"<+07>-7"
Asia/Vladivostok,"<+10>-10"
Asia/Yakutsk,"<+09>-9"
Asia/Yangon,"<+0630>-6:30"
Asia/Yekaterinburg,"<+05>-5"
Asia/Yerevan,"<+04>-4"
Atlantic/Azores,"<-01>1<+00>,M3.5.0/0,M10.5.0/1"
Atlantic/Bermuda,"AST4ADT,M3.2.0,M11.1.0"
Atlantic/Canary,"WET0WEST,M3.5.0/1,M10.5.0"
Atlantic/Cape_Verde,"<-01>1"
Atlantic/Faroe,"WET0WEST,M3.5.0/1,M10.5.0"
Atlantic/Madeira,"WET0WEST,M3.5.0/1,M10.5.0"
Atlantic/Reykjavik,"GMT0"
Atlantic/South_Georgia,"<-02>2"
Atlantic/Stanley,"<-03>3"
Atlantic/St_Helena,"GMT0"
Australia/Adelaide,"ACST-9:30ACDT,M10.1.0,M4.1.0/3"
Australia/Brisbane,"AEST-10"
Australia/Broken_Hill,"ACST-9:30ACDT,M10.1.0,M4.1.0/3"
Australia/Currie,"AEST-10AEDT,M10.1.0,M4.1.0/3"
Australia/Darwin,"ACST-9:30"
Australia/Eucla,"<+0845>-8:45"
Australia/Hobart,"AEST-10AEDT,M10.1.0,M4.1.0/3"
Australia/Lindeman,"AEST-10"
Australia/Lord_Howe,"<+1030>-10:30<+11>-11,M10.1.0,M4.1.0"
Australia/Melbourne,"AEST-10AEDT,M10.1.0,M4.1.0/3"
Australia/Perth,"AWST-8"
Australia/Sydney,"AEST-10AEDT,M10.1.0,M4.1.0/3"
Europe/Amsterdam,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Andorra,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Astrakhan,"<+04>-4"
Europe/Athens,"EET-2EEST,M3.5.0/3,M10.5.0/4"
Europe/Belgrade,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Berlin,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Bratislava,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Brussels,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Bucharest,"EET-2EEST,M3.5.0/3,M10.5.0/4"
Europe/Budapest,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Busingen,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Chisinau,"EET-2EEST,M3.5.0,M10.5.0/3"
Europe/Copenhagen,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Dublin,"IST-1GMT0,M10.5.0,M3.5.0/1"
Europe/Gibraltar,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Guernsey,"GMT0BST,M3.5.0/1,M10.5.0"
Europe/Helsinki,"EET-2EEST,M3.5.0/3,M10.5.0/4"
Europe/Isle_of_Man,"GMT0BST,M3.5.0/1,M10.5.0"
Europe/Istanbul,"<+03>-3"
Europe/Jersey,"GMT0BST,M3.5.0/1,M10.5.0"
Europe/Kaliningrad,"EET-2"
Europe/Kiev,"EET-2EEST,M3.5.0/3,M10.5.0/4"
Europe/Kirov,"<+03>-3"
Europe/Lisbon,"WET0WEST,M3.5.0/1,M10.5.0"
Europe/Ljubljana,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/London,"GMT0BST,M3.5.0/1,M10.5.0"
Europe/Luxembourg,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Madrid,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Malta,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Mariehamn,"EET-2EEST,M3.5.0/3,M10.5.0/4"
Europe/Minsk,"<+03>-3"
Europe/Monaco,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Moscow,"MSK-3"
Europe/Oslo,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Paris,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Podgorica,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Prague,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Riga,"EET-2EEST,M3.5.0/3,M10.5.0/4"
Europe/Rome,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Samara,"<+04>-4"
Europe/San_Marino,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Sarajevo,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Saratov,"<+04>-4"
Europe/Simferopol,"MSK-3"
Europe/Skopje,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Sofia,"EET-2EEST,M3.5.0/3,M10.5.0/4"
Europe/Stockholm,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Tallinn,"EET-2EEST,M3.5.0/3,M10.5.0/4"
Europe/Tirane,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Ulyanovsk,"<+04>-4"
Europe/Uzhgorod,"EET-2EEST,M3.5.0/3,M10.5.0/4"
Europe/Vaduz,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Vatican,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Vienna,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Vilnius,"EET-2EEST,M3.5.0/3,M10.5.0/4"
Europe/Volgograd,"<+03>-3"
Europe/Warsaw,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Zagreb,"CET-1CEST,M3.5.0,M10.5.0/3"
Europe/Zaporozhye,"EET-2EEST,M3.5.0/3,M10.5.0/4"
Europe/Zurich,"CET-1CEST,M3.5.0,M10.5.0/3"
Indian/Antananarivo,"EAT-3"
Indian/Chagos,"<+06>-6"
Indian/Christmas,"<+07>-7"
Indian/Cocos,"<+0630>-6:30"
Indian/Comoro,"EAT-3"
Indian/Kerguelen,"<+05>-5"
Indian/Mahe,"<+04>-4"
Indian/Maldives,"<+05>-5"
Indian/Mauritius,"<+04>-4"
Indian/Mayotte,"EAT-3"
Indian/Reunion,"<+04>-4"
Pacific/Apia,"<+13>-13"
Pacific/Auckland,"NZST-12NZDT,M9.5.0,M4.1.0/3"
Pacific/Bougainville,"<+11>-11"
Pacific/Chatham,"<+1245>-12:45<+1345>,M9.5.0/2:45,M4.1.0/3:45"
Pacific/Chuuk,"<+10>-10"
Pacific/Easter,"<-06>6<-05>,M9.1.6/22,M4.1.6/22"
Pacific/Efate,"<+11>-11"
Pacific/Enderbury,"<+13>-13"
Pacific/Fakaofo,"<+13>-13"
Pacific/Fiji,"<+12>-12<+13>,M11.2.0,M1.2.3/99"
Pacific/Funafuti,"<+12>-12"
Pacific/Galapagos,"<-06>6"
Pacific/Gambier,"<-09>9"
Pacific/Guadalcanal,"<+11>-11"
Pacific/Guam,"ChST-10"
Pacific/Honolulu,"HST10"
Pacific/Kiritimati,"<+14>-14"
Pacific/Kosrae,"<+11>-11"
Pacific/Kwajalein,"<+12>-12"
Pacific/Majuro,"<+12>-12"
Pacific/Marquesas,"<-0930>9:30"
Pacific/Midway,"SST11"
Pacific/Nauru,"<+12>-12"
Pacific/Niue,"<-11>11"
Pacific/Norfolk,"<+11>-11<+12>,M10.1.0,M4.1.0/3"
Pacific/Noumea,"<+11>-11"
Pacific/Pago_Pago,"SST11"
Pacific/Palau,"<+09>-9"
Pacific/Pitcairn,"<-08>8"
Pacific/Pohnpei,"<+11>-11"
Pacific/Port_Moresby,"<+10>-10"
Pacific/Rarotonga,"<-10>10"
Pacific/Saipan,"ChST-10"
Pacific/Tahiti,"<-10>10"
Pacific/Tarawa,"<+12>-12"
Pacific/Tongatapu,"<+13>-13"
Pacific/Wake,"<+12>-12"
Pacific/Wallis,"<+12>-12"
Etc/GMT,"GMT0"
Etc/GMT-0,"GMT0"
Etc/GMT-1,"<+01>-1"
Etc/GMT-2,"<+02>-2"
Etc/GMT-3,"<+03>-3"
Etc/GMT-4,"<+04>-4"
Etc/GMT-5,"<+05>-5"
Etc/GMT-6,"<+06>-6"
Etc/GMT-7,"<+07>-7"
Etc/GMT-8,"<+08>-8"
Etc/GMT-9,"<+09>-9"
Etc/GMT-10,"<+10>-10"
Etc/GMT-11,"<+11>-11"
Etc/GMT-12,"<+12>-12"
Etc/GMT-13,"<+13>-13"
Etc/GMT-14,"<+14>-14"
Etc/GMT0,"GMT0"
Etc/GMT+0,"GMT0"
Etc/GMT+1,"<-01>1"
Etc/GMT+2,"<-02>2"
Etc/GMT+3,"<-03>3"
Etc/GMT+4,"<-04>4"
Etc/GMT+5,"<-05>5"
Etc/GMT+6,"<-06>6"
Etc/GMT+7,"<-07>7"
Etc/GMT+8,"<-08>8"
Etc/GMT+9,"<-09>9"
Etc/GMT+10,"<-10>10"
Etc/GMT+11,"<-11>11"
Etc/GMT+12,"<-12>12"
Etc/UCT,"UTC0"
Etc/UTC,"UTC0"
Etc/Greenwich,"GMT0"
Etc/Universal,"UTC0"
Etc/Zulu,"UTC0"