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
#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
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