iOS & Android App for the Crownstone.
The Crownstone iOS and Android apps have the following functionality:
|Functionality||State Firmware||State Smartphone Apps|
|Instantaneous power consumption||Done||Done|
|Reacting on close proximity (tap-to-toggle)||Done||Done|
|Reacting on moderate proximity (presence)||Done||Done|
|Reacting on room-level indoor positioning||Done||Done|
|User-controlled upload of data to the cloud||Done||Done|
|Sending commands through the internet||Done||Done|
|Visualizing other users in the app||Done||Done|
|Wake-up light||To be done||To be done|
|Dimming (synced PWM at 100Hz)||To be done||To be done|
|Power consumption history||To be done||To be done|
|Integration with Toon||To be done||To be done|
|Device identification||To be done||To be done|
|Control by non-registered guest users||To be done||To be done|
|Integration with thermostat radiator valves||To be done||To be done|
|Multi-user setup (don't leave user in the dark)||To be done||To be done|
The Android development is always a few weeks behind the iOS development, especially with respect to the graphical user interface.
The application makes use of separate libraries (so-called bluenet libraries) that are native to the platform. This is on purpose so that people can be make use of the Crownstone libraries without the need to use React Native. See below for getting the libraries.
Issues and feature requests
Do you encounter some issues or would you like to see a particular feature, file them directly at our Github issues tracker.
The compiled app can be downloaded from Crownstone.
Make copies of ./js/LocalConfig.template.js and ./sentrySettings.template.js and rename them to ./js/LocalConfig.js and ./sentrySettings.js.
Assuming you've already installed npm, nodejs and yarn. You can get Yarn here: https://yarnpkg.com/en/docs/install
- Yarn, can be obtained at yarnpkg.com.
- Carthage (for iOS)
- Android Studio (for Android)
Make sure typescript 2.2 or higher is installed using:
npm install -g typescript
To download all dependencies, use Yarn:
To run the compiler, use:
In the ios folder, use Carthage to download the dependencies.
carthage bootstrap --platform iOS --no-use-binaries
Clone the bluenet lib for android to another dir, and copy the
bluenetmodule to the
androiddir of the app:
cd .. git clone https://github.com/crownstone/bluenet-android-lib.git cp -r bluenet-android-lib/bluenet CrownstoneApp/android cd CrownstoneApp
Import the project in Android Studio
File > New > Import Project ...
Choose the android dir.
Start the react server in a seperate terminal:
Reverse the port (only needs to be done once after plugging in the phone):
adb reverse tcp:8081 tcp:8081
Press the play button in android studio
Running yarn (or anything else) may confuse android studio. If gradle fails, try closing android studio, run
clean.sh, and import the project again.
Run the tests:
If there are problems with PHC folders during iOS compilation, remove the build folder in the ios map. Cameraroll has to be manually added to iosbuild in 0.42
If you get a lot of these messages in the XCode console:
Add this global variable to your build config:
Xcode menu -> Product -> Edit Scheme... Environment Variables -> Add -> Name: "OS_ACTIVITY_MODE", Value:"disable"
If you get errors with xcode 11:
Unknown argument type 'attribute' in method -[RCTAppState getCurrentAppState:error:]. Extend RCTConvert to support this type.
That means you need to update the React Native version to 59.9
If you get a compilation issues in xcode 10, "config.h not found" copy the ios-configure-glog.sh from /node_modules/react-native/scripts to /node_modules/react-native/thirdParty/glog and run the script. Clean and rebuild
If you get libfishhook.a is missing, go to RTCWebSocket and re-add the libfishhook.a in the link binary with libraries panel.
react-transform-hmr errors: run this to start the server --> react-native start --reset-cache
If you get "Argument list too long: recursive header expansion failed at <user_path_to_app>/node_modules/react-native-camera/ios/../../../ios/build/Index/DataStore/v5/records/R4.", remove the $(SRCROOT)/../../../ios from the Framework Search Path of the react-native-camera library xcode project.
The copyrights (2014-2017) belongs to the team of Crownstone B.V. and are provided under an noncontagious open-source license:
- Authors: Alex de Mulder, Bart van Vliet
- Date: 1 Apr. 2016
- Triple-licensed: LGPL v3+, Apache, MIT
- Crownstone B.V., https://www.crownstone.rocks
- Rotterdam, The Netherlands