bei mir zeigt es in der Visu leider nur Stunden an statt Tage?
HowTo: Müllabfuhrplan mit fixen Terminen Anzeige ww. in Stunden/Tagen
Einklappen
X
-
Hallo alle zusammen,
Ich habe den Software-Block von diesem Thema an meinen eigenen Geschmack angepasst, so dass ich nicht mehr so viel von außen programmieren muss und andere Blöcke verwenden muss.
Die Berechnung und Anzeige funktioniert gut. Ich stelle nur fest, dass die Aktualisierungszeit nicht mehr funktioniert.
Wo habe ich einen Fehler gemacht?
Wenn es nicht geschätzt wird, dass ich es in diesem Thema frage, werde ich es hören.
HTML-Code://----------CHANGE LOG----------// // 2019-01-08 1st release //----------INPUTS----------// //AI1: Year value of the program tree "T" //AI2: Update time in seconds //----------OUTPUTS----------// //TQ1: Connect to loxone virtual status block in "AI" Will display the time in "XX Weeks XX Days XX Hours" //TQ2: Connect to loxone virtual status block in "AI" Will display the time in "XX Weeks XX Days XX Hours" //TQ3: Connect to loxone virtual status block in "AI" Will display the time in "XX Weeks XX Days XX Hours" //AQ1: Notification output for waste type 1 //AQ2: Notification output for waste type 2 //AQ3: Notification output for waste type 3 //----------CONFIG----------// // Translation of the output text char* Weeks = "weken"; char* Week = "week"; char* Days = "dagen"; char* Day = "dag"; char* Hour = "uur"; char* PickUp = "totdat het wordt opgehaald"; //----------INITILAZING----------// // Waste type 1 = Gray Container // Waste type 2 = Green Container // Waste type 3 = Spare char WasteTypeOneBuffer[128], WasteTypeTwoBuffer[128], WasteTypeThreeBuffer[128]; // Arrays. The notification can be use "128" digits float SleepTime, Now, WasteTypeOneLeftWeek, WasteTypeOneLeftDay, WasteTypeOneLeftHour, WasteTypeTwoLeftWeek, WasteTypeTwoLeftDay, WasteTypeTwoLeftHour, WasteTypeThreeLeftWeek, WasteTypeThreeLeftDay, WasteTypeThreeLeftHour; int WasteTypeOne[30], WasteTypeTwo[30], WasteTypeThree[30]; //Arrays. Falls es mehr Termine sind, einfach die Klammerwerte erhöhen int ArrWasteTypeOne, ArrWasteTypeTwo, ArrWasteTypeThree, i, k, YearValue, WeekValue, DayValue, HourValue, HourWasteTypeOne, HourWasteTypeTwo, HourWasteTypeThree, MinutesWasteTypeOne, MinutesWasteTypeTwo, MinutesWasteTypeThree, RemTimeWasteTypeOne, RemTimeWasteTypeTwo, RemTimeWasteTypeThree; YearValue = getinput(0); //Year of the waste calendar on Input 1 "AI2" WeekValue = 7; // 1 Week in days DayValue = 24; // 1 Day in hours HourValue = 3600; // 1 Hour in seconds HourWasteTypeOne = 17; //Average hour of pick up (Waste Type one) HourWasteTypeTwo = 10; //Average hour of pick up (Waste Type two) HourWasteTypeThree = 12; //Average hour of pick up (Waste Type three) MinutesWasteTypeOne = 0; //Average minutes of pickup (Waste Type one) MinutesWasteTypeTwo = 0; //Average minutes of pickup (Waste Type two) MinutesWasteTypeThree = 0; //Average minutes of pickup (Waste Type three) RemTimeWasteTypeOne = 23; //Message on output in hours for pick-up time (Waste Type one) RemTimeWasteTypeTwo = 16; //Message on output in hours for pick-up time (Waste Type two) RemTimeWasteTypeThree = 24; //Message on output in hours for pick-up time (Waste Type three) while(TRUE) { SleepTime = 60*getinput(1); //Update time in seconde Now = getcurrenttime(); //Actual time in seconds (time 01.01.2009 0:00) // Dates of waste type one ( Oud Papier) //WasteTypeOne[0] = gettimeval(YearValue-1, *MONTH*, *DATE*, HourWasteTypeOne, MinutesWasteTypeOne, 0, 1); WasteTypeOne[0] = gettimeval(YearValue-1, 12, 17, HourWasteTypeOne, MinutesWasteTypeOne, 0, 1); //Last time of last year WasteTypeOne[1] = gettimeval(YearValue, 1, 25, HourWasteTypeOne, MinutesWasteTypeOne, 0, 1); WasteTypeOne[2] = gettimeval(YearValue, 2, 22, HourWasteTypeOne, MinutesWasteTypeOne, 0, 1); WasteTypeOne[3] = gettimeval(YearValue, 3, 29, HourWasteTypeOne, MinutesWasteTypeOne, 0, 1); WasteTypeOne[4] = gettimeval(YearValue, 4, 26, HourWasteTypeOne, MinutesWasteTypeOne, 0, 1); WasteTypeOne[5] = gettimeval(YearValue, 5, 24, HourWasteTypeOne, MinutesWasteTypeOne, 0, 1); WasteTypeOne[6] = gettimeval(YearValue, 6, 28, HourWasteTypeOne, MinutesWasteTypeOne, 0, 1); WasteTypeOne[7] = gettimeval(YearValue, 7, 26, HourWasteTypeOne, MinutesWasteTypeOne, 0, 1); WasteTypeOne[8] = gettimeval(YearValue, 8, 30, HourWasteTypeOne, MinutesWasteTypeOne, 0, 1); WasteTypeOne[9] = gettimeval(YearValue, 9, 27, HourWasteTypeOne, MinutesWasteTypeOne, 0, 1); WasteTypeOne[10] = gettimeval(YearValue, 10, 25, HourWasteTypeOne, MinutesWasteTypeOne, 0, 1); WasteTypeOne[11] = gettimeval(YearValue, 11, 29, HourWasteTypeOne, MinutesWasteTypeOne, 0, 1); WasteTypeOne[12] = gettimeval(YearValue, 12, 27, HourWasteTypeOne, MinutesWasteTypeOne, 0, 1); //Loop Count the existing array elements in WasteTypeOne ArrWasteTypeOne=0; for(k=0; k<(sizeof(WasteTypeOne)/sizeof(int)); k++) { if(WasteTypeOne[k] > 0) { ArrWasteTypeOne++; } } // Dates of waste type two ( Plastic PMT) //WasteTypeTwo[0] = gettimeval(YearValue-1, *MONTH*, *DATE*, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[0] = gettimeval(YearValue-1, 12, 17, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); //Last time of last year WasteTypeTwo[1] = gettimeval(YearValue, 1, 9, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[2] = gettimeval(YearValue, 1, 23, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[3] = gettimeval(YearValue, 2, 6, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[4] = gettimeval(YearValue, 2, 20, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[5] = gettimeval(YearValue, 3, 6, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[6] = gettimeval(YearValue, 3, 20, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[7] = gettimeval(YearValue, 4, 3, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[8] = gettimeval(YearValue, 4, 17, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[9] = gettimeval(YearValue, 5, 1, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[10] = gettimeval(YearValue, 5, 15, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[11] = gettimeval(YearValue, 5, 29, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[12] = gettimeval(YearValue, 6, 12, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[13] = gettimeval(YearValue, 6, 26, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[14] = gettimeval(YearValue, 7, 12, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[15] = gettimeval(YearValue, 7, 26, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[16] = gettimeval(YearValue, 8, 10, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[17] = gettimeval(YearValue, 8, 24, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[18] = gettimeval(YearValue, 9, 4, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[19] = gettimeval(YearValue, 9, 18, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[20] = gettimeval(YearValue, 10, 2, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[21] = gettimeval(YearValue, 10, 16, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[22] = gettimeval(YearValue, 10, 30, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[23] = gettimeval(YearValue, 11, 13, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[24] = gettimeval(YearValue, 11, 27, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[25] = gettimeval(YearValue, 12, 11, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); WasteTypeTwo[26] = gettimeval(YearValue, 12, 21, HourWasteTypeTwo, MinutesWasteTypeTwo, 0, 1); //Loop Count the existing array elements in WasteTypeTwo ArrWasteTypeTwo=0; for(k=0; k<(sizeof(WasteTypeTwo)/sizeof(int)); k++) { if(WasteTypeOne[k] > 0) { ArrWasteTypeTwo++; } } // Dates of waste type three ( spare) //WasteTypeThree[0] = gettimeval(YearValue-1, *MONTH*, *DATE*, HourWasteTypeThree, MinutesWasteTypeThree, 0, 1); WasteTypeThree[0] = gettimeval(YearValue-1, 12, 31, HourWasteTypeThree, MinutesWasteTypeThree, 0, 1); //Last time of last year WasteTypeThree[1] = gettimeval(YearValue, 1, 1, HourWasteTypeThree, MinutesWasteTypeThree, 0, 1); WasteTypeThree[2] = gettimeval(YearValue, 2, 1, HourWasteTypeThree, MinutesWasteTypeThree, 0, 1); WasteTypeThree[3] = gettimeval(YearValue, 3, 1, HourWasteTypeThree, MinutesWasteTypeThree, 0, 1); WasteTypeThree[4] = gettimeval(YearValue, 4, 1, HourWasteTypeThree, MinutesWasteTypeThree, 0, 1); WasteTypeThree[5] = gettimeval(YearValue, 5, 1, HourWasteTypeThree, MinutesWasteTypeThree, 0, 1); WasteTypeThree[6] = gettimeval(YearValue, 6, 1, HourWasteTypeThree, MinutesWasteTypeThree, 0, 1); WasteTypeThree[7] = gettimeval(YearValue, 7, 1, HourWasteTypeThree, MinutesWasteTypeThree, 0, 1); WasteTypeThree[8] = gettimeval(YearValue, 8, 1, HourWasteTypeThree, MinutesWasteTypeThree, 0, 1); WasteTypeThree[9] = gettimeval(YearValue, 9, 1, HourWasteTypeThree, MinutesWasteTypeThree, 0, 1); WasteTypeThree[10] = gettimeval(YearValue, 10, 1, HourWasteTypeThree, MinutesWasteTypeThree, 0, 1); WasteTypeThree[11] = gettimeval(YearValue, 11, 1, HourWasteTypeThree, MinutesWasteTypeThree, 0, 1); WasteTypeThree[12] = gettimeval(YearValue, 12, 1, HourWasteTypeThree, MinutesWasteTypeThree, 0, 1); //Loop Count the existing array elements in WasteTypeThree ArrWasteTypeThree=0; for(k=0; k<(sizeof(WasteTypeThree)/sizeof(int)); k++) { if(WasteTypeOne[k] > 0) { ArrWasteTypeThree++; } } //Output Waste Type One for(i=0; i<ArrWasteTypeOne; i++) { WasteTypeOneLeftHour = (WasteTypeOne[i]-Now)/HourValue; WasteTypeOneLeftDay = WasteTypeOneLeftHour/DayValue; WasteTypeOneLeftWeek = WasteTypeOneLeftDay/WeekValue; setoutput(3,WasteTypeOneLeftHour); if(WasteTypeOneLeftHour >= 1 && WasteTypeOneLeftWeek >= 2) { sprintf(WasteTypeOneBuffer,"%d %s",WasteTypeOneLeftWeek,Weeks); setoutputtext(0,WasteTypeOneBuffer); setoutput(0,false); i = ArrWasteTypeOne-1; } else if(WasteTypeOneLeftHour >= 1 && WasteTypeOneLeftWeek >= 1 && WasteTypeOneLeftWeek < 2) { sprintf(WasteTypeOneBuffer,"%d %s %d %s",WasteTypeOneLeftWeek,Week,WasteTypeOneLeftDay-WeekValue,Days); setoutputtext(0,WasteTypeOneBuffer); setoutput(0,false); i = ArrWasteTypeOne-1; } else if(WasteTypeOneLeftHour >= 1 && WasteTypeOneLeftWeek >= 1 && WasteTypeOneLeftWeek < 2 && WasteTypeOneLeftDay <= 1) { sprintf(WasteTypeOneBuffer,"%d %s %d %s",WasteTypeOneLeftWeek,Week,WasteTypeOneLeftDay-WeekValue,Day); setoutputtext(0,WasteTypeOneBuffer); setoutput(0,false); i = ArrWasteTypeOne-1; } else if(WasteTypeOneLeftHour >= 1 && WasteTypeOneLeftDay >= 2) { sprintf(WasteTypeOneBuffer,"%d %s",WasteTypeOneLeftDay,Days); setoutputtext(0,WasteTypeOneBuffer); setoutput(0,false); i = ArrWasteTypeOne-1; } else if(WasteTypeOneLeftHour >= 1 && WasteTypeOneLeftDay >= 1 && WasteTypeOneLeftDay < 2) { sprintf(WasteTypeOneBuffer,"%d %s en %d %s",WasteTypeOneLeftDay,Day,WasteTypeOneLeftHour-DayValue,Hour); setoutputtext(0,WasteTypeOneBuffer); setoutput(0,false); i = ArrWasteTypeOne-1; } else if(WasteTypeOneLeftHour >= 1 && WasteTypeOneLeftDay < 1 && WasteTypeOneLeftHour <= RemTimeWasteTypeOne) { sprintf(WasteTypeOneBuffer,"%d %s %s",WasteTypeOneLeftHour,Hour,PickUp); setoutputtext(0,WasteTypeOneBuffer); setoutput(0,true); i = ArrWasteTypeOne-1; } else if (WasteTypeOneLeftHour >= 1 && WasteTypeOneLeftDay < 1) { sprintf(WasteTypeOneBuffer,"%d %s",WasteTypeOneLeftHour,Hour); setoutputtext(0,WasteTypeOneBuffer); setoutput(0,false); i = ArrWasteTypeOne-1; } } //Output Waste Type Two for(i=0; i<ArrWasteTypeTwo; i++) { WasteTypeTwoLeftHour = (WasteTypeTwo[i]-Now)/HourValue; WasteTypeTwoLeftDay = WasteTypeTwoLeftHour/DayValue; WasteTypeTwoLeftWeek = WasteTypeTwoLeftDay/WeekValue; setoutput(4,WasteTypeTwoLeftHour); if(WasteTypeTwoLeftHour >= 1 && WasteTypeTwoLeftWeek >= 2) { sprintf(WasteTypeTwoBuffer,"%d %s",WasteTypeTwoLeftWeek,Weeks); setoutputtext(1,WasteTypeTwoBuffer); setoutput(1,false); i = ArrWasteTypeTwo-1; } else if(WasteTypeTwoLeftHour >= 1 && WasteTypeTwoLeftWeek >= 1 && WasteTypeTwoLeftWeek < 2) { sprintf(WasteTypeTwoBuffer,"%d %s %d %s",WasteTypeTwoLeftWeek,Week,WasteTypeTwoLeftDay-WeekValue,Days); setoutputtext(1,WasteTypeTwoBuffer); setoutput(1,false); i = ArrWasteTypeTwo-1; } else if(WasteTypeTwoLeftHour >= 1 && WasteTypeTwoLeftWeek >= 1 && WasteTypeTwoLeftWeek < 2 && WasteTypeTwoLeftDay <= 1) { sprintf(WasteTypeTwoBuffer,"%d %s %d %s",WasteTypeTwoLeftWeek,Week,WasteTypeTwoLeftDay-WeekValue,Day); setoutputtext(1,WasteTypeTwoBuffer); setoutput(1,false); i = ArrWasteTypeTwo-1; } else if(WasteTypeTwoLeftHour >= 1 && WasteTypeTwoLeftDay >= 2) { sprintf(WasteTypeTwoBuffer,"%d %s",WasteTypeTwoLeftDay,Days); setoutputtext(1,WasteTypeTwoBuffer); setoutput(1,false); i = ArrWasteTypeTwo-1; } else if(WasteTypeTwoLeftHour >= 1 && WasteTypeTwoLeftDay >= 1 && WasteTypeTwoLeftDay < 2) { sprintf(WasteTypeTwoBuffer,"%d %s en %d %s",WasteTypeTwoLeftDay,Day,WasteTypeTwoLeftHour-DayValue,Hour); setoutputtext(1,WasteTypeTwoBuffer); setoutput(1,false); i = ArrWasteTypeTwo-1; } else if(WasteTypeTwoLeftHour >= 1 && WasteTypeTwoLeftDay < 1 && WasteTypeTwoLeftHour <= RemTimeWasteTypeTwo) { sprintf(WasteTypeTwoBuffer,"%d %s %s",WasteTypeTwoLeftHour,Hour,PickUp); setoutputtext(1,WasteTypeTwoBuffer); setoutput(1,true); i = ArrWasteTypeTwo-1; } else if (WasteTypeTwoLeftHour >= 1 && WasteTypeTwoLeftDay < 1) { sprintf(WasteTypeTwoBuffer,"%d %s",WasteTypeTwoLeftHour,Hour); setoutputtext(1,WasteTypeTwoBuffer); setoutput(1,false); i = ArrWasteTypeTwo-1; } } //Output Waste Type Three for(i=0; i<ArrWasteTypeThree; i++) { WasteTypeThreeLeftHour = (WasteTypeThree[i]-Now)/HourValue; WasteTypeThreeLeftDay = WasteTypeThreeLeftHour/DayValue; WasteTypeThreeLeftWeek = WasteTypeThreeLeftDay/WeekValue; if(WasteTypeThreeLeftHour >= 1 && WasteTypeThreeLeftWeek >= 2) { sprintf(WasteTypeThreeBuffer,"%d %s",WasteTypeThreeLeftWeek,Weeks); setoutputtext(2,WasteTypeThreeBuffer); setoutput(2,false); i = ArrWasteTypeThree-1; } else if(WasteTypeThreeLeftHour >= 1 && WasteTypeThreeLeftWeek >= 1 && WasteTypeThreeLeftWeek < 2) { sprintf(WasteTypeThreeBuffer,"%d %s %d %s",WasteTypeThreeLeftWeek,Week,WasteTypeThreeLeftDay-WeekValue,Days); setoutputtext(2,WasteTypeThreeBuffer); setoutput(2,false); i = ArrWasteTypeThree-1; } else if(WasteTypeThreeLeftHour >= 1 && WasteTypeThreeLeftWeek >= 1 && WasteTypeThreeLeftWeek < 2 && WasteTypeThreeLeftDay <= 1) { sprintf(WasteTypeThreeBuffer,"%d %s %d %s",WasteTypeThreeLeftWeek,Week,WasteTypeThreeLeftDay-WeekValue,Day); setoutputtext(2,WasteTypeThreeBuffer); setoutput(2,false); i = ArrWasteTypeThree-1; } else if(WasteTypeThreeLeftHour >= 1 && WasteTypeThreeLeftDay >= 2) { sprintf(WasteTypeThreeBuffer,"%d %s",WasteTypeThreeLeftDay,Days); setoutputtext(2,WasteTypeThreeBuffer); setoutput(2,false); i = ArrWasteTypeThree-1; } else if(WasteTypeThreeLeftHour >= 1 && WasteTypeThreeLeftDay >= 1 && WasteTypeThreeLeftDay < 2) { sprintf(WasteTypeThreeBuffer,"%d %s en %d %s",WasteTypeThreeLeftDay,Day,WasteTypeThreeLeftHour-DayValue,Hour); setoutputtext(2,WasteTypeThreeBuffer); setoutput(2,false); i = ArrWasteTypeThree-1; } else if(WasteTypeThreeLeftHour >= 1 && WasteTypeThreeLeftDay < 1 && WasteTypeThreeLeftHour <= RemTimeWasteTypeThree) { sprintf(WasteTypeThreeBuffer,"%d %s %s",WasteTypeThreeLeftHour,Hour,PickUp); setoutputtext(2,WasteTypeThreeBuffer); setoutput(2,true); i = ArrWasteTypeThree-1; } else if (WasteTypeThreeLeftHour >= 1 && WasteTypeThreeLeftDay < 1) { sprintf(WasteTypeThreeBuffer,"%d %s",WasteTypeThreeLeftHour,Hour); setoutputtext(2,WasteTypeThreeBuffer); setoutput(2,false); i = ArrWasteTypeThree-1; } } // loop to check whether the reminder time is pending (within 1 hour), if so: decrease SleepTime. if((WasteTypeOneLeftHour<(RemTimeWasteTypeOne+1) && WasteTypeOneLeftHour>=(RemTimeWasteTypeOne)) || (WasteTypeTwoLeftHour<(RemTimeWasteTypeTwo+1) && WasteTypeTwoLeftHour>=(RemTimeWasteTypeTwo)) || (WasteTypeThreeLeftHour<(RemTimeWasteTypeThree+1) && WasteTypeThreeLeftHour>=(RemTimeWasteTypeThree))) { SleepTime = 120; } sleeps(SleepTime);
Kommentar
-
Hallo Loxone Gemeinde,
hab bei meine Müllprogramm nur das Jahr und das Datum geändert und leider funkt es seit dem nicht mehr. Da ich nicht unbedingt der Spezialist von Quellcode bin, bitte ich hiermit um Hilfe!
HTML-Code:// Müllabfuhr für loxforum.com by Sebastian //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 = 2019; //Jahr, für den der Müllkalender gilt hourrest = 6; //Stunde, an der die Müllabfuhr üblicherweise kommt (Restmüll) hourbio = 6; //Stunde, an der die Müllabfuhr üblicherweise kommt (Biomüll) hourpapier = 6; //Stunde, an der die Müllabfuhr üblicherweise kommt (Altpapier) hourleicht = 6; //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 = 12; //Stunden vor der Abholung bzgl. Erinnerung. IM STATUSBAUSTEIN ANPASSEN (oder umgekehrt)! remtimebio = 12; //Stunden vor der Abholung bzgl. Erinnerung. IM STATUSBAUSTEIN ANPASSEN (oder umgekehrt)! remtimepapier = 12; //Stunden vor der Abholung bzgl. Erinnerung. IM STATUSBAUSTEIN ANPASSEN (oder umgekehrt)! remtimeleicht = 12; //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, 21, hourrest, minuterest, 0, 1); //Letzter Abfuhrtermin des alten Jahres rest[1] = gettimeval(year, 1, 4, hourrest, minuterest, 0, 1); //ab hier für das neue Jahr (Variable "year") rest[2] = gettimeval(year, 1, 17, hourrest, minuterest, 0, 1); rest[3] = gettimeval(year, 1, 31, hourrest, minuterest, 0, 1); rest[4] = gettimeval(year, 2, 14, hourrest, minuterest, 0, 1); rest[5] = gettimeval(year, 2, 28, hourrest, minuterest, 0, 1); rest[6] = gettimeval(year, 3, 14, hourrest, minuterest, 0, 1); rest[7] = gettimeval(year, 3, 28, hourrest, minuterest, 0, 1); rest[8] = gettimeval(year, 4, 11, hourrest, minuterest, 0, 1); rest[9] = gettimeval(year, 4, 25, hourrest, minuterest, 0, 1); rest[10] = gettimeval(year, 5, 09, hourrest, minuterest, 0, 1); rest[11] = gettimeval(year, 5, 23, hourrest, minuterest, 0, 1); rest[12] = gettimeval(year, 6, 6, hourrest, minuterest, 0, 1); rest[13] = gettimeval(year, 6, 21, hourrest, minuterest, 0, 1); rest[14] = gettimeval(year, 7, 4, hourrest, minuterest, 0, 1); rest[15] = gettimeval(year, 7, 18, hourrest, minuterest, 0, 1); rest[16] = gettimeval(year, 8, 1, hourrest, minuterest, 0, 1); rest[17] = gettimeval(year, 8, 16, hourrest, minuterest, 0, 1); rest[18] = gettimeval(year, 8, 29, hourrest, minuterest, 0, 1); rest[19] = gettimeval(year, 9, 12, hourrest, minuterest, 0, 1); rest[20] = gettimeval(year, 9, 26, hourrest, minuterest, 0, 1); rest[21] = gettimeval(year, 10, 10, hourrest, minuterest, 0, 1); rest[22] = gettimeval(year, 10, 24, hourrest, minuterest, 0, 1); rest[23] = gettimeval(year, 11, 7, hourrest, minuterest, 0, 1); rest[24] = gettimeval(year, 11, 21, hourrest, minuterest, 0, 1); rest[25] = gettimeval(year, 12, 5, hourrest, minuterest, 0, 1); rest[26] = gettimeval(year, 12, 19, 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, 29, hourbio, minutebio, 0, 1); //Letzter Abfuhrtermin des alten Jahres bio[1] = gettimeval(year, 1, 11, hourbio, minutebio, 0, 1); //ab hier für das neue Jahr (Variable "year") bio[2] = gettimeval(year, 1, 25, hourbio, minutebio, 0, 1); bio[3] = gettimeval(year, 2, 8, hourbio, minutebio, 0, 1); bio[4] = gettimeval(year, 2, 22, hourbio, minutebio, 0, 1); bio[5] = gettimeval(year, 3, 8, hourbio, minutebio, 0, 1); bio[6] = gettimeval(year, 3, 22, hourbio, minutebio, 0, 1); bio[7] = gettimeval(year, 4, 5, hourbio, minutebio, 0, 1); bio[8] = gettimeval(year, 4, 19, hourbio, minutebio, 0, 1); bio[9] = gettimeval(year, 5, 4, hourbio, minutebio, 0, 1); bio[10] = gettimeval(year, 5, 17, hourbio, minutebio, 0, 1); bio[11] = gettimeval(year, 6, 1, hourbio, minutebio, 0, 1); bio[12] = gettimeval(year, 6, 14, hourbio, minutebio, 0, 1); bio[13] = gettimeval(year, 6, 28, hourbio, minutebio, 0, 1); bio[14] = gettimeval(year, 7, 12, hourbio, minutebio, 0, 1); bio[15] = gettimeval(year, 7, 26, hourbio, minutebio, 0, 1); bio[16] = gettimeval(year, 8, 9, hourbio, minutebio, 0, 1); bio[17] = gettimeval(year, 8, 23, hourbio, minutebio, 0, 1); bio[18] = gettimeval(year, 9, 6, hourbio, minutebio, 0, 1); bio[19] = gettimeval(year, 9, 20, hourbio, minutebio, 0, 1); bio[20] = gettimeval(year, 10, 4, hourbio, minutebio, 0, 1); bio[21] = gettimeval(year, 10, 18, hourbio, minutebio, 0, 1); bio[22] = gettimeval(year, 11, 2, hourbio, minutebio, 0, 1); bio[23] = gettimeval(year, 11, 15, hourbio, minutebio, 0, 1); bio[24] = gettimeval(year, 11, 29, hourbio, minutebio, 0, 1); bio[25] = gettimeval(year, 12, 13, hourbio, minutebio, 0, 1); bio[26] = gettimeval(year, 12, 28, 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(rest[k] > 0) { lenbio++; } } //Daten der Papiermüllabholung papier[0] = gettimeval(year-1, 12, 21, hourpapier, minutepapier, 0, 1); //Letzter Abfuhrtermin des alten Jahres papier[1] = gettimeval(year, 1, 17, hourpapier, minutepapier, 0, 1); //ab hier für das neue Jahr (Variable "year") papier[2] = gettimeval(year, 2, 14, hourpapier, minutepapier, 0, 1); papier[3] = gettimeval(year, 3, 14, hourpapier, minutepapier, 0, 1); papier[4] = gettimeval(year, 4, 11, hourpapier, minutepapier, 0, 1); papier[5] = gettimeval(year, 5, 9, hourpapier, minutepapier, 0, 1); papier[6] = gettimeval(year, 6, 6, hourpapier, minutepapier, 0, 1); papier[7] = gettimeval(year, 7, 4, hourpapier, minutepapier, 0, 1); papier[8] = gettimeval(year, 8, 1, hourpapier, minutepapier, 0, 1); papier[9] = gettimeval(year, 8, 29, hourpapier, minutepapier, 0, 1); papier[10] = gettimeval(year, 9, 26, hourpapier, minutepapier, 0, 1); papier[11] = gettimeval(year, 10, 24, hourpapier, minutepapier, 0, 1); papier[12] = gettimeval(year, 11, 21, hourpapier, minutepapier, 0, 1); papier[13] = gettimeval(year, 12, 19, 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(rest[k] > 0) { lenpapier++; } } //Daten der Leichtstoffabholung leicht[0] = gettimeval(year-1, 12, 7, hourleicht, minuteleicht, 0, 1); //Letzter Abfuhrtermin des alten Jahres leicht[1] = gettimeval(year, 1, 4, hourleicht, minuteleicht, 0, 1); //ab hier für das neue Jahr (Variable "year") leicht[2] = gettimeval(year, 1, 31, hourleicht, minuteleicht, 0, 1); leicht[3] = gettimeval(year, 2, 28, hourleicht, minuteleicht, 0, 1); leicht[4] = gettimeval(year, 3, 28, hourleicht, minuteleicht, 0, 1); leicht[5] = gettimeval(year, 4, 26, hourleicht, minuteleicht, 0, 1); leicht[6] = gettimeval(year, 5, 23, hourleicht, minuteleicht, 0, 1); leicht[7] = gettimeval(year, 6, 21, hourleicht, minuteleicht, 0, 1); leicht[8] = gettimeval(year, 7, 18, hourleicht, minuteleicht, 0, 1); leicht[9] = gettimeval(year, 8, 16, hourleicht, minuteleicht, 0, 1); leicht[10] = gettimeval(year, 9, 12, hourleicht, minuteleicht, 0, 1); leicht[11] = gettimeval(year, 10, 10, hourleicht, minuteleicht, 0, 1); leicht[12] = gettimeval(year, 11, 7, hourleicht, minuteleicht, 0, 1); leicht[13] = gettimeval(year, 12, 5, 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(rest[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.. }
Lg
JoZuletzt geändert von JoUnderground; 10.03.2019, 12:14.Kommentar
-
Hallo,
kann mir jemand ganz kurz sagen, wie ich eine Aktion zum Mülltag auslöse? Ich will ein Tor für ca. 12 Stunden geöffnet halten (über Tortaster via Nano Air). Danke im Voraus.Kommentar
-
Kommentar
-
Das Tor geht bei einem Impuls auf und schließt mit einer Verzögerung von 240 sec. Ist also dauerhaft geschlossen.1 BildKommentar
-
Ich möchte halt, dass das Tor taggenau entsprechend dem Kalender in einer in der Schaltuhr festzulegenden Zeit geöffnet bleibt. Dass also der Müllkalender genau eingehalten wird (z.B. bei Verschiebung wg. Feiertagen etc.). Irgendwie kriege ich es nicht hintereinander.Kommentar
-
Was Du möchtest ist so ziemlich das einzige was mir vorher schon klar war.
Dann wird das wohl die Schaltuhr sein, welche im Bild vorhanden ist?
Leider reagiert die Schaltuhr über den Eingang Tr nur dann, wenn der Impuls innerhalb der Schaltzeit kommt.
Du musst also das Signal hinter der Schaltuhr mit dem Müllkalender über ein UND verknüpfen.
Mir ist auch immer noch nicht klar, wie das Tor gesteuert wird. Mit einem Impuls wird es geöffnet und nach 240s geschlossen.
Wo werden denn die 240s eingestellt, macht das irgendeine Torsteuerung oder kommt das von Loxone?
-
-
Wie schon gesagt kenne ich Deine Programmierung nicht, soweit ich gesehen habe ist sie auch nicht identisch mit derjenigen in #1.
Gemäss Bild in #142 gehe ich davon aus, dass Du eine Benachrichtigung bekommst, wenn der Müll bereitgestellt werden soll.
Ich vermute mal, dass dies einige Stunden vorher ist. Ist ja abhängig von den Einstellungen und der Programmierung.
Du könntest also Beispielsweise diesen Impuls benutzen und damit ein Impulsschalter-Baustein über den Eingang S auf Ein setzen.
In der Schaltuhr stellst Du die gewünschte Zeit ein und verknüpfst den Ausgang über ein UND mit dem Impulsschalter-Ausgang.
Am UND-Ausgang bekommst Du dann so lange ein EIN wie der Impulsschalter und die Schaltuhr auf EIN sind.
Wenn der UND-Ausgang auf AUS wechselt wird über ein Monoflop der Impulsschalter wieder auf AUS gesetzt.
Die Bausteine sollten auch auf Remanent gestellt werden.
Hier ein Bild, damit es etwas klarer wird, wie ich das meine.
lg RomildoKommentar
-
Hallo zusammen, habe ein Problem mit meinem Müllkalender. AQ2 zeigt seit ein paar Tagen immer 0 an. Dies dürfte aber lt. Programmcode nicht sein. Kann bitte jemand den Quellcode checken, mir ist leider nichts aufgefallen. https://pastecode.xyz/view/0eca5c38
Danke 🙂👍
1 BildKommentar
-
Gast
Folgende Zeilen sind falsch:
falsch 104 if(rest[k] > 0) {
richtig 104 if(bio[k] > 0) {falsch 128 if(rest[k] > 0) {
richtig 128 if(papier[k] > 0) {lg RomildoKommentar
-
Perfekt, so einfach und trotzdem überlesen werde ich heute gleich testen. -
Funktioniert, besten Dank nochmal. Komisch, dass es bisher auch bei bio in der visu immer alles richtig angezeigt hatte -
Bitte gerne.
Das ist nicht komisch, sondern logisch
Du hast 26 Einträge bei Restmüll. Diese Anzahl wird unter Restmüll in die Variable "rest" gespeichert.
Da Du bei Bio nur die Anzahl von "rest" abgefragt hast, wurden auch nur die ersten 26 Einträge angezeigt.
-
Kommentar