FHEM - Hardware > Server - Mac

MacBook Akku Ladeanzeige

<< < (2/3) > >>

Zrrronggg!:
Stimmt.

Ich gehe allerdings davon aus, dass Apple selber schon "nur" zu 80% lädt (das entspricht dann der Anzeige "100%" unter OS X) denn sonst wären die Standzeiten gar nicht zu erreichen.  Mein MacBook Pro ist z.b. 46 Monate alt, hat 490 Zyklen auf dem Buckel und noch 81% Restkapazität.

Früher hättest du einen fast 4 Jahre alten LiIo Akku der täglichen in Gebrauch ist nur noch als Briefbeschwerer oder Brandbeschleuniger verwenden können.

fhainz:

--- Zitat von: Zrrronggg! am 20 November 2014, 14:29:42 ---Ich gehe allerdings davon aus, dass Apple selber schon "nur" zu 80% lädt
--- Ende Zitat ---
Kann schon sein, das mit 40/80 kenn ich von hier: http://www.ifun.de/macbook-akku-richtig-laden-53046/

--- Zitat von: Zrrronggg! am 20 November 2014, 14:29:42 ---Früher hättest du einen fast 4 Jahre alten LiIo Akku der täglichen in Gebrauch ist nur noch als Briefbeschwerer oder Brandbeschleuniger verwenden können.

--- Ende Zitat ---
Stimmt :D

Mein MacBook Air ist mittlerweile 37 Monate alt, der Akku hat 859 Ladezyklen und immer noch 74% Kapazität. 

Andy89:

--- Zitat von: fhainz am 18 November 2014, 21:50:56 ---Funktioniert mittlerweile. Ich stell morgen ein Anleitung hier rein.

Grüße

--- Ende Zitat ---

Servus,
ich geh mal davon aus, dass es bei dir läuft, deswegen wollte ich mal nachfragen, ob es eine kleine Anleitung geben wird?

Beste Grüße
Andy

fhainz:
Hallo!

Sry, die Mailbenachrichtung ist irgendwo untergegangen.

Ich hab das derzeit relativ kompliziert gelöst, aber es funktioniert.

Als erstes legst du eine Datei batLog.sh mit diesem Inhalt an.

--- Code: ---akku=$(/usr/sbin/ioreg -l | grep -i capacity | tr '\n' ' | ' | awk '{printf("%.0f", $10/$5 * 100)}')
cCapacity=$(/usr/sbin/ioreg -n AppleSmartBattery -r | awk 'BEGIN { ORS = ":" } /"CurrentCapacity"/{ print $3}')
mCapacity=$(/usr/sbin/ioreg -n AppleSmartBattery -r | awk 'BEGIN { ORS = ":" } /MaxCapacity/{ print $3}')
dCapacity=$(/usr/sbin/ioreg -n AppleSmartBattery -r | awk 'BEGIN { ORS = ":" } /DesignCapacity/{ print $3}')
temp=$(/usr/sbin/ioreg -n AppleSmartBattery -r | awk 'BEGIN { ORS = ":" } /Temperature/{ print $3/100}')
cycle=$(/usr/sbin/ioreg -n AppleSmartBattery -r | awk 'BEGIN { ORS = ":" } /CycleCount/{ print $3}')
charging=$(/usr/sbin/ioreg -n AppleSmartBattery -r | awk 'BEGIN { ORS = ":" } /IsCharging/{ print $3}')
fullyCharged=$(/usr/sbin/ioreg -n AppleSmartBattery -r | awk 'BEGIN { ORS = ":" } /FullyCharged/{ print $3}')

curl -k "http://IP:PORT/fhem?cmd=set%20macbookairTrigger%20$akku%20$charging%20$fullyCharged%20$cycle%20$cCapacity%20$mCapacity%20$dCapacity%20$temp"
--- Ende Code ---

IP und PORT musst du ersetzen.

In FHEM legst du dir 2 dummys und ein notify an.

--- Code: ---define macbookair dummy
attr macbookair event-on-change-reading .*
attr macbookair stateFormat akku %

define macbookairTrigger dummy

define n_macbookairTrigger notify macbookairTrigger.* { macbookair($EVENT);; }
--- Ende Code ---

In deine 99_myUtils.pm kommt:

--- Code: ---sub macbookair($){
  my ($event) = @_;
  my $device  = "macbookair";
  my $hash    = $main::defs{$device};
  my ($akku, $charging, $fullyCharged, $cycle, $cCapacity, $mCapacity, $dCapacity, $capacity, $temp );
  my @split;
 
  my @a = split( / /, $event );
 
  $akku         = $a[0];
  @split = split(/:/, $a[1]);
  $charging     = $split[0];
  @split = split(/:/, $a[2]);
  $fullyCharged = $split[0];
  @split = split(/:/, $a[3]);
  $cycle        = $split[0];
  @split = split(/:/, $a[4]);
  $cCapacity    = $split[0];
  @split = split(/:/, $a[5]);
  $mCapacity    = $split[0];
  @split = split(/:/, $a[6]);
  $dCapacity    = $split[0];
  @split = split(/:/, $a[7]);
  $temp         = $split[0];
  $temp =~ s/,/./g;
 
  $capacity = sprintf("%i", $mCapacity * 100 / $dCapacity);
 
  readingsBeginUpdate($hash);
   readingsBulkUpdate($hash, "akku", $akku );
   readingsBulkUpdate($hash, "charging", $charging );
   readingsBulkUpdate($hash, "fullyCharged", $fullyCharged );
   readingsBulkUpdate($hash, "cycle", $cycle );
   readingsBulkUpdate($hash, "currentCapacity", $cCapacity );
   readingsBulkUpdate($hash, "maxCapacity", $mCapacity );
   readingsBulkUpdate($hash, "designCapacity", $dCapacity );
   readingsBulkUpdate($hash, "capacity", $capacity );
   readingsBulkUpdate($hash, "temp", $temp );
  readingsEndUpdate($hash, 1);

}
--- Ende Code ---

Jetzt muss nur noch ein CronJob eingerichtet werden, damit die batLog.sh regelmäßig aufgerufen wird. Dazu Terminal aufrufen und

--- Code: ---crontab -e
--- Ende Code ---
eingeben und bestätigen.

Es öffnet sich eine neue Datei.
- Mit i kommt man in den insert-mode.
- Mit ESC wird dieser wieder verlassen.
- Mit :quit wird die Datei wieder geschlossen.

In diese Datei kommt zB

--- Code: ---* * * * * sh /Pfad/zur/batLog.sh
--- Ende Code ---

Dieser Befehl ruft die batLog.sh jede Minute auf.
Anschließend sollten in dem macbookair dummy die Readings abgebildet sein.


Grüße

Andy89:
Servus,
also erstmal Danke!
Es funktioniert zwar, aber ich hätte dennoch 2 Fragen:
1.) als Port habe ich jetzt den 8083 genommen. Es kommen Daten an und werden angezeigt. Ist das aber der richtige Port?

2.) Da ich auf dem MacBook noch nie ein Shell Skript ausgeführt habe, habe ich dazu nun eine Frage. Wird das Skript automatisch im Hintergrund ausgeführt, wenn sich der Akku ändert? Oder muss ich dies nun durch ein anderes Skript(oder ähnliches) alle 5-10 Minuten starten lassen? Beim LogIn muss ich das auch noch irgendwie starten lassen^^

Beste Grüße und schönes Weekend!
Andy

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln