Szukaj na tym blogu

niedziela, 7 kwietnia 2013

Pierwsza produkcyjna implementacja - standard przesyłania danych i czas systemowy

Standard

Postanowiłem opracować prosty standard danych aby:
  • wyeliminować ewentualne dodatkowe teksty wprowadzane do strumienia danych przez programy jak cu
  • zapewnić kompatybilność rozwiązania w przyszłości kiedy dane będą się zmieniać



Dodatkowe dane

Zauważyłem, że program cu potrafi dodawać własne teksty jak 'Connected'. Aby wyeliminować tego typu śmieci postanowiłem, że każda linia wypisywana przez kontroler będzie zaczynała się od "<avr>". Linie, które się od tego nie zaczynają będą po prostu ignorowane.

Standard

Poszczególne pola będą rozdzielane znakiem tabulacji, a nie średnikiem jak dotychczas.
Dodatkowo w drugim polu będzie wersja rekordu. Wersja jest mi potrzebna aby w przyszłości móc jednoznacznie interpretować dane kiedy ich postać się zmieni. Np kiedy dodam odczyty z nowych czujników wilgotności i ciśnienia.
Dotychczas typowa linia danych wyglądała tak:
3000805;8.44;21.12;19.31;25.50;
teraz będzie wyglądała tak:
<avr>\t1\t3000805\t8.44\t21.12\t19.31\t25.50\t

Dodanie czasu systemowego

Brak w kontrolerze dokładnego zegara powoduje, że czas muszę uzyskiwać w komputerze. Użyłem do tego prostego skryptu napisanego w awk i polecenia systemowego date. Po przejściu przez ten filtr wiersz danych ma następującą postać:
<avrtime>\t1\t1365336922\t2013-04-07 12:15:22;<avr>\t1\t3000805\t8.44\t21.12\t19.31\t25.50\t
Doszło na początku kilka pól, które zawierają:
  • znacznik <avrtime>
  • wersję rekordu z czasem
  • czas w postaci sekund od 1 stycznia 1970 roku godz 00:00 UTC
  • czas w postaci czytelnej (UTC)

Konwersja starych plików

Pliki tworzone dotychczas przy pomocy programu CoolTerm nie miały znacznika czasu pobieranego z zegara systemowego. Program CoolTerm posiada nawet funkcjonalność dodawania czasu, ale nie działa ona poprawnie.
Stąd konieczność dokonania konwersji poprzednich plików do nowego formatu. Po kolei:
  • Przerobienie starych plików na nowy format
  • Przerobienie skryptów współpracujących z RRDTool żeby nowy format rozpoznawały
  • Przerobienie programu na mikrokontroler żeby po nowemu wypisywał dane
  • napisanie na Linuksie konwertera tych plików do nowego formatu z <avrtime>
Teraz jak już to zrobiłem to wystarczy na Linuksie tylko do jakichś "autostartów" i "cronów" to powstawiać i voila. Ale to już nie dzisiaj.

Wykonanie planu

  • uruchomić całość na Linuksie
  • wymienić CoolTerm.exe na coś innego 
    • uruchomienie cu w celu odczytu danych
    • poradzić sobie z problemem ekstra danych wypisywanych przez cu
  • zacząć odczytywać czas z zegara serwera
  • zrobić stronę www i wystawić na zewnątrz
    • uruchomienie rrdtool
      • przeniesienie, modyfikacja skryptów
      • sprawdzenie czemu na wykresach brakuje danych
    • połączenie z cu
    • automatyzacja
    • wystawienie na serwerze
  • zmontować układ, a aby to zrobić to trzeba:
    • wybrać docelowy mikro-kontroler - i zakupić go
    • dowiedzieć się jak się go programuje i zmontować programator - i zakupić co potrzeba
    • zaprogramować kontroler
    • dowiedzieć się jak najlepiej zmontować docelowy układ (skąd płytkę itp) i zmontować - a wcześniej zakupić co potrzeba
    • dowiedzieć się czy i jakie peryferia są potrzebne (kwarc, zasilanie, komunikacja z komputerem po rs232) - zakupić potrzebne
      •  zakup części do podłączenia RS232
      • zmontować wszystko co potrzebne do połączenia RS232
    • jakąś obudowę do tego dobrać - i znaleźć lub zakupić

Legenda

  • wykonane
  • do zrobienia
  • nowe zadanie lub podzadanie
  • aktualnie robione

Brak komentarzy:

Prześlij komentarz