Skocz do zawartości

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


SOYER

Pomocna odpowiedź

(edytowany)

Id wyleciało:

-- phpMyAdmin SQL Dump
-- version 4.6.6deb4
-- https://www.phpmyadmin.net/
--
-- Host: localhost:3306
-- Czas generowania: 29 Sty 2019, 09:50
-- 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` (
  `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 (`czas`);

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

 

Teraz dobrze byłoby chyba wysłać do malinki jakieś dane.

Mam kilka pytań.

W domu jest główny router światłowodowy rozsyłający też własne wi-fi powiedzmy o nazwie "1", do niego podpięty jest przewodem drugi router(?, acces point?) w piwnicy, ktory rozsyła swoje własne wi-fi o nazwie powiedzmy "2". Do tego drugiego mam podpięty przewodem arduino z ethernet shieldem. Do tego drugiego jest podpięte też przewodem kolejne urządzenie które rozsyła trzecie wi-fi "3", choć to akurat chyba nie ważne.

Teraz tak, RPi chcę zamontować w tej samej szafce co arduino, więc najłatwiej byłoby inernet podpiąć kablem do urządzonka "2", ew. przez w-fi do sieci "2" bo w tym miejscu ma najsilnieszy sygnał. Jak wysylać dane, z arduino najbliżej i najłatwiej 0,5 m przewodu i któryś protokół. Jednak pozostaje ESP pracujące w sieci "1" z którego i tak informacje do RPi musiałyby iść przez neta. Więc moim zdaniem nie ma co komplikować sytuacji tylko z arduino też wysyłać przez neta.

Można by oczywiście w sytuacji posiadania RPi na miejscu, wywalić całkiem arduino i wszystko, prócz ESP wpiąć do RPi, ale na razie wolałbym tego uniknąć. Bo to kolejna robota do zrobienia, może na następną zimę...

Oczywiście nadal czekam na rozwiązanie sprawy stałego IP, ale myślę, że za 2-3 tgodnie będzie załatwione.

Jeszcze jedno, mógłbym to sprawdzić doświadczalnie ale, nie mam czasu biegać teraz z RPi i jeszcze go parować z nową siecią. Czy jeśli RPi będzie u mnie pracować w sieci wi-fi "2", a ja będę chcial się z nią połączyć z kompa w sieci wi-fi "1" to dam radę (teraz bez zew IP), jak wpiszę adres malinki, połączę się? Przecież wszystko i tak idzie przez ten główny router od sieci"1"....

Edytowano przez SOYER
Link do komentarza
Share on other sites

To wszystko zależy jak masz ustawione routery. Powinno być tak, że router światłowodowy pracuje jako normalny AP i przydziela adresy wewnętrzne wszystkim urządzeniom, a pozostałe routery są "przezroczyste". Wtedy co prawda fizycznie (biorąc pod uwagę WiFi) masz trzy sieci, ale logicznie jest jedna i wszystkie urządzenia powinny widzieć się nawzajem. Niestety - nie jestem w stanie pomóc, różne routery się różnie ustawia, nie wszystkie mają możliwość pracy w takim trybie lub jest ona ukryta pod jakąś przedziwną nazwą, po prostu jedyne co Ci pozostaje to wpiąć się jakimś lapkiem do każdej sieci i sprawdzić, co się widzi. Być może wystarczy na drugim routerze wyłączyć serwer DHCP (tak miałem w jakimś TP-linku), ale najlepiej zapytaj kogoś kto siedzi na bieżąco w tych domowych routerkach. Pewnie się jakaś dobra  dusza na Forum znajdzie.

Teraz pytanie: ESP wysyła dane do RPi czy do Arduino? Bo najprościej by było, gdyby to jeden tylko układ zawiadywał wysyłaniem danych do RPi. Ale i bez tego się da.

Jeśli Arduino widzi RPi - sprawa jest prosta i nie ma co dyskutować tylko trza robić. Jeśli tylko RPi widzi Arduino - sprawa wcale się specjalnie nie komplikuje, po prostu to aplikacja na RPi musiałaby odpytywać Arduino o dane. To samo z ESP.

Bo gdyby układy widziały się bezpośrednio - nie potrzebna by była żadna dodatkowa apka na RPi, zarówno Arduino jak i ESP wysyłałyby dane bezpośrednio do bazy... a gdyby to Arduino zawiadywał całą komunikacją (ja bym tak zrobił) to w ogóle sprawa byłaby prosta...

Aha, zapomniałbym. Tabelka jest ok.

Edytowano przez ethanak
  • Pomogłeś! 1
Link do komentarza
Share on other sites

15 minut temu, ethanak napisał:

wpiąć się jakimś lapkiem do każdej sieci i sprawdzić, co się widzi.

faktycznie, zamiast latać i przepinać RPi wystarczyło przepiąć lapka. Tak zrobiłem, efekt: komp podłączony do sieci"2" bez problemu widzi RPi w sieci "1".  Dzięki.

 

18 minut temu, ethanak napisał:

Jeśli Arduino widzi RPi - sprawa jest prosta i nie ma co dyskutować tylko trza robić. Jeśli tylko RPi widzi Arduino

wyciągając wnioski z powyższego eksperymentu to pewnie wszyscy się nawzajem widzą, choć nie wiem jak to sprawdzić....

Skoro komp z "2" widzi RPi na "1"  to ethernet shield też pewnie go widzi. IP scanner uruchomiony w sieci "2" widzi adres ESP i wszystkich urządzeń w "1". Jedynie co to arduino IDE nie widzi portu internetowego ESP (OTA) jesli komp jest w sieci "2". (ESP to "1")

 

19 minut temu, ethanak napisał:

Teraz pytanie: ESP wysyła dane do RPi czy do Arduino?

Teraz wysyła tylko na serwer Blynka, arduino nic nie wie o istnieniu ESP... Blynk to u mnie taka sieć rozproszona, dwa urządzenia wysyłają dane na ten sam serwer nic o sobie nie wiedząc, a ten serwer robi z tego jedną stronę z wynikami.

 

  • Lubię! 1
Link do komentarza
Share on other sites

no to trzeba będzie zrobić małą modyfikację - potrzebne będą dwie tabele (powiedzmy meteo dla arduino i meteo2 dla esp) aby nawzajem sobie nie przeszkadzały.

zrób to, ja będę przy kompie dopiero wieczorem, na telefonie mogę sobie tylko poczytać.

aha, i znajdź przy okazji coś co się nazywa "arduino mysql connector" - będzie potrzebne do wysyłania danych z arduino/esp na rpi.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

5 minut temu, ethanak napisał:

no to trzeba będzie zrobić małą modyfikację - potrzebne będą dwie tabele (powiedzmy meteo dla arduino i meteo2 dla esp) aby nawzajem sobie nie przeszkadzały.

a dlaczego nie mogą pakować danych do jednej tabeli?

Link do komentarza
Share on other sites

możesz ale po co sobie życie utrudniać? do rekordu musisz wstawić wszystkie dane, a skąd np. esp ma wiedzieć o tym co pomierzyło arduino?

w postgresql byłoby to proste (w miarę), ale mysql nie dopuszcza funkcji w klauzuli default.

  • Lubię! 1
Link do komentarza
Share on other sites

ciekawa ta biblioteka sql connector,  myślałem, że będziemy wysyłać same dane, a to wysyła gotowe zapytania INSERT... 

Po stronie serwera jeszcze trzeba pisać jakiś skrypt do odbioru tych danych? Jak to wygląda?? 

Link do komentarza
Share on other sites

Po stronie serwera nic nie trzeba - connector po prostu łączy się bezpośrednio z bazą.

Są pewne ograniczenia - cała kwerenda nie może być dłuższa niż 250 bajtów - ale w naszym przypadku nie ma to znaczenia.

Znaczy inaczej: po stronie serwera trzeba stworzyć użytkownika i dać mu odpowiednie granty do bazy - ale to już zrobisz w phpmyadminie.

  • Lubię! 1
Link do komentarza
Share on other sites

(edytowany)

hej, wgrałem ten szkic z connectora na początek by popróbować się połączyć:

#include <WiFi.h>                  // Use this for WiFi instead of Ethernet.h
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>

byte mac_addr[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

IPAddress server_addr(192,168,254,100);  // IP of the MySQL *server* here
char user[] = "xx";              // MySQL user login username
char password[] = "xx";        // MySQL user login password

// WiFi card example
char ssid[] = "eiNxxx";    // your SSID
char pass[] = "xxxxxx";       // your SSID Password

WiFiClient client;            // Use this for WiFi instead of EthernetClient
MySQL_Connection conn((Client *)&client);

void setup() {
  Serial.begin(115200);
  while (!Serial); // wait for serial port to connect. Needed for Leonardo only

  // Begin WiFi section
  int status = WiFi.begin(ssid, pass);
  if ( status != WL_CONNECTED) {
    Serial.println("Couldn't get a wifi connection");
    while(true);
  }
  // print out info about the connection:
  else {
    Serial.println("Connected to network");
    IPAddress ip = WiFi.localIP();
    Serial.print("My IP address is: ");
    Serial.println(ip);
  }
  // End WiFi section

  Serial.println("Connecting...");
  if (conn.connect(server_addr, 3306, user, password)) {
    delay(1000);
  }
  else
    Serial.println("Connection failed.");
  conn.close();
}

void loop() {
}

ale serial monitor mi wywala:

ets Jan  8 2013,rst cause:4, boot mode:(3,0)

wdt reset
load 0x4010f000, len 1384, room 16 
tail 8
chksum 0x2d
csum 0x2d
vbb28d4a3
~ld

Wgrywam to do nodeMCU... czy ta biblitoteka jest tylko do arduino...?

Edit 1h later:

zakomentowanie biblioteki wifi.h i dodanie biblioteki esp8266wifi.h powoduje, że nodeMCU łączy się z wifi ale dla bazy danych jest connection failed...

nie wiem o co biega z tym MAC adresem, w opisie szkicu jest :Note: The MAC address can be anything so long as it is unique on your network, tyle że ja mam w ipscannerze w inny sposób podane te macadresy i nie wiem czy mi się nie dublują czasem... 

jeszcze jedno: ten user i password to takie samo jak się loguję do phpmyadmin?

Edytowano przez SOYER
Link do komentarza
Share on other sites

A skąd ja, który nie jestem Tobą, mam wiedzieć jakim użytkownikiem się logujesz do phpmyadmina?

Pamięta, że w MySQL-u użytkownik to 'nazwa'@'host' - czyli jeśli założyłeś użytkownika dla localhosta to nie ma on prawa logować się z innego miejsca w sieci. Musisz założyć użytkownika dla właściwego hosta - najprościej będzie coś w stylu '192.168.%' (czyli dla sieci lokalnej).

Czyli coś w stylu (z mysql-owego roota):
 

create user 'soyer'@'%' identified by 'twojetajnehaslo';
grant all on 'nazwa_bazy'.* to 'soyer'@'%';

Co do macadresu - to dotyczy tylko shielda ethernet dla Arduino.

 

Link do komentarza
Share on other sites

(edytowany)
46 minut temu, ethanak napisał:

A skąd ja, który nie jestem Tobą, mam wiedzieć jakim użytkownikiem się logujesz do phpmyadmina?

pytałem czy ten user i password w szkicu dla ESP ma być taki sam jak loguję się do phpMyAdmin z kompa? 

użytkownik był założony jako ja@localhost...

Komp, esp i RPi są w tej samej sieci WiFi...  

Edytowano przez SOYER
Link do komentarza
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!

Anonim
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...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.