Git Product home page Git Product logo

infinilink's Introduction


Build & Analyze Platforms GitHub tag License Issues - InfiniLink Pull Requests - InfiniLink Stars - InfiniLink Forks - InfiniLink


InfiniLink - The official iOS companion app for InfiniTime

This iOS application allows you to interact with your PineTime smartwatch running InfiniTime (and perhaps other watches/OSes, pending testing).

Features:

  • Discover and connect to nearby InfiniTime devices
  • Set time and date immediately after connection
  • Retrieve battery level, heart rate, and step data
  • Chart persistence, with filters for the last hour, day, and week
  • Control Apple Music with InfiniTime's music controls
  • Integration with Apple HealthKit
  • Weather fetch (using the NWS API and a secondary fallback on WeatherAPI) and push (using InfiniTime 1.14's Simple Weather Service)
  • Uploading of external resource packages
  • Check for and download InfiniTime firmware updates with the GitHub API, and send them to the watch (Manual updates can be completed with DFU zip files downloaded from InfiniTime's GitHub Releases Page)

Currently non-functional features:

  • InfiniTime's navigation app. There is currently no API in Swift to access current directions, so this will likely never work unless it's added into a mapping application.
  • Phone notifications and system-wide music controls - Requires implementation of Apple Media Service (AMS) and Apple Notification Center Service (ANCS) in InfiniTime.

Installation:

  • Version 1.0.2: is accessible on the App Store.
  • Version 1.1: is now available to install via TestFlight!

License

Released under GPL-3.0 by @InfiniTimeOrg.

infinilink's People

Contributors

arjanvlek avatar friendlytsygan avatar hellojaccc avatar itzswirlz avatar jenjell avatar liamcharger avatar lorhof1 avatar mig5 avatar ocdtrekkie avatar poormusic2001 avatar ryanfortner avatar scandinave avatar swamprabbit avatar volus208 avatar wowieman avatar xan-m avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

infinilink's Issues

Make onboarding screen dismissal more clear

I received user feedback that it was unclear how to dismiss the onboarding pop up, and that it might be better to have a button or something to make it more clear.

I can definitely add a button or maybe some text saying "swipe down to close", but I'm wondering if this is other users' experience as well, or if swiping the pop-up down felt intuitive.

Let me know what you think and I can make changes to make this more clear if necessary!

DFU View UI adjustments

There's no 'transfer complete' message or anything, so it's a little confusing on the app side whether the transfer actually completed or not. I believe there is a DFU status flag for a completed transfer, so the state of this view should change to reflect that.

Probably either text that appears saying 'transfer complete' which fades after a couple seconds, or an alert pop up. Either way, it should probably also reset the view, unload the loaded firmware file, remove the progress bar, etc.

Graph infobox issues

Converting a todo item to an issue. Got some TestFlight feedback that it's frustrating that the info box disappears when you lift your finger from the graph, and I agree.

However, in order to make the info box persistent, I'll need to either choose a new graphing package, or fork the one I'm using and modify it. The variables that would give me the data to present it myself are declared as internal, and thus can't be accessed at run time from outside of the class. The info box itself is implemented only to be active

I'd rather focus on bigger issues right now, so I'm creating this issue to dog ear this side project.

Configurable option to support time-based graphing as opposed to index-based graphing

(Possibly related to #26)

In its current state, the app will show the graphs of HR and battery. Scrolling over the graph, there appear to be time jumps that aren't accounted for with "blank" data where the watch was either disconnected from the phone or not recording for whatever reason. Notably, I can see a jump from last night when my phone died and disconnected from the watch.

These don't show any kind of relative time scale between jumps, which can make 1am and 7am appear right next to each other on the graph, "distorting" the linear sense of time that the "last hour/day/week" headings imply.

Would it be possible to add a configuration option to allow for blank spaces to appear in the graphs' x-axis?

Long-term UI color palette

Need to think about an actual color palette for this application, as I'd like to do a UI overhaul before going 1.0

First instinct is to use some standard color schemes and allow the user to pick from them in settings? Nord, gruvbox, etc...

I also need to figure out if I'm going to follow the user's light/dark settings or force a color palette.

Question

Is there a way to get the app to run in the background

Step count support

It'd be really great to check my steps in companion app.

Heart rate monitor doesn't work if pinetime's screen is off which makes it useless :(

Walk steps would be really useful in my opinion.

Current firmware update (1.11) hangs

Looks like there might be an open PR to update the upstream repo branch - regardless at least a few users are unable to make the latest firmware update as the update just hangs and eventually reports the 'is it a zip' message

Sync timers?

This is probably another proprietary service issue, but timers on the PineTime and watch could keyword is could be synced/connected.

PineTime Firmware Update via App

Just received my watch and noticed it's running 1.2.1 and this app needs 1.3.1 at least. Does the update via app work? Any instructions? Looks like it wants me to point to a file on my phone. Can I just download the InfiniTime firmware from Pine64.com, unzip, and point to the file?

Ability to send custom notifications

That would be really great ton be able to send custom notifications to the watch, for test purpose but also for productivity as well : for instance, sending a todo list on the watch to get it stored the whole day would be awesome and quite trivial to implement as far as I understand (an automatic notifications in sent to the device on first connections, and there’s no need to use Apple proprietary tools).

This was done with GadgetBridge while linked to an android device :
726046BE-5C77-4437-9D3C-FC5A47AE022B

Thanks in advance

Send phone sensor data to pinetime

There is an open issue on InfiniTime that concerne a fitness app on the PineTime. InfiniTimeOrg/InfiniTime#214

As Pinetime does not have as much sensors than phones, il would be great to have compagnon app to collect this metrics and send them to the pineTime so that a fitness app can process it and display usefull information like GPS/Gyroscope... data

DFU Update Source

A couple of TestFlight users have pointed out that restricting DFU update source to local storage is not very convenient.

The DFU library actually requests URLs for the source of the zip file, and I just set it to use URLs to internal storage. My thinking was that this allows the user to ensure that the whole file is present and minimizes the possibility of connectivity issues affecting the transfer. Also, there is currently no network access required by Infini-iOS and I was hoping to keep it that way as long as possible.

If people would prefer to be able to initiate updates with links to the DFU zip instead of a local file, I would be more than willing to add that feature. Should be super easy to add.

Change default Status view information

I think it could be nice to give the user the option to choose which data and graph are loaded by default in the Status view of the app.

For example, instead of always loading heart rate information, the user could set the Status view to display the battery level by default.

Graph history

Got a request from TestFlight for persistent heart rate and battery data between sessions.

This is doable, but it will take a bit of work to implement and will require a pretty major overhaul of the status view, so this will probably be a lower-priority issue to start.

Definitely something I had planned on implementing before v1.0 though!

Configurable URL to export sensor data live

Thanks for the great project and kudos for publishing to the App Store.

I would like to use data from the watch, e.g IMU or heart rate, for VR and AR applications, in particular to motivate physical activity during a work day for its health benefit. Currently the application gather the data and displays it.

Could it be possible to provide a URL and then push the data there in a know format, e.g JSON, so that it can be parsed and used? I imagine pushing data from favorites at a specific frequency, e.g 10 times a second that could also be configurable.

DFU Updates

DFU updates need to be implemented in app

Crash on reconnect when playing music through Apple Music using non-ASCII characters

TestFlight user reported an app crash while testing how InfiniTime deals with non-ASCII characters in music titles.

User closed Infini-iOS, started a song with a non-ASCII title in Apple Music, and then opened Infini-iOS back up to see how InfiniTime handled non-ASCII characters, Infini-iOS crashed upon connection to InfiniTime. Should be easily reproducible in a debug session.

Checks:

  • apple music library initialization when music is already playing at connection
  • non-ascii song titles being sent to Infini-Time

Graph suggestions

Suggestion from TestFlight user to use a simple line graph rather than a filled graph. I tend to agree after having used the app for more than an hour or so at a time; after a full day it begins to look rather crowded and is hard to make any sense of it without scrolling through all of the data points.

I would love for this to be a user-configurable setting as well, so if people prefer the filled graph that's still an option. Should be easy enough to implement!

Any other graph suggestions are welcome in the comments! Do people want grid lines? Other graph types/shapes?

Quick question

Tinkering with on iOS side of atcwatch for p8 and other cheap smart watches.

For iOS a lot of those smart watches control music with HID (volume up and down, play pause button presses). Would have to be implemented in Infinitime maybe but a lot easier

support external resources

as of infinitime 1.11.0, some features require you to upload external resources to the watch. most other companion apps have this, and infinilink would benefit from it too.

New Icon

Not sure if you’re looking for a new icon, but if you are, I've created one you can use.

image

If you need it in a different format, like .SVG, I can send that.

Error when setting time

when I try to sync the time with my pinetime using your app, I get an error message telling me it was not able to do so. Having some logs to peruse could help me debug why!

Originally posted by @bhibb in #18 (comment)

Debug information view - **Opinions wanted!**

I've added a branch to create a debug view that BLE logs will print to, and I can add DFU logs and internal application logs as well. I started this to try to glean some information from error messages about the BLE issues that InfiniTime is currently grappling with. That turned out not to be super helpful, and I'm not sure how important this feature will be for the average user, so I'm having trouble deciding whether to add the other logs and then merge this into main, or keep this branch separate and move on to other features.

I'm creating this issue to:
a) ask if you want this feature or if it would be a nuisance
b) open this up for public comment about any features y'all might want or any other suggestions
c) to have an issue to link the branch to for clerical purposes if I do decide to merge the changes.

It's currently implemented as a toggle in the settings for "debug mode" with a link directly under it that takes you to the log view. It doesn't appear anywhere on the main views of the app or in the sidebar, so it's pretty out of the way for those who are not interested in it.

Crash in converting time to send to music service

A couple users have experienced crashes in the convertTime function of the MusicController class. I don't see anything outstandingly unsafe about this, but more than one crash has occurred here so something is wrong.\

The specific line that the crashlog flags is let val32 : UInt32 = UInt32(floor(value)), where value is a Double passed as an argument into the function, so it shouldn't be a nil value problem. Not sure if it's a conversion issue to UInt32 or a problem with the floor function.

@WowieMan any ideas here?

Button colors need work

I've struggled with picking a fairly-neutral color palette that still makes it clear when buttons are active or inactive. Opening this issue as a to do, but feel free to comment with your thoughts on the colors as they are now vs what you'd like to see them be going forward.

Rename project

After nearly 20 successful releases to TestFlight, Apple just rejected version v0.9.2 because the name contains "iOS". I probably should have guessed they would make a stink about iOS being in the name, but here we are. Name ideas would be very much appreciated!

I may also take this opportunity to switch version control platforms to something FOSS. I initially put this project on GitHub so it would be easier to refer to the InfiniTime repo if issues came up. However, I've only linked InfiniTime issues twice, and that functionality does not seem to be worth the trade off of using a proprietary version control platform when FOSS ones can do all of the same work.

Feel free to comment here if you'd prefer for me to stay on GitHub for some reason and I will take that into consideration!

TestFlight availability

Hi, I don't have a Mac to compile it (but I imagine I could rely on a cloud service for that) and send it on the phone (part which I imagine can't be skipped). I understand that it is experimental software but have you considered sharing it via TestFlight to get feedback? Cheers and thanks for sharing you work.

Feedback for 0.8.5

I recently reported via TestFlight about disconnection issues if I completely close out the Inifini-iOS app, but thats not what this report is about, its to just provide some feedback for the "What to Test".

  • flashing firmware from 1.3.0 to 1.4.0 worked fine, I like the updated UI changes a lot, it does really help
  • the onboarding screen is very helpful, I also like this a lot, please consider keeping it as it is
  • I think the clicking the "Use Current Device for Autoconnect" and "Clear Autoconnect Device" should provide some sort of response other than the current visual one, its hard to know something or what actually happened after clicking it
  • Maybe changing "Use Current Device to Autoconnect" to "Autoconnect Current Device" with a toggle may help know its set, then "Clear Autoconnect Device" when pressed would untoggle it?

Keep up the awesome work, using and testing this has been great, waited so long for a iOS companion app! I owe you a donation for making the PineTime work for my wife and I finally.

TestFlight crash report - DFU initiated with nil bleManager

Looks like a DFU was initiated without an active BLE central manager. I was able to reproduce this crash by turning bluetooth off, opening the application, and starting a DFU.

Obviously the DFU stuff should be disabled if there's not an active BLE central manager, so I'm going to make the UI conditional to reflect this. If there's a BLE central manager (i.e. if the user has opened the application with Bluetooth on and ready), then the DFU page will look like it looks now. If not, it will instead show that there is no connection, and the buttons will not be displayed.

Crash at DFU completion

User submitted a crash report of the app crashing at the very end of the DFU process. The trace showed that the crash was caused by something buried in the DFU library, and considering that this crash doesn't appear to have affected anyone else, I think it's probably not Infini-iOS that's at fault.

Going to leave this issue open for a while so others can chime in if they've experienced any crashes during DFU that they did not submit an official report for.

Xcode version incompatibility

This is not strictly a bug - more of a note. For those of us who are running something older than Big Sur (I'm running Catalina 10.15.7), the latest version of XCode I can run is 12.4 - and that will not accept an iPhone with iOS 14.6 as a target because it is too new. Unfortunately my Mac cannot run Big Sur, which is required for any later version of XCode.

Can you publish it?

I 100% understand no longer having time to work on an open source project: I and I'm sure many others deeply appreciate the hard work you've invested so far. Obviously my hope is someone will take over the project in due time, but I was wondering if it would be possible for you to finalize publishing the app, so that we do not lose it in 90 days due to TestFlight. In my case, InfiniLink is the only way I can easily update/interact with my PineTime.

Last connected and uptime stats

User request from TestFlight to add 'last connected' info on the status page, which I think will go hand in hand with a feature I was planning on implementing: uptime tracking.

I'm thinking the uptime tracker should go in the settings page, or maybe in the status section at the bottom of the sidebar.

As for the 'last connected' info, while this would be helpful for troubleshooting, etc, I'm concerned that it's something you'd only want to see when you make a connection (if at all) and not have it displayed constantly. Maybe the uptime tracker could display the last connected time if a PineTime is not currently connected.

On boarding connection issue

I’ve received a couple reports that the first connection was difficult for some (one user had to restart their phone, another had to try to connect to the device from another computer first)

I suspect this might be an issue with how the Bluetooth permissions are handled on first boot of the app.

If you had this issue, please add any information you can to this issue to help me troubleshoot!

Random Screen on Watch Face

I have noticed lately that I will often look at my watch and the screen that shows up is something random like pong or the music controls. It seems like the music controls come up more often. Sometimes music will start playing on my phone. I had the wake up set to lifting my wrist and I thought that might have had something to do with it but I changed it to tap and it still does it. Then I though we'll maybe it's just me moving around but I have been sitting in a car for the last four hours and music started playing on my phone. Not sure if this is the right place to report as it could be a firmware issue? I updated to the latest firmware.

Can't connect to device

Firmware 1.2

I get the following error message when I try to connect to PineTime:

Could not connect to device not named 'InfiniTime'. Device name: XYZAB

I used InfiniLink without any issue when it was still in beta. I hadn't checked it in months when I saw that it was available in the App Store only, so I downloaded it there.

I'm also positive I was running much more recent firmware on my device but it seems to have automatically reverted to v1.2.

I know the app isn't maintained anymore but I was wondering if there is some easy fix.

Apple Health compatibility

Is this something people are interested in? I haven't implemented it yet because of 1) Apple's, well, dubious decisions lately have rubbed me the wrong way, so I'm wary of adding too many Apple-based features, 2) I personally don't think the HRM measurements are accurate or frequent enough to offer any meaningful health data, and 3) step count is not yet available over BLE, so you'd basically only be syncing heart rate data.

If people are interested in syncing with Apple Health, I can try to implement it as a switchable service, so that people aren't forced to use it if they're not interested.

Let me know what you think!

InfiniTime latest release not detected

InfiniLink is not detecting the latest available release of InfiniTime (1.7.0) for me. It sees version 1.6 and updates smoothly but doesn't see the 1.7 release.

Experiencing this behavior on InfiniLink 0.9.3.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.