Помогите "Чайнику"
Модератор: immortal
Помогите "Чайнику"
Добрый день! Пару месяцев назад совсем случайно нашел информацию о неком кантроллере Arduino, очень заинтересовался и погрузился в изучение этой штуковины. Загорелся идеей умного дома, тестировал небольшие проекты найденные в инете - и вот нашел проект MajorDomo. Имею некоторые знания и навыки работы с PHP и MySQL, однако ознакомившись с материалами на сайте и форуме, столкнулся с кучей проблем. Самая первая из них - никак не могу понять как все работает. Установил дистрибутив MajorDom, зашел в панель управления и немогу понять что к чему.
Сразу извиняюсь, может я совсем полный "чайник", и прошу знатоков объяснить С чего же начать? Может есть где-то детальное описание или объясните пошагово на примере обычного зажигания светодиода с помощью данной системы от создания кнопки на web странице, по нажатию которой Arduino зажигал бы светодиод и возвращал бы значение состояния этого светодиода на web, до скетча на контроллере и объясните, как происходит это взаимодействие.
Может стоит создать отдельную ветку на форуме именно для таких как я?
Заранее благодарен!
Сразу извиняюсь, может я совсем полный "чайник", и прошу знатоков объяснить С чего же начать? Может есть где-то детальное описание или объясните пошагово на примере обычного зажигания светодиода с помощью данной системы от создания кнопки на web странице, по нажатию которой Arduino зажигал бы светодиод и возвращал бы значение состояния этого светодиода на web, до скетча на контроллере и объясните, как происходит это взаимодействие.
Может стоит создать отдельную ветку на форуме именно для таких как я?
Заранее благодарен!
-
- Сообщения: 206
- Зарегистрирован: Сб дек 21, 2013 9:21 pm
- Откуда: Spain
- Благодарил (а): 1 раз
- Поблагодарили: 22 раза
Re: Помогите "Чайнику"
Мне так же помогло чтение этого документа:
http://smartliving.ru/Main/BasicsObjects
Особенно разница между шаблонными классами и объектами.
http://smartliving.ru/Main/BasicsObjects
Особенно разница между шаблонными классами и объектами.
Re: Помогите "Чайнику"
Andrei, как успехи?
у меня та же самая проблема что и у вас.. читаю ссылки те что дали выше...

-
- Сообщения: 968
- Зарегистрирован: Пт дек 06, 2013 11:30 am
- Откуда: Москва
- Благодарил (а): 71 раз
- Поблагодарили: 95 раз
Re: Помогите "Чайнику"
Я сам с нуля иду по этому пути
, все, что получается заношу в Библиотеку. И вам советую. Просто когда понимание приходит, уже пропадает желание вспоминать, как это было в начале.

-
- Сообщения: 210
- Зарегистрирован: Пт апр 12, 2013 2:27 pm
- Откуда: Уфа
- Благодарил (а): 28 раз
- Поблагодарили: 16 раз
Re: Помогите "Чайнику"
Что то никак не могу понять, как создать таблицу.
Вобщем мне нужно в базе данных db_terminal создать таблицу security с полями.
Создал тестовый скрипт, там прописал так:
Но почему то не создалась таблица.
Возможно нужно явно указывать к какой БД подключаться?
А как?
Так?
Вобщем мне нужно в базе данных db_terminal создать таблицу security с полями.
Создал тестовый скрипт, там прописал так:
Код: Выделить всё
CREATE TABLE IF NOT EXISTS `security` (
`camera` int(11) DEFAULT NULL,
`filename` char(80) NOT NULL,
`file_type` int(11) DEFAULT NULL,
`time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`text_event` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
KEY `time` (`time_stamp`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Возможно нужно явно указывать к какой БД подключаться?
А как?
Код: Выделить всё
mysql_select_db("db_terminal") or die(mysql_error());
Система на Неттоп 3Q Nettop Qoo!
(Intel Celeron J1800, 2x2410 МГц, 4096 Мб, HDD 1000 Гб, HDMI, VGA , Wi-Fi, Ethernet, Ubuntu 14.04.2)
Вторая система на Raspberry Pi 3.
D-Link DCS-930L/Broadlink RM2-Pro/BroadLink SP3 CC/Ginzzu HS-K07W
Я в CONNECT
(Intel Celeron J1800, 2x2410 МГц, 4096 Мб, HDD 1000 Гб, HDMI, VGA , Wi-Fi, Ethernet, Ubuntu 14.04.2)
Вторая система на Raspberry Pi 3.
D-Link DCS-930L/Broadlink RM2-Pro/BroadLink SP3 CC/Ginzzu HS-K07W
Я в CONNECT
-
- Сообщения: 78
- Зарегистрирован: Чт янв 16, 2014 2:47 pm
- Благодарил (а): 4 раза
- Поблагодарили: 31 раз
Re: Помогите "Чайнику"
DiArt, вы были на верном пути 
Имя БД указывается перед именем таблицы через точку.
Я не специалист в БД, но мне кажется, что нужно еще добавить поле `cam_id` в начало с AUTOINCREMENT и назначить его PRIMARY индексом. Для нормального индексирования таблицы.
Примерно так в :

Код: Выделить всё
CREATE TABLE IF NOT EXISTS `db_terminal`.`security` (
`camera` int(11) DEFAULT NULL,
`filename` char(80) NOT NULL,
`file_type` int(11) DEFAULT NULL,
`time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`text_event` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
KEY `time` (`time_stamp`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Я не специалист в БД, но мне кажется, что нужно еще добавить поле `cam_id` в начало с AUTOINCREMENT и назначить его PRIMARY индексом. Для нормального индексирования таблицы.
Примерно так в :
Код: Выделить всё
CREATE TABLE IF NOT EXISTS `db_terminal`.`security` (
`cam_id` int(11) NOT NULL AUTO_INCREMENT
`camera` int(11) DEFAULT NULL,
`filename` char(80) NOT NULL,
`file_type` int(11) DEFAULT NULL,
`time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`text_event` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`cam_id`),
KEY `time` (`time_stamp`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-
- Сообщения: 521
- Зарегистрирован: Вс апр 07, 2013 9:30 pm
- Откуда: Moscow
- Благодарил (а): 2 раза
- Поблагодарили: 58 раз
- Контактная информация:
Re: Помогите "Чайнику"
Имя БД указывается перед именем таблицы через точку, в случае если при подключении к MySQL не выбрана БД с данным именем, или выбрана другая база или даже при выборке данных.
Например у пользователя user, есть в mysql 2 базы: db_terminal и db_base.
И пользователь хочет вывести какие-нибудь данные из таблиц в этих базах.
тог да запрос будет примерно таким:
Соответственно при создании таблицы если указать db_base.security вместо db_terminal.security, то таблица будет создана в базе db_base. Вне зависимости от того, к какой из 2х баз пользователь подключился.
По поводу поля cam_id в принципе согласен, причем DiArt действительно был на верном пути...
На сколько можно судить по примеру создаваемой таблицы, поле camera подходит под первичный ключ(PRIMARY KEY).
Только его логичнее сделать как написал layet, а поле camera убрать.
На счёт автоинкремента не уверен, т.к. его использование на мой взгляд, зависит от конкретной задачи, но в большинстве случаев его можно создать.
Если выборка данных из этой таблицы будет осуществляться только по полю cam_id, то дополнительные индексы создавать не нужно. Если по каким-то другим полям и данных в таблице будет много, а судя по таблице их действительно будет много и выбираться данные могут по полям типа text_event, то могут понадобиться индексы на этих полях. Какие именно не скажу, т.к. зависит это от запроса по которому выбираются данные из таблицы.
индекс можно создать так:
Краткое описание индекса IX_SECURITY__TIMESTAMP:
IX - указывает что это индекс, SECURITY принадлежность индекса к таблице SECURITY, TIMESTAMP - имя индекса.
По имени полному названию индекса можно быстро определить к какой таблице он и полю/полям он относится.
Если в индекс составной, т.е. при выборке используются несколько полей, то внутри круглых скобок необходимые поля указываются через запятую, в том порядке в котором они участвуют в запросе.
Например у пользователя user, есть в mysql 2 базы: db_terminal и db_base.
И пользователь хочет вывести какие-нибудь данные из таблиц в этих базах.
тог да запрос будет примерно таким:
Код: Выделить всё
select s.camera, c.camera_model, c.camera_price
from db_terminal.security s, db_base.camera c
where s.camera = c.camera_id
По поводу поля cam_id в принципе согласен, причем DiArt действительно был на верном пути...
На сколько можно судить по примеру создаваемой таблицы, поле camera подходит под первичный ключ(PRIMARY KEY).
Только его логичнее сделать как написал layet, а поле camera убрать.
Код: Выделить всё
cam_id int(11) NOT NULL AUTO_INCREMENT
Если выборка данных из этой таблицы будет осуществляться только по полю cam_id, то дополнительные индексы создавать не нужно. Если по каким-то другим полям и данных в таблице будет много, а судя по таблице их действительно будет много и выбираться данные могут по полям типа text_event, то могут понадобиться индексы на этих полях. Какие именно не скажу, т.к. зависит это от запроса по которому выбираются данные из таблицы.
индекс можно создать так:
Код: Выделить всё
create index IX_SECURITY__TIMESTAMP on SECURITY
(
time_stamp
);
Краткое описание индекса IX_SECURITY__TIMESTAMP:
IX - указывает что это индекс, SECURITY принадлежность индекса к таблице SECURITY, TIMESTAMP - имя индекса.
По имени полному названию индекса можно быстро определить к какой таблице он и полю/полям он относится.
Если в индекс составной, т.е. при выборке используются несколько полей, то внутри круглых скобок необходимые поля указываются через запятую, в том порядке в котором они участвуют в запросе.
________________________________________________________
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
Majordomo (GitHub) на HP Microserver Gen8. OS Debian Stretch
-
- Сообщения: 210
- Зарегистрирован: Пт апр 12, 2013 2:27 pm
- Откуда: Уфа
- Благодарил (а): 28 раз
- Поблагодарили: 16 раз
Re: Помогите "Чайнику"
Спасибо за развернутые ответы LutsenkoDenis и layet
НО!
При создании в скрипте кода который указал уважаемый layet, а именно таблица все равно не создалась....
НО!
При создании в скрипте кода который указал уважаемый layet, а именно
Код: Выделить всё
CREATE TABLE IF NOT EXISTS `db_terminal`.`security` (
`cam_id` int(11) NOT NULL AUTO_INCREMENT
`camera` int(11) DEFAULT NULL,
`filename` char(80) NOT NULL,
`file_type` int(11) DEFAULT NULL,
`time_stamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`text_event` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`cam_id`),
KEY `time` (`time_stamp`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Система на Неттоп 3Q Nettop Qoo!
(Intel Celeron J1800, 2x2410 МГц, 4096 Мб, HDD 1000 Гб, HDMI, VGA , Wi-Fi, Ethernet, Ubuntu 14.04.2)
Вторая система на Raspberry Pi 3.
D-Link DCS-930L/Broadlink RM2-Pro/BroadLink SP3 CC/Ginzzu HS-K07W
Я в CONNECT
(Intel Celeron J1800, 2x2410 МГц, 4096 Мб, HDD 1000 Гб, HDMI, VGA , Wi-Fi, Ethernet, Ubuntu 14.04.2)
Вторая система на Raspberry Pi 3.
D-Link DCS-930L/Broadlink RM2-Pro/BroadLink SP3 CC/Ginzzu HS-K07W
Я в CONNECT
-
- Сообщения: 78
- Зарегистрирован: Чт янв 16, 2014 2:47 pm
- Благодарил (а): 4 раза
- Поблагодарили: 31 раз
Re: Помогите "Чайнику"
Ну прямо мистика какая-то.
А база db_terminal то существует?
Зайдите в phpmyadmin на вкладку SQL, вставьте текст запроса в поле и выполните его. А текст ошибки скопируйте сюда. Прежде чем вам писать я проверял запрос - он рабочий
По тексту ошибки вместе и разберемся, что там за мистика у вас.
А база db_terminal то существует?
Зайдите в phpmyadmin на вкладку SQL, вставьте текст запроса в поле и выполните его. А текст ошибки скопируйте сюда. Прежде чем вам писать я проверял запрос - он рабочий
