"wer misst, misst Mist"
Eigentlich heißt es "wer viel misst, misst Mist" ![]()
"wer misst, misst Mist"
Eigentlich heißt es "wer viel misst, misst Mist" ![]()
Hmm wieder was gelernt^^ Das @NumParams kannte ich auch noch nicht.
Aber anstatt X Parameter zu übergeben, würde ich, wenn irgendwie möglich, eher dazu übergehen wenige, dafür z.B. sinnvoll in Array(s) gepackt diese zu übergeben. Aber das hängt wohl auch stark vom Anwendungsfall ab.
Mal nebenbei Tweaky.
Hast du mal versucht ob du aus folgendem Link informationen bekommst?
http://ipvomfronius/solar_api/v1/GetMeterRealtimeData.cgi?Scope=System
Quelle: https://homematic-forum.de/forum/viewtopic.php?t=24675
Datenpakete Datenpunkte/Monat Kosten / Monat Basic* 1 - 500.000 40,00 € Small 500.001 - 2.500.000 150,00 € Medium 2.500.001 - 10.000.000 380,00 € Large 10.000.001 - 30.000.000 520,00 € Advanced 30.000.001 - 60.000.000 750,00 € Pro > 60.000.000 1.200,00 € Die Preise sind ja schon dreist...
Wo hast du die denn gefunden? hab versucht das herauszufinden aber nur die Tabelle mit den Datenpunkten (ohne Preise) gefunden...
Aber 40€/Monat frisst mal eben deinen "Gewinn" der Einspeisung ggf. mehr als auf...
Das erinnert mich an das Webmodul von unserer Wärmepumpe (Nibe), das war (zumindest vor ~10 Jahren) auch kostenpflichtig...
Achja btw, für mich auch nicht ganz uninteressantes Thema, denn wir bekommen eine neue PV Anlage aufs dach, auch mit einem Fronius WR ![]()
Blöde Frage, warum nicht die API verwenden?
Edit: Ach, ich sehe gerade, das das leider nciht kostenfrei möglich ist (pay per use) -.- also damit fällt meine Frage wohl flach ![]()
Aber 3440*1440 wäre UWQHD (das habe ich z.B. auch zu Hause), die nächste wirkliche 4K Auflösung wäre 3840x2160.
Ganz abgesehen von Kanashius ansatz, und nur wegen meiner Anmerkung musst du natürlich die Variable $Button1 (+alle anderen angesteuerten GUI Elemente der anderen GUI) Global haben, nicht lokal. Sprich Global leer definieren und in der Funktion dann füllen oder von der Funktion füllen lassen.
Denn klar kann guigetmsg nicht drauf reagieren wenn es diese Variable nicht kennt/gefüllt ist.
Case $Button1 in der While schleife oder soll er dann wirklich aus allen schleifen durchläufen zurückspringen?
Du musst das am Anfang des Scriptes einfügen und dann sollte der shortcut (sofern nicht von anderen Sachen in z.B. Windows belegt) überall im Skript funktionieren.
Wenn du aber einfach nach dem SetError(3) das ausführen willst, also immer, dann ruf dort einfach UmbenennenUndLeeren() auf.
Allerdings musst du das Return dann später aufrufen.
Mein Smartphone hat diese Einstellung nicht. Speichere ich das Kennwort, wird auch automatisch neu verbunden. Alternativ müsste also bei jedem Verbinden das Passwort händisch eingegeben werden.
Hmm, ich habe leider kein Smartphone mit einem so alten OS mehr rum liegen aber diese Einstellung kannst du nur machen NACHDEM du es gespeichert hast, also du musst den Eintrag "bearbeiten".
Habe noch ein einziges bei uns in der Firma gefunden und mich eben kurz aufgeschaltet, auch dort kann ich auf A12 diese Einstellung sehen. Gehe dazu in die Wifi settings, gespeicherte WiFi, wähle das entsprechende aus und dort solltest du den entsprechenden Haken sehen.
Und wegen der Fritzbox, wenn ich mich nicht irre müsste beides gehen, denn die Wifi settings sind ja unabhängig von den Intterneteinstellungen der Fritzbox. Musst sie nur von "Mesh-Master" auf "Mesh-Repeater" umstellen und wahrscheinlich dann dort WLAN als Quelle nehmen und nicht LAN.
BugFix Also zunächst einmal die einfachste Lösung: Warum schaltest du nicht das Wifi der Fritzbox einfach ab oder löschst es aus dem Gerät wo du es nicht nutzen willst?
Android nimmt sich in der Tat immer das Wifi, das die (scheinbar) beste Verbindung zum Internet bereitstellt. Die Eckpunkte dafür sind leider nicht immer ganz plausibel.
Du solltest jedoch in deinen Wifi Einstellungen von der jeweiligen SSID den Haken "automatisch erneut verbinden" raus nehmen können und auch damit das Problem (hoffentlich) beheben. Da ich das bisher nicht genutzt habe, keine Garantie darauf ![]()
Ansonsten frage ich gerne mal bei Google nach (https://productexperts.withgoogle.com/directory/a80c…6a-330ee7a38920) da mein Spezialgebiet ein klein wenig woanders liegt ![]()
Btw.: Den Einwand von Gun-Food finde ich zudem auch sehr treffend.
Das stimmt! Aber vielleicht gibt es für die Version ja eine Lösung.
Mal ganz abgesehen von dem was hier schon (sehr relevanter Weise) gepostet wurde. Warum sollte es das, wenn du es nicht brauchst? Also warum unbedingt 2 Loops benutzen?
Warum überhaupt 2 loops? Du kannst doch beides in einer abfragen...
Hier hat keiner "drauf gehauen" und ich habe jetzt nicht auf die beiden Zeitstempel geschaut, muss ich zugeben aber für mich (Stand jetzt) auch nicht zu 100% ersichtlich:
Würde ich hier irgendwo "drauf hauen" wäre der Ton weitaus anders.
Um mal das Beispiel von AspirinJunkie zu nehmen, Zeile ab Zeile 10 folgendes eingetragen:
Global Const $ms = _SystemTimeDiff($tNow, $tThen)
ConsoleWrite("Zeitdifferenz: " & $ms & " ms" & @CRLF)
ConsoleWrite("Zeitdifferenz: " & StringFormat("%.2d:%.2d:%06.3f", (Floor($ms / 3600000)), (Floor(Mod($ms,3600000) / 60000)), (Mod(Mod($ms,3600000),60000) / 1000)) & @CRLF)
Und Zeile 22 wie erwähnt verändert: Return _SystemTime2JulianMSecs($tTime2) - _SystemTime2JulianMSecs($tTime1)
Ergibt dann als Ausgabe (z.B. bei 35456000ms):
Zeitdifferenz: 35456123 ms
Zeitdifferenz: 09:50:56.123
Hier ein kleines sample mit GUI aber Augabe nur in der Konsole:
Opt('MustDeclareVars', 1)
#include <Date.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
Example()
Func Example()
Local $tNow, $tThen, $ms
; Create a GUI with various controls.
Local $hGUI = GUICreate("Example", 300, 200)
; Create a checkbox control.
Local $idCheckbox = GUICtrlCreateCheckbox("Standard Checkbox", 10, 10, 185, 25)
Local $idButton_Close = GUICtrlCreateButton("Close", 210, 170, 85, 25)
; Display the GUI.
GUISetState(@SW_SHOW, $hGUI)
; Loop until the user exits.
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE, $idButton_Close
ExitLoop
Case $idCheckbox
If GUICtrlRead($idCheckbox) = $GUI_CHECKED Then
$tNow = _Date_Time_EncodeSystemTime(@MON, @MDAY, @YEAR, @HOUR, @MIN, @SEC, @MSEC)
Else
$tThen = _Date_Time_EncodeSystemTime(@MON, @MDAY, @YEAR, @HOUR, @MIN, @SEC, @MSEC)
$ms = _SystemTimeDiff($tNow, $tThen)
ConsoleWrite("Zeitdifferenz: " & $ms & " ms" & @CRLF)
ConsoleWrite("Zeitdifferenz: " & StringFormat("%.2d:%.2d:%06.3f", (Floor($ms / 3600000)), (Floor(Mod($ms,3600000) / 60000)), (Mod(Mod($ms,3600000),60000) / 1000)) & @CRLF)
$tNow = ''
$tThen = ''
$ms = ''
EndIf
EndSwitch
WEnd
; Delete the previous GUI and all controls.
GUIDelete($hGUI)
EndFunc ;==>Example
; Berechnet die Differenz zweier Zeitstempel in Millisekunden (tTime1 - tTime2)
Func _SystemTimeDiff($tTime1, $tTime2)
If Not IsDllStruct($tTime1) Then Return SetError(1,0, Null)
If Not IsDllStruct($tTime2) Then Return SetError(2,0, Null)
Return _SystemTime2JulianMSecs($tTime2) - _SystemTime2JulianMSecs($tTime1)
EndFunc
; konvertiert eine SYSTEMTIME-Struktur in ein julianisches Datum mit Millisekundenauflösung
Func _SystemTime2JulianMSecs($tSystemTime)
If Not IsDllStruct($tSystemTime) Then Return SetError(1,0, Null)
Local $dYear = DllStructGetData($tSystemTime, "Year"), _
$dMonth = DllStructGetData($tSystemTime, "Month"), _
$dDay = DllStructGetData($tSystemTime, "Day"), _
$dHour = DllStructGetData($tSystemTime, "Hour"), _
$dMinute = DllStructGetData($tSystemTime, "Minute"), _
$dSecond = DllStructGetData($tSystemTime, "Second"), _
$dMs = DllStructGetData($tSystemTime, "MSeconds")
Local $fMsecs = Int(_DateToDayValue($dYear, $dMonth, $dDay) * 86400000, 2) _ ; julianisches Datum aus Jahr, Monat, Tag berechnen
+ $dHour * 3600000 _
+ $dMinute * 60000 _
+ $dSecond * 1000 _
+ $dMs
Return $fMsecs
EndFunc
Alles anzeigen
Credits to AspirinJunkie and zaNergal habs nur zusammen gefügt ![]()
bankesbusters was funktioniert denn an dem Beispiel von AspirinJunkie nicht, dies einzubauen?
Das gibt doch bereits die ms aus, wobei $tNow = Startzeit und $tThen = Endzeit wäre.
Diese ms musst du dann natürlich noch in hh, mm, ss , ms umrechnen und entsprechend ausgeben.
Achtung: Ich würde in Zeile 22 time1 von time2 abziehen (aktuell andersherum), sonst bekommst du immer negative Werte.
aber man erkennt, dass das program noch laeuft
Hmm, da denke ich eher an den Balken, der in der Taskleiste im Titel z.B. bei Downloads im Browser durchläuft.
Zugegeben, ich weiß gerade nicht, wie man das umsetzt aber fände ich die wesentlich sinnvollere Variante, da man den Mauszeiger nicht anfässt.
also nicht immer verbal mit der kelle zuschlagen, nur weil man nicht genau weiss was der sinn dahinter ist.
Ich fühle mich dabei mal nicht angesprochen, denn wie Schnuffel es bereits gesagt hat, oft liegen Welten zwischen dem was hier angefragt wird und dem eigentlichen "Problem".
meist haben die User keine Adminrechte. Daher gibt es ja Tools wie den „MouseMover“
Und dann dem von den Sysadmins vorgegebenen Settings zu umschiffen ist dann natürlich die Lösung... (nicht böse gemeint) Dann muss hier mit ihnen entsprechend kommuniziert werden und der PC an die Anforderungen angepasst werden.
Warum diesen nicht generell abschalten?
Für mich hört sich das ganze so an, als würde hier versucht eine Art Kiosk-Modus zu generieren, ohne am OS erst mal an den richtigen Stellschrauben zu drehen.