Skocz do zawartości
SOYER

Arduino MEGA i BLYNK, LCD odchodzi do lamusa...

Pomocna odpowiedź

zdecydowanie 10 minutowy. Raz, że Arduino może nadal wysyłać do BLYNKa co minutę, a do RPi co 10 min, a dwa, że ESP dane z czujnika jakości powietrza i tak wysyła również co 10 min, trzy wolałbym też uniknąć dodatkowego HDD... 

wprawdzie dalej nie widzę sensu tak dokładnych danych historycznych, ale jak tak jest lepiej... 

Udostępnij ten post


Link to post
Share on other sites
2 minuty temu, SOYER napisał:

wprawdzie dalej nie widzę sensu tak dokładnych danych historycznych, ale jak tak jest lepiej... 

Dzisiaj nie widzisz a za miesiąc się wkurzysz, bo będziesz chciał sprawdzić o której to sąsiad w zeszły wtorek oponę w piecu spalił...

Poza tym nie pisałem że tak jest "lepiej" - tak jest prościej. Nie ma potrzeby stosowania jakichś dodatkowych aplikacji i fafnastu dodatkowych tabel, wszystko jest elegancko umieszczone w jednej najprostszej z możliwych, a przy okazji masz możliwość sięgnięcia wstecz (jak mówiłem, dzisiaj nie chcesz a pojutrze będziesz chciał).

To co, zrób taką śliczna tabelkę i będziemy sobie dalej kombinować?

Udostępnij ten post


Link to post
Share on other sites

Czyli co? W poziomie te 13 czujników, kolumny, ok, ale w jaki sposób zrobić te wiersze. Pewnie mają się same dodawać z każdym odczytem, si? 

Udostępnij ten post


Link to post
Share on other sites

A jak inaczej? @Treker Ci nie wspominał że masz podstawy kwerend opanować? A gdybyś miał taką sztywną tabelkę jak zaprojektowałeś to byś pytał, czy dane się będą same uaktualniać za każdym odczytem?

A ja bym prosił o odrobinkę pomyślenia czym jest tabela w bazie danych... a przede wszystkim przestań myśleć kategoriami wiersz/kolumna bo skojarzenie z Excelem samo się nasuwa a to niestety zupełnie coś innego.

No bo jeśli nie rozumiesz czym jest tabela (a tego nie podejmuję się wytłumaczyć) to jak chcesz pisać jakiekolwiek programy na owych tabelach operujące...

 

Udostępnij ten post


Link to post
Share on other sites
8 minut temu, ethanak napisał:

No bo jeśli nie rozumiesz czym jest tabela (a tego nie podejmuję się wytłumaczyć) to jak chcesz pisać jakiekolwiek programy na owych tabelach operujące...

Więc proszę kogoś o wytłumaczenie różnic. 

Dla mnie to coś takiego co widzę w phpMyAdmin... tabelka... 

Jak inaczej na to spojrzeć?? 

Co masz na myśli... 

Udostępnij ten post


Link to post
Share on other sites

OK spróbujmy.

W phpMyAdminie nie widzisz tabeli jako takiej tylko wynik jakiegoś zapytania na tej tabeli operującego (np. "Pokaż wartości wszystkich pól w kolejności jakiejśtam").
Wyobraź sobie tabelę w bazie danych jako zbiór nieuporządkowanych rekordów (nie żadnych wierszy, bo to by sugerowało istnienie jakiejś kolejności) zawierających pola (nie kolumny) określonego typu. Dopiero wynik kwerendy SELECT tworzy tabeloida zawierającego kolumny i wiersze - poprzez przyporządkowanie konkretnych pól (czy funkcji na owych polach operujących) do kolumn i określenie kolejności, w jakiej owe wiersze będą tworzone.

Coś to wyjaśniło?

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

no tak, baza to jeden wielki burdel, dopiero kwerenda robi tam porządek... 

Udostępnij ten post


Link to post
Share on other sites

No - niezupełnie burdel. Rekordy w bazie mogą być zaindeksowane (jak w naszym przypadku) - czyli wprowadzony zostaje dodatkowy porządek. Istnieją powiązania między tabelami, wiele czynności jest wykonywanych automatycznie na owych powiązanych tabelach, ogólnie panuje tam większy porządek niż w tabelce Excela, gdzie jak wstawisz wiersz między trzecim a czwartym to stodwudziestyósmy przestaje by stodwudziestymósmym (a przecież właśnie poprzez numery wierszy w Excelu się do nich odwołujemy) 🙂

Brak jedynej słusznej i niezmiennej metody sortowania (czyli określenia "naturalnej" kolejności rekordów) to przecież nie jest kwestia nieporządku, a elastyczności. Zresztą... co jeśli pobierasz dane z kilku tabel jednocześnie? Jaka ma być ta "naturalna" metoda? Według kolejności wstawienia? Przy katalogu w bibliotece raczej niewiele by to dało. Alfabetycznie według jakiegoś pola? Jakiego? Nawet w bibliotece możesz sortować według autora, tytułu, numeru ISBN, daty wydania (która z datą wprowadzenia do systemu, a więc i z kolejnością nie ma wiele wspólnego)  czy czegokolwiek. Nie może takiej metody być - Ty ją masz określić poprzez klauzulę ORDER BY, bo inaczej dostaniesz dane w takiej kolejności w jakiej siedzą na dysku (czyli nie mającej nic wspólnego z jakimkolwiek sposobem sortowania).

Wiele języków (choć akurat nie C i nie PHP czy JavaScript) ma typ danych "set" - właśnie nieuporządkowany zbiór wartości. Tyle że każdy element w takim zbiorze ma jakieś tam własności, możemy stworzyć kryteria według których będziemy owe elementy ze zbioru wybierać i na końcu (o ile jest nam to potrzebne, bo przecież nie zawsze) wybrać kolejność, w jakiej owe elementy będą przetwarzane.

No i gdzie tu burdel?

 

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

No ni ma. 

Takw sumie to by wystarczyło zrobić szkielet, a później z każdym odebraniem danych tworzyć dalszy ciąg "tabelki". Jest zdaje się takie coś jak CREATE... 

  • Nie zgadzam się! 2

Udostępnij ten post


Link to post
Share on other sites

Że co?

Przestań zgadywać tylko zerknij do jakiejś najprostszej dokumentacji SQL-a albo innego kursu. Masz do dyspozycji:

a) kurs Zelenta - co prawda uczenie się operacji na bazach danych z filmików na jutubie uważam za wielce chory pomysł, ale cóż, DGCC...

b) Naucz się sql w 60 minut - nie bardzo mi się chce wierzyć, ale być może...

c) Kurs sql  na Sqlpedii. Co prawda omawia wyłącznie wyciąganie informacji z bazy (czyli SELECT z przyległościami) ale za to bardzo drobiazgowo.

Dwa ostatnie omawiają język SQL a nie konkretny dialekt, konkretnie o MySQL-u masz u Zelenta. Niestety, większość materiałów jest po angielsku dlatego nie kieruję Ciebie od razu na dev.mysql.com.

I proszę, zanim zaczniesz jakieś herezje wypisywać zapoznaj się przynajmniej z tym drugim... 60 minut chyba możesz poświęcić 🙂

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

ok wczoraj coś czytałem, i tak mi się dzisiaj skojarzyło... createm to se mogę nową tabelę zrobić... 

to co, nie wolno mi tej tabeli zrobić "graficznie" w phpMyAdmin? 

przecież to tylko 12 czujników... 

15 pozycji: data, czas i 13 czujników... 

Udostępnij ten post


Link to post
Share on other sites

Ależ możesz sobie zrobić graficznie, w końcu po to jest phpMyAdmin i to tylko interfejs do "create table".

I nie 15 pozycji a 14 - jeśli zrobisz oddzielnie datę i czas to potem będziesz kombinował jak koń pod górkę. Istnieje typ datetime, tego się trzymaj, zrób dokładnie tak jak Ci pokazałem (czyli primary key i default current_timestamp), jeśli nie wiesz dlaczego to spróbuj jednak przeczytać po angielsku: https://dev.mysql.com/doc/refman/5.7/en/data-type-defaults.html - a przynajmniej pierwszą (tę krótszą) część "handling of explicit values".

Tak przy okazji sprawdziłem - translator Googla bardzo prawidłowo to przetłumaczył, tak że dalszych argumentów o słabej znajomości angielskiego nie przyjmuję.

Jakbyś się zastanawiał dlaczego datetime a nie timestamp to później wyjaśnię, w każdym razie przyjmij że do zapisu tego typu danych (pozycja w czasie konkretnego zdarzenia) służy właśnie typ datetime.

 

 

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites
(edytowany)
-- phpMyAdmin SQL Dump
-- version 4.6.6deb4
-- https://www.phpmyadmin.net/
--
-- Host: localhost:3306
-- Czas generowania: 29 Sty 2019, 00:38
-- Wersja serwera: 10.1.37-MariaDB-0+deb9u1
-- Wersja PHP: 7.0.33-0+deb9u1

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Baza danych: `meteokryry`
--

-- --------------------------------------------------------

--
-- Struktura tabeli dla tabeli `meteoTabela`
--

CREATE TABLE `meteoTabela` (
  `id` int(11) NOT NULL,
  `czas` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `tempKuchnia` int(11) NOT NULL,
  `wilgKuchnia` int(11) NOT NULL,
  `tempCO` int(11) NOT NULL,
  `tempStrych` int(11) NOT NULL,
  `tempPiwnica` int(11) NOT NULL,
  `tempZew` int(11) NOT NULL,
  `wilgZew` int(11) NOT NULL,
  `tempSlonce` int(11) NOT NULL,
  `tempGrunt` int(11) NOT NULL,
  `cisnienie` int(11) NOT NULL,
  `pm1` int(11) NOT NULL,
  `pm2` int(11) NOT NULL,
  `pm10` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Indeksy dla zrzutów tabel
--

--
-- Indexes for table `meteoTabela`
--
ALTER TABLE `meteoTabela`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT for dumped tables
--

--
-- AUTO_INCREMENT dla tabeli `meteoTabela`
--
ALTER TABLE `meteoTabela`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

 

 

Przechwytywanie5.PNG

Dołożyłem jescze id, żeby móc sprawdzić ile zapisów jest w bazie, choć bez tego też pewnie da się to policzyć, tak?

Może być ta tabela?

P.S. ten link do tego wegańskiego portalu bardzo ciekawy, 60-min kurs bardzo ogólny, to już wolę W3school, mają nawet fajne apki na telefon.

Jednak najciekawszy był ten artykuł: https://www.sqlpedia.pl/wszystko-o-null/, ciekawa sprawa ten null...:-)

Edytowano przez SOYER

Udostępnij ten post


Link to post
Share on other sites

Jasne i sensowne. Szczególnie fragment o tym jak wywalę część rekordów i wtedy id zupełnie traci sens. O tym nie pomyślałem. 

ID wylatuje. 

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...