Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. Skript für Mondphase, Mondauf- und Untergang

    NEWS

    • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?

    • Monatsrückblick – September 2025

    • Neues Video "KI im Smart Home" - ioBroker plus n8n

    Skript für Mondphase, Mondauf- und Untergang

    This topic has been deleted. Only users with topic management privileges can see it.
    • Ro75
      Ro75 @Walter.O. last edited by

      @walter-o sagte in Skript für Mondphase, Mondauf- und Untergang:

      Das Kopierte und angepasste Script legt aber keine Datenpunkte an Z.b.:
      Copy to ClipboardcreateState(DPMond+'MondphaseIcon', 0, {name: 'MondphaseIcon' ,type: 'number', read: true, write: true});

      Falls du das meinst, zeige deinen Code mit den von dir durchgeführten Änderungen / Anpassungen.

      Ro75.

      Walter.O. 1 Reply Last reply Reply Quote 0
      • Walter.O.
        Walter.O. @Ro75 last edited by

        @ro75

        //Version 1.0.1 - 29.03.2025
        //Ersteller Ro75.
         
        //Voraussetzungen (Version 1.0.1 getestet mit)
        //NodeJS: 20.x
        //Javascript-Adapter: 8.8.1
        //Admin-Adapter: 7.4.10
        //JS-Controller: 7.0.3
         
        //Hinweis: Die Mondphasenberechnung basiert auf ein Skript aus dem Internet (Seite nicht mehr bekannt).
        //Das Skript wurde leicht modifiziert
         
        const SunCalc   = require("suncalc"); //Im Javascript-Adapter einzutragen (Zusätzliche NPM-Module)
         
        const DPMond    = '0_userdata.0.Wetter.'; //zentraler Datenpunkt
         
        const latitude  = 51.62; // muss an deinen Standort angepasst werden
        const longitude = 06.65; // muss an deinen Standort angepasst werden
         
        createState(DPMond+'MondphaseIcon', 0, {name: 'MondphaseIcon' ,type: 'number', read: true, write: true});
        createState(DPMond+'MondphaseProz', 0, {name: 'MondphaseProz' ,type: 'number', read: true, write: true});
        createState(DPMond+'MondphaseDesc', '', {name: 'MondphaseDesc' ,type: 'string', read: true, write: true});
        createState(DPMond+'Mondaufgang', '', {name: 'Mondaufgang' ,type: 'string', read: true, write: true});
        createState(DPMond+'Monduntergang', '', {name: 'Monduntergang' ,type: 'string', read: true, write: true});
         
        function getMoonTimes(latitude, longitude, date) {
            const moonTimes = SunCalc.getMoonTimes(date, latitude, longitude);
            return moonTimes;
        }
         
        function Mondphasenberechnung(){
            var heute, Vollmond_Refferenz, differenz, vVollmonde, ausgabetext;
            var synodischer_mondmonat = 29.530588;
            var phase = 1;
         
            if(phase == 0){
                phase = 100;
            }
         
            if(phase < 25){
                ausgabetext = "abnehmender Mond";
            }
            if(phase == 25){
         
            heute = new Date();
          
            Vollmond_Refferenz = new Date(2024, 11, 15, 10, 1, 42); //Berechnungsgrundlage
         
            heute = heute / 86400000;
            Vollmond_Refferenz = Vollmond_Refferenz / 86400000;
         
            differenz = heute - Vollmond_Refferenz;
         
            vVollmonde = differenz / synodischer_mondmonat;
         
            phase = vVollmonde * 100;
            phase = Math.round(phase);
            phase = phase / 100;
            phase = phase - Math.floor(phase);
            phase = phase * 100;
            phase = Math.floor(phase);
         
            if(phase == 0){
                phase = 100;
            }
         
            if(phase < 25){
                ausgabetext = "abnehmender Mond";
            }
            if(phase == 25){
                ausgabetext = "Halbmond (3. Viertel)";
            }
            if(phase > 25 && phase < 50){
                ausgabetext = "abnehmender Mond";
            }
            if(phase == 50){
                ausgabetext = "Neumond (4. Viertel)";
            }
            if(phase > 50 && phase < 75){
                ausgabetext = "zunehmender Mond";
            }
            if(phase == 75){
                ausgabetext = "Halbmond (1. Viertel)";
            }
            if(phase > 75 && phase < 100){
                ausgabetext = "zunehmender Mond";
            }
            if(phase == 100){
                ausgabetext = "Vollmond (2. Viertel)";
            }
         
            setState(DPMond+'MondphaseIcon',phase,true);
            setState(DPMond+'MondphaseDesc',ausgabetext,true);
        }
         
        function Monddaten(){
            const date = new Date(); // aktuelles Datum
         
            const moonTimes = getMoonTimes(latitude, longitude, date);
         
            if (moonTimes.rise) {
                setState(DPMond+'Mondaufgang',moonTimes.rise.toLocaleTimeString([], {hour: '2-digit', minute:'2-digit', hour12: false}),true);
            } else {
                setState(DPMond+'Mondaufgang','--:--',true);
            }
         
            if (moonTimes.set) {
                setState(DPMond+'Monduntergang',moonTimes.set.toLocaleTimeString([], {hour: '2-digit', minute:'2-digit', hour12: false}),true);
            } else {
                setState(DPMond+'Monduntergang','--:--',true);
            }
        }
         
         
        function berechneMondBeleuchtung(datum) {
            const mondInfo = SunCalc.getMoonIllumination(datum);
            const beleuchtungProzent = (mondInfo.fraction * 100);
            return {
                beleuchtung: `${beleuchtungProzent}`
            };
        }
         51.18
        function fRundenM(num) {
            var m = Number((Math.abs(num) * 100).toPrecision(15));
            return Math.round(m) / 100 * Math.sign(num);
        }
         
        function MondBeleuchtung() {
            const mondBeleuchtung = berechneMondBeleuchtung(new Date());
            setState(DPMond+'MondphaseProz', fRundenM(mondBeleuchtung.beleuchtung), true);
        }
         
        schedule('10 * * * *', Mondphasenberechnung);
        schedule('10 * * * *', Monddaten);
        schedule('10 * * * *', MondBeleuchtung);
         
        Mondphasenberechnung();
        Monddaten();
        MondBeleuchtung();
        
        
        Walter.O. 1 Reply Last reply Reply Quote 0
        • Walter.O.
          Walter.O. @Walter.O. last edited by Walter.O.

          @walter-o suncalc ist im Javascript adapter eingetragen

          Das anlegen eines alias so wie du es beschrieben hast kann leider auch nicht Nachvollziehen

          Ro75 2 Replies Last reply Reply Quote 0
          • Ro75
            Ro75 @Walter.O. last edited by

            @walter-o dann muss das Skript auch laufen. Zeige bitte das Log. Das Skript wurde auch als JS angelegt?

            Ro75.

            Walter.O. 1 Reply Last reply Reply Quote 0
            • Walter.O.
              Walter.O. @Ro75 last edited by

              @ro75 Script als JS.

              javascript.0
              2025-11-05 19:43:27.016	error	at processImmediate (node:internal/timers:485:21)
              
              javascript.0
              2025-11-05 19:43:27.016	error	at Immediate._onImmediate (/opt/iobroker/node_modules/iobroker.javascript/main.js:1732:17)
              
              javascript.0
              2025-11-05 19:43:27.016	error	at /opt/iobroker/node_modules/iobroker.javascript/main.js:2322:17
              
              javascript.0
              2025-11-05 19:43:27.016	error	at prepareScript (/opt/iobroker/node_modules/iobroker.javascript/main.js:2224:37)
              
              javascript.0
              2025-11-05 19:43:27.016	error	at createVM (/opt/iobroker/node_modules/iobroker.javascript/main.js:1956:21)
              
              javascript.0
              2025-11-05 19:43:27.016	error	at new Script (node:vm:117:7)
              
              javascript.0
              2025-11-05 19:43:27.016	error	SyntaxError: Unexpected number
              
              javascript.0
              2025-11-05 19:43:27.016	error	^^^
              
              javascript.0
              2025-11-05 19:43:27.015	error	const longitude = 06.65; // muss an deinen Standort angepasst werden
              
              javascript.0
              2025-11-05 19:43:27.013	error	script.js.common.Mondphasen compile failed: at script.js.common.Mondphasen:19
              
              Ro75 1 Reply Last reply Reply Quote 0
              • Ro75
                Ro75 @Walter.O. last edited by

                @walter-o sagte in Skript für Mondphase, Mondauf- und Untergang:

                Das anlegen eines alias so wie du es beschrieben hast kann leider auch nicht Nachvollziehen

                1. Hast du die Bilder in VIS 1 an die korrekte Stelle gelegt?
                2. Wie legst du denn den Alias an? Ich, ohne Manager.

                Ro75.

                Walter.O. 1 Reply Last reply Reply Quote 0
                • Ro75
                  Ro75 @Walter.O. last edited by

                  @walter-o sagte in Skript für Mondphase, Mondauf- und Untergang:

                  const longitude = 06.65;

                  Versuche doch mal

                   const longitude = 6.65;
                  

                  Ro75.

                  1 Reply Last reply Reply Quote 0
                  • Walter.O.
                    Walter.O. @Ro75 last edited by

                    @ro75 sagte in Skript für Mondphase, Mondauf- und Untergang:

                    @walter-o sagte in Skript für Mondphase, Mondauf- und Untergang:

                    Das anlegen eines alias so wie du es beschrieben hast kann leider auch nicht Nachvollziehen

                    1. Hast du die Bilder in VIS 1 an die korrekte Stelle gelegt?
                    2. Wie legst du denn den Alias an? Ich, ohne Manager.

                    Ro75.

                    Wo und wie genau muss ich denn die Blder Ablegen?
                    Eigentlich mit dem Allias Manager, wie geht es denn sonst?

                    Walter.O. Ro75 2 Replies Last reply Reply Quote 0
                    • Walter.O.
                      Walter.O. @Walter.O. last edited by

                      @walter-o von 06.65 auf 6.65 geänder, Ordner Wetter wurde angelegt und befüllt

                      1 Reply Last reply Reply Quote 0
                      • Ro75
                        Ro75 @Walter.O. last edited by

                        @walter-o sagte in Skript für Mondphase, Mondauf- und Untergang:

                        Wo und wie genau muss ich denn die Blder Ablegen?

                        fe756338-b18a-46d8-83e7-b8347f327fc3-image.png

                        zum Beispiel. Du kannst den Ordner benennen wie du willst, musst es dann halt anpassen.

                        ALIAS:
                        40b9e640-e018-4091-91fc-fe8cfc001333-image.png

                        Ro75.

                        Walter.O. 1 Reply Last reply Reply Quote 0
                        • Walter.O.
                          Walter.O. @Ro75 last edited by

                          @ro75 sagte in Skript für Mondphase, Mondauf- und Untergang:

                          @walter-o sagte in Skript für Mondphase, Mondauf- und Untergang:

                          Wo und wie genau muss ich denn die Blder Ablegen?

                          fe756338-b18a-46d8-83e7-b8347f327fc3-image.png

                          zum Beispiel. Du kannst den Ordner benennen wie du willst, musst es dann halt anpassen.

                          ALIAS:
                          40b9e640-e018-4091-91fc-fe8cfc001333-image.png

                          Ro75.

                          Beim links klick auf alias.0 kann ich auch im expertenmodus kein "Neues Objekt hinzufügen " finden

                          Ro75 1 Reply Last reply Reply Quote 0
                          • Ro75
                            Ro75 @Walter.O. last edited by

                            @walter-o aber das PLUS (+) hast du.
                            6f2fe90e-92dd-4d81-a5f4-500185cd6a4b-image.png

                            Ro75.

                            Walter.O. 1 Reply Last reply Reply Quote 0
                            • Walter.O.
                              Walter.O. @Ro75 last edited by

                              @ro75 Ja, sorry, gefunden

                              1 Reply Last reply Reply Quote 0
                              • Homoran
                                Homoran Global Moderator Administrators @Walter.O. last edited by

                                @walter-o sagte in Skript für Mondphase, Mondauf- und Untergang:

                                @homoran Der satz bezog sich auf das Alter des Treads

                                @walter-o sagte in Skript für Mondphase, Mondauf- und Untergang:

                                Bekommt ich noch eine Antwort auf meine Fragen?

                                ach so 🤔

                                1 Reply Last reply Reply Quote 0
                                • First post
                                  Last post

                                Support us

                                ioBroker
                                Community Adapters
                                Donate

                                1.1k
                                Online

                                32.4k
                                Users

                                81.2k
                                Topics

                                1.3m
                                Posts

                                5
                                31
                                1265
                                Loading More Posts
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes
                                Reply
                                • Reply as topic
                                Log in to reply
                                Community
                                Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                The ioBroker Community 2014-2023
                                logo