WikiJS/test_transfer_odt_5.html

1808 lines
78 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!--
title: Linux Lamp
description:
published: 1
date: 2024-02-01T23:17:04.906Z
tags:
editor: code
dateCreated: 2024-02-01T23:17:04.906Z
-->
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title></title>
<meta name="generator" content="LibreOffice 7.3.7.2 (Linux)"/>
<meta name="created" content="2020-12-11T19:06:01.168136779"/>
<meta name="changed" content="2021-05-19T20:15:49.332532993"/>
<style type="text/css">
@page { size: 8.5in 11in; margin: 0.79in }
p { line-height: 115%; margin-bottom: 0.1in; background: transparent }
h2 { margin-top: 0.14in; margin-bottom: 0.08in; background: transparent; page-break-after: avoid }
h2.western { font-family: "Liberation Serif", serif; font-size: 18pt; font-weight: bold }
h2.cjk { font-family: "Noto Serif CJK SC"; font-size: 18pt; font-weight: bold }
h2.ctl { font-family: "Lohit Devanagari"; font-size: 18pt; font-weight: bold }
h1 { margin-bottom: 0.08in; background: transparent; page-break-after: avoid }
h1.western { font-family: "Liberation Sans", sans-serif; font-size: 18pt; font-weight: bold }
h1.cjk { font-family: "Noto Sans CJK SC"; font-size: 18pt; font-weight: bold }
h1.ctl { font-family: "Lohit Devanagari"; font-size: 18pt; font-weight: bold }
a:link { color: #000080; so-language: zxx; text-decoration: underline }
code.western { font-family: "Liberation Mono", monospace }
code.cjk { font-family: "Noto Sans Mono CJK SC", monospace }
code.ctl { font-family: "Liberation Mono", monospace }
a:visited { color: #800000; so-language: zxx; text-decoration: underline }
</style>
</head>
<body lang="en-US" link="#000080" vlink="#800000" dir="ltr">
<div title="header"><p style="line-height: 100%; margin-bottom: 0.2in">
<br/>
</p>
</div><p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">enabling
SSH</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western"><a href="https://randomnerdtutorials.com/installing-raspbian-lite-enabling-and-connecting-with-ssh/">https://randomnerdtutorials.com/installing-raspbian-lite-enabling-and-connecting-with-ssh/</a></code></p>
<ul>
<li><p style="line-height: 100%; margin-bottom: 0in"><code class="western">add
file “ssh” into boot folder</code></p>
</ul>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">Establishing
an SSH Communication</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
sudo ssh <a href="mailto:pi@192.168.178.25">pi@192.168.178.25</a></code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">user:
pi, pass: pi</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">Shutting
Down</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
sudo poweroff</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western"><a href="https://randomnerdtutorials.com/raspberry-pi-apache-mysql-php-lamp-server/">https://randomnerdtutorials.com/raspberry-pi-apache-mysql-php-lamp-server/</a></code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western"><a href="https://www.instructables.com/Installing-LAMP-Linux-Apache-MySQL-PHP-on-a-Raspbe/">https://www.instructables.com/Installing-LAMP-Linux-Apache-MySQL-PHP-on-a-Raspbe/</a></code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">Updating
and Upgrading</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
sudo apt update &amp;&amp; sudo apt upgrade -y</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">Install
Apache2</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
sudo apt install apache2 -y</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">Testing
Apache installation</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
cd /var/www/html</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
ls -al</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">This
should show “index.html”</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">get
RasPi IP address</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
hostname -I</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">enter
IP address into Browser → the Apache Debian page should appear</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">Install
PHP</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
cd /var/www/html</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
sudo apt install php -y</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
sudo rm index.html</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
sudo nano index.php</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">Add
following script into the php file:</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">&lt;?php
echo &quot;hello world&quot;; ?&gt;</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">Save
with Ctrl+X &gt;&gt; y &gt;&gt; Enter, </code><code class="western">or
Ctrl+O &gt;&gt; Enter &gt;&gt; Ctrl+X</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">OR</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">&lt;?php
phpinfo(); ?&gt;</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">OR</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
echo &quot;&lt;?php phpinfo ();?&gt;&quot; &gt;
/var/www/html/index.php</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">Restart
Apache</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
sudo service apache2 restart</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">test
if Apache2 is serving .php files by opening RasPi IP address in
browser </code>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">if
all is fine, index.php can be removed</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
sudo rm index.php</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">Install
MySQL (MariaDB Server)</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
sudo apt install mariadb-server php-mysql -y</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
sudo service apache2 restart</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
sudo mysql_secure_installation</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">In
all cases, answer with y</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">create
new user “</code><code class="western">admin” with password
</code><code class="western">your_password”</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
sudo mysql --user=root --password</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">&gt;
create user admin@localhost identified by 'your_password';</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">&gt;
grant all privileges on *.* to admin@localhost;</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">&gt;
FLUSH PRIVILEGES;</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">&gt;
exit;</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">Important
to generate user that is not limited to a certain domain!!</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">&gt;
</code><code class="western">grant all privileges on *.* to
'admin3'@'%';</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">Install
phpMyAdmin</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
cd /var/www/html</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
sudo apt install phpmyadmin -y</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">Options:</code></p>
<ul>
<li><p style="line-height: 100%; margin-bottom: 0in"><code class="western">dbconfig-common</code></p>
<li><p style="line-height: 100%; margin-bottom: 0in"><code class="western">Apache2</code></p>
<li><p style="line-height: 100%; margin-bottom: 0in"><code class="western">Configuring
phpmyadmin? OK</code></p>
<li><p style="line-height: 100%; margin-bottom: 0in"><code class="western">Configure
database for phpmyadmin with dbconfig-common? Yes</code></p>
<li><p style="line-height: 100%; margin-bottom: 0in"><code class="western">Password:
pi</code></p>
</ul>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
sudo phpenmod mysqli</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
sudo service apache2 restart</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">open
following address</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><a name="__DdeLink__164_1253080105"></a>
<code class="western">http://192.168.</code><code class="western">178.25</code><code class="western">/phpmyadmin</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">if
“Not Found”</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
cd /var/www/html</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
sudo ln -s /usr/share/phpmyadmin /var/www/html/phpmyadmin</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
ls</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">&gt;&gt;
</code><code class="western">phpmyadmin</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">again,
open following address</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western"><a href="http://192.168.178.25/phpmyadmin">http://192.168.178.25/phpmyadmin</a></code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">login
with username=root, password=pi</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">change
the permissions for your /var/www/html/ folder.</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
cd ~</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
ls -lh /var/www/</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
sudo chown -R pi:www-data /var/www/html/</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
sudo chmod -R 770 /var/www/html/</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
ls -lh /var/www/</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western"><a href="https://randomnerdtutorials.com/esp32-esp8266-raspberry-pi-lamp-server/">https://randomnerdtutorials.com/esp32-esp8266-raspberry-pi-lamp-server/</a></code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">Create
database:</code></p>
<ul>
<li><p style="line-height: 100%; margin-bottom: 0in"><code class="western">esp_data</code></p>
<li><p style="line-height: 100%; margin-bottom: 0in"><code class="western">utf8mb4_general_ci</code></p>
</ul>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">Create
table by calling SQL query:</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">CREATE
TABLE SensorData (</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">
</code><code class="western">id INT(6) UNSIGNED AUTO_INCREMENT
PRIMARY KEY,</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">
</code><code class="western">sensor VARCHAR(30) NOT NULL,</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">
</code><code class="western">location VARCHAR(30) NOT NULL,</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">
</code><code class="western">value1 VARCHAR(10),</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">
</code><code class="western">value2 VARCHAR(10),</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">
</code><code class="western">value3 VARCHAR(10),</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">
</code><code class="western">reading_time TIMESTAMP DEFAULT
CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">)</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">PHP
script that is responsible for receiving incoming requests from the
ESP32 or ESP8266 and inserting the data into a MySQL database.</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
cd ~</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
</code><code class="western">nano /var/www/html/post-esp-data.php</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western"><a href="https://github.com/ChuckBell/MySQL_Connector_Arduino/wiki/Troubleshooting">https://github.com/ChuckBell/MySQL_Connector_Arduino/wiki/Troubleshooting</a></code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">tr
to connect to msql from another computer:</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
</code><code class="western">mysql -u</code><code class="western">admin</code><code class="western">
-p</code><code class="western"><font face="Liberation Mono, monospace">pi</font></code><code class="western">
h192.168.178.25 port=3306</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
</code><code class="western">mysql --u</code><code class="western">ser=</code><code class="western">admin</code><code class="western">
--p</code><code class="western">assword=</code><code class="western"><font face="Liberation Mono, monospace">pi</font></code><code class="western">
--h</code><code class="western">ost=</code><code class="western">192.168.178.25
--port=3306</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
</code><code class="western">mysql --u</code><code class="western">ser=</code><code class="western">admin</code><code class="western">
--p</code><code class="western">assword=</code><code class="western"><font face="Liberation Mono, monospace">pi</font></code><code class="western">
--h</code><code class="western">ost= 127.0.0.1</code><code class="western">
--port=3306</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
</code><code class="western">mysql -u </code><code class="western"><font face="Liberation Mono, monospace">admin</font></code><code class="western">
-p </code><code class="western"><font face="Liberation Mono, monospace">pi</font></code><code class="western">
-h 127.0.0.1 test_arduino</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">Important
in case of “ERROR 2003 (HY000): Can't connect to local MySQL server
through socket”</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf </code>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">Here,
the binding address = 127.0.0.1 must be commented out!!!</code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western"><a href="https://pawelrychlicki.pl/Article/Details/65/fixing-sqlstatehy000-2002-in-the-nextcloudowncloud-with-the-mysqlmariadb-and-the-tlsssl-ubuntu-linux-1804-server">https://pawelrychlicki.pl/Article/Details/65/fixing-sqlstatehy000-2002-in-the-nextcloudowncloud-with-the-mysqlmariadb-and-the-tlsssl-ubuntu-linux-1804-server</a></code></p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<h1 class="western">1<code class="western">Configuring WiFi in
headless mode</code></h1>
<p><code class="western"><a href="https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md">https://www.raspberrypi.org/documentation/configuration/wireless/wireless-cli.md</a></code></p>
<p><code class="western"><a href="https://www.seeedstudio.com/blog/2021/01/25/three-methods-to-configure-raspberry-pi-wifi/">https://www.seeedstudio.com/blog/2021/01/25/three-methods-to-configure-raspberry-pi-wifi/</a></code></p>
<p><br/>
<br/>
</p>
<h2 class="western">1.1<code class="western">ssh</code></h2>
<p><code class="western">To enable SSH on a headless Raspberry Pi,
simply place a file named “ssh”, without any extension, onto the
boot partition of the SD card from another computer. This will tell
Raspberry Pi to enable SSH when booting. The content of the file does
not matter.</code></p>
<p><br/>
<br/>
</p>
<h2 class="western">1.2<code class="western">wpa_supplicant.conf </code>
</h2>
<p><code class="western">$ </code><code class="western">sudo nano
/etc/wpa_supplicant/wpa_supplicant.conf</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">ctrl_interface=DIR=/var/run/wpa_supplicant
GROUP=netdev</code></p>
<p><code class="western">update_config=1</code></p>
<p><code class="western">country=</code><code class="western"><span style="background: #ffff00">&lt;Country
Code&gt;</span></code></p>
<p><code class="western">network={</code></p>
<p><code class="western"> </code><code class="western">ssid=&quot;</code><code class="western"><span style="background: #ffff00">&lt;SSID&gt;</span></code><code class="western">&quot;</code></p>
<p><code class="western"> </code><code class="western">psk=&quot;</code><code class="western"><span style="background: #ffff00">&lt;PASSWORD&gt;</span></code><code class="western">&quot;</code></p>
<p><code class="western"> </code><code class="western">scan_ssid=1</code></p>
<p><code class="western">}</code></p>
<p><br/>
<br/>
</p>
<h1 class="western">2<code class="western">Arduino script for writing
to MariaDB/MySQL database</code></h1>
<p><code class="western">Check sketch “Complex_Insert_WiFi_BE”</code></p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<h1 class="western">3<code class="western">Showing DB content as html
page</code></h1>
<p><code class="western"><a href="https://randomnerdtutorials.com/esp32-esp8266-raspberry-pi-lamp-server/">https://randomnerdtutorials.com/esp32-esp8266-raspberry-pi-lamp-server/</a></code></p>
<p><br/>
<br/>
</p>
<p><code class="western">$ nano /var/www/html/esp-data.php</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">open page http://192.168.178.25/esp-data.php</code></p>
<p><br/>
<br/>
</p>
<h2 class="western">3.1<code class="western">esp-data.php</code></h2>
<p><code class="western">&lt;!DOCTYPE html&gt;</code></p>
<p><code class="western">&lt;html&gt;&lt;body&gt;</code></p>
<p><code class="western">&lt;?php</code></p>
<p><code class="western">/*</code></p>
<p><code class="western"> </code><code class="western">Rui Santos</code></p>
<p><code class="western"> </code><code class="western">Complete
project details at
https://RandomNerdTutorials.com/esp32-esp8266-mysql-database-php/</code></p>
<p><code class="western"> </code>
</p>
<p><code class="western"> </code><code class="western">Permission is
hereby granted, free of charge, to any person obtaining a copy</code></p>
<p><code class="western"> </code><code class="western">of this
software and associated documentation files.</code></p>
<p><code class="western"> </code>
</p>
<p><code class="western"> </code><code class="western">The above
copyright notice and this permission notice shall be included in all</code></p>
<p><code class="western"> </code><code class="western">copies or
substantial portions of the Software.</code></p>
<p><code class="western">*/</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">$servername = &quot;</code><code class="western"><span style="background: #ffff00">192.168.178.25</span></code><code class="western">&quot;;</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">// REPLACE with your Database name</code></p>
<p><code class="western">$dbname = &quot;</code><code class="western"><span style="background: #ffff00">test_arduino</span></code><code class="western">&quot;;</code></p>
<p><code class="western">// REPLACE with Database user</code></p>
<p><code class="western"><span style="background: transparent">$username
= &quot;</span></code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">admin3</span></font></code><code class="western"><span style="background: transparent">&quot;;</span></code></p>
<p><code class="western"><span style="background: transparent">//
REPLACE with Database user password</span></code></p>
<p><code class="western"><span style="background: transparent">$password
= &quot;</span></code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">pi</span></font></code><code class="western"><span style="background: transparent">&quot;;</span></code></p>
<p><br/>
<br/>
</p>
<p><code class="western">// Create connection</code></p>
<p><code class="western">$conn = new mysqli($servername, $username,
$password, $dbname);</code></p>
<p><code class="western">// Check connection</code></p>
<p><code class="western">if ($conn-&gt;connect_error) {</code></p>
<p><code class="western"> </code><code class="western">die(&quot;Connection
failed: &quot; . $conn-&gt;connect_error);</code></p>
<p><code class="western">} </code>
</p>
<p><br/>
<br/>
</p>
<p><code class="western">$sql = &quot;SELECT </code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">num</span></font></code><code class="western"><span style="background: #ffff00">,
</span></code><code class="western"><span style="background: #ffff00">message,
</span></code><code class="western"><span style="background: #ffff00">sensor_</span></code><code class="western"><span style="background: #ffff00">num</span></code><code class="western"><span style="background: #ffff00">,
</span></code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">value</span></font></code><code class="western"><span style="background: #ffff00">,
</span></code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">recorded</span></font></code><code class="western">
FROM </code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">hello_sensor</span></font></code><code class="western">
ORDER BY </code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">num</span></font></code><code class="western">
DESC&quot;;</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">echo '&lt;table cellspacing=&quot;5&quot;
cellpadding=&quot;5&quot;&gt;</code></p>
<p><code class="western"> </code><code class="western">&lt;tr&gt;
</code>
</p>
<p><code class="western"> </code><code class="western">&lt;td&gt;</code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">num</span></font></code><code class="western">&lt;/td&gt;
</code>
</p>
<p><code class="western"> </code><code class="western">&lt;td&gt;</code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">message</span></font></code><code class="western">&lt;/td&gt;
</code>
</p>
<p><code class="western"> </code><code class="western">&lt;td&gt;</code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">sensor</span></font></code><code class="western"><font face="Liberation Mono, monospace">_num</font></code><code class="western">&lt;/td&gt;
</code>
</p>
<p><code class="western"> </code><code class="western">&lt;td&gt;</code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">v</span></font></code><code class="western"><span style="background: #ffff00">alue</span></code><code class="western">&lt;/td&gt;
</code>
</p>
<p><code class="western"> </code><code class="western">&lt;td&gt;</code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">recorded</span></font></code><code class="western">&lt;/td&gt;
</code>
</p>
<p><code class="western"> </code><code class="western">&lt;/tr&gt;';</code></p>
<p><code class="western"> </code>
</p>
<p><code class="western">if ($result = $conn-&gt;query($sql)) {</code></p>
<p><code class="western"> </code><code class="western">while ($row
= $result-&gt;fetch_assoc()) {</code></p>
<p><code class="western"> </code><code class="western">$row_</code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">num</span></font></code><code class="western">
= $row[&quot;</code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">num</span></font></code><code class="western">&quot;];</code></p>
<p><code class="western"> </code><code class="western">$row_</code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">message</span></font></code><code class="western">
= $row[&quot;</code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">message</span></font></code><code class="western">&quot;];</code></p>
<p><code class="western"> </code><code class="western">$row_</code><code class="western"><span style="background: #ffff00">sensor_num</span></code><code class="western">
= $row[&quot;</code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">sensor_num</span></font></code><code class="western">&quot;];</code></p>
<p><code class="western"> </code><code class="western">$row_</code><code class="western"><span style="background: #ffff00">value</span></code><code class="western">
= $row[&quot;</code><code class="western"><span style="background: #ffff00">value</span></code><code class="western">&quot;];</code></p>
<p><code class="western"> </code><code class="western">$row_</code><code class="western"><span style="background: #ffff00">re</span></code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">corded</span></font></code><code class="western">
= $row[&quot;</code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">recorded</span></font></code><code class="western">&quot;];</code></p>
<p><code class="western"> </code><code class="western">//
Uncomment to set timezone to - 1 hour (you can change 1 to any
number)</code></p>
<p><code class="western"> </code><code class="western">//$row_reading_time
= date(&quot;Y-m-d H:i:s&quot;, strtotime(&quot;$row_reading_time - 1
hours&quot;));</code></p>
<p><code class="western"> </code>
</p>
<p><code class="western"> </code><code class="western">//
Uncomment to set timezone to + 4 hours (you can change 4 to any
number)</code></p>
<p><code class="western"> </code><code class="western">//$row_reading_time
= date(&quot;Y-m-d H:i:s&quot;, strtotime(&quot;$row_reading_time + 4
hours&quot;));</code></p>
<p><code class="western"> </code>
</p>
<p><code class="western"> </code><code class="western">echo
'&lt;tr&gt; </code>
</p>
<p><code class="western"> </code><code class="western">&lt;td&gt;'
. $row_</code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">num</span></font></code><code class="western">
. '&lt;/td&gt; </code>
</p>
<p><code class="western"> </code><code class="western">&lt;td&gt;'
. $row_</code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">message</span></font></code><code class="western">
. '&lt;/td&gt; </code>
</p>
<p><code class="western"> </code><code class="western">&lt;td&gt;'
. $row_</code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">sensor_</span></font></code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">num</span></font></code><code class="western">
. '&lt;/td&gt; </code>
</p>
<p><code class="western"> </code><code class="western">&lt;td&gt;'
. $row_</code><code class="western"><span style="background: #ffff00">value</span></code><code class="western">
. '&lt;/td&gt; </code>
</p>
<p><code class="western"> </code><code class="western">&lt;td&gt;'
. $row_</code><code class="western"><span style="background: #ffff00">r</span></code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">ecorded</span></font></code><code class="western">
. '&lt;/td&gt; </code>
</p>
<p><code class="western"> </code><code class="western">&lt;/tr&gt;';</code></p>
<p><code class="western"> </code><code class="western">}</code></p>
<p><code class="western"> </code><code class="western">$result-&gt;free();</code></p>
<p><code class="western">}</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">$conn-&gt;close();</code></p>
<p><code class="western">?&gt; </code>
</p>
<p><code class="western">&lt;/table&gt;</code></p>
<p><code class="western">&lt;/body&gt;</code></p>
<p><code class="western">&lt;/html&gt;</code></p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<h1 class="western">4<code class="western">Plotting of data from
</code><code class="western">MariaDB/MySQL database</code></h1>
<p><code class="western"><a href="https://randomnerdtutorials.com/visualize-esp32-esp8266-sensor-readings-from-anywhere/">https://randomnerdtutorials.com/visualize-esp32-esp8266-sensor-readings-from-anywhere/</a></code></p>
<p><br/>
<br/>
</p>
<p><code class="western">$ </code><code class="western">sudo nano
/var/www/html/esp-</code><code class="western">chart</code><code class="western">.php</code></p>
<h2 class="western">4.1<code class="western">esp-chart.php</code></h2>
<p><br/>
<br/>
</p>
<p><code class="western">&lt;!--</code></p>
<p><code class="western"> </code><code class="western">Rui Santos</code></p>
<p><code class="western"> </code><code class="western">Complete
project details at https://RandomNerdTutorials.com</code></p>
<p><code class="western"> </code>
</p>
<p><code class="western"> </code><code class="western">Permission is
hereby granted, free of charge, to any person obtaining a copy</code></p>
<p><code class="western"> </code><code class="western">of this
software and associated documentation files.</code></p>
<p><code class="western"> </code>
</p>
<p><code class="western"> </code><code class="western">The above
copyright notice and this permission notice shall be included in all</code></p>
<p><code class="western"> </code><code class="western">copies or
substantial portions of the Software.</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">--&gt;</code></p>
<p><code class="western">&lt;?php</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">$servername = &quot;</code><code class="western"><span style="background: #ffff00">192.168.178.25</span></code><code class="western">&quot;;</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">// REPLACE with your Database name</code></p>
<p><code class="western">$dbname = &quot;</code><code class="western"><span style="background: #ffff00">test_arduino</span></code><code class="western">&quot;;</code></p>
<p><code class="western">// REPLACE with Database user</code></p>
<p><code class="western"><span style="background: transparent">$username
= &quot;</span></code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">admin3</span></font></code><code class="western"><span style="background: transparent">&quot;;</span></code></p>
<p><code class="western"><span style="background: transparent">//
REPLACE with Database user password</span></code></p>
<p><code class="western"><span style="background: transparent">$password
= &quot;</span></code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">pi</span></font></code><code class="western"><span style="background: transparent">&quot;;</span></code></p>
<p><br/>
<br/>
</p>
<p><code class="western">// Create connection</code></p>
<p><code class="western">$conn = new mysqli($servername, $username,
$password, $dbname);</code></p>
<p><code class="western">// Check connection</code></p>
<p><code class="western">if ($conn-&gt;connect_error) {</code></p>
<p><code class="western"> </code><code class="western">die(&quot;Connection
failed: &quot; . $conn-&gt;connect_error);</code></p>
<p><code class="western">} </code>
</p>
<p><br/>
<br/>
</p>
<p><code class="western">$sql = &quot;SELECT </code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">num</span></font></code><code class="western"><span style="background: #ffff00">,
</span></code><code class="western"><span style="background: #ffff00">message,
</span></code><code class="western"><span style="background: #ffff00">sensor_</span></code><code class="western"><span style="background: #ffff00">num</span></code><code class="western"><span style="background: #ffff00">,
</span></code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">value,
</span></font></code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">value_h</span></font></code><code class="western"><span style="background: #ffff00">,
</span></code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">recorded</span></font></code><code class="western">
FROM </code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">hello_sensor
</span></font></code><code class="western"><span style="background: #ffff00">WHERE
sensor_num = 0</span></code><code class="western"> ORDER BY </code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">num</span></font></code><code class="western">
DESC limit 40&quot;;</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">$result = $conn-&gt;query($sql);</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">while ($data = $result-&gt;fetch_assoc()){</code></p>
<p><code class="western"> </code><code class="western">$sensor_data[]
= $data;</code></p>
<p><code class="western">}</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">$</code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">recorded</span></font></code><code class="western">
= array_column($sensor_data, '</code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">recorded</span></font></code><code class="western">');</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">// ******* Uncomment to convert readings
time array to your timezone ********</code></p>
<p><code class="western">/*$i = 0;</code></p>
<p><code class="western">foreach ($readings_time as $reading){</code></p>
<p><code class="western"> </code><code class="western">//
Uncomment to set timezone to - 1 hour (you can change 1 to any
number)</code></p>
<p><code class="western"> </code><code class="western">$readings_time[$i]
= date(&quot;Y-m-d H:i:s&quot;, strtotime(&quot;$reading - 1
hours&quot;));</code></p>
<p><code class="western"> </code><code class="western">//
Uncomment to set timezone to + 4 hours (you can change 4 to any
number)</code></p>
<p><code class="western"> </code><code class="western">//$readings_time[$i]
= date(&quot;Y-m-d H:i:s&quot;, strtotime(&quot;$reading + 4
hours&quot;));</code></p>
<p><code class="western"> </code><code class="western">$i += 1;</code></p>
<p><code class="western">}*/</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">$</code><code class="western"><span style="background: #ffff00">value</span></code><code class="western">
= json_encode(array_reverse(array_column($sensor_data, '</code><code class="western"><span style="background: #ffff00">value</span></code><code class="western">')),
JSON_NUMERIC_CHECK);</code></p>
<p><code class="western">$</code><code class="western"><span style="background: #ffff00">value_</span></code><code class="western"><span style="background: #ffff00">h</span></code><code class="western">
= json_encode(array_reverse(array_column($sensor_data, '</code><code class="western"><span style="background: #ffff00">value_</span></code><code class="western"><span style="background: #ffff00">h</span></code><code class="western">')),
JSON_NUMERIC_CHECK);</code></p>
<p><code class="western">$</code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">recorded</span></font></code><code class="western">
= json_encode(array_reverse($</code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">recorded</span></font></code><code class="western">),
JSON_NUMERIC_CHECK);</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">/*echo $value1;</code></p>
<p><code class="western">echo $value2;</code></p>
<p><code class="western">echo $value3;</code></p>
<p><code class="western">echo $reading_time;*/</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">$result-&gt;free();</code></p>
<p><code class="western">$conn-&gt;close();</code></p>
<p><code class="western">?&gt;</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">&lt;!DOCTYPE html&gt;</code></p>
<p><code class="western">&lt;html&gt;</code></p>
<p><code class="western">&lt;meta name=&quot;viewport&quot;
content=&quot;width=device-width, initial-scale=1&quot;&gt;</code></p>
<p><code class="western"> </code><code class="western">&lt;script
src=&quot;https://code.highcharts.com/highcharts.js&quot;&gt;&lt;/script&gt;</code></p>
<p><code class="western"> </code><code class="western">&lt;style&gt;</code></p>
<p><code class="western"> </code><code class="western">body {</code></p>
<p><code class="western"> </code><code class="western">min-width:
310px;</code></p>
<p><code class="western"> </code><code class="western"> max-width:
1280px;</code></p>
<p><code class="western"> </code><code class="western"> height:
500px;</code></p>
<p><code class="western"> </code><code class="western">margin: 0
auto;</code></p>
<p><code class="western"> </code><code class="western">}</code></p>
<p><code class="western"> </code><code class="western">h2 {</code></p>
<p><code class="western"> </code><code class="western">font-family:
Arial;</code></p>
<p><code class="western"> </code><code class="western">font-size:
2.5rem;</code></p>
<p><code class="western"> </code><code class="western">text-align:
center;</code></p>
<p><code class="western"> </code><code class="western">}</code></p>
<p><code class="western"> </code><code class="western">&lt;/style&gt;</code></p>
<p><code class="western"> </code><code class="western">&lt;body&gt;</code></p>
<p><code class="western"> </code><code class="western">&lt;h2&gt;ESP
Weather Station&lt;/h2&gt;</code></p>
<p><code class="western"> </code><code class="western">&lt;div
id=&quot;chart-temperature&quot; class=&quot;container&quot;&gt;&lt;/div&gt;</code></p>
<p><code class="western"> </code><code class="western">&lt;div
id=&quot;chart-humidity&quot; class=&quot;container&quot;&gt;&lt;/div&gt;</code></p>
<p><code class="western">&lt;script&gt;</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">var </code><code class="western"><span style="background: #ffff00">value</span></code><code class="western">
= &lt;?php echo $</code><code class="western"><span style="background: #ffff00">value</span></code><code class="western">;
?&gt;;</code></p>
<p><code class="western">var </code><code class="western"><span style="background: #ffff00">value_</span></code><code class="western"><span style="background: #ffff00">h</span></code><code class="western">
= &lt;?php echo $</code><code class="western"><span style="background: #ffff00">value_</span></code><code class="western"><span style="background: #ffff00">h</span></code><code class="western">;
?&gt;;</code></p>
<p><code class="western">var </code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">recorded</span></font></code><code class="western">
= &lt;?php echo $</code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">recorded</span></font></code><code class="western">;
?&gt;;</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">var chartT = new Highcharts.Chart({</code></p>
<p><code class="western"> </code><code class="western">chart:{
renderTo : 'chart-temperature' },</code></p>
<p><code class="western"> </code><code class="western">title: {
text: 'BME280 Temperature' },</code></p>
<p><code class="western"> </code><code class="western">series: [{</code></p>
<p><code class="western"> </code><code class="western">showInLegend:
false,</code></p>
<p><code class="western"> </code><code class="western">data: </code><code class="western"><span style="background: #ffff00">value</span></code></p>
<p><code class="western"> </code><code class="western">}],</code></p>
<p><code class="western"> </code><code class="western">plotOptions:
{</code></p>
<p><code class="western"> </code><code class="western">line: {
animation: false,</code></p>
<p><code class="western"> </code><code class="western">dataLabels:
{ enabled: true }</code></p>
<p><code class="western"> </code><code class="western">},</code></p>
<p><code class="western"> </code><code class="western">series: {
color: '#059e8a' }</code></p>
<p><code class="western"> </code><code class="western">},</code></p>
<p><code class="western"> </code><code class="western">xAxis: { </code>
</p>
<p><code class="western"> </code><code class="western">type:
'datetime',</code></p>
<p><code class="western"> </code><code class="western">categories:
</code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">recorded</span></font></code></p>
<p><code class="western"> </code><code class="western">},</code></p>
<p><code class="western"> </code><code class="western">yAxis: {</code></p>
<p><code class="western"> </code><code class="western">title: {
text: 'Temperature (Celsius)' }</code></p>
<p><code class="western"> </code><code class="western">//title: {
text: 'Temperature (Fahrenheit)' }</code></p>
<p><code class="western"> </code><code class="western">},</code></p>
<p><code class="western"> </code><code class="western">credits: {
enabled: false }</code></p>
<p><code class="western">});</code></p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><code class="western">var chartH = new Highcharts.Chart({</code></p>
<p><code class="western"> </code><code class="western">chart:{
renderTo:'chart-humidity' },</code></p>
<p><code class="western"> </code><code class="western">title: {
text: 'BME280 Humidity' },</code></p>
<p><code class="western"> </code><code class="western">series: [{</code></p>
<p><code class="western"> </code><code class="western">showInLegend:
false,</code></p>
<p><code class="western"> </code><code class="western">data:
</code><code class="western"><span style="background: #ffff00">value_</span></code><code class="western"><span style="background: #ffff00">h</span></code></p>
<p><code class="western"> </code><code class="western">}],</code></p>
<p><code class="western"> </code><code class="western">plotOptions:
{</code></p>
<p><code class="western"> </code><code class="western">line: {
animation: false,</code></p>
<p><code class="western"> </code><code class="western">dataLabels:
{ enabled: true }</code></p>
<p><code class="western"> </code><code class="western">}</code></p>
<p><code class="western"> </code><code class="western">},</code></p>
<p><code class="western"> </code><code class="western">xAxis: {</code></p>
<p><code class="western"> </code><code class="western">type:
'datetime',</code></p>
<p><code class="western"> </code><code class="western">//dateTimeLabelFormats:
{ second: '%H:%M:%S' },</code></p>
<p><code class="western"> </code><code class="western">categories:
</code><code class="western"><font face="Liberation Mono, monospace"><span style="background: #ffff00">recorded</span></font></code></p>
<p><code class="western"> </code><code class="western">},</code></p>
<p><code class="western"> </code><code class="western">yAxis: {</code></p>
<p><code class="western"> </code><code class="western">title: {
text: 'Humidity (%)' }</code></p>
<p><code class="western"> </code><code class="western">},</code></p>
<p><code class="western"> </code><code class="western">credits: {
enabled: false }</code></p>
<p><code class="western">});</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">&lt;/script&gt;</code></p>
<p><code class="western">&lt;/body&gt;</code></p>
<p><code class="western">&lt;/html&gt;</code></p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<h1 class="western">5<code class="western">Using canvas.js</code></h1>
<p><code class="western"><a href="https://canvasjs.com/php-charts/multiseries-chart/">https://canvasjs.com/php-charts/multiseries-chart/</a></code></p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<h1 class="western">6<code class="western">External access to LAMP
server</code></h1>
<p><code class="western">port 22 (ssh), port 80 (http)</code></p>
<p><br/>
<br/>
</p>
<p><code class="western"><a href="https://raspberrypi.stackexchange.com/questions/105080/how-to-remote-to-raspberry-pi-from-outside-local-network">https://raspberrypi.stackexchange.com/questions/105080/how-to-remote-to-raspberry-pi-from-outside-local-network</a></code></p>
<p><br/>
<br/>
</p>
<p><code class="western"><a href="https://howtoraspberrypi.com/enable-mysql-remote-connection-raspberry-pi/">https://howtoraspberrypi.com/enable-mysql-remote-connection-raspberry-pi/</a></code></p>
<p><code class="western">Configure MySQL to accept external
connections to Raspberry Pi</code></p>
<p><code class="western">$ sudo nano /etc/mysql/my.cnf</code></p>
<p><code class="western">#bind-address = 127.0.0.1 </code><code class="western"><span style="background: #ffff00">&lt;&lt;&lt;&lt;&lt;
comment the line bind-address</span></code></p>
<p><code class="western">optionall</code><code class="western">y
</code><code class="western"><font face="Liberation Mono, monospace">m</font></code><code class="western">odify
the MySQL port </code><code class="western">to reduce risk of
attacks, e.g.</code></p>
<p><code class="western">port = 8457</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">$ </code><code class="western">/etc/init.d/mysql
restart</code></p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<h1 class="western">7<code class="western">RasPi as Samba server</code></h1>
<p><code class="western"><a href="https://aallan.medium.com/adding-an-external-disk-to-a-raspberry-pi-and-sharing-it-over-the-network-5b321efce86a">https://aallan.medium.com/adding-an-external-disk-to-a-raspberry-pi-and-sharing-it-over-the-network-5b321efce86a</a></code></p>
<p><code class="western">SMB is the best protocol for use on multiple
platforms due to superior interoperability</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">in case of issue “chown: changing
ownership of '...': Operation not permitted”:</code></p>
<p><code class="western"><a href="https://stackoverflow.com/questions/25559700/chown-command-returning-operation-not-permitted">https://stackoverflow.com/questions/25559700/chown-command-returning-operation-not-permitted</a></code></p>
<p><code class="western">get uid:</code></p>
<p><code class="western">$ cat /etc/passwd |grep pi</code></p>
<p><code class="western">get gid:</code></p>
<p><code class="western">$ </code><code class="western">cat
/etc/group |grep pi</code></p>
<p><code class="western">Give pi:pi access to the entire /</code><code class="western">mnt/usb</code><code class="western">
mount:</code></p>
<p><code class="western">$ sudo mount -o remount,gid=</code><code class="western"><span style="background: #ffff00">&lt;pi's
gid&gt;</span></code><code class="western">,uid=</code><code class="western"><span style="background: #ffff00">&lt;pi's
uid&gt;</span></code><code class="western"> /mnt/usb</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">Attention: </code><code class="western">FAT
file system doesn't support such permissions, so they can't be
applied after the drive is mounted</code></p>
<p><code class="western"><a href="https://raspberrypi.stackexchange.com/questions/40408/how-to-change-permissions-on-external-hard-drive-connected-to-raspberry">https://raspberrypi.stackexchange.com/questions/40408/how-to-change-permissions-on-external-hard-drive-connected-to-raspberry</a></code></p>
<p><code class="western">Instead, drive should be formatted with pi
user </code><code class="western">and/or ntfs file sstem</code><code class="western">?</code></p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><code class="western">Mounting USB drive </code><code class="western">that
is</code><code class="western"><b> </b></code><code class="western"><b>NTFS</b></code><code class="western"><b>???-</b></code><code class="western">formatted</code><code class="western">
under specific name:</code></p>
<p><code class="western">$ </code><code class="western"><font face="Liberation Mono, monospace">sudo
</font></code><code class="western">fdisk -l</code></p>
<p><code class="western">$ sudo umount </code><code class="western"><span style="background: #ffff00">/dev/sda1</span></code></p>
<p><code class="western">$ sudo mkdir /mnt/usb</code></p>
<p><code class="western">$ sudo chown -R pi:pi /mnt/usb</code></p>
<p><code class="western">seems like this command has to be used each
time the usb drive is connected: </code><code class="western">$ </code><code class="western"><span style="background: transparent">sudo
mount /dev/sda1 /mnt/usb -o uid=pi,gid=pi</span></code></p>
<p><br/>
<br/>
</p>
<p><code class="western">append following text to this file for
automatic mounting under the specified path:</code></p>
<p><code class="western">$ sudo nano </code><code class="western">/etc/fstab</code></p>
<p><code class="western">/dev/sda1 /mnt/usb auto defaults,user 0 1</code></p>
<p><code class="western">OR:</code></p>
<p><code class="western">/dev/sda1 /mnt/usb </code><code class="western"><span style="background: #ffff00">ntfs-3g</span></code><code class="western">
defaults,user,uid=</code><code class="western"><span style="background: #ffff00">1000</span></code><code class="western">,gid=</code><code class="western"><span style="background: #ffff00">1000</span></code><code class="western">,noatime 0 0</code></p>
<p><code class="western"><a href="https://raspberrypi.stackexchange.com/questions/40408/how-to-change-permissions-on-external-hard-drive-connected-to-raspberry">https://raspberrypi.stackexchange.com/questions/40408/how-to-change-permissions-on-external-hard-drive-connected-to-raspberry</a></code></p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><code class="western">Make the drive accessible from the network
</code><code class="western">by adding following text</code><code class="western">:</code></p>
<p><code class="western">$ sudo apt-get install samba
samba-common-bin</code></p>
<p><code class="western">$ sudo nano /etc/samba/smb.conf</code></p>
<p><code class="western">[share]</code></p>
<p><code class="western">Comment</code><code class="western"><span style="background: #ffff00">
= Shared Folder</span></code></p>
<p><code class="western"><span style="background: #ffff00">Path =
/mnt/usb</span></code></p>
<p><code class="western">Browseable = yes</code></p>
<p><code class="western">Writeable = Yes</code></p>
<p><code class="western">only guest = no</code></p>
<p><code class="western">create mask = 0777</code></p>
<p><code class="western">directory mask = 0777</code></p>
<p><code class="western">Public = yes</code></p>
<p><code class="western">Guest ok = yes</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">$ chmod 1777 </code><code class="western"><span style="background: #ffff00">/mnt/usb
</span></code><code class="western"><b><span style="background: #ffff00">&lt;&lt;&lt;&lt;
the uSB should be mounted under this name</span></b></code></p>
<p><code class="western">$ sudo /etc/init.d/samba restart</code></p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><code class="western">sudo service smbd restart</code></p>
<p><code class="western">sudo service smbd status</code></p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><code class="western"><a href="https://www.raspberrypi.org/forums/viewtopic.php?t=56149">https://www.raspberrypi.org/forums/viewtopic.php?t=56149</a></code></p>
<p><code class="western">$ </code><code class="western">sudo df</code></p>
<p><code class="western">$ </code><code class="western">cd /media</code></p>
<p><code class="western">$ </code><code class="western">sudo mkdir
HDD</code></p>
<p><code class="western">$ </code><code class="western">sudo nano
/etc/fstab</code></p>
<p><code class="western">/dev/sda1 /media/HDD ntfs-3g
defaults,noatime 0 0</code></p>
<p><code class="western">$ cp /etc/samba/smb.conf
/etc/samba/smb.conf.bak //Make a backup of the config file</code></p>
<p><code class="western">$ </code><code class="western">nano
/etc/samba/smb.conf</code></p>
<p><code class="western">[media] </code>
</p>
<p><code class="western">comment = Media share</code></p>
<p><code class="western">path = /media/HDD</code></p>
<p><code class="western">valid users = @users</code></p>
<p><code class="western">force group = users</code></p>
<p><code class="western">create mask = 0660</code></p>
<p><code class="western">directory mask = 0771</code></p>
<p><code class="western">read only = no</code></p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><code class="western">sudo service samba restart</code></p>
<p><code class="western">sudo useradd ChooseUsernameHere -m -G users</code></p>
<p><code class="western">sudo passwd TheChosenUsername //after this
choose a password for the new user</code></p>
<p><code class="western">sudo smbpasswd -a TheChosenUsername //after
this enter passwd again</code></p>
<p><code class="western">&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;
</code><code class="western"><span style="background: #ffff00">userA pi</span></code></p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><code class="western">mount in Win10/Linux/etc. </code><code class="western">a</code><code class="western">s
</code><code class="western">smb://192.</code><code class="western">1</code><code class="western">68.178.25/</code></p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><code class="western"><a href="https://raspberrytips.com/format-mount-usb-drive/">https://raspberrytips.com/format-mount-usb-drive/</a></code></p>
<p><code class="western">Formatting USB stick with RasPi:</code></p>
<p><code class="western">$ </code><code class="western">sudo fdisk -l</code></p>
<p><code class="western">$ </code><code class="western">sudo fdisk
/dev/sda</code><code class="western">1</code></p>
<p><code class="western"> </code><code class="western">Create a
new partition table : g (for GPT, use help for other format)</code></p>
<p><code class="western"> </code><code class="western">Create a
new partition : n</code></p>
<p><code class="western"> </code><code class="western">You can
keep the default values for a single partition</code></p>
<p><code class="western"> </code><code class="western">Confirm
with Y to remove the signature</code></p>
<p><code class="western"> </code><code class="western">And finally
write and exit fdisk: w</code></p>
<p><code class="western">$ </code><code class="western">sudo
mkfs.ext4 /dev/sda1<br/>
</code><code class="western">OR: $ </code><code class="western">sudo
mkfs.vfat /dev/sda1<br/>
</code><code class="western">OR: $ </code><code class="western"><span style="background: #ffff00">sudo
mkfs.ntfs /dev/sda1</span></code></p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><code class="western"><a href="https://thepihut.com/blogs/raspberry-pi-tutorials/17699796-formatting-and-mounting-a-usb-drive-from-a-terminal-window">https://thepihut.com/blogs/raspberry-pi-tutorials/17699796-formatting-and-mounting-a-usb-drive-from-a-terminal-window</a></code></p>
<p><code class="western"><font color="#444444"><span style="background: #ffffff">$
</span></font></code><code class="western"><font color="#444444"><span style="background: #ffffff">sudo
mkfs -t vfat -I /dev/sd</span></font></code><code class="western"><font color="#444444"><font face="Liberation Mono, monospace"><span style="background: #ffffff">a</span></font></font></code><code class="western"><font color="#444444"><span style="background: #ffffff">1</span></font></code></p>
<p><code class="western"><font color="#444444"><span style="background: #ffffff">$
</span></font></code><code class="western"><font color="#444444"><span style="background: #ffffff">sudo
mount /dev/sd</span></font></code><code class="western"><font color="#444444"><font face="Liberation Mono, monospace"><span style="background: #ffffff">a</span></font></font></code><code class="western"><font color="#444444"><span style="background: #ffffff">1
/</span></font></code><code class="western"><font color="#444444"><span style="background: #ffffff">mnt/u</span></font></code><code class="western"><font color="#444444"><span style="font-style: normal"><span style="background: #ffffff">sb</span></span></font></code><code class="western"><font color="#444444"><span style="background: #ffffff">
-o umask=000</span></font></code></p>
<p><code class="western"><font color="#444444"><span style="background: #ffffff">$
sudo umount /mnt/usb</span></font></code></p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<h1 class="western">8<code class="western">Filtering rows with SQL</code></h1>
<p><code class="western"><a href="https://chartio.com/blog/simple-sql-filtering-rows/">https://chartio.com/blog/simple-sql-filtering-rows/</a></code></p>
<p><code class="western">SELECT column_name1, column_name2</code></p>
<p><code class="western">FROM table_name</code></p>
<p><code class="western">WHERE column_name1 operator value;</code></p>
<p><br/>
<br/>
</p>
<p><code class="western"><span style="background: #ffff00">SELECT *</span></code></p>
<p><code class="western"><span style="background: #ffff00">FROM
hello_sensor</span></code></p>
<p><code class="western"><span style="background: #ffff00">WHERE
sensor_num = 0 </span></code>
</p>
<p><code class="western"><span style="background: #ffff00">ORDER BY
`hello_sensor`.`recorded` DESC</span></code></p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<h1 class="western">9<code class="western">P</code><code class="western">ython
MySQL</code></h1>
<h2 class="western">9.1<code class="western">Python MySQL Querying
Data</code></h2>
<p><code class="western"><a href="https://stackoverflow.com/questions/44634810/fastest-way-to-fetch-table-from-mysql-into-pandas">https://stackoverflow.com/questions/44634810/fastest-way-to-fetch-table-from-mysql-into-pandas</a></code></p>
<p><code class="western">MyEngine=create_engine('[YourDatabase]://[User]:[Pass]@[Host]/[DatabaseName]',
echo = True)</code></p>
<p><code class="western"><b>Downloading:</b></code></p>
<p><code class="western">df = pd.read_sql_query('select * from
[TableName]', con= MyEngine)</code></p>
<p><code class="western"><b>Uploading:</b></code></p>
<p><code class="western">df.to_sql([TableName], MyEngine, if_exists =
'append', index=False)</code></p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<h2 class="western">9.2<code class="western">Using </code><code class="western">mysql
</code><code class="western">module</code></h2>
<p><code class="western"><a href="https://www.mysqltutorial.org/python-mysql-query/">https://www.mysqltutorial.org/python-mysql-query/</a></code></p>
<p><code class="western"><a href="https://www.codespeedy.com/fetch-data-from-mysql-table-in-python-program/">https://www.codespeedy.com/fetch-data-from-mysql-table-in-python-program/</a></code></p>
<p><code class="western"><a href="https://www.krazyprogrammer.com/2020/11/fetch-and-display-data-from-mysql-using.html">https://www.krazyprogrammer.com/2020/11/fetch-and-display-data-from-mysql-using.html</a></code></p>
<p><code class="western">pip install mysql-connector</code></p>
<p><br/>
<br/>
</p>
<p><code class="western"><a href="https://www.tutorialspoint.com/python_mysql/python_mysql_select_data.htm">https://www.tutorialspoint.com/python_mysql/python_mysql_select_data.htm</a></code></p>
<p><br/>
<br/>
</p>
<p><code class="western">import mysql.connector</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">#establishing the connection</code></p>
<p><code class="western">conn = mysql.connector.connect(</code></p>
<p><code class="western"> </code><code class="western">user='</code><code class="western"><font face="Liberation Mono, monospace">admin3</font></code><code class="western">',
password='</code><code class="western">pi</code><code class="western">',
host='192.168.178.25', database='</code><code class="western"><font face="Liberation Mono, monospace">test_arduino</font></code><code class="western">'</code></p>
<p><code class="western">)</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">#Creating a cursor object using the cursor()
method</code></p>
<p><code class="western">cursor = conn.cursor()</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">#Retrieving single row</code></p>
<p><code class="western"><font face="Liberation Mono, monospace">quer</font></code><code class="western">y</code><code class="western">
= '''SELECT * from </code><code class="western"><font face="Liberation Mono, monospace">hello_sensor</font></code><code class="western">'''</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">#Executing the query</code></p>
<p><code class="western">cursor.execute(</code><code class="western"><font face="Liberation Mono, monospace">quer</font></code><code class="western">y</code><code class="western">)</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">#Fetching 1st row from the table</code></p>
<p><code class="western">result = cursor.fetchone();</code></p>
<p><code class="western">print(result)</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">#Fetching </code><code class="western">first
two</code><code class="western"> row</code><code class="western">s</code><code class="western">
from the table</code></p>
<p><code class="western">result = cursor.fetchmany(size=2);</code></p>
<p><code class="western">print(result)</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">#Fetching </code><code class="western">all</code><code class="western">
row</code><code class="western">s</code><code class="western"> from
the table</code></p>
<p><code class="western">result = cursor.fetchall();</code></p>
<p><code class="western">print(result)</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">#Closing the connection</code></p>
<p><code class="western">conn.close()</code></p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<h2 class="western">9.3<code class="western">Create table</code></h2>
<p><code class="western"><a href="https://www.tutorialspoint.com/python_mysql/python_mysql_create_table.htm">https://www.tutorialspoint.com/python_mysql/python_mysql_create_table.htm</a></code></p>
<p><code class="western">import mysql.connector</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">#establishing the connection</code></p>
<p><code class="western">conn = mysql.connector.connect(</code></p>
<p><code class="western"> </code><code class="western">user='root',
password='password', host='127.0.0.1', database='mydb'</code></p>
<p><code class="western">)</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">#Creating a cursor object using the cursor()
method</code></p>
<p><code class="western">cursor = conn.cursor()</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">#Dropping EMPLOYEE table if already exists.</code></p>
<p><code class="western">cursor.execute(&quot;DROP TABLE IF EXISTS
EMPLOYEE&quot;)</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">#Creating table as per requirement</code></p>
<p><code class="western">sql ='''CREATE TABLE EMPLOYEE(</code></p>
<p><code class="western"> </code><code class="western">FIRST_NAME
CHAR(20) NOT NULL,</code></p>
<p><code class="western"> </code><code class="western">LAST_NAME
CHAR(20),</code></p>
<p><code class="western"> </code><code class="western">AGE INT,</code></p>
<p><code class="western"> </code><code class="western">SEX CHAR(1),</code></p>
<p><code class="western"> </code><code class="western">INCOME FLOAT</code></p>
<p><code class="western">)'''</code></p>
<p><code class="western">cursor.execute(sql)</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">#Closing the connection</code></p>
<p><code class="western">conn.close()</code></p>
<p><br/>
<br/>
</p>
<h2 class="western">9.4<code class="western">Insert data</code></h2>
<p><code class="western"><a href="https://www.tutorialspoint.com/python_mysql/python_mysql_insert_data.htm">https://www.tutorialspoint.com/python_mysql/python_mysql_insert_data.htm</a></code></p>
<p><code class="western">import mysql.connector</code></p>
<p><code class="western">#establishing the connection</code></p>
<p><code class="western">conn = mysql.connector.connect(</code></p>
<p><code class="western"> </code><code class="western">user='root',
password='password', host='127.0.0.1', database='mydb'</code></p>
<p><code class="western">)</code></p>
<p><code class="western">#Creating a cursor object using the cursor()
method</code></p>
<p><code class="western">cursor = conn.cursor()</code></p>
<p><code class="western"># Preparing SQL query to INSERT a record
into the database.</code></p>
<p><code class="western">insert_stmt = (</code></p>
<p><code class="western"> </code><code class="western">&quot;INSERT
INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)&quot;</code></p>
<p><code class="western"> </code><code class="western">&quot;VALUES
(%s, %s, %s, %s, %s)&quot;</code></p>
<p><code class="western">)</code></p>
<p><code class="western">data = ('Ramya', 'Ramapriya', 25, 'F', 5000)</code></p>
<p><code class="western">try:</code></p>
<p><code class="western"> </code><code class="western"># Executing
the SQL command</code></p>
<p><code class="western"> </code><code class="western">cursor.execute(insert_stmt,
data)</code></p>
<p><code class="western"> </code><code class="western"># Commit
your changes in the database</code></p>
<p><code class="western"> </code><code class="western">conn.commit()</code></p>
<p><code class="western">except:</code></p>
<p><code class="western"> </code><code class="western"># Rolling
back in case of error</code></p>
<p><code class="western"> </code><code class="western">conn.rollback()</code></p>
<p><code class="western"># Closing the connection</code></p>
<p><code class="western">conn.close()</code></p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<h1 class="western">10<code class="western">Schedule periodic RasPi
reboot</code></h1>
<p><code class="western"><a href="https://raspberrypi.stackexchange.com/questions/2150/how-do-i-reboot-at-a-specific-time">https://raspberrypi.stackexchange.com/questions/2150/how-do-i-reboot-at-a-specific-time</a></code></p>
<p><code class="western"><a href="https://smarthomepursuits.com/how-to-reboot-raspberry-pi-on-a-schedule/">https://smarthomepursuits.com/how-to-reboot-raspberry-pi-on-a-schedule/</a></code></p>
<p><code class="western">$ </code><code class="western">sudo crontab
-e</code></p>
<p><code class="western">&gt;&gt;&gt;&gt;&gt; choose nano editor</code></p>
<p><code class="western">&gt;&gt;&gt;&gt;&gt; enter following command
at end of file for </code><code class="western">daily </code><code class="western">reboot
at 13:03:</code></p>
<p><code class="western">03 13 * * * /sbin/shutdown -r now</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">Check time in Linux commandline:</code></p>
<p><code class="western"><a href="https://www.lifewire.com/display-date-time-using-linux-command-line-4032698">https://www.lifewire.com/display-date-time-using-linux-command-line-4032698</a></code></p>
<p><code class="western">$ date</code></p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<h1 class="western">11<code class="western">Install KeePass</code></h1>
<p><code class="western"><a href="https://keepass.info/download.html">https://keepass.info/download.html</a></code></p>
<p><code class="western"><a href="https://sourceforge.net/p/keepass/discussion/329220/thread/17d1bd26/">https://sourceforge.net/p/keepass/discussion/329220/thread/17d1bd26/</a></code></p>
<p><code class="western">sudo apt-add-repository ppa:jtaylor/keepass</code></p>
<p><code class="western">sudo apt-get update</code></p>
<p><code class="western">sudo apt-get install keepass2 </code>
</p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<h1 class="western">12<code class="western">Clean</code><code class="western">
the repository of downloaded packages</code></h1>
<p><code class="western"><a href="https://askubuntu.com/questions/634820/how-can-i-delete-ubuntu-temp-files-which-are-created-during-software-installatio">https://askubuntu.com/questions/634820/how-can-i-delete-ubuntu-temp-files-which-are-created-during-software-installatio</a></code></p>
<p><code class="western">sudo </code><code class="western">apt-get
autoclean</code></p>
<p><code class="western">sudo </code><code class="western">apt-get
clean</code></p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<h1 class="western">13<code class="western">cleanup a
/var/log/journal in Linux</code></h1>
<p><br/>
<br/>
</p>
<p><code class="western">How to tell how much space is being taken?</code></p>
<p><code class="western">$ </code><code class="western">journalctl
--disk-usage</code></p>
<p><br/>
<br/>
</p>
<p><code class="western">Fix: Option 3 (RECOMMENDED!):</code></p>
<p><code class="western">$ journalctl --vacuum-size=500M</code></p>
<p><code class="western">This will delete old log files until the
directory reaches the threshold size stipulated, in our case, 500M.</code></p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<h1 class="western">14<code class="western">Change permission of
mounted drive</code></h1>
<p style="line-height: 100%; margin-bottom: 0in"><code class="western">$
</code><code class="western">sudo chmod -R 770 /media/bora/Medien</code></p>
<p><code class="western">sudo mount -o rw,remount /</code><code class="western">media/bora/Medien</code></p>
<p><br/>
<br/>
</p>
<p><code class="western"><a href="https://askubuntu.com/questions/948416/changing-ownership-of-read-only-file-system-i-cant-move-delete-rename-any-f">https://askubuntu.com/questions/948416/changing-ownership-of-read-only-file-system-i-cant-move-delete-rename-any-f</a></code></p>
<p><code class="western">$ </code><code class="western">mount -v |
grep &quot;^/&quot; | awk '{print &quot;\nPartition identifier: &quot;
$1 &quot;\n Mountpoint: &quot; $3}'</code></p>
<p><code class="western">$ </code><code class="western">sudo mount -o
remount,rw /</code><code class="western">dev/sda5</code><code class="western">
/</code><code class="western">media/bora/Medien</code></p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><code class="western"></code><code class="western">If you are
on a dual boot system and getting the error related to the read-only
file system. One probable cause could be that your other system is
not correctly shut down and might be in hibernation or sleep. So
login to that system and shut it down properly and religion to your
Linux system. this resolved the issue in my system”</code></p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p><br/>
<br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
<p style="line-height: 100%; margin-bottom: 0in"><br/>
</p>
</body>
</html>