Aufgrund derzeit hohem Spamaufkommens werden neue Nutzer sehr restriktiv behandelt. Nach kurzer "Bewährungszeit" hat man als normaler Nutzer weitreichende Rechte und benötigt auch kein Captcha mehr.
.
Nutzer, die sich danach dennoch als Spammer oder Trolle erweisen, können jederzeit wieder auf diesen Status zurückgesetzt oder gebannt werden.
Dasselbe gilt für Versuche, politische Überzeugungen kund zu tun, egal aus welcher Richtung diese kommen.
.
.:!: Achtung! Verwendet bitte für aktuelle Mäher bzw. falls ihr die Firmware eures Mähers kürzlich aktualisiert habt, den aktuellen Release-Candidate der Robonect-Firmware: https://fw.robonect.de/?latest Diese wird in ein paar Tagen als offizielle Firmware verfügbar sein. (Stand: 03.04.2024)

V0.9 Final - Sommerzeitumstellung

lembi
Forum-Nutzer
Beiträge: 43
Registriert: Di 12. Apr 2016, 16:19

Re: V0.9 Final - Sommerzeitumstellung

Beitrag von lembi »

...ich bring nichtmal ein 'Hallo Welt' in C# zusammen :)

was macht das denn?
begin_ = 0x030000 | (begin << 8) | 1;
end_ = 0x0A0000 | (end << 8) | 1;
Bild
265ACX Status: kann kein Robonect :)

Campus
sehr erfahrener Forum-Nutzer
Beiträge: 425
Registriert: Mi 27. Jan 2016, 16:08
Mäher: Gardena R40Li
Firmware des Mähers (MSW): MSW 5.xx.xx
Herstellungsjahr: 2012
Robonect-Modul: Robonect H30x (Rev.1)
Robonect Firmware: 1.0beta5
hat sich bedankt: 1 Mal
wurde gedankt: 3 Male

Re: V0.9 Final - Sommerzeitumstellung

Beitrag von Campus »

lembi hat geschrieben:was macht das denn?
begin_ = 0x030000 | (begin << 8) | 1;
end_ = 0x0A0000 | (end << 8) | 1;
Das erzeugt eine Zahl aus dem Monat, dem Tag des Monats und der Stunde.
0x03 == 3 == Maerz
0x0A == 10 == Oktober
Die Monate werden dann auf das dritte Byte geschoben, daher zu
0x030000 == 196608
0x0A0000 == 655360
Da sieht man, dass die unteren zwei Bytes (0000) komplett unbesetzt sind.
Dann werden die Tage des Monats auf das zweite Byte kopiert
0x030000 | (begin << 8) == 0x031E00 == 204288 (wenn der Beginn am 30.03., also am 30, also 0x1E ist)
0x0A0000 | (end << 8) == 0x0A1A00 == 662016 (wenn das Ende am 26.10., also am 26, also 0x1A ist)
Dann noch die Stunde der Uhrzeit (in dieser Rechnung immer 1, sollte eigentlich 2 oder 3 sein) auf das letzte Byte
0x030000 | (begin << 8) | 1 == 0x031E00 | 1 == 0x031E01 == 204289
0x0A0000 | (end << 8) | 1 == 0x0A1A00 | 1 == 0x0A1A01 == 662017

Die gleiche Rechnung wird dann für das heutige Datum und die momentane Stunde gemacht um dann zu checken, ob dieser Wert zwischen den gerade berechneten Werten liegt, denn dann wird Sommerzeit angenommen.
Das gefaehrliche an der Rechnung sind die Monatskonstanten, bei denen man immer checken muss, ob die Werte 0 oder 1-basiert sind. Die Rechnung
now_ = (pUtc->month << 16) | (pUtc->day << 8) | pUtc->hour;
geht davon aus, dass Monat und Tag des pUtc-Pointers 1-basiert sind.
Gruß
Campus

Admin
Administrator
Beiträge: 2907
Registriert: Di 19. Jan 2016, 18:34
Wohnort: Kiel
Mäher: Gardena SILENO City 500
Firmware des Mähers (MSW): MSW 11.xx.xx
Herstellungsjahr: 2017 (Modell 2018)
Robonect-Modul: Robonect Hx (Rev.5)
Robonect Firmware: stets die Allerneuste :-)
hat sich bedankt: 1 Mal
wurde gedankt: 60 Male
Kontaktdaten:

Re: V0.9 Final - Sommerzeitumstellung

Beitrag von Admin »

Campus hat meine Funktion verstanden. :)

Zu deinem Bedenken mit dem 1. basierten Monat / Tag: Da ich auch den Rest programmiert habe, bin ich mir da relativ sicher. :lol:
Dann noch die Stunde der Uhrzeit (in dieser Rechnung immer 1, sollte eigentlich 2 oder 3 sein) auf das letzte Byte
Hier habe ich extra UTC verwendet, dass macht es viel einfacher. Denn die Zeitumstellung passiert immer um 1 Uhr Nachts (UTC).
Die aktuelle Uhrzeit im Winter ist dann UTC+1, bzw. im Sommer UTC+2.

(Vor Robonect habe ich mir da auch nie Gedanken drüber gemacht ;) )
Werbefläche zu vermieten. :lol:

lembi
Forum-Nutzer
Beiträge: 43
Registriert: Di 12. Apr 2016, 16:19

Re: V0.9 Final - Sommerzeitumstellung

Beitrag von lembi »

Ja, danke für die Erklärung. Mit dieser Bit shifterei komm ich nie klar :)
Das mit den Monaten war mir auch aufgefallen, hab aber dann mal unterstellt das es schon richtig sein wird.

Code: Alles auswählen

for (begin = 31; RtcDayOfWeek(pUtc->year, 3, begin) != 6; begin--)
würde bei 0 basierter Zählung im April suchen und käme auf den 30. ... hätte also noch gar keine Umstellung passieren dürfen.

Stunde "1" sollte auch passen, nachdem ja mit UTC gearbeitet wird. Im Winter haben wir (hier zumindest) Local-time = UTC+1, im Sommer UTC+2
UTC 01:00 Uhr ist also bei uns zur Umstellung 2 Uhr und entsprechend sollte das beim Vergleich begin_ <= now_ zur richtigen Zeit zutreffen.


Seh sonst auch nix...

Code: Alles auswählen

RtcDayOfWeek(pUtc->year, 3, begin) 
Nur ne Vermutung... Sicher das in year das aktuelle Jahr steht und das die Reihenfolge der übergebenen Variablen korrekt ist?
Bild
265ACX Status: kann kein Robonect :)

Mattieu
Forum-Nutzer
Beiträge: 18
Registriert: Mo 20. Feb 2017, 13:17
Wohnort: Dortmund
Mäher: Husqvarna Automower 105
Firmware des Mähers (MSW): MSW 6.xx.xx
Herstellungsjahr: 2016
Robonect-Modul: Robonect Hx (Rev.3)
Robonect Firmware: 0.9 final

Re: V0.9 Final - Sommerzeitumstellung

Beitrag von Mattieu »

Kenn mich mit C# auch nicht wirklich aus.

Aber sehe ich das richtig, dass die Funktion einen Boolschen Wert liefert und per Definition uint8_t zurückgibt? Passt das?
Admin hat geschrieben: uint8_t RtcIsSummer(tTimeDate* pUtc)
{
[...]
return (begin_ <= now_) && (now_ <= end_);
}

Gruß,
Martin
Robonect Hx Firmware V0.9 (Final)
Automower: 105 (2016) MAIN: 6.14.00 HMI: 7.00.00 SUB: 6.01.00

Admin
Administrator
Beiträge: 2907
Registriert: Di 19. Jan 2016, 18:34
Wohnort: Kiel
Mäher: Gardena SILENO City 500
Firmware des Mähers (MSW): MSW 11.xx.xx
Herstellungsjahr: 2017 (Modell 2018)
Robonect-Modul: Robonect Hx (Rev.5)
Robonect Firmware: stets die Allerneuste :-)
hat sich bedankt: 1 Mal
wurde gedankt: 60 Male
Kontaktdaten:

Re: V0.9 Final - Sommerzeitumstellung

Beitrag von Admin »

Ist wird ja auch nicht in C# programmiert, sondern in C. Und c kennt kein bool.
Werbefläche zu vermieten. :lol:

Gesperrt

Zurück zu „ältere als FW 0.9e“