Cloud API

Einige unserer Nixie-Uhren lassen sich programmgesteuert über eine REST API steuern. Diese Funktion bietet Ihnen die Möglichkeit, eigene Zahlen anzuzeigen oder die Helligkeit der Uhr nach Ihren Wünschen zu steuern. Die einzelnen API-Aufrufe werden an unseren Cloud-Server gesendet, der mit der Uhr kommuniziert. Die Uhr muss mit dem Internet verbunden sein, damit die API-Aufrufe ordnungsgemäß funktionieren.

Authentifizierung

Für die Kommunikation mit unseren Uhren müssen Sie die folgenden Variablen kennen bzw. beschaffen:

  • EMAIL, PASSWORD – verwenden Sie dieselben Zugangsdaten wie für unsere Web- oder Mobile-App
  • ACCESS_TOKEN – diesen erhalten Sie nach erfolgreicher Anmeldung. Jeder weitere API-Aufruf muss mit diesem Token autorisiert werden. Das Sitzungstoken ist 1 Jahr gültig.
  • CLOCK_ID – siehe die Tabelle unten im Abschnitt Uhren-IDs.
  • API URL – https://api.daliborfarny.com/

Uhren-IDs

Jedes Uhrenmodell hat eine bestimmte Produkt-ID, Zen-Uhren die 2, die 4-Röhren-Puri die 6 usw. Es handelt sich nicht um eine Seriennummer, die für jede Uhr eindeutig ist.

Name der Uhr Uhren-ID
Zen Nixie Clock 2
Puri Nixie Clock (4 Röhren) 6
Puri Nixie Clock (6 Röhren) 15
Nixie Machine II 3
Nixie Machine III 9
NX.2 4

Abrufen des ACCESS_TOKEN

Verwenden Sie Ihre EMAIL und Ihr PASSWORD, um das ACCESS_TOKEN zu erhalten. Ersetzen Sie EMAIL und PASSWORD durch die tatsächlichen Zugangsdaten, die Sie auf https://user.daliborfarny.com/ oder in der mobilen App verwenden.

Spezifikation des API-Aufrufs:

  • Anfragetyp – POST
  • Endpunkt-URL – /oauth/token
  • Anfrage-Body – client_id=3rdparty&client_secret=ws7TQHXp5W6444t4&grant_type=password&username=EMAIL&password=PASSWORD

Beispiel für einen API-Aufruf mit curl:

$ curl -X POST https://api.daliborfarny.com/oauth/token -d "client_id=3rdparty&client_secret=ws7TQHXp5W6444t4&grant_type=password&username=EMAIL&password=PASSWORD"

Der Server antwortet mit einem JSON, das das access_token enthält:

{
"ok":true,
"status":200,
"data":{
        "access_token":"62dd89362a635ff8692a590456e8a8118e61d9902",
        "expires_in":31536000,
        "token_type":"Bearer",
        "scope":null,
        "refresh_token":"ef687d958f83ad13dff915d89f54ab2d8322193a"
        }
}

Sie können diesen Schritt manuell über die Befehlszeile testen:

Abrufen einer Liste Ihrer Uhren

Der nächste Schritt besteht darin, eine Liste der Uhren abzurufen, die mit Ihrem Konto gekoppelt sind. Die Kopplung erfolgt automatisch, während die Uhr mit dem Internet verbunden wird. Ersetzen Sie ACCESS_TOKEN durch das Zugriffstoken, das Sie im vorherigen Schritt erhalten haben.

Spezifikation des API-Aufrufs:

  • Anfragetyp – GET
  • Endpunkt-URL – /v1/devices?client_id=3rdparty&access_token=ACCESS_TOKEN&client_secret=ws7TQHXp5W6444t4

Beispiel für einen API-Aufruf mit curl:

$ curl -X GET "https://api.daliborfarny.com/v1/devices?client_id=3rdparty&access_token=62dd89362a635ff8692a590456e8a8118e61d9902&client_secret=ws7TQHXp5W6444t4"

Die vom Cloud-Server zurückgegebene JSON-Antwort:

{
   "ok":true,
   "status":200,
   "data":[
      {
         "id":"2d001c110c47363463353230",
         "name":"Puri Nixie Clock #51",
         "product_name":"Puri-4 Nixie Clock",
         "img_url":"https:\/\/www.daliborfarny.com\/wp-content\/uploads\/2018\/09\/LKJ4467_1024.jpg",
         "id_product":"6"
      },
      {
         "id":"320029000147373336323320",
         "name":"Puri-4 Nixie Clock #95",
         "product_name":"Puri-4 Nixie Clock",
         "img_url":"https:\/\/www.daliborfarny.com\/wp-content\/uploads\/2018\/09\/LKJ4467_1024.jpg",
         "id_product":"6"
      }
   ]
}

Überprüfen der Online-Verbindung der Uhr mit der Cloud

Nun müssen wir prüfen, ob die Uhr mit der Cloud verbunden ist und wir mit ihr „sprechen“ können.

Spezifikation des API-Aufrufs:

  • Anfragetyp – GET
  • Endpunkt-URL – /v1/devices/CLOCK_ID/online?client_id=3rdparty&access_token=ACCESS_TOKEN&client_secret=ws7TQHXp5W6444t4

Beispiel für einen API-Aufruf mit curl:

$ curl -X GET "https://api.daliborfarny.com/v1/devices/320029000147373336323320/online?client_id=3rdparty&access_token=62dd89362a635ff8692a590456e8a8118e61d9902&client_secret=ws7TQHXp5W6444t4"

Die vom Cloud-Server zurückgegebene JSON-Antwort:

{
   "ok":true,
   "status":200,
   "data":{
      "value":true
   }
}

Auslesen der Konfigurationsparameter

Alle Konfigurationsparameter sind in der Uhr selbst gespeichert. Wir können sie auslesen, indem wir API-Aufrufe gemäß der folgenden Spezifikation senden. PARAMETER ist durch den tatsächlichen Namen des Parameters zu ersetzen, den wir aus der Uhr auslesen möchten.

Spezifikation des API-Aufrufs:

  • Anfragetyp – GET
  • Endpunkt-URL – /v1/devices/CLOCK_ID/PARAMETER?client_id=3rdparty&access_token=ACCESS_TOKEN&client_secret=ws7TQHXp5W6444t4

Beispiel für einen API-Aufruf mit curl, um den Wert des Parameters „transition“ abzurufen:

$ curl -X GET "https://api.daliborfarny.com/v1/devices/320029000147373336323320/transition?client_id=3rdparty&access_token=62dd89362a635ff8692a590456e8a8118e61d9902&client_secret=ws7TQHXp5W6444t4"

Die vom Cloud-Server zurückgegebene JSON-Antwort, der Parameterwert ist in diesem Beispiel „2“.

{
   "ok":true,
   "status":200,
   "data":{
      "value":2
   }
}

Senden der Konfigurationsparameter

Alle Konfigurationsparameter sind in der Uhr selbst gespeichert. Um einen bestimmten Parameter zu ändern, müssen wir einen API-Aufruf wie unten beschrieben ausführen. PARAMETER ist durch den tatsächlichen Namen des Parameters zu ersetzen, den wir in der Uhr ändern möchten. VALUE ist der tatsächliche Wert, auf den wir PARAMETER setzen möchten.

Spezifikation des API-Aufrufs:

  • Anfragetyp – POST
  • Endpunkt-URL – /v1/devices/CLOCK_ID/PARAMETER
  • Anfrage-Body – access_token=ACCESS_TOKEN&arg=VALUE&client_secret=ws7TQHXp5W6444t4&client_id=3rdparty

Beispiel für einen API-Aufruf mit curl – auf diese Weise können wir den Parameter „transition“ auf den Wert 3 setzen.

$ curl -X POST "https://api.daliborfarny.com/v1/devices/320029000147373336323320/transition" -d "access_token=62dd89362a635ff8692a590456e8a8118e61d9902&arg=3&client_id=3rdparty&client_secret=ws7TQHXp5W6444t4"

Die vom Cloud-Server zurückgegebene JSON-Antwort:

{
   "ok":true,
   "status":200,
   "data":{
      "value":2
   }
}

Konfigurationsparameter

Parameter Zen NixieMachineII NixieMachineIII NX2 PURI4 PURI6 Parameter-Schlüsselwort Lesen/Schreiben
Uhren-ID 2 3 9 4 6 15
Zulässige Werte
Zeitformat 12, 24 format RW
Führende Null 1, 2 leadingzero RW
Sommerzeit 1, 2, 3 dst RW
Zeitzone timezone RW
Anzeige des Datums 1, 2, 3, 4, 5 datedisplay RW
Ziffernübergang 1, 2, 3, 4 transition RW
Regenerierungsintervall der Kathoden 1, 10, 30, 98 slotmachineperiod RW
Modus der System-LED 1, 2, 3 photonled RW
Modus der Unterbeleuchtung 1,2 – – – – – underlightmode RW
Segmente der Unterbeleuchtung 1, 2, 4, 6 – – – – – underlightsegments RW
Farbe der Unterbeleuchtung 1 – 2^32 – – – – – underlightsolidcolor RW
Helligkeit im Tagmodus 1, 6, 71, 126, 201, 256 brightnessday RW
Helligkeit im Nachtmodus 1, 6, 71, 126, 201, 256 brightnessnight RW
Zeitplan nmstr W
Doppelpunkt-Modus 1, 2, 3 – – – 1, 2, 3 1, 2, 3 colonmode RW
Betriebsleuchte – 1, 2 1, 2 – – – powerlight RW
Verbindungsmodus 1, 2 connectivitymode RW
Zeit 1, 2 time RW
Benutzerdefinierte Daten XXXXXXXX customdata W
Timeout für benutzerdefinierte Daten 0-255 customdatatimeout RW
Countdown starten 1-359999 startcountdown W
In den Zeitmodus wechseln 1 switchtotimemode W
Slot-Machine-Modus 1,2 slotmachinemode RW
Neustart der Uhr 1 reset W
Homekit-Reset 1 homekitreset W
RTC-Kalibrierung rtccalibration RW
System-Firmware systemfirmware R
Firmware-Version firmware R
WLAN-Signalstärke rssi R
Watchdog-Neustarts watchdogevents R
Uhren-ID productid R
Seriennummer der Uhr 0-99999 serialnumber RW
Homekit-Verbindungen hkconnectionsnumber R
Größter freier Speicherblock largestfreeblockheap R
Freier Speicher freememory R
Aktuell angezeigter Wert currentdisplayedvalue R
Abweichung bei der letzten NTP-Synchronisierung lastntpsyncmillis R
OTA-Updates otaenabled R
MAC-Adresse macaddr R

Erläuterung der einzelnen Konfigurationsparameter

Zeitformat

12 = 12-Stunden-Format, 24 = 24-Stunden-Format

Führende Null

1 = AUS, 2 = EIN

Sommerzeit

1 = AUS, 2 = EIN, 3 = Automatisch

Zeitzone

Name Wert
(UTC-12:00) Internationale Datumsgrenze (Westen) 0
(UTC-11:00) Koordinierte Weltzeit -11 1
(UTC-10:00) Hawaii 2
(UTC-09:00) Alaska 3
(UTC-08:00) Pacific Time (USA und Kanada) 4
(UTC-08:00) Niederkalifornien 5
(UTC-07:00) Mountain Time (USA und Kanada) 6
(UTC-07:00) Chihuahua, La Paz, Mazatlan 7
(UTC-07:00) Arizona 8
(UTC-06:00) Saskatchewan 9
(UTC-06:00) Mittelamerika 10
(UTC-06:00) Central Time (USA und Kanada) 11
(UTC-06:00) Guadalajara, Mexiko-Stadt, Monterrey 12
(UTC-05:00) Eastern Time (USA und Kanada) 13
(UTC-05:00) Bogotá, Lima, Quito 14
(UTC-05:00) Indiana (Ost) 15
(UTC-04:30) Caracas 16
(UTC-04:00) Atlantic Time (Kanada) 17
(UTC-04:00) Cuiaba 18
(UTC-04:00) Santiago 19
(UTC-04:00) Georgetown, La Paz, Manaus, San Juan 20
(UTC-04:00) Asunción 21
(UTC-03:30) Neufundland 22
(UTC-03:00) Brasília 23
(UTC-03:00) Grönland 24
(UTC-03:00) Montevideo 25
(UTC-03:00) Cayenne, Fortaleza 26
(UTC-03:00) Buenos Aires 27
(UTC-02:00) Mittelatlantik 28
(UTC-02:00) Koordinierte Weltzeit -02 29
(UTC-01:00) Azoren 30
(UTC-01:00) Kap Verde 31
(UTC) Dublin, Edinburgh, Lissabon, London 32
(UTC) Monrovia, Reykjavík 33
(UTC) Casablanca 34
(UTC) Koordinierte Weltzeit 35
(UTC+01:00) Belgrad, Bratislava, Budapest, Ljubljana, Prag 36
(UTC+01:00) Sarajevo, Skopje, Warschau, Zagreb 37
(UTC+01:00) Brüssel, Kopenhagen, Madrid, Paris 38
(UTC+01:00) West-Zentralafrika 39
(UTC+01:00) Amsterdam, Berlin, Bern, Rom, Stockholm, Wien 40
(UTC+01:00) Windhuk 41
(UTC+02:00) Minsk 42
(UTC+02:00) Kairo 43
(UTC+02:00) Helsinki, Kiew, Riga, Sofia, Tallinn, Vilnius 44
(UTC+02:00) Athen, Bukarest 45
(UTC+02:00) Jerusalem 46
(UTC+02:00) Amman 47
(UTC+02:00) Beirut 48
(UTC+02:00) Harare, Pretoria 49
(UTC+02:00) Damaskus 50
(UTC+02:00) Istanbul 51
(UTC+03:00) Kuwait, Riad 52
(UTC+03:00) Bagdad 53
(UTC+03:00) Nairobi 54
(UTC+03:00) Kaliningrad 55
(UTC+03:00) Moskau, St. Petersburg, Wolgograd 56
(UTC+03:30) Teheran 57
(UTC+04:00) Abu Dhabi, Maskat 58
(UTC+04:00) Baku 59
(UTC+04:00) Eriwan 60
(UTC+04:00) Tiflis 61
(UTC+04:00) Port Louis 62
(UTC+04:30) Kabul 63
(UTC+05:00) Taschkent 64
(UTC+05:00) Islamabad, Karatschi 65
(UTC+05:30) Chennai, Kolkata, Mumbai, Neu-Delhi 66
(UTC+05:30) Sri Jayawardenepura 67
(UTC+05:45) Kathmandu 68
(UTC+06:00) Jekaterinburg 69
(UTC+06:00) Astana 70
(UTC+06:00) Dhaka 71
(UTC+06:30) Yangon (Rangun) 72
(UTC+07:00) Nowosibirsk 73
(UTC+07:00) Bangkok, Hanoi, Jakarta 74
(UTC+08:00) Krasnojarsk 75
(UTC+08:00) Peking, Chongqing, Hongkong, Urumqi 76
(UTC+08:00) Kuala Lumpur, Singapur 77
(UTC+08:00) Taipeh 78
(UTC+08:00) Perth 79
(UTC+08:00) Ulaanbaatar 80
(UTC+09:00) Irkutsk 81
(UTC+09:00) Seoul 82
(UTC+09:00) Osaka, Sapporo, Tokio 83
(UTC+09:30) Darwin 84
(UTC+09:30) Adelaide 85
(UTC+10:00) Jakutsk 86
(UTC+10:00) Canberra, Melbourne, Sydney 87
(UTC+10:00) Brisbane 88
(UTC+10:00) Hobart 89
(UTC+10:00) Guam, Port Moresby 90
(UTC+11:00) Wladiwostok 91
(UTC+11:00) Salomonen, Neukaledonien 92
(UTC+12:00) Magadan 93
(UTC+12:00) Fidschi 94
(UTC+12:00) Auckland, Wellington 95
(UTC+12:00) Koordinierte Weltzeit +12 96
(UTC+13:00) Nuku’alofa 97
(UTC-11:00) Samoa 98

Anzeige des Datums

1 = AUS, 2 = DD, 3 = DDMMYY, 4 = MMDDYY, 5 = YYMMDD

Ziffernübergang

1 = Normal, 2 = Überblenden, 3 = Spielautomat, 4 = Spielautomat/Überblenden

Modus der System-LED

1 = Immer an, 2 = Aus, wenn online, 3 = Immer aus

Regenerierungsintervall der Kathoden

1 = Jede Minute, 10 = Alle 10 Minuten, 30 = Alle 30 Minuten, 98 = Einmal täglich um 3:00 Uhr

Modus der Unterbeleuchtung

1 = AUS, 2 = Einfarbig

Segmente der Unterbeleuchtung

1 = Alle aus, 2 = Nur unten, 4 = Nur oben, 6 = Alle an

Farbe der Unterbeleuchtung

32-Bit-Wert, 0b00000000BBBBBBBBGGGGGGGGRRRRRRRR

Doppelpunkt-Modus

1 = AUS, 2 = Dauerhaft an, 3 = Überblenden

Betriebsleuchte

1 = EIN, 2 = AUS

Verbindungsmodus

1 = Online, 2 = Offline

Zeit

Unix-Zeitstempel (UTC+0) in Sekunden, funktioniert nur im Offline-Modus (im Online-Modus wird er überschrieben).

Benutzerdefinierte Daten

8 Zeichen, die 6 Röhren und 2 Doppelpunkt-Röhren darstellen (auf der Puri-4 werden zwei Röhren und ein Doppelpunkt nicht angezeigt).

Sonderzeichen:

  • „_“ schaltet die Position dunkel (funktioniert sowohl für Doppelpunkt- als auch für Ziffernröhren)
  • „:“ beide Punkte aktiviert, nur für Doppelpunkt-Röhren
  • „.“ unterer Punkt aktiviert, nur für Doppelpunkt-Röhren
  • „;“ oberer Punkt aktiviert, nur für Doppelpunkt-Röhren

Beispiele für Zeichenketten:

  • „12_34_56“ zeigt 123456 auf den Nixie-Röhren an, die Doppelpunkt-Röhren bleiben dunkel
  • „_____.25“ zeigt 25 auf dem rechten Röhrenpaar und einen unteren Punkt auf der rechten Doppelpunkt-Röhre an
  • „;15;“ schaltet alle Röhren außer dem mittleren Paar dunkel, beide Doppelpunkte zeigen den oberen Punkt

Timeout für benutzerdefinierte Daten

Dieser Parameter teilt der Uhr mit, nach welcher Zeit sie nach dem Empfang benutzerdefinierter Daten wieder in den Zeitmodus (Anzeige der Uhrzeit) wechseln muss. Für eine bessere Auflösung wird die tatsächliche Dauer als Quadrat des gesendeten Wertes berechnet. Wenn Sie den Wert „5“ senden, beträgt das Timeout 25 Sekunden (5 × 5 = 25).

Countdown starten

Dieser Aufruf startet einen Countdown-Timer, der Parameter ist die gewünschte Dauer in Sekunden. Wenn Sie einen Countdown-Timer für 3 Minuten starten möchten, rufen Sie ihn mit dem Parameter 180 (3*60) auf.

In den Zeitmodus wechseln

Rufen Sie diesen Parameter auf, um die Uhr in den Zeitmodus zu schalten (z. B. aus dem Modus für benutzerdefinierte Daten, aus dem Slot-Machine-Modus oder aus dem Countdown-Timer).

Slot-Machine-Modus

1 = aktivieren, 2 = deaktivieren

Homekit-Reset

Rufen Sie diesen Parameter auf, um die aktuelle Homekit-Kopplung zu löschen und auf die Standardeinstellung zurückzusetzen.

RTC-Kalibrierung

Zulässige Werte (in PPM):

-63,-61,-59,-57,-55,-53,-51,-49,-47,-45,-43,-41,-39, -37,-35,-33,-31,-28,-26,-24,-22,-20,-18,-16,-14,-12, -10,-8,-6,-4,-2,0,4,8,12,16,20,24,28,33,37,41,45,49, 53,57,61,65,69,73,77,81,85,90,94,98,102,106,110,114,118,122,126

Seriennummer der Uhr

Die Seriennummer wird von uns nach der Herstellung der Uhr festgelegt, bitte ändern Sie sie daher nicht.

Homekit-Verbindungen

Die Anzahl der Clients (iPhones, iPads), die aktuell über Homekit mit der Uhr verbunden sind.

Größter freier Speicherblock

Der größte freie allozierbare Speicherblock auf dem Heap in Bytes.

Freier Speicher

Gesamter freier Speicher auf dem Heap in Bytes.

Aktuell angezeigter Wert

Die aktuell auf der Röhrenanzeige dargestellte Zahl, Doppelpunkte werden nicht berücksichtigt.

Abweichung bei der letzten NTP-Synchronisierung

Um wie viele Millisekunden wurde die Systemzeit bei der letzten NTP-Synchronisierung korrigiert?

OTA-Updates

Sind Over-the-Air-Updates aktiviert? 1 = aktiviert, 0 = deaktiviert

MAC-Adresse

Gibt die MAC-Adresse des Geräts zurück