Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Parser-Ausdruck für Ebbe&Flut gesucht

    NEWS

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Parser-Ausdruck für Ebbe&Flut gesucht

    This topic has been deleted. Only users with topic management privileges can see it.
    • hg6806
      hg6806 Most Active @BBTown last edited by

      @bbtown
      👍

      1 Reply Last reply Reply Quote 0
      • liv-in-sky
        liv-in-sky @OliverIO last edited by

        @oliverio

        danke für den tipp - cheerio kannte ich nicht - das gefällt mir

        Image 3.png

        da werd ich mal ein bischen üben/rum probieren 🙂

        F 1 Reply Last reply Reply Quote 0
        • F
          fastfoot @liv-in-sky last edited by

          @liv-in-sky sagte in Parser-Ausdruck für Ebbe&Flut gesucht:

          da werd ich mal ein bischen üben/rum probieren

          habe cheerio schon des Öfteren hier erwähnt, hier findest du ein Beispiel wie man zB Tabellen sehr easy einlesen kann. Ansonsten ist die Doku auf Github empfehlenswert

          liv-in-sky 1 Reply Last reply Reply Quote 1
          • liv-in-sky
            liv-in-sky @fastfoot last edited by

            @fastfoot danke - werd ich durchstöbern

            1 Reply Last reply Reply Quote 0
            • liv-in-sky
              liv-in-sky @hg6806 last edited by

              @hg6806
              das konnte ich bis jetzt bekommen

              ein json mit den werten

              Image 1.png

              muss jetzt weg - nachmittag gehts weiter

              hg6806 1 Reply Last reply Reply Quote 0
              • hg6806
                hg6806 Most Active @liv-in-sky last edited by

                @liv-in-sky

                Cool!
                Wie hast du das in JSON gekriegt?
                Dann bräuchte ich das ja nur mit einer JSON-Tabelle darstellen.
                Auch das "fehlender-4.Wert-Problem" ist nicht drin, wie @Homoran prognostiziert hatte.

                Also ich hätte mir die einzelnen Werte auch als eine Art Tabelle dargestellt und das Problem mit dem evtl. fehlenden 4. Wert in einem Blockly (das höchste meiner Programmierkenntnisse) dann über einen Vergleich der Uhrzeiten als leeres Feld dargestellt, bzw. die anderen verschoben.

                liv-in-sky 1 Reply Last reply Reply Quote 0
                • liv-in-sky
                  liv-in-sky @hg6806 last edited by liv-in-sky

                  @hg6806

                  @Homoran hätte auch eine andere art der datenzerlegung gemacht

                  habe das mit cheerio probiert - du musst im adapter setting cheerio eintragen

                  Image 2.png

                  das script (schreibt nur ins log):

                  
                  const cheerio = require('cheerio');
                  const request = require('request');
                  request('https://de.tideschart.com/Spain/Canary-Islands/Provincia-de-Las-Palmas/Playa-de-Costa-Calma/Weekly/',(error, response, html)=>{
                    if (response.statusCode==200){
                                                 const $ = cheerio.load(html)
                                                 const list5 = $('*')
                                                                    .find('td:not(.sun)')
                                                                    .toArray()
                                                                    .map(element => { return $(element).text()}); //log(list5.length +"---"+list5)
                  
                                                 let dayArr=['Mo','Di','Mi','Do','Fr','Sa','So'];
                                                 let jsonArr=[];
                                                 for(let i=0;i<list5.length;i++) {//log(list5[i])
                                                     for (let day=0;day<dayArr.length;day++) { if (list5[i].includes(dayArr[day])) {
                                                                                                     jsonArr.push({
                                                                                                         "day":    list5[i],
                                                                                                         "erste":  list5[i+1],
                                                                                                         "zweite": list5[i+2],
                                                                                                         "dritte": list5[i+3],
                                                                                                         "vierte": list5[i+4]
                                                                                                     })
                         }}
                  } 
                  log(JSON.stringify(jsonArr))   //hier in dp schreiben
                  }});
                  
                  
                  
                  hg6806 1 Reply Last reply Reply Quote 0
                  • hg6806
                    hg6806 Most Active last edited by

                    @liv-in-sky
                    Läuft! Zumindest wird ins Log-File geschrieben.

                    1 Reply Last reply Reply Quote 0
                    • hg6806
                      hg6806 Most Active @liv-in-sky last edited by

                      @liv-in-sky

                      Wie bekommt man nun die Werte in ein JSON für eine Tabelle?

                      liv-in-sky 3 Replies Last reply Reply Quote 0
                      • liv-in-sky
                        liv-in-sky @hg6806 last edited by liv-in-sky

                        @hg6806 du legst dir einen datenpunkt vom typ zeichenkette/string an und sicherst darin das json

                        Image 5.png - das log kommentierst du aus - du machst // vor log(...)

                        dann brauchst du noch einen trigger

                        hier ein script - du musst dir deinen dp in der letzten zeile eintragen - trigger ist im script auch drin

                        
                        const cheerio = require('cheerio');
                        const request = require('request');
                        
                        let mySchedule1="  12 */4 * * * "; // alle 4 stunden bei minute 12
                        
                         schedule(mySchedule1,  function () {
                        request('https://de.tideschart.com/Spain/Canary-Islands/Provincia-de-Las-Palmas/Playa-de-Costa-Calma/Weekly/',(error, response, html)=>{
                         if (response.statusCode==200){
                                                      const $ = cheerio.load(html)
                                                      const list5 = $('*')
                                                                         .find('td:not(.sun)')
                                                                         .toArray()
                                                                         .map(element => { return $(element).text()}); //log(list5.length +"---"+list5)
                        
                                                      let dayArr=['Mo','Di','Mi','Do','Fr','Sa','So'];
                                                      let jsonArr=[];
                                                      for(let i=0;i<list5.length;i++) {//log(list5[i])
                                                          for (let day=0;day<dayArr.length;day++) { if (list5[i].includes(dayArr[day])) {
                                                                                                          jsonArr.push({
                                                                                                              "day":    list5[i],
                                                                                                              "erste":  list5[i+1],
                                                                                                              "zweite": list5[i+2],
                                                                                                              "dritte": list5[i+3],
                                                                                                              "vierte": list5[i+4]
                                                                                                          })
                              }}
                        } 
                        //log(JSON.stringify(jsonArr))   //hier in dp schreiben
                        
                        setState("0_userdata.0.meinDP",JSON.stringify(jsonArr))
                        }});
                         });
                        

                        in der vis nimmst du das inventwo-json (evtl inventwo installieren) widget und gibst deinen dp an

                        1 Reply Last reply Reply Quote 0
                        • liv-in-sky
                          liv-in-sky @hg6806 last edited by

                          @hg6806

                          habe hier einen export für json -widget - wie erwähnt evtl mußt du noch inventwo widgets installieren

                          Image 6.png

                          [{"tpl":"i-vis-jsontable","data":{"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,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","iTblRowLimit":"18","iTableRefreshRate":"0","iColCount":"5","iColShow1":"true","iTblTextAlign1":"left","iTblCellFormat1":"normal","iTblCellImageSize1":"200","iTblCellBooleanCheckbox1":"false","iTblCellBooleanColorFalse1":"#ff0000","iTblCellBooleanColorTrue1":"#00ff00","iTblCellNumberDecimals1":"2","iTblCellNumberDecimalSeperator1":".","iTblCellNumberThousandSeperator1":",","iTblCellThresholdsDp1":"","iTblCellThresholdsText1":"","iOpacityAll":"1","iTblRowEvenColor":"#333333","iTblRowUnevenColor":"#455618","iTblHeaderColor":"#333333","iRowSpacing":"10","iTblRowEvenTextColor":"#ffffff","iTblRowUnevenTextColor":"#ffffff","iTblHeaderTextColor":"#ffffff","iBorderSize":"0","iBorderStyleLeft":"none","iBorderStyleRight":"none","iBorderStyleUp":"none","iBorderStyleDown":"none","iBorderColor":"#ffffff","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,"oid":"0_userdata.0.CONTROL-OWN.TABELLEN.GezeitenInSpanien","iColShow2":"true","iTblTextAlign2":"left","iTblCellFormat2":"normal","iTblCellImageSize2":"200","iTblCellBooleanCheckbox2":"false","iTblCellBooleanColorFalse2":"#ff0000","iTblCellBooleanColorTrue2":"#00ff00","iTblCellNumberDecimals2":"2","iTblCellNumberDecimalSeperator2":".","iTblCellNumberThousandSeperator2":",","iTblCellThresholdsDp2":"","iTblCellThresholdsText2":"","iColShow3":"true","iTblTextAlign3":"left","iTblCellFormat3":"normal","iTblCellImageSize3":"200","iTblCellBooleanCheckbox3":"false","iTblCellBooleanColorFalse3":"#ff0000","iTblCellBooleanColorTrue3":"#00ff00","iTblCellNumberDecimals3":"2","iTblCellNumberDecimalSeperator3":".","iTblCellNumberThousandSeperator3":",","iTblCellThresholdsDp3":"","iTblCellThresholdsText3":"","iColShow4":"true","iTblTextAlign4":"left","iTblCellFormat4":"normal","iTblCellImageSize4":"200","iTblCellBooleanCheckbox4":"false","iTblCellBooleanColorFalse4":"#ff0000","iTblCellBooleanColorTrue4":"#00ff00","iTblCellNumberDecimals4":"2","iTblCellNumberDecimalSeperator4":".","iTblCellNumberThousandSeperator4":",","iTblCellThresholdsDp4":"","iTblCellThresholdsText4":"","iColShow5":"true","iTblTextAlign5":"left","iTblCellFormat5":"normal","iTblCellImageSize5":"200","iTblCellBooleanCheckbox5":"false","iTblCellBooleanColorFalse5":"#ff0000","iTblCellBooleanColorTrue5":"#00ff00","iTblCellNumberDecimals5":"2","iTblCellNumberDecimalSeperator5":".","iTblCellNumberThousandSeperator5":",","iTblCellThresholdsDp5":"","iTblCellThresholdsText5":"","iColShow6":"true","iTblTextAlign6":"left","iTblCellFormat6":"normal","iTblCellImageSize6":"200","iTblCellBooleanCheckbox6":"false","iTblCellBooleanColorFalse6":"#ff0000","iTblCellBooleanColorTrue6":"#00ff00","iTblCellNumberDecimals6":"2","iTblCellNumberDecimalSeperator6":".","iTblCellNumberThousandSeperator6":",","iTblCellThresholdsDp6":"","iTblCellThresholdsText6":""},"style":{"left":"157px","top":"556px","width":"774px","height":"368px"},"widgetSet":"vis-inventwo"}]
                          

                          1 Reply Last reply Reply Quote 0
                          • liv-in-sky
                            liv-in-sky @hg6806 last edited by liv-in-sky

                            @hg6806

                            in dem neuen script ist der trigger alle 4 stunden - dh. dass sich der dp im momen nicht füllt, sondern erst um 14:12

                            du kannst im script den trigger in mySchedule1 einmal auf "* * * * *" setzenu nd warten bis eine minute vergangen ist - dann wird das script ausgeführt und schreibt in den dp

                            danach änderst du das schedule wieder zurück auf " 12 */4 * * * "

                            1 Reply Last reply Reply Quote 0
                            • hg6806
                              hg6806 Most Active last edited by

                              Also, ein Datenpunkt mit den JSON Daten habe ich erstellen können.
                              Jedoch passiert nichts wenn ich das Widget importiere.
                              Invento habe ich installiert, den Datenpunkt habe ich wie folgt angepasst:
                              .....zindex":0,"oid":"0_userdata.0.GezeitenCostaCalma","iColShow2"......

                              Nachem ich auf importiere klicke passiert nichts.

                              Das normale basic table JSON zeigt auch nur "undefined" an.

                              liv-in-sky OliverIO 2 Replies Last reply Reply Quote 0
                              • liv-in-sky
                                liv-in-sky @hg6806 last edited by liv-in-sky

                                @hg6806 hast du die inventwo widgets installiert und mal den vis adapter reloaded und den vis editor reloaded im browser?

                                1 Reply Last reply Reply Quote 0
                                • OliverIO
                                  OliverIO @hg6806 last edited by

                                  @hg6806
                                  wetten er hat auf view importieren geklickt und nicht auf widget importieren?

                                  1 Reply Last reply Reply Quote 0
                                  • hg6806
                                    hg6806 Most Active last edited by

                                    @oliverio sagte in Parser-Ausdruck für Ebbe&Flut gesucht:

                                    @hg6806
                                    wetten er hat auf view importieren geklickt und nicht auf widget importieren?

                                    Nein, hatte schon Widget importiert, aber kein VIS reload gemacht.
                                    Auf jeden Fall bastle ich es mit dem Basic JSON.

                                    liv-in-sky 2 Replies Last reply Reply Quote 0
                                    • liv-in-sky
                                      liv-in-sky @hg6806 last edited by

                                      @hg6806 kannst du gerne machen - das inventwo ist halt einfacher und kann die farben schöner ändern

                                      1 Reply Last reply Reply Quote 0
                                      • liv-in-sky
                                        liv-in-sky @hg6806 last edited by

                                        @hg6806 kannst du den ein eigenes inventwo widget erstellen ?

                                        Image 1.png

                                        1 Reply Last reply Reply Quote 0
                                        • hg6806
                                          hg6806 Most Active last edited by

                                          So, hier ist es:
                                          aff504e3-5374-4474-898f-3e209228c7d4-image.png

                                          Werde jetzt noch etwas Finetunning machen.

                                          Tausend Dank nochmals für euren krassen Support!!!

                                          liv-in-sky 1 Reply Last reply Reply Quote 1
                                          • liv-in-sky
                                            liv-in-sky @hg6806 last edited by

                                            @hg6806

                                            ich finde es 2-zeilig noch etwas übersichtlicher

                                            Image 2.png

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate
                                            FAQ Cloud / IOT
                                            HowTo: Node.js-Update
                                            HowTo: Backup/Restore
                                            Downloads
                                            BLOG

                                            820
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            6
                                            65
                                            2443
                                            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