Metadata-Version: 2.4
Name: nielit-raspberrypi-practicals
Version: 1.0.1
Summary: Professional Python package for NIELIT Raspberry Pi Practical programs
Author-email: NIELIT Ropar <info@nielit.gov.in>
License: NIELIT Ropar License
Project-URL: Homepage, https://www.nielit.gov.in
Project-URL: Documentation, https://github.com/nielit/nielit-raspberrypi-practicals
Project-URL: Repository, https://github.com/nielit/nielit-raspberrypi-practicals
Project-URL: Bug Tracker, https://github.com/nielit/nielit-raspberrypi-practicals/issues
Keywords: raspberry-pi,nielit,iot,gpio,sensors,practicals,electronics,hardware,education
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Operating System :: POSIX :: Linux
Classifier: Topic :: Education
Classifier: Topic :: System :: Hardware
Classifier: Intended Audience :: Education
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: gpiozero
Provides-Extra: sensors
Requires-Dist: adafruit-circuitpython-dht; extra == "sensors"
Requires-Dist: adafruit-blinka; extra == "sensors"
Provides-Extra: display
Requires-Dist: smbus2; extra == "display"
Provides-Extra: rfid
Requires-Dist: mfrc522; extra == "rfid"
Requires-Dist: spidev; extra == "rfid"
Provides-Extra: iot
Requires-Dist: paho-mqtt; extra == "iot"
Provides-Extra: web
Requires-Dist: flask; extra == "web"
Provides-Extra: all
Requires-Dist: adafruit-circuitpython-dht; extra == "all"
Requires-Dist: adafruit-blinka; extra == "all"
Requires-Dist: smbus2; extra == "all"
Requires-Dist: mfrc522; extra == "all"
Requires-Dist: spidev; extra == "all"
Requires-Dist: paho-mqtt; extra == "all"
Requires-Dist: flask; extra == "all"
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-mock; extra == "dev"
Requires-Dist: black; extra == "dev"
Requires-Dist: ruff; extra == "dev"
Requires-Dist: mypy; extra == "dev"
Requires-Dist: build; extra == "dev"
Dynamic: license-file

# NIELIT Raspberry Pi Practicals

[![PyPI version](https://img.shields.io/pypi/v/nielit-raspberrypi-practicals.svg)](https://pypi.org/project/nielit-raspberrypi-practicals/)
[![PyPI Downloads](https://img.shields.io/pypi/dm/nielit-raspberrypi-practicals.svg)](https://pypi.org/project/nielit-raspberrypi-practicals/)
![Python Version](https://img.shields.io/badge/python-3.9%2B-blue)
![License](https://img.shields.io/badge/license-NIELIT%20Ropar-green)

A professional, production-quality Python package containing 20 Raspberry Pi practical programs developed for the NIELIT curriculum.

**PyPI Package:** [pypi.org/project/nielit-raspberrypi-practicals/](https://pypi.org/project/nielit-raspberrypi-practicals/1.0.0/)

## Features
- **Comprehensive**: 20 distinct practical programs covering basic GPIO to advanced IoT concepts.
- **Hardware Agnostic**: Tested on Raspberry Pi 3, 4, and 5 running Raspberry Pi OS (Bookworm).
- **Educational**: Code is structured for learning, featuring clear type hints, docstrings, and robust error handling.
- **Modern Python**: Built with modern packaging (`pyproject.toml`) and tooling.
- **CLI Utility**: Built-in command-line tool to list, query, and run practicals.

## Quick Start

### Installation

Requires Python 3.9+. It's recommended to use a virtual environment.

```bash
# Basic installation
pip install nielit-raspberrypi-practicals

# Install with all optional hardware dependencies
pip install nielit-raspberrypi-practicals[all]
```

### Basic Usage

List all available practicals:
```bash
nielit-rpi list
```

Check system capability:
```bash
nielit-rpi check
```

Run a specific practical:
```bash
nielit-rpi run 3_2
```

## Practical Index

| # | Title | Hardware | Difficulty |
|---|---|---|---|
| 3_1 | System Information | RPi only | Beginner |
| 3_2 | GPIO LED Output | LED + resistor | Beginner |
| 3_3 | Push Button Input | Push button | Beginner |
| 3_4 | Button Controlled LED | Button + LED | Beginner |
| 3_5 | Traffic Light Controller | 3 LEDs | Beginner |
| 3_6 | PWM LED Brightness | LED | Beginner |
| 3_7 | Buzzer Alert | Active buzzer | Beginner |
| 3_8 | Servo Motor Control | SG90 servo | Intermediate |
| 3_9 | HC-SR04 Distance | HC-SR04 sensor | Intermediate |
| 3_10 | DHT11 Temp & Humidity | DHT11 sensor | Intermediate |
| 3_11 | I2C LCD Display | 16x2 I2C LCD | Intermediate |
| 3_12 | PIR Motion Detection | PIR sensor | Intermediate |
| 3_13 | Relay Control | Relay module | Intermediate |
| 3_14 | LDR + MCP3008 ADC | MCP3008 + LDR | Intermediate |
| 3_15 | MFRC522 RFID | MFRC522 module | Advanced |
| 3_16 | SQLite Sensor Logger | RPi only | Intermediate |
| 3_17 | Flask GPIO Web Control | LED + LAN | Advanced |
| 3_18 | MQTT Publisher | Network | Advanced |
| 3_19 | MQTT Subscriber + GPIO | LED + MQTT | Advanced |
| 3_20 | Smart Home Capstone | PIR + LED | Advanced |

## Supported Environment
- **Hardware**: Raspberry Pi 3 / 4 / 5
- **OS**: Raspberry Pi OS (Bookworm)
- **Python**: 3.9+

## Development Setup

```bash
git clone https://github.com/lovnishverma/nielit-raspberrypi-practicals.git
cd nielit-raspberrypi-practicals
pip install -e .[dev,all]
```

## Testing

```bash
pytest
```

## License
NIELIT Ropar License. Copyright (c) 2026 NIELIT Ropar.
