подключение к ардуино к raspberry Pi по RS485

Если вы только начинаете осваивать систему MajorDoMo и чего-то не знаете или не можете понять, то задавайте свои вопросы в этой ветке.

Модератор: immortal

fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: подключение к ардуино к raspberry Pi по RS485

Сообщение fandaymon » Чт янв 17, 2019 7:18 pm

saf47 писал(а):
Чт янв 17, 2019 6:45 pm
skysilver писал(а):
Ср янв 16, 2019 12:54 pm
saf47 писал(а):
Ср янв 16, 2019 5:13 am
Принцип я понял, я не понял реализацию, какой-нибудь примерчик, код для ардуины, как запустить нужный скрипт на raberry, и как данные в majoredomo прочитать,. Если не трудно небольшой примерчик. У меня собрана сеть на ардуинах ,по rs485, свой протокол, я хочу все данные из сети в majordomo запихнуть.
Честно сказать таким колхозом мало кто занимается, поэтому готовых решений не найдешь. Нужно писать самому скетч для ардуины и принимающий скрипт на стороне МДМ.

Отталкиваться есть от чего. База знаний:
https://kb.smartliving.ru/arduino-bez-ethernetshield/
https://kb.smartliving.ru/kod-proshivki ... majordomo/
https://kb.smartliving.ru/chema-ispolzo ... a-arduino/

Пример цикла для чтения ком-порта в исходниках МДМ:
https://github.com/sergejey/majordomo/b ... direct.php
Подскажите пожалуйста, у меня ардуина передает в serial с помощью такой строку:

Код: Выделить всё

sprintf(buf, "GET /objects/?object=uno&op=m&m=data&status=%1 HTTP/1.0", (int)current_garage);
, я установил script по пути: majordomo / scripts /sample_cycle_arduino_direct.php, как мне теперь в majordomo данные получить? вообще я думал он должны в объект uno прописаться, или что -то не так?
А в sample_cycle_arduino_direct.php что вписано?
saf47
Сообщения: 27
Зарегистрирован: Ср ноя 21, 2018 2:04 pm
Благодарил (а): 5 раз
Поблагодарили: 0

Re: подключение к ардуино к raspberry Pi по RS485

Сообщение saf47 » Чт янв 17, 2019 7:24 pm

fandaymon писал(а):
Чт янв 17, 2019 7:18 pm
saf47 писал(а):
Чт янв 17, 2019 6:45 pm
skysilver писал(а):
Ср янв 16, 2019 12:54 pm
saf47 писал(а):
Ср янв 16, 2019 5:13 am
Принцип я понял, я не понял реализацию, какой-нибудь примерчик, код для ардуины, как запустить нужный скрипт на raberry, и как данные в majoredomo прочитать,. Если не трудно небольшой примерчик. У меня собрана сеть на ардуинах ,по rs485, свой протокол, я хочу все данные из сети в majordomo запихнуть.
Честно сказать таким колхозом мало кто занимается, поэтому готовых решений не найдешь. Нужно писать самому скетч для ардуины и принимающий скрипт на стороне МДМ.

Отталкиваться есть от чего. База знаний:
https://kb.smartliving.ru/arduino-bez-ethernetshield/
https://kb.smartliving.ru/kod-proshivki ... majordomo/
https://kb.smartliving.ru/chema-ispolzo ... a-arduino/

Пример цикла для чтения ком-порта в исходниках МДМ:
https://github.com/sergejey/majordomo/b ... direct.php
Подскажите пожалуйста, у меня ардуина передает в serial с помощью такой строку:

Код: Выделить всё

sprintf(buf, "GET /objects/?object=uno&op=m&m=data&status=%1 HTTP/1.0", (int)current_garage);
, я установил script по пути: majordomo / scripts /sample_cycle_arduino_direct.php, как мне теперь в majordomo данные получить? вообще я думал он должны в объект uno прописаться, или что -то не так?
А в sample_cycle_arduino_direct.php что вписано?
из вашего примера просто взял, и не чего в нем не менял, сейчас посмотрю его внимательно.
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: подключение к ардуино к raspberry Pi по RS485

Сообщение fandaymon » Чт янв 17, 2019 7:33 pm

saf47 писал(а):
Чт янв 17, 2019 7:24 pm
fandaymon писал(а):
Чт янв 17, 2019 7:18 pm
saf47 писал(а):
Чт янв 17, 2019 6:45 pm
skysilver писал(а):
Ср янв 16, 2019 12:54 pm
saf47 писал(а):
Ср янв 16, 2019 5:13 am
Принцип я понял, я не понял реализацию, какой-нибудь примерчик, код для ардуины, как запустить нужный скрипт на raberry, и как данные в majoredomo прочитать,. Если не трудно небольшой примерчик. У меня собрана сеть на ардуинах ,по rs485, свой протокол, я хочу все данные из сети в majordomo запихнуть.
Честно сказать таким колхозом мало кто занимается, поэтому готовых решений не найдешь. Нужно писать самому скетч для ардуины и принимающий скрипт на стороне МДМ.

Отталкиваться есть от чего. База знаний:
https://kb.smartliving.ru/arduino-bez-ethernetshield/
https://kb.smartliving.ru/kod-proshivki ... majordomo/
https://kb.smartliving.ru/chema-ispolzo ... a-arduino/

Пример цикла для чтения ком-порта в исходниках МДМ:
https://github.com/sergejey/majordomo/b ... direct.php
Подскажите пожалуйста, у меня ардуина передает в serial с помощью такой строку:

Код: Выделить всё

sprintf(buf, "GET /objects/?object=uno&op=m&m=data&status=%1 HTTP/1.0", (int)current_garage);
, я установил script по пути: majordomo / scripts /sample_cycle_arduino_direct.php, как мне теперь в majordomo данные получить? вообще я думал он должны в объект uno прописаться, или что -то не так?
А в sample_cycle_arduino_direct.php что вписано?
из вашего примера просто взял, и не чего в нем не менял, сейчас посмотрю его внимательно.
Ааа... Тогда должно работать, но вот та строчка что зашита в ардуино, она вызывает метод data объекта uno, передавая туда параметр status=1. Если мы хотим просто записать в status 1, то лучше /objects/?op=set&object=uno&p=status&v=1
saf47
Сообщения: 27
Зарегистрирован: Ср ноя 21, 2018 2:04 pm
Благодарил (а): 5 раз
Поблагодарили: 0

Re: подключение к ардуино к raspberry Pi по RS485

Сообщение saf47 » Чт янв 17, 2019 7:41 pm

у меня ардуина на порту в raspberry определяется как /dev/ttyUSB0 или ttyUSB1, скрипт сам определит порт подключения? И еще в Status я могу записать как один параметр так и строку параметров, например через запятую?
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: подключение к ардуино к raspberry Pi по RS485

Сообщение fandaymon » Чт янв 17, 2019 7:59 pm

saf47 писал(а):
Чт янв 17, 2019 7:41 pm
у меня ардуина на порту в raspberry определяется как /dev/ttyUSB0 или ttyUSB1, скрипт сам определит порт подключения? И еще в Status я могу записать как один параметр так и строку параметров, например через запятую?
Ммм... Порт должен быть ttyAСM, тогда скрипт сам подхватит. И скорость обмена там стоит 9600
В приведенном примере status это название свойства, в которое записывается значение, передающееся параметром v
Несколько свойств присваивать я не пробовал, не уверен что получится. У меня сделано так, что несколько свойств передаются несколькими строчками. Если это зачем-то нужно, тогда надо вызывать метод с несколькими параметрами, чтобы потом этот метод разнёс параметры по свойствам объекта
saf47
Сообщения: 27
Зарегистрирован: Ср ноя 21, 2018 2:04 pm
Благодарил (а): 5 раз
Поблагодарили: 0

Re: подключение к ардуино к raspberry Pi по RS485

Сообщение saf47 » Чт янв 17, 2019 8:06 pm

fandaymon писал(а):
Чт янв 17, 2019 7:59 pm
saf47 писал(а):
Чт янв 17, 2019 7:41 pm
у меня ардуина на порту в raspberry определяется как /dev/ttyUSB0 или ttyUSB1, скрипт сам определит порт подключения? И еще в Status я могу записать как один параметр так и строку параметров, например через запятую?
Ммм... Порт должен быть ttyAСM, тогда скрипт сам подхватит. И скорость обмена там стоит 9600
В приведенном примере status это название свойства, в которое записывается значение, передающееся параметром v
Несколько свойств присваивать я не пробовал, не уверен что получится. У меня сделано так, что несколько свойств передаются несколькими строчками. Если это зачем-то нужно, тогда надо вызывать метод с несколькими параметрами, чтобы потом этот метод разнёс параметры по свойствам объекта
с портом сейчас разберусь, а такой еще вопросик, в запросе

Код: Выделить всё

sprintf(buf, "GET /objects/?/objects/?op=set&object=uno&p=status&v=%1 HTTP/1.0", (int)current_garage);
, чтобы изменить только свойство, переменная которую необходимо записать помещаем в (int)current_garage, или я не прав?
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: подключение к ардуино к raspberry Pi по RS485

Сообщение fandaymon » Чт янв 17, 2019 8:20 pm

saf47 писал(а):
Чт янв 17, 2019 8:06 pm
fandaymon писал(а):
Чт янв 17, 2019 7:59 pm
saf47 писал(а):
Чт янв 17, 2019 7:41 pm
у меня ардуина на порту в raspberry определяется как /dev/ttyUSB0 или ttyUSB1, скрипт сам определит порт подключения? И еще в Status я могу записать как один параметр так и строку параметров, например через запятую?
Ммм... Порт должен быть ttyAСM, тогда скрипт сам подхватит. И скорость обмена там стоит 9600
В приведенном примере status это название свойства, в которое записывается значение, передающееся параметром v
Несколько свойств присваивать я не пробовал, не уверен что получится. У меня сделано так, что несколько свойств передаются несколькими строчками. Если это зачем-то нужно, тогда надо вызывать метод с несколькими параметрами, чтобы потом этот метод разнёс параметры по свойствам объекта
с портом сейчас разберусь, а такой еще вопросик, в запросе

Код: Выделить всё

sprintf(buf, "GET /objects/?/objects/?op=set&object=uno&p=status&v=%1 HTTP/1.0", (int)current_garage);
, чтобы изменить только свойство, переменная которую необходимо записать помещаем в (int)current_garage, или я не прав?
так правильней

Код: Выделить всё

sprintf(buf, "GET /objects/?op=set&object=uno&p=status&v=%1 HTTP/1.0", (int)current_garage);
этот sprintf подставляет вместо %1, то что находится во втором аргументе, т.е. в данном случае (int)current_garage, целую часть от того что хранится в переменной current_garage
Если где-нибудь в ардуиновском скрипте мы вычислили температуру и занесли её в переменную temp_room, а потом хотим записать её в свойство temp, то строчка будет выглядеть так

Код: Выделить всё

sprintf(buf, "GET /objects/?op=set&object=uno&p=temp&v=%1 HTTP/1.0", (int)temp_room);
saf47
Сообщения: 27
Зарегистрирован: Ср ноя 21, 2018 2:04 pm
Благодарил (а): 5 раз
Поблагодарили: 0

Re: подключение к ардуино к raspberry Pi по RS485

Сообщение saf47 » Чт янв 17, 2019 8:24 pm

fandaymon писал(а):
Чт янв 17, 2019 8:20 pm
saf47 писал(а):
Чт янв 17, 2019 8:06 pm
fandaymon писал(а):
Чт янв 17, 2019 7:59 pm
saf47 писал(а):
Чт янв 17, 2019 7:41 pm
у меня ардуина на порту в raspberry определяется как /dev/ttyUSB0 или ttyUSB1, скрипт сам определит порт подключения? И еще в Status я могу записать как один параметр так и строку параметров, например через запятую?
Ммм... Порт должен быть ttyAСM, тогда скрипт сам подхватит. И скорость обмена там стоит 9600
В приведенном примере status это название свойства, в которое записывается значение, передающееся параметром v
Несколько свойств присваивать я не пробовал, не уверен что получится. У меня сделано так, что несколько свойств передаются несколькими строчками. Если это зачем-то нужно, тогда надо вызывать метод с несколькими параметрами, чтобы потом этот метод разнёс параметры по свойствам объекта
с портом сейчас разберусь, а такой еще вопросик, в запросе

Код: Выделить всё

sprintf(buf, "GET /objects/?/objects/?op=set&object=uno&p=status&v=%1 HTTP/1.0", (int)current_garage);
, чтобы изменить только свойство, переменная которую необходимо записать помещаем в (int)current_garage, или я не прав?
так правильней

Код: Выделить всё

sprintf(buf, "GET /objects/?op=set&object=uno&p=status&v=%1 HTTP/1.0", (int)current_garage);
этот sprintf подставляет вместо %1, то что находится во втором аргументе, т.е. в данном случае (int)current_garage, целую часть от того что хранится в переменной current_garage
Если где-нибудь в ардуиновском скрипте мы вычислили температуру и занесли её в переменную temp_room, а потом хотим записать её в свойство temp, то строчка будет выглядеть так

Код: Выделить всё

sprintf(buf, "GET /objects/?op=set&object=uno&p=temp&v=%1 HTTP/1.0", (int)temp_room);
спасибо, с этим теперь все ясно. теперь ищу как порт на ttyAMA0 настроить
saf47
Сообщения: 27
Зарегистрирован: Ср ноя 21, 2018 2:04 pm
Благодарил (а): 5 раз
Поблагодарили: 0

Re: подключение к ардуино к raspberry Pi по RS485

Сообщение saf47 » Чт янв 17, 2019 8:28 pm

saf47 писал(а):
Чт янв 17, 2019 8:24 pm
fandaymon писал(а):
Чт янв 17, 2019 8:20 pm
saf47 писал(а):
Чт янв 17, 2019 8:06 pm
fandaymon писал(а):
Чт янв 17, 2019 7:59 pm
saf47 писал(а):
Чт янв 17, 2019 7:41 pm
у меня ардуина на порту в raspberry определяется как /dev/ttyUSB0 или ttyUSB1, скрипт сам определит порт подключения? И еще в Status я могу записать как один параметр так и строку параметров, например через запятую?
Ммм... Порт должен быть ttyAСM, тогда скрипт сам подхватит. И скорость обмена там стоит 9600
В приведенном примере status это название свойства, в которое записывается значение, передающееся параметром v
Несколько свойств присваивать я не пробовал, не уверен что получится. У меня сделано так, что несколько свойств передаются несколькими строчками. Если это зачем-то нужно, тогда надо вызывать метод с несколькими параметрами, чтобы потом этот метод разнёс параметры по свойствам объекта
с портом сейчас разберусь, а такой еще вопросик, в запросе

Код: Выделить всё

sprintf(buf, "GET /objects/?/objects/?op=set&object=uno&p=status&v=%1 HTTP/1.0", (int)current_garage);
, чтобы изменить только свойство, переменная которую необходимо записать помещаем в (int)current_garage, или я не прав?
так правильней

Код: Выделить всё

sprintf(buf, "GET /objects/?op=set&object=uno&p=status&v=%1 HTTP/1.0", (int)current_garage);
этот sprintf подставляет вместо %1, то что находится во втором аргументе, т.е. в данном случае (int)current_garage, целую часть от того что хранится в переменной current_garage
Если где-нибудь в ардуиновском скрипте мы вычислили температуру и занесли её в переменную temp_room, а потом хотим записать её в свойство temp, то строчка будет выглядеть так

Код: Выделить всё

sprintf(buf, "GET /objects/?op=set&object=uno&p=temp&v=%1 HTTP/1.0", (int)temp_room);
спасибо, с этим теперь все ясно. теперь ищу как порт на ttyAMA0 настроить
как вы думаете может какая то программа настраивает порт не правильно, у меня Arduino ID , Processing установлены, не могут случайно он порт переназначать?
fandaymon
Сообщения: 1554
Зарегистрирован: Сб янв 13, 2018 5:00 pm
Благодарил (а): 39 раз
Поблагодарили: 574 раза

Re: подключение к ардуино к raspberry Pi по RS485

Сообщение fandaymon » Чт янв 17, 2019 9:11 pm

saf47 писал(а):
Чт янв 17, 2019 8:28 pm
как вы думаете может какая то программа настраивает порт не правильно, у меня Arduino ID , Processing установлены, не могут случайно он порт переназначать?
Так надо посмотреть какие устройства в /dev есть. И если всё-таки действительно обмен идёт через ttyUSB0 или ttyUSB1, то просто в код цикла на PHP этот порт захардкодить (убрать с 34 по 48 строчки и вписать в 54 свой порт)
Ответить