addalin / cameranetwork Goto Github PK
View Code? Open in Web Editor NEWThis project forked from amitibo/cameranetwork
Software for remote sensing camera networks
License: Other
This project forked from amitibo/cameranetwork
Software for remote sensing camera networks
License: Other
Currently:
the only storage for OS, data, code is MicroSD
Planned:
OS & Code on eMMC Storage
captured images on external SSD.
Boot from eMMC
Mount external SSD
Fix paths in code:
cameranetwork/CameraNetwork/global_settings.py
Lines 396 to 431 in 02ffc27
Find and fix any other relevant paths in code
Add option to choose between external SSD Storage for captured images or internal. Should probably be configured in setup_camera.py
to reproduce pressin servers>camera_id>status>Data button in gui
2019-09-03 17:56:39,869 [MainThread ] [DEBUG] sending message from:<CameraNetwork.gui.main.ServerModel object at 0x7f5e6c9e7200>
Traceback (most recent call last):
File "/home/shubi/.conda/envs/cvenv2.7/lib/python2.7/site-packages/enaml/qt/qt_abstract_button.py", line 77, in on_clicked
self.declaration.clicked(checked)
File "/home/shubi/.conda/envs/cvenv2.7/lib/python2.7/site-packages/enaml/core/declarative_meta.py", line 68, in declarative_change_handler
engine.write(owner, change['name'], change)
File "/home/shubi/.conda/envs/cvenv2.7/lib/python2.7/site-packages/enaml/core/expression_engine.py", line 217, in write
pair.writer(owner, name, change)
File "/home/shubi/.conda/envs/cvenv2.7/lib/python2.7/site-packages/enaml/core/standard_handlers.py", line 82, in __call__
call_func(func, (), {}, scope)
File "/home/shubi/PycharmProjects/cameranetwork/CameraNetwork/gui/enaml_files/docks.enaml", line 107, in f
popup = MsgDataPopup(msg_data=server_model.reply_data).show()
NameError: name 'MsgDataPopup' is not defined
Aborted (core dumped)
Set the following folders "proxy_logs" (in the proxy server), and "camera_logs" (in the camera server), to be created in a specific folder, and not relative to the working directory from where the script is running.
XmbTextListToTextProperty result code -2
Is displayed repeatedly in console of computer client after running python camera_client.py
Add option to show/hide the map from the view (similarly to beta and other staff in visualization in the 3D ) .
this is for debugging issues of reconstructions
booting with eMMC
Apparently booting from eMMC is not exactly the same as from SD, therefore requires or to create working environment on eMMC and create an image of it, or transfer smartly the data from SD image to eMMC image.
/VISL2_net/addalin/efs/SHDOM/exports/2017_05_19/2017_05_19_10_30_00_no_rad_hdr_copyfordbg/
add option to export to dump labeleddata.pkl.
Includes:
Image, Mask, Sunmask, Sunshader Mask, Cloud weights.
/VISL2_net/addalin/code/pyshdom_C2/shdom/sensors.py
class RGBSensorNetwork(Sensor):
"""A network of cameras based on the 'real' camera network.
Args:
data_dir (str): Path to reconstruction data.
measurements (list of arrays): The measurements. These are currently used only
for masking nan pixels.
ignore_angles (optional, bool): Ignore the THETA/PHI pixel angles.
ignore_sunblock (optional, bool): Ignore the (gaussian) sun mask.
subsample (optional, int): Subsampling period.
eleveation_weight (optional, float): Weight down the horizon.
mask_measurement (optional, float): Mask measurements higher than this value.
erode_mask (optional, int): Erode the mask.
weights_color (tuple): Weight colors differently.
"""
def __init__(
self,
data_dir,
indices=None,
measurements=None,
ignore_angles=False,
ignore_sunblock=False,
subsample=-1,
elevation_weight=-1,
mask_measurement=-1,
erode_mask=-1,
weights_color=(1, 1, 1),
*args,
**kwds):
super(RGBSensorNetwork, self).__init__(*args, **kwds)
with open(os.path.join(data_dir, 'export_data.pkl'), 'rb') as f:
datas = cPickle.load(f)
if subsample < 1:
#
# For some strange reason, if I don't subsample (even by 1),
# then all shadom directions are transposed.
#
subsample = 1
logging.warn("Subsampling by 1 to avoid strange bug in directions.")
camera_ids = sorted(datas.keys())
if indices is None:
indices = range(len(camera_ids))
for id_index in indices:
cam_id = camera_ids[id_index]
for color_channel in range(3):
data = datas[cam_id]
extra_data = data["extra_data"]
if ignore_angles:
Y_shdom, X_shdom = np.meshgrid(
np.linspace(-1, 1, 301),
np.linspace(-1, 1, 301)
)
PHI = math.pi + np.arctan2(Y_shdom, X_shdom)
PSI = -math.pi + math.pi/2 * np.sqrt(X_shdom**2 + Y_shdom**2)
else:
PHI = data['PHI']
PSI = data['PSI']
#
# Prepare the MASK (erode it if requested).
#
MASK = data["MASK"].astype(np.uint8)
MASK[MASK<1] = 0
MASK[MASK>1] = 1
if erode_mask > 0:
kernel = np.ones((3, 3), np.uint8)
MASK = cv2.erode(MASK, kernel, iterations=erode_mask)
MASK = MASK.astype(np.bool)
SUN_MASK = data["SUN_MASK"]
#
# In case of forward simulation there are no measurements.
# Use zeros to simplify the implementation of the code.
#
if measurements is not None:
#
# Mask high measurements (sun region).
# Note:
# The masking is done on all channels together
# so that all channels will have the same mask.
#
if mask_measurement > 0:
values_mask = measurements[id_index] < mask_measurement
values_mask = values_mask.min(axis=-1)
MASK = MASK & values_mask
measurement = measurements[id_index][..., color_channel]
else:
measurement = np.zeros_like(PHI)
if subsample > 0:
logging.info(
"Subsampling the measurements by {}".format(subsample)
)
#
# Subsample the sensor smoothly.
#
PHI, PSI, SUN_MASK, measurement = \
subsampleSensor(subsample, PHI, PSI, SUN_MASK, measurement)
#
# The mask is sampled "not" smoothly.
#
MASK = MASK[::subsample, ::subsample]
shape = PHI.shape
self.measurements.append(measurement)
self.shape_array.append(shape)
self.phi_array.append(PHI)
self.psi_array.append(PSI)
self.x_array.append(extra_data["x"]*np.ones(shape=shape)/1000.0)
self.y_array.append(extra_data["y"]*np.ones(shape=shape)/1000.0)
self.z_array.append(extra_data["z"]*np.ones(shape=shape)/1000.0)
#
# Mask any nan values in the images.
#
nan_mask = ~np.isnan(measurement)
self.mask_array.append(MASK & nan_mask)
#
# Scale by view angle.
#
if elevation_weight > 0:
eps = 1e-8
angle_scaling = -np.cos(PSI)
angle_scaling[angle_scaling<eps] = eps
angle_scaling = angle_scaling**elevation_weight
else:
angle_scaling = np.ones_like(PSI)
#
# Weight the scaling by channel.
# This is used for putting more weights on the Blue channel in
# hope to improve the reconstruction of the clouds.
#
angle_scaling = angle_scaling * weights_color[color_channel]
if ignore_sunblock:
self.weights_array.append(angle_scaling)
else:
self.weights_array.append(SUN_MASK*angle_scaling)
#
# SHDOM cant handle negative heights
# move the origin to the lowest camera position
#
minz = np.min(map(lambda x: x.min(), self.z_array))
self.z_array = map(lambda x: x-minz, self.z_array)
#
# Prepare perturbation.
#
if self.perturbate:
self._prepare_camera_perturbation()
#
# Flatten the data arrays.
#
self._flatten_arrays()
/home/addalin/code/pyshdom_C2/scripts/camera_array_cloud_retrieval_RGB.py
take imports from above and sensors, on visl 135, pyshdom_new conda env
radiometric_calibration = dict(
may=np.array([0.00243353, 0.00214622, 0.00221308]),
sep=np.array([0.00394748, 0.0036557, 0.00418327]),
)
# Load measurements
# Note:
# I scale the measurements by the SHDOM_COEFF. Theoretically it would
# make sense to apply this to the solarflux input to the SHDOM algorithm.
# This would simplify handling real measurements and simulated images
# in the same way. Practically this is less stable SHDOM wise.
#
measured_images = loadRGBmeasurements(
base_path,
scaling=radiometric_calibration[radiometric_set]
)
radiometric_set= 'sep'
#
# Initialize Cameras.
#
camera_network = RGBSensorNetwork(
data_dir=base_path,
indices=camera_ids,
measurements=measured_images,
ignore_sunblock=ignore_sunblock,
subsample=subsample,
elevation_weight=elevation_weight,
weights_color=(0.5, 0.5, 2.) if args.weight_blue else (1, 1, 1)
)
EXPORT
/home/shubi/PycharmProjects/cameranetwork/CameraNetwork/export.py
#TODO Add Odroid log
the following command:
python ./code/cameranetwork/scripts_proxy/start_proxy.py --log_level debug &
Such that the server keeps alive in the background, and doesn't shut down when the ssh is disconnected or in sleep mode.
executing
python /cameranetwork/scripts_client/camera_client.py
results in
/home/shubi/PycharmProjects/cameranetwork/CameraNetwork/transformation_matrices.py:1899: UserWarning: failed to import module _transformations
warnings.warn("failed to import module %s" % name)
attach screenshots and workarounds as mentioned in the TODOs inside the file.
Describe the bug
seek button trouble relates to #28
To Reproduce
Steps to reproduce the behavior:
Server cam_116L raised an error
===============================
Calling the cmd handler caused an error:
Traceback (most recent call last):
File "C:\Users\addalin\Dropbox\cloud CT\cameranetwork\CameraNetwork\server.py", line 414, in _on_request
answer = yield cb(*args, **kwds)
File "C:\ProgramData\Anaconda2\envs\cn_client\lib\site-packages\tornado\gen.py", line 1055, in run
value = future.result()
File "C:\ProgramData\Anaconda2\envs\cn_client\lib\site-packages\tornado\concurrent.py", line 238, in result
raise_exc_info(self._exc_info)
File "C:\ProgramData\Anaconda2\envs\cn_client\lib\site-packages\tornado\gen.py", line 292, in wrapper
result = func(*args, **kwargs)
File "C:\Users\addalin\Dropbox\cloud CT\cameranetwork\CameraNetwork\server.py", line 992, in handle_seek
timedelta_threshold=timedelta_threshold
File "C:\Users\addalin\Dropbox\cloud CT\cameranetwork\CameraNetwork\controller.py", line 1381, in seekImageArray
ignore_date_extrinsic
File "C:\Users\addalin\Dropbox\cloud CT\cameranetwork\CameraNetwork\controller.py", line 1490, in preprocess_array
img_array = self._vignetting.applyVignetting(img_array)
AttributeError: 'Controller' object has no attribute '_vignetting'
Expected behavior
Show images of the expected time
In the GUI on pressing 'Query'
2019-09-24 16:18:43,463 [Thread-1 ] [ERROR] Uncaught exception in ZMQStream callback
Traceback (most recent call last):
File "/home/shubi/.conda/envs/cvenv2.7/lib/python2.7/site-packages/zmq/eventloop/zmqstream.py", line 438, in _run_callback
callback(*args, **kwargs)
File "/home/shubi/.conda/envs/cvenv2.7/lib/python2.7/site-packages/tornado/stack_context.py", line 277, in null_wrapper
return fn(*args, **kwargs)
File "/home/shubi/PycharmProjects/cameranetwork/CameraNetwork/mdp/client.py", line 190, in _on_message
self.on_message(msg)
File "/home/shubi/PycharmProjects/cameranetwork/CameraNetwork/client.py", line 163, in on_message
status, cmd, args, kwds = cPickle.loads(msg[0])
ImportError: No module named indexes.base
Possibly related to pandas version mismatch.
From stackoverflow:
This error can be caused by a version mismatch between the version of pandas used to save the dataframe and the version of pandas used to load it.
cameranetwork/CameraNetwork/visualization.py
Lines 47 to 56 in d069c6f
Describe the bug
GUI Crashes on putty click
2019-10-22 19:06:28,009 [MainThread ] [DEBUG] sending message from:<CameraNetwork.gui.main.ServerModel object at 0x7f0808088dd0>
Traceback (most recent call last):
File "/home/shubi/.conda/envs/cn_client/lib/python2.7/site-packages/enaml/qt/q_deferred_caller.py", line 42, in customEvent
event.callback(*event.args, **event.kwargs)
File "/home/shubi/PycharmProjects/cameranetwork/CameraNetwork/gui/main.py", line 1682, in receive_message
self.servers_dict[server_id].handle_reply(status, cmd, args, kwds)
File "/home/shubi/PycharmProjects/cameranetwork/CameraNetwork/gui/main.py", line 1977, in handle_reply
cb(*args, **kwds)
File "/home/shubi/PycharmProjects/cameranetwork/CameraNetwork/gui/main.py", line 1993, in reply_tunnel_details
subprocess.Popen(putty_cmd)
File "/home/shubi/.conda/envs/cn_client/lib/python2.7/subprocess.py", line 394, in __init__
errread, errwrite)
File "/home/shubi/.conda/envs/cn_client/lib/python2.7/subprocess.py", line 1047, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
To Reproduce
Steps to reproduce the behavior:
Expected behavior
open terminal with camera
Desktop (please complete the following information):
After running make html
:
/home/shubi/.conda/envs/cvenv2.7/lib/python2.7/site-packages/scipy/ndimage/measurements.py:36: RuntimeWarning: numpy.ufunc size changed, may indicate binary incompatibility. Expected 192 from C header, got 216 from PyObject
from . import _ni_label
reading sources... [100%] usage
WARNING: autodoc: failed to import module u'controller' from module u'CameraNetwork'; the following exception was raised:
No module named fisheye
/home/shubi/PycharmProjects/cameranetwork/CameraNetwork/export.py:docstring of CameraNetwork.export.extraReconstructionData:10: WARNING: Unexpected indentation.
/home/shubi/PycharmProjects/cameranetwork/docs/source/index.rst:4: WARNING: toctree contains reference to nonexisting document
To allow make latex
command, first run -
sudo apt-get install texlive-latex-recommended texlive-fonts-recommended texlive-latex-extra latexmk texlive-luatex texlive-xetex
Describe the bug
ERROR:root:Error while loading past sun measurements:
Traceback (most recent call last):
File "/home/shubi/PycharmProjects/cameranetwork/CameraNetwork/controller.py", line 467, in loadSunMeasurements
self.sunshader_angles_df = pd.concat(angles, axis=1, sort=True).mean(axis=1).to_frame(name='angle')
TypeError: concat() got an unexpected keyword argument 'sort'
To Reproduce
python start_local.py -d "/home/shubi/Desktop/experiment_23_09_2019"
Expected behavior
No error..
Running conda env create -f client_venv.yml
fails on a Windows machine.
Note: before running I changed the "prefix" name according to anaconda location on the local machine. i.e. "C:\ProgramData\Anaconda2\envs\<env_name>"
TODO :
Check if the "dependencies" are similar/different than in Linux?
Create client_env.yml for Windows - if different.
Update 'Installation - Client' section in install.rst accordingly, see 9beab0e
Config git line endings by following Tutorial.
In client gui: Arrays→Capture Settings→Capture
2019-09-04 14:00:46,922 [MainThread ] [DEBUG] Creating the 3D map view.
2019-09-04 14:00:46,923 [MainThread ] [DEBUG] Clearing 3D view.
2019-09-04 14:00:47,041 [MainThread ] [DEBUG] Threading the map projection.
Exception in thread Thread-2:
Traceback (most recent call last):
File "/home/shubi/.conda/envs/cvenv2.7/lib/python2.7/threading.py", line 801, in __bootstrap_inner
self.run()
File "/home/shubi/.conda/envs/cvenv2.7/lib/python2.7/threading.py", line 754, in run
self.__target(*self.__args, **self.__kwargs)
File "/home/shubi/PycharmProjects/cameranetwork/CameraNetwork/gui/main.py", line 185, in createMapProjection
alt0=alt0,
File "/home/shubi/PycharmProjects/cameranetwork/CameraNetwork/visualization.py", line 97, in convertMapData
lat0=lat0, lon0=lon0, h0=alt0)
File "/home/shubi/.conda/envs/cvenv2.7/lib/python2.7/site-packages/pymap3d/math/ned.py", line 225, in geodetic2ned
e, n, u = geodetic2enu(lat, lon, h, lat0, lon0, h0, ell, deg=deg)
File "/home/shubi/.conda/envs/cvenv2.7/lib/python2.7/site-packages/pymap3d/math/enu.py", line 169, in geodetic2enu
x1, y1, z1 = geodetic2ecef(lat, lon, h, ell, deg=deg)
File "/home/shubi/.conda/envs/cvenv2.7/lib/python2.7/site-packages/pymap3d/math/ecef.py", line 47, in geodetic2ecef
lat = radians(lat)
TypeError: only size-1 arrays can be converted to Python scalars
2019-09-04 14:00:47,234 [MainThread ] [DEBUG] Drawing the 3D Grid.
2019-09-04 14:00:47,268 [MainThread ] [DEBUG] Broadcasting message: array
2019-09-04 14:00:49,297 [MainThread ] [INFO ] Creating new item for server 236
2019-09-04 14:00:49,308 [MainThread ] [DEBUG] 32.775776 35.024963 229.0 2019-09-04 11:00:47.363374
2019-09-04 14:00:49,309 [MainThread ] [DEBUG] Sun altitude 58:09:51.2, azimuth 221:02:47.7 at time 2019-09-04 11:00:47.363374
2019-09-04 14:00:49,309 [MainThread ] [DEBUG] 32.775776 35.024963 229.0 2019-09-04 11:00:47.363374
2019-09-04 14:00:49,309 [MainThread ] [DEBUG] Sun altitude 58:09:51.2, azimuth 221:02:47.7 at time 2019-09-04 11:00:47.363374
Creating default grid 2D
Updating the GRID_ECEF
2019-09-04 14:00:49,320 [MainThread ] [INFO ] Adding new view of server 236
2019-09-04 14:00:49,658 [MainThread ] [DEBUG] Initializing the sun position: [[115.53807505 110.35075685]].
2019-09-04 14:00:49,661 [MainThread ] [DEBUG] Arrays LOS updated. Will update the map.
2019-09-04 14:00:49,662 [MainThread ] [DEBUG] Creating the LOS vectors.
2019-09-04 14:01:10,691 [MainThread ] [INFO ] Calculating LOS.
2019-09-04 14:01:10,692 [MainThread ] [DEBUG] Arrays LOS updated. Will update the map.
@scaperex
It is very essential to know what parameters were chosen in the GUI before doing export (from reconstruction tab).
can you try to write a config file that contains the following parameters:
reproduce by connecting to camera and pressing reboot on gui - camera shuts down but doesn't seem to reload properly.
(Check if exists good (working) reboot, if not - start_tunnel python process kill, start_camera python process kill, sudo reboot in bash bin)
proxy log file with debug flag is ~50MB per day. For long term, maybe change --log_level debug
to --log_level info
? What is the size then?
Another option is to switch log files, or perform server restart.
Config git line endings by following Tutorial.
Is your feature request related to a problem? Please describe.
Docs don't look nice.
Describe the solution you'd like
Docs that look nice.
Describe alternatives you've considered
Keeping it the way it is now.
Additional context
Like many readthedocs sites out there. not something extremely fancy.
Describe the bug
/home/shubi/.conda/envs/cn_client_pd_fix3/lib/python2.7/site-packages/sklearn/base.py:253: UserWarning: Trying to unpickle estimator LinearRegression from version pre-0.18 when using version 0.20.3. This might lead to breaking code or invalid results. Use at your own risk.
UserWarning)
To Reproduce
Steps to reproduce the behavior:
python start_local.py -d "/home/shubi/Desktop/experiment_23_09_2019"
Play around in GUI
Expected behavior
No warning
#TODO Add log
Describe the bug
A clear and concise description of what the bug is.
Traceback (most recent call last):
File "/VISL2_net/addalin/code/cameranetwork/CameraNetwork/controller.py", line 216, in __init__
self.sky_mask_base = sio.loadmat(gs.MASK_PATH)['mask_base']
File "/home/addalin/anaconda2/envs/cn_client/lib/python2.7/site-packages/scipy/io/matlab/mio.py", line 208, in loadmat
matfile_dict = MR.get_variables(variable_names)
File "/home/addalin/anaconda2/envs/cn_client/lib/python2.7/site-packages/scipy/io/matlab/mio5.py", line 292, in get_variables
res = self.read_var_array(hdr, process)
File "/home/addalin/anaconda2/envs/cn_client/lib/python2.7/site-packages/scipy/io/matlab/mio5.py", line 252, in read_var_array
return self._matrix_reader.array_from_header(header, process)
File "mio5_utils.pyx", line 675, in scipy.io.matlab.mio5_utils.VarReader5.array_from_header
File "mio5_utils.pyx", line 705, in scipy.io.matlab.mio5_utils.VarReader5.array_from_header
File "mio5_utils.pyx", line 778, in scipy.io.matlab.mio5_utils.VarReader5.read_real_complex
File "mio5_utils.pyx", line 450, in scipy.io.matlab.mio5_utils.VarReader5.read_numeric
File "mio5_utils.pyx", line 355, in scipy.io.matlab.mio5_utils.VarReader5.read_element
File "streams.pyx", line 195, in scipy.io.matlab.streams.ZlibInputStream.read_string
File "streams.pyx", line 188, in scipy.io.matlab.streams.ZlibInputStream.read_into
IOError: could not read bytes
ERROR:root:None
To Reproduce
cd /code/cameranetwork$ cd scripts_client/
python start_local.py -d "/VISL2_net/amitibo/experiment_2017_02-03/"
On VISL machine
Exectuing /home/shubi/PycharmProjects/cameranetwork/scripts_client/camera_client.py
results in (line 111)
cameranetwork/CameraNetwork/client.py
Lines 108 to 114 in 645b5ce
Exception in thread Thread-1:
Traceback (most recent call last):
File "/home/shubi/.conda/envs/cvenv2.7/lib/python2.7/threading.py", line 801, in __bootstrap_inner
self.run()
File "/home/shubi/.conda/envs/cvenv2.7/lib/python2.7/threading.py", line 754, in run
self.__target(*self.__args, **self.__kwargs)
File "/home/shubi/PycharmProjects/cameranetwork/CameraNetwork/client.py", line 112, in start
partial(self.send_mmi, service=MDP.MMI_SERVICES, msg=[]), self.mmi_period, self.loop
File "/home/shubi/.conda/envs/cvenv2.7/lib/python2.7/site-packages/tornado/ioloop.py", line 1209, in start
self._schedule_next()
File "/home/shubi/.conda/envs/cvenv2.7/lib/python2.7/site-packages/tornado/ioloop.py", line 1237, in _schedule_next
self._update_next(self.io_loop.time())
File "/home/shubi/.conda/envs/cvenv2.7/lib/python2.7/site-packages/tornado/ioloop.py", line 1244, in _update_next
callback_time_sec *= 1 + (self.jitter * (random.random() - 0.5))
TypeError: unsupported operand type(s) for *: 'ZMQIOLoop' and 'float'
cameranetwork/docs/source/conf.py
Lines 72 to 73 in 14d7a8e
/docs$ make latexpdf
Running Sphinx v1.8.5
Extension error:
Could not import extension numfig (exception: No module named numfig)
/docs$ make html
Running Sphinx v1.8.5
Extension error:
Could not import extension numfig (exception: No module named numfig)
Makefile:19: recipe for target 'html' failed
make: *** [html] Error 2
workaround is to comment out numfig
# 'numfig',
When viewing a time sample, I want to be able to view any previous export if there was any for that timestamp.
Such a thing is partially possible when loading ROI However I am not sure it happening with the cloud weights and the masks.
This feature could save a lot of time!
TODO What does it mean?
Read chapter 5.6 p.53 - 56
cameranetwork/CameraNetwork/image_utils.py
Line 654 in fa7d2b2
ROI
Radiometric correction
Geometric correction ( undistort )
Vignetting correction
Extrinsic calibration
Phase function calculation
dark_image subtraction
normalization
HDR
Space carving
Masking
Config git line endings by following Tutorial.
Describe the bug
Server 236 raised an error
==========================
Calling the cmd handler caused an error:
Traceback (most recent call last):
File "/home/odroid/code/cameranetwork/CameraNetwork/server.py", line 414, in _on_request
answer = yield cb(*args, **kwds)
File "/usr/local/lib/python2.7/dist-packages/tornado/gen.py", line 1133, in run
value = future.result()
File "/usr/local/lib/python2.7/dist-packages/tornado/concurrent.py", line 261, in result
raise_exc_info(self._exc_info)
File "/usr/local/lib/python2.7/dist-packages/tornado/gen.py", line 307, in wrapper
result = func(*args, **kwargs)
File "/home/odroid/code/cameranetwork/CameraNetwork/server.py", line 1305, in handle_local_ip
ip = re.compile('inet addr:([\d.]+)').search(eth0).group(1)
AttributeError: 'NoneType' object has no attribute 'group'
To Reproduce
Steps to reproduce the behavior:
Maybe because camera is connected via modem?
Desktop (please complete the following information):
port_tunnel_id.txt maybe related as it stores the odroid pass / global setting
How does it work?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.