maxr1998 / home-assistant-android Goto Github PK
View Code? Open in Web Editor NEWUNOFFICIAL Android app/frontend for Home Assistant (https://home-assistant.io)
Home Page: https://maxr1998.de/#projects
License: GNU General Public License v3.0
UNOFFICIAL Android app/frontend for Home Assistant (https://home-assistant.io)
Home Page: https://maxr1998.de/#projects
License: GNU General Public License v3.0
The installation of the apk
fails on 4.4.2 with a parsing error.
Stack trace attached. It also included some of the hass state data, but looks like it was truncated. This should hopefully help track it down, though. Using version 0.2 from F-Droid.
D/HassService( 6934): 3: {"id":3,"success":true,"type":"result","result":[{"state":"on","entity_id":"group.automation_lights","last_updated":"2017-04-18T12:00:05.849019+00:00","last_changed":"2017-04-18T12:00:05.849019+00:00","attributes":{"friendly_name":"Bird Room","entity_id":["light.bird_room_level_6_0"],"order":3}},{"state":"on","entity_id":"automation.suspend_kodi_after_inactivity","last_updated":"2017-04-16T18:04:26.605838+00:00","last_changed":"2017-04-16T18:04:26.605838+00:00","attributes":{"friendly_name":"Suspend Kodi after inactivity","hidden":true,"last_triggered":null}},{"state":"on","entity_id":"light.zwave_micro_dimmer_level_5_0","last_updated":"2017-04-16T18:04:26.840153+00:00","last_changed":"2017-04-16T18:04:26.840153+00:00","attributes":{"friendly_name":"Zwave Micro Dimmer Level","supported_features":33,"brightness":70,"node_id":5}},{"state":"on","entity_id":"automation.flic_all_lights_off","last_updated":"2017-04-16T18:04:26.590318+00:00","last_changed":"2017-04-16T18:04:26.590318+00:00","attributes":{"friendly_name":"Flic All Lights Off","hidden":true,"last_triggered":null}},{"state":"on","entity_id":"light.living_room_floor","last_updated":"2017-04-18T21:38:16.975720+00:00","last_changed":"2017-04-18T21:37:48.807452+00:00","attributes":{"xy_color":[0.4347,0.4032],"friendly_name":"Living Room Floor","color_temp":328,"effect_list":["colorloop","random"],"supported_features":127,"brightness":254,"rgb_color":[255,215,139]}},{"state":"off","entity_id":"switch.kodi_pc","last_updated":"2017-04-16T18:04:19.202474+00:00","last_changed":"2017-04-16T18:04:19.202474+00:00","attributes":{"friendly_name":"Kodi PC"}},{"state":"on","entity_id":"automation.finish_party_mode","last_updated":"2017-04-16T18:04:26.592102+00:00","last_changed":"2017-04-16T18:04:26.592102+00:00","attributes":{"friendly_name":"Finish Party Mode","hidden":true,"last_triggered":null}},{"state":"off","entity_id":"media_player.upstairs_bedroom","last_updated":"2017-04-17T03:07:30.765914+00:00","last_changed":"2017-04-17T03:07:30.765914+00:00","attributes":{"friendly_name":"Upstairs Bedroom","supported_features":21437}},{"state":"off","entity_id":"input_boolean.activate_snapcast_chromecast","last_updated":"2017-04-16T18:04:16.093998+00:00","last_changed":"2017-04-16T18:04:16.093998+00:00","attributes":{}},{"state":"closed","entity_id":"group.garage_door","last_updated":"2017-04-18T03:18:41.051336+00:00","last_changed":"2017-04-18T03:18:41.051336+00:00","attributes":{"friendly_name":"Garage Door","entity_id":["cover.garage_door__7_0"],"order":4}},{"state":"on","entity_id":"automation.finish_snapcast","last_updated":"2017-04-16T18:04:26.595372+00:00","last_changed":"2017-04-16T18:04:26.595372+00:00","attributes":{"friendly_name":"Finish Snapcast","hidden":true,"last_triggered":null}},{"state":"Ready","entity_id":"zwave.controller_1","last_updated":"2017-04-16T18:04:35.267655+00:00","last_changed":"2017-04-16T18:04:35.267655+00:00","attributes":{"friendly_name":"Controller","query_stage":"Complete","neighbors":[8,3,5,6],"is_ready":true,"is_zwave_plus":false,"capabilities":["listening","primaryController","beaming"],"is_info_received":true,"node_id":1,"is_failed":false,"is_awake":true,"max_baud_rate":40000}},{"state":"on","entity_id":"automation.suspend_kodi_when_chromecast_active","last_updated":"2017-04-18T02:28:30.917592+00:00","last_changed":"2017-04-16T18:04:26.607493+00:00","attributes":{"friendly_name":"Suspend Kodi when Chromecast active","hidden":true,"last_triggered":"2017-04-18T02:28:30.917394+00:00"}},{"state":"on","entity_id":"automation.dim_bedroom_light_for_tv_time","last_updated":"2017-04-17T02:33:56.008071+00:00","last_changed":"2017-04-16T18:04:26.612766+00:00","attributes":{"friendly_name":"Dim bedroom light for TV time","last_triggered":"2017-04-17T02:33:56.007911+00:00"}},{"state":"on","entity_id":"automation.turn_on_bedroom_light_at_night","last_updated":"2017-04-17T23:33:35.016062+00:00","last_changed":"2017-04-16T18:04:26.627735+00:00","attributes":{"friendly_name":"Turn on bedroom light at night","last_triggere
E/HassService( 6934): Error in onMessage()
E/HassService( 6934): java.lang.IllegalArgumentException: Invalid primitive conversion from double to int
E/HassService( 6934): at java.lang.reflect.Field.set(Native Method)
E/HassService( 6934): at com.afollestad.ason.Util.setFieldValue(Util.java:230)
E/HassService( 6934): at com.afollestad.ason.ClassCacheEntry.set(ClassCacheEntry.java:63)
E/HassService( 6934): at com.afollestad.ason.AsonSerializer.deserialize(AsonSerializer.java:168)
E/HassService( 6934): at com.afollestad.ason.AsonSerializer.deserialize(AsonSerializer.java:180)
E/HassService( 6934): at com.afollestad.ason.Ason.deserialize(Ason.java:388)
E/HassService( 6934): at io.homeassistant.android.api.HassUtils.extractEntitiesFromStateResult(HassUtils.java:32)
E/HassService( 6934): at io.homeassistant.android.HassService$1.onRequestResult(HassService.java:153)
E/HassService( 6934): at io.homeassistant.android.HassService$HassSocketListener.onMessage(HassService.java:227)
E/HassService( 6934): at okhttp3.internal.ws.RealWebSocket.onReadMessage(RealWebSocket.java:307)
E/HassService( 6934): at okhttp3.internal.ws.WebSocketReader.readMessageFrame(WebSocketReader.java:222)
E/HassService( 6934): at okhttp3.internal.ws.WebSocketReader.processNextFrame(WebSocketReader.java:101)
E/HassService( 6934): at okhttp3.internal.ws.RealWebSocket.loopReader(RealWebSocket.java:262)
E/HassService( 6934): at okhttp3.internal.ws.RealWebSocket$2.onResponse(RealWebSocket.java:201)
E/HassService( 6934): at okhttp3.RealCall$AsyncCall.execute(RealCall.java:135)
E/HassService( 6934): at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
E/HassService( 6934): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
E/HassService( 6934): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
E/HassService( 6934): at java.lang.Thread.run(Thread.java:818)
At the moment, it just fires off events and doesn't reload states until restarting the app.
Multi-row UI through StaggeredGridLayoutAdapter.
The groups are currently sorted randomly (in the order the API provides).
This app should use data binding to make the UI code much cleaner, if possible.
In the error messages only IPs ares mentioned, but whats about hostnames?
Why not name it "address" or something like that?
Preferably using some sort of intro screen ViewPager.
material-intro?
Downloaded the release candidate version and it works, but when building from the current master branch I am not able to authenticate, I get a toast indicating my password is invalid.
Not using basic auth.
I am accessing HA remotely through an Nginx reverse proxy using lets-encrypt certs.
Also, I am not seeing a persistent notification indicating a login failure which I do see on the RC version when actually using a bad password.
Let me know if there is anything else I should try.
Also, I just started a new job as an Android developer so I plan on following this pretty closely and attempting to contribute where/when I can.
I am not sure where I can access an online version of materialdesignicons.com.
There is a (private?) API at https://materialdesignicons.com/api/download/icon/svg/
, but it requires some sort of special id at the end (not the expected e.g. mdi:home
).
Not sure what caused this, possibly opening the app while HASS was restarting (just a guess) but now when I open it, it just shows a blank white screen (with the blue home assistant header). Pressing refresh or forcequitting the app doesn't fix it. Short of uninstalling/reinstalling, it seems to be no way to get the front end back.
I have my HA instance set up with it's own domain and LetsEncrypt SSL certs that work fine in the browser. When I put that URL in the "Home Assistant URL/IP" field on the app login screen and use the same password but all I get is Connection failure: Invalid password!
, which isn't surprising since my username is nowhere in the "Home Assistant URL/IP".
How is one supposed to log in correctly? This should also be presented in the login UI. Preferably, the UI includes different fields for the different pieces of data.
The translate button in the settings is not working.
It seems to get the pressed state, but nothing happens.
I'm using hass-1.0-phone-fdroid.apk
Recent version added non-free dependencies, e.g. play-services from compile "com.google.android.gms:play-services-location:10.2.4"
. Please provide a build flavor that replaces or removes this.
The Gradle wrapper is missing from the repository (gradlew
/gradlew.bat
). It makes the build without Android Studio much more complicated.
In accordance to #38, we need a new name for this app. Possible variations:
Also, the name needs to indicate the independence from the Home Assistant project and should have their approval.
(cc @balloob)
It seems when API endpoint is unreachable? the icon files in storage are broken. We have to detect that and delete them again then.
Hello,
I set up a self signed certificate as shown here:
https://home-assistant.io/docs/ecosystem/certificates/tls_self_signed_certificate/
Connecting to my Homeassistant instance only leads to this error after clicking "connect" on the login page. I set a password too. The web ui works flawlessly. I installed 1.0 from F-Droid on a BQ X5 Plus running Android 7.1.1. Home Assistant is on version 0.54.0.
Location tracking through LocationManager and receivers in an efficient way.
Let me start with that I appreciate the work you have done on this app. However, it is not clear enough from the README or F-Droid listing that this is an unofficial app. Please:
Send battery level to the Hass server every ~5-10 minutes, using AlarmManager or JobScheduler API.
Update: better do that via Intents.
I'm sure I'm not the only user that makes use of nginx/Apache reverse proxies secured by http basic auth. Any chance of this getting implemented?.
The quicksettings tile might open a dialog which shows a preconfigured set of actions, probably only supporting switch view types and sensors.
When I build myself with Android Studio the app and try to install the apk it fails with "damaged" apk, quite dont kown why.
So could you do an offical new Build with all the commits..and maybe update f-droid package as well then.
G930FXXU2DRA9
Android 7.0
How can I use the location and battery tracking of this app.
I have activated it within the app, but it doesn't appear in the known devices.
As of the source code its using device_tracker.see
But I can not find any documentation how to set it up.
I'm using hass-1.0-phone-fdroid.apk with Home Assistant
0.50.1.
This bug happened after your changes on March 1.
When I launch app now all I see is a white screen.
Logs say:
03-20 21:13:30.407 13793-13811/io.homeassistant.android D/HassService: {"ha_version": "0.40.0", "type": "auth_ok"}
03-20 21:13:30.411 13793-13811/io.homeassistant.android D/HassService: {"success": false, "id": null, "type": "result", "error": {"code": 2, "message": "Message incorrectly formatted: not a valid value for dictionary value @ data['type']. Got 'auth'\nrequired key not provided @ data['id']. Got None"}}
03-20 21:13:30.412 13793-13811/io.homeassistant.android D/HassService: {"success":false,"id":null,"type":"result","error":{"code":2,"message":"Message incorrectly formatted: not a valid value for dictionary value @ data['type']. Got 'auth'\nrequired key not provided @ data['id']. Got None"}}
If I wipe data, and run app again, the app prompts for URL / password. I can login and the app works fine. After killing the activity, it happens again. I have to tap the refresh icon in the header twice, and it will show the URL/IP and Password prompt again.
I would love to see an optional dark theme and/or the ability to use user-defined themes from Home Assistant.
Also, while you can already access HA from Tasker via MQTT / web API, it's a hassle to figure out and set up. It would be great if this app would provide a Plugin that exposes listeners for events/state changes to use in Tasker Profiles and lists services/entities to use in Tasker Tasks.
Finally, I'm hoping there is support for CA certificates. Chrome gave me lots of problems with certificates and Firefox flat-out would not use them, so I gave up on the idea. I didn't check for support in this app (because I'm not using them anymore), but I would love to go back to using certificates if possible.
Thank you for the app, that's great. I'd like to give some general feedback:
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.