×

Inserisci link ad articolo di TurboLab.it Ricerca articoli

Cerca e inserisci il collegamento a un articolo pubblicato da TurboLab.it

Digita almeno 3 caratteri, poi premi "Invio"

Segnale acustico batteria scarica

Se Windows genera un errore, hai un problema di virus o vuoi discutere/segnalare l'uscita della nuova versione di un software per la piattaforma Microsoft, questa è la sezione giusta.
Regole del forum
Avatar utente
gusberti
Livello: CD-ROM (4/15)
Livello: CD-ROM (4/15)
Messaggi: 99
Iscritto il: dom mar 08, 2015 10:38 am
Has thanked: 1 time

Segnale acustico batteria scarica

Messaggio da gusberti »

Salve, ho un notebook Lenovo ThinkPad P17 Gen 2i, Windows 11 Pro 25H2 aggiornato. Vorrei che, quando la batteria raggiunge il 5% di carica, un segnale acustico, non solo il simbolo visivo in basso a destra, mi avvertisse per collegare l'alimentatore.
Avatar utente
crazy.cat
Amministratore
Amministratore
Messaggi: 13585
Iscritto il: mer mag 01, 2013 4:02 pm
Località: Noventa Padovana
Has thanked: 8 times
Been thanked: 111 times

Re: Segnale acustico batteria scarica

Messaggio da crazy.cat »

Ogni notifica di Windows dovrebbe avere un suo suono, sicuro che sia attivato nelle Impostazioni - Notifiche di Windows?

Lo segno qui per non dimenticarlo anche se adesso non ho modo di provalo
https://www.howtogeek.com/set-custom-lo ... -scheduler
Questo è lo script modificato per farlo parlare. E' da provare non ho idea se vada bene.
$Battery = Get-WmiObject -Class Win32_Battery
$Level = $Battery.EstimatedChargeRemaining
if ($Level -lt 30) {
(New-Object -ComObject SAPI.SpVoice).Speak("Batteria scarica, collega il caricabatterie")
[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime]
$template = [Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent([Windows.UI.Notifications.ToastTemplateType]::ToastText01)
$toast = $template.GetElementsByTagName("text")[0]
$toast.AppendChild($template.CreateTextNode("Battery below 30%! Please plug in your charger."))
$notifier = [Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("Battery Alert")
$notifier.Show([Windows.UI.Notifications.ToastNotification]::new($template))
}
La prima legge della dietetica sembra essere: se il sapore è buono, a te fa male.
Avatar utente
crazy.cat
Amministratore
Amministratore
Messaggi: 13585
Iscritto il: mer mag 01, 2013 4:02 pm
Località: Noventa Padovana
Has thanked: 8 times
Been thanked: 111 times

Re: Segnale acustico batteria scarica

Messaggio da crazy.cat »

Sono riuscito a provarlo, ora direi che, grazie a chatgpt :) , funziona bene:
Versione powershell da mettere in esecuzione tramite le operazioni pianificate:
Add-Type -AssemblyName System.Windows.Forms

while ($true) {
# Recupera i dati della batteria
$Battery = Get-CimInstance -ClassName Win32_Battery
$Level = $Battery.EstimatedChargeRemaining
$Status = $Battery.BatteryStatus # 2 significa "In carica"

# Se la batteria è < 5% e NON è collegato il caricabatterie
if ($Level -lt 5 -and $Status -ne 2) {

# Crea l'oggetto voce
$Voice = New-Object -ComObject SAPI.SpVoice

# Il flag 1 (SVSFlagsAsync) fa parlare la voce in background
# permettendo allo script di mostrare subito la notifica
$Voice.Speak("Batteria scarica, collega il caricabatterie", 1)

# Mostra la notifica Toast (Windows 10/11)
[Windows.UI.Notifications.ToastNotificationManager, Windows.UI.Notifications, ContentType = WindowsRuntime] > $null
$template = [Windows.UI.Notifications.ToastNotificationManager]::GetTemplateContent([Windows.UI.Notifications.ToastTemplateType]::ToastText01)
$template.GetElementsByTagName("text").AppendChild($template.CreateTextNode("Batteria al $Level%! Collega il caricabatterie.")) > $null
[Windows.UI.Notifications.ToastNotificationManager]::CreateToastNotifier("Battery Alert").Show([Windows.UI.Notifications.ToastNotification]::new($template))

# Attende 30 secondi prima di ripetere
Start-Sleep -Seconds 30
}
else {
# Se è in carica o sopra il 5%, controlla ogni 60 secondi
Start-Sleep -Seconds 60
}
}
Versione vbs da mettere in esecuzione automatica
Set objVoice = CreateObject("SAPI.SpVoice")
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
Set objShell = CreateObject("WScript.Shell")

Do
Set colItems = objWMIService.ExecQuery("Select * from Win32_Battery")

For Each objItem in colItems
intLevel = objItem.EstimatedChargeRemaining
intStatus = objItem.BatteryStatus

If intLevel < 5 And intStatus <> 2 Then

' Il numero 1 alla fine permette l'esecuzione ASINCRONA (voce e testo insieme)
objVoice.Speak "Batteria scarica, collega il caricabatterie", 1

' Mostra il messaggio a video contemporaneamente alla voce
' Il numero 5 indica che il messaggio si chiude da solo dopo 5 secondi
objShell.Popup "Attenzione: Batteria al " & intLevel & "%. Collega il caricabatterie!", 5, "Allarme Batteria", 48

' Aspetta 30 secondi prima del prossimo ciclo
WScript.Sleep 30000
Else
' Controllo ogni 60 secondi se la batteria è carica o collegata
WScript.Sleep 60000
End If
Next
Loop
Il 5 indica la percentuale della batteria sotto cui scatta l'avviso
If intLevel < 5 And intStatus <> 2 Then
Qui hai l'avviso che puoi modificare e 5 è la durata a video dello stesso.
objShell.Popup "Attenzione: Batteria al " & intLevel & "%. Collega il caricabatterie!", 5, "Allarme Batteria", 48

Provalo e fammi sapere se funziona. :grazie
La prima legge della dietetica sembra essere: se il sapore è buono, a te fa male.
Avatar utente
gusberti
Livello: CD-ROM (4/15)
Livello: CD-ROM (4/15)
Messaggi: 99
Iscritto il: dom mar 08, 2015 10:38 am
Has thanked: 1 time

Re: Segnale acustico batteria scarica

Messaggio da gusberti »

Ho risolto usando il sistema "Configure the Built-In Battery Alert Feature"
Grazie cazy.cat!