_{ VERALTET BITTE LÖSCHEN }_


  • _{ VERALTET BITTE LÖSCHEN }_

    Seit der Shelly FW Version 1.0, ist ein extra Script dafür, nicht mehr notwendig, da "Date" nun nutzbar ist als natives Object:

    22 Mal editiert, zuletzt von _[Deleted]_ (25. Januar 2024 um 18:19)

  • _[Deleted]_ 22. Januar 2023 um 20:34

    Hat den Titel des Themas von „Datum, Uhrzeit und TimeStamp Konverter(pseudo_NewDate);“ zu „Uhrzeit, Datum und TimeStamp Konverter, alles Lokal“ geändert.
  • Falls es beim speichern eures Skripts zu dieser " MJS error: parse error at line xy: [] " Fehlermeldung kommt, dann speichert einfach nochmal das behebt den Fehler. :D

    Ursache:

    Wenn ihr das Shelly Skript, speichert während es noch läuft, kann es zu einem Fehler kommen, da das Skript mitten in der Ausführung/Berechnung angehalten wird.

    Der Editor lässt euch dann das Skript nicht mehr starten, bis ihr das Skript nochmal speichert, danach läuft es wieder Fehlerfrei und lässt sich auch starten.

    Der Shelly Editor Bug hat keine Auswirkung auf einen Neustart, das Skript startet ganz normal mit dem Shelly bei Stromausfall oder Neustart.

    3 Mal editiert, zuletzt von _[Deleted]_ (20. März 2023 um 17:24)

  • @dekat win

    Erst einmal vielen Dank für die nützliche tsKonverter() Funktion. Ich setze sie in meiner aktuellen Entwicklung ein.

    Da ich gerne sowohl das Tagesdatum als auch die Uhrzeit in einem standardisierten Format nutze, habe ich eine kleine Funktion twoDigits() beigefügt.

    Voraussetzung: Der importierte Wert ist eine Zahl.

    Eine Funktion isNumber() ließe sich coden und deren Aufruf einbauen, dies lasse ich hier aber weg.

    Code
    function twoDigits(value) {
      return (value<10 ? "0" : "") + JSON.stringify(value);
    }

    Sie liefert eine Zeichenkette zu einem Zahlenwert. Das Resultat beinhaltet mindestens zwei Zeichen.

    Basierend auf deinem Code lasse ich datum und zeit kurz vor return ... wie folgt zusammensetzen. Die Formate sind selbstverständlich nach Belieben zusammenzustellen.

    Code
    let datum = JSON.stringify(aktJahre) + '-' + twoDigits(aktMonat) + '-' + twoDigits(aktTag);
    let zeit = twoDigits(korrekturStd) + ':' + twoDigits(aktMin) + ':' + twoDigits(aktSek);

    An Cloud-/Szenen-Benutzer (insbesondere für Regelungen): Was erwartest du, wenn Internet oder Cloud sabotiert werden? Nicht nur dafür meine kleine Skripteinführung  8)

    Die einzig existierende Konstante ist der Wandel. Oft liegt die größte Schwierigkeit darin, das Anliegen des Klienten zu verstehen.

  • *** neue Version Hotfix, siehe weiter unten *** sTage = 0 an der falsche Stelle.

    12 Mal editiert, zuletzt von _[Deleted]_ (21. März 2023 um 22:42)

  • Zuerst einmal Danke für deine Überarbeitung.

    Zwei Bemerkungen dazu:

    1. Zeile 18 mit sTage = 0; kann nicht gut sein, weil diese Initialisierung bereits in Zeile 13 stattfindet und insbesondere die Schalttage in der Schleife vor Zeile 18 ebendiese Anzahl an Schalttagen inkrementell ermittelt.
    2. Nur eine "Schönheitsoperation" für die Schleife zum prüfen der Datentypen (nur so getippt, nicht geprüft):
    Code
    for (let i in input) 
        if (typeof (input[i]) === 'undefined' || (typeof (input[i]) !=='number' && typeof (input[i]) !== 'bigint')) input[i] = 0;

    Ich weiß, dass "Schönheit" Geschmackssache ist, aber kürzer schadet nur recht selten. ;)

    Btw, ich weiß tatsächlich nicht, wozu die 0 Zuweisungen bei unpassenden Datentypen gut sind, weil danach offenbar mit diesen eigentlich ungültigen Werten gearbeitet wird.

    Vielleicht kannst du das klären.

    Ich habe noch nicht alles darin analysiert ...

    Zusatz: Für den Rückgabewert könnte im Objekt/Struktur ein valid:true|false ergänzt werden, etwa so:

    Code
    let ausgabe = { valid: true, Number: number, String: string, TwoDigits: twoDigits };

    Bzw. bei ungültigen Datentypen:

    Code
    return { valid: false };

    Schließlich vielleicht in Kombination mit obiger Schleife:

    Code
    for (let i in input) 
        if (typeof (input[i]) === 'undefined'
            || (typeof (input[i]) !=='number' && typeof (input[i]) !== 'bigint'))
            return {valid:false};

    An Cloud-/Szenen-Benutzer (insbesondere für Regelungen): Was erwartest du, wenn Internet oder Cloud sabotiert werden? Nicht nur dafür meine kleine Skripteinführung  8)

    Die einzig existierende Konstante ist der Wandel. Oft liegt die größte Schwierigkeit darin, das Anliegen des Klienten zu verstehen.

    5 Mal editiert, zuletzt von eiche (20. März 2023 um 18:44)

  • Dieses Thema enthält 7 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.