External Ip access/portforwarding ( web controlled Rover) - Raspberry Pi Forums
after following post http://www.instructables.com/id/web-con ... /?allsteps able control rover on internal network without problem. port python script runs on :80, unfortunately port not work in network. needed change it. contacted programmer made rover , able give me , how change port. after doing , configuring router port forward still can not access rovers control page out net work. list code below. im building telepresence rover allow me interact twin boys when travel work. appreciated. keep in mind have built raspi controlled garage door opener external access. works fine out problems. garage door opener running apache if makes difference. rover running version of python. don't know if matters. last line of code posted line port located , changed.
code: select all
#!/usr/bin/env python # # wifi/web driven rover # # written scott beasley - 2015 # # uses rpio, pyserial , flask # import time import serial rpio import pwm flask import flask, render_template, request app = flask (__name__, static_url_path = '') # connect comm port talk roboclaw motor controller try: # change baud rate here if diffrent 19200 roboclaw = serial.serial ('/dev/ttyama0', 19200) except ioerror: print ("comm port not found") sys.exit (0) # speed , drive control variables last_direction = -1 speed_offset = 84 turn_tm_offset = 0.166 run_time = 0.750 # servo neutral position (home) servo_pos = 1250 servo = pwm.servo ( ) servo.set_servo (18, servo_pos) # little dwell settling down time time.sleep (3) # # uri handlers - bot page actions done here # # send out bots control page (home page) @app.route ("/") def index ( ): return render_template ('index.html', name = none) @app.route ("/forward") def forward ( ): global last_direction, run_time print "forward" go_forward ( ) last_direction = 0 # sleep 100ms + run_time time.sleep (0.100 + run_time) # if not continuous, halt after delay if run_time > 0: last_direction = -1 halt ( ) return "ok" @app.route ("/backward") def backward ( ): global last_direction, run_time print "backward" go_backward ( ) last_direction = 1 # sleep 100ms + run_time time.sleep (0.100 + run_time) # if not continuous, halt after delay if run_time > 0: last_direction = -1 halt ( ) return "ok" @app.route ("/left") def left ( ): global last_direction, turn_tm_offset print "left" go_left ( ) last_direction = -1 # sleep @1/2 second time.sleep (0.500 - turn_tm_offset) # stop halt ( ) time.sleep (0.100) return "ok" @app.route ("/right") def right ( ): global last_direction, turn_tm_offset print "right" go_right ( ) # sleep @1/2 second time.sleep (0.500 - turn_tm_offset) last_direction = -1 # stop halt ( ) time.sleep (0.100) return "ok" @app.route ("/ltforward") def ltforward ( ): global last_direction, turn_tm_offset print "left forward turn" go_left ( ) # sleep @1/8 second time.sleep (0.250 - (turn_tm_offset / 2)) last_direction = -1 # stop halt ( ) time.sleep (0.100) return "ok" @app.route ("/rtforward") def rtforward ( ): global last_direction, turn_tm_offset print "right forward turn" go_right ( ) # sleep @1/8 second time.sleep (0.250 - (turn_tm_offset / 2)) last_direction = -1 # stop halt ( ) time.sleep (0.100) return "ok" @app.route ("/stop") def stop ( ): global last_direction print "stop" halt ( ) last_direction = -1 # sleep 100ms time.sleep (0.100) return "ok" @app.route ("/panlt") def panlf ( ): global servo_pos print "panlt" servo_pos -= 100 if servo_pos < 500: servo_pos = 500 servo.set_servo (18, servo_pos) # sleep 150ms time.sleep (0.150) return "ok" @app.route ("/panrt") def panrt ( ): global servo_pos print "panrt" servo_pos += 100 if servo_pos > 2500: servo_pos = 2500 servo.set_servo (18, servo_pos) # sleep 150ms time.sleep (0.150) return "ok" @app.route ("/home") def home ( ): global servo_pos print "home" servo_pos = 1250 servo.set_servo (18, servo_pos) # sleep 150ms time.sleep (0.150) return "ok" @app.route ("/panfull_lt") def panfull_lt ( ): global servo_pos print "pan full left" servo_pos = 500 servo.set_servo (18, servo_pos) # sleep 150ms time.sleep (0.150) return "ok" @app.route ("/panfull_rt") def panfull_rt ( ): global servo_pos print "pan full right" servo_pos = 2500 servo.set_servo (18, servo_pos) # sleep 150ms time.sleep (0.150) return "ok" @app.route ("/speed_low") def speed_low ( ): global speed_offset, last_direction, turn_tm_offset speed_offset = 42 turn_tm_offset = 0.001 # update current direction new speed if last_direction == 0: go_forward ( ) if last_direction == 1: go_backward ( ) # sleep 150ms time.sleep (0.150) return "ok" @app.route ("/speed_mid") def speed_mid ( ): global speed_offset, last_direction, turn_tm_offset speed_offset = 84 turn_tm_offset = 0.166 # update current direction new speed if last_direction == 0: go_forward ( ) if last_direction == 1: go_backward ( ) # sleep 150ms time.sleep (0.150) return "ok" @app.route ("/speed_hi") def speed_hi ( ): global speed_offset, last_direction, turn_tm_offset speed_offset = 126 turn_tm_offset = 0.332 # update current direction new speed if last_direction == 0: go_forward ( ) if last_direction == 1: go_backward ( ) # sleep 150ms time.sleep (0.150) return "ok" @app.route ("/continuous") def continuous ( ): global run_time print "continuous run" run_time = 0 # sleep 100ms time.sleep (0.100) return "ok" @app.route ("/mid_run") def mid_run ( ): global run_time print "mid run" run_time = 0.750 halt ( ) # sleep 100ms time.sleep (0.100) return "ok" @app.route ("/short_time") def short_time ( ): global run_time print "short run" run_time = 0.300 halt ( ) # sleep 100ms time.sleep (0.100) return "ok" # # motor drive functions # def go_forward ( ): global speed_offset if speed_offset != 42: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (128 + speed_offset)) else: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (255 - speed_offset)) def go_backward ( ): global speed_offset if speed_offset != 42: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (255 - speed_offset)) else: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (128 + speed_offset)) def go_left ( ): global speed_offset if speed_offset != 42: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (128 + speed_offset)) else: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (255 - speed_offset)) def go_right ( ): global speed_offset if speed_offset != 42: roboclaw.write (chr (1 + speed_offset)) roboclaw.write (chr (255 - speed_offset)) else: roboclaw.write (chr (127 - speed_offset)) roboclaw.write (chr (128 + speed_offset)) def halt ( ): roboclaw.write (chr (0)) if __name__ == "__main__" : app.run (host = '0.0.0.0', port = 84, debug = true)
presumably have static ip rover?
also, think documentation recommends disabling debugging when allowing external access creates security risk.
also, think documentation recommends disabling debugging when allowing external access creates security risk.
raspberrypi
Comments
Post a Comment