johandegraeve / xdripswift Goto Github PK
View Code? Open in Web Editor NEWxdrip for iOS, written in Swift
License: GNU General Public License v3.0
xdrip for iOS, written in Swift
License: GNU General Public License v3.0
Hi,
So I have a defined alert for missed readings.
Not sure if it matters but i use "modern alert" sound for this.
When alert triggers (no matter how low or high the actual volume on the phone is), initial 0.5 sec of the audio is very high, after that volume goes down for the rest of audio clip according to volume phone is set to.
Any idea what might be causing this?
reported by user via messenger
Hi,Johan
I paired Bubble with xdrip,but the sensor status is :not started ,and there is no way to start the sesnor in xdrip,in fact the sensor was started 3 days ago by Librelink App.
To share data and communicate between apps using the same group name.
xDripSwift <---> Loop. integration using App Group capability
Using Mach messages on iOS:
http://ddeville.me/2015/02/interprocess-communication-on-ios-with-mach-messages
And
Mach ports are light-weight and powerful, but poorly documented:
app doesn't accept http
crash at moment reading is received, for Dexcom G5
Probably due to changes done in f25b5f1
Hi Johan. I can't see an option to scan a libre with NFC. Any plans to add this?
Thanks for your efforts!
Label with value in homescreen, if latest reading is > 11 minutes, text is in strikethrough mode.
But if then there's a new recent reading, text stays in strikethrough
As for the last commit of bubbledevteam to the master of xDrip (NightscoutFoundation/xDrip@672d073), the correct way to determine Bubble’s firmware is
let firmware = value[2].description + “.” + value[3].description
and not
let firmware = value[1].description + ".0"
(
looks like a possible code improvement
xdrip iOS does not work with transmitters of type FireFly (transmitter id's starting with 8G or 8H)
When setting transmitter id, a check must be done if it's starting with 8G or 8H and if so reject it
While working on #66 it was unclear to me how to determine whether a bg value is in mmol or mgdl. There is the user setting but for instance in the case of default values for alerts they may have existing before the user setting was available.
I started to sketch out an API that looks like the following
// add same types of values
> print(BGValue.mgdl(100) + BGValue.mgdl(100))
mgdl(200.0)
// add mmol to mgdl
> print(BGValue.mmoll(5) + BGValue.mgdl(100))
mmoll(10.55)
// multiple mmoll by mgdl
> print(BGValue.mmoll(5) * BGValue.mgdl(5))
mmoll(1.3874999999999997)
// divide mmoll by mgdl
print(BGValue.mmoll(5) / BGValue.mgdl(150))
> mmoll(0.6006006006006006)
// compare mmoll to mgdl
> print(BGValue.mmoll(5) < BGValue.mgdl(150))
true
// arbitrary expression with values converted to mmoll
> print(BGValue.map2AsMmoll(BGValue.mgdl(100), BGValue.mmoll(5)) { $0 + $1 })
mmoll(10.55)
There's an initial implementation and working demo at https://repl.it/@opsb/Bg-value-types.
The main value here is that the compiler can enforce that blood glucose values are always handled correctly. A developer never need to think about whether they're dealing with mgdl
or mmol
, the compiler will always ensure that they're handled correctly.
It's worth considering performance as there's obviously at least some overhead to using boxed types. It may be that in tight loops the performance overhead would be an issue but in those scenarios you could unbox and work with the raw values.
I'd be interested to hear what you think and if you happy with the proposal I'd be happy to put together a PR swapping them in for the raw double values (seems like the compiler would do most of the work).
can you put three field for low range, ok range, hi range to setup the color and background?
For example :
LOW --> RANGE <xx (example <85) COLOR TEXT xxxx (example RED) BACKGROUND xxxx (example BLACK)
OK --> RANGE HIDDEN (LOW<value db<HI ) COLOR TEXT xxxx (example GREEN) BACKGROUND xxxx (example BLACK)
HI --> RANGE >xx (example >180) COLOR TEXT xxxx (example YELLOW) BACKGROUND xxxx (example BLACK)
Reported by one user
iPhone X with iOS 12.3.1
App version 2.0.14
anyone who has the same problem ?
when doing initial calibration, connected m5stack does not receive the reading,
possibly also applicble to next calibrations
The compilation is failing with the error messages
error: no such file or directory: '/Users/johandegraeve/OneDrive/Xcode Projects/xdrip/xdrip/Core Data/classes/M5StackName+CoreDataClass.swift'
error: no such file or directory: '/Users/johandegraeve/OneDrive/Xcode Projects/xdrip/xdrip/Core Data/classes/M5StackName+CoreDataProperties.swift
since the paths are absolute in:
xdripswift/xdrip.xcodeproj/project.pbxproj
Lines 250 to 251 in 79f6c98
verify how it's done in Spike and implement in xdrip
When paired with a miaomiao transmitter, Sensor Start appears as 'not started' - despite session already started via the offical app. No option to start a session appears available.
Example when giving 838,3883,88 crash occurs
I own a iPad Mini 2 and when I press on Transmitter option (graph) the app closes itself.
I shared the info through TestFlight. I hope you can see it and fix the issue.
As this app is not related to the original xDrip and also not related to xDrip+, which has replaced the original xDrip, it is a very bad idea to call this completely different iOS app also xDrip. Even though it takes ideas from the Android xDrip+ app, it is a completely different development, isn't it?
It was a bad idea to call the previous app iosXDRIPreader, which also was abbreviated as xdrip by many people. And it is a very bad idea to call this app again xdrip.
Choose a different name to make clear, that this is a different app.
Hi, i send a crash report from TestFlight after a crashed.
The root cause it's seems there was a bad connection with Blucon because the battery is low.
Now 3%.. i need to change of course. But it will be better if the app can detect and advice instead of crashing.
The correct way of determining the Bubble hardware (currently 2.0, 0x2000 as advertised in the Bluetooth manufacturer data) is not the major firmware version:
but the last two bytes of the .dataInfo packet:
let hardware = value[value.count-2].description + "." + value[value.count-1].description
this is originally developped for Dexcom transmitters, they give a new reading exactly every 5 minutes.
With Libre type transmitters, this can be after a minute, in which case this value is totally wrong.
Using the Spike app I found that the most useful alerts were fast rise/drop. Is there interest in adding these to xdripswift? If so I'd like to pick it up. I'm new to swift/ios development but I've been a developer for 15 years and this seems like a good little feature to start with.
The following comment is misleading:
// length of header added by Bubble in front of data dat is received from Libre sensor
private let bubbleHeaderLength = 8
(
Bubble adds a footer of 8 bytes at the end of the FRAM when sending the data packet.
xdripswift itself is accumulating the patchUid and the first 344 FRAM bytes from the data packet reaching the same length of 352 bytes.
when alert value is > 32768 (mgdl) or 1889 (mmol) then crash occurs.
(shouldn't happen but as there's two such crashes logged in testflight, apparently some people do)
To change the time for example (missed signal 15 minutes), the field itself says "minutes", but if you enter 15, it will pick some high decimal number instead.
so 20 minutes or whatever it was default you need to enter 1.7 in the field. A bit confusing and also, keyboard input (OSD) to enter this does not have "." (dot) in it.
see NightscoutFoundation/xDrip@b1fb083#diff-564e59f90a64b2928799ea4e30d81920
xdripswift should be aligned
New suggestion: https://cocoapods.org/pods/Swift-Icons
Probably with default alert setup.
After having received some readings, then closing the app ..
I keep getting missed reading alerts, need to delete it
First start of app, there should be an alert with license info and after that info how to set transmitter type.
This is not showing up
Can't get it to collect overnight despite having the app loaded at the front, all other apps closed & setting DND to off. Xdrip & testflight is always allowed. Any ideas?
crash on iPhone 5 in attempting to upload to NightScout
Seems override mute is not working anymore.
This request is when using a combination of Libre+Miaomiao, but can perfectly be applicable also to other devices....
When using xDrip+ in Android, after the app disconnects from miaomiao (i.e. phone is turned off, or connection is lost for any other reason), after reconnecting again, the app pulls data up to 8 hours back, which I'm assuming is the data available in Libre and that can be pulled from miaomiao. In this tool, when the app disconnects from miaomiao, and it reconnects again, only the last 4-5 readings are pulled, and everything else is lost. My request therefore is to pull as much as possible all missing data once reconnecting to the device, and send that data to nightscout like any other reading. Taking into account that with iOS 13 the app disconnects more often, would that be possible so that at least we minimize the amount of missing data after a disconnect?
Hi, the app is working great. As a feature request is I possible to deactivate the always on notification and just show the current blood sugar as a badge notification ?
Thanks for the app !
Example for dropet, canDetectNewSensor = false,
but in rootviewcontroller, processNewGlucoseData will start a new sensor if sensorTimeInMinutes is available, which is the case for Droplet.
shouldn't be, code changes needed
and for Droplet : should either have canDetectNewSensor = true, or don't give sensorTimeInMinutes
Hi,
I know pressing "Snooze" in the app says it hasn't been completely implemented, but I thought I would list few things as wish list.
Be able to snooze from within app (preemptively). For example if I expect high values next 2 hours, it would be nice to be able to snooze them before they happen
List of currently enabled snooze(s) and ability to cancel/clear them
When you snooze high or low for lets say 1 hour, if value temporary fluctuates below the threshold and again goes high, snooze should still be active (that't not the case)
This is frequently seen with Libre if you lay on the arm etc
Example,
BS is 10.5
High Alert kicks in
You snooze it for X minutes/hours
You happen to put pressure on Libre and value on next update could jump down to lets say 6.5
When pressure is released, value will jump again to 10.x which will sound the High Alert again (it should respect previous snoooze)
For example:
BS 10.5
High Alert kicks in
You choose to snooze for x hour
But you can also add condition that if its goes higher than 14 mmol, it should sound alert despite high alerts being snoozed.
(Same with low alerts)
Let me know if this is already planned and this post is redundant or if you would like me to split it into several topics (didn't want to spam with multiple posts just yet :) )
@JohanDegraeve Many thanks for your work and effort!
seems to be converted to mmol while it's already mmol
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.