iOS App V3.2.11 (215) Testflight

Hi there,

guess, some app maintainer are here.

some disadvantages I found in the latest version (and also in the previous version) are:

  • mapped switch buttons are enlarged to fill the entire line (e.g. aus / WW / H+WW)
  • some setpoint items can’t be changed any longer (e.g. “Neigung”, + - buttons are thinner and have no function). In earlier versions this worked.

Config:

Number NeigungM2 "Neigung [%.1f]" (gViessKenn) {
    channel="exec:command:ViessData:output"[
        profile="transform:JSONPATH",
        function="$..[?(@.command=='getNeigungM2')].value"
    ],
    stateDescription=""[pattern="%.1f"]
}

Number NiveauM2  "Niveau" (gViessKenn) {
    channel="exec:command:ViessData:output"[
        profile="transform:JSONPATH",
        function="$..[?(@.command=='getNiveauM2')].value"
    ],
    unit="K",
    stateDescription=""[pattern="%.0f K"]
}
            Setpoint item=Temp_Bad_heat_on  icon="underfloor-heating_dark" label="H+WW bei Badtemp. <" step=0.1 minValue=18 maxValue=20 visibility=[Viessmann_Betrieb=="WW"]  

            Setpoint item=NeigungM2 step=0.1 minValue=0.1 maxValue=1.0 visibility=[Viessmann_Betrieb == "H+WW"]

            Setpoint item=NiveauM2 step=1 minValue=0 maxValue=10  visibility=[Viessmann_Betrieb == "H+WW"] 

Hi @nw378

This is a deliberate decision.

some setpoint items can’t be changed any longer (e.g. “Neigung”, + - buttons are thinner and have no function). In earlier versions this worked.

I am wondering if it has something to do with how the Viesmann transformation returns the value with a comma instead of a point, and the current TestFlight version not correctly transforming these different formats yet. Does the Nivau possibly also get received as decimals 0,0 - 10,0? What if you set the Nivau formatting to

stateDescription=""[pattern="%d K"]

I cannot get any decimal comma at all, not matter what the iOS locale and format are set to.

You might also want to try fully writing out

WW bei Außentemperatur >

I had expected something like that. Perhaps a selection switch could be added in the properties?

I am wondering if it has something to do with how the Viesmann transformation returns the value with a comma instead of a point, and the current TestFlight version not correctly transforming these different formats yet.

The comma is the German display only. The value itself is 0.3 for example (with decimale point).

What if you set the Nivau formatting to

stateDescription=“”[pattern=“%d K”]

Same behavior. When I remove the channel from the item config, it works.
OK, I could use a “transfer item” and a rule, but that’s a regression.

I’m well aware of that :slight_smile: but I still do not get any Decimal comma with my iPhone being Set to Deutsch and Region Deutschland. So I’m not sure why you are getting commas in your Setpoints.

Definitely something to be looked at and to sort out.

Good question. I assume, this doesn’t matter.
The temperature in the line above is also displayed with a comma; here as well the value in OH is 15.2 (with a dot). This setpoint works. (You can see the difference in the brighter + and - icons)

I assume this limiting temperature is directly set up in openHAB and is not coming from any Thing Channel.

Exactly.

Could you post the Item definition for this line?

And what if you also put the format for the other Setpoints into the Item definition label, and take them out from the Thing definitions?

BTW, you also seem to have a special dark version of your icon, which is not required any longer with the latest iOS app versions.

Setpoint item=Temp_outside_heat_off  icon="underfloor-heating_dark" label="WW bei Außentemp >" step=0.1 minValue=13 maxValue=16 visibility=[Viessmann_Betrieb=="H+WW"]`   

No change. I assume the channel of the item is the reason.

Thanks, do you have a link to docs with some more details?

No change. I assume the channel of the item is the reason.

But I assume it works fine in Basic UI in any web browser, so definitely something to look into. Or maybe also wait until the locale number formatting is integrated into the TestFlight builds. I’m still very puzzled as how you got the comma decimal separator

Thanks, do you have a link to docs with some more details?

The last paragraph of the Label, Value and Icon Colors section on the Sitemaps page.

Colors defined by a human-readable name may be adjusted for higher contrast, e.g. on a dark theme black may be displayed as white, because white has a higher contrast to the dark background compared to black.

Even though I find this is not really the correct description :wink: Any monochrome SVG icon, which I assume is also the case for your icons, can be opened in a simple plain text editor. Then changing any colour definition within the text to currentColor, e.g.

path fill="#FFFFFF"
to
path fill="currentColor"

and saving it makes the SVG icon light or dark mode aware, in BasicUI in any web as well as in the iOS app, and I assume the Android app as well.

1 Like

Yes, in Basic UI or Web Browser it still works fine.

For the meantime, I created a work-around with additional items and a rule (also to avoid error by the comma, which wasn’t a problem so far):

Number NeigungM2 "Neigung [%.1f]" (gViessKenn) {channel="exec:command:ViessData:output"[profile="transform:JSONPATH", function="$..[?(@.command=='getNeigungM2')].value"], stateDescription=""[pattern="%.1f"]}

Number Neigung   "Neigung [%.1f]" (gViessKennSM)

Number NiveauM2  "Niveau"         (gViessKenn)   {channel="exec:command:ViessData:output"[profile="transform:JSONPATH", function="$..[?(@.command=='getNiveauM2')].value"],  unit="K", stateDescription=""[pattern="%d K"]}

Number Niveau    "Niveau"         (gViessKennSM) {unit="K", stateDescription=""[pattern="%d K"]}
rule "Heizung: Kennlinie synchronisieren"
when
    Member of gViessKennSM changed or
    Member of gViessKenn changed
then
    if (!(newState instanceof Number)) return;

    // Änderung kam aus der Sitemap → an Gerät senden
    if (gViessKennSM.members.contains(triggeringItem)) {

        if (!(previousState instanceof Number)) return;

        val value = String::format(Locale::US, "%.1f", (newState as Number).doubleValue)
        val cmd = "set" + triggeringItem.name + "M2 " + value

        Viessmann.sendCommand(cmd)
        return;
    }

    // Änderung kam vom Gerät → Sitemap-Item aktualisieren
    if (gViessKenn.members.contains(triggeringItem)) {

        val baseName = triggeringItem.name.substring(0, triggeringItem.name.length - 2)

        val target = gViessKennSM.members.findFirst[i | i.name.startsWith(baseName)]

        if (target !== null) {
            target.postUpdate(newState)
        }
    }
end

/cc @digitaldan @TAKeanice @timbms