-
-
Notifications
You must be signed in to change notification settings - Fork 14
As a proof of concept, webthing-webapp can be also declined to use 3D widgets and provide immersive web experience:
- https://hacks.mozilla.org/2019/03/connecting-real-things-to-virtual-worlds-using-web/
- https://social.samsunginter.net/@rzr/101564201618024415
Special thanks to Fabien, for introducing to A-Frame:
Work is still in progress at:
Usage:
- https://is.gd/wotxr (WebApp)
- https://is.gd/webxr (doc page)
- http://purl.org/aframe-twins
- https://glitch.com/@rzr
Misc:
- https://webthings-webapp.samsunginter.net/
- https://webthings-webapp.samsunginter.net/00index.html
- https://webthings-webapp.samsunginter.net/devel.html
- https://webthings-webapp.samsunginter.net/devel.html?&viewUrl=getusermedia.html
- http://samsunginter.net/color-sensor-js/
- http://samsunginter.net/color-sensor-js/example/color-sensor-webthing/extra/aframe.html
- https://glitch.com/~color-sensor-webthing
- http://samsunginter.net/color-sensor-js/example/color-sensor-webthing/extra/aframe.html?&url=https://color-sensor-webthing.glitch.me
- http://samsunginter.net/color-sensor-js/example/color-sensor-webthing/extra/aframe.html?&url=http://192.100.0.63:8888
- http://rzr.github.io/twins/aframe/ (on HTTP)
- http://rzr.github.io/twins/aframe/?url=https://rzr-twins.glitch.me (on HTTP)
- http://rzr.github.io/twins/aframe/?url=http://192.168.1.13:8888 (on HTTP)
- https://rzr-twins.glitch.me/properties
- https://rzr-twins.glitch.me/
- https://github.com/caseyyee/aframe-ui-widgets# 3D Widgets
- https://github.com/etiennepinchon/aframe-material# 2D Widgets
- https://github.com/mokargas/aframe-colorwheel-component# Color
- https://github.com/supermedium/superframe/tree/master/components/event-set
-
https://glitch.com/~getusermedia
- https://glitch.com/~webcam-as-aframe-texture# GetUserMedia
-
https://www.samsung.com/uk/mobile-accessories/gear-vr-controller/#
-
https://aframe.io/docs/0.9.0/introduction/interactions-and-controllers.html
-
https://github.com/aframevr/aframe/blob/master/docs/components/laser-controls.md
-
https://github.com/aframevr/aframe/blob/master/docs/components/gearvr-controls.md
-
https://github.com/aframevr/aframe/blob/master/src/components/gearvr-controls.js
-
https://supermedium.com/superframe/components/thumb-controls/
-
https://github.com/supermedium/superframe/tree/master/components/thumb-controls
-
https://github.com/aframevr/aframe/blob/master/docs/components/tracked-controls.md
-
https://stackoverflow.com/questions/48198657/handling-gearvr-controller-events-in-aframe
-
https://github.com/caseyyee/aframe-ui-widgets/issues/11# Controller
-
https://aframe.io/docs/0.7.0/guides/building-a-basic-scene.html
-
https://github.com/aframevr/aframe/blob/master/docs/components/cursor.md#
-
https://glitch.com/~rzr-wip-gvr# Log Events
-
https://github.com/aframevr/aframe/commits/master/src/components/gearvr-controls.js
Is there any X/Y track pad events ?
com.sec.android.app.svrbrowser.apk
More details on WebApp page
How to clean cache of sVRbrowser ?
- Settings app/ Force stop...
- https://refreshyourcache.com/en/cache-test/
- https://videos.support.samsung.com/detail/video/5689392646001
More hints to come at:
- https://github.com/rzr/webthing-iotjs/wiki/WebApp
- https://aframe.io/docs/0.2.0/components/cursor.html
- https://github.com/mayognaise/aframe-mouse-cursor-component# Released in v0.6.1
- https://github.com/wmurphyrd/aframe-super-hands-component
- https://wmurphyrd.github.io/aframe-super-hands-component/examples/mouse/# Laser
Demos:
- https://social.samsunginter.net/@rzr/101564201618024415
- https://glitch.com/~gulliver-webxr-iot
- http://gulliver.eu.org/calendrier:2019:02:09
Ideas:
- visualize opensensemap's sensors
- generic 3d browser
Log:
adb="sudo adb" # TODO: setup udev
package=com.sec.android.app.sbrowser
url='http://is.gd/webxr'
activity='com.sec.android.app.sbrowser/.SBrowserMainActivity'
${adb} kill-server
${adb} devices -l # Plug USB before
#| List of devices attached
#| ad0ffffffffffffff device
# Stop package
${adb} shell am force-stop $package
# Clean cache
${adb} shell pm clear $package
# Start package
${adb} shell monkey -p $package -c android.intent.category.LAUNCHER 1
# Start activity and open URL
${adb} shell am start \
-n $activity \
-a android.intent.action.VIEW \
-d "$url"
# Open URL (for default browsers)
${adb} shell am start -a android.intent.action.VIEW -d "$url"
${adb} shell dumpsys package $package
${adb} shell ip address show dev wlan0 # note ip
${adb} tcpip 5555 # then disconnect usb
${adb} connect 192.168.1.58 # Or adapt
#| connected to 192.168.1.58:5555
- https://developer.samsung.com/internet#tech02
- https://developer.samsung.com/internet/gearvr/web-guide
- https://developer.samsung.com/internet/gearvr/releases
- https://github.com/SamsungInternet/support/issues/84# Inspect
- https://github.com/SamsungInternet/support/issues/16# Intend
- https://developer.samsung.com/forum/board/thread/view.do?boardName=SDK&messageId=301081&messageNumber=27240&listLines=15&startId=zzzzz~&startPage=253&curPage=255
- https://immersive-web.github.io/webvr/# Legacy
- https://forums.oculusvr.com/developer/discussion/52446/samsung-internet-in-vr-mode-with-intent
adb="sudo adb" # or setup udev
package=com.sec.android.app.svrbrowser
activity=com.sec.android.app.svrbrowser/.UnityPlayerNativeActivity
application=com.sec.android.app.svrbrowser.VrBrowserApplication
url='https://is.gd/webxr'
${adb} shell pm list package | grep ${package}
${adb} shell dumpsys package $package | grep ${activity}
${adb} shell am force-stop $package
${adb} shell pm clear $package
# Plug in GearVR headset, it will switch to VR dashboard
${adb} shell am start -n "$activity"
# TODO: pass url
${adb} shell am start \
-n $activity \
-a android.intent.action.VIEW \
-d "$url"
# Workaround:
text="is.gd/webxr"
# text="http%3A%2F%2F$text"
# 1st Focus on URL bar (TODO : use ${adb} shell input tap 300 700 ?)
${adb} shell input keyevent 67 && ${adb} shell input text "$text" && ${adb} shell input keyevent 66
- https://social.samsunginter.net/@rzr/101736969065590976
- https://github.com/SamsungInternet/blog/blob/master/content/pages/docs/remote-debugging.md
- https://stackoverflow.com/questions/45041320/adb-shell-input-text-with-space
Automated login hack:
gw_url="https://sosg.mozilla-iot.org"
token="eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6Ijg1NWEyYWVjLWI2NTMtNDQ3Mi04MDllLTQyNGI4ZTk1NjQyMiJ9.eyJjbGllbnRfaWQiOiJsb2NhbC10b2tlbiIsInJvbGUiOiJhY2Nlc3NfdG9rZW4iLCJzY29wZSI6Ii90aGluZ3M6cmVhZHdyaXRlIiwiaWF0IjoxNTUyNzM5MzQ4LCJpc3MiOiJodHRwczovL3Nvc2cubW96aWxsYS1pb3Qub3JnIn0.JLgc7Gd5R5IvG5AHdQb1zBG311sOyGjT4bPlqPUYma1IPaxDJYCJQvfurqkNVd2l7MtLP7IGZlBdN7B3pDLzMA"
base_url="https://webthings-webapp.samsunginter.net/"
base_url="${base_url}/login.html"
url="$base_url#?url=${gw_url}&token=${token}"
# On GNU/Linux:
xdg-open "$url"
# With exokit (TBC):
url='http://rzr.online.fr/x/vr/' # TODO
mldb launch com.webmr.exokit -v "ARGS=node --experimental-worker . ${url}"
#git clone ...
base_url="file://$PWD//"
base_url="${base_url}/login.html"
url="$base_url#?url=${gw_url}&token=${token}"
# On GNU/Linux
xdg-open "$url"
# With exokit:
mldb launch com.webmr.exokit -v "ARGS=node --experimental-worker . ${url}"
Normally it should display a cube that goes from Red to Green and then Blue:
url=http://samsunginter.net/color-sensor-js/example/color-sensor-webthing/extra/aframe.html
mldb launch com.webmr.exokit -v "ARGS=node --experimental-worker . ${url}"
- https://creator.magicleap.com/learn/guides/prismatic-getting-started
- https://glitch.com/edit/#!/ml1?path=index.html:20:1
See WebApp page
oauthClients.register(
new ClientRegistry(new URL('https://webthings-webapp.samsunginter.net/login.html'),
'webthings-webapp.samsunginter.net',
'WebApp Token Service',
'webthings-webapp.samsunginter.net',
'/things:readwrite')
);
oauthClients.register(
new ClientRegistry(new URL('https://webthings-webapp.samsunginter.net/index.html'),
'webthings-webapp.samsunginter.net',
'WebApp Token Service',
'webthings-webapp.samsunginter.net',
'/things:readwrite')
);
- http://samsunginter.net/color-sensor-js/example/color-sensor-webthing/extra/aframe.html?&url=https://color-sensor-webthing.glitch.me#
- http://rzr.github.io/twins/aframe/?url=https://rzr-twins.glitch.me# (on HTTP)
It appears that Glitch uses cookies, it would break CORS if rejected:
- https://sourceforge.net/p/sweethome3d/feature-requests/871/
- https://gltf-viewer.donmccurdy.com/#kiosk=1&model=https://storage.googleapis.com/blocks-town/tmp/busterDrone/busterDrone.gltf#
- https://sketchfab.com/search?features=downloadable&q=tag%3Agltf&sort_by=-likeCount&type=models#
- https://blog.mozvr.com/a-saturday-night-gltf-workflow/# GLTF
- https://github.com/KhronosGroup/glTF-Blender-IO/issues/403#
- https://fabien.benetou.fr/Events/BlenderWorkshopIMALAugust2017#Wednesday#
- https://blog.mozvr.com/gltf-exporter-in-three-js-and-a-frame/#
sudo snap install --classic blender # 2.80
/snap/blender/current/blender assets/house/house.blend
- https://immersive-web.github.io/webxr/# Specs
- https://github.com/dmarcos/document-register-element#
- https://proxy-controls.donmccurdy.com/#/
- https://github.com/ianpetrarca/webvr_boilerplate#
- https://www.laval-virtual.com/schedule-2019/#
- https://app.swapcard.com/widget/event/laval-virtual/planning/UGxhbm5pbmdfNTI0ODM%3D#
- http://www.vorlonjs.io/#
- https://codepen.io/utopiah/full/wOJgMW#
- https://github.com/webmixedreality/exokit#readme
- https://github.com/aframevr/aframe/blob/master/docs/introduction/interactions-and-controllers.md#
- https://github.com/Samsung/TAU#
- http://ngokevin.com/blog/aframe-component/#
- https://aframe.io/examples/showcase/supercraft/#
- https://deadpan-tuba.glitch.me/aframe.html#
- https://glitch.com/edit/#!/airy-language?path=index.html:51:0#
- http://192.168.1.12/~philippe/tmp/local/home/philippe/var/cache/url/git/ssh/github.com/rzr/webthings-webapp/src/webthings-webapp/sandbox/rzr/aframe/master/00index.html#
- https://riptutorial.com/Download/aframe.pdf#
- https://fabien.benetou.fr/Events/BlenderWorkshopIMALAugust2017#Thursday#
- https://kigiri.github.io/fetch/#
- https://github.com/mimeindustries/MeArm/issues/5# OSHW
- https://en.wikipedia.org/wiki/COLLADA#
Check Concept page for overview, Gateway to get started, IotJs page to install runtime to build webthing as explained in Home page.
For further experiments check Social and Sensor, or Extra parts like WebApp (for Tizen or PWA) or MCU info about running on other microcontrollers not supported by TizenRT.
While Home focus mostly on using iotjs to build webthings (on GNU/Linux or TizenRT for ARTIK05X devices).
This document is still in draft state, but reviews are always welcome, if you try to replicate it and stuck on missing instructions I would appreciate that you file issues or even better make pull request (just edit in github) that insert "TODO marks" in following chapters, like:
- TODO: please explain more this chapter and then remove this TODO line
Community contributions are welcome at:
Support is also possible, ask in:
- https://github.com/rzr/webthing-iotjs
- irc://irc.mozilla.org/#iot
WARNING: Developement branches could break over time.
Instead of maintaining "quick and dirty" demo code, I decided to split demo in smaller independents parts (which can reused) and I am upstreaming the most I can.
Then support can be done on mainline branches (or released versions).
Note that, Upstreaming can be a slow process, so snapshots links will remain until 100% of code is upstreamed.
Licence:
Reference documentation is at:
-
Concept:
- Demo Concept and Architecture
-
Gateway:
- Getting started with Mozilla IoT gateway
-
IotJs:
- Install IoT.js needed to run webthings
-
Home:
- Welcome page to build WebThings using IotJs
-
Social:
- Notification service using Mastodon FLOSS
-
TizenRT:
- webthing-iotjs on ARTIK05x
-
Sensor: and Actuator
- Physical interactions
-
Extra hints:
- Docker: About running in container
- MCU: About microcontrollers (not supported by TizenRT)
- WebApp: Alternate browser (Tizen and PWA)
- GnuLinux: Article about Edison and other
- Raspbian: Article about RaspberryPi
- Arduino: Alt For atmel or Esprissif boards
- DigitalTwins : WiP experiments
- TODO: Work in progress