Autor Thema: MacBook Akku Ladeanzeige  (Gelesen 4726 mal)

Offline fhainz

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1261
MacBook Akku Ladeanzeige
« am: 18 November 2014, 18:22:42 »
Hallo!

Ich würde gerne über die aktuelle Akku Ladung meines MacBook Air mit FHEM die Ladesteckdose ein/ausschalten.

Mit diesem Befehl bekomme ich schon mal die Akku Ladung.
ioreg -l | grep -i capacity | tr '\n' ' | ' | awk '{printf("%.2f%%", $10/$5 * 100)}'
Hat jemand eine Idee wie ich diese Ausgabe in mein FHEM, läuft auf einem MacMini, bekomme? Eigentlich müsste ich nur die Ausgabe des Scripts in eine Variable speichern und damit die URL eines Dummys aufrufen. Das dann später in einen CronJob gepackt und fertig. So ist zumindest der Plan ;D

Jemand eine Idee wie ich das hinbekomme?

Grüße
« Letzte Änderung: 18 November 2014, 21:52:13 von fhainz »

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 18635
Antw:Shell Script ausgabe -> FHEM Server
« Antwort #1 am: 18 November 2014, 19:10:34 »
Guter Plan :)

Offline fhainz

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1261
Antw:Shell Script ausgabe -> FHEM Server
« Antwort #2 am: 18 November 2014, 21:50:56 »
Funktioniert mittlerweile. Ich stell morgen ein Anleitung hier rein.


Grüße

Edit:
Mittlerweile gibt es ja ein Mac Forum. Könnte es Moderator bitte dahin schubsen?
« Letzte Änderung: 18 November 2014, 21:53:28 von fhainz »

Offline Zrrronggg!

  • Hero Member
  • *****
  • Beiträge: 2248
    • www.fresse.de
Antw:MacBook Akku Ladeanzeige
« Antwort #3 am: 20 November 2014, 05:19:55 »
Nur: Warum? Wegen der Leerlaufleistung des Netzteils?
Für den Akku bringt das nix würde ich denken. Es sei denn du schaltest bei 70% schon ab.
FHEM auf Linkstation Mini, CUL 868 SlowRF, CUL 868 RFR, CUL 433 für IT, HMLAN-Configurator, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

Offline fhainz

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1261
Antw:MacBook Akku Ladeanzeige
« Antwort #4 am: 20 November 2014, 06:38:48 »
Für den Akku bringt das nix würde ich denken. Es sei denn du schaltest bei 70% schon ab.
Mein Plan ist es von 40-80% zu laden. Das ist angeblich sehr gut für ein Lithium Ionen Akku.

Offline Zrrronggg!

  • Hero Member
  • *****
  • Beiträge: 2248
    • www.fresse.de
Antw:MacBook Akku Ladeanzeige
« Antwort #5 am: 20 November 2014, 14:29:42 »
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.
FHEM auf Linkstation Mini, CUL 868 SlowRF, CUL 868 RFR, CUL 433 für IT, HMLAN-Configurator, ITV-100 Repeater, Sender und Aktoren von FHT, FS20, S300, HM, IT, RSL

Offline fhainz

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1261
Antw:MacBook Akku Ladeanzeige
« Antwort #6 am: 20 November 2014, 17:10:57 »
Ich gehe allerdings davon aus, dass Apple selber schon "nur" zu 80% lädt
Kann schon sein, das mit 40/80 kenn ich von hier: http://www.ifun.de/macbook-akku-richtig-laden-53046/
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.
Stimmt :D

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


Offline Andy89

  • Full Member
  • ***
  • Beiträge: 254
Antw:Shell Script ausgabe -> FHEM Server
« Antwort #7 am: 04 Januar 2015, 14:48:05 »
Funktioniert mittlerweile. Ich stell morgen ein Anleitung hier rein.

Grüße

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
FHEM 5.8 auf rPi3 (mit Homebridge); dbLog und FTUI auf DS1813+; AMAD für Fire;
HMLAN > HM-Sen-MDIR-WM55, HM-CC-RT-DN, HM-Sec-RHS,HM-TC-IT-WM-W-EU,ZEL STG RM FFK;
CUL433 > IT, Elro; LGW > PCA301,EC3000,BME280,LaCrosse;
Harmony Hub;Sonos;Onkyo AVR;RGB WLAN Controller;Netatmo;Enigma2;Withings Scale;HUE

Offline fhainz

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1261
Antw:MacBook Akku Ladeanzeige
« Antwort #8 am: 18 Januar 2015, 09:47:30 »
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.
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"

IP und PORT musst du ersetzen.

In FHEM legst du dir 2 dummys und ein notify an.
define macbookair dummy
attr macbookair event-on-change-reading .*
attr macbookair stateFormat akku %

define macbookairTrigger dummy

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

In deine 99_myUtils.pm kommt:
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);

}

Jetzt muss nur noch ein CronJob eingerichtet werden, damit die batLog.sh regelmäßig aufgerufen wird. Dazu Terminal aufrufen und
crontab -eeingeben 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
* * * * * sh /Pfad/zur/batLog.sh
Dieser Befehl ruft die batLog.sh jede Minute auf.
Anschließend sollten in dem macbookair dummy die Readings abgebildet sein.


Grüße
« Letzte Änderung: 18 Januar 2015, 11:57:33 von fhainz »

Offline Andy89

  • Full Member
  • ***
  • Beiträge: 254
Antw:MacBook Akku Ladeanzeige
« Antwort #9 am: 18 Januar 2015, 11:39:41 »
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
FHEM 5.8 auf rPi3 (mit Homebridge); dbLog und FTUI auf DS1813+; AMAD für Fire;
HMLAN > HM-Sen-MDIR-WM55, HM-CC-RT-DN, HM-Sec-RHS,HM-TC-IT-WM-W-EU,ZEL STG RM FFK;
CUL433 > IT, Elro; LGW > PCA301,EC3000,BME280,LaCrosse;
Harmony Hub;Sonos;Onkyo AVR;RGB WLAN Controller;Netatmo;Enigma2;Withings Scale;HUE

Offline fhainz

  • Developer
  • Hero Member
  • ****
  • Beiträge: 1261
Antw:MacBook Akku Ladeanzeige
« Antwort #10 am: 18 Januar 2015, 12:04:50 »
1.) als Port habe ich jetzt den 8083 genommen. Es kommen Daten an und werden angezeigt. Ist das aber der richtige Port?
Einfach einen FHEMWEB Port nehmen, welcher ist egal.

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^^
Klar, sry auf das hab ich vergessen. Ich habs oben reineditiert.

Grüße

Offline Andy89

  • Full Member
  • ***
  • Beiträge: 254
Antw:MacBook Akku Ladeanzeige
« Antwort #11 am: 18 Januar 2015, 13:45:25 »
zu 2.) habe ich noch eine kleine Ergänzung. Da ich noch kein crontab initialisiert hatte, konnte ich es mit :quit nicht speichern, denn es kam immer der Fehler: "E37: No write since last change (add ! to override)"

durch googlen habe ich den Fehler beheben können. Die Lösung für mein Problem war, statt :quit zu benutzen,
einfach die Shift-Taste halten und zweimal die Z-Taste drücken.

Danke trotzdem für deine Unterstüzung. Es funktioniert nun perfekt bei mir =)

Schönes Weekend!!
FHEM 5.8 auf rPi3 (mit Homebridge); dbLog und FTUI auf DS1813+; AMAD für Fire;
HMLAN > HM-Sen-MDIR-WM55, HM-CC-RT-DN, HM-Sec-RHS,HM-TC-IT-WM-W-EU,ZEL STG RM FFK;
CUL433 > IT, Elro; LGW > PCA301,EC3000,BME280,LaCrosse;
Harmony Hub;Sonos;Onkyo AVR;RGB WLAN Controller;Netatmo;Enigma2;Withings Scale;HUE