====== btclock ====== {{tag> project infrastructure}} Die Dokumentation liegt auf Github: https://github.com/dop3j0e/btclock/ Ein Script zum Stellen der Uhr befindet sich auch dort: https://github.com/shackspace/btclock-set ===== Automatik ===== Sofern es nicht verstellt wird, ist das [[https://github.com/shackspace/btclock-set|btclock-set]] Script auf dem [[https://github.com/shackspace/shack_kiosk_v5_konfig|Kiosk]] als Cronjob deployed. Bei jedem Boot des Kiosk, versucht dieser sich (falls nötig) mit der Uhr zu pairen (PIN ist hartkodiert im cronjob hinterlegt...) und diese anschliessend zu stellen. ===== Web-API ==== Die [[https://github.com/shackspace/btclock-api|btclock-api]] ist deployed auf kiosk.shack unter [[http://kiosk.shack/btclock/datetime]] (readonly - nur Aktionen, die den EEPROM nicht beschreiben können hier erreicht werden) sowie writeable unter [[http://127.0.0.1:8080/btclock/datetime]] (nur vom kiosk selbst erreichbar). ===== Das Vorgehen: ===== Bitte erst den Artikel komplett zu Ende lesen!\\ \\ Die btclock hat einen Knopf auf der Rückseite, der bei längerem Druck eine 4 stellige zufällige PIN auf dem Display anzeigt.\\ Nun muss man sich per Bluetooth mit dem Gerät verbinden - der Name des Gerätes lautet " BT Clock ".\\ Solange die PIN auf dem Display angezeigt wird, hat man Zeit diese in seinen PC einzugeben um sich zu verbinden.\\ \\ Nach dem verbinden stehen 2 virtuelle COM-Ports zur Verfügung die man mit Putty öffnen kann.\\ Nur einer der beiden funktioniert für die Stellung der Uhr - um genau zu sein der Com Port mit dem Namen " BT Clock 'Dev B' " und der Direction Outgoing.\\ Die Baudrate beträgt 9600 - (8) data bits, no (N) parity bit, and one (1) stop bit.\\ Flow Control: Nicht bekannt. Sowohl XON/XOF als auch None scheint zu funktionieren.\\ \\ T=YYMMDDhhmmssWWLF\\ YY = Jahr\\ MM = Monat\\ DD = Tag\\ hh = Stunde\\ mm = Minute\\ ss = Sekunde\\ WW = Wochentag (00 Montag; 01 Dienstag; ... ; 06 Sonntag)\\ LF = Line Feed (auf deutsch: Zeilenumbruch) den man im Unix Format anhängen muss.\\ \\ Wenn man unter Windows einen Line Feed von Unix einfügen möchte, benutzt man am besten Notepad++.\\ \\ Folgende Dinge muss man dann tun:\\ View, Show Symbol, Show End of Line\\ Edit, EOL Conversation, Unix (LF)\\ \\ Anschließend Enter drücken, um einen Zeilenumbruch zu erzeugen.\\ Mit STRG + A alles aus der Text-Datei markieren und in das Kommandozeilenfenster mit einem einfachen Rechtsklick einfügen. \\ Wenn ihr alles richtig gemacht habt, sollte die Uhr ein OK zurück geben.\\ Ungefähr so:\\ OK Wenn ihr was falsch gemacht habt, passiert das folgende:\\ Am Anfang wird ein No| ausgegeben, dannach kommt das, was ihr mit dem Rechtsklick der Maus eingefügt habt und die Meldung +DISC:SUCCESS.\\ No|T=17102817380005+DISC:SUCCESS Die Fehlermeldung taucht manchmal auch erst auf, wenn ihr die COM-Portverbindung zum zweiten mal öffnet.\\ ===== Beispielsitzung - Linux ===== ==== Koppeln ==== $ bluetoothctl Agent registered [CHG] Controller 11:22:33:44:55:66 Pairable: yes [bluetooth]# scan on Discovery started [CHG] Controller 11:22:33:44:55:66 Discovering: yes [NEW] Device 20:11:02:47:01:01 BT Clock [bluetooth]# pair 20:11:02:47:01:01 Attempting to pair with 20:11:02:47:01:01 [CHG] Device 20:11:02:47:01:01 Connected: yes Request PIN code [agent] Enter PIN code: 3212 [CHG] Device 20:11:02:47:01:01 ServicesResolved: yes [CHG] Device 20:11:02:47:01:01 Paired: yes Pairing successful [bluetooth]# scan off [bluetooth]# quit ==== Uhr stellen ==== Hierfür wird das leider mittlerweile als deprecated eingestufte tool rfcomm benötigt. In Archlinux gibt es dieses Tool noch im [[https://aur.archlinux.org/packages/bluez-rfcomm/|AUR]]. Im [[https://aur.archlinux.org/cgit/aur.git/snapshot/bluez-rfcomm.tar.gz|Snapshot]] dieses Pakets befindet sich eine //PKGBUILD// Datei sowie die Sources des rfcomm-Tools - damit sollte sich dieses Tool auch für andere Distributionen leicht wieder zum Leben erwecken lassen. $ sudo rfcomm bind rfcomm0 20:11:02:47:01:01 # --echo gibt jedes gesendete Zeichen nochmal lokal aus # --omap crlf ersetzt jedes zu sendende cr (carriage return) durch lf (linefeed) # --imap lfcrlf ersetzt jedes empfangene lf durch crlf # Um picocom zu verlassen, nacheinander die Kombinationen [Strg+a], [Strg+x] drücken $ sudo picocom --quiet --echo --omap crlf --imap lfcrlf /dev/rfcomm0 T=17102817380005 OK T? 2017-10-28(05) 17:38:03 OK $ sudo rfcomm release rfcomm0