Доброго всем времени суток. Создаю тему человека крайне мало понимающего принцип работы MajorDoMo (PHP, БД, ООП и пр), но с большим желанием учиться. И желанием построить свою систему умного дома. Как новичок в этом деле, естественно просмотрел много тем форума и конкретно страницы куда отправляют новичков. Но многое не понятно, код очень большой и делает сразу много вещей (операций, таких как несколько реле, геркон и др). Но с кодом Arduino еще что-то понятно (хоть и далеко не все), потому что в моем арсенале есть ардуино и несколько датчиков, а в интернете много уроков для начинающих, то со сценариями и алгоритмами MajorDoMo полная непонятность.
К чему я это все. Прошу сделать хотя бы один единственный пример как зажечь и потушить светодиод на Arduino из MajorDoMo с подробным описанием создания классов и объектов (а конкретно как они взаимодействуют с ардуино). Из доступного: установленный MajorDoMo на Windows 8.1, Arduino UNO, Ethernet shield w5100, светодиод.
Самый простой пример
Модератор: immortal
-
- Сообщения: 10
- Зарегистрирован: Пн дек 07, 2015 10:29 pm
- Благодарил (а): 0
- Поблагодарили: 2 раза
Самый простой пример
- Рейтинг: 1.16%
-
- Сообщения: 354
- Зарегистрирован: Вт окт 09, 2012 8:05 am
- Откуда: Луза Кировская обл. Россия
- Благодарил (а): 20 раз
- Поблагодарили: 35 раз
Re: Самый простой пример
Для начала я бы посоветовал разобраться в ардуино раз уж у Вас есть некий набор. Вот есть простой и понятный скетч https://github.com/sochkasov/majordomo- ... rWebServer. ДАже можно без MajorDomo пробовать мигать светодиодом.
Т.е. надо включить светодиод на 5м контакте дуины вбиваем в браузере http://xx.xx.xx.xx/command?5=ON, http://xx.xx.xx.xx/command?5=OFF соответственно выключаем.
Это что касается ардуино.
С МДМ тут немного посложнее.
Т.е. надо включить светодиод на 5м контакте дуины вбиваем в браузере http://xx.xx.xx.xx/command?5=ON, http://xx.xx.xx.xx/command?5=OFF соответственно выключаем.
Это что касается ардуино.
С МДМ тут немного посложнее.
Linux версия. Ubuntu Server 16.04+2xArduinoMega+Eth_GW_Mysensors_10node+WeatherStation+Xiaomi
CONNECT
CONNECT
-
- Сообщения: 36
- Зарегистрирован: Вт ноя 17, 2015 5:52 pm
- Благодарил (а): 14 раз
- Поблагодарили: 7 раз
Re: Самый простой пример
Я примерно на таком же уровне нахожусь. Читаю сейчас учебник по PHP
Вот видео, которое мне показалось немного полезным, хотя не совсем про ардуино https://www.youtube.com/watch?v=KwUI0k8viqA

-
- Сообщения: 354
- Зарегистрирован: Вт окт 09, 2012 8:05 am
- Откуда: Луза Кировская обл. Россия
- Благодарил (а): 20 раз
- Поблагодарили: 35 раз
Re: Самый простой пример
Про интеграцию могу из простого только следующее. Самое простое что мне пришло в голову, это без использования объектов и методов.
Заходим в Панель управления - Меню управления. Создаем раздел с типом кнопка
с таким кодом
Эта кнопка будет включать по аналогии можно создать вторую кнопку которая будет выключать.
В серьез это можно не брать, это чисто попробовать как на страничке нажать кнопку чтобы светодиод загорелся.
Заходим в Панель управления - Меню управления. Создаем раздел с типом кнопка
с таким кодом
Код: Выделить всё
$cmdUrl = "http://xxx.xxx.xxx.xxx/command?5=ON";
getURL($cmdUrl,0);
В серьез это можно не брать, это чисто попробовать как на страничке нажать кнопку чтобы светодиод загорелся.
- Вложения
-
- пример.png (72.26 КБ) 7892 просмотра
- За это сообщение автора Anton_kulibin поблагодарил:
- serghei (Пт фев 12, 2016 6:13 pm)
- Рейтинг: 1.16%
Linux версия. Ubuntu Server 16.04+2xArduinoMega+Eth_GW_Mysensors_10node+WeatherStation+Xiaomi
CONNECT
CONNECT
-
- Сообщения: 10
- Зарегистрирован: Пн дек 07, 2015 10:29 pm
- Благодарил (а): 0
- Поблагодарили: 2 раза
Re: Самый простой пример
Итак! Благодаря даже первым четырем комментаторам (большое спасибо Anton_kulibin) удалось сделать задуманное.
Как все сделано. На ардуину с Ethernet шилдом загружен скетч
Скетч взят из интернета.
Как видно из кода подключен светодиод на пин -2. И это уже работает на команду из браузера 192.168.0.3/$1 и светодиод загорается, $2 - светодиод потухает.
Как управлять светодиодом из MajorDoMo. Я не стал ничего придумывать, а взял уже готовый объект Switch1 из класса Relays

В объекте Switch1 подредактировал методы turnOff и turnOn
Вставил php код
для turnOff
И $1 для turnOn соответственно.
И это работает!
Выражаю благодарность, тем кто дал совет, и назрели два вопроса
1. Светодиод потухает или загорается не моментально. Требуется время пока появится статус "ОК"

Как можно ускорить процесс?
2. У меня есть датчик DHT22, что нужно делать, что бы MaJorDoMo отображала текущую температуру и строила графики?
Мой вариант исполнения наверняка не бес недостатков, поэтому приму любой совет и критику.
Как все сделано. На ардуину с Ethernet шилдом загружен скетч
Код: Выделить всё
#include <SPI.h>
#include <Ethernet.h>
boolean incoming = 0;
// Введите MAC-адрес и IP-адрес вашего контроллера
// IP-адрес должен соответствовать вашей локальной сети
byte mac[] = { 0x00, 0xAA, 0xBB, 0xCC, 0xDA, 0x02 };
IPAddress ip(192,168,0,3); //<<< IP-АДРЕС
// Инициализация библиотеки Ethernet server
// с тем IP-адресом и портом который мы хотим использовать
// (порт 80 по умолчанию используется для HTTP):
EthernetServer server(80);
void setup()
{
pinMode(2, OUTPUT);
// запускаем Ethernet соединение и сервер:
Ethernet.begin(mac, ip);
server.begin();
Serial.begin(9600);
}
void loop()
{
// ожидание подключения клиентов
EthernetClient client = server.available();
if (client) {
// Запрос HTTP заканчивается пустой строкой
boolean currentLineIsBlank = true;
while (client.connected()) {
if (client.available()) {
char c = client.read();
// Если будет получен символ переноса строки и
// сама строка при этом пустая, значит
// HTTP-запрос закончился, можно отвечать
// считываем URL с символа "$" до первого пробела
if(incoming && c == ' '){
incoming = 0;
}
if(c == '$'){
incoming = 1;
}
// Определяем что было в URL: $1 или $2
if(incoming == 1){
Serial.println(c);
if(c == '1'){
Serial.println("ON");
digitalWrite(2, HIGH);
}
if(c == '2'){
Serial.println("OFF");
digitalWrite(2, LOW);
}
}
if (c == '\n') {
// началась новая строка
currentLineIsBlank = true;
}
else if (c != '\r') {
// в текущей строке ещё есть символы
currentLineIsBlank = false;
}
}
}
// даём время браузеру для получения данных
delay(1);
// закрываем соединение
client.stop();
}
}
Как видно из кода подключен светодиод на пин -2. И это уже работает на команду из браузера 192.168.0.3/$1 и светодиод загорается, $2 - светодиод потухает.
Как управлять светодиодом из MajorDoMo. Я не стал ничего придумывать, а взял уже готовый объект Switch1 из класса Relays

В объекте Switch1 подредактировал методы turnOff и turnOn
Вставил php код
Код: Выделить всё
$cmdUrl = "http://192.168.0.3/$2";
getURL($cmdUrl,0);
для turnOff
И $1 для turnOn соответственно.
И это работает!
Выражаю благодарность, тем кто дал совет, и назрели два вопроса
1. Светодиод потухает или загорается не моментально. Требуется время пока появится статус "ОК"

Как можно ускорить процесс?
2. У меня есть датчик DHT22, что нужно делать, что бы MaJorDoMo отображала текущую температуру и строила графики?
Мой вариант исполнения наверняка не бес недостатков, поэтому приму любой совет и критику.
- Рейтинг: 1.16%