Unterabschnitte

Das Lcd-Paket

Dieses Paket wurde ursprünglich von Nico Wallmeier zusammengestellt und später dem eisfair-Team übergeben.

Die Einleitung

Dieses Paket ermöglicht es, ein an den Server angeschlossenes LC-Display anzusteuern. Das hat den Vorteil, dass Informationen angezeigt werden können, auch wenn kein Monitor am Server angeschlossen ist.

Zum Einsatz kommt die Software lcd4linux.

Die Installation

Das Lcd-Paket wird über das Setup-Menü installiert. War das Paket noch nicht installiert, wird direkt der Konfigurations-Editor gestartet. Anderenfalls wird die vorhandene Konfiguration, sofern notwendig, konvertiert. Nach Beendigung dieses Schrittes werden die nativen Konfigurationsdateien für lcd4linux generiert und alle benötigten Programme gestartet.

Das Menü im Setup-Programm

Das Menü im Setup-Programm ist wie folgt aufgebaut:

Die Menüpunkte dürften selbsterklärend sein, da sie keinerlei weitere Eingabe erwarten.

Die Änderung der Konfiguration

Die LCD-Konfiguration kann über die beiden Menüpunkte 'Edit main configuration' bzw. 'Edit widgets' geändert werden. Nachdem der Editor beendet wurde wird abgefragt, ob die Konfiguration aktiviert werden soll. Wird dies bestätigt, werden die modifizierten Änderungen umgehend wirksam gemacht.

Die Konfigurationsdatei

In der Konfigurationsdatei sind folgende Parameter vorhanden. Für eine Bearbeitung von Hand sie diese unter /etc/config.d/lcd bzw. /etc/config.d/lcd-widgets zu finden.

Die Parameter

In den folgenden Abschnitten werden die Konfigurationsparameter beschrieben.

Hauptkonfiguration

START_LCD

Für die Aktivierung der Lcd-Ansteuerung muss dieser Parameter lediglich auf den Wert 'yes' gestellt werden. Die Einstellung 'no' deaktiviert die Ansteuerung.

Gültige Werte: yes, no

LCD_TYPE

Hier wird der Typ sowie das Modell des angeschlossenen LCDs eingestellt. Dabei wird Typ und Modell durch ':' getrennt, bspw. 'HD44780:Soekris'. Die möglichen Werte dieser Variable sind dabei wie folgt:

LCD_PORT

Die IO-Adresse des LPT-Ports oder das serielle Device, an welches das Display angeschlossen wurde.

Gültige Werte: '0x378', '0x278', '0x3bc', '/dev/ttySx', '/dev/parportx'

LCD_WIRING

Legt die Verdrahtung bei HD44780-kompatiblen Displays fest. Für genauere Informationen siehe Abschnitt Anschlussbelegung HD44780-kompatibler Displays.

Gültige Werte: 'fli4l', 'winamp'

LCD_SPEED

Bestimmt die Geschwindigkeit der seriellen Schnittstelle bei Cwlinux, MatrixOrbital, CrystalFontz-Displays und MilfordInstruments.

Gültige Werte:

LCD_CONTRAST

Legt den Display-Kontrast bei Matrix Orbital und CrystalFontz-Displays fest. Bei MatrixOrbital sind Werte zwischen 0 (hell) und 256 (dunkel) möglich, LCD2USB wird mit 0 (dunkel) bis 255 (hell) konfiguriert. Der Default-Wert ist 160. Bei CrystalFontz hingegen sind Werte zwischen 0 (hell) und 100 (dunkel) möglich.

Gültige Werte: Zahl

LCD_BACKLIGHT

Legt die Stärke der Hintergrundbeleuchtung von seriellen CrystalFontz und Cwlinux Displays fest. Für Crystalfonts Displays sind Werte zwischen 0 (aus) und 100 (voll ein) möglich, für Cwlinux zwischen 0 (aus) und 8 (voll ein) und für LCD2USB zwischen 0 (aus) und 255 (voll ein). Der Default-Wert ist 80.

Gültige Werte: Zahl

LCD_COLS

Anzahl der Zeichen pro Zeile. Typische Werte sind 16, 20, 24, 32 und 40.

Gültige Werte: Zahl

LCD_ROWS

Anzahl der physikalischen Zeilen des Displays. Typische Werte sind 1, 2 und 4.

Gültige Werte: Zahl

LCD_LAYOUT_N

Die Anzahl der zu konfigurierenden Layouts. In der momentanen Version von lcd4linux wird nur ein aktives Layout unterstützt.

Gültige Werte: Zahl

LCD_LAYOUT_x_NAME

Der Name das aktuellen Layouts. Unter diesem Namen wird das Layout in der nativen lcd4linux Konfiguration eingebunden.

Gültige Werte: Eindeutiger Name

LCD_LAYOUT_x_ACTIVE

Soll das aktuelle Layout aktiv sein oder nicht. In der momentanen Version von lcd4linux wird nur ein aktives Layout unterstützt. Wird mehr als ein Layout aktiviert, so wird das letzte aktive Layout eingebunden.

Gültige Werte: yes/no

LCD_LAYOUT_x_ELEMENT_N

Anzahl der in diesem Layout enthaltenen Elemente resp. Widgets.

Gültige Werte: Zahl

LCD_LAYOUT_x_ELEMENT_x_NAME

Name des einzubindenden Widgets. Dieser Name muss einem der konfigurierten Widgets entsprechen und als Prefix durch : abgetrennt den Typ des Widgets enthalten.

Gültige Werte: [Text|Bar|Icon]:<String>

LCD_LAYOUT_x_ELEMENT_x_ACTIVE

Soll das aktuelle Element resp. Widget eingebunden werden oder nicht.

Gültige Werte: yes/no

LCD_LAYOUT_x_ELEMENT_x_ROW

Angabe der Zeile, auf welcher das Widget dargestellt werden soll.

Gültige Werte: Zahl

LCD_LAYOUT_x_ELEMENT_x_COL

Angabe der Spalte, in welcher das Widget dargestellt werden soll.

Gültige Werte: Zahl

LCD_USE_SHUTDOWN_LAYOUT

Hier wird ein spezielles Layout aktiviert, welches beim Shutdown des Servers zur Anwendung gebracht wird. Dieses Layout enthält keine Ausgaben sowie die geringst möglichen Werte für Kontrast sowie Hintergrundbeleuchtung.

Gültige Werte: yes/no

TODO: Update/Refactor/Check the following sections

LCD_ROWS_N

Anzahl der darzustellenden Zeilen. Dieser Wert muss größer oder gleich LCD_ROWS sein. Ist dieser Wert größer als LCD_ROWS werden die Zeilen durchgescrollt - mit LCD_SCROLL und LCD_TURN kann das Verhalten dazu beeinflusst werden.

Gültige Werte: Zahl

LCD_ROWS_x

Diese Variable bestimmt, was in der x-ten Zeile des Displays dargestellt werden soll. Dafür bietet das lcd4linux-Programm einige vordefinierte Werte, als auch die Möglichkeit eigene Informationen anzeigen zu lassen.

Der anzuzeigende Text kann die folgenden Direktiven beinhalten, die durch die entsprechenden Werte ersetzt werden oder Balken erzeugen:

Als Tokens sind definiert:

Für die folgenden Tokens werden Daten vom Imond abgefragt: Für die folgenden Tokens werden Daten vom Telmond abgefragt:

LCD_SCROLL

Wenn LCD_ROWS_N einen größeren Wert als LCD_ROWS hat, werden die Zeilen durchgescrollt. LCD_SCROLL gibt dabei an, wieviele Zeilen auf einmal gescrollt werden sollen. Wird ein Vielfaches von LCD_ROWS angegeben, wird das komplette Display gewechselt.

Gültige Werte: Zahl

LCD_TURN

Gibt an, wieviele Millisekunden zwischen den Scroll-Ereignissen liegen sollen.

Gültige Werte: Zahl

LCD_TEXTUPDATE

Zeit in Millisekunden zwischen Textaktualisierungen. Text braucht nicht so oft aktualisiert werden wie die Balken.

Gültige Werte: Zahl

LCD_BARUPDATE

Zeit in Millisekunden zwischen Balken-Aktualisierungen.

Gültige Werte: Zahl

LCD_ICONUPDATE

Zeit in Millisekunden zwischen Iconaktualisierungen.

Gültige Werte: Zahl

LCD_CMDS_N

Anzahl der Befehle dessen Ergebnis auf dem LC-Display angezeigt werden sollen.

Gültige Werte: Zahl < 10

LCD_CMDS_x_CMD

Befehl der ausgeführt werden soll. Dieser muss sich in einem der folgenden Pfade /usr/local/bin, /usr/bin oder /bin befinden. Mittels $X1 ...$X9 können auf die Ergebnisse der Befehle 1 ...9 im Environment zugegriffen werden.

LCD_CMDS_x_DELAY

Zeit in Sekunden zwischen Aktualisierungen.

Gültige Werte: Zahl

LCD_CMDS_x_MIN

Minimaler Wert für eine Balkendarstellung.

Gültige Werte: Zahl

LCD_CMDS_x_MAX

Maximaler Wert für eine Balkendarstellung.

Gültige Werte: Zahl

LCD_MAILBOX_N

Anzahl der Mailboxen bzw. Newsgroups die abgefragt werden sollen.

Gültige Werte: Zahl < 10

LCD_MAILBOX_x_CMD

Mögliche Werte sind:

LCD_MAILBOX_x_DELAY

Zeit in Sekunden zwischen Aktualisierungen.

Gültige Werte: Zahl

Die folgenden Variablen werden nur ausgewertet, wenn ein Token benutzt wird, der Daten vom imond auswertet.

LCD_ICON_N

Anzahl der benutzerdefinierten (animierten) Icons. Zu Berücksichtigen ist, dass jedes Icon, welches hier definiert wird, nicht mehr die Balken zur Verfügung steht. Die meisten Display können nur 8 userdefinierbare Zeichen darstellen und ein Doppelbalken benötigt bis zu 5 dieser Zeichen. Deshalb sollten nicht mehr als 3 Icons parallel mit Balken benutzt werden.

Gültige Werte: Zahl < 10

LCD_ICON_X_ROW_Y

Ein Icon hat die Größe wie ein Zeichen - also 5 Spalten und 8 Zeilen. Das Icon wird durch zwei Zeichen definiert: Um animierte Icons zu erzeugen, werden die weiteren Bilder einfach mittels dem Zeichen '|' (senkrechter Strich) aneinandergefügt.

LCD_IMOND_HOST

Der Host auf dem imond läuft. Somit ist es auch möglich, beispielsweise Daten eines fli4l-Routers auf dem Display darzustellen. Wenn das Routing-Paket für eisfair auf dem Rechner läuft, lautet der Eintrag 'localhost'.

Gültige Werte: DNS-Name, IP-Adresse oder localhost

LCD_IMOND_PORT

Der TCP-Port auf dem imond horcht - im Normalfall ist dies der Port 5000.

Gültige Werte: Zahl

LCD_IMOND_PASS

Wird ein entfernter Rechner überwacht und ist dort IMOND_PASS gesetzt, muss dieses hier angegeben werden.

LCD_CHANNELS_N

Anzahl der Imond-Channels, die überwacht werden sollen.

Gültige Werte: Zahl < 10

LCD_CHANNELS_x_DEV

Hier muss der zu überwachende Imond-Channel angegeben werden - siehe dazu Kapitel 8.1 der fli4l-Dokumentation. Mögliche Werte sind:

LCD_CHANNELS_x_MAXIN

Mit wieviel kBits können Daten von dem Kanal empfangen werden.

Gültige Werte: Zahl

LCD_CHANNELS_x_MAXOUT

Mit wieviel kBits können Daten über den Kanal gesendet werden.

Gültige Werte: Zahl

LCD_TELMOND_HOST

Der Host auf dem telmond läuft. Somit ist es auch möglich, den letzten Anrufer auf dem Display anzeigen zu lassen.

Gültige Werte: DNS-Name, IP-Adresse oder localhost

LCD_TELMOND_PORT

Der TCP-Port auf dem telmond horcht - im Normalfall ist dies der Port 5001.

Gültige Werte: Zahl

LCD_TELMOND_PHONEBOOK

Hier kann eine Datei angegeben werden, die als Telefonbuch fungiert. Wird in dieser Datei die gesuchte Telefonnummer oder MSN gefunden, wird statt der Nummer der gefundene Namen angezeigt. Der Aufbau der Datei ist der selbe, der bei fli4l verwendet wird. Pro Zeile kann eine Telefonnummer aufgelöst werden: [Nummer]=[Name]

Die Widgetkonfiguration

START_LCD

Für die Aktivierung der Widgetkonfiguration muss diese Variable lediglich auf den Wert 'yes' gestellt werden.

Gültige Werte: yes, no

LCD_TEXT_WIDGET_N

Definiert die Anzahl der zu konfigurierenden Textwidgets.

Gültige Werte: Zahl

LCD_TEXT_WIDGET_x_NAME

Ein eindeutiger Name für dieses Widget. Er darf keine Leerzeichen enthalten.

Gültige Werte: String ohne Leerzeichen

LCD_TEXT_WIDGET_x_ACTIVE

De-/Aktivieren dieses Widgets.

Gültige Werte: yes/no

LCD_TEXT_WIDGET_x_EXP

Was soll dargestellt werden? Dieser Ausdruck wird ausgewertet und dessen Ergebnis angezeigt. Siehe dazu http://ssl.bulix.org/projects/lcd4linux/

LCD_TEXT_WIDGET_x_PREFIX

Der hier angegebene String wird als Prefix vor den aktuellen Wert geschrieben. Diese Variable ist optional.

LCD_TEXT_WIDGET_x_POSTFIX

Der hier angegebene String wird nach dem aktuellen Wert geschrieben. Diese Variable ist optional.

LCD_TEXT_WIDGET_x_WIDTH

Länge des gesamten Textelements (inklusive Prefix und Postfix!)

Gültige Werte: Zahl

LCD_TEXT_WIDGET_x_PRECISION

Maximalwert der Anzahl der Kommastellen

Wenn der 'precision'-Parameter weggelassen wird, behandelt LCD4Linux das Ergebnis des Ausdrucks als Zeichenkette und zeigt sie auch so an.

Wenn eine Präzision angegeben wird, wird der Wert in eine Gleitkommazahl umgewandelt und mit der angegebenen Anzahl von Kommastellen ausgegeben. Wenn die Zahl nicht in den verfügbaren Platz passt (welcher mit 'width' - length(prefix) - length(postfix) angegeben wird), werden Kommastellen von rechts abgeschnitten, bis genug Platz vorhanden ist. Wenn die letzte Kommastelle abgetrennt wurde, wird auch der Dezimalpunkt weggelassen. Wenn der Wert nun immer noch nicht passt, wird er durch '*' (Asterisk) ersetzt.

Es besteht also ein grosser Unterschied zwischen 'precision 0' und überhaupt keiner Präzision!

Gültige Werte: Zahl oder leer

LCD_TEXT_WIDGET_x_ALIGN

Wenn der 'Align'-Parameter angegeben wird, wird nur der aktuelle Wert ausgerichtet. Das Prefix ist immer linksbündig und das Postfix immer rechtsbündig! Verwendet man eine Laufschrift ('Marquee'), so werden Prefix, der aktuelle Wert und das Postfix einfach verkettet, und die resultierende Zeichenkette wird zirkular angezeigt. Das heisst, alle entsprechend dem Wert aus LCD_TEXT_WIDGET_x_SPEED msec ein Zeichen vorrückend.

Gültige Werte: 'Left' (Default), 'Center', 'Right' oder 'Marquee'.

LCD_TEXT_WIDGET_x_SPEED

Laufschrift-Scroll-Intervall (msec), Standard ist 500msec

Gültige Werte: Zahl

LCD_TEXT_WIDGET_x_UPDATE

Update-Intervall (msec), Standard ist 500msec.

Gültige Werte: Zahl

LCD_BAR_WIDGET_N

Definiert die Anzahl der zu konfigurierenden Balkenwidgets.

LCD4Linux versucht, Balken so gut wie möglich zu behandeln. Es unterstützt vertikale, horizontale und gesplittete Balken (zwei unabhängige Balken in einer Zeile), alle Balkentypen können gleichzeitig verwendet werden.

Gültige Werte: Zahl

LCD_BAR_WIDGET_x_NAME

Ein eindeutiger Name für dieses Widget. Er darf keine Leerzeichen enthalten.

Gültige Werte: String ohne Leerzeichen

LCD_BAR_WIDGET_x_ACTIVE

De-/Aktivieren dieses Widgets.

Gültige Werte: yes/no

LCD_BAR_WIDGET_x_EXP

Was soll dargestellt werden? Dieser Ausdruck wird ausgewertet und das Ergebnis angezeigt. Siehe dazu http://ssl.bulix.org/projects/lcd4linux/

LCD_BAR_WIDGET_x_EXP2

Falls ein Doppelbalken dargestellt werden soll, wird mit dieser Variablen der zweite Balken bestimmt. Siehe LCD_BAR_WIDGET_x_EXP.

LCD_BAR_WIDGET_x_LENGTH

Länge des gesamten Balkenelements

Gültige Werte: Zahl

LCD_BAR_WIDGET_x_MIN

scale: Wert mit dem der Balken startet

Gewöhnlich skalieren Balken automatisch. Das heisst sie starten bei einem Wert von 0 (Null), merken sich den Maximalwert und skalieren automatisch bis zum Maximum. Manchmal ist aber ein anderes Verhalten erwünscht (z.B. bei Temperaturen). In diesem Fall muss nur der Minimal- und der Maximalwert mit den Parametern 'min' bzw. 'max' angegeben werden.

Gültige Werte: Zahl oder leer

LCD_BAR_WIDGET_x_MAX

scale: Wert mit dem der Balken endet

Gewöhnlich skalieren Balken automatisch. Das heisst sie starten bei einem Wert von 0 (Null), merken sich den Maximalwert und skalieren automatisch bis zum Maximum. Manchmal ist aber ein anderes Verhalten erwünscht (z.B. bei Temperaturen). In diesem Fall muss nur der Minimal- und der Maximalwert mit den Parametern 'min' bzw. 'max' angegeben werden.

Gültige Werte: Zahl oder leer

LCD_BAR_WIDGET_x_DIRECTION

Mögliche Werte: - 'North' (von unten nach oben) - 'East' (von links nach rechts, das ist der Standard) - 'South' (south: von oben nach unten) - 'West' (von rechts nach links)

LCD_BAR_WIDGET_x_STYLE

Default Darstellung oder 'Hollow' (with a frame).

Gültige Werte: leer oder 'Hollow'

LCD_BAR_WIDGET_x_UPDATE

Update-Intervall (msec), Standard ist 500msec.

Gültige Werte: Zahl

LCD_ICON_WIDGET_N

Definiert die Anzahl der zu konfigurierenden Iconwidgets.

Das Icon-Widget wird verwendet, um benutzerdefinierte Zeichen ('Icons') anzuzeigen. Icons können nur verwendet werden, wenn das Display benutzerdefinierte Zeichen unterstützt (was die meisten Displays tun), oder das Display ein grafisches Display ist (z.B. T6963).

Wenn aus irgendeinem Grund das Icon nicht angezeigt werden kann, wird an dessen Stelle ein Asterisk ('*') angezeigt.

Gültige Werte: Zahl

LCD_ICON_WIDGET_x_NAME

Ein eindeutiger Name für dieses Widget. Er darf keine Leerzeichen enthalten.

Gültige Werte: String ohne Leerzeichen

LCD_ICON_WIDGET_x_ACTIVE

De-/Aktivieren dieses Widgets.

Gültige Werte: yes/no

LCD_ICON_WIDGET_x_ROW1-8

Ein Icon hat die Größe wie ein Zeichen - also 5 Spalten und 8 Zeilen. Das Icon wird durch zwei Zeichen definiert:

- '.' (Punkt) für Pixel nicht gesetzt - '*' (Stern) für Pixel gesetzt

Um animierte Icons zu erzeugen, werden die weiteren Bilder einfach mittels dem Pipe-Zeichen '|' aneinandergefügt.

LCD_ICON_WIDGET_x_VISIBLE

Ausdruck, welcher die Sichtbarkeit überwacht (für Blink-Effekte)

LCD_ICON_WIDGET_x_SPEED

Update-Intervall (msec) bei animierten Icons, Standard ist 500msec.

Gültige Werte: Zahl

Die Anschlussbelegung eines LCD-Moduls am Parallelport

HD44780 kompatible Displays

fli4l/eisfair Verdrahtung

Wenn LCD_WIRING='fli4l' gesetzt wurde, muss das Display wie folgt angeschlossen werden.

   13 ____________________________ 1 Draufsicht auf den
      \ o o o o o o o o o o o o o/   Parallelport, Rueck-
       \ o o o o o o o o o o o o/    seite PC
     25 ------------------------ 14

Der Anschluss eines LCD-Moduls an den Router wird folgendermaßen aufgetrennt:

 Parallelport-Pin   Beschreibung   LCD-Modul    LCD-Pin
         18-25      GND                             --|
                    GND                          1  --|- Bruecke
                    R/W                          5  --|
                    +5V                          2
             1      STROBE         EN(1)         6
             2      D0             D0            7
             3      D1             D1            8
             4      D2             D2            9
             5      D3             D3           10
             6      D4             D4           11
             7      D5             D5           12
             8      D6             D6           13
             9      D7             D7           14
            14      Autofeed       RS            4

  Bei Display mit Hintergrundbeleuchtung:
                                   HG+          15 (mit Vorwiderstand ca. 20Ohm)
                                   GND          16

Handelt es sich um ein 4x40er Display, muss EN(2) des Displays mit SELECT IN (Pin 17) des Parallel-Ports verbunden werden.

An Pin 3 kann der Abgriff eines >= 20kOhm Potis zwischen +5V und GND geschaltet werden. Damit kann der Kontrast des Displays reguliert werden. Bei meinem Display (Conrad) liegt Pin 3 direkt an Masse und man kann alles einwandfrei erkennen.

  +5V ---+
         /
         \ <--+
         /    |
         \    |
  GND ---+    +--- VL (Pin 3 - driver input)

winamp Verdrahtung

Ist hingegen LCD_WIRING='winamp' gesetzt worden, ergeben sich die folgenden Änderungen zur anderen Verdrahtung:

M50530 kompatible Displays

LCD-Pin LCD-Modul Paralellport-Pin Beschreibung Sonstiges
1 Shield     GND
2 DB0 2 DB0  
3 DB1 3 DB1  
4 DB2 4 DB2  
5 DB3 5 DB3  
6 DB4 6 DB4  
7 DB5 7 DB5  
8 DB6 8 DB6  
9 DB7 9 DB7  
10 ex 1 STROBE  
11 RW     GND
12 IOC2 14 AUTOFEED  
13 IOC1 17 SELECT  
14 VFF      10V (Display Kontrast)
15 5V     5V
16 GND 18-25 GND GND

Nützliche Hilfsskripte

In diesem Abschnitt werden mitgelieferte Skripte vorgestellt, um die Anzeigemöglichkeiten von lcd4linux zu erweitern. Diese Skripte können mit dem exec-Plugin angesprochen werden. Das exec-Plugin erwartet zwei Parameter: Das auszuführende Kommando und das Intervall, mit welchem dieses Kommando ausgeführt werden soll.

hd.sh

Im Verzeichnis /usr/local/bin befindet sich ein Skript hd.sh, welches die Ausgabe von df geeignet auswertet und aufbereitet. Das Skript erwartet zwei Parameter:
  1. Die Partition - z.B. hda1
  2. Die Info, die ausgegeben werden soll. Mögliche Werte sind:

Es ist zu beachten, dass die Angabe der Partition in der Form erfolgt, wie diese ab dem Verzeichnis /dev/ aufgelöst wird. Bei eisfair-2 wird bspw. die Partition /data wie folgt eingebunden:

eis2 # df -h
Filesystem            Size  Used Avail Use% Mounted on
...
/dev/mapper/vg-data   455G  130G  303G  30% /data

Um den verfügbaren Plattenplatz dieser Partition abzufragen, muss der Aufruf von hd.sh im entsprechenden Feld LCD_TEXT_WIDGET_x_EXP wie folgt konfiguriert werden:

exec('hd.sh mapper/vg-data f', 60000)

Damit wird alle 60s der verfügbare Plattenplatz aktualisiert.

mpd2lcd

Stammt von Alexander Dahl.

Beim Aufruf verlangt das Skript drei Parameter: als erstes, welche Info erwünscht ist ('t' für title oder 'a' für artist), dann die Länge der möglichen Zeile und als drittes 'l' für linksbündig oder 'z' für zentriert Bei mehr, weniger oder falschen Parametern wird Fehlermeldung zurückgegeben. Sonst kommt eben Title oder Artist auf die Länge formatiert zurück.

Beispiel für zentrierte Ausgabe des Titels auf eine Länge von 24 Zeichen:
mpd2lcd t 24 z

eis 2017-05-03