Creating charts with different item-types

Hi everybody,

I’m currently working on optimizing my heating with the help of charting of persisted temperatures.

Currently my Charts look like this:

Sitemap:

Frame label= "Visualisierung in" {
                Switch item=CHART_PERIOD label="Zeitspanne" mappings=[0="12 Stunden", 1="24 Stunden", 2="3 Tage", 3="7 Tage", 4="14 Tage"]
              }
              Frame label= "EG" {
                Text item=Temperatures_EG_Wohnzimmer
                Text item=Temperatures_EG_Kueche
                Text item=Temperatures_EG_Arbeitszimmer
                Text item=Temperatures_EG_Speisekammer
                Text item=Temperatures_EG_GaesteWC
                Text item=Temperatures_EG_Flur
                Chart item=zTempEG period=12h refresh=300000 legend=true  visibility=[CHART_PERIOD==0, CHART_PERIOD=="Uninitialized"]
                Chart item=zTempEG period=D refresh=300000 legend=true  visibility=[CHART_PERIOD==1]
                Chart item=zTempEG period=3D refresh=300000 legend=true  visibility=[CHART_PERIOD==2]
                Chart item=zTempEG period=W refresh=300000 legend=true  visibility=[CHART_PERIOD==3]
                Chart item=zTempEG period=2W refresh=300000 legend=true  visibility=[CHART_PERIOD==4]

Items:

Number Temperatures_EG_Wohnzimmer "Wohnzimmer [%.1f °C]" <temperature> (EG_Wohnzimmer, zTemp, zTempEG, zOWMWohnzimmerWintergarten) { channel="knx:device:KNX:Tastsensor_Wohnzimmer:Temperatur" }
  // Number Temperatures_EG_Esszimmer "Esszimmer [%.1f °C]" <temperature> (EG_Esszimmer, zTemp, zTempEG) { channel="knx:device:KNX:Zentralfunktionen_1:Temperatur" }
  // Number Temperatures_EG_Wintergarten "Wintergarten [%.1f °C]" <temperature> (EG_Wintergarten, zTemp, zTempEG) { channel="knx:device:KNX:Zentralfunktionen_1:Temperatur" }
  Number Temperatures_EG_Kueche "Kueche [%.1f °C]" <temperature> (EG_Kueche, zTemp, zTempEG, zOWMKueche) { channel="knx:device:KNX:Tastsensor_Kueche:Temperatur" }
  Number Temperatures_EG_Arbeitszimmer "Arbeitszimmer [%.1f °C]" <temperature> (EG_Arbeitszimmer, zTemp, zTempEG, zOWMArbeitszimmer) { channel="knx:device:KNX:Tastsensor_Arbeitszimmer:Temperatur" }
  Number Temperatures_EG_Speisekammer "Speisekammer [%.1f °C]" <temperature> (EG_Speisekammer, zTemp, zTempEG, zOWMSpeisekammer) { channel="knx:device:KNX:Tastsensor_Speisekammer:Temperatur" }
  Number Temperatures_EG_GaesteWC "GaesteWC [%.1f °C]" <temperature> (EG_GaesteWC, zTemp, zTempEG, zOWMGaesteWC) { channel="knx:device:KNX:Tastsensor_GaesteWC:Temperatur" }
  Number Temperatures_EG_Flur "Flur EG [%.1f °C]" <temperature> (EG_Flur, zTemp, zTempEG, zOWMFlurEG) { channel="knx:device:KNX:Tastsensor_Flur_EG:Temperatur" }

Things:

Thing device Heizungsaktor_8fach_1 "Heizungsaktor 8-fach 1" @ "KNX"  [ address="1.1.6", fetch=false, pingInterval=600, readInterval=0 ]
	{
					Type 		switch	:		    KindLinks									"Heizung KindLinks"								[ ga="4/1/1" ]
					Type 		switch	:		    Schlafzimmer							"Heizung Schlafzimmer"						[ ga="4/1/22" ]
					Type 		switch	:		    Elternbad									"Heizung Elternbad"								[ ga="4/1/29" ]
					Type 		switch	:		    Kinderbad									"Heizung Kinderbad"								[ ga="4/1/15" ]
					Type 		switch	:		    KindRechts								"Heizung KindRechts"							[ ga="4/1/8" ]
					Type 		switch	:		    FlurOGundEG								"Heizung FlurOGundEG"							[ ga="4/2/36" ]
					Type 		switch	:		    WohnzimmerWintergarten		"Heizung WohnzimmerWintergarten"	[ ga="4/2/29" ]
					Type 		switch	:		    GaesteWC									"Heizung GaesteWC"								[ ga="4/2/8" ]

	}

	Thing device Heizungsaktor_8fach_2 "Heizungsaktor 8-fach 2" @ "KNX"  [ address="1.1.7", fetch=false, pingInterval=600, readInterval=0 ]
	{
					Type 		switch	:		    Speisekammer				"Heizung Speisekammer"				[ ga="4/2/15" ]
					Type 		switch	:		    Kueche							"Heizung Kueche"							[ ga="4/2/22" ]
					Type 		switch	:		    Arbeitszimmer				"Heizung Arbeitszimmer"				[ ga="4/2/1" ]
					Type 		switch	:		    Keller2							"Heizung Keller2"							[ ga="4/3/1" ]
					Type 		switch	:		    Keller3							"Heizung Keller3"							[ ga="4/3/8" ]
					Type 		switch	:		    Keller4							"Heizung Keller4"							[ ga="4/3/15" ]
					Type 		switch	:		    Keller5undFlurKG		"Heizung Keller5undFlurKG"		[ ga="4/3/22" ]

	}

Persistence looks like the following:

Strategies {
        // for rrd charts, we need a cron strategy
        every5Minutes : "0 0/5 * 1/1 * ? *"
        everyHour	: "0 0 * * * ?"

        default = every5Minutes
    }
Items {
        // which data to be stored
    	zTemp : strategy = every5Minutes, restoreOnStartup
      zTempEG : strategy = every5Minutes, restoreOnStartup
      zTempOG : strategy = every5Minutes, restoreOnStartup
      zTempKG : strategy = every5Minutes, restoreOnStartup
      Temperatures_EG_Wohnzimmer,Temperatures_EG_Kueche,Temperatures_EG_Arbeitszimmer,Temperatures_EG_Speisekammer,Temperatures_EG_GaesteWC,Temperatures_EG_Flur,Temperatures_OG_Schlafzimmer,Temperatures_OG_Elternbad,Temperatures_OG_KindLinks,Temperatures_OG_KindRechts,Temperatures_OG_Kinderbad,Temperatures_KG_Speisekammer,Temperatures_KG_Fitnessraum,Temperatures_KG_Werkstatt,Temperatures_KG_Archiv : strategy = every5Minutes, restoreOnStartup
      zOWM    : strategy = every5Minutes, restoreOnStartup
      owmTemperatur,owmWolken : strategy = every5Minutes, restoreOnStartup

      Light_EG_Treppen, Switch_EG_Wohnzimmer_TV_Links, Switch_EG_Wohnzimmer_UBoot_Rechts : strategy = everyChange, everyUpdate, restoreOnStartup

      }

Now I’d like to add an Item like to following to the visualization:

Switch Light_EG_Treppen "Licht Stufenbeleuchtung" <light> (zLight, EG_Flur, zOWMWohnzimmerWintergarten) { channel="knx:device:KNX:Schaltaktor_20fach_1:Stufenbeleuchtung" }
  

How can I achieve this? I tried adding it to the persistence (as above) and then trying to visualize it within the chart but it doesn’t appear within the graphic. Do I somehow need to change the type as it’s no value as the temperature but a state like “ON” or “OFF”?!

Thanks in advance

You would need to use a Number proxy item and set the value to 0 or 1 whenever the switch changes to ON or OFF in a rule and use that proxy item in the chart

Hey there, thanks for your answer. I tried to follow the “Proxy Item”-approach and came up with another item which looks like the following:

Number Thermostat_Test "Thermostat_Test [%d]" (zOWMthermostattest)

The corresponding rule to that item looks like the following (thus it always is 1 or 0 depending on the switch-state):

rule "Thermostat_Test"
  when
    Item Switch_EG_Wohnzimmer_UBoot_Rechts received command
  then
  if(receivedCommand == ON ) {
      Thermostat_Test.sendCommand(1)
  }

  else
  if(receivedCommand == OFF) {
      Thermostat_Test.sendCommand(0)
  }
  end

My persistence looks like the following:

zOWMthermostattest : strategy = everyChange, everyUpdate, restoreOnStartup

But the following chart doesnt show any data:

Frame label= "Thermostat_Test" {
                  Text item=Thermostat_Test
                  Chart item=zOWMthermostattest period=12h refresh=300000 legend=true  visibility=[CHART_PERIOD_2==0, CHART_PERIOD_2=="Uninitialized"]
                  Chart item=zOWMthermostattest period=D refresh=300000 legend=true  visibility=[CHART_PERIOD_2==1]
                  Chart item=zOWMthermostattest period=3D refresh=300000 legend=true  visibility=[CHART_PERIOD_2==2]
                  Chart item=zOWMthermostattest period=W refresh=300000 legend=true  visibility=[CHART_PERIOD_2==3]
                  Chart item=zOWMthermostattest period=2W refresh=300000 legend=true  visibility=[CHART_PERIOD_2==4]
                }

Can anybody tell me why the chart doesn’t show anything? The item itself works fine, by simply showing it on the sitemap I can see that it’s either 1 or 0.
The chart looks like this:

It seems to me like persistence is not working correctly.

Thanks in advance

Is there data I the persistence yet?

Yes, generally my persistence works fine, yes.

See:

Yes but this item is new and may not have data in it yet. I also recommend restating openHAB after modifying the persistence file

Hey there,
I restarted the service + RPi but still no data within the persistence for that item. Is there maybe a problem with the datatype (just a guess)?

rule "Thermostat_Test"
  when
    Item Switch_EG_Wohnzimmer_UBoot_Rechts received command
  then
  if(receivedCommand == ON ) {
      Thermostat_Test.sendCommand(1)
  }

  else
  if(receivedCommand == OFF) {
      Thermostat_Test.sendCommand(0)
  }
  end

My persistence looks like the following:

zOWMthermostattest : strategy = everyChange, everyUpdate, restoreOnStartup

Your item in the rule is: Thermostat_Test
Your item in the persistence is: zOWMthermostattest

That will be why

Yes you’re right. I changed that, but unfortunately nothing changed thus far. I don’t get it.

Recap:
My item

Number Thermostat_Test "Thermostat_Test [%d]" (zOWMthermostattest, zOWMWohnzimmerWintergarten, EG_Wohnzimmer)

gets it’s value by the following rule:

rule "Thermostat_Test"
  when
    Item Switch_EG_Wohnzimmer_UBoot_Rechts received command
  then
  if(receivedCommand == ON ) {
      Thermostat_Test.sendCommand(1)
      Testtest.sendCommand(1)
  }

  else
  if(receivedCommand == OFF) {
      Thermostat_Test.sendCommand(0)
      Testtest.sendCommand(0)
  }
  end

Which can be see within the log but also in the above shown screenshot.
Excerpt from my log:

2018-09-28 13:31:35.191 [ome.event.ItemCommandEvent] - Item 'Switch_EG_Wohnzimmer_UBoot_Rechts' received command ON
2018-09-28 13:31:35.211 [vent.ItemStateChangedEvent] - Switch_EG_Wohnzimmer_UBoot_Rechts changed from OFF to ON
2018-09-28 13:31:35.238 [ome.event.ItemCommandEvent] - Item 'Thermostat_Test' received command 1
2018-09-28 13:31:35.280 [vent.ItemStateChangedEvent] - Thermostat_Test changed from 0 to 1

It should be persisted this way:

Thermostat_Test : strategy = every5Minutes, everyChange, everyUpdate, restoreOnStartup

Nonetheless it is not being displayed within my chart which looks like the following:

Frame label= "Thermostat_Test" {
                  Text item=Thermostat_Test
                  Chart item=zOWMthermostattest period=12h refresh=300000 legend=true  visibility=[CHART_PERIOD_2==0, CHART_PERIOD_2=="Uninitialized"]
                  Chart item=zOWMthermostattest period=D refresh=300000 legend=true  visibility=[CHART_PERIOD_2==1]
                  Chart item=zOWMthermostattest period=3D refresh=300000 legend=true  visibility=[CHART_PERIOD_2==2]
                  Chart item=zOWMthermostattest period=W refresh=300000 legend=true  visibility=[CHART_PERIOD_2==3]
                  Chart item=zOWMthermostattest period=2W refresh=300000 legend=true  visibility=[CHART_PERIOD_2==4]
                }

I ran through that whole thing with a completely new items just to be sure, but the issue stays.

Is there any other approach I can try?

Thanks in advance, and thanks for staying with me!

You also need to change the item in the site map chart

You mean like this?

Frame label= "Thermostat_Test" {
                  Text item=Thermostat_Test
                  Chart item=Thermostat_Test period=12h refresh=300000 legend=true  visibility=[CHART_PERIOD_2==0, CHART_PERIOD_2=="Uninitialized"]
                  Chart item=Thermostat_Test period=D refresh=300000 legend=true  visibility=[CHART_PERIOD_2==1]
                  Chart item=Thermostat_Test period=3D refresh=300000 legend=true  visibility=[CHART_PERIOD_2==2]
                  Chart item=Thermostat_Test period=W refresh=300000 legend=true  visibility=[CHART_PERIOD_2==3]
                  Chart item=Thermostat_Test period=2W refresh=300000 legend=true  visibility=[CHART_PERIOD_2==4]
                }

Didn’t change anything. Furthermore I don’t want to display just one item, in future I want it to be mixed. On the one hand “real” temperatures based on Items of type number and virtual proxy items (datatype number) based on Switches which only know states “ON” and "OFF.

Did you restart OH after changing the persistence file earlier?

Yes I did, Restarted the whole RPI

Yes like this:

Frame label= "Thermostat_Test" {
                  Text item=Thermostat_Test
                  Chart item=Thermostat_Test period=12h refresh=300000 legend=true  visibility=[CHART_PERIOD_2==0, CHART_PERIOD_2=="Uninitialized"]
                  Chart item=Thermostat_Test period=D refresh=300000 legend=true  visibility=[CHART_PERIOD_2==1]
                  Chart item=Thermostat_Test period=3D refresh=300000 legend=true  visibility=[CHART_PERIOD_2==2]
                  Chart item=Thermostat_Test period=W refresh=300000 legend=true  visibility=[CHART_PERIOD_2==3]
                  Chart item=Thermostat_Test period=2W refresh=300000 legend=true  visibility=[CHART_PERIOD_2==4]
                }

In contrast to your advise I can prove you wrong in this as when I declare two items within the group zTesttest as the following:

  Number Testtest "Testtest [%d]" <temperature> (zTesttest, EG_Wohnzimmer)

  Number Temperatures_EG_Wohnzimmer "Wohnzimmer [%.1f °C]" <temperature> (EG_Wohnzimmer, zTemp, zTempEG, zTesttest, zOWMWohnzimmerWintergarten) {knx="<(300)4/2/30"}

and set up a chart as the following:

Frame label= "Testest" {
                  Text item=Testtest
                  Text item=Temperatures_EG_Wohnzimmer
                  Chart item=zTesttest period=12h refresh=300000 legend=true  visibility=[CHART_PERIOD_2==0, CHART_PERIOD_2=="Uninitialized"]
                  Chart item=zTesttest period=D refresh=300000 legend=true  visibility=[CHART_PERIOD_2==1]
                  Chart item=zTesttest period=3D refresh=300000 legend=true  visibility=[CHART_PERIOD_2==2]
                  Chart item=zTesttest period=W refresh=300000 legend=true  visibility=[CHART_PERIOD_2==3]
                  Chart item=zTesttest period=2W refresh=300000 legend=true  visibility=[CHART_PERIOD_2==4]
                }

Both items should be visualized within the chart which is a collection of all items of group zTesttest. Unfortunately only the item “Temperatures_EG_Wohnzimmer” is being visualised as the following:

OMG, I just wanted to do the screenshot and I saw the result I wanted to achieve:

So the conclusion is the above mentioned. Both items need to be in a group, explicitly stated within the Chart as Text Items but the chart itself must be the group holding both items.