windows android

Windows 10 PC benachrichtigen, wenn Android-Smartphone-Akku schwach ist

Ich stelle ein Programm vor, das einen Windows 10 PC benachrichtigt, wenn der Android-Smartphone-Akku schwach ist. Es sendet eine Audiobenachrichtigung auf dem PC, wenn der Android-Akku 15% erreicht...

Shou Arisaka
5 Min. Lesezeit
13. Okt. 2025

Ich stelle ein Programm vor, das einen Windows 10 PC benachrichtigt, wenn der Android-Smartphone-Akku schwach ist.

Ich habe dies geschrieben, weil es so aussah, als könnte es Nachfrage geben.

Es sendet eine Audiobenachrichtigung auf dem PC, wenn der Android-Akku 15% erreicht.

Gesamtablauf

Jede einzelne Aufgabe ist nicht schwierig, aber wie üblich werden viele Technologien verwendet, sodass es je nach Situation Zeit in Anspruch nehmen kann, aber wenn Sie dies können, können Sie es auf andere Android-Datenaustausche anwenden, also versuchen Sie es bitte.

  1. Wenn der Android-Akku schwach wird, eine Webanfrage mit IFTTT stellen
  2. Mit einem Ubuntu Sinatra-Server empfangen und einen beliebigen Befehl in eine Datei schreiben
  3. Den Dateitext als Befehl ausführen. (Popup-Benachrichtigung; tts; etc)
## Vorbereitung
  • Holen Sie sich einen WiFi-Router, der Portweiterleitung kann.
Durch Portweiterleitung fordern Sie von einer öffentlichen URL mit einer globalen IP an einen lokal laufenden Server an, also kaufen Sie einen, wenn Sie keinen solchen Router haben. Glücklicherweise ist klar, welchen Router man kaufen sollte.

Der beste WiFi-Router, abgeleitet vom Testen von 4 Routern nach optischem Leitungsbau

WSL

Lassen Sie uns eine Ruby-Umgebung erstellen

Wir werden Sinatra mit Ruby ausführen. Es kann in 3 Minuten erledigt werden, also richten Sie die Umgebung schnell ein.

sudo apt update ; sudo apt install build-essential patch zlib1g-dev liblzma-dev ruby{,-dev} -y ; sudo gem install bundler

mkdir -p /mnt/c/pg/ruby_dev && cd $_

sudo bundle init
vim Gemfile
sudo bundle install

vim Gemfile

# add
gem "pry"
gem "sinatra"

Verfahren

  • Portweiterleitung auf Ihrem WiFi-Router einrichten
![Image](/images/blog/sharex_screenshot_056219d2-d4f2-4e9d-89a5-0c6ec5a9_d06f31e9.png)
  • Ein Applet in IFTTT erstellen
[Make an Applet - IFTTT](https://ifttt.com/create)
this ... android battely
that ... webhooks

title(Beispiel) ... If Battery drops below 15%, then get request to server
URL(Beispiel) ... http://220.247.111.111:8005/android-battely
method ... get
type ... json
body ... (leer)
  • IFTTT auf der Android-Seite einrichten
Wenn Sie es noch nicht haben, installieren Sie die IFTTT-App auf Android und aktivieren Sie das Applet.

IFTTT - Apps on Google Play

  • Einen Windows-Ordner mounten, um Dateisynchronisation zu ermöglichen
sudo mount -t  cifs //192.168.0.167/_sync_ ~/share -o user=user,pass=pass,dir_mode=0777,file_mode=0777

Wir werden später implementieren: Text zum Ausführen als Befehle in command.txt im Share-Verzeichnis speichern und ihn regelmäßig mit WSL lesen und ausführen. Dies liegt daran, dass selbst wenn Sie Befehle direkt auf dem Server ausführen, soundbezogene Prozesse nicht funktionieren, weil der Prozess ein Unterprozess(?) ist, sodass Sie eine Datei durchlaufen müssen.

  • Sinatra ausführen
dev.rb ```rb require "sinatra" require "open3" require 'json' require 'pry'

Encoding.default_external = ‘UTF-8’

get “/android-battely” do

# binding.pry

stdout, stderr, statusCode = Open3.capture3( %( bash -c " host #{request.ip} | awk '{print $5}' | awk '/amazonaws.com|ifttt.com/' || echo '' " ) )
if stdout.to_s.strip.empty? then redirect to('/404') end

# puts "ok"
puts @body = request.body.read

    stdout, stderr, statusCode = Open3.capture3( %( bash -ic "printf 'tts \\"android battery low\\"' > /home/yuis/share/command.txt || echo '' " ) )

puts stdout, stderr, statusCode

end

```bash
sudo bundle exec ruby dev.rb -o 0.0.0.0

Image

Einfache Erklärung …

stdout, stderr, statusCode = Open3.capture3( %( bash -c " host #{request.ip} | awk '{print $5}' | awk '/amazonaws.com|ifttt.com/' || echo '' " ) )
if stdout.to_s.strip.empty? then redirect to('/404') end

Wenn Sie einen Server veröffentlichen, erhalten Sie ziemlich viel bösartigen Zugriff von Hackern. Wenn Sie dies ignorieren, könnte im schlimmsten Fall Ihr PC gehackt oder kaputt gehen, oder in diesem Beispiel erhalten Sie zumindest den ganzen Tag Benachrichtigungen.

Um solche Dinge zu filtern, ist es mit Sinatra lästig, aber es scheint gut zu sein, auf eine 404-Seite umzuleiten. Wir blockieren alle Zugriffe, die nicht von IFTTT kommen. Da IFTTT AWS ist, erlauben wir nur das.

Selbst damit ist AWS ziemlich weitreichend, sodass Sie möglicherweise immer noch seltsamen Zugriff erhalten. In diesem Fall können Sie auf der IFTTT-Seite Parameter zur GET-Anfrage als Token hinzufügen und auf der Serverseite zur Sicherheit authentifizieren.

printf 'tts \\"android battery low\\"'

Sie müssen in zwei Stufen escapen, Ruby und Bash, also verwenden Sie zwei Backslashes.

  • Definieren Sie die Funktion, die auf der WSL-Seite verwendet werden soll
Diesmal verwende ich tts. Dies liest Text laut über PowerShell vor, indem Sie tts text tun.

TTS (text-to-speech) mit PowerShell

Führen Sie Folgendes in bash aus oder fügen Sie es in .bashrc ein.

tts ()
{
    /mnt/c/WINDOWS/System32/WindowsPowerShell/v1.0/powershell.exe -  <<EOF
tts "${1}"
EOF

}
  • Führen Sie ein Skript auf der WSL-Seite aus, das regelmäßig die Datei mit Befehlstext überwacht
Führen Sie das folgende Skript in ConEmu oder ähnlichem aus und lassen Sie es laufen. ```bash while true; do

echo -ne ”$(isodate)\tNothing updated on the clipboard.\033[0K\r”

[[ -s “$SHAREDDIR/command.txt” ]] && { eval ”$(cat “$SHAREDDIR/command.txt”)” ; > “$SHAREDDIR/command.txt” ; printf “A command excuted.” ; }

sleep 2s done

![Image](/images/blog/sharex_screenshot_7ad36b6d-d722-46e0-9227-6ad333b3_06541327.png)
<ul>
 	<li>Testen Sie, ob es tatsächlich funktioniert</li>
</ul>
Bitte kommentieren Sie, wenn Sie Probleme haben.

Diesen Artikel teilen

Shou Arisaka 13. Okt. 2025

🔗 Links kopieren