Найти - Пользователи
Полная версия: Странная работа библиотеки wifi
Начало » Python для новичков » Странная работа библиотеки wifi
1 2 3
dnstuff
Пишу на python3 web-морду для raspberry pi. На raspberry.local должны отображаться ip, температура процессора и т.д. В том числе и список видимых wi-fi сетей. Использовал библиотеку wifi
Скрипт
 import wifi
cells = wifi.Cell.all('wlan0')
wi=list(cells)
print(wi)
дает искомый список сетей, т.е. библиотека рабочая, wi-fi тоже работает, сети есть.
Проблема начинается, когда внедряю этот скрипт в основной код приложения (web-морда на flask). Всегда возвращается пустой список.
 from flask import render_template
from app import app
import wifi
import time
cells = wifi.Cell.all('wlan0')
time.sleep(1)
wi=list(cells)
@app.route('/')
@app.route('/index')
def index():
    return render_template('index.html', title='Home', wi=wi, cells=cells)

Подскажите, почему так происходит и как обойти.
Спасибо!
vic57
на rpi wifi есть? там вроде тока со свистком
http://robocraft.ru/blog/electronics/3162.html
py.user.next
В самом шаблоне страницы что написано?
dnstuff
на rpi wifi есть? там вроде тока со свистком
На pi 3 B есть. Говорю же, первый скрипт выдает актуальный список сетей.
В самом шаблоне страницы что написано?
Кроме заголовка только
 <p>{{wi}}</p>
В браузере показывает квадратные скобки (пустой список).
Сделал так: a=wi Интерпритатор ругается на несуществующий элемент. Так что проблема не в выводе в шаблон. Список реально пустой

Может, есть у кого на примете хорошая wi-fi-библиотека? Кроме этой нашел парочку, но на них с документацией как-то совсем плохо.
vic57
так ты сделай отдельный роут для теста типа
 @app.route('/wifi')
def get():
    cells = wifi.Cell.all('wlan0')
    wi=list(cells) 
    return '<br>'.join(wi)
имхо косяк в шаблоне. если в консоли работает - все должно выдаваться
dnstuff
vic57
так ты сделай отдельный роут для теста типа
Что-то не работает join. Если просто, допустим
 return '<br>wi-fi list:'
то текст выводит нормально. А если
 return '<br>wi-fi list:'.join(wi)
то вообще только пустой экран. То есть даже текста нет, но и ошибок тоже не выдает

А, ну да, с пустым списком так и должно получаться. Выходит, список действительно пуст.
vic57
запускай с
 app.run(debug=True)
в браузер надо отдавать строку, а не питон-переменные
 print(wi)
в консоли что выдает?
dnstuff
Так, вроде нащупал. Если выполнять flask run, то список пустой. Если sudo flask run, то выводит что нужно. Осталось понять, кому на что и как дать права.
vic57
Scanning requires root permission to see all the networks. If you are not root, iwlist only returns the network you are currently connected to.
dnstuff
Спасибо! А как настроить права, чтобы скрипт мог автономно работать? Пишут, что надо атрибуты папки /dev менять, но это не работает.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB