Hello community,
i have some trouble with my custom plugin, which i created to simplify the usage of my LCD menu. Here is a simple description of my idea:
At the moment i have a LCD 20x4 i2c panel. This LCD panel should show some information about my project environment (values like temperature, humidity, fan speed, and other things). These values i want to group into chapters, which i can switch by a button.
My first way to go was to realize it without a custom plugin or device and i just to use rules with variables (so far not a bad idea). SoIn that case i created a variable with the current chapter state and for every chapter a expression variable for every line:
$currentChapter = 1
$chapter1Line1 = „temperature #{sensor.temp} C“
$chapter1Line2 = „some content“
$chapter1Line3 = „some content“
$chapter1Line4 = „some content“
$chapterXLineY = „some content for XY row“
This works very well with the following rule definition for every chapter:
if $currentChapter changes and $currentChapter = 1 then set $chapter1Line1 of lcd on line 1 and set $chapter1Line2 of lcd on line 2 and [….]
You see, i have to define for every chapter a separate rule, which is a unnecessary overhead. To prevent and simplify this issue, i want to outsource the chapter mechanism and the templates into a plugin to use a rule like this:
if $menu.chapter changes set $menu.line1of lcd on line1 and $menu.line2 of lcd on line2 and […]
So, the device of my menu plugin manage the state of the current chapter and update the device attribute of every line. So the rule choose the right template string of the current chapter.
Now my problem. In my device, i create a schema with an array of chapters. For every chapter i can define for every row a string. Inside this string, i would like to use a global variable of a sensor or other device. So i need to parse the content of the variable.
Is something like this possible?
if $menu.chapter changes set ‚parseExpression($menu.line1)‘ of lcd on line1 and […]
Or is it possible to parse the string inside an action handler? Or do you have any other suggestion to simplify a menu for a lcd?
Thanks for any help