Skocz do zawartości
SOYER

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

Pomocna odpowiedź

Rany... przecież już to robiłeś przy podnoszeniu do kwadratu, prawda?

Wybacz, ale trochę samodzielności by się przydało; jeśli potrafiłeś odebrać jeden parametr to nie bardzo rozumiem dlaczego nie wiesz, jak odebrać dwa.

A name jest po to, aby serwer zwrócił liczbę mianowaną. Jeśli nie wiesz po co, to pomyśl o jednej funkcji w JavaScripcie realizującej wyświetlanie liczby mianowanej a nie piętnastu od wyświetlania temperatury, pm10 i przezroczystości dymu z komina sąsiada.

Wiem że można inaczej, ale chodzi nie o optymalny skrypt w JS/PHP, tylko o nauczenie się czegoś tam.

A różne case i bazy danych zostaw, nie masz na razie prawa w tym skrypcie odwoływać się do jakichkolwiek zewnętrznych zasobów, skrypt wywołany z "?what=distance&name=km" ma zwrócić "10 km" (gdzie 10 to losowa liczba). Parametr what ma być przekazany do funkcji zwracającej dane (na razie będzie niewykorzystany, a smętne dywagacje o switchach zostaw na później).

Udostępnij ten post


Link to post
Share on other sites

Bez switch to nie mam pojęcia jak to zrobić. 

Udostępnij ten post


Link to post
Share on other sites

Bo na razie nie masz tego robić!

Ostatni raz powtarzam: masz przekazać ten parametr do funkcji ale go nie używać, zamiast tego zwrócić losową wartość. Więcej powtarzać nie będę.

Wnętrzem funkcji zajmiemy się, kiedy będzie działać reszta programu. No - chyba że jesteś aż tak zdolny i inteligentny, aby uczyć się jednocześnie HTML-a, JS-u , PHP i MySQL-a od razu wiedząc w której części całej aplikacji jest błąd... ale to już nie do mnie, ja aż tak zdolny i inteligentny nie jestem aby takich zdolnych i inteligentnych uczyć.

 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
(edytowany)
<?php

function getCurrentStatus($what) {
  // tu w przyszłości będzie pobieranie danych z bazy, a na dzisiaj...
  return rand(10,40); // tak na przykład
}
$what = $_REQUEST['what'];
$result = getCurrentStatus($what);
$a = $_GET['nazwa'];
$b = $_GET['mian'];
echo $result+$b;
?>

 

$.ajax({url: "getData.php", data:{nazwa: 'temp', mian:'*C'} success: function(res){$('#wyniki').text(res);}});

 

28 minut temu, ethanak napisał:

No - chyba że jesteś aż tak zdolny i inteligentny, aby uczyć się jednocześnie HTML-a, JS-u , PHP i MySQL-a od razu wiedząc w której części całej aplikacji jest błąd... ale to już nie do mnie, ja aż tak zdolny i inteligentny nie jestem aby takich zdolnych i inteligentnych uczyć.

 

Jesteś pewny, że ten wtręt był konieczny?? No chyba, że jestes tak inteligentny, ze łapiesz jeszcze poboczne tematy. Ja tak bystry i elokwentny nie jestem. Za to sporo spokojniejszy od Ciebie;-), mam nadzieję, że to nie ja Cie wyprowadzam z równowagi, bo jeśli tak to proponuje znowu wyprawę odstresowującą...

Niestety tak się składa, że ucze się jednocześnie wszystkich tych języków, po godzinie, dwie dziennie, z pewnością nie w spokoju.

Więc kiedy mnie pytasz kiedy wreszcie nauczę sie składni jakiegoś tam języka to odpowiadam: nieprędko, na pewno nie będę znał nawet podstaw po kilku godzinach nauki. tak inteligentny nie jestem.

Edytowano przez SOYER

Udostępnij ten post


Link to post
Share on other sites

Jeśli chodzi o kod - tak, o to chodziło, zrób z tego kompletną działającą stronę i (o ile wszystko będzie w porządku) będziemy mogli ją zostawić w spokoju i zająć się pobieraniem danych z bazy (a przede wszystkim stworzeniem jakiejś sensownej bazy).

Co do nauki trzech języków na raz... efekty sam widzisz, próbujesz uczyć się dwie godziny nowych rzeczy a nie pamiętasz poprzednich. To nie szkoła gdzie można było na jednej lekcji mieć historię, na drugiej rosyjski a na trzeciej matmę i wszystko się (prawda...) umiało. Jeśli pytam o składnię to nie jęcz że za ileś tam tygodni, tylko w przypadku JavaScriptu i PHP już ją powinieneś znać (w końcu składnia tych języków to parę linijek). Jeśli składni nie znasz to nie masz po co uczyć się reszty - to tak jakbyś chciał pisać powieści nie znając wszystkich liter alfabetu.

Zauważ: mówię tu o składni, czyli czymś co nawet nie jest podstawą języka.

Co do odstresowywania... jestem w trakcie pisania takiej fajnej aplikacji (Python, MySQL, Varnish CL, ogólnie administracja systemem), mam ją właśnie na drugim pulpicie i nasze dyskusje są właśnie odstresowujące 😉

A co do spokoju... wybacz, ale jeśli od trzech dni Cię proszę o napisanie jakiegoś kodu bo na jego podstawie chcę Ci pokazać następne rzeczy, a Ty uparcie próbujesz mi pokazać różne inne kody to możesz się spodziewać tego, że najspokojniejszy człowiek zacznie chodzić po ścianach.

Czekam na stronę.

 

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

Co do ostatniego kodu to był banalny, myślałem, że chodzi Ci o coś innego. Problemy komunikacyjne + sto innych spraw == niezrozumienie.

Jak już będziesz chodził po ścianach strzel selfi, posmiejemy się wspólnie;-)

Co do mojej nauki, to jak już pisałem, jestem bardzo zadowolony. Dzięki Twojej pomocy i niewyczerpanej cierpliwości:-D, spędzam bardzo miłe wieczory. Moja żona wprawdzie jest mniej zadowolona....

W tym kodzie z obsługi wszystkich czujników, mam już wykorzystać  tego switcha, czy dla każdego czujnika pisać osobne php, czy to zrobic na ifach, żeby znowu nie było, że nie słucham nauczycieli i wzorowego nie będzie....;-)

Udostępnij ten post


Link to post
Share on other sites

Nie żadne osobne, przecież pisałem, jeden skrypt dla którego najważniejszą informacją jest to co ma wysłać.

A co do switchy, ifów i tak dalej... zdaje się że masz coś takiego jak relacyjna baza danych, i jeśli jakieś operacje ma na swoich danych wykonać to na pewno zrobi to lepiej i szybciej niż najbardziej wymyślny skrypt w php.

Tylko proszę, spędź wieczór na spakowaniu tego kodu i wysłaniu na githuba, dzisiaj to już mam dość i idę spać ale obiecuję że z samego rana tam zajrzę i mam nadzieję, że będzie można zająć się MySQL-em.

Jeśli już mamy z tym zacząć - pokaż mi jeszcze raz tę tabelę i powiedz co oznaczają poszczególne pola i dlaczego właśnie tak a nie inaczej.

 

Udostępnij ten post


Link to post
Share on other sites
3 godziny temu, ethanak napisał:

Jeśli już mamy z tym zacząć - pokaż mi jeszcze raz tę tabelę i powiedz co oznaczają poszczególne pola i dlaczego właśnie tak a nie inaczej.

 

Tabela jak tabela, w wierszach wypisane czujniki, a w kolumnach różne wartości z tych czujników. Taką zrobiłem, bo się uczyłem. Mogę zrobić nową. 

Strona jutro bo już śpię... prawie;) 

Udostępnij ten post


Link to post
Share on other sites
9 minut temu, SOYER napisał:

Tabela jak tabela, w wierszach wypisane czujniki, a w kolumnach różne wartości z tych czujników.

Ostatnio było inaczej... więc może pokażesz tę tabelę bo następną razą się dowiesz że "program to program" 😉

Tak na wszelki wypadek jakbyś nie wiedział, pokazanie tabeli to nie zrzut ekranu z phpmyadmina ale kod, czyli coś w stylu:

CREATE TABLE czujnik (
  nazwa varchar(32), -- co czyta czujnik, czyli np. pm10, cisnienie itp
  wartosc int,       -- wartość odczytana z czujnika
  /* tu kilka innych kolumn */
  );

 

  • Lubię! 1
  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

Cześć @ethanak strona jest tutaj.

Należało poprawić echo php-a na:

echo $result."  ".$b;

oraz linijkę ajaxa, zapomniałem o ",":

$.ajax({url: "getData.php", data:{nazwa: 'pm10', mian:'µg/m³'}, success: function(res){$('#wyniki').text(res);}});

Wszystko pięknie śmiga, DZIĘKUJĘ;-)

 nie wiem tylko czemu dodawanie kolejnych spacji w echo nie robi róznicy, pierwsza spacja owszem się pojawia ale następne już nie. Próbowalem nawet $result." "." ".$b bez efektu... ale to szczegół...

Struktura tabeli jest w pliku meteo.sql na githubie i tutaj:

-- phpMyAdmin SQL Dump
-- version 4.6.6deb4
-- https://www.phpmyadmin.net/
--
-- Host: localhost:3306
-- Czas generowania: 24 Sty 2019, 17:53
-- 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 `meteo`
--

CREATE TABLE `meteo` (
  `czujnik` text CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,
  `aktualna` int(11) NOT NULL,
  `min` int(11) NOT NULL,
  `max` int(11) NOT NULL,
  `min_date` int(11) NOT NULL,
  `max_date` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Zrzut danych tabeli `meteo`
--

INSERT INTO `meteo` (`czujnik`, `aktualna`, `min`, `max`, `min_date`, `max_date`) VALUES
('temperatura', 0, 0, 0, 0, 0),
('wilgotnosc', 12, 0, 0, 0, 0),
('cisnienie', 13, 0, 0, 0, 0),
('pm1', 14, 0, 0, 0, 0),
('pm2', 15, 0, 0, 0, 0),
('pm10', 16, 0, 0, 0, 0);

/*!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 */;

 

Udostępnij ten post


Link to post
Share on other sites
(edytowany)
47 minut temu, SOYER napisał:

 nie wiem tylko czemu dodawanie kolejnych spacji w echo nie robi róznicy, pierwsza spacja owszem się pojawia ale następne już nie

Mówiłem żebyś ten kurs do kosza wywalił...

Tu nie chodzi przecież o echo, tylko o wyświetlanie treści w HTML. A jak Ci pewnie wiadomo, dowolna ilość białych znaków w HTML-u jest wyświetlane jako pojedyncza spacje. Dlaczego? Bo taki sposób wyświetlania jest naturalny dla tekstu (nie stawia się przecież nigdy dwóch spacji obok siebie).

Ale przecież są znaki specjalne, prawda? Taka na przykład "twarda spacja". Istnieje tekst preformatowany gdzie możesz sobie tych spacji obiok siebie postawić ile chcesz, i przeglądarka wszystkie je skrzętnie wyświetli.

Pytanie tylko - po co Ci to? Bo formatowanie tekstu osiąga się znacznikami, a nie liczeniem spacji.

Dobra, obiecałem że pokażę bez switchy 😉

Załóżmy, że masz już otwarte połączenie z bazą danych, spróbujmy skonstruować na nowo funkcję getCurrentStatus. Pomijam tu wyłącznie dla czytelności sprawdzanie błędów.
 

function getCurrentStatus($what)
{
	$what = $mysqli->real_escape_string($what);
	$query = "select aktualna from meteo where czujnik = '${what}'";
	$result = $mysqli->query($query);
	$row = $result->fetch_row();
	$result->close();
	return $row[0];
}

Jedyny warunek to taki, aby parametr przekazany do skryptu jako 'what' zgadzał się z wpisem w kolumnie czujnik tabeli meteo.

Oczywiście warunkiem jest, abyś prawidłowo przekazał parametry do skryptu. W tej chwili przekazujesz 'nazwa' i 'mian', a próbujesz odczytać parametr 'what' którego po prostu nie ma... coś mi się zdaje że bezmyślnie przepisujesz kawałki kodu zamiast starać się zrozumieć co robią.

Popraw to i przejdźmy dalej...

A teraz odpowiedz na parę pytań:

1) co to są `min_date` i `max_date` i dlaczego int a nie datetime?

2) co to jest `min` i `max` i kto to liczy?

3) co będzie jeśli będziesz chciał dane z wczoraj (bo przecież do tego służą bazy danych, prawda?)

 

Edytowano przez ethanak
  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites
(edytowany)
17 minut temu, ethanak napisał:

Mówiłem żebyś ten kurs do kosza wywalił...

kursu nie oglądałem już parę dni, brak czasu, za dużo zadań dajesz...

17 minut temu, ethanak napisał:

Tu nie chodzi przecież o echo, tylko o wyświetlanie treści w HTML. A jak Ci pewnie wiadomo, dowolna ilość białych znaków w HTML-u jest wyświetlane jako pojedyncza spacje. Dlaczego? Bo taki sposób wyświetlania jest naturalny dla tekstu (nie stawia się przecież nigdy dwóch spacji obok siebie).

Ale przecież są znaki specjalne, prawda? Taka na przykład "twarda spacja". Istnieje tekst preformatowany gdzie możesz sobie tych spacji obiok siebie postawić ile chcesz, i przeglądarka wszystkie je skrzętnie wyświetli.

Dzięki.

1.wstawiłem z rozpędu bo mam te dane, o dacie najwyższej i najniższej wartości, w arudino mega z mojego systemu, typu danych nie zmieniłem, bo to tylko była próba zabudowania pierwszej tabelki w phpmyadmin...

2.maksymalna i minimalna wartość z czujnika, zapisuje arduino j.w.

3. nic nie będzie, bo w arduino tego nie ma, ....ale pewnie będzie w nowym systemie który razem i wspólnie zbudujemy;-)

To była tylko moja pierwsza i testowa tabelka, sprawdzalem jak to się robi...

17 minut temu, ethanak napisał:

Bo formatowanie tekstu osiąga się znacznikami, a nie liczeniem spacji.

sprintf.... ktoś mnie kiedyś uczył....,

a liczenie spacji to jeszcze z arduino mi zostało:-D

Edytowano przez SOYER

Udostępnij ten post


Link to post
Share on other sites
5 minut temu, SOYER napisał:

1.wstawiłem z rozpędu bo mam te dane, o dacie najwyższej i najniższej wartości, w arudino mega z mojego systemu, typu danych nie zmieniłem, bo to tylko była próba zabudowania pierwszej tabelki w phpmyadmin...

Czyli arduino robi to, co powinna robić baza danych?

 

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Arduino robi to teraz w moim systemie o ktorym możesz przeczytać na pierwszych stronach tego tematu. Bazy danych jeszcze nie mam, dopiero będziemy ją robić,  wtedy zapewne dane z czujników pójdą prosto do naszej pięknej, nowej bazy danych  i arduino nie będzie musiało ich już zapisywać:-D

Jest baza dannych na serwerze Blynka, dzięki temu mam min. wykresy z czujników, ale teraz budują swoją, własną, na miarę moich możliwości i to nie bedzie moje ostatnie słowo...;-)

Pomożecie?

Edytowano przez SOYER

Udostępnij ten post


Link to post
Share on other sites

No to zacznijmy od tego: ponieważ już wiesz jak powinna wyglądać funkcja odczytująca dane z bazy (co najwyżej zmieni się zapytanie, ale część PHP-owa pozostanie bez zmian) - doprowadź całość do takiego stanu, że pozostanie tylko zabawa z bazą danych.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »

×