https://www.raspberrypi.org/forums/viewtopic.php?t=155229 https://httpd.apache.org/docs/2.4/howto/cgi.html https://httpd.apache.org/docs/2.4/howto/public_html.html brock@uncacsci-pi-j:~/Adafruit_Python_BMP$ id uid=1002(brock) gid=4(adm) groups=4(adm),33(www-data),997(gpio),998(i2c) brock@uncacsci-pi-j:~/Adafruit_Python_BMP$ i2cdetect -y 1 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- 19 -- -- -- -- 1e -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- 6b -- -- -- -- 70: 70 -- -- -- -- -- -- 77 brock@uncacsci-pi-j:~/Adafruit_Python_BMP$ grep i2c /etc/group i2c:x:998:pi,uncacsci,brock,www-data brock@uncacsci-pi-j:~/Adafruit_Python_BMP$ cd brock@uncacsci-pi-j:~$ ls Adafruit_Python_ADS1X15 Adafruit_Python_GPIO run-adc web.setup Adafruit_Python_BMP Adafruit_Python_PCA9685 RUNIT-0.TXT brock@uncacsci-pi-j:~$ cd Adafruit_Python_BMP/ brock@uncacsci-pi-j:~/Adafruit_Python_BMP/examples$ ls google_spreadsheet.py simpletest.py brock@uncacsci-pi-j:~/Adafruit_Python_BMP/examples$ python simpletest.py Temp = 24.50 *C Pressure = 93865.00 Pa Altitude = 641.26 m Sealevel Pressure = 93862.00 Pa brock@uncacsci-pi-j:~/Adafruit_Python_LSM303$ ls -l total 32 drwxr-xr-x 2 brock adm 4096 Mar 8 14:01 Adafruit_LSM303 drwxr-xr-x 2 brock adm 4096 Mar 8 14:01 examples -rw-r--r-- 1 brock adm 10332 Mar 8 14:01 ez_setup.py -rw-r--r-- 1 brock adm 1086 Mar 8 14:01 LICENSE -rw-r--r-- 1 brock adm 627 Mar 8 14:01 README.md -rw-r--r-- 1 brock adm 1368 Mar 8 14:01 setup.py brock@uncacsci-pi-j:~/Adafruit_Python_LSM303$ sudo python setup.py install ................................................................ brock@uncacsci-pi-j:~/Adafruit_Python_LSM303$ sudo python3 setup.py install ................................................................ brock@uncacsci-pi-j:~/Adafruit_Python_LSM303$ cd examples/ brock@uncacsci-pi-j:~/Adafruit_Python_LSM303/examples$ python simpletest.py Printing accelerometer & magnetometer X, Y, Z axis values, press Ctrl-C to quit... Accel X=-10, Accel Y=5, Accel Z=493, Mag X=57, Mag Y=-327, Mag Z=-642 Accel X=-6, Accel Y=15, Accel Z=982, Mag X=58, Mag Y=-326, Mag Z=-648 ................................................................ brock@uncacsci-pi-j:~/Adafruit_Python_LSM303/examples$ cd ../../Adafruit_Python_PCA9685/ brock@uncacsci-pi-j:~/Adafruit_Python_PCA9685$ cd examples/ brock@uncacsci-pi-j:~/Adafruit_Python_PCA9685/examples$ ls simpletest.py brock@uncacsci-pi-j:~/Adafruit_Python_PCA9685/examples$ python simpletest.py Moving servo on channel 0, press Ctrl-C to quit...  ................................................................ brock@uncacsci-pi-j:~/Adafruit_Python_PCA9685/examples$ python simpletest.py Moving servo on channel 0, press Ctrl-C to quit... C-c C-cTraceback (most recent call last): File "simpletest.py", line 46, in time.sleep(1) KeyboardInterrupt brock@uncacsci-pi-j:~/Adafruit_Python_PCA9685/examples$ ls -l total 12 -rw-r--r-- 1 brock adm 2889 Mar 8 14:10 littleservo.py -rw-r--r-- 1 brock adm 1433 Mar 5 19:55 simpletest.py brock@uncacsci-pi-j:~/Adafruit_Python_PCA9685/examples$ chmod 755 littleservo.py brock@uncacsci-pi-j:~/Adafruit_Python_PCA9685/examples$ diff simpletest.py littleservo.py 0a1 > #! /usr/bin/env python 36a38 > 38c40 < pwm.set_pwm_freq(60) --- > pwm.set_pwm_freq(50) brock@uncacsci-pi-j:~/Adafruit_Python_PCA9685/examples$ python Python 2.7.9 (default, Sep 17 2016, 20:26:04) [GCC 4.9.2] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import Adafruit_PCA9685 >>> pwm = Adafruit_PCA9685.PCA9685() >>> pwm.set_pwm_freq(50) >>> pwm.set_pwm(0, 0, 200) >>> pwm.set_pwm(0, 0, 100) .... >>> pwm.set_pwm(0, 0, 512) >>> pwm.set_pwm(0, 0, 600) >>> pwm.set_pwm(0, 0, 700) >>> pwm.set_pwm(0, 0, 640) brock@uncacsci-pi-j:~/Adafruit_Python_PCA9685/examples$ diff littleservo.py simpletest.py 1d0 < #! /usr/bin/env python 24,27c23,24 < # servo_min = 150 # Min pulse length out of 4096 < # servo_max = 600 # Max pulse length out of 4096 < servo_min = 130 # Min pulse length out of 4096 < servo_max = 500 # Max pulse length out of 4096 --- > servo_min = 150 # Min pulse length out of 4096 > servo_max = 600 # Max pulse length out of 4096 40d36 < 42c38 < pwm.set_pwm_freq(50) --- > pwm.set_pwm_freq(60) brock@uncacsci-pi-j:~/Adafruit_Python_PCA9685/examples$ ./littleservo.py Moving servo on channel 0, press Ctrl-C to quit... brock@uncacsci-pi-j:/var/www/html$ ls -l total 40 -rw-r--r-- 1 brock adm 233 Nov 22 2016 acctest drwxrwxr-x 2 jdbrock www-data 4096 Nov 30 2016 cgi-bin -rwxr-xr-x 1 brock adm 31 Nov 13 2016 foo.cgi -rw-r--r-- 1 root root 10701 Mar 7 19:45 index.html -rw-r--r-- 1 root root 3373 Nov 13 2016 index.lighttpd.html -rw-r--r-- 1 brock adm 12 Nov 13 2016 jdb.txt drwxrwxr-x 2 root www-data 4096 Nov 29 2016 jqajax_178_lab drwxr-xr-x 2 brock adm 4096 Mar 7 20:14 testit brock@uncacsci-pi-j:/var/www/html$ ls testit acctest index.cgi ledon.cgi ledread.cgi acctest.cgi ledoff.cgi ledon.cgi~ listi2c.cgi brock@uncacsci-pi-j:/var/www/html$ ls -l cgi-bin/ total 32 -rwxrwxr-x 1 jdbrock www-data 315 Nov 28 2016 acctest-9dof.cgi -rwxrwxr-x 2 uncacsci www-data 314 Nov 27 2016 acctest-adxl.cgi -rwxrwxr-x 2 uncacsci www-data 314 Nov 27 2016 acctest.cgi -rwxrwxr-x 1 jdbrock www-data 222 Nov 22 2016 ledoff.cgi -rwxrwxr-x 1 jdbrock www-data 427 Nov 27 2016 ledon.cgi -rwxrwxr-x 1 jdbrock www-data 132 Nov 22 2016 listi2c.cgi -rwxrwxr-x 1 uncacsci www-data 632 Nov 28 2016 pinset.cgi -rwxr-xr-x 1 brock adm 632 Nov 30 2016 toy.cgi brock@uncacsci-pi-j:/var/www/html/cgi-bin$ ls -l total 32 -rwxrwxr-x 1 jdbrock www-data 315 Nov 28 2016 acctest-9dof.cgi -rwxrwxr-x 2 uncacsci www-data 314 Nov 27 2016 acctest-adxl.cgi -rwxrwxr-x 2 uncacsci www-data 314 Nov 27 2016 acctest.cgi -rwxrwxr-x 1 jdbrock www-data 222 Nov 22 2016 ledoff.cgi -rwxrwxr-x 1 jdbrock www-data 427 Nov 27 2016 ledon.cgi -rwxrwxr-x 1 jdbrock www-data 132 Nov 22 2016 listi2c.cgi -rwxrwxr-x 1 uncacsci www-data 632 Nov 28 2016 pinset.cgi -rwxr-xr-x 1 brock adm 632 Nov 30 2016 toy.cgi brock@uncacsci-pi-j:/var/www/html/cgi-bin$ ./acctest-9dof.cgi Content-Type: application/json {"y": 0.0390625, "x": -0.0341796875, "z": 0.9736328125} brock@uncacsci-pi-j:/var/www/html/cgi-bin$ ./listi2c.cgi Content-type: text/plain bash i2c stuff uid=1002(brock) gid=4(adm) groups=4(adm),33(www-data),997(gpio),998(i2c) 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- 19 -- -- -- -- 1e -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- 6b -- -- -- -- 70: 70 -- -- -- -- -- -- 77 bash i2c stuff brock@uncacsci-pi-j:/var/www/html/cgi-bin$ ./ledon.cgi Content-Type: application/json true brock@uncacsci-pi-j:/var/www/html/cgi-bin$ ./ledoff.cgi Content-Type: application/json true brock@uncacsci-pi-j:/var/www/html/cgi-bin$ cd ../testit brock@uncacsci-pi-j:/var/www/html/testit$ ls -l total 32 -rw-r--r-- 1 brock adm 233 Nov 22 2016 acctest -rwxr-xr-x 1 brock adm 245 Nov 22 2016 acctest.cgi -rwxr-xr-x 1 brock adm 517 Nov 13 2016 index.cgi -rwxr-xr-x 1 brock adm 222 Nov 13 2016 ledoff.cgi -rwxr-xr-x 1 brock adm 225 Mar 7 20:14 ledon.cgi -rwxr-xr-x 1 brock adm 225 Nov 13 2016 ledon.cgi~ -rwxr-xr-x 1 brock adm 636 Nov 13 2016 ledread.cgi -rwxr-xr-x 1 brock adm 132 Nov 13 2016 listi2c.cgi brock@uncacsci-pi-j:/var/www/html/testit$ ./acctest.cgi Content-Type: application/json {"z": 1000, "x": -33, "y": 36} brock@uncacsci-pi-j:/var/www/html/testit$ sudo a2enmod cgid Enabling module cgid. To activate the new configuration, you need to run: service apache2 restart brock@uncacsci-pi-j:/var/www/html/testit$ sudo service apache2 restart Warning: Unit file of apache2.service changed on disk, 'systemctl daemon-reload' recommended. brock@uncacsci-pi-j:/var/www/html/testit$ sudo systemctl daemon-reload brock@uncacsci-pi-j:/var/www/html/testit$ ls /usr/lib/cgi-bin/ brock@uncacsci-pi-j:/var/www/html/testit$ ls -l total 32 -rw-r--r-- 1 brock adm 233 Nov 22 2016 acctest -rwxr-xr-x 1 brock adm 245 Nov 22 2016 acctest.cgi -rwxr-xr-x 1 brock adm 517 Nov 13 2016 index.cgi -rwxr-xr-x 1 brock adm 222 Nov 13 2016 ledoff.cgi -rwxr-xr-x 1 brock adm 225 Mar 7 20:14 ledon.cgi -rwxr-xr-x 1 brock adm 225 Nov 13 2016 ledon.cgi~ -rwxr-xr-x 1 brock adm 619 Mar 8 14:40 ledread.cgi -rwxr-xr-x 1 brock adm 132 Nov 13 2016 listi2c.cgi brock@uncacsci-pi-j:/var/www/html/testit$ pwd /var/www/html/testit brock@uncacsci-pi-j:/var/www/html/testit$ cd /usr/lib/cgi-bin/ brock@uncacsci-pi-j:/usr/lib/cgi-bin$ sudo cp /var/www/html/testit/*.cgi . brock@uncacsci-pi-j:/usr/lib/cgi-bin$ ls -l total 24 -rwxr-xr-x 1 root root 245 Mar 8 15:18 acctest.cgi -rwxr-xr-x 1 root root 517 Mar 8 15:18 index.cgi -rwxr-xr-x 1 root root 222 Mar 8 15:18 ledoff.cgi -rwxr-xr-x 1 root root 225 Mar 8 15:18 ledon.cgi -rwxr-xr-x 1 root root 619 Mar 8 15:18 ledread.cgi -rwxr-xr-x 1 root root 132 Mar 8 15:18 listi2c.cgi brock@uncacsci-pi-j:/usr/lib/cgi-bin$ pushd /var/tmp brock@uncacsci-pi-j:/var/tmp$ wget http://uncacsci-pi-j.cs.unca.edu/cgi-bin/acctest.cgi ................ brock@uncacsci-pi-j:/var/tmp$ cat acctest.cgi {"x": -33, "z": 996, "y": 37} brock@uncacsci-pi-j:/var/tmp$ wget http://uncacsci-pi-j.cs.unca.edu/cgi-bin/acctest.cgi {"x": -33, "z": 1000, "y": 40} brock@uncacsci-pi-j:/var/tmp$ cd brock@uncacsci-pi-j:~$ sudo cp embedded.conf /etc/apache2/sites-enabled/ brock@uncacsci-pi-j:~$ sudo service apache2 restart brock@uncacsci-pi-j:~$ sudo systemctl daemon-reload brock@uncacsci-pi-j:~$ sudo service apache2 restart brock@uncacsci-pi-j:~$ wget http://uncacsci-pi-j.cs.unca.edu/cgi-bin/listi2c.cgi ................ brock@uncacsci-pi-j:~$ cat listi2c.cgi bash i2c stuff uid=33(www-data) gid=33(www-data) groups=33(www-data),997(gpio),998(i2c) 0 1 2 3 4 5 6 7 8 9 a b c d e f 00: -- -- -- -- -- -- -- -- -- -- -- -- -- 10: -- -- -- -- -- -- -- -- -- 19 -- -- -- -- 1e -- 20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 40: 40 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 60: -- -- -- -- -- -- -- -- -- -- -- 6b -- -- -- -- 70: 70 -- -- -- -- -- -- 77 bash i2c stuff