Template widget - tutorial & examples - make your own widget!

The variable in the custom widget editor are called “config.id” where id is the id name
Therefore you should replace ItemValue(‘field1’) with config.field1

2 Likes

Can anyone tell me how to increase and send back a decimal properly? I don’t get how casting should be handled:

ng-click=“sendCmd(‘EGWZHZThermostat_4_SetTemperature’, 1.0*itemValue(‘EGWZHZThermostat_4_ActualTemperature’) + 0.5)”

doesn’t seem to work…

For the temperature setpoint I use {{+itemValue(‘myItem’) + 0,5}} and it works.

with comma? are you sure that works?

Sorry typing mistake. This is my code :ng-click=“sendCmd(‘SetTemp_Taverna’, +itemValue(‘SetTemp_Taverna’)-0.5)”

it’s working now meanwhile - I had a different problem. Thanks for the reply!

I just want to create a button to increase (or decrease) a DateTime by 30 min.

something like ng-click=“sendCmd(‘Sveglia’, +itemValue(‘Sveglia’)+ ?? )”

Any Idea?

Hi all,

I am using kubawolanin widget below with some alterations to suit my own needs, and I was wondering how I would go about calling a url string to provide an icon instead of the ones kubawolanin uses.

I know how to configure the settings I just don’t know the code to call the url. This is an example of the url I am provided:

And I know that the line of code I need to change is the bottom line, I’m just unsure of what to change it to…:

<div class="weather-content">
  <div class="weather-row">
    <div class="weather-icon" ng-class="(ngModel.sizeX === ngModel.sizeY) ? 'col-md-12' : 'col-md-10'">
		<img style="filter: invert(60%) sepia(100%) hue-rotate(185deg) saturate(1000%);"
		src="/icon/climacon?iconset=climacons&format=svg&state={{itemValue(config.weather_condition)}}" />

https://community.openhab.org/t/custom-widget-current-weather/18216

I appreciate anyones help on this.

Try something like

<img style="filter: invert(60%) sepia(100%) hue-rotate(185deg) saturate(1000%);"
		src="{{itemValue('Your_Weather_Icon_Url_Item')}}" />

@kubawolanin

That’s great! Worked a treat! I now have:

I just need to play about with it a bit now to get original colours.

Thanks a lot!

Just remove this line and you should be ready to go :wink:

1 Like

Thanks! All done!

Yannick,

recently moved from OH1.7 to OH2 and discovered the HABPANEL and started playing around with the widgets. Thanks to your input on this forum, I was able to start to build some custom widgets.
I have a number of Webcams where I use the std widget to display an image which I refresh once a second.
Now, when I saw your example of the Angular based Carrousel, I planned to use this to rotate the Webcam images to preserve dashboard space … This works, but the images are not refreshed …only when I manually refresh my browser, it will display a fresh image …
Is there

hit enter to fast …
Is there an option have the image refresh every time ?

thx

@chris_van_aalst nothing prevents you from putting a HABPanel image widget as the content of the slides, initializing it with a model with the “refresh” property set to an amount in seconds (from https://github.com/openhab/org.openhab.ui.habpanel/blob/master/web/app/widgets/image/image.widget.js#L87 - a proper documentation of these is underway):

  <div uib-carousel active="0" interval="5000" no-wrap="false">
    <div uib-slide index="0" ng-init="model1 = { 'url':'<your_first_image_url>', 'refresh': 5 }">
      <widget-image ng-model="model1" style="margin:auto;"/>
    </div>
    <div uib-slide index="1" ng-init="model2 = { 'url':'<your_second_image_url>', 'refresh': 5 }">
      <widget-image ng-model="model2" style="margin:auto;"/>
    </div>
    and so on...

I didn’t test it too much though, there might be issues to sort out…

2 Likes

Yannick,

this works: a snapshot of my Webcam - refreshes every 1 second and changes Webcam every 5 seconds !

Thanks very much !

Chris

<div style="height: 610px">
  <div uib-carousel active="0" interval="5000" no-wrap="false">
    <div uib-slide index="0" ng-init="model1 = { 'url':'http://192.168.0.118/snap.jpeg', 'refresh': 1 }">
      <widget-image ng-model="model1" style="margin:auto;"/>
    </div>
    <div uib-slide index="1" ng-init="model2 = { 'url':'http://192.168.0.121/snap.jpeg', 'refresh': 1 }">
      <widget-image ng-model="model2" style="margin:auto;"/>
    </div>
    <div uib-slide index="2" ng-init="model3 = { 'url':'http://192.168.0.122/snap.jpeg', 'refresh': 1 }">
      <widget-image ng-model="model3" style="margin:auto;"/>
    </div>
    <div uib-slide index="3" ng-init="model4 = { 'url':'http://192.168.0.123/snap.jpeg', 'refresh': 1 }">
      <widget-image ng-model="model4" style="margin:auto;"/>
    </div>
  </div>
</div>

6 Likes

I am trying use above example to increase value of item :

<button style="width: 100%; height: 3em;
border: 0; color: white; background: red;
font-size: 30px" ng-click="sendCmd('Heating_GF_Living_Setpoint', '{{+itemValue('Heating_GF_Living_Setpoint')+1}}')">
{{itemValue('Heating_GF_Living_Setpoint')}}
{{+itemValue('Heating_GF_Living_Setpoint') + 1}}
</button>

it shows the correct value in the last lines but it does not send value to the item , what could be wrong ?

I found solution , I had to remove ‘{{ and }}’ and now it works. When I click it sends correct data to the item.

<button style="width: 100%; height: 3em;
border: 0; color: white; background: red;
font-size: 30px" ng-click="sendCmd('Heating_GF_Living_Setpoint', +itemValue('Heating_GF_Living_Setpoint')+1)">
{{itemValue('Heating_GF_Living_Setpoint')}}
{{+itemValue('Heating_GF_Living_Setpoint') + 1}}
</button>
1 Like

Hi

I try to make a status page with HabPanel. On this page I want to see, ehich windows and doors are open. The problem ist, that happanel “loses” the status. If i open and close the window, the status is richt and it stays right until i change to another page or if i refresh.

In the template I just want to count the open windows but the value ist def. wrong.

Thanks
Daniel

OH_Screenshots.pdf (159.1 KB)

1 Like

If I read your post correctly, I think that I’m seeing a similar issue. Working on building a widget for doors - shows the status of a contact switch as well as the lock all in one. When I initially run (or refresh the page, etc.), the icon for the door open/closed status isn’t showing. In fact, nothing is shown there - it’s blank. Once the device changes state, it shows and works properly. I’m guessing that the state isn’t coming in initially.

Here’s my code (the pertinent part for this icon that I stripped out to test this issue):

<table>
  <tr>
    <td>
      <div ng-if="itemValue('LRBackDoorTripped')=='OPEN'">
        <widget-icon iconset="'eclipse-smarthome-classic'" icon="'door-open'" />
      </div>
      <div ng-if="itemValue('LRBackDoorTripped')=='CLOSED'">
        <widget-icon iconset="'eclipse-smarthome-classic'" icon="'door-closed'" />
      </div>
    </td>
  </tr>
</table>

As an experiment, I changed the “closed” state to be != OPEN instead. Now it comes in as a closed door, so I’m atleast getting an icon. But it comes in as closed even if the door is open… This definitely makes me think it’s coming in as a Null or some other odd state (haven’t investigated further).

      <div ng-if="itemValue('LRBackDoorTripped')!='OPEN'">
        <widget-icon iconset="'eclipse-smarthome-classic'" icon="'door-closed'" />
      </div>

I’ve searched and didn’t find a work-around or fix. Coincidentally, it appears that I’m not the only one finding this issue today…

Any help is appreciated.

Thanks,

Danny