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. ioBroker Allgemein
  4. Adapter für Webseitenüberwachung

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.2k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Adapter für Webseitenüberwachung

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
adapter webseite überwachen
25 Beiträge 6 Kommentatoren 2.7k Aufrufe 5 Watching
  • Ä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.
  • liv-in-skyL liv-in-sky

    @aiouh mit einem blockly request kannst du eine seite einlesen und nach einem textteil suchen - ist der text immer in eine feste html struktur eingebettet, kannst du das definieren und den inhalt (text) lesen, vergleichen.

    bei einer änderung, könntest du dann eine message senden und dann den neuen text als neue variable nutzen, um eine weitere änderung festzustellen

    A Offline
    A Offline
    Aiouh
    schrieb am zuletzt editiert von
    #12

    @liv-in-sky Danke für die Anregung, da werde ich mal grübeln. Ist für mich dann was für einen längeren Winterabend, aber die kommen ja bald ;)

    liv-in-skyL 1 Antwort Letzte Antwort
    0
    • A Aiouh

      @liv-in-sky Danke für die Anregung, da werde ich mal grübeln. Ist für mich dann was für einen längeren Winterabend, aber die kommen ja bald ;)

      liv-in-skyL Offline
      liv-in-skyL Offline
      liv-in-sky
      schrieb am zuletzt editiert von
      #13

      @aiouh kannst du mir eine seite sagen und welchen text du überwachen willst ?

      nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

      A 1 Antwort Letzte Antwort
      0
      • liv-in-skyL liv-in-sky

        @aiouh kannst du mir eine seite sagen und welchen text du überwachen willst ?

        A Offline
        A Offline
        Aiouh
        schrieb am zuletzt editiert von
        #14

        @liv-in-sky aber gerne :)
        https://fraenkel-ag.de/immobilien-angebote/wohnen/

        Und wenn der folgende Text sich ändert weiss ich dass es Angebote gibt
        "Leider konnten keine Angebote mit den gewünschten Kriterien gefunden werden."

        Ist etwas irreführend, denn die Suchkriterien sind ja im System fix hinterlegt, man ruft also nur die Seite auf.

        liv-in-skyL 1 Antwort Letzte Antwort
        0
        • A Aiouh

          @liv-in-sky aber gerne :)
          https://fraenkel-ag.de/immobilien-angebote/wohnen/

          Und wenn der folgende Text sich ändert weiss ich dass es Angebote gibt
          "Leider konnten keine Angebote mit den gewünschten Kriterien gefunden werden."

          Ist etwas irreführend, denn die Suchkriterien sind ja im System fix hinterlegt, man ruft also nur die Seite auf.

          liv-in-skyL Offline
          liv-in-skyL Offline
          liv-in-sky
          schrieb am zuletzt editiert von
          #15

          @aiouh sagte in Adapter für Webseitenüberwachung:

          Leider konnten keine Angebote mit den gewünschten Kriterien gefunden werden

          die arbeiten über iframes - daher muss ich übe immobilienscout seite gehen) aber versuche mal dieses script (du brauchst kein "cheerio" wie oben ! im log zeigt es , ob es angebote gibt - wäre interessant, ob die log ausgabe stimmt, wenn dann angebote da sind

          const request = require('request');
          
           let mySchedule1="  12 */4 * * * "; // alle 4 stunden bei minute 12
          
            //schedule(mySchedule1,  function () {
          //request('https://fraenkel-ag.de/immobilien-angebote/wohnen/',(error, response, html)=>{ 
          request('https://portal.immobilienscout24.de/ergebnisliste/80909765',(error, response, html)=>{
            if (response.statusCode==200){ //log(html)
                
                          if (html.includes('Leider konnten keine Angebote mit den ')) {log("keine Angebote")}  else {log("neue Angebote sind da")}
          
          
          }});
          

          nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

          A 1 Antwort Letzte Antwort
          1
          • liv-in-skyL liv-in-sky

            @aiouh sagte in Adapter für Webseitenüberwachung:

            Leider konnten keine Angebote mit den gewünschten Kriterien gefunden werden

            die arbeiten über iframes - daher muss ich übe immobilienscout seite gehen) aber versuche mal dieses script (du brauchst kein "cheerio" wie oben ! im log zeigt es , ob es angebote gibt - wäre interessant, ob die log ausgabe stimmt, wenn dann angebote da sind

            const request = require('request');
            
             let mySchedule1="  12 */4 * * * "; // alle 4 stunden bei minute 12
            
              //schedule(mySchedule1,  function () {
            //request('https://fraenkel-ag.de/immobilien-angebote/wohnen/',(error, response, html)=>{ 
            request('https://portal.immobilienscout24.de/ergebnisliste/80909765',(error, response, html)=>{
              if (response.statusCode==200){ //log(html)
                  
                            if (html.includes('Leider konnten keine Angebote mit den ')) {log("keine Angebote")}  else {log("neue Angebote sind da")}
            
            
            }});
            
            A Offline
            A Offline
            Aiouh
            schrieb am zuletzt editiert von
            #16

            @liv-in-sky Wow, Vielen Dank. Ich lass das mal tuckern und bin gespannt :+1:

            liv-in-skyL 1 Antwort Letzte Antwort
            0
            • A Aiouh

              @liv-in-sky Wow, Vielen Dank. Ich lass das mal tuckern und bin gespannt :+1:

              liv-in-skyL Offline
              liv-in-skyL Offline
              liv-in-sky
              schrieb am zuletzt editiert von liv-in-sky
              #17

              @aiouh

              heute gab es ein neues angebot

              habe das script so verändert, das eine nachricht auf alexa kommt, wenn neues angebot da ist und auch, wenn ein angebot verschwindet - ich hoffe, dass script macht alles richtig - werden wir dann sehen, wenn sich die angebote ändern bzw gelöscht bzw dazukommen

              • du musst das mit dem cheerio - wie oben erklärt" machen
              • du brauchst 2 datenpunkte, die du im script oben einträgst
              • man kann auch eine benachrichtigung für telegram, whatsapp,email oder sowas dazufügn
              • es ist jetzt ein schedule drin - dann läuft es automatisch

              //LINK FORUM
              //https://forum.iobroker.net/post/672195
              //@liv-in-sky 1.9.21
              
              const cheerio = require('cheerio');
              
              
              
              //----HIER MUSS SETTING ANGEPASST WERDEN----------------------------------------------------------------------------------------------------
              
               let mySavedDataDP="0_userdata.0.CONTROL-OWN.AAATEST.ImmoScoutAngebote";  //dp für die existierenden angebote
               let myAlarmDP='alexa2.0.Echo-Devices.G0916D10016202R7.Commands.speak';  // alexadp oder irgend ein datenpunkt vom typ : zeichenkette/string
              
              //----AB HIER NICHTS ÄNDERN-----------------------------------------------------------------------------------------------------------------
              
              
               if(getState(mySavedDataDP).val==null || getState(mySavedDataDP).val==undefined || getState(mySavedDataDP).val=="" ) setState(mySavedDataDP,[].toString())
              
              const request = require('request');
              
              const equalsIgnoreOrder = (a, b) => {
               if (a.length !== b.length) return false;
               const uniqueValues = new Set([...a, ...b]);
               for (const v of uniqueValues) {
                 const aCount = a.filter(e => e === v).length;
                 const bCount = b.filter(e => e === v).length;
                 if (aCount !== bCount) return false;
               }
               return true;
              }
              
              let mySchedule1="  9,19,59 9-23 * * * "; // 
              
               schedule(mySchedule1,  function () {
              
                 
                 let mySavedData=getState(mySavedDataDP).val.split(",")
              request('https://portal.immobilienscout24.de/ergebnisliste/80909765',(error, response, html)=>{
               if (response.statusCode==200){ //log(html)
              
                const $ = cheerio.load(html)
                                            const list4 = $('*')
                                                               .find('figure > a')
                                                               .toArray()
                                                               .map(element => { return $(element).attr('href')}); //log(list4.length +"---"+list4)
                                             let list5; 
                                             list4.length>0 ? list5 = list4.map(x => x.replace(/(\/.*?\/.*?\/.*?)\/.*/,"$1")) : list5=[];                  
                   
                             if (html.includes('Leider konnten keine Angebote mit den ')) {log("keine Angebote")} 
                              else {
                            
                                   //  log("Vergleich "+equalsIgnoreOrder(list5,mySavedData).toString())
                                   //  log("Vergleich "+list5+"  ---  "+mySavedData);
                                     if(!equalsIgnoreOrder(list5,mySavedData)) {
                                                                              if(list5.length < mySavedData.length) { log("ein Angebote ist weg");
                                                                                                                       setState(myAlarmDP,"ein Angebote ist weg");
                                                                               } 
                                                                               else {setState(myAlarmDP,"neue Angebote sind da für immobilienscout");
                                                                                     log("neue Angebote sind da") ;}
                                                                              
                                                                              
                                                                              mySavedData=[]; mySavedData = list5.slice(0); //Array Copy
                                                                              setState(mySavedDataDP,mySavedData.toString());
                                                                             // log(list5[0]+"  ---  "+mySavedData);
              
                                     }
              
                                 }
                                 }
              
              
              });
               });
              
              
              
              
              
              

              nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

              A 2 Antworten Letzte Antwort
              0
              • liv-in-skyL liv-in-sky

                @aiouh

                heute gab es ein neues angebot

                habe das script so verändert, das eine nachricht auf alexa kommt, wenn neues angebot da ist und auch, wenn ein angebot verschwindet - ich hoffe, dass script macht alles richtig - werden wir dann sehen, wenn sich die angebote ändern bzw gelöscht bzw dazukommen

                • du musst das mit dem cheerio - wie oben erklärt" machen
                • du brauchst 2 datenpunkte, die du im script oben einträgst
                • man kann auch eine benachrichtigung für telegram, whatsapp,email oder sowas dazufügn
                • es ist jetzt ein schedule drin - dann läuft es automatisch

                //LINK FORUM
                //https://forum.iobroker.net/post/672195
                //@liv-in-sky 1.9.21
                
                const cheerio = require('cheerio');
                
                
                
                //----HIER MUSS SETTING ANGEPASST WERDEN----------------------------------------------------------------------------------------------------
                
                 let mySavedDataDP="0_userdata.0.CONTROL-OWN.AAATEST.ImmoScoutAngebote";  //dp für die existierenden angebote
                 let myAlarmDP='alexa2.0.Echo-Devices.G0916D10016202R7.Commands.speak';  // alexadp oder irgend ein datenpunkt vom typ : zeichenkette/string
                
                //----AB HIER NICHTS ÄNDERN-----------------------------------------------------------------------------------------------------------------
                
                
                 if(getState(mySavedDataDP).val==null || getState(mySavedDataDP).val==undefined || getState(mySavedDataDP).val=="" ) setState(mySavedDataDP,[].toString())
                
                const request = require('request');
                
                const equalsIgnoreOrder = (a, b) => {
                 if (a.length !== b.length) return false;
                 const uniqueValues = new Set([...a, ...b]);
                 for (const v of uniqueValues) {
                   const aCount = a.filter(e => e === v).length;
                   const bCount = b.filter(e => e === v).length;
                   if (aCount !== bCount) return false;
                 }
                 return true;
                }
                
                let mySchedule1="  9,19,59 9-23 * * * "; // 
                
                 schedule(mySchedule1,  function () {
                
                   
                   let mySavedData=getState(mySavedDataDP).val.split(",")
                request('https://portal.immobilienscout24.de/ergebnisliste/80909765',(error, response, html)=>{
                 if (response.statusCode==200){ //log(html)
                
                  const $ = cheerio.load(html)
                                              const list4 = $('*')
                                                                 .find('figure > a')
                                                                 .toArray()
                                                                 .map(element => { return $(element).attr('href')}); //log(list4.length +"---"+list4)
                                               let list5; 
                                               list4.length>0 ? list5 = list4.map(x => x.replace(/(\/.*?\/.*?\/.*?)\/.*/,"$1")) : list5=[];                  
                     
                               if (html.includes('Leider konnten keine Angebote mit den ')) {log("keine Angebote")} 
                                else {
                              
                                     //  log("Vergleich "+equalsIgnoreOrder(list5,mySavedData).toString())
                                     //  log("Vergleich "+list5+"  ---  "+mySavedData);
                                       if(!equalsIgnoreOrder(list5,mySavedData)) {
                                                                                if(list5.length < mySavedData.length) { log("ein Angebote ist weg");
                                                                                                                         setState(myAlarmDP,"ein Angebote ist weg");
                                                                                 } 
                                                                                 else {setState(myAlarmDP,"neue Angebote sind da für immobilienscout");
                                                                                       log("neue Angebote sind da") ;}
                                                                                
                                                                                
                                                                                mySavedData=[]; mySavedData = list5.slice(0); //Array Copy
                                                                                setState(mySavedDataDP,mySavedData.toString());
                                                                               // log(list5[0]+"  ---  "+mySavedData);
                
                                       }
                
                                   }
                                   }
                
                
                });
                 });
                
                
                
                
                
                

                A Offline
                A Offline
                Aiouh
                schrieb am zuletzt editiert von
                #18

                @liv-in-sky :) Test läuft :+1:

                1 Antwort Letzte Antwort
                0
                • liv-in-skyL liv-in-sky

                  @aiouh

                  heute gab es ein neues angebot

                  habe das script so verändert, das eine nachricht auf alexa kommt, wenn neues angebot da ist und auch, wenn ein angebot verschwindet - ich hoffe, dass script macht alles richtig - werden wir dann sehen, wenn sich die angebote ändern bzw gelöscht bzw dazukommen

                  • du musst das mit dem cheerio - wie oben erklärt" machen
                  • du brauchst 2 datenpunkte, die du im script oben einträgst
                  • man kann auch eine benachrichtigung für telegram, whatsapp,email oder sowas dazufügn
                  • es ist jetzt ein schedule drin - dann läuft es automatisch

                  //LINK FORUM
                  //https://forum.iobroker.net/post/672195
                  //@liv-in-sky 1.9.21
                  
                  const cheerio = require('cheerio');
                  
                  
                  
                  //----HIER MUSS SETTING ANGEPASST WERDEN----------------------------------------------------------------------------------------------------
                  
                   let mySavedDataDP="0_userdata.0.CONTROL-OWN.AAATEST.ImmoScoutAngebote";  //dp für die existierenden angebote
                   let myAlarmDP='alexa2.0.Echo-Devices.G0916D10016202R7.Commands.speak';  // alexadp oder irgend ein datenpunkt vom typ : zeichenkette/string
                  
                  //----AB HIER NICHTS ÄNDERN-----------------------------------------------------------------------------------------------------------------
                  
                  
                   if(getState(mySavedDataDP).val==null || getState(mySavedDataDP).val==undefined || getState(mySavedDataDP).val=="" ) setState(mySavedDataDP,[].toString())
                  
                  const request = require('request');
                  
                  const equalsIgnoreOrder = (a, b) => {
                   if (a.length !== b.length) return false;
                   const uniqueValues = new Set([...a, ...b]);
                   for (const v of uniqueValues) {
                     const aCount = a.filter(e => e === v).length;
                     const bCount = b.filter(e => e === v).length;
                     if (aCount !== bCount) return false;
                   }
                   return true;
                  }
                  
                  let mySchedule1="  9,19,59 9-23 * * * "; // 
                  
                   schedule(mySchedule1,  function () {
                  
                     
                     let mySavedData=getState(mySavedDataDP).val.split(",")
                  request('https://portal.immobilienscout24.de/ergebnisliste/80909765',(error, response, html)=>{
                   if (response.statusCode==200){ //log(html)
                  
                    const $ = cheerio.load(html)
                                                const list4 = $('*')
                                                                   .find('figure > a')
                                                                   .toArray()
                                                                   .map(element => { return $(element).attr('href')}); //log(list4.length +"---"+list4)
                                                 let list5; 
                                                 list4.length>0 ? list5 = list4.map(x => x.replace(/(\/.*?\/.*?\/.*?)\/.*/,"$1")) : list5=[];                  
                       
                                 if (html.includes('Leider konnten keine Angebote mit den ')) {log("keine Angebote")} 
                                  else {
                                
                                       //  log("Vergleich "+equalsIgnoreOrder(list5,mySavedData).toString())
                                       //  log("Vergleich "+list5+"  ---  "+mySavedData);
                                         if(!equalsIgnoreOrder(list5,mySavedData)) {
                                                                                  if(list5.length < mySavedData.length) { log("ein Angebote ist weg");
                                                                                                                           setState(myAlarmDP,"ein Angebote ist weg");
                                                                                   } 
                                                                                   else {setState(myAlarmDP,"neue Angebote sind da für immobilienscout");
                                                                                         log("neue Angebote sind da") ;}
                                                                                  
                                                                                  
                                                                                  mySavedData=[]; mySavedData = list5.slice(0); //Array Copy
                                                                                  setState(mySavedDataDP,mySavedData.toString());
                                                                                 // log(list5[0]+"  ---  "+mySavedData);
                  
                                         }
                  
                                     }
                                     }
                  
                  
                  });
                   });
                  
                  
                  
                  
                  
                  

                  A Offline
                  A Offline
                  Aiouh
                  schrieb am zuletzt editiert von Aiouh
                  #19

                  @liv-in-sky Hi, scheinz zu klappen. Der DBP sieht bei mir jetzt so aus.

                  /expose/80909765/129468267
                  

                  Wäre schick wenn das gleich eine URL wäre ;)

                  Im "Alexa DP" steht

                  ein Angebote ist weg
                  
                  liv-in-skyL 2 Antworten Letzte Antwort
                  0
                  • A Aiouh

                    @liv-in-sky Hi, scheinz zu klappen. Der DBP sieht bei mir jetzt so aus.

                    /expose/80909765/129468267
                    

                    Wäre schick wenn das gleich eine URL wäre ;)

                    Im "Alexa DP" steht

                    ein Angebote ist weg
                    
                    liv-in-skyL Offline
                    liv-in-skyL Offline
                    liv-in-sky
                    schrieb am zuletzt editiert von
                    #20

                    @aiouh

                    habe es verfolgt - heute kam ein neues angebot und wurde mir gemeldet - etwas später kam dann, ein angebot ist weg und auch dies war richtig - das neue angebot wurde wieder gelöscht - hat schon mal gut funktioniert

                    bei der url war ich mir nicht sicher, ob du die brauchst - wie möchtest du das eigentlich ansehen - über die vis oder über eine nachricht?

                    nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                    A 1 Antwort Letzte Antwort
                    0
                    • liv-in-skyL liv-in-sky

                      @aiouh

                      habe es verfolgt - heute kam ein neues angebot und wurde mir gemeldet - etwas später kam dann, ein angebot ist weg und auch dies war richtig - das neue angebot wurde wieder gelöscht - hat schon mal gut funktioniert

                      bei der url war ich mir nicht sicher, ob du die brauchst - wie möchtest du das eigentlich ansehen - über die vis oder über eine nachricht?

                      A Offline
                      A Offline
                      Aiouh
                      schrieb am zuletzt editiert von Aiouh
                      #21

                      @liv-in-sky Hey es ist schon Weihnachten. Nee mal im Ernst Vielen Dank dass Du Dich da so reinhängst.
                      Ich denke das Einfachste wäre es "einfach" eine URL als datapoint zu haben, den kann man ja auf Änderung prüfen und sich den Inhalt per mail/pushover schicken lassen. Oder in der vis verwenden., zumindest das krieg ich selbst mit Blockly hin :blush:

                      liv-in-skyL 2 Antworten Letzte Antwort
                      0
                      • A Aiouh

                        @liv-in-sky Hi, scheinz zu klappen. Der DBP sieht bei mir jetzt so aus.

                        /expose/80909765/129468267
                        

                        Wäre schick wenn das gleich eine URL wäre ;)

                        Im "Alexa DP" steht

                        ein Angebote ist weg
                        
                        liv-in-skyL Offline
                        liv-in-skyL Offline
                        liv-in-sky
                        schrieb am zuletzt editiert von
                        #22

                        @aiouh

                        habe mir das mal angeschaut - eigentlich wollte ich eine tabelle machen mit einem bild und das in der vis sichtbarmachen - leider geht das nicht so einfach, weil das alles ineinander verschachtelt ist - wäre ein zu großer aufwand

                        wegen der url teste ich gerade

                        nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                        1 Antwort Letzte Antwort
                        0
                        • A Aiouh

                          @liv-in-sky Hey es ist schon Weihnachten. Nee mal im Ernst Vielen Dank dass Du Dich da so reinhängst.
                          Ich denke das Einfachste wäre es "einfach" eine URL als datapoint zu haben, den kann man ja auf Änderung prüfen und sich den Inhalt per mail/pushover schicken lassen. Oder in der vis verwenden., zumindest das krieg ich selbst mit Blockly hin :blush:

                          liv-in-skyL Offline
                          liv-in-skyL Offline
                          liv-in-sky
                          schrieb am zuletzt editiert von liv-in-sky
                          #23

                          @aiouh

                          hier- mit url - test - wird in den myAlarmDP geschrieben

                          vergiss nicht die dp wieder einzutragen - sind ja meine drin :-)

                          zum testen, ob die url richtig ist, einfach den inhalt vom state mySavedDataDP unter dem objekte-tab im admin löschen - das script wird dann nach dem def. schedule ausgeführt und die url sollte dann drinstehen

                          EDIT - war fehler im script - muss ich erst ausbessern

                          nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                          1 Antwort Letzte Antwort
                          0
                          • A Aiouh

                            @liv-in-sky Hey es ist schon Weihnachten. Nee mal im Ernst Vielen Dank dass Du Dich da so reinhängst.
                            Ich denke das Einfachste wäre es "einfach" eine URL als datapoint zu haben, den kann man ja auf Änderung prüfen und sich den Inhalt per mail/pushover schicken lassen. Oder in der vis verwenden., zumindest das krieg ich selbst mit Blockly hin :blush:

                            liv-in-skyL Offline
                            liv-in-skyL Offline
                            liv-in-sky
                            schrieb am zuletzt editiert von liv-in-sky
                            #24

                            @aiouh

                            müßte eher stimmen

                            //LINK FORUM
                            //https://forum.iobroker.net/post/672195
                            //@liv-in-sky 2.9.21
                            
                            const cheerio = require('cheerio');
                            
                            
                            
                            //----HIER MUSS SETTING ANGEPASST WERDEN----------------------------------------------------------------------------------------------------
                            
                             let mySavedDataDP="0_userdata.0.CONTROL-OWN.AAATEST.ImmoScoutAngebote";  //dp für die existierenden angebote
                             let myAlarmDP='alexa2.0.Echo-Devices.G09XXXXXX2R7.Commands.speak';  // alexadp oder irgend ein datenpunkt vom typ : zeichenkette/string
                            
                            //----AB HIER NICHTS ÄNDERN-----------------------------------------------------------------------------------------------------------------
                            
                            
                             if(getState(mySavedDataDP).val==null || getState(mySavedDataDP).val==undefined || getState(mySavedDataDP).val=="" ) setState(mySavedDataDP,[].toString())
                            
                            const request = require('request');
                            
                            const equalsIgnoreOrder = (a, b) => {
                             if (a.length !== b.length) return false;
                             const uniqueValues = new Set([...a, ...b]);
                             for (const v of uniqueValues) {
                               const aCount = a.filter(e => e === v).length;
                               const bCount = b.filter(e => e === v).length;
                               if (aCount !== bCount) return false;
                             }
                             return true;
                            }
                            
                            let mySchedule1="  9,19,59 8-23 * * * "; // 
                            
                             schedule(mySchedule1,  function () {
                            
                               
                               let mySavedData=getState(mySavedDataDP).val.split(",")
                            request('https://portal.immobilienscout24.de/ergebnisliste/80909765',(error, response, html)=>{
                             if (response.statusCode==200){ //log(html)
                            
                              const $ = cheerio.load(html)
                                                          const list4 = $('*')
                                                                             .find('figure > a')
                                                                             .toArray()
                                                                             .map(element => { return $(element).attr('href')}); //log(list4.length +"---"+list4)
                                                           let list5; 
                                                           list4.length>0 ? list5 = list4.map(x => x.replace(/(\/.*?\/.*?\/.*?)\/.*/,"$1")) : list5=[];                  
                                 
                                           if (html.includes('Leider konnten keine Angebote mit den ')) {log("keine Angebote")} 
                                            else {
                                                 
                                                 //  log("Vergleich "+equalsIgnoreOrder(list5,mySavedData).toString())
                                                 //  log("Vergleich "+list5+"  ---  "+mySavedData);
                                                 
                                                   if(!equalsIgnoreOrder(list5,mySavedData)) {
                                                                                            if(list5.length < mySavedData.length) { log("ein Angebote ist weg");
                                                                                                                                     setState(myAlarmDP,"ein Angebote ist weg");
                                                                                                                                  } 
                                                                                             else {log(mySavedData.length)
                                                                                                  setState(myAlarmDP,`https://portal.immobilienscout24.de/`+list4[mySavedData.length-1]); 
                                                                                                  //setState('0_userdata.0.CONTROL-OWN.AAATEST.ImmoScoutUrl',`https://portal.immobilienscout24.de/`+list4[mySavedData.length-1]); 
                                                                                                  log("neue Angebote sind da") ;
                                                                                                  }
                                                                                             }
                                                                                             mySavedData=[]; mySavedData = list5.slice(0); //Array Copy
                                                                                             setState(mySavedDataDP,mySavedData.toString());
                                                 }
                                             }});
                             });
                            
                            
                            

                            nach einem gelösten Thread wäre es sinnvoll dies in der Überschrift des ersten Posts einzutragen [gelöst]-... Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat. Forum-Tools: PicPick https://picpick.app/en/download/ und ScreenToGif https://www.screentogif.com/downloads.html

                            A 1 Antwort Letzte Antwort
                            1
                            • liv-in-skyL liv-in-sky

                              @aiouh

                              müßte eher stimmen

                              //LINK FORUM
                              //https://forum.iobroker.net/post/672195
                              //@liv-in-sky 2.9.21
                              
                              const cheerio = require('cheerio');
                              
                              
                              
                              //----HIER MUSS SETTING ANGEPASST WERDEN----------------------------------------------------------------------------------------------------
                              
                               let mySavedDataDP="0_userdata.0.CONTROL-OWN.AAATEST.ImmoScoutAngebote";  //dp für die existierenden angebote
                               let myAlarmDP='alexa2.0.Echo-Devices.G09XXXXXX2R7.Commands.speak';  // alexadp oder irgend ein datenpunkt vom typ : zeichenkette/string
                              
                              //----AB HIER NICHTS ÄNDERN-----------------------------------------------------------------------------------------------------------------
                              
                              
                               if(getState(mySavedDataDP).val==null || getState(mySavedDataDP).val==undefined || getState(mySavedDataDP).val=="" ) setState(mySavedDataDP,[].toString())
                              
                              const request = require('request');
                              
                              const equalsIgnoreOrder = (a, b) => {
                               if (a.length !== b.length) return false;
                               const uniqueValues = new Set([...a, ...b]);
                               for (const v of uniqueValues) {
                                 const aCount = a.filter(e => e === v).length;
                                 const bCount = b.filter(e => e === v).length;
                                 if (aCount !== bCount) return false;
                               }
                               return true;
                              }
                              
                              let mySchedule1="  9,19,59 8-23 * * * "; // 
                              
                               schedule(mySchedule1,  function () {
                              
                                 
                                 let mySavedData=getState(mySavedDataDP).val.split(",")
                              request('https://portal.immobilienscout24.de/ergebnisliste/80909765',(error, response, html)=>{
                               if (response.statusCode==200){ //log(html)
                              
                                const $ = cheerio.load(html)
                                                            const list4 = $('*')
                                                                               .find('figure > a')
                                                                               .toArray()
                                                                               .map(element => { return $(element).attr('href')}); //log(list4.length +"---"+list4)
                                                             let list5; 
                                                             list4.length>0 ? list5 = list4.map(x => x.replace(/(\/.*?\/.*?\/.*?)\/.*/,"$1")) : list5=[];                  
                                   
                                             if (html.includes('Leider konnten keine Angebote mit den ')) {log("keine Angebote")} 
                                              else {
                                                   
                                                   //  log("Vergleich "+equalsIgnoreOrder(list5,mySavedData).toString())
                                                   //  log("Vergleich "+list5+"  ---  "+mySavedData);
                                                   
                                                     if(!equalsIgnoreOrder(list5,mySavedData)) {
                                                                                              if(list5.length < mySavedData.length) { log("ein Angebote ist weg");
                                                                                                                                       setState(myAlarmDP,"ein Angebote ist weg");
                                                                                                                                    } 
                                                                                               else {log(mySavedData.length)
                                                                                                    setState(myAlarmDP,`https://portal.immobilienscout24.de/`+list4[mySavedData.length-1]); 
                                                                                                    //setState('0_userdata.0.CONTROL-OWN.AAATEST.ImmoScoutUrl',`https://portal.immobilienscout24.de/`+list4[mySavedData.length-1]); 
                                                                                                    log("neue Angebote sind da") ;
                                                                                                    }
                                                                                               }
                                                                                               mySavedData=[]; mySavedData = list5.slice(0); //Array Copy
                                                                                               setState(mySavedDataDP,mySavedData.toString());
                                                   }
                                               }});
                               });
                              
                              
                              

                              A Offline
                              A Offline
                              Aiouh
                              schrieb am zuletzt editiert von
                              #25

                              @liv-in-sky Ich hab noch die e-mail Benachrichtigung gebastelt, scheint gut zu funktionieren.
                              Nochmals Vielen Dank :+1:

                              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
                              FAQ Cloud / IOT
                              HowTo: Node.js-Update
                              HowTo: Backup/Restore
                              Downloads
                              BLOG

                              647

                              Online

                              32.7k

                              Benutzer

                              82.4k

                              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