Skocz do zawartości

SOYER

Użytkownicy
  • Zawartość

    870
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    6

Wszystko napisane przez SOYER

  1. Krótki opis mojego projektu, zamieszczony również na zaprzyjaźnionym forum, a za pomoc i zaangażowanie, teraz i w przyszłości, dziękuję wszystkim pomocnym z forum FORBOTa : Do zbudowania układu posłużyły mi: klon Arduino MEGA, ethernet Shield do wyżej wymienionego, kilka(podłączony na razie jeden) czujników temperaturyDS18B20, dwa czujniki typu DHT11, ale zamienię je chyba na DHT22, czujnik ciśnienia i temperatury BMP280 I2C, moduł zegarowy RTC1307 I2C, enkoder z przyciskiem, wyświetlacz LCD 20×4 I2C, listwa diod programowalnych 8szt (będzie zamieniona na dwie po 4 szt), czujnik deszczu, buzzer bez generatora, tablet. Układ mierzy temperaturę w dwóch miejscach w domu, na zewnątrz temperaturę w słońcu, przy gruncie i 1m nad gruntem w cieniu. Dodatkowo mierzy ciśnienie atmosferyczne, wilgotność zewnętrzną i wewnętrzną oraz temperaturę wody w CO. Funkcją dodatkową jest alarm wywoływany przy pierwszych opadach deszczu, a także (na wyraźne życzenie żony) alarm informujący kiedy pralka w piwnicy skończyła pracę. Kolejną funkcją układu jest sterowanie pracą 8 przekaźników obsługujących min. bramę, furtkę, oświetlenie. O stanie pracy przekaźników informują programowalne diody LED. Enkoder służy do poruszania się po menu na LCD20x4(prawo, lewo, przycisk), każdy obrót i wciśnięcie jest sygnalizowane przez buzzer. Docelowo planuję dołożyć czujnik zanieczyszczenia powietrza, mierzący pył PM2,5, PM10. Wszystkie dane z czujników są na bieżąco wyświetlane i przewijane na LCD 20×4, po wciśnięciu przycisku enkodera wchodzimy w menu opcje gdzie możemy na LCD20x4 sprawdzić najwyższy i najniższy odczyt każdego z czujników, datę tego odczytu oraz zresetować pamięć dla każdego odczytu i czujnika z osobna. Pierwszą pozycją w menu opcje jest kolejne podmenu Włączniki, w którym możemy sterować poprzez enkoder wszystkimi ośmioma przekaźnikami. Każdy z przekaźników jest sterowany sygnałem z arduino idącym przez bramki OR do których dochodzą także sygnały z zewnętrznych włączników naściennych. Dopiero sygnał za bramką OR idzie do przekaźnika oraz dodatkowo jako potwierdzenie wraca do arduino. Dioda led informuje o włączeniu przekaźnika także, kiedy tenże jest włączony „poza arduino” przez włącznik naścienny. Informacja o tym fakcie wraca do arduino powodując odpowiednie zmiany zmiennych i na bieżąco aktualizując diody led i informacje wyświetlane na LCD 20×4. Osobną sprawą jest BLYNK który miał służyć początkowo tylko do kontroli przez telefon nad przekaźnikami, ale po poznaniu jego możliwości, całkowicie zmieniłem założenia i teraz to tablet z zainstalowanym Blynkiem jest głównym wyświetlaczem i sterownikiem całego układu. Na tablecie mam podmenu: przekaźniki, czujniki, max i min, historia, alarmy. W menu przekaźniki sterujemy z tableta i telefonu, w dowolnym miejscu na świecie, przekaźnikami, otrzymując z powrotem informację o faktycznym włączeniu przekaźnika(zmiana koloru widgeta oraz wyświetlonego na nim napisu) , także przez kogoś innego(przez włącznik ścienny, lub drugie urządzenie:tablet lub telefon). Choć poprzez udostępnienie tokena do naszego projektu takich urządzeń może być więcej. Drugie menu to wyświetlanie danych z wszystkich czujników odświeżane co 1 min, oraz mała „dioda led” migająca i informująca o prawidłowej komunikacji apka-arduino. Kolejne menu to ekran z rozwijanym podmenu na którym wyświetlone są nazwy wszystkich czujników i poprzez wybór któregoś z nich możemy sprawdzić(podobnie jak to było na LCD20x4), najniższą i najwyższą wartość i zresetować pamięć dla każdego czujnika osobno. Następne menu to historia, ja mam ustawione wyświetlanie na wykresach historii odczytów ciśnienia atmosferycznego i wigotności. Ostatnie menu to alarmy. Po pojawieniu się na odpowiednim pinie arduino sygnału z czujnika deszczu lub sygnału o końcu pracy pralki, na wyświetlaczu LCD20x4 przestaje się przewijać informacja o dacie, godzinie i odczytach z czujników, a wyświetla się info o alarmie z odpowiednią treścią, albo o pralce albo o deszczu. Dodatkowo listwa diod led miga jak szalona wszystkimi kolorami i sposobami. Po wciśnięciu enkodera lub upływie ustawionego czasu alarm wyłącza się. Informacja o alarmie pojawia się też na tablecie i telefonie, w sposób wizualny i dźwiękowy, poprzez wybraną melodię z pamięci talefonu/tableta. Dodam jeszcze, że do tabletu dam dorobić fajną ramkę, w której tenże tablet umocuję, dodatkowo w ramce umoieszczę listwy led informujące o stanie przekaźników, niezależnie od tabletu i wyświetlanego na nim menu, a ramka przy okazji będzie też kryć kabel zasilający tablet:-) To chyba tyle, jakby coś to pytajcie i doradzajcie:-)
  2. Zrobiłem ten max min i srednią. Najwięcej czasu zajęło mi opanowanie pokolorowania wkładanych przez jquery zmiennych, tak by podświetlały się na czerwono.... ach te nawiasy i przecinki... Zrobilem kolejne trzy skrypty php z zapytaniami: $sqlOdczyt="SELECT min(${czujnik}) FROM ${base} WHERE czas > DATE(DATE_SUB(NOW(), INTERVAL ${okres} DAY))"; $sqlOdczyt="SELECT max(${czujnik}) FROM ${base} WHERE czas > DATE(DATE_SUB(NOW(), INTERVAL ${okres} DAY))"; if($polaczenie->connect_errno!=0){ die("Error: ".$polaczenie->connect_errno."Opis: ".$polaczenie->connect_error); } $typ = $polaczenie->real_escape_string($typ); $sqlOdczyt="SELECT avg(${czujnik}) FROM ${base} WHERE czas > DATE(DATE_SUB(NOW(), INTERVAL ${okres} DAY))"; $odczyt=$polaczenie->query($sqlOdczyt); while($row = $odczyt->fetch_row()){ $result[] = $row; } echo json_encode($result); ?> ten ostatni to średnia, jak sprawić by wartość przesyłana miała tylko np. dwa miejsca po przecinku? EDIT: funkcja round() w kwerendzie chyba będzie najlepszym rozwiązaniem. skrypt od wykresów i wartości max/min/srednia: function okresCzujnik() { var okres = $( "#okres" ).val(); var czujnik = $( "#czujnik" ).val(); if (czujnik == "cisnienie"){var m = "hPa";var b = "mega";} else if (czujnik == "wilgZew"){var m = "%RH";var b = "mega";} else if ((czujnik == "tempZew")||(czujnik == "tempGrunt")||(czujnik == "tempSlonce")){var m = "°C";var b = "mega";} else if((czujnik == "pm1") || (czujnik == "pm2") || (czujnik == "pm10")){ var b = "pms";var m = "µg/m³";} $.ajax({url: "getMin.php", dataType: 'json', data:{b: b, c: czujnik, o: okres}, success: function(res){ $("#min").html('Wartość <span style="color:red;">minimalna</span> dla wybranego okresu i parametru wynosi: <span style="color:red;font-weight:bold;">'+res+' '+m+'</span>'); }}); $.ajax({url: "getSred.php", dataType: 'json', data:{b: b, c: czujnik, o: okres}, success: function(res){ $("#srednia").html('Wartość <span style="color:red;">średnia</span> dla wybranego okresu i parametru wynosi: <span style="color:red;font-weight:bold;">'+res+' '+m+'</span>'); }}); $.ajax({url: "getMax.php", dataType: 'json', data:{b: b, c: czujnik, o: okres}, success: function(res){ $("#max").html('Wartość <span style="color:red;">maksymalna</span> dla wybranego okresu i parametru wynosi: <span style="color:red;font-weight:bold;">'+res+' '+m+'</span>'); }}); $.ajax({url: "getChart.php", dataType: 'json', data:{b: b, c: czujnik, o: okres}, success: function(res){ wykres(res, "Wykres "+okres+"-dniowy", '#wykresy', m); }}); } $( "select" ).change(okresCzujnik);
  3. Nic strasznego nie widziałem w laleczce, uważałem, że będzie hit, jednak pokazałem filmik mojemu 7 letniemu synowi któremu nic nie jest straszne, ale powiedział, że ta lalka jest straszna, okropna, w sensie budząca strach. Zdziwko, ale widocznie coś w tym jest... On, fan robotów i transformersów, nie chce takiej...
  4. a co to ten explain... co tłumaczy;)?
  5. Działać działa, bo sprawdzam na bieżąco, po prostu próbuję zrozumiec zależności....
  6. ok, czyli jeśliby stosować mój przykład to powinno być tak: SELECT czas, cisnienie FROM mega WHERE ((czas > DATE(DATE_SUB(NOW(), INTERVAL 7 DAY))) && (cisnienie = (SELECT MIN(cisnienie)where czas > DATE(DATE_SUB(NOW(), INTERVAL 7 DAY))))) orderby czas desc limit 1
  7. Siedzę dzisiaj nad impelmentacją tego kalendarzowego wybierania okresu i wartości max, min i srednia. Na razie kombinuję nad zapytaniami do bazy, bo raczej muszę to zrobić na nowym skrypcie PHP. Takie zapytanie wydaje się działać, ale jest to na tyle zagnieżdżone, że wolę zapytać czy nie ma jakiegoś kardynalnego błędu w rozumowaniu: SELECT czas, cisnienie FROM mega WHERE ((czas > "2019-02-02") && (czas < "2019-02-14") && (cisnienie = (SELECT min(cisnienie)))) order by czas desc limit 1 SELECT avg(cisnienie) FROM mega WHERE ((czas > "2019-02-02") && (czas < "2019-02-03")) lub SELECT czas, cisnienie FROM mega WHERE ((czas > DATE(DATE_SUB(NOW(), INTERVAL 7 DAY))) && (cisnienie = (SELECT MIN(cisnienie)))) order by czas desc limit 1 SELECT avg(cisnienie) FROM mega WHERE (czas > DATE(DATE_SUB(NOW(), INTERVAL 7 DAY))) ??
  8. SOYER

    ESP8266 - totalne podstawy

    Poczytaj też tu
  9. SOYER

    ESP8266 - totalne podstawy

    Też to pezechodziłem;)
  10. <div id="tytul"><u>WYKRESY:</u></div> <div class="wstWybor" ><select id="okres"> <option selected disabled >Wybierz zakres czasu</option> <option value="7">Dane z 7 dni</option> <option value="14">Dane z 14 dni</option> <option value="30">Dane z 30 dni</option> <option value="90">Dane z 90 dni</option> <option>Dowolny okres czasu</option> </select> <select id="czujnik"> <option selected disabled>Wybierz czujnik</option> <option value="tempZew">Temperatura zewnętrzna</option> <option value="tempSlonce">Temperatura w słońcu</option> <option value="tempGrunt">Temperatura przy gruncie</option> <option value="cisnienie">Ciśnienie</option> <option value="wilgZew">Wilgotność</option> <option value="pm1">Stężenie pyłu PM1</option> <option value="pm2">Stężenie pyłu PM2,5</option> <option value="pm10">Stężenie pyłu PM10</option> </select> </div> <div id="wykresy"></div> function okresCzujnik() { var okres = $( "#okres" ).val(); var czujnik = $( "#czujnik" ).val(); if (czujnik == "cisnienie"){var m = "hPa";var b = "mega";} else if (czujnik == "wilgZew"){var m = "%RH";var b = "mega";} else if ((czujnik == "tempZew")||(czujnik == "tempGrunt")||(czujnik == "tempSlonce")){var m = "°C";var b = "mega";} else if((czujnik == "pm1") || (czujnik == "pm2") || (czujnik == "pm10")){ var b = "pms";var m = "µg/m³";} $.ajax({url: "getChart.php", dataType: 'json', data:{b: b, c: czujnik, o: okres}, success: function(res){ wykres(res, "Wykres "+okres+"-dniowy", '#wykresy', m); }}); } $( "select" ).change(okresCzujnik); function wykres(dane, naglowek, div, miano){ var dataset = [{label: naglowek, data: dane}]; var options = { legend: { show: true, labelBoxBorderColor: "#FF00CC", margin: [250,-50], backgroundOpacity: 0.9, }, series: { lines: { show: true, lineWidth:1, color: "#FF00CC"}, points: { radius: 1, fill: false, fillColor: "#FF00CC", show: false } }, colors:['#FF00CC','#CC0000'], grid: { hoverable: true, clickable: false, borderColor: '#CC0000', borderWidth: 1, labelMargin: 1, backgroundColor: '#FFF' }, yaxis: { axisLabel: miano, }, xaxis: { mode: "time", axisLabel: 'czas', }, } $.plot($(div), dataset, options); } Z telefonu: Zrobiłem osobną stronę, jak radziłeś. Znacząco to rozjaśniło kod. Pozmieniałem menu, wszystko działa z taba. Zostały mi max, min i średnia, odczytywanie głosowe;-), i co jeszcze?
  11. taki mały offtopic, @Treker, ten licznik odwiedzin wątku dobrze działa? Bo pamiętam jak patrzyłem koło 2 miesiące temu było 5000, a teraz dobija do 15000. Nie wiem ile z tego jest unikalnych użytkowników ale jakoś dziwnie, teatr dwóch aktorów:), nikt się nie dołącza...? ;))
  12. no i max, min i średnia za podany okres... ten selektor 7/14/30...może faktycznie już na podstronie, było by wygodniejsze... Ale kto to napisze i zgra;))? Siądę wieczorem... jak masz jeszcze jakieś pomysły to dajesz...
  13. Jak? Tak, bez problemu, odpisujesz w funkcji wykres tylko dodatkową wartość dane, no i trzeba je pobrać... Jeśli chodzi o opisy przy osi czasu to wyskakują automatycznie, zależnie od zasięgu, tyle że miesiąc in English, ale to jest ustawialne jak kojarzę... Druga kwestia to właśnie myślałem nad takim kalendarzem gdzie sobie wybieram okres od do i wyświetla wykres. Ale to na razie poza moim zasięgiem...
  14. Zrobiłem ten skrypt obsługi wykresów i ich wywolywanie: <script> function wykres(dane, naglowek, div, czujnik){ var dataset = [{label: naglowek, data: dane}]; var options = { legend: { show: true, labelBoxBorderColor: "#FF00CC", margin: -50, backgroundOpacity: 0.9, }, series: { lines: { show: true, lineWidth:1, color: "#FF00CC"}, points: { radius: 1, fill: false, fillColor: "#FF00CC", show: false } }, colors:['#FF00CC','#CC0000'], grid: { hoverable: true, clickable: false, borderColor: '#CC0000', borderWidth: 1, labelMargin: 1, backgroundColor: '#FFF' }, yaxis: { axisLabel: czujnik, min: -20, max: 35, }, xaxis: { mode: "time", axisLabel: 'czas', }, } $.plot($(div), dataset, options); } </script> $('#7dni').click(function(){ $('#container').hide(); $('#w14').hide(); $('#m1').hide(); $('#m3').hide(); $('#w7').show(); $.ajax({url: "getChart.php", dataType: 'json', data:{b:'mega', c: 'tempZew', o: '7'}, success: function(res){ wykres(res, "Wykres 7-dniowy", '#w7', "Temperatura zewnętrzna"); }}); $('#mnie').hide(); }); $('#14dni').click(function(){ $('#container').hide(); $('#w14').show(); $.ajax({url: "getChart.php", dataType: 'json', data:{b:'mega', c: 'tempZew', o: '14'}, success: function(res){ wykres(res, "Wykres 14-dniowy", '#w14', "Temperatura zewnętrzna"); }}); $('#m1').hide(); $('#m3').hide(); $('#w7').hide(); $('#mnie').hide(); }); $('#miesiac').click(function(){ $('#container').hide(); $('#w14').hide(); $('#m1').show(); $.ajax({url: "getChart.php", dataType: 'json', data:{b:'mega', c: 'tempZew', o: '30'}, success: function(res){ wykres(res, "Wykres 30-dniowy", '#m1', "Temperatura zewnętrzna"); }}); $('#m3').hide(); $('#w7').hide(); $('#mnie').hide(); }); $('#3miesiace').click(function(){ $('#container').hide(); $('#w14').hide(); $('#m1').hide(); $('#m3').show(); $.ajax({url: "getChart.php", dataType: 'json', data:{b:'mega', c: 'tempZew', o: '90'}, success: function(res){ wykres(res, "Wykres 90-dniowy", '#m3', "Temperatura zewnętrzna"); }}); $('#w7').hide(); $('#mnie').hide(); }); argumenty do wykres() będę musiał do tablicy zapisać jak pięknie pokazałeś, bo dużo się ich robi... i przy okazji też tablice do php-a... i zapytanie: $sqlOdczyt="select unix_timestamp(czas) * 1000, ${czujnik} from ${base} WHERE czas > DATE(DATE_SUB(NOW(), INTERVAL ${okres} DAY))"; Teraz to i tak muszę poprzerabiać, bo chcę w każdej podstronie z menu 7/17/30/90 dni mieć wybór którego czujnika ma dotyczyc wykres.... jakieś przyciscki, rozwiajane menu czy cóś... Choć może prościej by było zrobić na głównej podmenu historyczne z czujnikami, a potem wybór okresu czasowego. Pewnie na jedno wychodzi... Jakiś ciekawy pomysł na to??
  15. o tej funkcji to od razu pomyślałem jak pisałem ten kod, bo bez sensu byłoby przepisywanie go dla każdego wykresu osobno... jednak rano sprawdzałem czy mi to w ogóle zadziała, a jak zadziałało to się pochwaliłem i do pracy trza było iść... nawet dobrze, że się pochwaliłem, bo podrzuciłeś fajne przykłady;-).
  16. Ależ na początku jak zacząłeś mi pomagać to miałem tylko tego html jak kazał @Elvis, jakbyś wtedy kazał zaorać to pewnie tak bym zrobił. Chociaż nie wyobrażam sobie pracy na Lynxie. Otóż to, nie lepiej od razu wpaść do mojego wątku i napisać swoje zdanie.... @Treker notujesz wszystko;)?
  17. aaa, chodzi o to podmenu którego nie daje się podświetlić tabem... pisałeś, że trudno to zrobić ale da się tylko musisz poszukać te swoje szkice.... tak, zostawiłem to bo pisałeś że to odtworzysz w wolnej chwili... Działający skrypt pobierający dane z bazy i rysujący wykres: $('#14dni').click(function(){ $('#container').hide(); $('#w14').show(); $.ajax({url: "getChart.php", dataType: 'json', data:{from: 'tempZew', to:'*C', baza:'mega', nazwa: 'tempZew'}, success: function(res){ var data=res; var dataset = [ {label: "temperatura",data: data} ]; var options = { series: { lines: { show: true, lineWidth:1, color: "#FF00CC"}, points: { radius: 1, fill: false, fillColor: "#FF00CC", show: true } }, colors:['#FF00CC','#CC0000'], grid: { hoverable: true, clickable: false, borderColor: '#CC0000', borderWidth: 1, labelMargin: 1, backgroundColor: '#FFF' }, yaxis: { axisLabel: 'tempZew', min: 0, max:50 }, xaxis: { mode: "time", axisLabel: 'czas', }, } $.plot($("#w14"), dataset, options); }}); $('#m1').hide(); $('#m3').hide(); $('#w7').hide(); $('#mnie').hide(); }); Co poprawić? Oczywiście chętnie skorzystam z Twojej pomocy przy tym podmenu...
  18. sprawa menu? o czym piszesz?
  19. Nie jest wcale popularny, ot i cała prawda. Nie chodzi o to, że go wychwalam pod niebiosa, tylko uważam że arduino cloud do żadna nowość w porównaniu np. do blynka i innych rozwiązań, tyle, że na dzień dobry wygrywa marką. Dla mnie to zaden wybór czy kupić nodeMCU za 20 zeta i w pieć minut zrobic z niego IoT z blynkiem sterowany z całego świata z mojego telefonu, czy wydać 180 zeta na arduino z topornymi opcjami w chmurze. Ale zawsze mogą o mnie zawalczyć i mnie przekonać:-)).
  20. Absolutnie żadnych pretensji. Po prostu mocno mnie zaskoczyły Twoje słowa by nauczyć się tego z gotowców. Więc pytałem o przykłady. Jasno określiłem co chcę zbudować i zdziwiła mnie propozycja by oprzeć się na Blynku. Spokojnie, na to może będzie czas następnej zimy. Aplikacja na androida. Jednak ciągle Cię @Elviszapraszam do pomocy i dzielenia się radami w moim wątku. Twierdzisz, że można było łatwiej, bardzo bym się ucieszył. Jednak zaczynam rozumieć "szkołę" @ethanak, jak na początku dziwiłem się co to za przykłady mi każe robić to teraz dostrzegam w tym metodę. Od absolutny he podstaw zrozumienia zasad działania takich skryptów do praktycznych przykładów. Najważniejsze, że rozumiem każdą linijkę kodu który napisaliśmy. Tak więc jeszcze raz zapraszam i do komentowania i może też porzucenia jakiś pomysłów. @treker oczywiście że marka Arduino zrobi swoje i bardzo dobrze. Niekoniecznie, zupełnie legalnie możesz uruchomić Blynka na swoim serwerze i masz za free wszystkie widgety w każdej ilości.
  21. Słusznie dzięki, świetny przykład. W Twoim echo ma być tak jak napisałeś echo "${wynik} ${miano}"; czy echo ${wynik}. ${miano}; Zerknij jeszcze na mój przykładowy kod w poprzednim poscie... nowy skrypt php działa: <?php include 'logMeteo.php'; $poczatek = $_REQUEST['from']; $koniec = $_REQUEST['to']; $base = $_REQUEST['baza']; $typ = $_REQUEST['nazwa']; $result = array(); $polaczenie = new mysqli($host, $db_user, $db_pass, $db_name); if($polaczenie->connect_errno!=0){ die("Error: ".$polaczenie->connect_errno."Opis: ".$polaczenie->connect_error); } $typ = $polaczenie->real_escape_string($typ); $sqlOdczyt="select unix_timestamp(czas) * 1000, ${typ} from ${base} where czas between ${poczatek} and ${koniec} order by czas"; $odczyt=$polaczenie->query($sqlOdczyt); while($row = $odczyt->fetch_row()){ $result[] = $row[]; } $odczyt->close(); echo json_encode($result); ?> $.ajax({url: "getChart.php", dataType: 'json', data:{from: 'xxx', to:'xxx', baza:'mega', nazwa: 'tempZew'}, success: function(res){$('#w14').text(res);}}); teraz muszę wykombinować jak zamiast do wnętrza diva wstawić te dane do mojego var data w scrypcie wykresów.... i jak określić okresy wyszukiwania? wpisywanie daty i godziny(xxx-xx-xx yy:yy:yy)w kwerendę nie działa... trza to jakoś konwertować do unixa?
  22. Ok, takie pytanie: w PHP ma już jedno zapytanie "SELECT `${typ}` FROM `${base}` order by `czas` desc limit 1"; do obsługi przycików na stronie. Teraz chcę zrobic kilka kolejnych dla zapytań o różne okresy czasowe dla wykresów. Czy można poprostu ajaxem przeslać całą treść kwerendy do zmiennej w PHP...? $.ajax({url: "getData.php", data:{kwerenda: '"select unix_timestamp(czas) * 1000, ${typ} from ${tabelka} where czas between jakiś and jakiś order by czas"'}, success: function(res){$('#wyniki').text(res);}}); a w php: $xyz = $_REQUEST['kwerenda']; $odczyt=$polaczenie->query($xyz); Czy zrobić osobny skrypt php do którego będziemy odnosić się w ajaxie, a który będzie odpowiadał za wykresy... Chyba tak lepiej... bo przecież tu jeszcze inaczej zapisujemy, zwracamy wynik przez json_encode... czyli drugi skrypt PHP? ok, napisałem drugi skrypt: <?php include 'logMeteo.php'; $poczatek = $_REQUEST['od']; $koniec = $_REQUEST['do']; $base = $_REQUEST['baza']; $typ = $_REQUEST['nazwa']; $result = array(); $polaczenie = new mysqli($host, $db_user, $db_pass, $db_name); if($polaczenie->connect_errno!=0){ die("Error: ".$polaczenie->connect_errno."Opis: ".$polaczenie->connect_error); } $typ = $polaczenie->real_escape_string($typ); $sqlOdczyt="select unix_timestamp(czas) * 1000, ${typ} from ${base} where czas between ${poczatek} and ${koniec} order by czas";; $odczyt=$polaczenie->query($sqlOdczyt); while($row = $odczyt->fetch_row()){ $result[] = $row; } $odczyt->close(); echo json_encode($result); ?> @ethanakpytania: coś do poprawy? $row = $odczyt->fetch_row() gdzieś widziałem zapis fetch_array()... który jest poprawny i dlaczego? napisałeś: // nie robisz żadnych wyjątków dla zerowej ilości wyników, // to zrobisz po stronie javascriptu czyli brak słynnego if($row){}, możesz rozwinąć temat? jak to sprawdzić po stronie JS?
  23. Ależ ja nie mam żadnych wymagań co do metodologii nauki, wielokrotnie miesiac temu pytałem jak się zabrać do zrobienia tej strony. Nie pytałem, jak w trzy miesiące nauczyć się wszystich języków programowania koniecznych do zbudowania strony www. Ja chciałem zrobic tą jedną stronę i to Was pytałem jak to zrobić. To ty ethanak miałeś tyle chęci i odwagi by mnie przez to poprowadzić, ale też ty wybrałeś drogę, ja mialem zawiązane oczy... @ElvisNie, nie chcę z gotowców, to Ty do tego zachęcasz: A co najgorsze zamiast uczyć się dobrych rozwiązań z gotowych aplikacji, utrwalasz własne albo zasłyszane rozwiązania, wcale niekoniecznie najlepsze. Co do tych zasłyszanych i niekoniecznie najlepszych rozwiązań to musisz pytać @ethanak ... @Treker proszę wydziel te kilka ostatnich postów z tego wątku do mojego wiadomego albo do kosza, żeby nie zaśmiecać, a ja wracam do wykresów bo cenna godzina przeleciała.
  24. Nie rozumiem co mi próbujesz przekazać, że to odważne, delikatnie mówiąc jak pisze elvis??... tyle to wiem, więc czemu bezskutecznnie: To co w takim razie miały znaczyc te słowa??
  25. @Elvis no super, ale Blynka już mam, to wszystko już mogę robić, twórcy już to zaimplementowali, a ja to wykorzystuję, kupa widgetów, property itd. Teraz sobie wymysliłem stronę internetową. Bo tak. Ech - cały czas próbuję to koledze delikatnie przekazać... na razie bezskutecznie Czy Wy szanowni koledzy naprawdę uważacie, że ja chcę nauczyć się biegle obsługiwać i pisać w HTML, CSS, JS, JQuery, PHP, SQL i co tam jeszcze? Da się to zrobić korespondencyjnie, przez forum ??? Nie, ja chcę tylko zrobić z Waszą pomocą stronę internetową która wiadomo co będzie wyświetlać. Owszem nauczę się czegoś przy tym, być może nawet kiedyś będę tą strone rozwijał. Chcę to zrobic dla siebie, hobbystycznie. @ethanak pomógł i strona jest. Działa i wygląda dużo lepiej niż zakładalem miesiąc temu zaczynając tą przygodę. Wtedy @elvis sypałeś radami, a teraz wyskakujesz z pomysłem stworzenia strony internetowej na podstawie Blynka. Trza było rzucić ten pomysł miesiąc temu, to bym się do tego inaczej zabrał, ale wtedy pisałeś w moim moim wątku, że mam zacząć od prostego szablonu w HTML....pamiętam, a jak ten szablon zrobiłem to już nic nie radziłeś...
×