Garbage rule

No idea. Don’t they represent your dustbin collection days? Maybe you can use Habmin to assign some initial values (the persistence saves you from doing that at every reboot).

As far as I know the items gets values from my Google calendar

Hi all,
if I remember correctly, we already checked via PM that the “unsorted” date items have values (should be checked again). My rule (wich might not be good code, I started with OH only a few months ago) uses 4 garbage items. As you reduced it to 3, I think there might be mixed up something. Maybe a “rest” of the 4th item is used somewhere (probably in the sorting part). But as I’m on holiday at the moment, I don’t have good possibilities to check this.
But I recommend the same as @opus and as I already did via PM: place logInfos in every interesting line schould help you to find the bug.

this was the rule:

rule "Abfalltermine sortieren"
when
	Item Restmuell received update or
	Item Biomuell received update or
	Item Papiermuell received update or
	Item RaWeg received update or
	Item RestmuellTage changed or
	Item PapiermuellTage changed or
	Item BiomuellTage changed or
	Item RaWegTage changed or
	//Time cron "0 8 0 1/1 * ? *" or
	Item DelayedStartup changed from OFF to ON
then
	Thread::sleep(3000)
	var DateTime varTempDatum
	var DateTime varAbfall1Datum = new DateTime((Restmuell.state as DateTimeType).zonedDateTime.toInstant.toEpochMilli)
	var DateTime varAbfall2Datum = new DateTime((Biomuell.state as DateTimeType).zonedDateTime.toInstant.toEpochMilli)
	var DateTime varAbfall3Datum = new DateTime((Papiermuell.state as DateTimeType).zonedDateTime.toInstant.toEpochMilli)
	var DateTime varAbfall4Datum = new DateTime((RaWeg.state as DateTimeType).zonedDateTime.toInstant.toEpochMilli)
	var String varTempArt
	var String varAbfall1Art = "Restmuell"
	var String varAbfall2Art = "Biomuell"
	var String varAbfall3Art = "Papiermuell"
	var String varAbfall4Art = "RaWeg"
	var String varTempTage
	var String varAbfall1Tage = RestmuellTage.state.toString
	var String varAbfall2Tage = BiomuellTage.state.toString
	var String varAbfall3Tage = PapiermuellTage.state.toString
	var String varAbfall4Tage = RaWegTage.state.toString
	var i = 1
	while ((i=i+1) < 6) {
		if (varAbfall1Datum > varAbfall2Datum) {
			varTempDatum = varAbfall1Datum
			varAbfall1Datum = varAbfall2Datum
			varAbfall2Datum = varTempDatum
			varTempArt = varAbfall1Art
			varAbfall1Art = varAbfall2Art
			varAbfall2Art = varTempArt
			varTempTage = varAbfall1Tage
			varAbfall1Tage = varAbfall2Tage
			varAbfall2Tage = varTempTage
			if (varAbfall2Datum > varAbfall3Datum) {
				varTempDatum = varAbfall2Datum
				varAbfall2Datum = varAbfall3Datum
				varAbfall3Datum = varTempDatum
				varTempArt = varAbfall2Art
				varAbfall2Art = varAbfall3Art
				varAbfall3Art = varTempArt
				varTempTage = varAbfall2Tage
				varAbfall2Tage = varAbfall3Tage
				varAbfall3Tage = varTempTage
				if (varAbfall3Datum > varAbfall4Datum) {
					varTempDatum = varAbfall3Datum
					varAbfall3Datum = varAbfall4Datum
					varAbfall4Datum = varTempDatum
					varTempArt = varAbfall3Art
					varAbfall3Art = varAbfall4Art
					varAbfall4Art = varTempArt
					varTempTage = varAbfall3Tage
					varAbfall3Tage = varAbfall4Tage
					varAbfall4Tage = varTempTage
				}
			}
		}
		if (varAbfall2Datum > varAbfall3Datum) {
				varTempDatum = varAbfall2Datum
				varAbfall2Datum = varAbfall3Datum
				varAbfall3Datum = varTempDatum
				varTempArt = varAbfall2Art
				varAbfall2Art = varAbfall3Art
				varAbfall3Art = varTempArt
				varTempTage = varAbfall2Tage
				varAbfall2Tage = varAbfall3Tage
				varAbfall3Tage = varTempTage
				if (varAbfall3Datum > varAbfall4Datum) {
					varTempDatum = varAbfall3Datum
					varAbfall3Datum = varAbfall4Datum
					varAbfall4Datum = varTempDatum
					varTempArt = varAbfall3Art
					varAbfall3Art = varAbfall4Art
					varAbfall4Art = varTempArt
					varTempTage = varAbfall3Tage
					varAbfall3Tage = varAbfall4Tage
					varAbfall4Tage = varTempTage
				}
			}
		if (varAbfall3Datum > varAbfall4Datum) {
					varTempDatum = varAbfall3Datum
					varAbfall3Datum = varAbfall4Datum
					varAbfall4Datum = varTempDatum
					varTempArt = varAbfall3Art
					varAbfall3Art = varAbfall4Art
					varAbfall4Art = varTempArt
					varTempTage = varAbfall3Tage
					varAbfall3Tage = varAbfall4Tage
					varAbfall4Tage = varTempTage
				}
	}
	Abfall_1_Datum.postUpdate(varAbfall1Datum.toString)
	Abfall_2_Datum.postUpdate(varAbfall2Datum.toString)
	Abfall_3_Datum.postUpdate(varAbfall3Datum.toString)
	Abfall_4_Datum.postUpdate(varAbfall4Datum.toString)
	Abfall_1_Art.postUpdate(varAbfall1Art)
	Abfall_2_Art.postUpdate(varAbfall2Art)
	Abfall_3_Art.postUpdate(varAbfall3Art)
	Abfall_4_Art.postUpdate(varAbfall4Art)
	Abfall_1_Tage.postUpdate(varAbfall1Tage)
	Abfall_2_Tage.postUpdate(varAbfall2Tage)
	Abfall_3_Tage.postUpdate(varAbfall3Tage)
	Abfall_4_Tage.postUpdate(varAbfall4Tage)
end

because I only have 3 types of waste. I deleted ‘RaWeg’ , ‘varAbfall4Art’, ‘varAbfall4Tage’ and ‘varAbfall4Datum’. But I think I made a mistake somewhere.

Now I have this rule:

rule "Abfalltermine sortieren"
when
	Item Restmuell received update or
	Item Biomuell received update or
	Item Papiermuell received update or
	Item RaWeg received update or
	Item RestmuellTage changed or
	Item PapiermuellTage changed or
	Item BiomuellTage changed or
	Item RaWegTage changed or
	//Time cron "0 8 0 1/1 * ? *" or
	Item DelayedStartup changed from OFF to ON
then
	Thread::sleep(3000)
	var DateTime varTempDatum
	var DateTime varAbfall1Datum = new DateTime((Restmuell.state as DateTimeType).zonedDateTime.toInstant.toEpochMilli)
	var DateTime varAbfall2Datum = new DateTime((Biomuell.state as DateTimeType).zonedDateTime.toInstant.toEpochMilli)
	var DateTime varAbfall3Datum = new DateTime((Papiermuell.state as DateTimeType).zonedDateTime.toInstant.toEpochMilli)
	var String varTempArt
	var String varAbfall1Art = "Restmuell"
	var String varAbfall2Art = "Biomuell"
	var String varAbfall3Art = "Papiermuell"
	var String varTempTage
	var String varAbfall1Tage = RestmuellTage.state.toString
	var String varAbfall2Tage = BiomuellTage.state.toString
	var String varAbfall3Tage = PapiermuellTage.state.toString
	var i = 1
	while ((i=i+1) < 6) {
		if (varAbfall1Datum > varAbfall2Datum) {
			varTempDatum = varAbfall1Datum
			varAbfall1Datum = varAbfall2Datum
			varAbfall2Datum = varTempDatum
			varTempArt = varAbfall1Art
			varAbfall1Art = varAbfall2Art
			varAbfall2Art = varTempArt
			varTempTage = varAbfall1Tage
			varAbfall1Tage = varAbfall2Tage
			varAbfall2Tage = varTempTage
			if (varAbfall2Datum > varAbfall3Datum) {
				varTempDatum = varAbfall2Datum
				varAbfall2Datum = varAbfall3Datum
				varAbfall3Datum = varTempDatum
				varTempArt = varAbfall2Art
				varAbfall2Art = varAbfall3Art
				varAbfall3Art = varTempArt
				varTempTage = varAbfall2Tage
				varAbfall2Tage = varAbfall3Tage
				varAbfall3Tage = varTempTage
				}
		}
		if (varAbfall2Datum > varAbfall3Datum) {
				varTempDatum = varAbfall2Datum
				varAbfall2Datum = varAbfall3Datum
				varAbfall3Datum = varTempDatum
				varTempArt = varAbfall2Art
				varAbfall2Art = varAbfall3Art
				varAbfall3Art = varTempArt
				varTempTage = varAbfall2Tage
				varAbfall2Tage = varAbfall3Tage
				varAbfall3Tage = varTempTage
				}
		}
	Abfall_1_Datum.postUpdate(varAbfall1Datum.toString)
	Abfall_2_Datum.postUpdate(varAbfall2Datum.toString)
	Abfall_3_Datum.postUpdate(varAbfall3Datum.toString)
	Abfall_1_Art.postUpdate(varAbfall1Art)
	Abfall_2_Art.postUpdate(varAbfall2Art)
	Abfall_3_Art.postUpdate(varAbfall3Art)
	Abfall_1_Tage.postUpdate(varAbfall1Tage)
	Abfall_2_Tage.postUpdate(varAbfall2Tage)
	Abfall_3_Tage.postUpdate(varAbfall3Tage)
	logInfo("Afval.rules", "varTempDatum" +varTempDatum)
	logInfo("Afval.rules", "varAbfall1Datum" +varAbfall1Datum)
	logInfo("Afval.rules", "varAbfall2Datum" +varAbfall2Datum)
	logInfo("Afval.rules", "varAbfall3Datum" +varAbfall3Datum)
	logInfo("Afval.rules", "varTempArt" +varTempArt)
	logInfo("Afval.rules", "varAbfall1Art" +varAbfall1Art)
	logInfo("Afval.rules", "varAbfall3Art" +varAbfall3Art)
	logInfo("Afval.rules", "varTempTage" +varTempTage)
	logInfo("Afval.rules", "varAbfall1Tage" +varAbfall1Tage)
	logInfo("Afval.rules", "varAbfall2Tage" +varAbfall2Tage)
	logInfo("Afval.rules", "varAbfall3Tage" +varAbfall3Tage)
end

I think I deleted to much at the comparison part. Can someone look at my rule and tell me what I did wrong and how I can solve this?