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 @Nashra last edited by

      @nashra Image mit Datenpunkt als Basis.

      Ro75.

      Nashra 1 Reply Last reply Reply Quote 0
      • Nashra
        Nashra Most Active Forum Testing @Ro75 last edited by

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

        @nashra Image mit Datenpunkt als Basis.

        Ro75.

        Hm, bei mir sieht Image aber anders aus als bei deinem Bild oben 🤔
        Screenshot 2025-03-18 153856.png

        Ro75 1 Reply Last reply Reply Quote 0
        • Ro75
          Ro75 @Nashra last edited by

          @nashra ich habe meins mal exportiert.

          [{"tpl":"tplValueStringImg","data":{"oid":"alias.0.Wetter.Icon_Mond","g_fixed":false,"g_visibility":false,"g_css_font_text":false,"g_css_background":false,"g_css_shadow_padding":false,"g_css_border":false,"g_gestures":false,"g_signals":false,"g_last_change":false,"refreshInterval":"0","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide"},"style":{"left":"1464px","top":"275px","width":"130px","height":"130px","z-index":"7"},"widgetSet":"basic"}]
          

          Kannst es importieren. Passe ggfs. den Datenpunkt an.

          Ro75.

          Nashra 1 Reply Last reply Reply Quote 1
          • Nashra
            Nashra Most Active Forum Testing @Ro75 last edited by

            @ro75
            Das ist das basic-string-img-src, daran hatte ich gar nicht gedacht 🤦‍♂️
            Naja, jetzt wird es angezeigt. Danke
            Da schaut man sich 100 mal die Widget-Liste an und sieht es trotzdem nicht 😬

            1 Reply Last reply Reply Quote 0
            • M
              Micha 3 last edited by Micha 3

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

              Zeilen 17 und 18 muss von dir an deine Position angepasst werden!

              Holt sich das suncalc nicht automatisch über die Systemeinstellung?

              Ro75 1 Reply Last reply Reply Quote 0
              • Ro75
                Ro75 @Micha 3 last edited by

                @micha-3 nein

                Ro75

                1 Reply Last reply Reply Quote 0
                • Ro75
                  Ro75 last edited by

                  Ab Zeile 103 gibt es Neuerungen und Änderungen im Skript. Der Wert für die Mondbeleuchtung wird jetzt auch mittels "suncalc" ermittelt.

                  Ro75.

                  1 Reply Last reply Reply Quote 1
                  • Nashra
                    Nashra Most Active Forum Testing last edited by

                    @Ro75
                    Schmeißt mir einen Error

                    javascript.0	09:57:01.843	info	Start JavaScript script.js.Wetter.Mondphase-Ro75 (Javascript/js)
                    javascript.0	09:57:01.859	error	script.js.Wetter.Mondphase-Ro75: ReferenceError: fRundenM is not defined
                    javascript.0	09:57:01.859	error	at MondBeleuchtung (script.js.Wetter.Mondphase-Ro75:116:20)
                    javascript.0	09:57:01.860	error	at script.js.Wetter.Mondphase-Ro75:125:1
                    javascript.0	09:57:01.860	error	at script.js.Wetter.Mondphase-Ro75:132:3
                    
                    Ro75 1 Reply Last reply Reply Quote 0
                    • Ro75
                      Ro75 @Nashra last edited by

                      @nashra Da fehlte eine Funktion. Ich habe bei mir ein paar Globale Funktionen, da ich diese immer wieder an diversen Stellen benutze, Die Funktion "fRundenM" ist jetzt mit im Skript enthalten.

                      Ro75.

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

                        @ro75 Ist das hier noch Aktuell?
                        Bekommt ich noch eine Antwort auf meine Fragen?
                        Ich kann diesen Alias so wie du Ihn Beschreibst nicht Anlegen, Alias Manager v2.0.0
                        Ich kenne mich mit dem Alias Manager nicht wirklich aus.

                        0_userdata.0.Wetter. habe ich per Hand angelegt

                        Das Kopierte und angepasste Script legt aber keine Datenpunkte an Z.b.:

                        createState(DPMond+'MondphaseIcon', 0, {name: 'MondphaseIcon' ,type: 'number', read: true, write: true});
                        

                        Fehler meldung:

                        script.js.common.Mondphasen compile failed:
                        at script.js.common.Mondphasen:19
                        

                        Danke für deine Hilfe

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

                          @walter-o das Skript her läuft, so wie es soll. Allerdings kenne ich nicht deine Anpassungen, damit es bei dir passt (z.B. Datenpunkte).

                          Ro75.

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

                            @ro75 Was bräuchtest du damit du mir weiterhelfen könntest?

                            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:

                              Bekommt ich noch eine Antwort auf meine Fragen?

                              wo hast du hier in diesem Thread etwas gefragt?

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

                                @homoran Der satz bezog sich auf das Alter des Treads

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

                                  @walter-o wo liegt denn das Problem genau? Ich verstehe nur Bahnhof.

                                  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 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
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            790
                                            Online

                                            32.4k
                                            Users

                                            81.2k
                                            Topics

                                            1.3m
                                            Posts

                                            5
                                            31
                                            1194
                                            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