[Modul] openHASP

Ok, hier ein kleines Script welches eine Integer-Variabel überwacht und eine String erstellt.
String-Variable und Ereignis wird automatisch unterhalb des Scripts erstellt.
Vielleicht kanns jemand brauchen

<?php

$intVariableId = 47143; // Ersetze diese ID durch die tatsächliche ID deiner Integer-Variable
$stringVariableName = "Modus"; // Name der String-Variable
$stringVariableIdent = "ModusStatus"; // Ident der String-Variable
$parentID = $_IPS['SELF']; // Das Skript selbst als Elternobjekt

// String-Variable prüfen und erstellen, falls nicht vorhanden
$stringVariableId = @IPS_GetObjectIDByIdent($stringVariableIdent, $parentID);
if ($stringVariableId === false) {
    // String-Variable erstellen
    $stringVariableId = IPS_CreateVariable(3); // 3 bedeutet String
    IPS_SetName($stringVariableId, $stringVariableName);
    IPS_SetIdent($stringVariableId, $stringVariableIdent);
    IPS_SetParent($stringVariableId, $parentID); // Unterhalb des Skripts erstellen
}

// Wert der Integer-Variable abrufen
$intValue = GetValue($intVariableId);

// Überprüfen und den entsprechenden String-Wert setzen
switch ($intValue) {
    case 0:
        $stringValue = "heizen";
        break;
    case 1:
        $stringValue = "Warmwasser";
        break;
    case 2:
        $stringValue = "PVA";
        break;
    case 3:
        $stringValue = "EVU-Sperre";
        break;
    case 4:
        $stringValue = "Abtauen";
        break;
    case 5:
        $stringValue = "Leerlauf";
        break;
    case 6:
        $stringValue = "el. heizen";
        break;
    case 7:
        $stringValue = "kühlen";
        break;
    default:
        $stringValue = "Unbekannt";
        break;
}

SetValue($stringVariableId, $stringValue);

// Ereignis erstellen, falls nicht vorhanden
$eventID = @IPS_GetEventIDByName("Ereignis für Variable $intVariableId", $_IPS['SELF']);
if ($eventID === false) {
    $eventID = IPS_CreateEvent(0); // 0 bedeutet Ausgelöstes Ereignis
    IPS_SetEventTrigger($eventID, 1, $intVariableId); // 1 bedeutet bei Änderung
    IPS_SetParent($eventID, $_IPS['SELF']);
    IPS_SetName($eventID, "Ereignis für Variable $intVariableId");
    IPS_SetEventScript($eventID, "IPS_RunScript(" . $_IPS['SELF'] . ");");
    IPS_SetEventActive($eventID, true);
} else {
    // Sicherstellen, dass das Ereignis das Skript korrekt zuweist
    IPS_SetEventScript($eventID, "IPS_RunScript(" . $_IPS['SELF'] . ");");
}

?>

ist in der aktuellen BETA möglich.

der Platzhalter $$ wird durch den Wert ValueFormatted ersetzt.

Bekomme eine Fehlermeldung:

richimaint

Ich auch, und das schlimmste ist, dass nun das die Instanz nicht mehr aufzurufen ist.
Und ich habe so viel schon konfiguriert.
Lässt sich da noch was retten?
Ich habe die $$ als Platzhalter für die Integer-Variable eingefügt, jetzt kommt beim starten der Instanz nur noch besagte Fehlermeldung

Oh was ist die Fehlermeldung? bist du auf der Neusten Version?
Habe bei der 0.7 anfangs noch nen Fehler in der BETA gehabt. Sollte mit der neusten Version aber bereits behoben sein.
Sonst bitte den Fehler aus dem Log beim erstellen der Instanz bzw. Laden des Moduls mit schicken.

HI @firebuster , siehe meinen Post. Beim öffnen der Instanz kommt es zu Fehlermeldung.

richimaint

Jetzt kam erst das neue Update, mit dem lässt sich die Instanz wieder öffnen.

richimaint

1 „Gefällt mir“

im Log bzw. den Meldungen von Symcon steht was dabei kaputt gegangen ist bzw. woran es hängt.
ggf. noch mal aktualisieren.

Habe die Grundlegende Funktion für das Manuelle Mapping nun in das Modul V0.8 gepackt.
Aktuell funktionieren „nur“ folgende Verknüpfungen:

  • Text ← Variable
  • Button → Script
  • Toggle-Button ↔ Bool-Variable
  • Slider ↔ IntVariable

Umrechnung mit dem Faktor ist aktuell auch ohne Funktion

Jetzt mit der aktuellsten Beta läuft es mit dem Platzhalter $$ und dem Text zum Variablenwert…
Wow, du bist echt von der fixen Truppe :+1:

1 „Gefällt mir“

Sonderzeichen gehen aber leider ‚noch‘ nicht (in meinem Fall zb ‚ü‘ bei Kühlbetrieb…)

1 „Gefällt mir“

sollte jetzt mit der 0.8.1 auch passen

1 „Gefällt mir“

Moin in die Runde,

ich könnte noch mal ne Anregung gebrauchen? Was mache ich hier falsch das sich die verknüpfte Variable nicht aktualisiert.

Die Events kommen alle an, doch die Variable ändert sich nicht.

display

Seiten ID und Button ID stimmen doch auch.

Danke,
Grüße

Welches Objekt hast du denn in der jsonl Datei verlinkt?

Kann sein dass das Modul an der Stelle auch noch nicht 100% funktioniert. Ich denke mal am
Wochenende komme ich dazu mal etwas weiter zu arbeiten.

Moin,

was meinst Du den mit „verlinkt“ …

Na die Seite: 1 und Objekt: 100.

Habe das natürlich auch mit einem neuen Button P1 B8 ausprobiert und auf eine neue Variable gelegt. Hat leider auch nicht geklappt …

Ok - dann werde ich mal abwarten, falls du hier mal drauf schauen möchtest, melde dich gerne …

Danke,
Grüße
Thomas

Achso
Entweder über die UI-Elemente oder über das manuelle Mapping :wink:

Und bei den UI-Elementen darf man keine Page und ID angeben :warning:

@firebuster könntest du dir vorstellen, für UI-Elemente die Möglichkeit zu integrieren, durch longpress eines Elementes in ein Untermenu zu gelangen?
Ein Szenarium wäre, über den Toggle Button, welcher das Licht ein und ausschaltet, in das Untermenu zu gelangen, wo zum Beispiel gedimmt oder irgendwelche Farbanpassungen vorgenommen werden können.

Du kannst dafür eine Seite anlegen die deine gewünschten Optionen zeigt und dann bei dem Butten eine Action dafür geben.
{"action": {"hold": "page 10"}}

Das funktioniert leider nicht, es findet keine Weiterleitung statt.
Ich habs mal getestet mit Page 2.
Da ich drei Seiten habe müsste ja Page 2 existieren oder?
Ich habe aber nur UI-Elemente, da ist die Page nicht ersichtlich, aber ich denke das startet wohl mit 0 oder 1.