HowTo: Müllabfuhrplan mit fixen Terminen Anzeige ww. in Stunden/Tagen

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • reschi
    Azubi
    • 24.09.2017
    • 6

    Hallo zusammen,
    ich habe auch das Problem, dass mein Programmbaustein nur "0" ausgibt, seit der Version 14.5.12.7 wie bei orli .
    Klicke auf die Grafik für eine vergrößerte Ansicht  Name: image.png Ansichten: 0 Größe: 14,0 KB ID: 417398
    Kann mir hier jemand weiterhelfen? Neustart Miniserver usw. haben nicht gebracht...

    Anbei mein Programm:



    // Müllabfuhr für loxforum.com
    //AI1: Minuten Aktualisierung
    //AQ1: Stunden bis Restmüllabholung
    //AQ2: Stunden bis Biomüllabholung
    //AQ3: Stunden bis Altpapierabholung
    //AQ4: Stunden bis Leichtstoffabholung

    float sleeptime, now, restleft, bioleft, papierleft, leichtleft;
    int rest[30], bio[30], papier[30], leicht[30]; //Arrays. Falls es mehr Termine sind, einfach die Klammerwerte erhöhen
    int lenrest, lenbio, lenpapier, lenleicht, i, k, year, hourrest, hourbio, hourpapier, hourleicht, minuterest, minutebio, minutepapier, minuteleicht, remtimerest, remtimebio, remtimepapier, remtimeleicht;

    year = 2024; //Jahr, für den der Müllkalender gilt
    hourrest = 10; //Stunde, an der die Müllabfuhr üblicherweise kommt (Restmüll)
    hourbio = 10; //Stunde, an der die Müllabfuhr üblicherweise kommt (Biomüll)
    hourpapier = 10; //Stunde, an der die Müllabfuhr üblicherweise kommt (Altpapier)
    hourleicht = 10; //Stunde, an der die Müllabfuhr üblicherweise kommt (Leichtstoff)
    minuterest = 0; //Minute, an der die Müllabfuhr üblicherweise kommt ;-)
    minutebio = 0; //Minute, an der die Müllabfuhr üblicherweise kommt ;-)
    minutepapier = 0; //Minute, an der die Müllabfuhr üblicherweise kommt ;-)
    minuteleicht = 0; //Minute, an der die Müllabfuhr üblicherweise kommt ;-)
    remtimerest = 16; //Stunden vor der Abholung bzgl. Erinnerung. IM STATUSBAUSTEIN ANPASSEN (oder umgekehrt)!
    remtimebio = 16; //Stunden vor der Abholung bzgl. Erinnerung. IM STATUSBAUSTEIN ANPASSEN (oder umgekehrt)!
    remtimepapier = 16; //Stunden vor der Abholung bzgl. Erinnerung. IM STATUSBAUSTEIN ANPASSEN (oder umgekehrt)!
    remtimeleicht = 16; //Stunden vor der Abholung bzgl. Erinnerung. IM STATUSBAUSTEIN ANPASSEN (oder umgekehrt)!

    while(TRUE)
    {
    sleeptime = 60*getinput(0); //Aktualisierungszeit in Sekunden
    now = getcurrenttime(); //aktuelle Zeit in Sekunden (seit 01.01.2009 0:00)

    //Daten der Restmüllabholung
    rest[0] = gettimeval(year-1, 12, 27, hourrest, minuterest, 0, 1); //Letzter Abfuhrtermin des alten Jahres
    rest[1] = gettimeval(year, 1, 10, hourrest, minuterest, 0, 1); //ab hier für das neue Jahr (Variable "year")
    rest[2] = gettimeval(year, 1, 24, hourrest, minuterest, 0, 1);
    rest[3] = gettimeval(year, 2, 8, hourrest, minuterest, 0, 1);
    rest[4] = gettimeval(year, 2, 21, hourrest, minuterest, 0, 1);
    rest[5] = gettimeval(year, 3, 6, hourrest, minuterest, 0, 1);
    rest[6] = gettimeval(year, 3, 20, hourrest, minuterest, 0, 1);
    rest[7] = gettimeval(year, 4, 3, hourrest, minuterest, 0, 1);
    rest[8] = gettimeval(year, 4, 17, hourrest, minuterest, 0, 1);
    rest[9] = gettimeval(year, 5, 4, hourrest, minuterest, 0, 1);
    rest[10] = gettimeval(year, 5, 15, hourrest, minuterest, 0, 1);
    rest[11] = gettimeval(year, 5, 29, hourrest, minuterest, 0, 1);
    rest[12] = gettimeval(year, 6, 12, hourrest, minuterest, 0, 1);
    rest[13] = gettimeval(year, 6, 26, hourrest, minuterest, 0, 1);
    rest[14] = gettimeval(year, 7, 10, hourrest, minuterest, 0, 1);
    rest[15] = gettimeval(year, 7, 24, hourrest, minuterest, 0, 1);
    rest[16] = gettimeval(year, 8, 7, hourrest, minuterest, 0, 1);
    rest[17] = gettimeval(year, 8, 21, hourrest, minuterest, 0, 1);
    rest[18] = gettimeval(year, 9, 4, hourrest, minuterest, 0, 1);
    rest[19] = gettimeval(year, 9, 18, hourrest, minuterest, 0, 1);
    rest[20] = gettimeval(year, 10, 2, hourrest, minuterest, 0, 1);
    rest[21] = gettimeval(year, 10, 16, hourrest, minuterest, 0, 1);
    rest[22] = gettimeval(year, 10, 30, hourrest, minuterest, 0, 1);
    rest[23] = gettimeval(year, 11, 13, hourrest, minuterest, 0, 1);
    rest[24] = gettimeval(year, 11, 27, hourrest, minuterest, 0, 1);
    rest[25] = gettimeval(year, 12, 11, hourrest, minuterest, 0, 1);
    rest[26] = gettimeval(year, 12, 21, hourrest, minuterest, 0, 1);

    //Schleife Zählen der vorh. Arrayelemente beim Restmüll
    lenrest=0;
    for(k=0; k<(sizeof(rest)/sizeof(int)); k++) {
    if(rest[k] > 0) {
    lenrest++;
    }
    }

    //Daten der Biomüllabholung
    bio[0] = gettimeval(year-1, 12, 20, hourbio, minutebio, 0, 1); //Letzter Abfuhrtermin des alten Jahres
    bio[1] = gettimeval(year, 1, 3, hourbio, minutebio, 0, 1); //ab hier für das neue Jahr (Variable "year")
    bio[2] = gettimeval(year, 1, 17, hourbio, minutebio, 0, 1);
    bio[3] = gettimeval(year, 1, 31, hourbio, minutebio, 0, 1);
    bio[4] = gettimeval(year, 2, 14, hourbio, minutebio, 0, 1);
    bio[5] = gettimeval(year, 2, 28, hourbio, minutebio, 0, 1);
    bio[6] = gettimeval(year, 3, 13, hourbio, minutebio, 0, 1);
    bio[7] = gettimeval(year, 3, 27, hourbio, minutebio, 0, 1);
    bio[8] = gettimeval(year, 4, 10, hourbio, minutebio, 0, 1);
    bio[9] = gettimeval(year, 4, 24 hourbio, minutebio, 0, 1);
    bio[10] = gettimeval(year, 5, 8, hourbio, minutebio, 0, 1);
    bio[11] = gettimeval(year, 5, 22, hourbio, minutebio, 0, 1);
    bio[12] = gettimeval(year, 6, 5, hourbio, minutebio, 0, 1);
    bio[13] = gettimeval(year, 6, 19, hourbio, minutebio, 0, 1);
    bio[14] = gettimeval(year, 7, 3, hourbio, minutebio, 0, 1);
    bio[15] = gettimeval(year, 7, 17, hourbio, minutebio, 0, 1);
    bio[16] = gettimeval(year, 7, 31, hourbio, minutebio, 0, 1);
    bio[17] = gettimeval(year, 8, 14, hourbio, minutebio, 0, 1);
    bio[18] = gettimeval(year, 8, 28, hourbio, minutebio, 0, 1);
    bio[19] = gettimeval(year, 9, 11, hourbio, minutebio, 0, 1);
    bio[20] = gettimeval(year, 9, 25, hourbio, minutebio, 0, 1);
    bio[21] = gettimeval(year, 10, 9, hourbio, minutebio, 0, 1);
    bio[22] = gettimeval(year, 10, 23, hourbio, minutebio, 0, 1);
    bio[23] = gettimeval(year, 11, 6, hourbio, minutebio, 0, 1);
    bio[24] = gettimeval(year, 11, 20, hourbio, minutebio, 0, 1);
    bio[25] = gettimeval(year, 12, 4, hourbio, minutebio, 0, 1);
    bio[26] = gettimeval(year, 12, 18, hourbio, minutebio, 0, 1);

    //Schleife Zählen der vorh. Arrayelemente beim Biomüll
    lenbio=0;
    for(k=0; k<(sizeof(bio)/sizeof(int)); k++) {
    if(bio[k] > 0) {
    lenbio++;
    }
    }

    //Daten der Papiermüllabholung
    papier[0] = gettimeval(year-1, 12, 14, hourpapier, minutepapier, 0, 1); //Letzter Abfuhrtermin des alten Jahres
    papier[1] = gettimeval(year, 1, 11, hourpapier, minutepapier, 0, 1); //ab hier für das neue Jahr (Variable "year")
    papier[2] = gettimeval(year, 2, 8, hourpapier, minutepapier, 0, 1);
    papier[3] = gettimeval(year, 3, 7, hourpapier, minutepapier, 0, 1);
    papier[4] = gettimeval(year, 4, 4, hourpapier, minutepapier, 0, 1);
    papier[5] = gettimeval(year, 5, 2, hourpapier, minutepapier, 0, 1);
    papier[6] = gettimeval(year, 5, 30, hourpapier, minutepapier, 0, 1);
    papier[7] = gettimeval(year, 6, 27, hourpapier, minutepapier, 0, 1);
    papier[8] = gettimeval(year, 7, 25, hourpapier, minutepapier, 0, 1);
    papier[9] = gettimeval(year, 8, 22, hourpapier, minutepapier, 0, 1);
    papier[10] = gettimeval(year, 9, 19, hourpapier, minutepapier, 0, 1);
    papier[11] = gettimeval(year, 10, 17, hourpapier, minutepapier, 0, 1);
    papier[12] = gettimeval(year, 11, 14, hourpapier, minutepapier, 0, 1);
    papier[13] = gettimeval(year, 12, 12, hourpapier, minutepapier, 0, 1);

    //Schleife Zählen der vorh. Arrayelemente beim Papiermüll
    lenpapier=0;
    for(k=0; k<(sizeof(papier)/sizeof(int)); k++) {
    if(papier[k] > 0) {
    lenpapier++;
    }
    }

    //Daten der Leichtstoffabholung
    leicht[0] = gettimeval(year-1, 12, 29, hourleicht, minuteleicht, 0, 1); //Letzter Abfuhrtermin des alten Jahres
    leicht[1] = gettimeval(year, 1, 12, hourleicht, minuteleicht, 0, 1); //ab hier für das neue Jahr (Variable "year")
    leicht[2] = gettimeval(year, 1, 26, hourleicht, minuteleicht, 0, 1);
    leicht[3] = gettimeval(year, 2, 9, hourleicht, minuteleicht, 0, 1);
    leicht[4] = gettimeval(year, 2, 23, hourleicht, minuteleicht, 0, 1);
    leicht[5] = gettimeval(year, 3, 8, hourleicht, minuteleicht, 0, 1);
    leicht[6] = gettimeval(year, 3, 22, hourleicht, minuteleicht, 0, 1);
    leicht[7] = gettimeval(year, 4, 5, hourleicht, minuteleicht, 0, 1);
    leicht[8] = gettimeval(year, 4, 19, hourleicht, minuteleicht, 0, 1);
    leicht[9] = gettimeval(year, 5, 3, hourleicht, minuteleicht, 0, 1);
    leicht[10] = gettimeval(year, 5, 17, hourleicht, minuteleicht, 0, 1);
    leicht[11] = gettimeval(year, 5, 31, hourleicht, minuteleicht, 0, 1);
    leicht[12] = gettimeval(year, 6, 14, hourleicht, minuteleicht, 0, 1);
    leicht[13] = gettimeval(year, 6, 28, hourleicht, minuteleicht, 0, 1);
    leicht[14] = gettimeval(year, 7, 12, hourleicht, minuteleicht, 0, 1); //ab hier für das neue Jahr (Variable "year")
    leicht[15] = gettimeval(year, 7, 26, hourleicht, minuteleicht, 0, 1);
    leicht[16] = gettimeval(year, 8, 9, hourleicht, minuteleicht, 0, 1);
    leicht[17] = gettimeval(year, 8, 23, hourleicht, minuteleicht, 0, 1);
    leicht[18] = gettimeval(year, 9, 6, hourleicht, minuteleicht, 0, 1);
    leicht[19] = gettimeval(year, 9, 20, hourleicht, minuteleicht, 0, 1);
    leicht[20] = gettimeval(year, 10, 4, hourleicht, minuteleicht, 0, 1);
    leicht[21] = gettimeval(year, 10, 18, hourleicht, minuteleicht, 0, 1);
    leicht[22] = gettimeval(year, 11, 1, hourleicht, minuteleicht, 0, 1);
    leicht[23] = gettimeval(year, 11, 15, hourleicht, minuteleicht, 0, 1);
    leicht[24] = gettimeval(year, 11, 29, hourleicht, minuteleicht, 0, 1);
    leicht[25] = gettimeval(year, 12, 13, hourleicht, minuteleicht, 0, 1);
    leicht[26] = gettimeval(year, 12, 27, hourleicht, minuteleicht, 0, 1);

    //Schleife Zählen der vorh. Arrayelemente beim Leichtstoffmüll
    lenleicht=0;
    for(k=0; k<(sizeof(leicht)/sizeof(int)); k++) {
    if(leicht[k] > 0) {
    lenleicht++;
    }
    }

    //Schleife Restmüll
    for(i=0; i<lenrest; i++) {
    restleft = (rest[i]-now)/3600;

    if(restleft >= 0) {
    setoutput(0,restleft);
    i = lenrest-1;
    }
    }
    //Schleife Biomüll
    for(i=0; i<lenbio; i++) {
    bioleft = (bio[i]-now)/3600;

    if(bioleft >= 0) {
    setoutput(1,bioleft);
    i = lenbio-1;
    }
    }
    //Schleife Papiermüll
    for(i=0; i<lenpapier; i++) {
    papierleft = (papier[i]-now)/3600;

    if(papierleft >= 0) {
    setoutput(2,papierleft);
    i = lenpapier-1;
    }
    }
    //Schleife Leichtstoff
    for(i=0; i<lenleicht; i++) {
    leichtleft = (leicht[i]-now)/3600;

    if(leichtleft >= 0) {
    setoutput(3,leichtleft);
    i = lenleicht-1;
    }
    }
    //Schleife zur Überprüfung, ob die Erinnerungsuhrzeit ansteht (innerhalb 1 Stunde), wenn ja: Sleeptime verringern.
    if((restleft<(remtimerest+1) && restleft>=(remtimerest)) ||
    (bioleft<(remtimebio+1) && bioleft>=(remtimebio)) ||
    (papierleft<(remtimepapier+1) && papierleft>=(remtimepapier)) ||
    (leichtleft<(remtimeleicht+1) && leichtleft>=(remtimeleicht))) {
    sleeptime = 120;
    }
    sleeps(sleeptime); //Sleep-Wert in Sekunden, um die CPU zu schonen..
    }




    Gibt es eventuell noch andere "Tricks" oder Empfehlungen wenn im Skript keine Fehler erkennbar sind?

    Danke!
    Zuletzt geändert von reschi; 05.01.2024, 10:24.

    Kommentar

    • romildo
      Lebende Foren Legende
      • 25.08.2015
      • 5113

      Bei der Zeile "bio[9] = gettimeval(year, 4, 24 hourbio, minutebio, 0, 1);​" fehlt das Komma hinter 24, also richtig "bio[9] = gettimeval(year, 4, 24, hourbio, minutebio, 0, 1);​"
      lg Romildo

      Kommentar


      • reschi
        reschi kommentierte
        Kommentar bearbeiten
        Danke ! :-)

      • romildo
        romildo kommentierte
        Kommentar bearbeiten
        Bitte gerne.
    • Sebastian
      LoxBus Spammer
      • 28.08.2015
      • 243

      Zitat von romildo
      Bei der Zeile "bio[9] = gettimeval(year, 4, 24 hourbio, minutebio, 0, 1);​" fehlt das Komma hinter 24, also richtig "bio[9] = gettimeval(year, 4, 24, hourbio, minutebio, 0, 1);​"
      Hast du ein Auge dafür oder einen Debugger?
      Beeindruckend!

      Kommentar


      • romildo
        romildo kommentierte
        Kommentar bearbeiten
        Bei solchen Fehlern gibt Loxone am Ausgang Etxt die fehlerhafte Zeile aus
    • orli
      Lox Guru
      • 13.11.2016
      • 2548

      romildo
      Danke, wieder was gelernt

      Kommentar

      • reschi
        Azubi
        • 24.09.2017
        • 6

        Frage an romildo zu https://www.loxforum.com/forum/faqs-...457#post417457
        Ich habe offensichtlich noch einen "alten" Programmbaustein, der den Ausgang Etxt nicht hat. Kann ich den irgendwie "updaten" auf die neue Version?

        Kommentar


        • romildo
          romildo kommentierte
          Kommentar bearbeiten
          Den Fehlerausgang gab es schon immer, früher hiess der TeQ
          Der wird in der aktuellen Version aber automatisch auf Etxt erneuert.
          Wenn nicht, würde ich einen neuen anlegen.
          Könnte auch sein, dass er bei dir nur nicht eingbledet ist, dann einfach mal auf das + unten rechts im Baustein klicken.
      Lädt...