Как удаленно управлять Raspberry Pi БЕЗ VNC

Итак, чтобы вдаваться в подробности, я в основном пытаюсь создать программу (которая в конечном итоге станет графическим интерфейсом, но сейчас мне не нужно об этом беспокоиться), используя python, которая сможет взаимодействовать с raspberry pi. Чтобы уточнить, мне нужно, чтобы эта программа работала на компьютере с Windows, к которому Raspberry Pi может подключаться через Wi-Fi. Я говорю Wi-Fi, потому что в этой ситуации потребуется, чтобы в конечном итоге множество разных Raspberry Pi могли подключаться к одной и той же машине, принимать команды и выдавать результаты.

Я не хочу использовать VNC, потому что не хочу использовать графический интерфейс Raspberry Pi для удаленного запуска программ на Pi. Вот почему я более подробно изучил SSH, но снова столкнулся с проблемой. Возможность управлять pi по беспроводной сети через CMD — это хорошо, и все такое, но мне нужен удобный для пользователя метод, когда этот проект будет завершен, чтобы другие могли это сделать.

По сути, есть ли способ написать скрипт Python на моем ПК с Windows, который будет иметь методы, которые могут автоматически взаимодействовать с pi, как если бы это было через SSH? Например, если у меня есть метод с именем runProgram1() в сценарии на ПК, он будет автоматически запускать программу Program1 на Raspberry Pi по беспроводной сети? Я всегда могу преобразовать это в графический интерфейс позже, но проблема в том, чтобы получить скрипт Python в первую очередь.

Краткий обзор системных требований будет заключаться в том, чтобы компьютер с Windows мог иметь методы, которые могут делать такие вещи, как автоматическое включение / выключение pi, запуск программы, уже на pi, сбор данных, которые собирает pi, и выплевывание их на компьютер. Windows, и добавить больше pi в систему. И все это должно быть сделано без проводов, так как все пи будут вне досягаемости, когда они будут на своем последнем месте.

До сих пор я не нашел ничего подобного в Интернете, поэтому я надеялся, что гуру stackoverflow могут помочь. Я знаю, что это довольно много, чтобы спросить, но простое указание в правильном направлении помогло бы многим. Заранее спасибо!

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
0
211
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я предлагаю вам создать очень простой веб-сервер колба на вашем Raspberry Pi и отправлять запросы из графического интерфейса Windows.

from flask import Flask
app = Flask(__name__)

@app.route("/function_one")
def function_one():
    # Do something on rpi or start a subprocess
    return "Some message"

app.run(host='0.0.0.0')

Это должно работать на вашем rpi. Затем из графического интерфейса Windows вы можете просто отправить get с библиотекой Запросы на эту конечную точку, возможно, по щелчку или когда вы предпочитаете.

import requests
requests.get('http://<yout_rpi_local_ip>:5000/function_one')

Это вызовет функцию на вашем RPI из Windows. Вы даже можете защитить его с помощью аутентификации.

Это на самом деле звучит очень многообещающе! Я попытаюсь настроить его сейчас, пока это самое близкое к тому, что я искал, и я должен быть в состоянии работать с ним. Спасибо!!

AndreiF 15.03.2019 17:36

Я не понимаю, почему мой ответ заминусован :) Я в сети с оп-запросом.

Manuel Fedele 15.03.2019 17:49

Я не понимаю, что мой вопрос также был отклонен. Я предполагаю, что это какой-то интернет-тролль, я пытался проголосовать за него, но, поскольку я новичок на этом сайте, правила гласят, что он не появится :(

AndreiF 15.03.2019 18:03

поэтому я на самом деле не могу заставить код работать, он дает мне эту ошибку: запросы.исключения.ConnectionError: HTTPConnectionPool(host='%3c192.168.xx%3e', port=5000): превышено максимальное количество попыток с URL-адресом: / function_one (Вызвано NewConnectionError('<объект urllib3.connection.HTTPConnection по адресу 0x0000000003CC9160>: Не удалось установить новое соединение: [Errno 11001] Ошибка getaddrinfo',))

AndreiF 15.03.2019 20:32

Это происходит, даже если вы нажмете этот URL-адрес в своем браузере или просто если вы нажмете его из графического интерфейса? Кстати, я предлагаю вам открыть для этого еще один вопрос с тегом flask

Manuel Fedele 15.03.2019 20:38

Я получаю эту ошибку только тогда, когда запускаю ее в IDE Python с точным кодом, приведенным выше, но с соответствующим IP-адресом. Когда я набираю его в браузере, он просто не работает. Я набираю http://<192.168.12.1>:5000/function_one в браузере и скрипте python, но это не работает.

AndreiF 15.03.2019 20:46

Ой. < и > являются заполнителями для URL-адреса. Используйте 192.168.xx:5000/function_one без < и >

Manuel Fedele 15.03.2019 20:48

... Хорошо, это сработало. Спасибо за вашу помощь! Извините, я очень новичок во всем этом, ха-ха

AndreiF 15.03.2019 20:49

Другие вопросы по теме