जब मेरी बैटरी कम होती है तो मैं एक कस्टम साउंड कैसे चला सकता हूं?


13

मैं चाहता हूं कि मेरा कंप्यूटर एक कस्टम साउंड फ़ाइल चलाए जब मेरी बैटरी कम हो (10% कहो)। मैं यह कैसे कर सकता हूँ? धन्यवाद

जवाबों:


7

मैं बस जवाब देना चाहता था क्योंकि मैंने अपनी crontab -eनौकरी को कॉन्फ़िगर करने के लिए इस पृष्ठ पर सलाह का उपयोग किया था ।

मैं ल्यूबुन्टू (भरोसेमंद) चल रहा हूं और ऊपर ने मेरे लिए काम नहीं किया, लेकिन थोड़ा ट्विकिंग के साथ यह किया। मेरा (इन) अनुभव का स्तर यह है कि मैं बुनियादी लिपियों और आदेशों को पढ़ने में अपेक्षाकृत सक्षम हूं, लेकिन लिनक्स डिस्टो में खरोंच से उन्हें लिखने में कम सक्षम हूं। मैं इस बात का उल्लेख करता हूं कि क्योंकि अगर मैं एक साथ काम करने वाले बैटरी अलार्म को एक साथ ले जा सकता हूं, तो आप इसे पढ़ सकते हैं।

एसओ .... स्क्रिप्ट और एक बुनियादी स्पष्टीकरण ....

Glutanimate और Scott Goodgame (धन्यवाद दोस्तों!) द्वारा ऊपर दिए गए पदों के अनुसार, मैंने मूल रूप से निम्नलिखित कार्य किए हैं:

Mpg123 प्राप्त करने और ऑडियो चलाने में सक्षम होने के लिए:

sudo apt-get install acpi mpg123

कमांड लिखने के लिए खोलने के लिए फ़ाइल:

crontab -e

फ़ाइल के अंत में प्रवेश करने की आज्ञा:

*/1 * * * * if [ `acpi -b | awk ' { print ( $(NF-2)-0)}'`  -lt "15" ] ; then mpg123 /home/andy/Alarm.mp3 ; fi

उक्त की व्याख्या

शुरुआत में तारांकन

पांच तारांकन कमांड को चलाने के लिए आवृत्ति का प्रतिनिधित्व करते हैं।

  • पहला सितारा = मिनट: 0-59
  • दूसरा तारा = घंटे: 0-23
  • तीसरा तारा = माह का दिन: 0 - 31
  • चौथा तारा = महीना: 0 - 12
  • पांचवां सितारा = सप्ताह का दिन: 0 - 6 (रविवार का मतलब है)

*/1 * * * *

इसका मतलब है 'इसे हर मिनट चलाएं'।

यदि / तो / FI:

IF [ stuff inside these brackets ] ; THEN do something ; FI

आप में से अधिकांश, मैं कल्पना करता हूं, IF / THEN के बयानों से बहुत परिचित हैं। एफआई ​​अंत में IF स्टेटमेंट को समाप्त करता है

ऑडियो बजाना:

mpg123 /home/andy/Alarm.mp3

यह बस मेरे घर निर्देशिका में स्थित mpg123एक फ़ाइल खेलने के लिए उपयोग करता है ।Alarm.mp3/home/andy/

उत्पादन बैटरी जानकारी:

acpi -b

यह बस बैटरी की स्थिति का उत्पादन करता है। मेरे लैपटॉप पर यह परिणाम देता है जैसे:

Battery 0: Discharging, 74%, 02:35:18 remaining

कमांड को जगाने के लिए पाइप

 | awk ' { print ( $(NF-2)-0)}'`  -lt "15"

ठीक है, इसलिए हम ऊपर दिए गए बैटरी स्टेटस के आउटपुट को पाइप कर रहे हैं और दूसरे-से-एंड-एंड वैल्यू (NF-2) को प्रिंट करते हैं, जो उपरोक्त उदाहरण में '74% 'है। हालांकि, हमें 'प्रतिशत' -0 निकालने की जरूरत है । हम वर्तमान मूल्य की तुलना मूल्य 15- प्रकार "15" से करना चाहते हैं । तो इसे समतल अंग्रेजी में रखने के लिए,

यदि बैटरी का मान कम है तो 15% तक ऑडियो फाइल चलाएं

मैं सराहना करता हूं कि मैंने इसे कुछ हद तक कम कर दिया है और शायद मेरे स्पष्टीकरण में सुधार किया जा सकता है, लेकिन उम्मीद है कि यह किसी और को समझने में मदद करेगा कि बैटरी के लिए अलार्म कैसे जोड़ा जाए और अचानक अपने लैपटॉप को बंद करने से बचा जाए!

सौभाग्य!


संपादित करें

ठीक है ... तो यह पता चला है कि जब मेरा लैपटॉप चार्ज हो रहा है, का आउटपुट

acpi -b

है:

Battery 0: Charging, 35%, 01:04:08 until charged

बैटरी पर है

Battery 0: Discharging, 36%, 01:22:36 remaining

इसलिए प्रारंभ में उल्लिखित पैरामीटर का उपयोग करना

print ( $(NF-2)-0)

आउटपुट अलग परिणाम देता है, क्योंकि याद रखें, NF- मूल्य बिट निर्दिष्ट करता है कि आउटपुट के अंत से कितने आइटम पीछे की ओर प्रदर्शित होते हैं, इसलिए बैटरी पर आउटपुट के साथ

Battery 0: Discharging, 36%, 01:22:36 remaining

$(NF-2) '36% 'के आउटपुट के लिए, लैपटॉप के चार्ज के साथ,

Battery 0: Charging, 35%, 01:04:08 until charged

$(NF-2) आउटपुट '00: 50: 12 ', यानी चार्ज किए जाने तक शेष समय की मात्रा।

-0बाद $(NF-2)minuses मूल्य से शून्य है, इसलिए जब मूल्य है एक प्रतिशत -036 '' में '36% की तरह कुछ से बदल जाता है। जब आउटपुट मान को गैर संख्यात्मक के रूप में माना जाता है, जैसे कि '01: 04: 08 'का समय आउटपुट उपरोक्त के रूप में, मान -0रिटर्न' 0 'है। तो आप मेरा मुद्दा देख सकते हैं - जब मेरा लैपटॉप चार्ज पर होता है, तो आउटपुट वैल्यू हमेशा '0' होती है। चूंकि मैं एक अलार्म खेलना चाहता हूं जब आउटपुट मूल्य 15 से कम होता है, तो यह एक बैटरी अलार्म का अनुवाद करता है जो चार्ज होने पर हर एक मिनट में बंद हो जाता है!

मैं awkकमांड के आउटपुट पर थोड़ा अधिक पढ़ता हूं और यह पता चलता है कि मुझे इसे अंत से दूसरा मूल्य पढ़ने की आवश्यकता नहीं थी, मैं आउटपुट की शुरुआत से शुरू कर सकता हूं और आगे छोड़ सकता हूं। यह बहुत बेहतर है क्योंकि मेरी बैटरी की स्थिति समान है चाहे वह चार्ज पर हो या बैटरी पर मापदंडों की संख्या के संदर्भ में, यानी शुरुआत से चौथा पैरामीटर हमेशा प्रतिशत में चार्ज का मूल्य है।

SO ... इसे चौथा मान पढ़ने के लिए, कमांड से बदलता है

awk ' { print ($(NF-2)-0)}'

सेवा

awk ' { print ($4)-0}'

या इसकी पूर्ण महिमा में:

*/1 * * * * if [ `acpi -b | awk ' { print ($4)-0}'`  -lt "15" ] ; then mpg123 /home/andy/Alarm.mp3 ; fi

फिर से मुझे उम्मीद है कि किसी की मदद करता है! गुड लक और पढ़ने के लिए धन्यवाद!


बोनस संस्करण

ठीक है, इसलिए थोड़ा अतिरिक्त प्रहार किया गया और मैंने यह भी काम किया कि कैसे अलार्म बजने से पहले वॉल्यूम को 100% पर सेट किया जाए और अनम्यूट किया जाए - क्योंकि चलो इसका सामना करते हैं, अगर आप इसे नहीं सुन सकते हैं तो बैटरी अलार्म का क्या मतलब है? ' मात्रा कम है या इसे म्यूट कर दिया है ?!

वैसे भी, आपके लिए आवश्यक कमांड है:

*/1 * * * * if [ `acpi -b | awk ' { print ($4)-0}'`  -lt "15" ] ; then pactl set-sink-volume 0 100% && pactl set-sink-mute 0 0 && mpg123 /home/andy/Alarm.mp3 ; fi

जैसा कि आप देख सकते हैं, मैंने जो कुछ किया है वह कमांड स्ट्रिंग डाला गया है

pactl set-sink-volume 0 100% && pactl set-sink-mute 0 0 &&

( &&सिर्फ एक साथ कई कमांड बाँधते हैं)

फिर से, सभी को शुभकामनाएँ!

पिछले संस्करण

ठीक है, तो ... एक अंतिम (उम्मीद है!) संपादित करें ... जाहिरा तौर पर, क्रोन कार्यों को चलाने पर प्रतिशत चिह्न एक विशेष संकेत है। इसलिए, आपको \प्रत्येक के सामने एक बैकस्लैश ( ) लगाकर प्रतिशत चिह्न को 'बचाना' होगा %ताकि यह शेल द्वारा व्याख्यायित (गलत) न हो।

इसलिए मूल रूप से प्रतिस्थापित करें

100%

साथ में

100\%

इसलिए, आपको वास्तव में आवश्यक कमांड है:

*/1 * * * * if [ `acpi -b | awk ' { print ($4)-0}'`  -lt "15" ] ; then pactl set-sink-volume 0 100\% && pactl set-sink-mute 0 0 && mpg123 /home/andy/Alarm.mp3 ; fi

काश आशा है कि आप के लिए यह मेरे लिए है के रूप में यह तरह !! (अंततः!)


यह एक महान व्याख्या है! दुर्भाग्य से, यह भी चार्ज होने पर हर मिनट एक ध्वनि खेलता है।
OpnSrcFan

5

आप एक क्रॉन जॉब सेट कर सकते हैं जो प्रत्येक 5/10 मिनट के बाद बैटरी की स्थिति की जांच करेगा और फिर बैटरी प्रतिशत के आधार पर यह कुछ ध्वनि बजाएगा।

ध्वनि का उपयोग करने के लिए आप उपयोग कर सकते हैं

mpg123 filename.mp3

इसे स्थापित करने के लिए

sudo apt-get install mpg123

कमांड लाइन से बैटरी की स्थिति प्राप्त करने के लिए आप इस कमांड का उपयोग कर सकते हैं

upower -i /org/freedesktop/UPower/devices/battery_BAT0

का उपयोग कर grepआप सटीक जानकारी इस प्रकार निकाल सकते हैं

upower -i /org/freedesktop/UPower/devices/battery_BAT0| grep -E "state|to\ full|percentage"

अब आप इन सभी चीजों को एक शेल स्क्रिप्ट में डाल सकते हैं (और यह भी ifजांचने के लिए कि बैटरी की स्थिति 10% से कम है या नहीं) और क्रॉन जॉब को इस शेल स्क्रिप्ट का रास्ता दें।

इसलिए हर 5 मिनट के बाद (आप इस अंतराल को बदल सकते हैं) आपकी बैटरी की स्थिति की जाँच की जाएगी और यदि बैटरी 10% से कम है, तो आपकी प्रदान की गई ध्वनि फ़ाइल खेली जाएगी!

उम्मीद है की यह मदद करेगा!


3
यह सही है, केवल शांत लोग mpg123 का उपयोग करते हैं :)
स्कॉट

3

ऐसा करने का एक आसान तरीका यह है कि अपने कॉन्टैब में एक साधारण जांच जोड़ें (क्रॉन पृष्ठभूमि में एक नियमित, उपयोगकर्ता-परिभाषित आधार पर चीजों को चलाने के लिए एक प्रणाली है।)

सबसे पहले आपको बैटरी स्टेट पढ़ने में सक्षम होने के लिए एक कमांड लाइन एमपी 3 प्लेयर और एसपीआई स्थापित करने की आवश्यकता है।

एक टर्मिनल से संकुल को स्थापित करने के लिए निम्नलिखित चलाएँ।

sudo apt-get install acpi mpg123

अगला, जबकि टर्मिनल में अभी भी, crontab -eफ़ाइल के अंत में टाइप करें और दर्ज करें। बस उपयोगकर्ता को अपने उपयोगकर्ता नाम और .mp3 को अपने होम निर्देशिका में अपने फ़ाइल नाम में बदल दें।

*5 * * * * if [ `acpi |awk '{print substr($NF, 0, length($NF)-1)}'`  -lt "10" ] ; then mpg123 /home/user/SuperCoolSound.mp3   ;fi

कंट्रोल-ओ (अक्षर) को हिट करें और सेव करने के लिए एंटर करें। कंट्रोल-एक्स से बाहर निकलने के लिए हिट करें

अतिरिक्त सामान जिसे आप पढ़ना चाहते हैं ...

उबंटू क्रोनहोवो

उबंटू गाइड


यहाँ काम नहीं किया: if ~ अगर [ acpi |awk '{print substr($NF, 0, length($NF)-1)}' -t "१०"]; फिर aplay /home/felipelalli/Music/siren.wav; फाई [: पूर्णांक अभिव्यक्ति अपेक्षित: expression ~ एकपी बैटरी 0: निर्वहन, 9%, 00:17:56 शेष
फेलिप

2

वास्तव में मैंने एंडी पाइन के उत्तर का उपयोग किया लेकिन यह मेरे लिए काम नहीं किया। क्रोन ने कोड को निष्पादित किया, लेकिन यह ध्वनि नहीं चला। अंत में मुझे इसका हल मिल गया है और इसे यहाँ साझा कर रहा हूँ:

चरण 1: mpg3 स्थापित करें

sudo apt-get install acpi mpg123

चरण 2: निम्नलिखित कमांड को इसमें सहेजें~/bin/battery_alert

#!/bin/bash
PATH=/opt/someApp/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
if [ `acpi -b | awk ' { print ($3)}'`  == "Discharging," ] ; then
    # Discharging
    # Monitor for low battery
    if [ `acpi -b | awk ' { print ($4)-0}'`  -le "15" ] ; then
        pactl set-sink-volume 0 75\% && pactl set-sink-mute 0 0 && mpg123 /home/user/battery_low.mp3 ;
    fi
else
    # Charging
    if [ `acpi -b | awk ' { print ($4)-0}'`  -eq "100" ] ; then
        # Fully charged
        pactl set-sink-volume 0 75\% && pactl set-sink-mute 0 0 && mpg123 /home/user/battery_full.mp3 ;
    fi
fi

यदि लैपटॉप डिस्चार्ज हो रहा है और चार्ज 15% से कम या बराबर है तो यह स्क्रिप्ट बैटरी_लो. एमपी 3 बजाती है। (यदि एसी पावर जुड़ा हुआ है, तो यह आपको सचेत नहीं करेगा)। यदि यह शुल्क 100% है, तो यह कोड आपको अलर्ट भी करता है। यदि आप पूरी तरह से चार्ज किए गए राज्य के लिए अलर्ट नहीं चाहते हैं, तो इस कोड से दूसरा भाग हटा दें।

चरण 3: निम्नलिखित कमांड का उपयोग करके फ़ाइल को निष्पादन योग्य बनाएं।

chmod +x ~/bin/battery_alert

चरण 4:crontrab -e कमांड द्वारा फाइल ओपन के अंत में निम्नलिखित कमांड जोड़कर क्रोन का उपयोग करके इस फ़ाइल को निष्पादित करें ।

*/5 * * * * /home/user/bin/battery_alert

(इस कमांड के बाद एक खाली लाइन रखना न भूलें)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.