joejcollins / professor-bergman Goto Github PK
View Code? Open in Web Editor NEWBlack Radley Intelligent Exhibit System (BRIES)
License: GNU General Public License v3.0
Black Radley Intelligent Exhibit System (BRIES)
License: GNU General Public License v3.0
The device no longer asks for a QR code if it doesn't have one. It will still detect the QR code but doesn't verbalise. Is this intentional? I am guessing that sound is off for all new devices? Consider if this is appropriate.
Set the API up for swagger
Make it a global, static method accessible to all code files
If there is no camera the client crashes. Once this has happened the device doesn't appear in the IoT dashboard so you can't configure it or find out it's IP address.
Capture some photos, videos and interview pieces with Joe for any summary videos/write-ups we need to do
Decorate the models in eth API and admin projects so that things like descriptions, human-readable labels etc trickle through to the MVC views, swagger etc
The admin site has an Interactive flag for each device.
If true, the interact (QnA maker, bot etc) bit should load.
If false, they should not load
There is an audible clicking sound on the PI. I have tried a few things to solve it but no joy. The issue is caused by the audio hardware going to sleep. Some suggest that we could solve the issue by playing silent audio continuously. I have been unable to find a way to play two audio files simultaneously in UWP. I have tried both a Media Element and MediaPlayer. One suggested solution is to use an audio hat or a USB audio soundcard https://www.tinydeal.com/USB-2-0-to-3D-5-1-Audio-Sound-Card-Microphone-Adapter-for-PC-Laptop-p-2434.html?currency=GBP&ship_to=UK&utm_source=bing&utm_medium=cpa&utm_term=CSOUAD01&utm_campaign=PLA-UK
When the exhibit starts up and after QR code is set. Make the exhibit fetch a voice. The system will check, if a voice is installed manually in the app it will use that if not it will go to the server and fetch one.
Enable the uploading of a ZIP to storage and update the device store with the URL.
Make sure that if a new package is uploaded, the file name has a timestamp so that the device can see if the file name has changed and therefore trigger a download. REF #25
When the device is running headless or if the client is running you can't tell what the IP address is to configure it. Might be useful if the client displayed the IP address and the device spoke it's IP address when it starts up.
Have the UWP app read a QR code which contains the device id (guid)
Store the guid somewhere in the app so that they are passed up to the API
Get the app to read a script from the file system
LogStatusMessage does a lot on the UI thread, would be good to remotely switch this on/off.
The develop version deploys to the develop infrastructure on Azure. There appears to be no Live/Production version.
API which allows a post of location (museum), exhibit, device number
Creates a 'device id' guid
Stores all that information somewhere
The CS Face ApI can now return additional data point on face - detect
. Update the API to include them all
Trying to run the Webcam-Face-Detect script throws the following error:
$ python webcam.py haarcascade_frontalface_default.xml
OpenCV Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file /home/pi/bf9df14534fbb95eff8f /opencv-2.4.10/modules/imgproc/src/color.cpp, line 3739
Traceback (most recent call last):
File "webcam.py", line 13, in <module>
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
cv2.error: /home/pi/bf9df14534fbb95eff8f/opencv-2.4.10/modules/imgproc/src/color.cpp:3739: error: (-215) scn == 3 || scn == 4 in function cvtColor
'ConfigurationExtensions.AddUserSecrets(IConfigurationBuilder)' is obsolete: 'This method is obsolete and will be removed in a future version. The recommended alternative is .AddUserSecrets(string userSecretsId) or .AddUserSecrets().'
Project: Dinmore.Api, Startup.cs(26,17,26,41)
Build the code in the UWP app to delete local settings if the API flag has the 'reset' setting enabled.
May also need to reverse the API setting so we don't get stuck into a reset loop.
Break down into sub-issues where appropriate
Consider
To achieve the goal of answering these questions
"Which exhibits are more popular with different demographics"
"How long do people spend engaged with an exhibit"
"How do people traverse the exhibits (which order)"
any other you can think of
Confirm content with Hilary.
Create a QR code containing the device id GUID
Add some branding and the Black Radley Dinmore css to the web interface.
Change the face API to accept a device id rather than exhibit/device
Use the ID to lookup the other information (museum, exhibit, device)
Update the data store with this information
Update the UWP app to call the device API on load and respect the devices settings
Add and Upload where a Zip can be uploaded:
http://blackradley-dinmore-webapp-develop.azurewebsites.net/Devices/VoicePackageUpload/09937208-5c7f-4ae0-a698-7beddeb2e272 (URL isn't important what ever is easiest)
Add a downalod link where I can download the Zip file.
http://blackradley-dinmore-webapp-develop.azurewebsites.net/Devices/VoicePackage/09937208-5c7f-4ae0-a698-7beddeb2e272 (URL isn't important what ever is easiest)
Structure of voice package
How it works
json file
how to upload
When you upload a new audio package, it should automatically set the URL to the newly uploaded package, but it does not
This would allow a different FAQ bank depending on the age demographic per exhibit. Therefore, offering different answers or supporting different questions.
This should queue up 4 audio files. But It doesn't work.
Say("Testing 1.");
Say("Testing 2.");
Say("Testing 3.");
Say("Testing 4.");
The admin site has a Boolean SoundOn flag. If true, the app should make sounds, if false it should not.
Update the device api and web app to support admin flags.
Make the device check these settings on start-up and update them locally as necessary
Interactive
AnnounceIPAddress
Reset
Others?
The docs do not explain how to deploy the UWP app and set it to auto launch on the RP device. This is a gap between the 'setup raspberry pi' and 'onboarding' docs.
Things are less chaotic so we should move over to Git Flow and stop using the personal development branches.
Avoids hardcoding the resource settings into the binary.
Connecting the client to some public networks requires authentication via a browser. This can be dealt with using the browser built into the Windows IoT Core application. However, once the Intelligent Exhibit client is running if anything goes wrong with the authentication it is not possible to change the default application back to the Windows IoT Core application.
This is happening on the public network in Preston. The client connects to the network and gets an IP address, but is not externally accessible via the dashboard or the browser so you can't change the default application. The solution is to go outside the range of the public network, connect using a direct ethernet cable, change the default application and then return to authenticate.
It would be a lot easier if the interface for the Intelligent Exhibit included a browser control.
Getting this error running Facial-Detection script:
$ python faces.py
OpenCV Error: Bad flag (parameter or structure field) (Unrecognized or unsupported array type) in cvGetMat, file /home/pi/bf9df14534fbb95eff8f/opencv-2.4.10/modules/core/src/array.cpp, line 2482
Traceback (most recent call last):
File "faces.py", line 18, in <module>
rects, img = detect("one.jpg")
File "faces.py", line 6, in detect
rects = cascade.detectMultiScale(img, 1.3, 4, cv2.cv.CV_HAAR_SCALE_IMAGE, (20,20))
cv2.error: /home/pi/bf9df14534fbb95eff8f/opencv-2.4.10/modules/core/src/array.cpp:2482: error: (-206) Unrecognized or unsupported array type in function cvGetMat
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.