• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Email bei Betrieb über USV/Steckdose

Tech-N1ck

Granny Smith
Registriert
24.02.15
Beiträge
13
Hallo,

Ich würde gern immer eine email bekommen sobald der Mac Mini auf USV umspringt und dann wieder eine wenn er zurück auf Steckdose springt...am besten immer nur eine Email.

Habe mit folgendem Script angefangen, funktioniert auch nur bekomme ich dann natürlich jede Minute eine Email wenn der Mini auf USV läuft...und wenn die Email nicht mehr kommt weiß ich das er wieder normal Strom aus der Steckdose bekommt. Kann man das irgendwie ändern das er jeweils nur eine Email schickt?

Code:
repeat
    set PowerSource to (do shell script "pmset -g ps")
    set recipientName to "Power Status"
    set recipientAddress to "[email protected]"
    set theSubject to "USV Online"
    set theContent to "USV Online"
    delay 1
    if PowerSource does not contain "AC Power" then
        try
            tell application "Mail"
                set theMessage to make new outgoing message with properties {subject:theSubject, content:theContent, visible:true}
                tell theMessage
                    make new to recipient with properties {name:recipientName, address:recipientAddress}
                    send
                end tell
            end tell
        end try
    end if
    delay 60
end repeat

Der Befehl "pmset -g ps" sagt entweder AC Power (Steckdose) oder UPS Power (USV).
Irgendwie komme ich nicht weiter weil ich nicht weiß wie ich einstelle das immer nur die erste Abfrage (nach einer Veränderung) zu einer Email führen soll und nicht jede Abfrage eine Email auslöst...

Danke schonmal für alle Tipps!!
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Hallo,

hier mal ein Beispiel-Skript, welches verdeutlicht, wie man das angehen könnte:

Code:
property x : ""

repeat until -1 = 1
set dd to display dialog "!" buttons {"blau", "grün"} default button 2
if button returned of dd is "blau" then
    if x is "2" or x is "" then
        display dialog "blau"
        set x to "1"
    end if
else
    if x is "1" or x is "" then
        display dialog "grün"
        set x to "2"
    end if
end if
end repeat
-
(geht bestimmt auch einfacher)

Gruß
 
Zuletzt bearbeitet:

Tech-N1ck

Granny Smith
Registriert
24.02.15
Beiträge
13
Hi,

Danke schonmal für den Tipp! Aber bei der Lösung habe ich ja das Problem das ich dann jede Minute eine Mail bekomme...oder ich verstehe den CODE falsch...
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Ich habe meinen Code noch eine repeat-Schleife hinzugefügt.
Kopieren, einfügen, ausführen...

Im Skript werden Werte in einer property gespeichert und diese vor dem Ausführen einer Aktion abgefragt.

Gruß
 

Tech-N1ck

Granny Smith
Registriert
24.02.15
Beiträge
13
OK ich steh auf dem Schlauch... ich hab jetzt:

Code:
property x : ""

    set PowerSource to (do shell script "pmset -g ps")
    set recipientName to "Power Status"
    set recipientAddress to "[email protected]"
    if PowerSource contain "AC Power" then
    set theSubject to "AC Power"
    set theContent to "AC Power"
    tell application "Mail"
    set theMessage to make new outgoing message with properties {subject:theSubject, content:theContent, visible:true}
    tell theMessage
    make new to recipient with properties {name:recipientName, address:recipientAddress}
    send
    end tell
    end tell
    set x to "1"
    end if
    else
    if PowerSource contain "UPS Power" then
    set theSubject to "UPS Power"
    set theContent to "UPS Power"
    tell application "Mail"
    set theMessage to make new outgoing message with properties {subject:theSubject, content:theContent, visible:true}
    tell theMessage
    make new to recipient with properties {name:recipientName, address:recipientAddress}
    send
    end tell
    end tell
    set x to "2"
    end if

muss ich jetzt nicht irgendwie einbauen
Code:
if x is "1" do nothing
sonst bekomme ich ja immer wieder eine Email wenn der PowerSource auf AC Power ist
Ich will ja Nur eine Email bekommen wenn sich der Wert verändert...

Sorry falls ich auf dem Falschen Weg bin aber ich bin noch auf der Arbeit und kann es noch nicht testen da wir hier kein Mac haben :( vielleicht habe ich auch nur was übersehen...

Danke für deine Hilfe!!
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Hallo,

der Wille ist da :cool: !
So sollte es flutschen (habe gleich mal noch ein wenig aufgeräumt) :

Code:
property x : ""

repeat
    set PowerSource to (do shell script "pmset -g ps")

    if PowerSource contains "AC Power" then
        if x is "2" or x is "" then
            sendmail("AC Power", "AC Power")
            set x to "1"
        end if
    else
        if x is "1" or x is "" then
            sendmail("UPS Power", "UPS Power")
            set x to "2"
        end if
    end if
    delay 5
end repeat

on sendmail(theSubject, theContent)
    tell application "Mail"
        set theMessage to make new outgoing message with properties {subject:theSubject, content:theContent, visible:true}
        tell theMessage
            make new to recipient with properties {name:"Power Status", address:"[email protected]"}
            send
        end tell
    end tell
end sendmail
-
Ansonsten sollte man eventuell das Ganze statt mit einer repeat Schleife auszuführen besser in einen "on idle-Handler" packen.
Beim Sichern muss man da eine je nach OS X Version unterschiedlich benannte Option anklicken ("Nicht automatisch beenden" ... "Nach run-Handler anzeigen")
Noch besser wäre ein LaunchAgent ... aber da solltest du dich vorab erst mal schlau machen. Dann helfe ich gerne, diesen einzurichten.

Gruß
 

Tech-N1ck

Granny Smith
Registriert
24.02.15
Beiträge
13
Hi,

Das mit dem LaunchAgent hört sich gut an...werd mich da mal am WE dran versuchen ;)
Vielen Dank für die Hilfe und für das Beispiel!!!! Jetzt verstehe ich auch das "if x is "2" or x is "" then" ;)
gestern hab ich irgendwie nicht kapiert das er damit ja den letzten Status abgreift :rolleyes:...

Wie gesagt Vielen Dank!

Mir ist aber heute morgen noch was cooles eingefallen: Bei der Abfrage pmset -g ps schreibt das Terminal ja "Drawing from AC Power" und bei UPS zeigt er die Restzeit an, das habe ich nochmal mit eingebaut und werde es mal testen...