Mysql и ethernet shield
- Войдите на сайт для отправки комментариев
Пт, 25/01/2019 - 17:31
Всем добрый вечер!
Столкнулся с проблемой,которую не могу решить(Казалось бы, бери и клей)
Имеется сайт,у которого тумблеры работают на базе данных mysqli. Т.е они принимают значения от БД, а также они могут и изменять эти значия в БД.
Вопрос в том,как мне передать эти самые "значения" в мой ethernet shield? Знаю что он может отправлять Get и Post запросы, но не могу применить это таким образом, чтобы постоянно запрашивать данные из бд и вносить в ethernet.
Идея была в том, чтобы в php из БД постоянно запрашивать параметры значений и отправлять их в ethernet shield. Может кто нибудь подскажет,как именно мне реализовать данную идею?
Никак. Нельзя передавать данные по инициативе сервера. Наоборот, можно - клиент может постоянно запрашивать эти данные у сервера, а уж сервер (на php или ещё на чём) будет обрабатывать эти запросы и возвращать клиенту значения.
Т.е. Ваш шилд может слать скажем раз в полсекунды или даже чаще запросы серверу, а тот пусть отвечает.
И еще - Ethernet Shield сам по себе не умеет отправлять ни GET, ни POST.
Вообщем так, мой шилд работает в режиме клиента.От этого буду как то топтать
Правильно.
Немного недопонимаю,помогите пожалуйста. Как мне ответить моему шилду (Т.е POST или GET запросу) ?
Вот пришел запрос (нужных переменных) серверу ==> сервер запрос принял => затем сервак в бд покопался, записал значения из БД в переменные - а ответ то в виде этих переменных как дать?
Если можно, есть какой нибудь простенький пример этого?
В виде переменных - никак. В любом случае отдаёте текстом или бинарным форматом. Клиент сделал print() /к примеру GET /record?id=1234/, потом read(), пока avialable(). А как интерпретировать то, что прочитали - ваше личное дело.
Ну отсылает то он правильно, в начале php кода только добавить doctype html
Вопрос в том сможет ли ТС распарсить корректно ответ.
Я обычно возвращаемый текст обрамляю в некую последовательность символов например ~\
Ниже пример, в 60 строке написать возвращаемое значение
<?php include_once $_SERVER['DOCUMENT_ROOT'] . '/includes/helpers.inc.php'; ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title> Add data to DB </title> </head> <body> <?php function tempToFloat($arg) { if ($arg >= 2000) { $res = ($arg-2000); $res = ($res / 10); $res = (0-$res); } else { $res = ($arg / 10); } return $res; } if ((isset($_GET['id'])) and (isset($_GET['rs'])) and (isset($_GET['t0']))) { try { if (isset($_GET['t2'])) { $sql = 'INSERT INTO `thermometers` (`i_id`, `c_strelay`, `f_t1`, `f_t2`, `f_t3`) VALUES (:p1, :p2, :p3, :p4, :p5)'; } else if (isset($_GET['t1'])) { $sql = 'INSERT INTO `thermometers` (`i_id`, `c_strelay`, `f_t1`, `f_t2`) VALUES (:p1, :p2, :p3, :p4)'; } else { $sql = 'INSERT INTO `thermometers` (`i_id`, `c_strelay`, `f_t1`) VALUES (:p1, :p2, :p3)'; } $s = $pdo->prepare($sql); $s->bindValue(':p1', $_GET['id']); $s->bindValue(':p2', $_GET['rs']); $s->bindValue(':p3', tempToFloat($_GET['t0'])); if (isset($_GET['t1'])) { $s->bindValue(':p4', tempToFloat($_GET['t1'])); } if (isset($_GET['t2'])) { $s->bindValue(':p5', tempToFloat($_GET['t2'])); } $s->execute(); } catch (PDOException $e) { $error = 'Error ' . $e->getMessage(); include $_SERVER['DOCUMENT_ROOT'] . '/includes/error.html.php'; exit(); } echo "OK"; exit(); } ?> </body> </html>С серверной частью вроде разобрался,работает исправно. Скриншоты приложены ниже, а также код:
1 идёте в apache/log и там смотрите ошибку на запрос если вдруг серверу что то не нравится
2 ручками в браузере запрос get сформируйте корректный и сравните с тем что формируется в скетче
andycat,
если Вы будете продолжать отвечать ТС, он никогда не научится вставлять скетч. Закон рынка - нет спроса - нет предложения.
У меня возник следующие вопросы:
Как мне получить ответ в читаемом виде?
Как я могу из тега <body> взять мою переменную?
Как мне получить ответ в читаемом виде?
Ндя....
1) Всё можно.
Немного мемуаров: в сумме у меня неделя ушла на написание вего этого с прямыми руками. Багаж знаний: минимум: язык ардуино(и С++), PHP, SQL. Желательно HTML, CSS, JS, BASH.
у меня неделя ушла на написание вего этого ... Багаж знаний: минимум: язык ардуино(и С++)
Судя по этому замечанию и потому, что ты всё же что-то написал, можно сделать вывод, что написать можно и вовсе без багажа знаний :)