Please add
the following corrections:
On pg. 248 add the following:<br>To restore your
website from a usb stick:
cp -r -p /mnt/usb/* var/www/html.
On pg. 249 add the following:<br>to restore a single file
from a remote web server type:
scp
index.html dave@192.168.1.6:/home/dave
On pg. 254 line #8 should read:
mysql -uroot -p<i>password</i> dictionary <
/home/pi/dictionary.backup
sudo nano /etc/apt/sources.list
deb http://repozytorium.mati75.eu/raspbian jessie-backports main contrib non-free
deb-src http://repozytorium.mati75.eu/raspbian jessie-backports main contrib non-free
sudo gpg --keyserver pgpkeys.mit.edu --recv-key CCD91D6111A06851
sudo apt-get update
sudo apt-get install apache2 php7.0 php7.0-curl php7.0-gd php7.0-imap php7.0-json php7.0-mcrypt php7.0-mysql php7.0-opcache php7.0-xmlrpc libapache2-mod-php7.0
sudo apt-get install mysql-server php7.0-mysql -y
https://dynamicdns.park-your-domain.com/update?host=www&domain=ikiribatidictionary.us&password=abcd1234defg5678
30 6 1-31 1-12 1-7 wget -q "https://dynamicdns.park-your-domain.com/update?host=@&domain=ikiribatidictionary.us &password=abcd1234defg5678
30 6 1-31 1-12 1-7 wget -q "https://dynamicdns.park-your-domain.com/update?host=@&domain=ikiribatidictionary.us&password=abcd1234defg5678
create database counter;
use counter;
create table hits
(pagetitle varchar(30),hitcount int);
insert into
insert into hits
(pagetitle,hitcount) values (‘Other Places to Travel’,1);
create user
counterguest@localhost;
set password for
counterguest@localhost=password('hitman');
grant select, update on counter.hits to
counterguest@localhost;
create database counter;
use counter;
create table hits (pagetitle varchar(30),hitcount int);
insert into hits (pagetitle,hitcount) values (‘I-Kiribati Dictionary’,1);
insert into hits (pagetitle,hitcount) values (‘Other Places to Travel’,1);
create user counterguest@localhost;
set password for counterguest@localhost=password('hitman');
grant select, update on counter.hits to counterguest@localhost;
create database dictionary;
use dictionary;
create table word
(wordnum int primary key auto_increment, english varchar (100), part_of_speech
varchar(20), ikiribati varchar(100),comments text);
insert into word (english,part_of_speech,ikiribati,comments)
values ('abandon','vt','kitana',' ');
insert into word
(english,part_of_speech,ikiribati,comments) values ('airplane','n','wanikiba','
');
insert into word (english,part_of_speech,ikiribati,comments)
values ('happy','a','kukurei',' ');
insert into word
(english,part_of_speech,ikiribati,comments) values ('hello','exclamation','Ko
na mauri',' ');
insert into word
(english,part_of_speech,ikiribati,comments) values
('goodbye','exclamation','tiabo',' ');
insert into word
(english,part_of_speech,ikiribati,comments) values ('yes','exclamation','eng','
');
insert into word
(english,part_of_speech,ikiribati,comments) values ('beautiful','a','tikaraoi','
');
insert into word
(english,part_of_speech,ikiribati,comments) values ('beautifully','adv','n te
aro ae tikaraoi',' ');
insert into word
(english,part_of_speech,ikiribati,comments) values ('friend','n','rao',' ');
insert into word
(english,part_of_speech,ikiribati,comments) values ('school','n','reirei',' ');
create user dictionaryguest@localhost;
set password for dictionaryguest@localhost=password('bookworm');
grant select on dictionary.word to dictionaryguest@localhost;
<?php
//Save this file as
/var/www/html/kiribati/counter.php
echo "<body bgcolor=white text=darkblue>";
$server = "localhost";
$dbusername = "counterguest";
$dbpassword = "hitman";
$database="counter";
$con=mysqli_connect($server,$dbusername,$dbpassword,$database);
if (mysqli_connect_errno()){
echo "Access Denied.";
quit();
}
$sql="select hitcount from hits where pagetitle='I-Kiribati
Dictionary'";
$result = mysqli_query($con,$sql);
if ($rs = mysqli_fetch_array($result)){
$hitcount=$rs['hitcount']+1;
echo "<div
style=position:absolute;top:0;left:0;font-size:18>".$hitcount."</div>";
$sql="update hits set hitcount=".$hitcount." where
pagetitle='I-Kiribati Dictionary'";
mysqli_query($con,$sql);
}
$con.close();
?>
<!DOCTYPE
HTML>
<head>
<title>I-Kiribati
Dictionary</title>
<meta charset="UTF-8">
<meta name="description"
content="I-Kiribati Dictionary">
<meta name="keywords"
content="I-Kiribati,Kiribati,Gilbertese,Kiribati Dictionary">
<meta name="author"
content="Michael Wright">
<meta name="viewport"
content="width=device-width, initial-scale=1.0">
</head>
<body>
<center>
# of
Visitors =
<iframe src="counter.php" style=width:50px;height:20px;border-width:0>
<p>Your browser does not support
iframes.</p>
</iframe>
<h1>I-Kiribati
Dictionary</h1>
<img
src=ikiribatiflag.jpg><p>
<form
action=translate.php target=frame2 method=post>
Type
the English or I-Kiribati word or phrase:<p>
<input
type=text name=word size=20><p>
<input
type=submit name="toenglish" value="Translate to
English">
<input
type=submit name="toikiribati" value="Translate to
I-Kiribati">
</form>
<p>
<iframe name=frame2 cols=40 rows=10
style=border-style:solid;border-color:black;border-width:1>
</center>
</body>
<?php
//Save this file as
/var/www/html/kiribati/translate.php
$word=$_POST['word'];
if(notsecure($word)){
echo "Your username has one or more illegal
characters.<br>";
$e=$e+1;
exit();
}
//check which submit button was
pressed
if (isset($_POST['toenglish'])) {
$mode="Translate to English";
$sql="select * from word where ikiribati='".$word."'";
}
if (isset($_POST['toikiribati'])) {
$mode="Translate to I-Kiribati";
$sql="select * from word where english='".$word."'";
}
$server = "localhost";
$dbusername = "dictionaryguest";
$dbpassword = "skippy";
$database="dictionary";
//connect to the database and
immediately check for a connection error
$con=mysqli_connect($server,$dbusername,$dbpassword,$database);
if (mysqli_connect_errno()){
echo "Access Denied<br>";
quit();
}
//execute the query
$result = mysqli_query($con,$sql);
if (mysqli_num_rows($result)==0){
echo "There are no matching words.";
exit();
}
while ($rs = mysqli_fetch_array($result)) {
$english=$rs['english'];
$part_of_speech=$rs['part_of_speech'];
$ikiribati=$rs['ikiribati'];
if ($mode=="Translate to I-Kiribati"){
echo $ikiribati." (".$part_of_speech.")<br>";
}
if ($mode=="Translate to English"){
echo $english."
(".$part_of_speech.")<br>";
}
}
//----------------------------------------------
function notsecure($mystring){
//----------------------------------------------
if (strpos($mystring,"")){
return
1;
}
if (strpos($mystring,"'") ||
strpos($mystring,'"') | strpos($mystring,"=")){
return 1;
}
$str = strtoupper($mystring);
if (strpos($str,"OR") &&
strpos($str,"=")){
return 1;
}
}
gpio –g mode 4 out
gpio –g 4 1
gpio –g 4 0
gpio –g 4 blink
<?PHP
//save this as /var/www/html/simplerelay.php
$gpionum=$_GET['gpionum'];
$status=$_GET['status'];
$n="gpio -g mode ".$gpionum."
out";
echo $n."<br>";
shell_exec($n);
$n="gpio -g write ".$gpionum."
".$status;
shell_exec($n);
echo $n."<br>";
?>
http://192.168.1.12/simplerelay.php?gpionum=17&status=0
http://192.168.1.12/simplerelay.php?gpionum=17&status=1
<?php
//togglerelay.php
session_start();
//conduct a security and password check
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (!preg_match('/^[a-z0-9 .\-]+$/i',
$_POST['password']) && $_POST['password']!=""){
echo " Password contains illegal
characters.<p>";
echo "Click <a
href=index.php>here</a> to start again.";
exit();
}
if ($_POST['password']=="pinhead"){
$_SESSION['password']=$_POST['password'];
}
}
if
($_SESSION['password']!="pinhead"){
echo "You must type the password.<br>";
echo "<form action=index.php
method=post>";
echo "<input type=password
name=password>";
echo "<input type=submit
value=Login>";
exit();
}
create database relays;
use relays;
create table pins (recordnum int primary key
auto_increment,description varchar(30),pinnum int unique not null, status int
default 1);
insert into pins (description,pinnum) values
("Front Porch",4);
insert into pins (description,pinnum) values
("Living Room",17);
create user relayguest@localhost;
set password for
relayguest@localhost=password('pinhead');
grant insert, select, update, delete on
relays.pins to relayguest@localhost;
<?php
//Relay Switching using a Password-Protected
PHP Page and MySQL
//Save this file as
/var/www/html/mysqlrelays/index.php
session_start();
//check for illegal characters in password
field
$v=$_POST['password'];
if (!preg_match('/^[a-z0-9 .\-]+$/i',
$v)&&$v!=""){
echo " Password contains illegal
characters.<p>";
echo "Click <a
href=index.php>here</a> to start again.";
exit();
}
//if a password was just posted then assign
it to the session variable
if ($_POST['password']==""){
echo "You must type a
password.<br>";
echo "<form action=index.php
method=post>";
echo "<input type=password
name=password>";
echo "<input type=submit
value=Continue>";
exit();
}
//remember the password if correct
$_SESSION['password']=$_POST['password'];
//if the logout link was clicked then logout
if ($_GET['mode']=='logout'){
$_SESSION['password']="";
}
//open the database
$server = "localhost";
$dbusername = "relayguest";
$dbpassword = $_SESSION['password']; 131
$database="relays";
$con=mysqli_connect($server,$dbusername,$dbpassword,$database);
if
(mysqli_connect_errno()){
echo "Access
Denied.<br>";
exit();
}
echo
"<html><body>";
echo
"<h1>Relay Controller with MySQL</h1>";
echo
"<form action=save.php method=post target=frame1>";
echo
"<table>";
echo
"<tr><td>Description</td><td>GPIO<br>Pin#</td><td>On/Off</td></tr>";
$sql="select
* from pins";
$result =
mysqli_query($con,$sql);
$r=0;
while ($rs =
mysqli_fetch_array($result)) {
$recordnum=$rs['recordnum'];
$desc=$rs['description'];
$pinnum=$rs['pinnum'];
$status=$rs['status'];
//prepare to tell the
checkbox to be checked or not
if
($status==0){$st="checked";}else{$st="";}
echo
"<tr>";
//plot the fields
on the screen in the table
echo
"<td>";
echo
"<input type=hidden name=recordnum".$r."
value=".$recordnum.">";
echo
"<input type=text name=description".$r."
value='".$desc."' size=10>";
echo
"</td>";
echo
"<td><input type=text name=pinnum".$r."
value=".$pinnum." size=2></td>";
echo
"<td><input type=checkbox ".$st."
name=status".$r."></td>";
echo
"</tr>";
$r=$r+1;
}
mysqli_close($con);
//add a blank
column to add a relay
echo
"<tr>";
echo
"<td><input type=text name=newdescription value=''
size=10></td>";
echo
"<td><input type=text name=newpinnum size=2></td>";
132
echo
"</tr>";
echo
"<tr><td colspan=2> </td></tr>";
echo
"<tr><td colspan=3 align=right><input type=submit
value=SAVE></td></tr>";
echo
"</table>";
echo
"</form>";
//create iframe
box to show output from the form submission
echo
"<iframe name=frame1 id=frame1
style=width:300;height:100></iframe><p>";
echo
"<b>Instructions:</b><br>";
echo
"<ul>";
echo
"<li>Click on the check box to turn on/off the relay.";
echo
"<li>Change the description or the GPIO pin number if needed.";
echo
"<li>Enter info in the bottom row to add a new relay.";
echo
"<li>To delete an item type delete as the description.";
echo
"<li>Click the SAVE button to execute all commands.";
echo
"<li>Progress of the save or delete will be displayed in the iframe
window.";
echo
"<li>Click <a href=index.php?mode=logout>here</a> to log
out.";
echo "</ul>";
echo
"</body></html>";
?>
<?php
//Relay Switching using a Password-Protected
PHP Page and MySQL
//Save this file as
/var/www/html/mysqlrelays/save.php
//check for illegal characters in all posted
fields
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
foreach($_POST as $key => $value) {
//echo $key." =
".$value."<br>";
if (!preg_match('/^[a-z0-9 .\-]+$/i', $value)
&& $value!=""){
echo $key." contains illegal
characters.<p>";
exit();
}
}
}
session_start();
//open the database
$server = "localhost";
$dbusername = "relayguest";
$dbpassword = $_SESSION['password'];
$database="relays";
$con=mysqli_connect($server,$dbusername,$dbpassword,$database);
if (mysqli_connect_errno()){
echo "Access Denied.<p>";
exit();
}
//updatate the fields with any changes
$r=0;
while(1){
$n="recordnum".$r;
$recordnum=$_POST[$n];
$d="description".$r;
$desc=$_POST[$d];
$p="pinnum".$r;
$pinnum=$_POST[$p];
$s="status".$r;
$status=$_POST[$s];
if ($status=="on"){$status=0;}else{$status=1;}
sudo
chown pi /var/www/html
sudo
mkdir /var/www/html/relays
cd
/var/www/html/relays
echo
Lamp,4,1 > pins.txt
.htaccess
<Files pins.txt>
deny from all
allow from 127.0.0.1
</Files>
#!/usr/bin/env python
#Save file as /var/www/html/relays/relay.py
import time
import RPi.GPIO as mygpio
mygpio.setmode(mygpio.BCM)
mygpio.setwarnings(False)
while True:
file=open("/var/www/html/relays/pins.txt","r")
while True:
r=file.readline();
if r=="":
break
n=r.split(",")
description=n[0]
pinnum=n[1]
status=n[2]
mygpio.setup(int(pinnum),mygpio.OUT)
mygpio.output(int(pinnum),int(status))
time.sleep(.1)
file.close()
<?php
//This
is the /var/www/html/relays/index.php file.
//How
to Setup a Raspberry Pi Web Server
//www.y2kLeader.com
session_start();
//check
for security threats & unwanted characters in password field
$v=$_POST['password'];
if
(!preg_match('/^[a-z0-9 .\-]+$/i', $v)&&$v!=""){
echo
" Password contains illegal characters.<p>";
echo
"Click <a href=index.php>here</a> to start again.";
exit();
}
//if
a password was just posted then assign it to the session variable
$_SESSION['password']=$_POST['password'];
//if
the logout link was clicked then logout
if
($_GET['mode']=='logout'){
$_SESSION['password']="";
}
//check
the password
if
($_SESSION['password']!="pinhead"){
echo
"<form action=index.php method=post>";
echo
"Enter password <input type=password name=password>";
echo
" <input type=submit value='Log in'>";
echo
"</form>";
exit();
}
//open
the pins.txt file
$myfile
= fopen("pins2.txt", "r");
if
(!$myfile){
echo
"There was a problem opening the file.<b>";
exit();
}
echo
"<html><body>";
echo
"<h1>Raspberry Pi<br>Relay Controller</h1>";
echo
"<form action=save.php method=post target=frame1>";
echo
"<table>"; echo
"<tr><td>Description</td><td>GPIO<br>Pin#</td><td>On/Off</td></tr>";
$r=0;
while(!feof($myfile))
{
$r++;
//read
a record from the file
$line=fgets($myfile);
//extract
the fields separated by commas
$n=explode(",",$line);
$desc=$n[0];
//if
there is no record then exit the loop
if
($desc==""){$r=$r-1;break;}
$pinnum=$n[1];
$status=$n[2];
//prepare
to tell the checkbox to be checked or not
if
($status==0){$st="checked";}else{$st="";}
echo
"<tr>";
//plot
the fields on the screen in the table
echo
"<td><input type=text name=description".$r."
value='".$desc."' size=10></td>";
echo
"<td><input type=text name=pinnum".$r."
value=".$pinnum." size=2></td>";
echo
"<td><input type=checkbox ".$st." name=status".$r."></td>";
echo
"</tr>";
}
fclose($myfile);
//add
a blank column to add a relay
echo
"<tr>";
echo
"<td><input type=text name=newdescription value=''
size=10></td>";
echo
"<td><input type=text name=newpinnum size=2></td>";
echo
"<td><input type=checkbox name=newstatus></td>";
echo
"</tr>";
echo
"<tr><td colspan=2> </td></tr>";
echo
"<tr><td colspan=3 align=right><input type=submit
value=SAVE></td></tr>";
echo
"</table>";
//save
a hidden field with the total number of records
echo
"<input type=hidden name=total value=".$r.">";
echo
"</form>";
//create
iframe box to show output from the form submission echo "<iframe
name=frame1 id=frame1
style=width:200;height:100></iframe><p>";
echo
"<b>Instructions:</b><br>";
echo
"<ul>";
echo
"<li>Click on the check box to turn on/off the relay.";
echo
"<li>Change the description or the GPIO pin number if needed.";
echo
"<li>Enter info in the bottom row to add a new relay.";
echo
"<li>To delete an item, erase the description.";
echo
"<li>Click the SAVE button to execute all commands."; echo
"<li>Progress of the save or delete will be displayed in the iframe
window.";
echo
"<li>Click <a href=index.php?mode=logout>here</a> to log
out.";
echo
"</ul>";
148-149
/var/www/html/relays/save.php
<?php
//Save
this file as /var/www/html/relays/save.php
//any
output shows up in the index.php's iframe
//How
to Setup a Raspberry Pi Web Server
//www.y2kLeader.com
session_start();
//check
to see if logged in
if
($_SESSION['password']!="pinhead"){ echo "<body onload='javascript:window.parent.location.reload()'>";
exit();
}
//check
for security threats & unwanted chars in fields
foreach($_POST
as $key => $value){
$v=$_POST[$key];
if
(!preg_match('/^[a-z0-9 .\-]+$/i', $v)&&$v!=""){
$x=$x.$key."
Contains illegal characters.<p>";
}
}
if
($x!=""){echo $x;exit();}
//check
to see if a GPIO pin was entered
if
($_POST['newdescription']!=""){
if
($_POST['newpinnum']==""){
echo
"You must include a pin number.<p>";
exit();
}
//create
a line with the new info for appending later
$new=$_POST['newdescription'].",".$_POST['newpinnum'].",1\n";
}
echo
"updating..<br>";
//open
the text file $myfile = fopen("pins2.txt", "w") or
die("Unable to open file!");
//cycle
through input fields & update database with the info
for
($i=1;$i<$_POST['total']+1;$i++){
$d="description".$i;
$p="pinnum".$i;
$s="status".$i;
//check
if the check box is checked
if
($_POST[$s]=="on"){$status=0;}else{$status=1;}
//if
the desc field is filled out save the curr record
if
($_POST[$d]!=""){
$t=$_POST[$d].",".$_POST[$p].",".$status."\n";
fwrite($myfile,$t);
echo
$t."<br>";
}
else{
//if
the desc field is blank don't save record
$t="";
$deletion=1;
}
}
//add
the new record (if any) then refresh the parent page
if
($new!=""){
fwrite($myfile,$new);
echo
$new."<br>"; echo "<body
onload='javascript:window.parent.location.reload()'>";
}
fclose($myfile);
//if
in delete mode, refresh the parent page.
if
($deletion==1){ echo "<body
onload='javascript:window.parent.location.reload()'>";
}
?>
15
21 * * * gpio –g mode 4 out;gpio –g write 4 0
30
07 * * * gpio –g mode 4 out;gpio –g write 4 1
0 0
* * 1,3,5 gpio –g mode 4 out;gpio –g write 4 0
10 0
* * 1,3,5 gpio –g mode 4 out;gpio –g write 4 1
0,15,30,45
1,3,5 * * 1-5 gpio –g mode 4 out;gpio –g write 4 0
1,16,31,46
1,3,5 * * 1-5 gpio –g mode 4 out;gpio –g write 4 1
20
0-11 gpio –g mode 7 out;gpio –g write 7 0
25
0-11 gpio –g mode 7 out;gpio –g write 7 1
*/5
22-06 gpio -g mode 4 out;gpio –g 4 blink
*/6
22-06 gpio -g mode 4 out;gpio –g 4 1
*/6
22-06 gpio -g mode 5 out;gpio –g 5 blink
*/7
22-06 gpio -g mode 5 out;gpio –g 5 1
*/7
22-06 gpio -g mode 6 out;gpio –g 6 blink
*/8
22-06 gpio -g mode 6 out;gpio –g 6 1
*/8
22-06 gpio -g mode 7 out;gpio –g 7 blink
*/9
22-06 gpio -g mode 7 out;gpio –g 7 1
vlc -vvv
v4l2:///dev/video0:chroma=h264:width=320:height=200 --sout
'#standard{access=http,mux=ts,dst=:5000/,name=stream,mime=video/ts}'
vlc -vvv
v4l2:///dev/video0:chroma=h264:width=320:height=200 --sout-http-user=mike
--sout-http-pwd=abcd --sout '#standard{access=http,mux=ts,dst=:5000/,name=stream,mime=video/ts}'
//arduino_serialout.ino
//Outputs numbers through the
serial port
//run readserial.py script on
the Raspberry Pi to input numbers
int a=0;
void setup() {
Serial.begin(9600);
}
void loop() {
a++;
Serial.println(a);
delay(500);
}
#!/usr/bin/python
import time
import serial
ser = serial.Serial()
ser.port = "/dev/ttyUSB0"
ser.baudrate = 9600
ser.open()
while True:
x=ser.readline()
print x
#!/usr/bin/python
import time
import serial
ser = serial.Serial()
ser.port = "/dev/ttyUSB0"
ser.baudrate = 9600
ser.open()
while True:
ser.write("Hello from Raspberry
Pi\n")
time.sleep(2)
//I2C Address Scanner
//SDA to A4 Pin
//SCL to A5 Pin
//GND - GND Pin
//VCC - 5V Pin
#include <Wire.h>
byte add;
void setup(){
Wire.begin();
Serial.begin(9600);
for(add = 1; add < 127; add++ ){
Wire.beginTransmission(add);
if(Wire.endTransmission()==0){
Serial.print("I2C address is 0x");
if (add<16){Serial.print("0");}
Serial.println(add,HEX);
}
}
}
void loop(){}
/*
arduino_serialin.ino
Receives messages from the USB
port attached to the Raspberry Pi
and prints the message in the
LCD Display.
For use with a 20 character 4
line I2C Display
Links to the librarary
downloads at www.y2kleader.com
Connections:
//SDA to A4 Pin
//SCL to A5 Pin
//GND - GND Pin
//VCC - 5V Pin
*/
#include <Wire.h> //
Comes with Arduino IDE
#include
<LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F, 2,
1, 0, 4, 5, 6, 7, 3, POSITIVE); // Set the LCD I2C address
int x=-1;
int y=0;
char n;
void setup(){
Serial.begin(9600); // Used to
type in characters
lcd.begin(20,4); // initialize
the lcd for 20 chars 4 lines, turn on backlight
lcd.backlight();
lcd.setCursor(x,y);
}
void loop(){
if (Serial.available()) {
delay(100);
while (Serial.available() >
0) {
n=Serial.read();
x++;
if (x==20){
x=0;
183
y++;
}
if (y==4){
lcd.clear();
y=0;
}
lcd.setCursor(x,y);
lcd.write(n);
}//end while
}//end if(Serial.avaiable)
}//end loop
/*soil_humidity_meter
Probe board VCC to Arduino 5V
Out pin
Probe board GND to Arduino GND
pin
Probe Data to Arduino A0 pin.
*/
int sensorValue = 0;
int percentValue=0;
int dry=1023;
int wet=0;
int count=0;
void setup() {
Serial.begin(9600);
pinMode(2,OUTPUT);
digitalWrite(2,HIGH);
}
void loop() {
count++;
sensorValue = analogRead(0);
percentValue=map(sensorValue,dry,wet,0,100);
if (count>3 &&
count<30){
Serial.println(percentValue);
}
else{
if (count>29){
digitalWrite(2,LOW);
190
}
}
delay(1000);
}
<?php
//readsoil.php
//will open port and wait 3 seconds for
Arduino to reboot
$f=fopen('/dev/ttyUSB0',"r");
sleep(3);
$data=fgets($f);
echo "<h1>Soil
Humidity</h1>";
echo
"<h2>".$data."%</h2>";
fclose($f);
?>
Press the button and wait 3 seconds.<P>
<button type="button"
onClick="window.location.reload();">
Read Again
</button>
sudo crontab -e
@reboot fswebcam -q -b -d
/dev/video0 -l 1 --jpeg 95 --save /var/www/html/simplestream/camera1.jpg
<head>
<title>Simple Stream</title>
</head>
<body onload=init()>
<center><h1>Simple
Stream</h1>
<img id=camera1 src=camera1.jpg>
<script>
function init(){
var x=setInterval("reload()",1000)
}
function reload(){
camera1.src="camera1.jpg?" + new Date().getTime();
}
</script>
/var/www/html/pantiltusb/index.html
<head>
<meta http-equiv="cache-control"
content="no-cache, must-revalidate, post-check=0, pre-check=0" />
<meta http-equiv="cache-control"
content="max-age=0" />
<meta http-equiv="expires"
content="0" />
<meta http-equiv="expires"
content="Tue, 01 Jan 1980 1:00:00 GMT" />
<meta http-equiv="pragma"
content="no-cache" />
</head>
<body onload=send()>
<center>
<form name=form1 action=pancam.php
method=post target=frame2>
<table>
<tr><td
colspan=2><h2>Pan/Tilt Camera #1</h2></tr></td>
<tr><td>
<img id=pic src=pic.jpg
style=width:320;height:200;border-style:ridge;border-width:5;border-color:darkred>
</td>
<td width=50>
<input type=range
orient="vertical" id=yslider name=yslider min=1 max=180
onchange="send()" style="color:blue;width:50;-webkit-appearance:
slider-vertical;writing-mode: bt-lr"></slider>
</td></tr>
<tr><td align=center>
<input type=range id=xslider name=xslider
min=1 max=180 onchange="send()"></slider>
</td>
<td> </td>
</tr>
<input type=submit name=slidersubmitbutton
id=slidersubmitbutton style=visibility:hidden>
<tr><td colspan=2>
<iframe name=frame2 id=frame2
style=height:50;border:0></iframe>
</td></tr></table>
</form>
<script>
//uncomment the next line if you want
continous 1 second streaming
//var
xw=setInterval("send()",1000);
function send(){
var
x=document.getElementById("xslider");
var
x=document.getElementById("yslider");
form1.slidersubmitbutton.click();
pic.src = 'pic.jpg?'+new Date().getTime();
}
</script>
<?php
echo "<body style=font-size:24
onload=init()><center>";
$xangle=$_POST['xslider'];
$yangle=$_POST['yslider'];
//inverse axes if necessary
$xangle = map($xangle, 1, 180, 180, 1);
//$yangle = map($yangle, 1, 180, 180, 1);
$result=shell_exec("python pantilt.py 4
".$xangle." 14 ".$yangle);
echo $result;
function map($value, $fromLow, $fromHigh,
$toLow, $toHigh) {
$fromRange = $fromHigh - $fromLow;
$toRange = $toHigh - $toLow;
$scaleFactor = $toRange / $fromRange;
$tmpValue = $value - $fromLow;
$tmpValue *= $scaleFactor;
return $tmpValue + $toLow;
}
?>
<script>
function init(){
parent.pic.src = 'pic.jpg?'+new
Date().getTime();
}
</script>
#/var/www/html/pantiltusb/pantilt.py
import RPi.GPIO as GPIO
import time
import sys
import os
xpin=int(str(sys.argv[1]))
xangle=float(str(sys.argv[2]))
xangle=xangle/180*15
xangle = round(xangle, 1)
ypin=int(str(sys.argv[3]))
yangle=float(str(sys.argv[4]))
yangle=yangle/180*15
yangle = round(yangle,1)
sleeptime=1
hertz=50 #20 ms
GPIO.setmode(GPIO.BCM)
GPIO.setup(xpin,GPIO.OUT)
GPIO.setup(ypin,GPIO.OUT)
xpwm=GPIO.PWM(xpin,hertz)
xpwm.start(xangle)
print "X = ",sys.argv[2]
time.sleep(sleeptime)
xpwm.stop()
print " "
ypwm=GPIO.PWM(ypin,hertz)
ypwm.start(yangle)
print "Y = ",sys.argv[4]
time.sleep(sleeptime)
ypwm.stop()
GPIO.cleanup()
sudo usermod -a -G gpio
www-data
sudo apt-get install fswebcam
fswebcam -r 320x200 --jpeg 100
/var/www/html/pancam/pic.jpg
sudo chmod 666
/var/www/html/p/pic.jpg
raspivid -o - -t 0 -w 800 -h
600 -br 60 -vf | cvlc stream:///dev/stdin --sout '#rtp{sdp=rtsp://:5000/}'
:demux=h264
raspivid -o - -t 0 -w 800 -h 600
-br 60 -vf | cvlc stream:///dev/stdin --sout '#rtp{sdp=rtsp://:5000/}'
:demux=h264 &
raspivid
-o - -t 0 -w 800 -h 600 -br 60 -vf -hf| cvlc stream:///dev/stdin --sout
'#rtp{sdp=rtsp://:5000}' :demux=h264
cat /home/pi/.ssh/id_rsa.pub | ssh dave@192.168.1.14
'cat >> .ssh/authorized_keys'
mkdir /home/pi/webfolder
cp -r -p /var/www/html
/home/pi/webfolder/
cp -r -p /home/pi/webfolder/*
/var/www/html/
0 21 1-31 1-12 0-6 scp –r
/var/www/html pi@192.168.1.14: /var/www/html
45 18 1-31 1-12 1-5 scp
/var/www/html/images pi@192.168.1.14:/var/www/html/images
30 13 1-31 1-12 6 cp -R
/var/www/html /mnt/usb
mysqldump –udatabase_username
–pdatabase_password databasename > backup_directory/backupfilename
mysqldump –uroot –ppassword dictionary
> dictionary_backup.sql
sudo chown root:root
/etc/postfix/sasl/sasl_passwd /etc/postfix/sasl/sasl_passwd.db sudo chmod 0600
/etc/postfix/sasl/sasl_passwd /etc/postfix/sasl/sasl_passwd.db
smtp_sasl_auth_enable=yes
smtp_sasl_security_options=noanonymous
smtp_sasl_password_maps =
hash:/etc/postfix/sasl/sasl_passwd
smtp_tls_security_level =
encrypt
smtp_tls_CAfile =
/etc/ssl/certs/ca-certificates.crt
echo -e
"Subject:Appointment Needed \n\n I would like make an appointment for
Monday.\n" | sendmail y2kleader@gmail.com
<?php
$to =
"recipientemail@gmail.com";
$from =
"youremail@gmail.com";
$subject="Basic Email
Test";
$header="From:
".$from."\n";
$msg="Hello World!";
mail($to,$subject,$msg,$header);
?>
<?php
$to = "recipient1@gmail.com";
$from =
"youremail@gmail.com";
$cc="recipient2@gmail.com";
$bcc="recipient3@gmail.com";
$subject="Basic Emails
with CC and BCC";
$header="From:
".$from."\n";
$header.="Cc:
".$cc."\n";
$header.="Bcc:
".$cc."\n";
$msg="Hello World!";
mail($to,$subject,$msg,$header);
?>
<?php
$from =
"youremail@gmail.com";
$to =
"recipient1@gmail.com";
$cc="recipient2@gmail.com";
$bcc="recipient3@gmail.com";
$subject="Email
Test";
$header="From:
".$from."\n";
$header="Cc:
".$cc."\n";
$header.="Bcc:
".$bcc."\n";
$msg="This is the body of
the email.";
$files[0]="./pics/image1.jpg";
$files[1]="./pics/powerpoint1.pptx";
$files[2]="./pics/spreadsheet.xlsx";
$boundary = md5(time());
$header.="Content-Type:
multipart/mixed; boundary=\"==Multipart_Boundary_".$boundary."\"\n";
$header.="\nMIME-Version:1.0"."\n";
$message="--==Multipart_Boundary_".$boundary."\n";
$message.="Content-Type:
text/plain; charset=\"iso-8859-1\"\n";
$message.="Content-Transfer-Encoding:7bit\n";
$message.=$msg."\n";
for($x=0;$x<count($files);$x++){
$file=fopen($files[$x],"rb");
$data=fread($file,filesize($files[$x]));
fclose($file);
$data=chunk_split(base64_encode($data));
$path_parts =
pathinfo($files[$x]);
$name=$path_parts['basename'];
$message.="--==Multipart_Boundary_".$boundary."\n";
$message.="Content-Type:
{\"application/octet-stream\"};\n";
$message.="
name=\"$name\"\n";
$message.="Content-Disposition:
attachment;\n";
$message.="
filename=\"$name\"\n";
$message.="Content-Transfer-Encoding:
base64\n\n";
$message.=$data."\n\n";
}
$message.="--==Multipart_Boundary_".$boundary."\n";
$message.="--==Multipart_Boundary_".$boundary."--\n";
mail($to, $subject, $message,
$header);
?>