Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Einfach mal zeigen will….. :-) - Teil 1

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    Einfach mal zeigen will….. :-) - Teil 1

    This topic has been deleted. Only users with topic management privileges can see it.
    • T
      Tagiwara last edited by

      ich sage nur M E G A!!!

      Da bin ich meilenweit von entfernt. Magst du nicht deinen Code und deine Grafiken in ne Zip Packen und hochladen? 😉

      1 Reply Last reply Reply Quote 0
      • M
        mikiline last edited by

        Ich sag nur….. es hat keinerlei CSS oder sonst was!

        es handelt sich nur um Themes (im Widget einstellbar) und Hintergrundbilder. Natürlich noch dazu die richtigen icons die man immer in Google findet 😉

        Also, einfach nur mit reinen "Boradmitteln"

        1 Reply Last reply Reply Quote 0
        • N
          Nepomukl last edited by

          WoW, sieht toll aus, alle Achtung.

          Da wirst du wo nicht umhin kommen die hier alle hoch zu laden grins

          Mich interessiert z.B. ganz sehr die Seite der Dream. Was hast du da für php Seite gebastelt?

          Ich nehme mal an du kannst auch auf die entsprechenden Sender schalten. Und ist das die Reihenfolge

          deiner Favoriten? Kann man das auch auf Bouquets hoch brechen?

          Hast mich neugierig gemacht. Hätte da ganz starkes Interesse daran 😉

          Gruß Andreas

          1 Reply Last reply Reply Quote 0
          • M
            mikiline last edited by

            @Nepomukl:

            WoW, sieht toll aus, alle Achtung.

            Da wirst du wo nicht umhin kommen die hier alle hoch zu laden grins

            Mich interessiert z.B. ganz sehr die Seite der Dream. Was hast du da für php Seite gebastelt?

            Ich nehme mal an du kannst auch auf die entsprechenden Sender schalten. Und ist das die Reihenfolge

            deiner Favoriten? Kann man das auch auf Bouquets hoch brechen?

            Hast mich neugierig gemacht. Hätte da ganz starkes Interesse daran 😉

            Gruß Andreas `

            Bouquets lege ich von Hand an (nachdem es vorher von der Dream angezeigt wurde) und dann erstellt es dazu die einzelnen Buttons. Und ja, umschalten geht somit auch.

            Und nochmals ja, es ist angelegt wie meine Favoriten, da die Sender einzeln nacheinander aus der Dreambox xml Datei (Webseite) ausgelesen werden

            Das werde ich aber nicht teilen, da es einen kleinen Aufwand benötigt alles komplett einzustellen, das es auch funktioniert.

            Und momentan habe ich keine Zeit (und auch wenig Lust) einen Workaraound zu schreiben und jeden User der nun mit einer Enigma 2 Box kommt zu supporten.

            Tut mir leid…... ich mach das gerne hier im Forum mit den ioBroker skripten oder auch Widgets teilen, denn hier können mehrere User helfen und so stellt sich kein "privater" Support ein. Hoffe Ihr habt dazu Verständnis

            1 Reply Last reply Reply Quote 0
            • 2
              2hot4you last edited by Jey Cee

              Hallo Zusammen,

              ich möchte auch meine Visualisierung mit euch teilen. Danke an die vielen Inspirationen aus dem Forum 😉

              Im Hintergrund laufen diverse Skripte.

              Das ganze läuft auf einem Android Tablet mit Kiosk App. Die App verwaltet die Frontkamera, sodass das Display nur

              hell wird , wenn man davor steht, sonnst ist es dunkel gedimmt

              Gruß Michael
              4872_home4.png 4872_home5.png 4872_home3.png 4872_home.png 4872_home2.png 4872_home1.png

              1 Reply Last reply Reply Quote 0
              • T
                tomdeboom last edited by

                Guten Morgen Michael,

                sehr geil gelungen, Respekt. Gefällt mir was du da auf die Beine gestellt hast.

                Besonders die Seiten wo du die Info für Raspberry iobroker darstellst und die die Diagrammfunktion.

                Und auf deiner Startseite, würde mich interresieren wie du das mit den Mondphasen machst(welche icons?)?

                Gibt es da eine Möglichkeit das als Vorlage zu bekommen? 😉 Rasperry, Diagramm und Mond?

                Ich bin gerade am verändern von meinem Layout, ich stelle aber mal meine Startseite und Heizungsseite hier rein.

                Viel Grüße

                Tom

                5104_01_home.png
                5104_04_heizung.png

                1 Reply Last reply Reply Quote 0
                • L
                  Lebeao last edited by

                  Hallo tomdeboom,

                  kannst du mir bitte sagen, wie du das mit den Mülltonnen gemacht hast. Ich vermute mal mit einen Script, wenn ja, würdest du mir es zu verfügung stellen mit den Widget der Mülltonnen als Export.

                  MfG Marco

                  1 Reply Last reply Reply Quote 0
                  • T
                    tomdeboom last edited by

                    klar Marco, mache ich Morgen.

                    Gruß Tom

                    1 Reply Last reply Reply Quote 0
                    • A
                      andreasph last edited by

                      Hallo Marco,

                      ich habe Dein Heizungswidget, d.h. die modifizierte Variante von Bluefox, im Einsatz. Das Teil ist echt klasse, großen Respekt und vielen Dank dafür!

                      Es gibt einen kleinen Punkt der mich etwas stört, vielleich hast Du eine Lösung dazu. Wenn man die +/- Taste mehrmals hintereinander drückt wird zunächst die neue Solltemperatur angezeigt, anschliessend scheint aber der kommunizierte Wert eines Inkrement-Zwischenschritts von der CCU in das UI zurückgeschrieben zu werden. Die Temperatur springt dann munter hin- und her und es dauert eins, zwei Sekunden bis sich der Wert stabilisiert hat.

                      Das gleiche Verhalten zeigt übrigens auch das Metro-Widget. Der WAF ist dadurch ziemlich im Keller :lol:

                      Im Prinzip dürfte der von der CCU übernommene Wert erst zwei oder drei Sekunden nach dem letzten Tastendruck zurückgeschrieben werden. Mit einem Skript liesse sich das realisieren, erscheint mir aber viel Aufwand für ein allgemeines Problem?

                      Gruß

                      Andi

                      1 Reply Last reply Reply Quote 0
                      • 2
                        2hot4you last edited by Jey Cee

                        @tomdeboom:

                        Guten Morgen Michael,

                        sehr geil gelungen, Respekt. Gefällt mir was du da auf die Beine gestellt hast.

                        Besonders die Seiten wo du die Info für Raspberry iobroker darstellst und die die Diagrammfunktion.

                        Und auf deiner Startseite, würde mich interresieren wie du das mit den Mondphasen machst(welche icons?)?

                        Gibt es da eine Möglichkeit das als Vorlage zu bekommen? 😉 Rasperry, Diagramm und Mond?

                        Ich bin gerade am verändern von meinem Layout, ich stelle aber mal meine Startseite und Heizungsseite hier rein.

                        Viel Grüße

                        Tom `

                        Hallo Tom

                        anbei die "Vorlagen"

                        • die Daten der Raspberry Diagramme kommen vom Adapter - "rpi2.0"

                        Als Grundlage habe ich eine Seite vom "Material Design JS", kannst aber auch das script "Material Design" auf Deiner Seite rein kopieren

                        • die Mondphase vom Script, die Icons vom Adapter - "Mfd icons as PNG"

                        Gruß Michael
                        4872_script_material_design.txt
                        4872_widget_mondphase.txt
                        4872_widget_raspberry_info.txt
                        4872_script_mondphase.txt
                        4872_script.png

                        1 Reply Last reply Reply Quote 0
                        • L
                          Lebeao last edited by

                          @andreasph:

                          Hallo Marco,

                          ich habe Dein Heizungswidget, d.h. die modifizierte Variante von Bluefox, im Einsatz. Das Teil ist echt klasse, großen Respekt und vielen Dank dafür!

                          Es gibt einen kleinen Punkt der mich etwas stört, vielleich hast Du eine Lösung dazu. Wenn man die +/- Taste mehrmals hintereinander drückt wird zunächst die neue Solltemperatur angezeigt, anschliessend scheint aber der kommunizierte Wert eines Inkrement-Zwischenschritts von der CCU in das UI zurückgeschrieben zu werden. Die Temperatur springt dann munter hin- und her und es dauert eins, zwei Sekunden bis sich der Wert stabilisiert hat.

                          Das gleiche Verhalten zeigt übrigens auch das Metro-Widget. Der WAF ist dadurch ziemlich im Keller :lol:

                          Im Prinzip dürfte der von der CCU übernommene Wert erst zwei oder drei Sekunden nach dem letzten Tastendruck zurückgeschrieben werden. Mit einem Skript liesse sich das realisieren, erscheint mir aber viel Aufwand für ein allgemeines Problem?

                          Gruß

                          Andi `

                          Hallo Andi,

                          das ist mir auch aufgefallen, dafür habe ich bis jetzt keine Lösung. Das mit dem Script sollte gehen, aber das Springen stört mich nicht so sehr. Mit scripten kenne ich mich nicht so aus. 😞

                          1 Reply Last reply Reply Quote 0
                          • T
                            tomdeboom last edited by

                            Guten Morgen Andi,

                            vielleicht ist die "Volumencontrol" Lösung von Sigi auch für die Steuerung des Heizungsthermostates eine Lösung für das "Springen", vorraus gesetzt du hast eine CCU?

                            Ich hatte genau das selbe Problem, deswegen habe ich + und - wieder entfernt, auch weil ich eigentlich nur feste Werte brauche.

                            Ich werde es mir mal die Tage anschauen und es über die CCU versuchen und berichten.

                            @Marco: Habe dich nicht vergessen, wenn möglich bekommst du heute Abend von mir die Mülltonnen Geschichte… 😉

                            @Michael: Super vielen Dank für die Bereitstellung der Daten, werde ich mir wenn möglich gleich heute Abend Anschauen... 🙂

                            @sigi234:

                            Warum "Volumecontroll = Homematic Programm", funktioniert das mit "yamaha.0.Commands.volumeDown" und "yamaha.0.Commands.volumeUp" nicht?

                            Das ist nicht so einfach,

                            Ist ein Programm mit Http Befehlen via CuxD.

                            5104_screenshot__315_.png `

                            Gruß Tom

                            1 Reply Last reply Reply Quote 0
                            • T
                              tempestas last edited by Jey Cee

                              @Lebeao:

                              Hallo tomdeboom,

                              kannst du mir bitte sagen, wie du das mit den Mülltonnen gemacht hast. Ich vermute mal mit einen Script, wenn ja, würdest du mir es zu verfügung stellen mit den Widget der Mülltonnen als Export.

                              MfG Marco `

                              Hier ist das Skript.

                              Es erstellt vier (oder drei, oder zwei, je nachdem, was du brauchst) Datenpunkte mit den Tagen bis zur Abholung.

                              Die kannst du dann in VIS anwählen. Tomdeboom hat dafür ganz offensicht das Widget "rote Zahl" oder so ähnlich genommen. Jedenfalls ist das ein vordefiniertes Widget. Du kannst aber auch jedes andere Widget nehmen, das Zahlen händelt.

                              Bei den States musst du das reinschreiben, was du anlegen willst.

                              Die Suchvariablen definieren.

                              Und die ical Instanz anpassen.

                              Es steht jeweils im Skript, wo was zu tun ist.

                              Zu guter Letzt: das funktioniert nur, wenn dein Kalender NICHT "ersetze Datum mit Worten" aktiviert hat

                              // TESTSKRIPT FÜR NOXX
                              // Basis: tempestas
                              // erweitert / umgebaut für "four in one" mikiline
                              // Annahme ist, dass jede Müllart mindestens einmal im Monat abgeholt wird. Nicht getestet und eventuell problematisch ist es, wenn Müll seltener abgeholt wird.
                              debug = true;
                              // Anlegen JS State für VIS 
                              createState('javascript.0.muell.restmuell', 0);   //. gelb, blau usw entsprechend erstellen
                              createState('javascript.0.muell.gelbersack', 0);   //. gelb, blau usw entsprechend erstellen
                              createState('javascript.0.muell.papiertonne', 0);   //. gelb, blau usw entsprechend erstellen
                              createState('javascript.0.muell.biomuell', 0);   //. gelb, blau usw entsprechend erstellen
                              // Suchvariablen
                              var restmuell= "Rest";     // weitere Varialben für die anderen Müllsorten eintragen - die Suchworte müssen so im Kalender vorkommen
                              var gelbersack= "Gelber";     // weitere Varialben für die anderen Müllsorten eintragen - die Suchworte müssen so im Kalender vorkommen
                              var papiertonne= "Papier";     // weitere Varialben für die anderen Müllsorten eintragen - die Suchworte müssen so im Kalender vorkommen
                              var papierholsammlung= "Bio";     // weitere Varialben für die anderen Müllsorten eintragen - die Suchworte müssen so im Kalender vorkommen
                               // Kalender auslesen (HTML Format)
                                  // **************************************************************************************            
                                  // Termine auswerten aus html. Bereinigung der HTML Tags und Konvertierung in Plain Text
                                  // **************************************************************************************
                              
                                      var inhalt = getState("ical.2.data.html"/*HTML iCal table*/);           // an deinen eigenen Kalender anpassen
                                      var inhaltString = inhalt.val.toString();
                                      var inhaltStringReplace = inhaltString;
                                      var inhaltStringText;
                                      var i_search;
                              
                                      // remove all inside SCRIPT and STYLE tags
                                      inhaltStringReplace=inhaltStringReplace.replace(/<script.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/script>/gi, "");
                                      inhaltStringReplace=inhaltStringReplace.replace(/<style.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/style>/gi, "");
                              
                                      // remove BR tags
                                      inhaltStringReplace=inhaltStringReplace.replace(/
                              /gi, "");
                                      inhaltStringReplace=inhaltStringReplace.replace(/<br\s\>/gi, "");
                                      inhaltStringReplace=inhaltStringReplace.replace(/<br\>/gi, "");
                              
                                      // remove all else
                                      inhaltStringReplace=inhaltStringReplace.replace(/<(?:.|\s)*?>/g, "");
                              
                                      // get rid of html-encoded characters:
                                      inhaltStringReplace=inhaltStringReplace.replace(/ /gi," ");
                                      inhaltStringReplace=inhaltStringReplace.replace(/&/gi,"&");
                                      inhaltStringReplace=inhaltStringReplace.replace(/"/gi,'"');
                                      inhaltStringReplace=inhaltStringReplace.replace(//gi,'>');    
                              
                                      if(debug) log(inhaltStringReplace);
                              
                                      setState('javascript.0.muell.restmuell', getPos(restmuell));
                                      setState('javascript.0.muell.gelbersack', getPos(gelbersack));
                                      setState('javascript.0.muell.papiertonne', getPos(papiertonne));
                                      setState('javascript.0.muell.biomuell', getPos(biomuell));
                               // n-ten Treffer finden
                                      function nthIndex(str, pat, n){
                                      var L= str.length, i= -1;
                                      while(n-- && i++ <l){ i="str.indexOf(pat," i);/if/(i/</0)/break;/}/i_search="i;" funktion/zum/tage/im/monat/zählen/function/daysinmonth(month,/year)/{/return/new/date(year,/month,/0).getdate();/position/bestimmen/getpos(pos_welche_tonne)/var/pos="inhaltStringReplace.indexOf(pos_welche_tonne," 1);/if(debug)/log("pos/ist:/"+pos);/inhaltstringtext="inhaltStringReplace.substring((pos-13),pos-1);" log("datum/"+inhaltstringtext);/nthindex(inhaltstringtext,/".",/t_m="inhaltStringText.slice(0," i_search);/pos1="i_search+1;" log("pos1:/"/+pos1/);/2);/m_m="inhaltStringText.slice(pos1," pos2="i_search+1;" log("pos2:/+pos2/j_m="inhaltStringText.slice(pos2," inhaltstringtext.len/log(t_m/+"/,/+m_m/+j_m);/datum/heute/ermitteln/today="new" date();/log(today);/tag/t="today.getDate();" m="today.getMonth()+1;" jahr/j="today.getFullYear();" "+t+m+j);/berechnung/tagesdifferenzen/diff="0;" dim="DaysInMonth(m," j);/des/aktuellen/monats/log("tage/aktueller/monat:/"+dim);/if(j_m="">j || m_m > m) { // Prüfung: Jahr_Müll größer als aktuelles Jahr? Relevant bei Jahreswechsel ODEr Monat Müll größer aktueller Monat?
                              
                                          diff = parseInt(dim) - parseInt(t) + parseInt(t_m);          
                                      }
                                      else diff = parseInt(t_m) - parseInt(t);
                              
                                        if(debug) log("Tage bis zum nächsten Müll: "+diff);
                              
                                        return diff;
                                  }
                              //});
                              
                              1 Reply Last reply Reply Quote 0
                              • T
                                tomdeboom last edited by

                                Da war tempestas schneller… 😄

                                Ja, so in der Art habe ich es gemacht. Das Scipt nutze ich auch und auch das Widget "rote Zahl"...

                                Gruß Tom

                                1 Reply Last reply Reply Quote 0
                                • M
                                  mikiline last edited by

                                  @tempestas:

                                  @Lebeao:

                                  Hallo tomdeboom,

                                  kannst du mir bitte sagen, wie du das mit den Mülltonnen gemacht hast. Ich vermute mal mit einen Script, wenn ja, würdest du mir es zu verfügung stellen mit den Widget der Mülltonnen als Export.

                                  MfG Marco `

                                  Hier ist das Skript.

                                  Es erstellt vier (oder drei, oder zwei, je nachdem, was du brauchst) Datenpunkte mit den Tagen bis zur Abholung.

                                  Die kannst du dann in VIS anwählen. Tomdeboom hat dafür ganz offensicht das Widget "rote Zahl" oder so ähnlich genommen. Jedenfalls ist das ein vordefiniertes Widget. Du kannst aber auch jedes andere Widget nehmen, das Zahlen händelt.

                                  Bei den States musst du das reinschreiben, was du anlegen willst.

                                  Die Suchvariablen definieren.

                                  Und die ical Instanz anpassen.

                                  Es steht jeweils im Skript, wo was zu tun ist.

                                  Zu guter Letzt: das funktioniert nur, wenn dein Kalender NICHT "ersetze Datum mit Worten" aktiviert hat

                                  ! ````
                                  // TESTSKRIPT FÜR NOXX
                                  // Basis: tempestas
                                  // erweitert / umgebaut für "four in one" mikiline
                                  ! // Annahme ist, dass jede Müllart mindestens einmal im Monat abgeholt wird. Nicht getestet und eventuell problematisch ist es, wenn Müll seltener abgeholt wird.
                                  ! debug = true;
                                  ! // Anlegen JS State für VIS
                                  ! createState('javascript.0.muell.restmuell', 0); //. gelb, blau usw entsprechend erstellen
                                  createState('javascript.0.muell.gelbersack', 0); //. gelb, blau usw entsprechend erstellen
                                  createState('javascript.0.muell.papiertonne', 0); //. gelb, blau usw entsprechend erstellen
                                  createState('javascript.0.muell.biomuell', 0); //. gelb, blau usw entsprechend erstellen
                                  ! // Suchvariablen
                                  ! var restmuell= "Rest"; // weitere Varialben für die anderen Müllsorten eintragen - die Suchworte müssen so im Kalender vorkommen
                                  var gelbersack= "Gelber"; // weitere Varialben für die anderen Müllsorten eintragen - die Suchworte müssen so im Kalender vorkommen
                                  var papiertonne= "Papier"; // weitere Varialben für die anderen Müllsorten eintragen - die Suchworte müssen so im Kalender vorkommen
                                  var papierholsammlung= "Bio"; // weitere Varialben für die anderen Müllsorten eintragen - die Suchworte müssen so im Kalender vorkommen
                                  ! // Kalender auslesen (HTML Format)
                                  ! // **************************************************************************************
                                  // Termine auswerten aus html. Bereinigung der HTML Tags und Konvertierung in Plain Text
                                  // **************************************************************************************

                                      var inhalt = getState("ical.2.data.html"/*HTML iCal table*/);           // an deinen eigenen Kalender anpassen
                                      var inhaltString = inhalt.val.toString();
                                      var inhaltStringReplace = inhaltString;
                                      var inhaltStringText;
                                      var i_search;
                                      
                                      // remove all inside SCRIPT and STYLE tags
                                      inhaltStringReplace=inhaltStringReplace.replace(/<script.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/script>/gi, "");
                                      inhaltStringReplace=inhaltStringReplace.replace(/<style.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/style>/gi, "");
                                      
                                      // remove BR tags
                                      inhaltStringReplace=inhaltStringReplace.replace(/
                                  

                                  /gi, "");
                                  inhaltStringReplace=inhaltStringReplace.replace(/<br\s>/gi, "");
                                  inhaltStringReplace=inhaltStringReplace.replace(/<br>/gi, "");

                                      // remove all else
                                      inhaltStringReplace=inhaltStringReplace.replace(/<(?:.|\s)*?>/g, "");
                                       
                                      // get rid of html-encoded characters:
                                      inhaltStringReplace=inhaltStringReplace.replace(/ /gi," ");
                                      inhaltStringReplace=inhaltStringReplace.replace(/&/gi,"&");
                                      inhaltStringReplace=inhaltStringReplace.replace(/"/gi,'"');
                                      inhaltStringReplace=inhaltStringReplace.replace(//gi,'>');    
                                      
                                      if(debug) log(inhaltStringReplace);
                                      
                                      setState('javascript.0.muell.restmuell', getPos(restmuell));
                                      setState('javascript.0.muell.gelbersack', getPos(gelbersack));
                                      setState('javascript.0.muell.papiertonne', getPos(papiertonne));
                                      setState('javascript.0.muell.papierholsammlung', getPos(papierholsammlung));
                                  

                                  ! // n-ten Treffer finden
                                  ! function nthIndex(str, pat, n){
                                  var L= str.length, i= -1;
                                  while(n-- && i++ <l){ i="str.indexOf(pat," i);/if/(i/</0)/break;/}/i_search="i;" funktion/zum/tage/im/monat/zählen/function/daysinmonth(month,/year)/{/return/new/date(year,/month,/0).getdate();/position/bestimmen/getpos(pos_welche_tonne)/var/pos="inhaltStringReplace.indexOf(pos_welche_tonne," 1);/if(debug)/log("pos/ist:/"+pos);/inhaltstringtext="inhaltStringReplace.substring((pos-13),pos-1);" log("datum/"+inhaltstringtext);/nthindex(inhaltstringtext,/".",/t_m="inhaltStringText.slice(0," i_search);/pos1="i_search+1;" log("pos1:/"/+pos1/);/2);/m_m="inhaltStringText.slice(pos1," pos2="i_search+1;" log("pos2:/+pos2/j_m="inhaltStringText.slice(pos2," inhaltstringtext.len/log(t_m/+"/,/+m_m/+j_m);/datum/heute/ermitteln/today="new" date();/log(today);/tag/t="today.getDate();" m="today.getMonth()+1;" jahr/j="today.getFullYear();" "+t+m+j);/berechnung/tagesdifferenzen/diff="0;" dim="DaysInMonth(m," j);/des/aktuellen/monats/log("tage/aktueller/monat:/"+dim);/if(j_m="">j || m_m > m) { // Prüfung: Jahr_Müll größer als aktuelles Jahr? Relevant bei Jahreswechsel ODEr Monat Müll größer aktueller Monat?

                                          diff = parseInt(dim) - parseInt(t) + parseInt(t_m);          
                                      }
                                      else diff = parseInt(t_m) - parseInt(t);
                                              
                                        if(debug) log("Tage bis zum nächsten Müll: "+diff);
                                        
                                        return diff;
                                  }
                                  

                                  //});</l){></br></br\s></style.></script.>
                                  ```` `

                                  ich schätze mal das bei dir ein state "javascript.0.muell.biomuell" angelegt ist, jedoch keinen Wert anzeigt, stattdessen wird der Biomüll in dem State "javascript.0.muell.papierholsammlung" angezeigt…...

                                  Such " setState('javascript.0.muell.papierholsammlung', getPos(papierholsammlung));" und ersetze mit dem oben erstellten State

                                  Bio (den Du anscheinend geändert hast)

                                  Um es komplett zu machen, da du papierholsammlung nicht benötigst, würde ich alles ersetzen 😉 (mit den richtigen Variablen natürlich)

                                  1 Reply Last reply Reply Quote 0
                                  • T
                                    tempestas last edited by

                                    Danke für den Hinweis.

                                    ich hatte es in der Tat nur schnell auf die häufigeren Varianten des Mülls angepasst, um lebeao das Skript möglichst "passend zu machen" und dabei wohl den setState übersehen. Papiermüll und Papierabholung ist imho eher eine seltenere Kombi, als Biomüll. Das war mein Grund.

                                    Ich selber nutze das Skript wie an anderer Stelle geschrieben nicht in dieser Form.

                                    Habs jedenfalls angepasst

                                    1 Reply Last reply Reply Quote 0
                                    • M
                                      mikiline last edited by

                                      @tempestas:

                                      Danke für den Hinweis.

                                      ich hatte es in der Tat für schnell auf die häufigeren Varianten des Mülls angepasst, um lebeao das Skirpt möglichst "passend zu machen" und dabei wohl den setState übersehen. Papiermüll und Papierabholung ist imho eher eine seltenere Kombi, als Biomüll. Das war mein Grund.

                                      Ich selber nutze das Skript wie an anderer Stelle geschrieben nicht in dieser Form. `

                                      kein Problem, nur nicht das man sich wundert wenn man das Skript so implementiert 😉

                                      1 Reply Last reply Reply Quote 0
                                      • L
                                        Lebeao last edited by

                                        Danke schön dafür 🙂 🙂

                                        Ich habe aber noch ein Problem bei mir, zum Beispiel Biomüll -2 Tagen abgeholt wurde?? Er wurde gestern abgeholt und in 14 Tagen wieder.

                                        1 Reply Last reply Reply Quote 0
                                        • T
                                          tempestas last edited by

                                          Wie sieht bei dir der Kalendereintrag aus?

                                          Stimmen die anderen Werte?

                                          Was sagen die LOG Ausgaben?

                                          1 Reply Last reply Reply Quote 0
                                          • T
                                            tomdeboom last edited by Jey Cee

                                            Hier mal das oben genannte Script, wie ich es einsetze.

                                            Ich frage jeden Müllart einzel ab, hier z.B. "Altpapier", die Abfrage ist jeden Morgen um 01:00Uhr.

                                             /* – do not edit following lines - START --
                                             {
                                             "debug": false,
                                             "verbose": false
                                             }
                                             -- do not edit previous lines - END --*/
                                             function muell_alt() {
                                             // TESTSKRIPT FÜR NOXX
                                             // Annahme ist, dass jede Müllart mindestens einmal im Monat abgeholt wird. Nicht getestet und eventuell problematisch ist es, wenn Müll seltener abgeholt wird.
                                             debug = true;
                                             // Anlegen JS State für VIS
                                             //. gelb, blau usw entsprechend
                                             // createState('javascript.0.muell.Restabfall', 0);
                                             // createState('javascript.0.muell.Bioabfall', 0);
                                             createState('javascript.0.muell.Altpapier', 0);
                                             // createState('javascript.0.muell.Wertstoffe', 0);
                                             // Suchvariablen
                                             // var such1= "Restabfall"; // weitere Varialben für die anderen Müllsorten eintragen
                                             // var such1= "Bioabfall";
                                             var such1= "Altpapier";
                                             // var such1= "Wertstoffe";
                                             // Kalender auslesen (HTML Format)
                                             // **************************************************************************************
                                             // Termine auswerten aus html. Bereinigung der HTML Tags und Konvertierung in Plain Text
                                             // **************************************************************************************
                                             var inhalt = getState("ical.0.data.html"/*HTML iCal table*/);
                                             // an deinen eigenen Kalender anpassen
                                             var inhaltString = inhalt.val.toString();
                                             var inhaltStringReplace = inhaltString;
                                             var inhaltStringText;
                                             var i_search;
                                             // remove all inside SCRIPT and STYLE tags
                                             inhaltStringReplace=inhaltStringReplace.replace(/<script.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/script>/gi, "");
                                             inhaltStringReplace=inhaltStringReplace.replace(/<style.*>[\w\W]{1,}(.*?)[\w\W]{1,}<\/style>/gi, "");
                                             // remove BR tags
                                             inhaltStringReplace=inhaltStringReplace.replace(/
                                            /gi, "");
                                             inhaltStringReplace=inhaltStringReplace.replace(/<br\s\>/gi, "");
                                             inhaltStringReplace=inhaltStringReplace.replace(/<br\>/gi, "");
                                             // remove all else
                                             inhaltStringReplace=inhaltStringReplace.replace(/<(?:.|\s)*?>/g, "");
                                             // get rid of html-encoded characters:
                                             inhaltStringReplace=inhaltStringReplace.replace(/ /gi," ");
                                             inhaltStringReplace=inhaltStringReplace.replace(/&/gi,"&");
                                             inhaltStringReplace=inhaltStringReplace.replace(/"/gi,'"');
                                             inhaltStringReplace=inhaltStringReplace.replace(/
                                            inhaltStringReplace=inhaltStringReplace.replace(/>/gi,'>');
                                             if(debug) log(inhaltStringReplace);
                                             // n-ten Treffer finden
                                             function nthIndex(str, pat, n){
                                             var L= str.length, i= -1;
                                             while(n– && i++ <l){<br>i= str.indexOf(pat, i);
                                             if (i < 0) break;
                                             }
                                             i_search =i;
                                             }
                                             // Funktion zum Tage im Monat zählen
                                             function DaysInMonth(month, year) {
                                             return new Date(year, month, 0).getDate();
                                             }
                                             // Position bestimmen
                                             var pos = inhaltStringReplace.indexOf( such1, 1);
                                             if(debug) log("pos ist: "+pos);
                                             var inhaltStringText = inhaltStringReplace.substring((pos-13),pos-1);
                                             if(debug) log("Datum ist: "+inhaltStringText);
                                             nthIndex(inhaltStringText, ".", 1);
                                             var t_m = inhaltStringText.slice(0, i_search);
                                             var pos1 = i_search+1;
                                             if(debug) log("pos1: " +pos1 );
                                             nthIndex(inhaltStringText, ".", 2);
                                             var m_m = inhaltStringText.slice(pos1, i_search);
                                             var pos2 = i_search+1;
                                             if(debug) log("pos2: " +pos2 );
                                             var j_m = inhaltStringText.slice(pos2, inhaltStringText.len );
                                             log(t_m +" , " +m_m +" , " +j_m);
                                             // Datum heute ermitteln
                                             var today = new Date();
                                             if(debug) log(today);
                                             //Tag ermitteln
                                             var t = today.getDate();
                                             //Monat ermitteln
                                             var m = today.getMonth()+1;
                                             //Jahr ermitteln
                                             var j = today.getFullYear();
                                             if(debug) log("Datum heute ist: "+t+m+j);
                                             // Berechnung Tagesdifferenzen
                                             // Prüfung: Jahr_Müll größer als aktuelles Jahr? Relevant bei Jahreswechsel ODEr Monat Müll größer aktueller Monat?
                                             var diff = 0;
                                             var dim = DaysInMonth(m, j); // Tage des aktuellen Monats
                                             if(debug) log("Tage aktueller Monat: "+dim);
                                             if(j_m > j || m_m > m) {
                                             diff = parseInt(dim) - parseInt(t) + parseInt(t_m);
                                             }
                                             else diff = parseInt(t_m) - parseInt(t);
                                             if(debug) log("Tage bis zum nächsten Müll: "+diff);
                                             // setState('javascript.0.muell.Restabfall', diff);
                                             // setState('javascript.0.muell.Bioabfall', diff);
                                             setState('javascript.0.muell.Altpapier', diff);
                                             // setState('javascript.0.muell.Wertstoffe', diff);
                                             } // Ende muell_alt()
                                             schedule('01 00 * * *', muell_alt);
                                            

                                            Die Tonnendarstellung gibt es dann heute Abend.

                                            Gruß Tom

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            783
                                            Online

                                            31.7k
                                            Users

                                            79.8k
                                            Topics

                                            1.3m
                                            Posts

                                            133
                                            649
                                            297865
                                            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