在Windows PowerShell和Linux Bash上可视化您的实时血糖值和Git提示

image

My buddy Nate become a Type 1 Diabetic a few weeks back. It sucks...I've been one for 25 years. Nate is like me - an engineer - and the one constant with all engineers that become diabetic, we try to engineer our ways out of it. ;) I use an open source artificial pancreas system with an insulin pump and continuous glucose system. At the heart of that system is some server-side software called Nightscout that has APIs for managing my current and historical blood sugar. It's updated every 5 minutes, 24 hours a day.

几周前,我的好友Nate成为1型糖尿病患者。 糟透了...我已经25年了。 内特(Nate)就像我一样-一位工程师-并且是所有患有糖尿病的工程师中的一个不变的人,我们试图从中脱颖而出。 ;)我使用带有胰岛素泵和连续葡萄糖系统的开源人工胰腺系统。 该系统的核心是一些称为Nightscout的服务器端软件,该软件具有用于管理我当前和历史血糖的API。 每天24小时每5分钟更新一次

I told Nate to get NightScout set up ASAP and start playing with the API. Yesterday Nate added his blood sugar to his terminal prompt!

我告诉Nate尽快设置NightScout并开始使用API​​。 昨天内特(Nate)在终端提示中添加了血糖

I love this. He uses Linux, but I use Linux (Ubuntu) on Windows 10, so I wanted to see if I could run his little node up from Windows (I'll make it a Windows service).

我喜欢这个。 他使用Linux,但是我在Windows 10上使用Linux(Ubuntu),所以我想看看是否可以从Windows运行他的小节点(我将其设为Windows服务)。

Yes, you can run cron jobs under Windows 10's Ubuntu, but only when there is an instance of bash running (the Linux subsystem shuts down when it's not used) and upstart doesn't work yet. I could run it from the .bashrc or use various hacks/workarounds to keep WSL (Windows Subsystem for Linux) running, but the benefit of running this as a Windows Service is that I can see my blood sugar in all prompts on Windows, like Powershell as well!

是的,您可以在Windows 10的Ubuntu下运行cron作业,但仅当有一个bash实例正在运行时(Linux子系统在不使用时关闭),并且upstart尚不起作用。 我可以从.bashrc运行它,也可以使用各种技巧/变通办法使WSL(Linux的Windows子系统)保持运行,但是将其作为Windows服务运行的好处是,我可以在Windows的所有提示中看到血糖值例如Powershell也是如此!

You can install with

您可以安装

npm install -g nightscout-ps1

And then run with

然后运行

nightscout-ps1 -n "my-nightscout-url.com" -c ~/.nightscout-ps1.env

I'll use the "non-sucking service manager (NSSM)" to run Nate's non-Windows-service node app as a Windows service. I ran "nssm install nsprompt" and get this GUI. Then I add the --nightscout parameter and pass in my Nightscout blood sugar website. You'll get an error immediately when the service runs if this is wrong.

我将使用“非吸吮服务管理器(NSSM)”将Nate的非Windows服务节点应用程序作为Windows服务运行。 我运行了“ nssm install nsprompt”并获得了此GUI。 然后,添加--nightscout参数,并将其输入Nightscout血糖网站。 如果这是错误的服务运行时,您将立即得到一个错误。

NSSM Service Installer

From the Log on tab, make sure the service is logged on as you. I login with my MSA (Microsoft Account) so I used my email address. This is to ensure that with the app writes to ~ on Windows, it's putting your sugars in c:\users\LOGGEDINUSER\.

在“登录”选项卡上,确保该服务已随您登录。 我使用MSA(Microsoft帐户)登录,所以我使用了我的电子邮件地址。 这是为了确保应用程序在Windows上写入〜时,可以将您的操作写入c:\ users \ LOGGEDINUSER \。

Next, run the service with "sc start NSPrompt" or from the Services GUI.

接下来,使用“ sc start NSPrompt”或从服务GUI运行服务。

My sugar updater runs in a Windows Service

Nate's node app gets blood sugar from Nightscout and puts it in ~/.bgl-cache. However, to be clear since I'm running it from the Windows side while changing the Bash/Ubuntu on Windows prompt from Linux, it's important to note that from WIndows ~/ is really c:\users\LOGGEDINUSER\ so I changed the Bash .profile to load the values from the Windows mnt'ed drives like this:

Nate的节点应用程序从Nightscout中获取血糖并将其放入〜/ .bgl缓存中。 但是,要明确一点,因为我是从Windows端运行它从Linux更改Windows上的Windows提示符下的Bash / Ubuntu时,需要注意的是,从Windows〜 /实际上是c:\ users \ LOGGEDINUSER \,所以我更改了Bash .profile来从Windows mnt驱动器加载值,如下所示:

eval "$(cat /mnt/c/Users/scott/nightscout-ps1.env)"

Also, you need to make sure that you're using a Unicode font in your console. For example, I like using Fira Code Light, but it doesn't have a single character ⇈ double-up arrow (U+21C8), so I replaced it with two singles. You get the idea. You need a font that has the glyphs you want and you need those glyphs displaying properly in your .profile text file.

另外,您需要确保在控制台中使用Unicode字体。 例如,我喜欢使用Fira Code Light,但它没有单个字符⇈双向箭头(U + 21C8),因此我将其替换为两个单打。 你明白了。 您需要一种具有所需字形的字体,并且您需要这些字形在.profile文本文件中正确显示。

You'll need a Unicode Font

And boom. It's glorious. My current blood sugar and trends in my prompt. Thanks Nate!

和繁荣。 这是光荣的。 我当前的血糖和提示趋势。 谢谢内特!

My sugars!

So what about PowerShell as well? I want to update that totally different prompt/world/environment/planet from the same file that's updated by the service. Also, I already have a custom prompt with Git details since I use Posh-Git from Keith Dahlby (as should you).

那么,PowerShell又如何呢? 我想从服务更新的同一文件中更新完全不同的提示/世界/环境/行星。 另外,由于我使用的是Keith Dahlby的Posh-Git (我也应该这样做),因此我已经有了有关Git详细信息的自定义提示。

I can edit $profile.CurrentUserAllHosts with "powershell_ise $profile.CurrentUserAllHosts" and add a prompt function before "import-module posh-git."

我可以使用“ powershell_ise $ profile.CurrentUserAllHosts”编辑$ profile.CurrentUserAllHosts,并在“ import-module posh-git”之前添加提示功能。

Here's Nate's same prompt file, translated into a PowerShell prompt() method, chained with PoshGit. So I can now see my Git Status AND my Blood Sugar. My two main priorities!

这是Nate的相同提示文件,已转换为PowerShell PossGit的PowerShell hint()方法。 现在,我可以看到我的Git状态和血糖。 我的两个主要优先事项!

NOTE: If you don't use posh-git, you can remove the "WriteVcsStatus" line and the "Import-Module posh-git" and you should be set!

注意:如果您不使用posh-git,则可以删除“ WriteVcsStatus”行和“ Import-Module posh-git”,然后进行设置!

function prompt {
Get-Content $ENV:USERPROFILE\.nightscout-ps1.env | %{$bgh = @{}} {if ($_ -match "(.*)=""(.*)""") {$bgh[$matches[1]]=$matches[2].Trim();}}
$trend = "?"

switch ($bgh.latest_entry_direction)
{
"DoubleUp" {$trend="↑↑"}
"SingleUp" {$trend="↑"}
"FortyFiveUp" {$trend="↗"}
"Flat" {$trend="→"}
"FortyFiveDown" {$trend="↘"}
"SingleDown" {$trend="↓"}
"DoubleDown" {$trend="↓↓"}
}

$bgcolor = [Console]::ForegroundColor.ToString()
if ([int]$bgh.latest_entry_mgdl -ge [int]$bgh.settings_thresholds_bg_target_top) {
$bgcolor = "Yellow"
} ElseIf ([int]$bgh.latest_entry_mgdl -le [int]$bgh.settings_thresholds_bg_target_bottom) {
$bgcolor = "Red"
} Else {
$bgcolor = "Green"
}

Write-Host $bgh.latest_entry_mgdl -NoNewline -ForegroundColor $bgcolor
Write-Host $trend" " -NoNewline -ForegroundColor $bgcolor
[Console]::ResetColor()

$origLastExitCode = $LASTEXITCODE
Write-Host $ExecutionContext.SessionState.Path.CurrentLocation -NoNewline
Write-VcsStatus
$LASTEXITCODE = $origLastExitCode
"$('>' * ($nestedPromptLevel + 1)) "
}
Import-Module posh-git

Very cool stuff.

很酷的东西。

Blood Sugar and Git in PowerShell!

This concept, of course, could be expanded to include your heart rate, FitBit steps, or any health related metrics you'd like! Thanks Nate for the push to get this working on Windows!

当然,可以将这个概念扩展为包括您的心率,FitBit步骤或您想要的任何与健康相关的指标! 感谢Nate推动在Windows上运行该功能!

翻译自: https://www.hanselman.com/blog/visualizing-your-realtime-blood-sugar-values-and-a-git-prompt-on-windows-powershell-and-linux-bash

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值