Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 23 wrz 2019, o 01:25


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 
Autor Wiadomość
PostNapisane: 2 mar 2017, o 17:16 
Offline
Użytkownik

Dołączył(a): 25 wrz 2015
Posty: 380
Lokalizacja: Rypin/Flekkefjord
Pomógł: 5

Witam

Chciałbym przedstawić Wam kolejną odsłonę tym razem w moim wydaniu amatorskiej stacji meteo. Sporo pracy za mną ale również sporo przede mną dlatego w tylule zamieściłem dopisek "in progress" :)
Na razie stacja działa w oparciu o trzy urządzenia zbierające dane i przesyłające je do wspólnej bazy danych na serwerze WWW. Są to: moje urządzenie oparte na ATmega 32, Raspberry Pi2 oraz ESP 8266. Całość informacji z bazy danych jest prezentowana na stronie http://wachcio.pl/meteo
ObrazekObrazek
Zacznę od tych ukończonych (przynajmniej od jakiegoś czasu nie rozbudowywanych) części. Na Raspberry Pi jest zainstalowany Linux Raspbian a na nim system monitorungu temperatury "Nettemp" autorstwa techfreak (http://techfreak.pl/nettemp/). Jest to bardzo rozbudowane narzędzie mogące obsługiwać wiele rodzajów czujników zarówno po kablu jak i poprzez wi-fi. Po więcej informacji o tym jak działa i z czym współpracuje odsyłam strony. Ja wykorzystuję go do zbierania informacji z kilku czujników DS18B20 zainstalowanych w moim domu, dwóch DHT22 do badania warunków na zewnątrz oraz urządzenia opartego na ESP8286 który czyta temperaturę w akwarium i przesyła do nettemp. Nettemp powstał głównie na potrzeby monitoringu pieca CO lecz tak naprawdę to był początek i "połknięcie" bakcyla :) Zapisuje informacje we własnej bazie danych na karcie SD ale robi również kopię na serwerze WWW w internecie.
Kolejnym i dla mnie najważniejszym urządzeniem w całym systemie ze względów edukacyjnych jest urządzenie oparte na ATmedze 32. Piszę urządzenie trochę na wyrost gdyż na razie wszystko działa na zestawie ATB. Uważam, że taka droga pozwala uniknąć wielu kłopotów i przez to może nawet zniechęcenia. A więc na razie mam napisany działający kod obsługujący czujniki oraz maszt na którym są one zamocowane. Myślę, że na tym etapie nie ma sensu ich publikacji gdyż nie są na tyle dopracowane i przejrzyste. Chciałem bardzo podziękować kolegom mirekk36 oraz majster (http://avrtech.pl/) gdyż dzięki ich kodom, poradnikom oraz drukom 3D (osłona radiacyjna) powstaje urządzenie.
Chciałbym omówić pokrótce zasadę działania programu:
- dane z wszystkich czujników są wysyłane raz na 60 sekund
- z czujnika wiatru liczona jest liczba impulsów w ciągu sekundy, wybierana wartość najwyższa oraz łączna w ciągu minuty. Dzięki temu uzyskuję wartość porywu wiatru w ciągu sekundy, średnią prędkość wiatru w ciągu minuty z dokładnością do 0.04 km/h oraz co najważniejsze unikam wszelkich problemów z obliczeniami na liczbach zmiennoprzecinkowych w AVR. Po stronie WWW przeliczam również wartości z km/h na m/s
- z czujnika opadów liczona ilość impulsów
- czujnik kierunku wiatru oparty jest na dzielniku rezystorowym przez co każdy z 16 kierunków ma konkretny przedział ADC co zamieniam na liczbę int z zaresu 0-15 (0 - południe, 15 - NNW zgodnie z ruchem wskazówek zegara). Do bazy danych MySQL wysyłam dominantę kierunku z tego przedziału. Konkretne kody i dokładne wyjaśnienie zamieścił majster na http://avrtech.pl/ oraz ja w temacie topic17229.html
- dwóch czujników DS18B20 oprogramowanych sposobem z Yellowbook
- czujnik ciśnienia BMP180 również żółta książka Mirka
- czujnik wilgotności SHT21 do którego kody oparłem na znalezionych na forum do SHT21 i HTU21D

Jak już wspomniałem wszystkie dane są zapisywane do wspólnej bazy danych MySQL na serwerze WWW. Przy tej operacji również bardzo pomocne okazały się poradniki Mirka https://www.youtube.com/playlist?list=P ... YPVGUZRnJj oraz wpisy kolegi majster na avrtech.pl

Dalsze prace wykonujące obliczenia innych danych np. temperatury odczuwalnej czy punktu rosy są wykonywane na serwerze. ATmega wywołuje adres strony PHP która oblicza i wstawia dane do bazy.

Składnia: [ Pobierz ] [ Ukryj ]
język php
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Ostatnim etapem jest wyświetlenie informacji dla użytkownika czyli pobranie danych z bazy MySQL odpowiednie ich przeliczenie (zamiana impulsów na prędkości wiatru w km/h i m/s, dzielenie przez 100 wartości temperatur itd.). Ogólnie strona WWW korzysta z technik PHP, CSS i MySQL. Poprzez CSS udało mi się zbudować wygląd strony podobnie jak Windowsowe kafelki gdzie jeden "kafelek" odpowiada jednemu czujnikowi. Daje mi to bardzo dużą elastyczność w dopasowywaniu się do różnych rozdzielczości ekranu.

Składnia: [ Pobierz ] [ Ukryj ]
język php
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Składnia: [ Pobierz ] [ Ukryj ]
język css
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Mając już podstawowy szkielet urządzenia nie pozostaje mi nic innego jak "przestudiowanie" jeszcze raz Mirka poradników odnośnie Eagle, wybranie jakiejś hermetycznej obudowy i projektowanie oraz wykonanie PCB. Oczywiście zamieszczę stosowne aktualizacje w tym wątku :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2017, o 17:53 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 24788
Lokalizacja: Szczecin
Pomógł: 927

no no - ładna konstrukcja ;)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2017, o 18:34 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 672
Pomógł: 29

Nigdy nie zapisuj haseł, tokenów itd bezpośrednio w pliku "wykonawczym", bo jak się php wyłoży z powodu jakiegoś błędu to wszystko jest podane na talerzu.
Oraz konstrukcja typu
wachcio napisał(a):
$ins = @mysql_query("INSERT INTO AVR SET predkosc_wiatru='$_GET['predkosc_wiatru']'

są niedopuszczalne - teraz ja zamiast 'predkosc_wiatru' podaje
Składnia: [ Pobierz ] [ Ukryj ]
język php
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


więc powstaje ci
Składnia: [ Pobierz ] [ Ukryj ]
język php
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


musisz zawsze escapeować zapytania zamiast
Składnia: [ Pobierz ] [ Ukryj ]
język php
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

robisz
Składnia: [ Pobierz ] [ Ukryj ]
język php
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2017, o 19:15 
Offline
Użytkownik

Dołączył(a): 25 wrz 2015
Posty: 380
Lokalizacja: Rypin/Flekkefjord
Pomógł: 5

Harry napisał(a):
Nigdy nie zapisuj haseł, tokenów itd bezpośrednio w pliku "wykonawczym", bo jak się php wyłoży z powodu jakiegoś błędu to wszystko jest podane na talerzu.
Oraz konstrukcja typu
wachcio napisał(a):
$ins = @mysql_query("INSERT INTO AVR SET predkosc_wiatru='$_GET['predkosc_wiatru']'

są niedopuszczalne - teraz ja zamiast 'predkosc_wiatru' podaje
Składnia: [ Pobierz ] [ Ukryj ]
język php
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


więc powstaje ci
Składnia: [ Pobierz ] [ Ukryj ]
język php
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


musisz zawsze escapeować zapytania zamiast
Składnia: [ Pobierz ] [ Ukryj ]
język php
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

robisz
Składnia: [ Pobierz ] [ Ukryj ]
język php
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Nie jestem ekspertem w PHP i "wstrzykiwaniu" MySQL dlatego takie rady są dla mnie cenne. W jaki sposób bezpieczniej umieszczać tego rodzaju dane? Poprzez include, require_once?

Co do drugiej uwagi to niestety mój kod po zmianie przez Ciebie zaproponowanej nie działa...



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2017, o 19:35 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1404
Pomógł: 54

Fajny projekt :-)
Co do programowania webowego to można polecić na początek cykl poradników na YT użytkownika Pasja Informatyki.
Na pewno dużo skorzystasz

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2017, o 19:40 
Offline
Użytkownik

Dołączył(a): 15 lut 2012
Posty: 336
Lokalizacja: Bydgoszcz
Pomógł: 11

wachcio do jakichkolwiek operacji na bazy polecam używać PDO - na w3schools jest pełny opis. Z użyciem pdo dodawanie danych do bazy może wyglądać tak:

Składnia: [ Pobierz ] [ Ukryj ]
język php
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


To jest jeden ze sposobów zabezpieczenia swoich zapytań sql.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2017, o 20:01 
Offline
Użytkownik

Dołączył(a): 25 wrz 2015
Posty: 380
Lokalizacja: Rypin/Flekkefjord
Pomógł: 5

Dzięki za podpowiedzi. Kanał Mirosława Zelenta znam i oglądałem poradniki o wstrzymaniu SQL. Postaram się bardziej zabezpieczyć mój skrypt. Jednak strona do logowania jest dużo bardziej narażona niż mój skrypt który leży sobie gdzieś na serwerze i AVR wywołuje go z jemu tylko znanymi parametrami.

Wysłane z mojego Huawei P8 lite



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2017, o 20:18 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 672
Pomógł: 29

sorry miało być
Składnia: [ Pobierz ] [ Ukryj ]
język php
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

chociaż sam preferuje addslashes($_GET['xxx'])

PDO to inna bajka, w którymś php miały zniknąć "czyste"(brakuje mi słowa :P) polecenia typu mysql_connect, miało być właśnie tylko myscli i PDO, więc na to też trzeba zwrócić uwagę.
Każda strona zawierająca bezpośredni dostęp dla użytkownika jest narażona, niema znaczenia czy to logowanie czy nie, zwłaszcza że przez wstrzyknięcie kodu można np zmienić hasło znajdujące się w innej tabeli.

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 2 mar 2017, o 20:31 
Offline
Użytkownik

Dołączył(a): 25 wrz 2015
Posty: 380
Lokalizacja: Rypin/Flekkefjord
Pomógł: 5

Dziękuję Harry. Chodziło mi o plik gdzie dodawane są rekordy do bazy. Do tego skryptu użytkownik nie ma dostępu i w 95% nie będzie wiedzieć o jego istnieniu. Jeśli chodzi o plik do wyświetlania to jak zabezpieczyć dane logowania do bazy?

Wysłane z mojego Huawei P8 lite



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 mar 2017, o 03:24 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 672
Pomógł: 29

Cytuj:
Przykład z drop table błędny - w phpie nie można zrobić łączonej komendy w tej sposób, obetnie wszystko po średniku.

Php to widzi jako string, problem zaczyna być jak trzeba to przekazać do sql'a(tu mi się wyglebia), ale dla chcącego nic trudnego, sztuka dla sztuki, hihi ;)
Pobawię się z tym ciągu dnia - muszę się z tym przespać, niemam niestety klona jak Mirek :(

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 mar 2017, o 11:35 
Offline
Użytkownik

Dołączył(a): 25 wrz 2015
Posty: 380
Lokalizacja: Rypin/Flekkefjord
Pomógł: 5

Harry tylko jeśli testujesz to na moim skrypcie to poproszę o mniej inwazyjne komendy niż DROP TABLE :)

Wysłane z mojego Huawei P8 lite



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 mar 2017, o 12:00 
Offline
Użytkownik

Dołączył(a): 14 sie 2016
Posty: 672
Pomógł: 29

No dobrze spróbujemy z TRUNCATE ... ;)

_________________
Moje porady są błędne,nie czytać,zbanować od razu.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 mar 2017, o 13:44 
Offline
Tech-support
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3796
Lokalizacja: Grudziądz
Pomógł: 143

Fajnie projekcik wygląda :)
Widzę że osłona radiacyjna dotarła do Ciebie w całości :)
Jak wrażenia z jej wykonania ??

Fajnie stronka zaczyna wyglądać :)
Powodzenia Wachcio w dalszych pracach :)

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 mar 2017, o 17:18 
Offline
Użytkownik

Dołączył(a): 25 wrz 2015
Posty: 380
Lokalizacja: Rypin/Flekkefjord
Pomógł: 5

majster oczywiście, że dotarła. Jest idealnie dopasowana więc jestem oczywiście bardzo zadowolony. Delikatnie przypominam się o schemat płytek które kupiłem od Ciebie... :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 mar 2017, o 20:26 
Offline
Tech-support
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3796
Lokalizacja: Grudziądz
Pomógł: 143

wachcio napisał(a):
majster oczywiście, że dotarła. Jest idealnie dopasowana więc jestem oczywiście bardzo zadowolony. Delikatnie przypominam się o schemat płytek które kupiłem od Ciebie... :)


Kurka tak mi się teraz zdawało jak czytałem twój pierwszy post czy ci wysyłałem ...
sorka podaj maila na PW i odrazu ci podsyłam schemat, boom, i rozkład elementów na pcb :)

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 sty 2019, o 16:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 sty 2014
Posty: 91
Lokalizacja: Łódź
Pomógł: 0

Ładne ładne ;) Szanuję za wkład !



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2019, o 01:08 
Offline
Użytkownik

Dołączył(a): 25 wrz 2015
Posty: 380
Lokalizacja: Rypin/Flekkefjord
Pomógł: 5

Dziękuję. Pracuję właśnie nad nową wersją strony która wyświetla wyniki pomiarów i umożliwia proste historyczne dane statystyczne. http://wachcio.pl/meteo_vue



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 15 maja 2019, o 20:15 
Offline
Tech-support
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3796
Lokalizacja: Grudziądz
Pomógł: 143

wachcio napisał(a):
Dziękuję. Pracuję właśnie nad nową wersją strony która wyświetla wyniki pomiarów i umożliwia proste historyczne dane statystyczne. http://wachcio.pl/meteo_vue


Widziałem rewelacyjnie wygląda :)

Mam wrażenie patrząc na pomiary że padło Tobie Rpi a AVR nadal świetnie działa :)

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 18 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 2 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO