[Modul] openHASP

ah ok :slight_smile:
Habe mich echt schon gewundert woran es noch liegen kann. Läuft eigenlich alles Plug and Play und recht stabil :grin:

Ich schaue mal ob ich das irgendwo noch in die Doku aufnehmen muss :wink:

1 „Gefällt mir“

Wie kann ich bei einem Button oder Label die Hintergrundfarbe ändern?

Für das Feedback beim Status von Lampen setze ich den Toggle-Button ein. Das klappt prima und ich kann das Licht auch schalten.
Bei dem Status von Fenstern macht das keinen Sinn - die Anzeige ist zwar korrekt, aber beim Auslösen wird das Fenster ja nicht geschlossen.
Wie kann ich in Abhängigkeit einer Bool-Variablen die Hintergrundfarbe eines Labels oder eines Buttons ändern?
Ich verwende nur automatisch erzeugte UI-Elemente…

Aktuell besteht die Möglichkeit ein Label zu nutzen und eine String-Variable als Hilfsvariable anzulegen.
Da kannst du auch mit Farbe und Symbol arbeiten
Die Hilfsvariable kannst du dann so setzen:

<?php
$FensterZustand = GetValue(/* Fenster variable */);

if($FensterZustand)
{
SetValue(/* Hilfsvariable */,"#00FF00 \uF11E Fenster ZU");
}
else
{
SetValue(/* Hilfsvariable */ ,"#FF0000 \uF11E Fenster AUF");
}

Das UI-Element im Modul kannst du dann entsprechend so anpassen wie du es möchtest.

An den Parametern kann man sich natürlich auch ausleben :slight_smile:

Danke, für den Hinweis - aber die Lösung gefällt mir nicht so sehr, weil ich mit einem Blick die Stati aller Fenster überblicken (… und nicht lesen…) will.
Ich habe die letzten Tage lang nach einer Lösung gesucht und diese Funktion dann erstellt:

Ich übergebe die ID der Variablen mit dem Status und die Adresse des OpenHASP-Elementes und der Sendcommand färbt den Button ein.

// Button rot/grün färben
function Status_setzen($ID, $Adresse)
{
    $Status     = 	Getvalue($ID);
	$Object		=	$Adresse;

    // immer setzen
    OHASP_SendCommand(44889,$Object.'.bg_opa=255');                     // Hintergrund nicht durchsichtig
    OHASP_SendCommand(44889,$Object.'.border_color=#FFFFFF');           // Umrandung weiss

if ($Status)   
	    	{
        	//Echo "Rot";   
            OHASP_SendCommand(44889,$Object.'.bg_color=#FF0000');        // Anzeigestatus
            OHASP_SendCommand(44889,$Object.'.bg_color02=#FF0000');      // pressed Status
            OHASP_SendCommand(44889,$Object.'.bg_grad_color=#FF0000');   // 2.Farbe
            OHASP_SendCommand(44889,$Object.'.bg_grad_color02=#FF0000'); // pressed 2.Farbe 
        	}  
    	else
        	{
  			//Echo "Grün";
            OHASP_SendCommand(44889,$Object.'.bg_color=#008000');        // Anzeigestatus
            OHASP_SendCommand(44889,$Object.'.bg_color02=#008000');      // pressed Status
            OHASP_SendCommand(44889,$Object.'.bg_grad_color=#008000');   // 2.Farbe
            OHASP_SendCommand(44889,$Object.'.bg_grad_color02=#008000'); // pressed 2.Farbe                                 
	    	}
return;
}

z.B.:

// Button in Abhängigkeit des Status setzen
Status_setzen(29260,'p1b3');                        // OG-Bad

Kann man optisch schöner machen, aber mir reicht es so.

Hallo @firebuster
vorerst Danke - Danke - Danke für das tolle Modul.
Was mich reizen würde:
Gibt es eine Möglichkeit die erste Zeile - also jene mit Datum und Uhrzeit zu beeinflussen?
Ich benötige z.b. die beiden Symbole nicht und auch anstelle von 27.01.2025 könnte 27.01.25 oder nur 27.01. stehen.
Dafür würde ich noch gerne ein paar Status „LED´s“ reinbekommen und auch den aktuellen „PV Ertrag“ bzw. Verbrauch.
Wäre dies möglich ?

Ohne es ausprobiert zu haben sollte folgende funktionieren:

  • den Parameter „DisplayMarginTop“ auf entsprechende Höhe einstellen.
  • ein neues Script erstellen und mit „DisplayInhaltSchreibenScript“ verknüpfen
  • im Script deinen eigenen Header zusammen bauen.

In dem Script kannst du dann mit „OHASP_AddObject“ deine Elemente selbst einfügen.

OHASP_AddObject(42113,'{"page":0,"id":1,"obj":"label","x":00,"y":350,"h":40,"w":480,"text":"Symcon Display '.date("H:i:s"). '","align":1,"bg_color":"#FC3E50","text_color":"#32C9AC"}');

Hier am Beispiel von einem Label aber geht natürlich genau so gut mit allem anderen.

Natürlich musst du dich dann auch ggf. um eine Aktualisierung selbst kümmern.
Entweder über „Manuelles Verknüpfen der Daten“ in der Instanz oder den Befehl SetItemValue(12345,1,5,intval(true));

Danke,
aber könnte mich jemand an der Hand nehmen?
Ich habe ein Script erstellt.
Wenn ichs manuell starte dann überlagert es wohl die erste Zeile, die ursprüngliche Headerzeile wird aber nicht ausgeblendet.
Wie ist das mit „DisplayInhaltSchreibenScript“ gemeint? Sollte so mein Script heißen ?
→ Ah - evtl. „Datum & Uhrzeit im Header“ abschalten ?

Ja genau du musst natürlich die Uhrzeit in der Instanz ausschalten.

Hallo Zusammen, ist es möglich auch Kamerastreams in dem Display anzuzeigen?

nein, nur Bilder (mit etwas Aufwand)

Das Problem habe ich auch gehabt. Ursache sind die Zeilen 757 und 758 der module.php. Die müssten bei benutzerdefinierten Profilen lauten:

$var = IPS_GetVariable($element['Object']);
$profile = IPS_GetVariableProfile($var["VariableCustomPresentation"]["PROFILE"]);```

Hallo und danke für das schöne Modul. Wäre eine Erweiterung möglich, um den Text auf den UI Elementen auszurichten? Also linksbündig, zentriert, rechtsbündig

Die initiale Ausrichtung ansich machst du ja am Objekt mit

align string Text alignment: left, center, right

Du könntest es mit einem Script und SendCommand versuchen.

SendCommand($deviceID, '["p0b8.align=right"]');

Kannst du bei “Parameter abschreiben” einfach mit angeben:

{"align":"left"}
1 „Gefällt mir“

Noch ein Frage: Ich würde gerne die Helligkeit der Hintergrundbeleuchtung reduzieren. In den Settings des Displays über die IP kann ich nur die Displayhelligkeit im aktivierten Zustand einstellen (Startup Dim: 0-255). Im Sleepmodus geht es immer fest auf 50, das ist mir im Schlafzimmer zu hell und ganz aus ist auch doof. Die Variable des Moduls (Hintergrundbeleuchtung) stellt sich immer wieder auf 50. Habt ihr eine Idee dazu? Ich hätte dort gerne z. B. 20.

pitti Modul organisiert das über die Einstellungen in drei Stufen.

Du kannst aber auch über MQTT z.B. folgendes senden

{"brightness":20}

OK, danke. Ich habe es einfach gelöst, indem ich ein Ereignis unter der Variable (Hintergrundbeleuchtung) erstellt habe, welches die Variable bei < 60 auf meinen Sollwert setzt.

1 „Gefällt mir“

schöner ist es “Hintergrundbeleuchtung automatisch dimmen” in der Instanz-Konfiguration auszuschalten und auf die Variable “Leerlauf” zu triggern.

  • Aus => Display auf volle Helligkeit
  • Kurz => Dimmen
  • Lang ==> Aus schalten
1 „Gefällt mir“

Hi,

ich versuche mich gerade an diesem Layout wie oben. Ich hätte aber gerne links drei Buttons untereinander jeweils 120 hoch und rechts zwei jeweils 180 hoch. Ich kann machen was ich will, ich bekomme es einfach nicht hin. Hat jemand einen Tip?

oh das Layout ist nicht ohne. Das Modul nimmt erst mal komplette Zeilen an.
Du müsstest bei der 2. Spalte nicht nur die Höhe sondern auch die Vertikale Position (y) überschrieben.