Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Solarwetter

NEWS

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    22
    1
    1.1k

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    9.1k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    14
    1
    2.4k

Solarwetter

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
18 Beiträge 7 Kommentatoren 3.7k Aufrufe
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • P Offline
    P Offline
    pix
    schrieb am zuletzt editiert von
    #2

    Hallo Marco,

    ich weiß nicht, was mich geritten hat, aber irgendwie habe ich angefangen und konnte nicht aufhören, bis es fertig ist :lol:

    Ist eine Javascript-Lösung, also nix node-red. Script evtl. nach dem ersten Start nochmal durchstarten.

    Ausserdem musst du noch den Schedule unten anpassen auf die richtigen Uhrzeiten, zu der die Werte aktualisiert werden sollen. Besser nicht alle zur gleichen Minute.

    Sollte noch jemand anderes das Skript verwenden, schlage ich andere Uhrzeiten vor (zB. 07:23 - 07:25h oder so). Auf keinen Fall, sowas wie alle 10Minuten einstellen. Da kann es sein, das der Betreiber des Dienstes die Webseite einstellt.

    ! ````
    /* Solar-Wetter.com Werte abfragen
    Auf diese Anfrage hin: http://forum.iobroker.net/viewtopic.php?f=32&t=2584#p22850
    ! erstellt: 31.03.2016 von pix
    15.04.2016 Code optimiert,
    Zeitverzögerung zwischen dem Einlesen der Werte entfernt,
    Quell-Webseite wird nur noch einmal aufrufen
    */
    ! var logging = false;
    var link = 'http://www.vorhersage-plz-bereich.solar-wetter.com/html/995.html';
    ! // ab hier nix mehr ändern, solange die Webseite die Daten nicht ändert
    ! createState('SolarWetter.clearSky', 0, {
    name: 'Solar-Wetter.com clear Sky',
    desc: 'Solarleistung bei klarem Himmel',
    type: 'number',
    unit: 'kWh/kWp'
    });
    createState('SolarWetter.realSky_min', 0, {
    name: 'Solar-Wetter.com real Sky Minimum',
    desc: 'minimale Solarleistung bei jetzigem Himmel',
    type: 'number',
    unit: 'kWh/kWp'
    });
    createState('SolarWetter.realSky_max', 0, {
    name: 'Solar-Wetter.com real Sky Maximum',
    desc: 'maximale Solarleistung bei jetzigem Himmel',
    type: 'number',
    unit: 'kWh/kWp'
    });
    createState('SolarWetter.Datum', 0, {
    name: 'Solar-Wetter.com Datum der letzten Aktualisierung',
    desc: 'letzte Aktualisierung der Webseite',
    type: 'string'
    });
    ! var idClearSky = 'SolarWetter.clearSky',
    idRealSkyMin = 'SolarWetter.realSky_min',
    idRealSkyMax = 'SolarWetter.realSky_max',
    idDatum = 'SolarWetter.Datum';
    ! var request = require('request');
    ! function erstes_erstesAuftauchen(body,text1,text2) {
    var start = body.indexOf(text1) + text1.length;
    var ende = body.indexOf(text2);
    if (logging) log('Startposition: ' + start);
    if (logging) log('Endposition: ' + ende);
    var zwischenspeicher;
    if (((start != -1) && (ende != -1)) && (start<ende)) {/fehler/abfangen/zwischenspeicher="body.slice(start,ende);" if/(logging)/log(zwischenspeicher);/var/zwischenspeicher_array="zwischenspeicher.split(',');" teilen/vorm/komma/zwischenspeicher_array_vorn="zwischenspeicher_array[0].slice(zwischenspeicher_array[0].length-1,zwischenspeicher_array[0].length);" eine/stelle/log(zwischenspeicher_array_vorn);/zwischenspeicher_array_hinten="zwischenspeicher_array[1].slice(0,2);" zwei/stellen/nach/dem/log(zwischenspeicher_array_hinten);/return(parsefloat(zwischenspeicher_array_vorn/+/'.'/zwischenspeicher_array_hinten));/}/else/;/log(zwischenspeicher,/'error');/return(0);/function/erstes_letztesauftauchen(body,text1,text2)/start="body.indexOf(text1)" text1.length;/ende="body.lastIndexOf(text2);" letztes/auftauchen/log('startposition:/'/start);/log('endposition:/ende);/zwischenspeicher;/(((start/!="-1)" &&/(ende/(start<ende))/loesedatum/(body,text1)/-/5;/xx.xx.xxxx/((start/datum_array="zwischenspeicher.split('.');" xdatum="new" date();/log(datum_array[0]);log(datum_array[1]);log(datum_array[2]);/xdatum.setdate(datum_array[0]);/xdatum.setmonth(datum_array[1]-1);/xdatum.setfullyear(datum_array[2]);/log(xdatum);/return(formatdate(xdatum,/"tt.mm.jjjj"));/return(null);/findewertclearsky/(body)/text1="<td height=17 class=xl1525883 style='height:12.75pt'>clear sky:</td>" ,/erstes/text2="<td class=xl2425883>kWh/kWp</td>" clearsky="erstes_erstesAuftauchen(body,text1,text2);" log('clearsky:/clearsky);/setstate(idclearsky,/wert/in/objekt/schreiben/findewertrealskyminimum/realsky_min="erstes_erstesAuftauchen(body,text1,text2);" log('realskyminimum:/realsky_min);/setstate(idrealskymin,/findewertrealskymaximum/realsky_max="erstes_letztesAuftauchen(body,text1,text2);" log('realskymaximum:/realsky_max);/findedatum/jetzt="new" jahr="jetzt.getFullYear();" aktuelles/ermitteln/+'</td="">'; // erstes Auftauchen vom aktuellen Jahr finden
    var datum = loeseDatum(body,text1);
    if (logging) log('Datum: ' + datum);
    setState(idDatum, datum); // Wert in Objekt schreiben
    }
    ! function leseWebseite () {
    try {
    request(link, function (error, response, body) {
    if (!error && response.statusCode == 200) { // kein Fehler, Inhalt in body
    findeWertClearsky(body);
    findeWertRealskyMinimum(body);
    findeWertRealskyMaximum(body);
    findeDatum(body);
    } else log(error,'error'); // Error beim Einlesen
    });
    } catch (e) {
    log('Fehler (try) leseWebseite: ' + e, 'error');
    }
    }
    ! // bei Skriptstart
    leseWebseite();
    ! // Schedule
    schedule("59 9 * * *", leseWebseite);</ende))>

    Gib mal Rückmeldung!
    
    Noch ein Grund, sich auf Sonne zu freuen 8-)
    
    Gruß,
    
    Pix
    
    - 31.03.2016 -
    
    Edit 14:20 Uhr - Fehlerbehandlung korrigiert
    
    Edit 17:20 Uhr - Datum auf Quellwebseite wird zusätzlich eingelesen und als Datum-Objekt gespeichert
    
    Edit 23:56 Uhr - String für das Finden des Datums geändert, weil sich Webseite geändert hat.
    
    - 02.04.2016 -
    
    Edit 01:03 Uhr - Datum finden auf der Webseite jetzt über die aktuelle Jahreszahl, da sich Quellcode täglich ändert
    
    - 15.04.2016 -
    
    Edit 14:35 Uhr - Code optimiert, Zeitverzögerung zwischen dem Einlesen der Werte entfernt, Quell-Webseite wird nur noch einmal aufrufen

    ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

    1 Antwort Letzte Antwort
    0
    • K Offline
      K Offline
      krissi
      schrieb am zuletzt editiert von
      #3

      Unglaublich :) Das werde ich doch nachher direkt mal probieren!!!

      ioBroker in VM (unraid) / CCU2 für IP FB-Heizungssteuerung raspi3 / 3x Echo Dot / IKEA Tradfri / zigBee mit Conbee II

      1 Antwort Letzte Antwort
      0
      • derAugeD Offline
        derAugeD Offline
        derAuge
        schrieb am zuletzt editiert von
        #4

        SUPER Arbeit !!

        habe es direkt getestet

        LOG:

        ! javascript-0 2016-03-31 16:36:58 info script.js.Solar-Wetter_com_Werte_abfragen: RealSkyMaximum: 1.81
        ! javascript-0 2016-03-31 16:36:58 info script.js.Solar-Wetter_com_Werte_abfragen: 81
        ! javascript-0 2016-03-31 16:36:58 info script.js.Solar-Wetter_com_Werte_abfragen: 1
        ! javascript-0 2016-03-31 16:36:58 info
        ! javascript-0 2016-03-31 16:36:58 info 1,81
        ! javascript-0 2016-03-31 16:36:58 info script.js.Solar-Wetter_com_Werte_abfragen:
        ! javascript-0 2016-03-31 16:36:58 info script.js.Solar-Wetter_com_Werte_abfragen: Endposition: 18000
        ! javascript-0 2016-03-31 16:36:58 info script.js.Solar-Wetter_com_Werte_abfragen: Startposition: 17926
        ! javascript-0 2016-03-31 16:36:55 info script.js.Solar-Wetter_com_Werte_abfragen: RealSkyMinimum: 0.71
        ! javascript-0 2016-03-31 16:36:55 info script.js.Solar-Wetter_com_Werte_abfragen: 71
        ! javascript-0 2016-03-31 16:36:55 info script.js.Solar-Wetter_com_Werte_abfragen: 0
        ! javascript-0 2016-03-31 16:36:55 info
        ! javascript-0 2016-03-31 16:36:55 info 0,71
        ! javascript-0 2016-03-31 16:36:55 info script.js.Solar-Wetter_com_Werte_abfragen:
        ! javascript-0 2016-03-31 16:36:55 info script.js.Solar-Wetter_com_Werte_abfragen: Endposition: 17900
        ! javascript-0 2016-03-31 16:36:55 info script.js.Solar-Wetter_com_Werte_abfragen: Startposition: 17826
        ! javascript-0 2016-03-31 16:36:52 info script.js.Solar-Wetter_com_Werte_abfragen: ClearSky: 5.48
        ! javascript-0 2016-03-31 16:36:52 info script.js.Solar-Wetter_com_Werte_abfragen: 48
        ! javascript-0 2016-03-31 16:36:52 info script.js.Solar-Wetter_com_Werte_abfragen: 5
        ! javascript-0 2016-03-31 16:36:52 info
        ! javascript-0 2016-03-31 16:36:52 info 5,48
        ! javascript-0 2016-03-31 16:36:52 info script.js.Solar-Wetter_com_Werte_abfragen:
        ! javascript-0 2016-03-31 16:36:52 info script.js.Solar-Wetter_com_Werte_abfragen: Endposition: 17622
        ! javascript-0 2016-03-31 16:36:52 info script.js.Solar-Wetter_com_Werte_abfragen: Startposition: 17548
        ! javascript-0 2016-03-31 16:36:52 info script.js.Solar-Wetter_com_Werte_abfragen: registered 0 subscriptions and 1 schedule
        ! javascript-0 2016-03-31 16:36:52 info Start javascript script.js.Solar-Wetter_com_Werte_abfragen

        Was hälst du davon, das Datum von der Webseite auch noch abzufragen. Dann weiß man ob es neuere Daten gibt

        Gruß

        Jürgen

        1 Antwort Letzte Antwort
        0
        • P Offline
          P Offline
          pix
          schrieb am zuletzt editiert von
          #5

          Hallo Jürgen,@derAuge:

          SUPER Arbeit !!

          …

          Was hälst du davon, das Datum von der Webseite auch noch abzufragen. Dann weiß man ob es neuere Daten gibt ` danke für das Lob und die Anregung :lol: Habe das http://forum.iobroker.net/viewtopic.php?f=32&t=2584&p=22868#p22868 aktualisiert. Das Datum wird nun mit ausgelesen und als Datum-Objekt gespeichtert (nur TT.MM.YYYY - Uhrzeit ist die aktuelle Uhrzeit).

          Gruß,

          Pix

          ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

          1 Antwort Letzte Antwort
          0
          • derAugeD Offline
            derAugeD Offline
            derAuge
            schrieb am zuletzt editiert von
            #6

            fein

            ein kleiner schönheitsfehler ist drin (TT)

            17:46:38.919	[info]	javascript.0 script.js.Solar-Wetter_com_Werte_abfragen: Datum: TT.03.2016
            
            

            In Datum Array: 31,03,2016 passt es noch

            Gruß

            Jürgen

            1 Antwort Letzte Antwort
            0
            • P Offline
              P Offline
              pix
              schrieb am zuletzt editiert von
              #7

              Hallo Jürgen,

              bei mir geht's. Hast du den aktuellen Javascript Adapter? Kann sein, dass der Befehl formatDate bei dir noch nicht geht (Vermutung).

              Bin aber eben, beim Testen, auf ein neues Problem gestossen. Zumindest beim Datum ändert sich der String, durch den ich das Datum finde. Da muss ich mir was neues einfallen lassen. Ich könnte nach ".2016" suchen lassen, aber dann muss man das Skript jedes Jahr anpassen bzw. es gibt um den Jahreswechsel Probleme.

              Mal sehen, was sich sonst noch jeden Tag an der seite ändert. Ist ja alles noch alpha :) ;)

              Gruß,

              Pix

              ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

              1 Antwort Letzte Antwort
              0
              • M Offline
                M Offline
                Marcolotti
                schrieb am zuletzt editiert von
                #8

                Hallo,

                vielen vielen Dank, Pix. Du hast das wieder einmal super gemacht. :D Läuft.

                Gruß Marco

                CCU2-CuxD&Cul868MHz, 44xHM Geräte, 20xMAX Fenstersensoren.Acer Revo mit IoBroker, Tablet Captiva 9,7 SFHD. SMA SB2.5,STP7000TL20,SMA Energy Meter, Echo, Harmony, JeeLink868, Arduino 433MHz, MaxtoxCUL868,MilightEasyLED,Hue

                1 Antwort Letzte Antwort
                0
                • M Offline
                  M Offline
                  Marcolotti
                  schrieb am zuletzt editiert von
                  #9

                  Ich habe mich jetzt auch mal am Scripten versucht und eine Prognose für den Tagesertrag erstellt. Vielleicht braucht es ja mal jemand.

                  /* Prognose des Tagesertrages
                  Auf diese Anfrage hin: http://forum.iobroker.net/viewtopic.php?f=32&t=2584#p22850
                  
                  erstellt: 01.04.2016 von Marcolotti */
                  
                  var p = 2.5; // Gesamtleistung der Anlage in kWP <- Anpassen an die eigene Anlage
                  
                  createState('SolarWetter.PrognoseClearSky', 0, {
                      name: 'Prognose PV-Anlage klar',
                      desc: 'Tagesertrag bei klarem Himmel',
                      type: 'number',
                      unit: 'kWh'
                  });
                  createState('SolarWetter.PrognoseSkyMin', 0, {
                      name: 'Prognose PV-Anlage min',
                      desc: 'Tagesertrag minimum',
                      type: 'number',
                      unit: 'kWh'
                  });
                  createState('SolarWetter.PrognoseSkyMax', 0, {
                      name: 'Prognose PV-Anlage max',
                      desc: 'Tagesertrag Maximum',
                      type: 'number',
                      unit: 'kWh'
                  });
                  
                  schedule("*/60 * * * *",  function () { // alle 60 Minuten
                  var rmin = getState("SolarWetter.realSky_min").val;
                  var rmax = getState("SolarWetter.realSky_max").val;
                  var c = getState("SolarWetter.clearSky").val;
                  
                  var emin = p * rmin;
                  var emax = p * rmax;
                  var eclear = p * c;
                  
                      setState('SolarWetter.PrognoseSkyMax', emax);
                      setState('SolarWetter.PrognoseSkyMin', emin);
                      setState('SolarWetter.PrognoseClearSky', eclear);
                  }); // end of schedule
                  
                  

                  Bei mir funktioniert es.

                  CCU2-CuxD&Cul868MHz, 44xHM Geräte, 20xMAX Fenstersensoren.Acer Revo mit IoBroker, Tablet Captiva 9,7 SFHD. SMA SB2.5,STP7000TL20,SMA Energy Meter, Echo, Harmony, JeeLink868, Arduino 433MHz, MaxtoxCUL868,MilightEasyLED,Hue

                  1 Antwort Letzte Antwort
                  0
                  • ruhr70R Offline
                    ruhr70R Offline
                    ruhr70
                    schrieb am zuletzt editiert von
                    #10

                    @pix:

                    Sollte noch jemand anderes das Skript verwenden, schlage ich andere Uhrzeiten vor (zB. 07:23 - 07:25h oder so). Auf keinen Fall, sowas wie alle 10Minuten einstellen. Da kann es sein, das der Betreiber des Dienstes die Webseite einstellt. `

                    Wie immer freue ich mich die Beispiele von pix zu lesen :-) Man lernt doch immer was dazu.

                    Vielleicht macht es Sinn bei den zeitlichen Abfragen der Webseite eine Random Zeit ins Skript einzubauen und immer ein paar individuelle Minuten zu addieren. Kann man ja auch so realisieren, dass der individuelle Offset beim ersten Scriptstart ermittelt wird und in einem Datenpunkt geschrieben wird.Dann ist der Zeitpunkt der Abfrage für jeden Nutzer identisch, untereinander aber unterschiedlich.

                    function rand(min, max) {
                    	return Math.floor(Math.random() * (max - min + 1)) + min;
                    }
                    
                    var offset = rand(0,10); // ermittelt einen zufälligen Offset von 0-10 (z.B. Minuten)
                    
                    

                    Adapter: Fritzbox, Unify Circuit
                    Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                    1 Antwort Letzte Antwort
                    0
                    • P Offline
                      P Offline
                      pix
                      schrieb am zuletzt editiert von
                      #11

                      Hallo,

                      ich glaube die Abfrage der Webseite ist eigentlich ja kein Problem. Die Daten werden dort ja auch nur einmal täglich aktualisiert.

                      Bei der Abfrage des Datums habe ich heute nach Mitternacht wieder einen Fehler festgestellt. Der HTML Code der Seite ändert sich Täglich rund um das Datum. Das macht es schwierig, das Datum zu parsen. Ich würde die beiden Funktionen lieber wieder aus dem Skript herausnehmen.

                      Gruß

                      Pix

                      ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                      1 Antwort Letzte Antwort
                      0
                      • P Offline
                        P Offline
                        pix
                        schrieb am zuletzt editiert von
                        #12

                        Jetzt konnte ichs doch nicht lassen. Das Skript sucht jetzt nach ".2016" und springt dann für die Start- und Endposition fünf Positionen vor bzw. nach hinten. Die Jahreszahl ist die aktuelle Jahreszahl (also nächstes Jahr 2017 8-) ). Das kann dann an Neujahr/Silvester ein Problem geben, wenn das Skript nach 2017 sucht und die Daten von 2016 sind (oder umgekehrt), aber das ist wohl verschmerzbar. Wenn es sein muss, kann man die zwei Tage im Skript noch ausklammern.

                        OT: Hat eben 20Minuten gedauert, bis ich diese Antwort schreiben konnte. Der Forum-Server hat sich wohl schon schlafen gelegt…

                        Gruß,

                        Pix

                        ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                        1 Antwort Letzte Antwort
                        0
                        • P Offline
                          P Offline
                          pix
                          schrieb am zuletzt editiert von
                          #13

                          Hallo,

                          habe das Skript nochmal verbessert. Die Verzögerung zwischen den 4 Aufrufen den Quellwebseite wurde entfernt. Ebenso gibt es nur noch einen Aufruf der Webseite. Das freut den Anbieter.

                          Neues Skript http://forum.iobroker.net/viewtopic.php?f=32&t=2584&p=22868#p22868 eingepflegt.

                          Gruß

                          Pix

                          ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                          1 Antwort Letzte Antwort
                          0
                          • M Offline
                            M Offline
                            Matzes
                            schrieb am zuletzt editiert von
                            #14

                            Hi,

                            vielen Dank für die tolle Arbeit von euch beiden.

                            Ich hatte folgende Probleme mit dem Skript von Pix:

                            • Das Datum wurde immer mit TT.05.2016 ausgegeben, ich habe im Skript das Datumsformat von TT.MM.JJJJ auf DD.TT.JJJJ angepasst. Nun funktioniert de Ausgabe bei mir korrekt.

                            • Die Ausgabe des Maximumwertes wurde nicht zurückgeschrieben. Habe die Zeile "setState(idRealSkyMax, realsky_max); // Wert in Objekt schreiben" an der entsprechenden Stelle eingefügt

                            Zusätzlich habe ich das Berechnungsskript von Marcolotti in das Skript integriert und für diese 3 Werte noch die Logausgabe eingebaut.

                            /* Solar-Wetter.com Werte abfragen
                            Auf diese Anfrage hin: http://forum.iobroker.net/viewtopic.php?f=32&t=2584#p22850
                            
                            Abfrage erstellt: 31.03.2016 von pix
                            15.04.2016 Code optimiert, 
                                       Zeitverzögerung zwischen dem Einlesen der Werte entfernt,
                                       Quell-Webseite wird nur noch einmal aufrufen
                            
                            Prognose erstellt: 01.04.2016 von Marcolotti
                            
                            Skripte zusammengeführt: 01.05.2016 von MatzeS
                            - Anpassung Datumsformat von TT auf DD
                            - Anpassung findeWertRealskyMaximum das dieser Wert auch zurückgeschrieben wird
                            - Integration der Berechnungsprognose inkl. Logging
                            
                            */
                            
                            var logging = true;
                            var link = 'http://www.vorhersage-plz-bereich.solar-wetter.com/html/777.html';
                            var p = 5.32; // Gesamtleistung der Anlage in kWP <- Anpassen an die eigene Anlage
                            
                            // ab hier nix mehr ändern, solange die Webseite die Daten nicht ändert
                            
                            createState('SolarWetter.PrognoseClearSky', 0, {
                                name: 'Prognose PV-Anlage klar',
                                desc: 'Tagesertrag bei klarem Himmel',
                                type: 'number',
                                unit: 'kWh'
                            });
                            createState('SolarWetter.PrognoseSkyMin', 0, {
                                name: 'Prognose PV-Anlage min',
                                desc: 'Tagesertrag minimum',
                                type: 'number',
                                unit: 'kWh'
                            });
                            createState('SolarWetter.PrognoseSkyMax', 0, {
                                name: 'Prognose PV-Anlage max',
                                desc: 'Tagesertrag Maximum',
                                type: 'number',
                                unit: 'kWh'
                            });
                            createState('SolarWetter.clearSky', 0, {
                                name: 'Solar-Wetter.com clear Sky',
                                desc: 'Solarleistung bei klarem Himmel',
                                type: 'number',
                                unit: 'kWh/kWp'
                            });
                            createState('SolarWetter.realSky_min', 0, {
                                name: 'Solar-Wetter.com real Sky Minimum',
                                desc: 'minimale Solarleistung bei jetzigem Himmel',
                                type: 'number',
                                unit: 'kWh/kWp'
                            });
                            createState('SolarWetter.realSky_max', 0, {
                                name: 'Solar-Wetter.com real Sky Maximum',
                                desc: 'maximale Solarleistung bei jetzigem Himmel',
                                type: 'number',
                                unit: 'kWh/kWp'
                            });
                            createState('SolarWetter.Datum', 0, {
                                name: 'Solar-Wetter.com Datum der letzten Aktualisierung',
                                desc: 'letzte Aktualisierung der Webseite',
                                type: 'string'
                            });
                            
                            var idClearSky =   'SolarWetter.clearSky',
                                idRealSkyMin = 'SolarWetter.realSky_min',
                                idRealSkyMax = 'SolarWetter.realSky_max',
                                idDatum =      'SolarWetter.Datum';
                            
                            var request = require('request');
                            
                            function erstes_erstesAuftauchen(body,text1,text2) {
                                var start = body.indexOf(text1) + text1.length;
                                var ende = body.indexOf(text2);
                                if (logging) log('Startposition: ' + start);
                                if (logging) log('Endposition: ' + ende);
                                var zwischenspeicher;
                                if (((start != -1) && (ende != -1)) && (start<ende)) {/fehler/abfangen/zwischenspeicher="body.slice(start,ende);" if/(logging)/log(zwischenspeicher);/var/zwischenspeicher_array="zwischenspeicher.split(',');" teilen/vorm/komma/zwischenspeicher_array_vorn="zwischenspeicher_array[0].slice(zwischenspeicher_array[0].length-1,zwischenspeicher_array[0].length);" eine/stelle/log(zwischenspeicher_array_vorn);/zwischenspeicher_array_hinten="zwischenspeicher_array[1].slice(0,2);" zwei/stellen/nach/dem/log(zwischenspeicher_array_hinten);/return(parsefloat(zwischenspeicher_array_vorn/+/'.'/zwischenspeicher_array_hinten));/}/else/;/log(zwischenspeicher,/'error');/return(0);/function/erstes_letztesauftauchen(body,text1,text2)/start="body.indexOf(text1)" text1.length;/ende="body.lastIndexOf(text2);" letztes/auftauchen/log('startposition:/'/start);/log('endposition:/ende);/zwischenspeicher;/(((start/!="-1)" &&/(ende/(start<ende))/loesedatum/(body,text1)/-/5;/xx.xx.xxxx/((start/datum_array="zwischenspeicher.split('.');" xdatum="new" date();/log(datum_array[0]);log(datum_array[1]);log(datum_array[2]);/xdatum.setdate(datum_array[0]);/xdatum.setmonth(datum_array[1]-1);/xdatum.setfullyear(datum_array[2]);/log(xdatum);/return(formatdate(xdatum,/"dd.mm.jjjj"));/return(null);/findewertclearsky/(body)/text1="<td height=17 class=xl1525883 style='height:12.75pt'>clear sky:</td>" ,/erstes/text2="<td class=xl2425883>kWh/kWp</td>" clearsky="erstes_erstesAuftauchen(body,text1,text2);" log('clearsky:/clearsky);/setstate(idclearsky,/wert/in/objekt/schreiben/findewertrealskyminimum/realsky_min="erstes_erstesAuftauchen(body,text1,text2);" log('realskyminimum:/realsky_min);/setstate(idrealskymin,/findewertrealskymaximum/realsky_max="erstes_letztesAuftauchen(body,text1,text2);" log('realskymaximum:/realsky_max);/setstate(idrealskymax,/findedatum/jetzt="new" jahr="jetzt.getFullYear();" aktuelles/ermitteln/+'</td="">';                                 // erstes Auftauchen vom aktuellen Jahr finden
                                var datum = loeseDatum(body,text1);
                                if (logging) log('Datum: ' + datum);
                                setState(idDatum, datum);                                       // Wert in Objekt schreiben
                            }
                            
                            function Berechnung (body) {
                                var rmin = getState("SolarWetter.realSky_min").val;
                                var rmax = getState("SolarWetter.realSky_max").val;
                                var c = getState("SolarWetter.clearSky").val;
                            
                                var emin = Math.round(p * rmin * 100) / 100;
                                var emax = Math.round(p * rmax * 100) / 100;
                                var eclear = Math.round(p * c * 100) / 100;
                            
                                setState('SolarWetter.PrognoseSkyMax', emax);
                                if (logging) log('PrognoseSkyMax: ' + emax);
                                setState('SolarWetter.PrognoseSkyMin', emin);
                                if (logging) log('PrognoseSkyMin: ' + emin);
                                setState('SolarWetter.PrognoseClearSky', eclear);
                                if (logging) log('PrognoseClearSky: ' + eclear);
                            }
                            
                            function leseWebseite () {
                                try {
                                    request(link, function (error, response, body) {
                                        if (!error && response.statusCode == 200) {              // kein Fehler, Inhalt in body
                                            findeWertClearsky(body);
                                            findeWertRealskyMinimum(body);
                                            findeWertRealskyMaximum(body);
                                            findeDatum(body);
                                            Berechnung(body);
                                        } else log(error,'error');                               // Error beim Einlesen
                                    });
                                } catch (e) {
                                    log('Fehler (try) leseWebseite: ' + e, 'error');
                                }   
                            }
                            
                            // bei Skriptstart
                            leseWebseite();
                            
                            // Schedule
                            schedule("59 4 * * *", leseWebseite);</ende))>
                            
                            1 Antwort Letzte Antwort
                            0
                            • ruhr70R Offline
                              ruhr70R Offline
                              ruhr70
                              schrieb am zuletzt editiert von
                              #15

                              @Matzes:

                              • Das Datum wurde immer mit TT.05.2016 ausgegeben, ich habe im Skript das Datumsformat von TT.MM.JJJJ auf DD.TT.JJJJ angepasst. Nun funktioniert de Ausgabe bei mir korrekt. `

                              Das TT nicht funktioniert, scheint ein Fehler im Javascript-Adapter zu sein.

                              Das ging mal. Bei mir kommt derzeit auch ein TT für den Tag bei einigen Skripten.

                              Laut Beschreibung sollte es aber funktionieren:

                              https://github.com/iobroker/ioBroker.ja … md#example

                              Adapter: Fritzbox, Unify Circuit
                              Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                              1 Antwort Letzte Antwort
                              0
                              • HomoranH Nicht stören
                                HomoranH Nicht stören
                                Homoran
                                Global Moderator Administrators
                                schrieb am zuletzt editiert von
                                #16

                                Soll ich den Thread nicht lieber nach Skripte verschieben?

                                Hat ja mit nore-red nichts mehr zu tun.

                                Gruß

                                Rainer

                                kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                                1 Antwort Letzte Antwort
                                0
                                • P Offline
                                  P Offline
                                  pix
                                  schrieb am zuletzt editiert von
                                  #17

                                  Hallo,

                                  @Homoran:

                                  Soll ich den Thread nicht lieber nach Skripte verschieben?

                                  Hat ja mit nore-red nichts mehr zu tun.

                                  Gruß

                                  Rainer `
                                  Ja, scheint mir auch so.

                                  @ruhr70:

                                  @Matzes:

                                  • Das Datum wurde immer mit TT.05.2016 ausgegeben, ich habe im Skript das Datumsformat von TT.MM.JJJJ auf DD.TT.JJJJ angepasst. Nun funktioniert de Ausgabe bei mir korrekt. `

                                  Das TT nicht funktioniert, scheint ein Fehler im Javascript-Adapter zu sein.

                                  Das ging mal. Bei mir kommt derzeit auch ein TT für den Tag bei einigen Skripten.

                                  Laut Beschreibung sollte es aber funktionieren:

                                  https://github.com/iobroker/ioBroker.ja … md#example `
                                  Ich habe mal einen Workaround für formatDate eingebaut. Sind nur weinige Zeilen, die getauscht werden müssen:

                                  Bitte Funktion loeseDatum durch diese hier ersetzen

                                  function loeseDatum (body,text1) {
                                      var start = body.indexOf(text1) - 5;
                                      var ende = body.indexOf(text1) + 5;                                         // xx.xx.xxxx
                                      if (logging) log('Startposition: ' + start);
                                      if (logging) log('Endposition: ' + ende);
                                      var zwischenspeicher;
                                      if ((start != -1) && (ende != -1)) {                                        // Fehler abfangen
                                          zwischenspeicher = body.slice(start,ende);
                                          var datum_array = zwischenspeicher.split('.');
                                          var xDatum = new Date();
                                          if (logging) log(datum_array[0]);
                                          if (logging) log(datum_array[1]);
                                          if (logging) log(datum_array[2]);
                                          xDatum.setDate(datum_array[0]);
                                          xDatum.setMonth(datum_array[1]-1);
                                          xDatum.setFullYear(datum_array[2]);
                                          if (logging) log(xDatum);
                                          //return(formatDate(xDatum, "TT.MM.JJJJ"));
                                          var xDatum_workaround = (xDatum.getDate() <10 ? '0' + xDatum.getDate() : xDatum.getDate() ) + '.' + (xDatum.getMonth() <10 ? '0' + xDatum.getMonth() : xDatum.getMonth()) + '.' + xDatum.getFullYear(); 
                                          return(xDatum_workaround);
                                  
                                      } else {
                                          zwischenspeicher = 'Fehler beim Ausschneiden';
                                          log(zwischenspeicher, 'error');
                                          return(null);
                                      }
                                  }
                                  

                                  Das Datum kommt dann definitiv als String raus. Ist aber ok, denke ich.

                                  Gruß,

                                  Pix

                                  ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                                  1 Antwort Letzte Antwort
                                  0
                                  • P Offline
                                    P Offline
                                    pix
                                    schrieb am zuletzt editiert von
                                    #18

                                    Hab das Skript zum einem Adapter weitergebaut.

                                    Viel Spaß: http://forum.iobroker.net/viewtopic.php … 844#p25693

                                    Gruß

                                    Pix

                                    ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

                                    1 Antwort Letzte Antwort
                                    0
                                    Antworten
                                    • In einem neuen Thema antworten
                                    Anmelden zum Antworten
                                    • Älteste zuerst
                                    • Neuste zuerst
                                    • Meiste Stimmen


                                    Support us

                                    ioBroker
                                    Community Adapters
                                    Donate

                                    435

                                    Online

                                    32.5k

                                    Benutzer

                                    81.6k

                                    Themen

                                    1.3m

                                    Beiträge
                                    Community
                                    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                    ioBroker Community 2014-2025
                                    logo
                                    • Anmelden

                                    • Du hast noch kein Konto? Registrieren

                                    • Anmelden oder registrieren, um zu suchen
                                    • Erster Beitrag
                                      Letzter Beitrag
                                    0
                                    • Home
                                    • Aktuell
                                    • Tags
                                    • Ungelesen 0
                                    • Kategorien
                                    • Unreplied
                                    • Beliebt
                                    • GitHub
                                    • Docu
                                    • Hilfe