Skip to main content

Control wifi, hotspot and hostname of Raspberry Pi

Project description

rpi-networking

Control wifi, hotspot and hostname of Raspberry Pi

Requirments

Python3.10+

Installation

Using pip:

pip3 install rpi-networking 

Using poetry

poetry add rpi-networking

Prepare system

Automatically

Via curl

sh -c "$(curl -fsSL https://raw.githubusercontent.com/MarkParker5/rpi-networking/master/setup.sh)"

Or via wget

sh -c "$(wget https://raw.githubusercontent.com/MarkParker5/rpi-networking/master/setup.sh -O -)"

Manually

Dependencies

sudo apt update ; \
sudo apt upgrade -y ; \
sudo apt install dnsmasq hostapd dhcpd -y

Give permissions to edit configuration files (optional)

Give user permission to edit configuration files so python doesn't have to be run as root (sudo)

files=(
  "/etc/dnsmasq.conf"
  "/etc/hosts"
  "/etc/default/hostapd"
  "/etc/hostapd/hostapd.conf"
  "/etc/network/interfaces"
  "/etc/network/interfaces.d"
  "/etc/wpa_supplicant/wpa_supplicant.conf"
)

for file in "${files[@]}"; do
  sudo chown "$USER" "$file"
  sudo chmod 644 "$file"
done;

Docs

Configuration

There are functions for initial configuration setup.

# rpi_networking.configuraion

def write_interfaces():

def write_default_hostapd():

def write_hostapd_conf():

def write_dnsmasq_conf():

def write_wpa_supplicant(country: str = "GB"):

def write_hosts():

def write_all(): # calls all functions above

In most cases you only need to call write_all() once to setup all configuration files.

Hostname

# rpi_networking.hostname

def set_hostname(hostname: str):
    
def restart_interfaces():  # apply new hostname without reboot

Hotspot

# rpi_networking.hotspot

def is_hotspot_up() -> bool:

def start_hotspot() -> bool:
    
def stop_hotspot() -> bool:

The bool return value is True if function finished without errors (exit code 0), else False

Status

# rpi_networking.status

def is_wlan_connected() -> bool:

def is_eth_connected() -> bool:

def is_wlan_global_connected() -> bool: # 'global' means internet access

def is_eth_global_connected() -> bool:

def is_wps_running() -> bool:

WiFi

# rpi_networking.wifi

country: str = 'GB' # country code for wpa_supplicant

class InterfaceBusyException(Exception): 
    pass

class Cell:
    ssid: str
    quality: float
    frequency: str
    encrypted: bool

class Network:
    ssid: str
    psk: str
    id_str: str

# Functions

def read_networks() -> list[Network]:

def write_networks(networks: list[Network]):

def add_network(ssid: str, psk: str):

def reconnect() -> bool: # connect to the best available network

def scan() -> Generator[Cell, None, None]:

def start_wps() -> bool:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rpi_networking-0.1.9.tar.gz (5.5 kB view details)

Uploaded Source

Built Distribution

rpi_networking-0.1.9-py3-none-any.whl (7.5 kB view details)

Uploaded Python 3

File details

Details for the file rpi_networking-0.1.9.tar.gz.

File metadata

  • Download URL: rpi_networking-0.1.9.tar.gz
  • Upload date:
  • Size: 5.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for rpi_networking-0.1.9.tar.gz
Algorithm Hash digest
SHA256 0350a924a2e977b27b2bf46e93e6e4e5e0ded55d5d453099bef4c5d2dd6db621
MD5 19484138a02c4e3db1ed5112dbc38aa4
BLAKE2b-256 f354d8e0695d9763c82d3827bb279cde9c2e098b817f3b1d3d2597d0da08100a

See more details on using hashes here.

File details

Details for the file rpi_networking-0.1.9-py3-none-any.whl.

File metadata

File hashes

Hashes for rpi_networking-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 eba42301897d472a55fd8264f4b468aa4ac65f37ab960e58a03f55f94c6bbb6f
MD5 f71d1eed9060ad3832b3685f9f22c501
BLAKE2b-256 835641520b9c72713ed46f08630d29dccf66112c77f7561bc7107cb22695f8eb

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page