Smart Cities - Low Carbon Computing Future

From Sensors in Schools
Jump to navigation Jump to search

Student Project: Building a Low-Carbon, Low-Energy ICT Infrastructure for an Offline Future

This project challenges students to design and implement an ICT infrastructure that functions efficiently without internet access, using Linux, old laptops, and Raspberry Pi devices. The project emphasizes sustainability, resourcefulness, and essential services for a community.

Goals

Design a Sustainable ICT Infrastructure:

  • Minimize energy consumption.
  • Use repurposed or low-energy hardware.

Provide Basic ICT Services:

  • Communication, knowledge access, and resource management.
  • Prepare for Internet Loss:
  • Preload essential software and content.
  • Plan for long-term, local operations.

Project Steps

1. Understand the Community’s Needs

Key Questions:

  • What essential ICT services are required (e.g., communication, education, record-keeping)?
  • How can technology address basic needs like water, food, and energy management?

Potential Services:

  • Local communication (text-based chat, email).
  • Offline libraries (Wikipedia, medical guides).
  • Environmental monitoring (water levels, air quality).
  • Collaborative tools (file sharing, project management).
  • Educational resources.

2. Choose and Prepare Hardware

Use Existing Equipment:

  • Old laptops as servers and workstations.
  • Raspberry Pis for lightweight tasks like networking or automation.

Hardware Considerations:

  • Low power consumption.
  • Compatibility with Linux.
  • Potential for solar or battery-powered operation.

Pre-Setup Steps:

  • Test hardware and replace failing components.
  • Install lightweight Linux distributions (e.g., Ubuntu Server, Raspbian Lite, or Lubuntu).

3. Set Up Essential ICT Services

Local Network (No Internet):

  • Use a Raspberry Pi as a DHCP and DNS server.
  • Set up a Wi-Fi router for local communication.

Offline File Sharing:

  • Install Nextcloud on a Raspberry Pi for local file hosting and collaboration.

Offline Libraries:

  • Download and host offline versions of:
  • Kiwix for Wikipedia and other content.
  • OpenStreetMap for navigation.
  • Localized educational materials (Khan Academy).

Messaging and Email:

  • Set up a local email server (e.g., Postfix).
  • Use lightweight chat systems (e.g., Matrix or Rocket.Chat) for local messaging.

Environmental Monitoring:

  • Use Arduino or Raspberry Pi with sensors to monitor environmental data (e.g., temperature, water levels).

4. Implement Energy-Efficient Practices

Low Power Consumption:

  • Use old laptops and Raspberry Pis in low-power mode.
  • Disconnect unnecessary peripherals (e.g., monitors when not in use).

Renewable Power:

  • Integrate solar panels or manual chargers for energy independence.

5. Create Local Automation Systems

Water Management:

  • Use IoT devices to automate irrigation or monitor water tanks.

Community Bulletin Board:

  • Set up a local website for news, announcements, and resource coordination.

Backup Systems:

  • Implement regular data backups on external drives.

6. Prepare for Internet Loss

Preloaded Content:

  • Download essential tools, software repositories, and manuals (e.g., Linux documentation, open-source software).

Skill Development:

  • Train students in using Linux, basic programming, and networking.

Redundant Systems:

  • Test systems to ensure reliability and redundancy in services.

Project Evaluation

Energy Efficiency:

  • Measure power consumption and compare it to traditional setups.

Functionality:

  • Demonstrate the ICT services provided (e.g., messaging, file sharing).

Resilience:

  • Evaluate how well the system operates in a simulated internet-free scenario.

Sustainability:

  • Assess the environmental impact (e.g., use of repurposed hardware, renewable energy).

Example Scenario

Hardware Setup:

  • A Raspberry Pi acts as a local server hosting Nextcloud and Kiwix.
  • Old laptops connect to the Pi via Wi-Fi for accessing services.

Services Provided:

  • Students can access offline Wikipedia, download educational content, and communicate using a local chat system.

Energy Source:

  • A small solar panel array powers the Raspberry Pi and a shared laptop.

Community Benefit: Students and community members can continue learning, sharing resources, and managing local projects without internet access.

Preparations Before Internet Goes Down

  • Pre-download essential resources and software.
  • Train students in Linux, networking, and hardware maintenance.
  • Test the system in a simulated offline environment.
  • Document the setup process for future reference.

This project not only teaches technical skills but also fosters creativity, problem-solving, and an understanding of sustainable practices in ICT. It prepares students to think critically about how technology can serve communities under resource-constrained conditions.

Installing and Removing Software using Terminal

Yes, you can install software on Lubuntu (a lightweight Ubuntu variant) using the sudo apt install command in the terminal. Lubuntu uses the same package management system as Ubuntu, so you can leverage the Advanced Package Tool (APT) for software installation.

Step-by-Step Instructions

  • Open the Terminal:Press Ctrl + Alt + T or find "Terminal" in your application menu.
  • Update the Package List:Before installing software, ensure your package list is up to date:
sudo apt update


Install the Software: Use the sudo apt install command followed by the software package name. For example, to install the VLC media player:

sudo apt install vlc
  • Confirm Installation: If prompted, press Y to confirm the installation.
  • Run the Installed Software:
  • Once installed, you can launch the software from the application menu or by typing its name in the terminal. For example:
vlc

Notes Checking Availability: To check if a package is available, use:

apt-cache search <software-name>

Uninstalling Software: To remove a package:

sudo apt remove <software-name>

Full Removal: To remove the package and its configuration files:

sudo apt purge <software-name>

Why Use the Terminal?

  • Efficiency: Faster and more direct than using graphical package managers.
  • Dependency Management: APT handles dependencies automatically.
  • Customizability: Advanced options like installing specific versions or debugging are easier via the terminal.
  • Lubuntu’s terminal-based software installation method is identical to other Ubuntu flavors, making it straightforward and efficient.


DHCP and DNS Server for Low Carbon Future

Setting up a Raspberry Pi as a DHCP and DNS server is a critical step in building a local network for a community, especially in a low-carbon future where internet access might be limited or unavailable. Here's how to set it up, its importance, use cases, coverage, and recommendations for deployment.

How to Set Up a Raspberry Pi as a DHCP and DNS Server

Step 1: Prepare Your Raspberry Pi

  • Install a lightweight Linux distribution, such as Raspberry Pi OS Lite.
  • Ensure the Pi has a static IP address for consistent identification in the network.

Step 2: Install the Required Software

Update the Pi:

sudo apt update && sudo apt upgrade

Install dnsmasq, which combines DHCP and DNS functionality:

sudo apt install dnsmasq

Step 3: Configure DHCP Services

Edit the dnsmasq configuration file:

sudo nano /etc/dnsmasq.conf

Add the following lines to define the DHCP range and DNS behaviour:

interface=wlan0      # Replace with your network interface
dhcp-range=192.168.1.50,192.168.1.150,24h
domain-needed
bogus-priv
expand-hosts
  • dhcp-range: Specifies the range of IP addresses to assign dynamically.
  • domain-needed: Ensures only valid domain names are queried.
  • expand-hosts: Expands the local hostname with a domain.

Restart the dnsmasq service to apply changes:

sudo systemctl restart dnsmasq

Step 4: Enable Static IP on the Raspberry Pi

Edit the network configuration file:

sudo nano /etc/dhcpcd.conf

Add:

interface wlan0
static ip_address=192.168.1.1/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

Restart the Pi to apply changes:

sudo reboot

Why is a DHCP and DNS Server Needed in a Low-Carbon Future?

1. Localized Networks:

  • A local DHCP server assigns IP addresses to devices in a local network, eliminating dependency on external ISPs.
  • A DNS server resolves domain names locally, enabling offline access to hosted services (e.g., file sharing, offline Wikipedia).


2. Resource Efficiency:

  • Reduces energy use by keeping data local and avoiding power-intensive internet infrastructure.
  • Raspberry Pi is highly energy-efficient compared to traditional servers.

3. Resilience:

  • Supports essential ICT services like communication, file sharing, and automation in scenarios where global connectivity is down.


How Do People Use It?

  • Education: - Access offline educational content hosted locally, such as Wikipedia and Khan Academy materials.
  • Communication: - Provide local messaging services using systems like Matrix or Rocket.Chat.
  • Resource Management:- Monitor and automate local resources, such as water and energy systems.
  • Collaboration: - Use tools like Nextcloud for file sharing and project management.
  • Entertainment: - Serve media content locally (e.g., movies, books).

Coverage

  • Typical Range: - The Raspberry Pi, combined with a Wi-Fi router, covers approximately 30-50 meters indoors and 100-200 meters outdoors, depending on obstacles and interference.
  • Range can be extended using repeaters or mesh networks.
  • Scalability: - For larger communities, multiple Raspberry Pis can be interconnected to create subnetworks.

Where Should It Be Based?

  • Centralized Location: - Place the Raspberry Pi in a central location within the community to ensure even Wi-Fi signal coverage.
  • Ensure it has access to a reliable power source (solar or battery backup).
  • Near Users: - Ideally close to the main areas where users access services (e.g., schools, community centers).

Additional Considerations

Security: - Secure the network with WPA2 encryption.

  • Use firewalls (e.g., ufw) to prevent unauthorized access.
  • Backups: - Regularly back up the Raspberry Pi's configuration to prevent data loss.
  • Power Backup: - Pair with solar panels or power banks for uninterrupted service.

By setting up a Raspberry Pi as a DHCP and DNS server, communities can create robust, low-carbon networks that provide critical services locally. This approach not only reduces energy consumption but also builds resilience and independence, ensuring ICT resources remain accessible in challenging scenarios.

Setting Up Nextcloud on Raspberry Pi

Setting up Nextcloud on a Raspberry Pi is a great way to create a private cloud server for file sharing, collaboration, and data storage. Here's a step-by-step guide on how to set it up and use it.

Step 1: Prepare the Raspberry Pi

  • Install Raspberry Pi OS: Use Raspberry Pi OS Lite for a minimal installation.
  • Flash the OS to an SD card using tools like Raspberry Pi Imager.
  • Update and Upgrade the System:
sudo apt update && sudo apt upgrade -y

Set a Static IP Address: Edit /etc/dhcpcd.conf and assign a static IP to the Raspberry Pi (important for consistent access).

Step 2: Install Prerequisites

Install Apache and PHP:

sudo apt install apache2 libapache2-mod-php php7.4 php7.4-{cli,zip,xml,gd,curl,mbstring,common,bz2,intl,sqlite3} -y

Install MariaDB (MySQL Alternative):

sudo apt install mariadb-server php7.4-mysql -y
Secure MariaDB:
sudo mysql_secure_installation

Set a strong root password and remove unnecessary defaults. Install Additional Dependencies:

sudo apt install unzip wget -y

Step 3: Install Nextcloud

Download Nextcloud:

wget https://download.nextcloud.com/server/releases/latest.zip

Unzip and Move Files:

unzip latest.zip
sudo mv nextcloud /var/www/html/

Set Permissions:

sudo chown -R www-data:www-data /var/www/html/nextcloud
sudo chmod -R 755 /var/www/html/nextcloud

Enable Apache Modules:

sudo a2enmod rewrite headers env dir mime
sudo systemctl restart apache2

Step 4: Configure the Database

Access MariaDB:

sudo mysql -u root -p
Create Database and User:
CREATE DATABASE nextcloud;
CREATE USER 'nextclouduser'@'localhost' IDENTIFIED BY 'securepassword';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextclouduser'@'localhost';
FLUSH PRIVILEGES;
EXIT;


Step 5: Complete the Setup in a Browser

  • Open a browser on a device connected to the same network.
  • Navigate to the Raspberry Pi's IP address followed by /nextcloud, e.g., http://192.168.1.100/nextcloud.
  • Follow the on-screen instructions:
  • Create an admin account.
  • Enter database details:
  • Database user: nextclouduser
  • Database name: nextcloud
  • Password: securepassword
  • Finish the setup, and Nextcloud will be ready for use.


Using Nextcloud - Accessing Nextcloud

  • Open a browser and enter the Raspberry Pi's IP address (e.g., http://192.168.1.100/nextcloud).
  • Log in with the admin account.
  • Uploading Files
  • After logging in, click on Files.
  • Drag and drop files into the browser interface or use the upload button.

Sharing Files

  • Right-click on a file and select Share.
  • Set permissions for the shared file (e.g., view-only, editing).
  • Share via a local link or generate a download link.

Syncing with Devices

  • Install the Nextcloud client on your computer or smartphone.
  • Connect to your server using its local IP.
  • Sync files across devices.


How to Install AbiWord using Offline Resources

To prepare offline resources for installing AbiWord on a Raspberry Pi prior to losing internet access, follow these step-by-step instructions:

Step 1: Understand Dependencies

AbiWord requires various dependencies and libraries to function. Ensuring you have all the required files is crucial for offline installation.

Step 2: Set Up a Working Raspberry Pi

  • Prepare a Raspberry Pi with Internet Access:
  • Install Raspberry Pi OS on your Pi.
  • Ensure it is up-to-date:
sudo apt update
sudo apt upgrade

Install the Required Tools: Install apt-offline to help manage downloading packages for offline use:

sudo apt install apt-offline

Step 3: Gather Information About AbiWord

Check the package details:

apt-cache show abiword

Verify the dependencies:

apt-cache depends abiword

Note all the required dependencies and their versions.

Step 4: Use apt-offline to Prepare for Download

Create an Offline Signature File: Generate a signature file that contains the list of required packages for AbiWord:

apt-offline set abiword.sig --install-packages abiword
  • This will create a file named abiword.sig in your current directory.
  • Transfer the Signature File to a Computer with Internet Access:
  • Use a USB drive or network file sharing to move abiword.sig to an internet-enabled machine.

Step 5: Download Packages on an Internet-Enabled Machine

Install apt-offline on the Other Machine: If using Linux, install apt-offline:

sudo apt install apt-offline

Download the Required Packages: Use apt-offline to download the packages specified in abiword.sig:

apt-offline get abiword.sig --bundle abiword-bundle.zip


This creates a .zip file containing all necessary packages.

Step 6: Transfer and Install Packages

  • Transfer the .zip File to the Raspberry Pi: Use a USB drive or network file sharing to move abiword-bundle.zip to your Pi.
  • Install the Packages: Use apt-offline to install the packages from the bundle:
apt-offline install abiword-bundle.zip

Verify Installation: Ensure AbiWord is installed correctly:

abiword --version

Step 7: Store and Document the Offline Resources

  • Archive the Packages: Save the downloaded .zip file to a dedicated folder for offline resources, e.g., /home/pi/offline-resources/abiword.
  • Include Additional Documentation: Save relevant installation guides and AbiWord documentation in the same folder for future reference.

Step 8: Optional - Create a Local Package Repository

Set Up a Local Repository: Create a directory to store packages:

mkdir -p /home/pi/local-repo

Extract the .zip contents:

unzip abiword-bundle.zip -d /home/pi/local-repo

Add the repository to your system:

sudo nano /etc/apt/sources.list.d/local-repo.list

Add this line:

deb [trusted=yes] file:/home/pi/local-repo ./

Update the package list:

sudo apt update

Install AbiWord Using the Local Repository: Install from the local repository without an internet connection:

sudo apt install abiword

How to install Evince using Offline Resources

Here are step-by-step instructions to prepare offline resources for installing Evince (a lightweight PDF reader) on a Raspberry Pi before losing internet access. The process ensures all necessary files and dependencies are downloaded and stored for future offline installation.

Step 1: Prepare the Raspberry Pi

Update the System: Ensure your Raspberry Pi is up-to-date:

sudo apt update
sudo apt upgrade

Install Required Tools: Install apt-offline to manage offline package downloads:

sudo apt install apt-offline

Step 2: Gather Information About Evince

Check the Package Details: Use apt-cache to view package details:

apt-cache show evince

List Dependencies: Identify the dependencies for Evince:

apt-cache depends evince

Note all dependencies and their versions.

Step 3: Create an Offline Signature File

Generate the Signature File: Create a signature file listing the packages required for Evince:

apt-offline set evince.sig --install-packages evince
  • This creates a file named evince.sig.
  • Transfer the Signature File: Move the evince.sig file to a computer with internet access using a USB drive or network sharing.


Step 4: Download the Packages on an Internet-Enabled Machine

Install apt-offline: On the computer with internet access, ensure apt-offline is installed:

sudo apt install apt-offline

Download the Packages: Use apt-offline to fetch all required packages:

apt-offline get evince.sig --bundle evince-bundle.zip

This creates a .zip file containing all the necessary packages.

Step 5: Transfer and Install Packages

  • Transfer the .zip File: Copy evince-bundle.zip back to the Raspberry Pi.
  • Install the Packages Offline: Use apt-offline to install the packages from the bundle:
apt-offline install evince-bundle.zip

Verify Installation: Check that Evince is installed and working:

evince --version

Step 6: Store Offline Resources

Archive the Packages: Save the .zip file to a dedicated folder for offline resources:

mkdir -p /home/pi/offline-resources/evince
mv evince-bundle.zip /home/pi/offline-resources/evince

Include Additional Documentation: Save Evince documentation and installation guides in the same folder for future reference.


Step 7: Optional - Create a Local Package Repository

Set Up a Local Repository: Create a directory for the local repository:

mkdir -p /home/pi/local-repo

Extract the .zip contents into the directory:

unzip /home/pi/offline-resources/evince/evince-bundle.zip -d /home/pi/local-repo

Add the repository to the package sources list:

sudo nano /etc/apt/sources.list.d/local-repo.list

Add this line:

deb [trusted=yes] file:/home/pi/local-repo ./

Update the Package List: Refresh the package list to include the local repository:

sudo apt update


Install Evince Using the Local Repository: Install Evince offline from the local repository:

sudo apt install evince

The line deb [trusted=yes] file:/home/pi/local-repo ./

This line is part of an APT sources list configuration in Linux systems like Ubuntu or Debian. It specifies a local software package repository for the Advanced Package Tool (APT).

Breakdown of the Line

  • deb: Indicates that this line refers to a Debian binary package repository. APT will look for .deb files in the specified location.
  • [trusted=yes]: Tells APT to trust the repository without requiring a GPG (GNU Privacy Guard) signature for package verification. This is useful for local repositories where you control the source and don't want to manage GPG keys.
  • file:/home/pi/local-repo: Specifies the path to the local repository. Here, it points to /home/pi/local-repo on the local filesystem. APT will look in this directory for a Packages index file and the .deb package files.
  • ./: Represents the distribution/component to look for within the repository. The ./ indicates the current directory within local-repo.

What This Line Does

  • It allows APT to treat the directory /home/pi/local-repo as a package repository.
  • Packages from this directory can be installed using sudo apt install <package-name> after running sudo apt update.