HABpanel Selection Widget Backgroud Color

GUI Relevanten, PaperUI, BasicUI, HabPanel ...

Moderatoren: seppy, udo1toni

Antworten
Asus
Beiträge: 25
Registriert: 27. Dez 2018 22:31

HABpanel Selection Widget Backgroud Color

Beitrag von Asus »

Hallo

Ich verwende im HABpanel das Selection/Auswahl Widget.
Habe 3 Felder definiert HAND,AUTO,AUS
Habe auch eine Rule erstellt, die dann via mqtt den Zustand verschickt.

Code: Alles auswählen

rule "Heiz"
		when
  			Item Heizung changed
		then
			logInfo("heiz.rules","Heizung= " + Heizung.state )
			switch (Heizung.state){
					case "HAND":  //rule for scene 1
						logInfo("heiz.rules","Heizung= case1=HAND" )
						actions.publishMQTT("Heiz/cmd/Heizung","HAND")
					case "AUTO": //rule for scene 2	
						logInfo("heiz.rules","Heizung= case2=AUTO" )
						actions.publishMQTT("Heiz/cmd/Heizung","AUTO")
					case "AUS":{ //rule for scene 2	
						logInfo("heiz.rules","Heizung= case3=AUS" )
						actions.publishMQTT("Heiz/cmd/Heizung","AUS")
					}
			}
		end
funktioniert soweit sehr gut.
Jetzt möchte ich jedoch den Hintergrund des Widgets abhängig vom state z.b. ROT,GRÜN,GELB machen.
Würde dies gerne in der rule mitdefninieren.

Geht das?
Wie?

Danke
Verwende openHAB 2.5.10-1 auf RasPi

Benutzeravatar
udo1toni
Beiträge: 13854
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: HABpanel Selection Widget Backgroud Color

Beitrag von udo1toni »

Die Farbe in HABpanel musst Du in HABpanel konfigurieren, im Zweifel kannst Du das direkt vom Item abhängig machen. Über Rules kannst Du das nicht direkt steuern, nur indirekt über ein Item, welches Du dann in HABpanel zur Steuerung verwendest.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Asus
Beiträge: 25
Registriert: 27. Dez 2018 22:31

Re: HABpanel Selection Widget Backgroud Color

Beitrag von Asus »

udo1toni hat geschrieben: 1. Nov 2020 14:18 Die Farbe in HABpanel musst Du in HABpanel konfigurieren, im Zweifel kannst Du das direkt vom Item abhängig machen. Über Rules kannst Du das nicht direkt steuern, nur indirekt über ein Item, welches Du dann in HABpanel zur Steuerung verwendest.
Danke

Aber leider verstehe ich die Antwort nicht ganz.

* Im HABpanel konfigurieren mag für einige Widgets gehen (Button), aber "selction" hat, soviel ich bis jetzt gesehen habe, keine Möglichkeit die Farbe für verschiedene Zustände zu definieren. Wo habe ich da was übersehen? Kann ich ein Standart widget erweitern?

* Auch "indirekt über ein Item" habe ich noch nicht entdeckt. Wie könnte dies gehen? Vorallem muss diesem Item ja die Farbe dynamisch - abhängig vom Zustand- zugewiesen werden? Das passiert dann wieder in einer rule? Und diese Item-farbe überträgt sich dann auf die Anzeige im widget?

* Wenn ich das Widget selber mache (Custom Widget), dann kann ich natürlich die Farben ändern. Da habe ich bis jetzt ein Beispiel https://community.openhab.org/t/custom-popups/24889 gefunden.Werde ich wahrscheinlich weiter verfolgen.

Aber trotzdem, damit ich es für die Zukunft weiß, ist eine Antwort zu den 2 Fragen noch interessant.

Danke inzwischen!
Verwende openHAB 2.5.10-1 auf RasPi

Benutzeravatar
udo1toni
Beiträge: 13854
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: HABpanel Selection Widget Backgroud Color

Beitrag von udo1toni »

Oh. Mist. Das hatte ich mit der normalen Schaltfläche durcheinander gebracht. Da kann man für jeden Wert (ok, sind nur zwei) die Farbe für Hintergrund und Schrift getrennt einstellen...

Es bleibt aber dabei, dass HABpanel sich nicht durch eine Rule steuern lässt. Da es (so scheint es mir zumindest) kein passendes Widget gibt, wirst Du selbst eines entwickeln müssen. Eine direkte Steuerung über Rules ist nicht möglich!
Du kannst also allenfalls eine Wertetabelle mit einbauen, die für jeden Wert der Selection einen entsprechenden Farbwert nutzt.
Das vorhandene Auswahl-Widget könnte man vielleicht entsprechend ergänzen. Ich habe mich selbst aber noch nicht mit Widget-Programmierung beschäftigt und kann Dir da nicht helfen.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Asus
Beiträge: 25
Registriert: 27. Dez 2018 22:31

Re: HABpanel Selection Widget Backgroud Color

Beitrag von Asus »

udo1toni hat geschrieben: 2. Nov 2020 09:38 ......Das vorhandene Auswahl-Widget könnte man vielleicht entsprechend ergänzen......
Danke Udo
Ja, das wäre auch interessant, ob und wie man ein vorhandenes widget als Vorlage für eigene Kreationen / Programmierungen verwenden könnte.
Werde dazu einen eigenen Faden eröffnen.

Aber hier mein Versuch,der soweit gut funktioniert. Ist natürlich nicht von mir, nur etwas erweitert bzw. umgebaut. Dieursprüngliche Variante ist von https://community.openhab.org/t/custom-popups/24889, Weiter Ideen von viewtopic.php?t=1080

Danke einstweilen, solong.

Code: Alles auswählen

<style>

.custom-modal-container {
  background: rgba(0, 0, 0, 0.75);
  opacity: 0;
  color: white;
  width: 100%;
  height: 100%;
  position: fixed;
  top: 0;
  left: 0;
  visibility: hidden;
  -webkit-transition: opacity 0.5s, visibility 0s linear 0.5s;
  transition: opacity 0.5s, visibility 0s linear 0.5s;
  z-index: 99999;
}

.custom-modal {
  position: absolute;
  top: 50%;
  left: 50%;
  padding: 2em;
  border-radius: 0.5em;
  -webkit-transform: translateX(-50%) translateY(-50%);
          transform: translateX(-50%) translateY(-50%);
}
.custom-modal.close-modal-area {
  width: 100%;
  height: 100%;
}
.custom-modal-content .custom-modal {
  width: 100%;
  max-width: 40em;
}

.toggle-modal-button {
  background-color: transparent;
  color: white;
  display: inline-block;
  padding: 1em;
  cursor: pointer;
  border-radius: 0.5em;
  box-shadow: inset 0 0 1px white;
}

  
.toggle-modal-button:hover, .toggle-modal-button:focus,
    .toggle-modal-button:active {
  //background-color: rgba(0, 0, 0, 0.25);
  box-shadow: none;
   color: peru;
}

  
  

.custom-modal-content {
  color: peru;
  width: 90%;
  max-width: 600px;
  padding-top: 0em;
  margin: 0 auto;
}
.custom-modal.custom-modal-box {
  background: indianred;
  text-align: center;
}
.custom-modal-container.active {
  opacity: 1;
  visibility: visible;
  -webkit-transition: opacity 0.5s;
  transition: opacity 0.5s;
}
  
  
.black  { background-color: black; }
.green { background-color: green; }
.red { background-color: red; }
.blue  { background-color: blue;}
.yellow  { background-color: yellow; color:black;}

  .custom-modal-content .toggle-modal-button {
  //color: rgba(255, 255, 255, 0.75);
  //margin-bottom: 1em;
}

</style>
<section class="custom-modal-container" ng-class="{ active: show_modal}">
  <div for="toggler" class="custom-modal close-modal-area" ng-click="show_modal=false"></div>
  <div class="custom-modal custom-modal-box">
    <div>Are you sure?</div>
    <br />
    <div class="toggle-modal-button" style="background-color:yellow; color:black" ng-click="show_modal=false; sendCmd('Heizung', 'HAND')">HAND</div>
    <div class="toggle-modal-button" style="background-color:green;" ng-click="show_modal=false; sendCmd('Heizung', 'AUTO')">AUTO</div>
    <div class="toggle-modal-button" style="background-color:blue;" ng-click="show_modal=false; sendCmd('Heizung', 'AUS')">AUS</div>
  </div>
</section>
<section class="custom-modal-content">
  <div  class="toggle-modal-button" ng-click="show_modal=true" ng-class="{ active: show_modal,
                             yellow: itemValue('Heizung')=='HAND', 
                             green: itemValue('Heizung')=='AUTO', 
                             blue: itemValue('Heizung')=='AUS'}">
    Heizung<BR>{{itemValue('Heizung')}}</BR></div>
</section>
Und noch die funktionieren rule, vielleicht kann ja jemand was damit selber anfangen.

Code: Alles auswählen

rule "Heiz"
		when
  			Item Heizung changed
		then
			if(Heiz_VL_setpoint.state == NULL || Heiz_VL_setpoint.state == UNDEF){
			//if( !(Sonde_SDE_Hum.state instanceof UnDefType
				postUpdate(Heiz_VL_setpoint, 30)
			}
			logInfo("heiz.rules","Heizung= " + Heizung.state )
			val actions = getActions("mqtt","mqtt:broker:mosquitto")
			switch (Heizung.state){
					case "HAND":{  //rule for scene 1
						logInfo("heiz.rules","Heizung= case1" )
						actions.publishMQTT("Heiz/cmd/Heizung","HAND")
					}
					case "AUTO":{ //rule for scene 2
						logInfo("heiz.rules","Heizung= case2" )
						actions.publishMQTT("Heiz/cmd/Heizung","AUTO")
					}
					case "AUS":{ //rule for scene 2
						logInfo("heiz.rules","Heizung= case3" )
						actions.publishMQTT("Heiz/cmd/Heizung","AUS")
					}
			}
		end
Verwende openHAB 2.5.10-1 auf RasPi

Benutzeravatar
udo1toni
Beiträge: 13854
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: HABpanel Selection Widget Backgroud Color

Beitrag von udo1toni »

Was ich nicht so ganz verstehe, ist, warum Du dafür eine Rule nutzt (also abgesehen von dem Heiz_VL_setpoint).

Du brauchst lediglich ein mqtt Thing (bzw. einen Channel in einem vorhandenen mqtt Thing) mit der folgenden Definition:

Code: Alles auswählen

Type string : heiz "Heizung" [commandTopic="Heiz/cmd/Heizung"]
Diesen Channel verlinkst Du mit dem Item Heizung.
Das Item Heizung konfigurierst Du zusätzlich noch mit dem Profile "follow". Den Rest erledigt dann openHAB. Keine Rule.

Damit Heiz_VL_setpoint geändert wird, kannst Du die bestehende Rule entsprechend kürzen:

Code: Alles auswählen

rule "Heiz"
when
    Item Heizung changed
then
    if(!(Heiz_VL_setpoint.state instanceof Number))
        Heiz_VL_setpoint.postUpdate(30)
end
Sobald sich der Status des Items Heizung ändert, prüft openHAB, ob Heiz_VL_setpoint eine gültige Zahl enthält. Ist das nicht der Fall, trägt es 30 als wert ein.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Asus
Beiträge: 25
Registriert: 27. Dez 2018 22:31

Re: HABpanel Selection Widget Backgroud Color

Beitrag von Asus »

Hi Udo,
DANKE
udo1toni hat geschrieben: 4. Nov 2020 11:29 Was ich nicht so ganz verstehe, ist, warum Du dafür eine Rule nutzt (also abgesehen von dem Heiz_VL_setpoint).......
Habe ich nicht gekannt. Aber ich kratze ja erst mal an der Oberfläche von OpenHab und HABpanel.

Funktioniert super! - Danke
Da werde ich noch mehr rules eliminieren können.

Danke, solong.
Verwende openHAB 2.5.10-1 auf RasPi

Antworten