Stromkosten errechnen

  • Hallo liebe AutoIt Fans,

    endlich kommt auch mal wieder was von mir ;).
    Geschichtliches ;):
    Also ich habe mit einen kleinen Homeserver ( so mit ftp-Server, etc. ) gemacht ( aus dem alten DualCore ) und dann hab ich mich gefragt was denn so an Strom kostet, also: Alte Physikmappe raus und nach watt, Wattstunde, etc. gesucht, ok... das Internet hat mir geholfen^^.

    Ich präsentiere also ein Tool, was die Stromkosten für IRGENDEIN Gerät ( also Computer oder auch ne 60W Glühbirne ) errechnet.

    Aktuelle Version: 1.2

    Screenshots:
    autoit.de/wcf/attachment/15146/ autoit.de/wcf/attachment/15144/

    Funktionen:
    * Kosten/ Jahr
    * Kosten/ Monat
    * Kosten/ Tag
    * Kosten/ Stunde
    * Kosten/ Minute
    * Kosten/ Sekunde
    * Timer der Kosten pro Sekunde in ct und €
    * Daten (Stromkosten und watleistung ) kann man zwischendurch ändern

    Code
    [autoit]

    #include<Misc.au3>
    Global $MAX_LEISTUNG, $KOSTEN_PRO_STD, $KOSTEN_BISHER ; Globale Vars.
    $STARTED = IniRead(@UserProfileDir & "\Kosten.ini", "DATA", "STARTED", "") ; Auslesen des Start-Wertes
    if $STARTED = "" Then ; Wenn "Start-Wert" = Nichts, dann... --->> Ja ich weiß, man kann das mit FileExist machen^^ <<---
    _ChangeValues() ; ...Daten angeben ( s. Funktion "_ChangeValues() )
    EndIf
    func _ChangeValues()
    $tGui = GUICreate("Daten sammeln", 200, 100) ; GUI erzeigen
    GUICtrlCreateLabel("Cent/kWh: ", 10, 13) ; Label
    GUICtrlCreateLabel("ct", 145, 13) ; Label
    $fINPUT_CENT_PRO_KWH = GUICtrlCreateInput("", 80, 10, 60, 20) ; INPUT für ct/kWh
    GUICtrlCreateLabel("Max. Leistung: ", 10, 43) ; Label
    GUICtrlCreateLabel("Watt", 170, 43) ; Label
    $fINPUT_MAX_WATT = GUICtrlCreateInput("", 80, 40, 80, 20) ; INPUT für den MAximalen Verbrauch ( in Watt/Stunde )
    $fBUTTON_ANGABEN = GUICtrlCreateButton("Volt/Ampere", 105, 70, 85, 20)
    $fBUTTON_OK = GUICtrlCreateButton("OK", 10, 70, 85, 20) ; OK-Button
    GUISetState() ; Anzeigen
    while 1
    $fMsg = GUIGetMsg()
    Select
    case $fMsg = -3 Or _IsPressed("1B") ; Wenn das Fenster geschlossen wird ( -3 ) oder ESC gedrückt wurde, dann...
    Exit ; ... Schließen ( exit )
    case $fMsg = $fBUTTON_OK Or _IsPressed("0D") ; Wenn OK-Button oder ENTER gedrückt wurde, dann
    $KOSTEN_PRO_STD = GUICtrlRead($fINPUT_CENT_PRO_KWH) ; Auslesen des INPUT Feldes
    $MAX_LEISTUNG = GUICtrlRead($fINPUT_MAX_WATT); "
    IniWrite(@UserProfileDir & "\Kosten.ini", "DATA", "KOSTEN_PRO_STD", $KOSTEN_PRO_STD) ; Die Kosten in ct/kWh in INI-Datei schreiben
    IniWrite(@UserProfileDir & "\Kosten.ini", "DATA", "MAX_LEISTUNG", $MAX_LEISTUNG) ; Max-Watt eintragen
    IniWrite(@UserProfileDir & "\Kosten.ini", "DATA", "STARTED", 1) ; Startwert ( s.o. ) eintragen/ändern
    if $STARTED = "" Then IniWrite(@UserProfileDir & "\Kosten.ini", "DATA", "KOSTEN", 0) ; Die Kosten eintragen
    GUIDelete() ; GUI löschen
    Return ; "Zurück" gehen
    case $fMsg = $fBUTTON_ANGABEN
    $fVOLT = InputBox("Volt", "Bitte geben sie die Stromstärke ( Volt ) an:", 0, "", 150, 150)
    $fAMPERE = InputBox("Ampere", "Bitte geben sie die Stromspannung ( Ampere ) an:", 0, "", 150, 150)
    $fVOLT = StringReplace($fVOLT, ",", ".")
    $fAMPERE = StringReplace($fAMPERE, ",", ".")
    GUICtrlSetData($fINPUT_MAX_WATT, $fVOLT * $fAMPERE) ; Watt = Ampere * Volt
    sleep(100)
    EndSelect
    WEnd
    EndFunc
    $KOSTEN_PRO_STD = IniRead(@UserProfileDir & "\Kosten.ini", "DATA", "KOSTEN_PRO_STD", "0") ; Daten auslesen
    $MAX_LEISTUNG = IniRead(@UserProfileDir & "\Kosten.ini", "DATA", "MAX_LEISTUNG", "0") ; Daten auslesen
    $KOSTEN_BISHER = IniRead(@UserProfileDir & "\Kosten.ini", "DATA", "KOSTEN", "0") ; Daten auslesen
    _CreateNormalGUI()
    func _CreateNormalGUI()
    $h_GUI = GUICreate("Kosten Errechner", 300, 250) ; GUI erzeugen
    ;; INPUT
    $h_INPUT_READ = 24 ; Stunden/Tag
    $h_LABEL_HEAD_1 = GUICtrlCreateLabel("Bei ", 10, 13)
    $h_INPUT_STD = GUICtrlCreateInput($h_INPUT_READ, 30, 10, 25) ; INPUT für Stunden/Tag
    $h_LABEL_HEAD_2 = GUICtrlCreateLabel("/Tag", 60, 13)
    ;; INPUT
    ;; LABEL
    ; $h_INPUT_READ = Stunden/Tag
    ; $MAX_LEISTUNG = Watt verbrauch
    ; $KOSTEN_PRO_STD = ct/kWh
    $h_LABEL_KOSTEN_JAHR = GUICtrlCreateLabel("Kosten pro Jahr:", 10, 43, 100, 20)
    $h_LABEL_KOSTEN_JAHR_DATA = GUICtrlCreateLabel((($h_INPUT_READ * 365 * $MAX_LEISTUNG) / 1000) * ($KOSTEN_PRO_STD / 100) & " €", 150, 43, 150, 20)
    $h_LABEL_KOSTEN_MONAT = GUICtrlCreateLabel("Kosten pro Monat:", 10, 63, 100, 20)
    $h_LABEL_KOSTEN_MONAT_DATA = GUICtrlCreateLabel((($h_INPUT_READ * 365 * $MAX_LEISTUNG) / 1000) * ($KOSTEN_PRO_STD / 100) / 12 & " €", 150, 63, 150, 20)
    $h_LABEL_KOSTEN_TAG = GUICtrlCreateLabel("Kosten pro Tag:", 10, 83, 100, 20)
    $h_LABEL_KOSTEN_TAG_DATA = GUICtrlCreateLabel(((($h_INPUT_READ * 365 * $MAX_LEISTUNG) / 1000) * ($KOSTEN_PRO_STD / 100) / 12) / (365 / 12) & " €", 150, 83, 150, 20)
    $h_LABEL_KOSTEN_STD = GUICtrlCreateLabel("Kosten pro Stunde:", 10, 103, 100, 20)
    $h_LABEL_KOSTEN_STD_DATA = GUICtrlCreateLabel((($MAX_LEISTUNG / 1000) * $KOSTEN_PRO_STD) / 100 & " €", 150, 103, 150, 20)
    $h_LABEL_KOSTEN_MIN = GUICtrlCreateLabel("Kosten pro Minute:", 10, 123, 100, 20)
    $h_LABEL_KOSTEN_MIN_DATA = GUICtrlCreateLabel(((($MAX_LEISTUNG / 1000) * $KOSTEN_PRO_STD) / 100) / 60 & " €", 150, 123, 150, 20)
    $h_LABEL_KOSTEN_SEC = GUICtrlCreateLabel("Kosten pro Sekunde:", 10, 143, 100, 20)
    $h_LABEL_KOSTEN_SEC_DATA = GUICtrlCreateLabel(((($MAX_LEISTUNG / 1000) * $KOSTEN_PRO_STD) / 60) / 60 & " ct", 150, 143, 150, 20)
    ;; LABEL
    ;; COUNTER
    $h_LABEL_COUNTER_1 = GUICtrlCreateLabel("Seit dem ersten Aufruf des Programms: ", 10, 170, 200, 20)
    $h_LABEL_COUNTER_CT = GUICtrlCreateLabel($KOSTEN_BISHER & " ct", 30, 190, 200, 20)
    $h_LABEL_COUNTER_EURO = GUICtrlCreateLabel($KOSTEN_BISHER / 100 & " €", 30, 210, 200, 20)
    $h_COUNTER = TimerInit()
    ;; COUNTER
    ;; BUTTONS
    $h_BUTTON_CHANGE_VALUES = GUICtrlCreateButton("Daten ändern", 150, 10, 120, 20)
    ;; BUTTONS
    GUISetState()
    while 1
    $hMSG = GUIGetMsg()
    Select
    case $hMSG = -3 Or _IsPressed("1B")
    Exit
    case GUICtrlRead($h_INPUT_STD) <> $h_INPUT_READ
    if GUICtrlRead($h_INPUT_STD) >= 25 Then GUICtrlSetData($h_INPUT_STD, 24)
    $h_INPUT_READ = GUICtrlRead($h_INPUT_STD)
    ; Daten der Labels aktualisieren
    GUICtrlSetData($h_LABEL_KOSTEN_JAHR_DATA, (($h_INPUT_READ * 365 * $MAX_LEISTUNG) / 1000) * ($KOSTEN_PRO_STD / 100) & " €")
    GUICtrlSetData($h_LABEL_KOSTEN_MONAT_DATA, (($h_INPUT_READ * 365 * $MAX_LEISTUNG) / 1000) * ($KOSTEN_PRO_STD / 100) / 12 & " €")
    GUICtrlSetData($h_LABEL_KOSTEN_TAG_DATA, ((($h_INPUT_READ * 365 * $MAX_LEISTUNG) / 1000) * ($KOSTEN_PRO_STD / 100) / 12) / (365 / 12) & " €")
    GUICtrlSetData($h_LABEL_KOSTEN_STD_DATA, (($MAX_LEISTUNG / 1000) * $KOSTEN_PRO_STD) / 100 & " €")
    GUICtrlSetData($h_LABEL_KOSTEN_MIN_DATA, ((($MAX_LEISTUNG / 1000) * $KOSTEN_PRO_STD) / 100) / 60 & " €")
    GUICtrlSetData($h_LABEL_KOSTEN_SEC_DATA, ((($MAX_LEISTUNG / 1000) * $KOSTEN_PRO_STD) / 60) / 60 & " ct")
    case TimerDiff($h_COUNTER) >= 1000
    $KOSTEN_BISHER += ((($MAX_LEISTUNG / 1000) * $KOSTEN_PRO_STD) / 60) / 60
    GUICtrlSetData($h_LABEL_COUNTER_CT, $KOSTEN_BISHER & " ct")
    GUICtrlSetData($h_LABEL_COUNTER_EURO, $KOSTEN_BISHER / 100 & " €")
    IniWrite(@UserProfileDir & "\Kosten.ini", "DATA", "KOSTEN", $KOSTEN_BISHER)
    $h_COUNTER = TimerInit()
    case $hMSG = $h_BUTTON_CHANGE_VALUES
    _ChangeValues() ; Daten neu angeben ( s.o. )
    $MAX_LEISTUNG = IniRead(@UserProfileDir & "\Kosten.ini", "DATA", "KOSTEN_PRO_STD", "")
    $KOSTEN_PRO_STD = IniRead(@UserProfileDir & "\Kosten.ini", "DATA", "MAX_LEISTUNG", "")
    $KOSTEN_BISHER = IniRead(@UserProfileDir & "\Kosten.ini", "DATA", "KOSTEN", "")
    ; Daten der Labels aktualisieren
    GUICtrlSetData($h_LABEL_KOSTEN_JAHR_DATA, (($h_INPUT_READ * 365 * $MAX_LEISTUNG) / 1000) * ($KOSTEN_PRO_STD / 100) & " €")
    GUICtrlSetData($h_LABEL_KOSTEN_MONAT_DATA, (($h_INPUT_READ * 365 * $MAX_LEISTUNG) / 1000) * ($KOSTEN_PRO_STD / 100) / 12 & " €")
    GUICtrlSetData($h_LABEL_KOSTEN_TAG_DATA, ((($h_INPUT_READ * 365 * $MAX_LEISTUNG) / 1000) * ($KOSTEN_PRO_STD / 100) / 12) / (365 / 12) & " €")
    GUICtrlSetData($h_LABEL_KOSTEN_STD_DATA, (($MAX_LEISTUNG / 1000) * $KOSTEN_PRO_STD) / 100 & " €")
    GUICtrlSetData($h_LABEL_KOSTEN_MIN_DATA, ((($MAX_LEISTUNG / 1000) * $KOSTEN_PRO_STD) / 100) / 60 & " €")
    GUICtrlSetData($h_LABEL_KOSTEN_SEC_DATA, ((($MAX_LEISTUNG / 1000) * $KOSTEN_PRO_STD) / 60) / 60 & " ct")
    EndSelect
    WEnd
    EndFunc

    [/autoit]
    Download

    Download: autoit.de/wcf/attachment/15164/ - 7,65 kB
    Download: autoit.de/wcf/attachment/15163/ - 302,69 kB ( kein AutoIt nötig )


    Changelog:
    V1.0 ( 19.02.2012 :(
    * release
    V1.1 ( 19.02.2012):
    * Statt Watt angabe auch Angabe von Volt und Ampere
    V1.2 ( 20.02.2012):
    * Bugs ( ;) ) fixed

    Für Verbesserungen, Bugs, Ratschläge bin ich immer offen!

    mfg
    Hauke

  • Mir ist ein wenig was aufgefallen.

    1. Stromstärke ist in Ampere und Spannung in Volt. Du hast da was vertauscht :)
    2. Solltest du evtl noch unterscheiden zwischen Gleich- und Wechselstromgeräten. Den beim 2. berechnet sich die Leistung nämlich nicht einfach aus P = U*I. :) Einfach mal danach googlen und anpassen.^^

  • Moin, schoene Idee hätte aber noch was Sinnvolles für das Tool, mir ist leider nicht bekannt wie man über Autoit den Momentan Stromverbrauch auslesen kann somit würde ich es über ein tool von Microsoft machen "Joulmeter"
    http://research.microsoft.com/en-us/download…4-daf55565f794/
    , würde dann also noch einen Button einfügen "für aktuelles Gerät" und dann soll das Tool über den Durchschnittlichen Stromverbrauch des Gerätes (diesen bekommst du über das Tool" errechnen was für Kosten man so hat :P

    Gruß Marvin

    • Offizieller Beitrag

    Oscar wenn ich auf deine Skript seite gehe kommt von Avira nen Malwirpopup 8| :huh:

    Das gehört hier zwar nicht in den Thread, aber um den Verdacht hier auszuräumen: Auf meiner Seite gibt es keinerlei Malware!
    Dort befinden sich nur ZIP-Archive mit den Skripten und einigen dazugehörigen Grafiken und Sounds. Wenn Avira da meckert, dann ist das wohl mal wieder ein Fehlalarm.
    Ich benutze im übrigen selbst Avira (einmal als kostenlose Variante und einmal die Vollversion Internet Security) und bei mir erscheint dort keine Meldung.

  • Dnake für eure Zahlreichen Antowrten :D

    @Prixma
    1.) Verdammt, und ich war mir so sicher, egal, wie Einstein schon sagte, die Dummheit der Menschen ist SICHER unendlich^^
    2.)

    @Protex
    Ich habe NOCH kein Informatik studiert xDDD sprich: Ich habe keine Ahnung wie ich das anstellen soll^^

    @Jeahaha
    Wie schön, dass man Private NAchrichten schicken kann um die Beiträge nicht unnötig zu füllen -.-

    Update:
    Hab die Bugs ( mit Volt und Ampere ) behoben.

    mfg
    Hauke