Variablenprofil aus IPS übernehmen

Ich habe bei meiner Rollo-Steuerung im Webfront einen Skript bei Änderung der Rollos laufen. Der zeigt „offen“, „geschlossen“, „beschattet“ oder den Wert in Prozent an.
In IPS VIEW wird aber das Suffix aus IPS nicht übernommen, sondern nur der Prozentwert angezeigt. Kann man das nicht lösen?

Skript in IPS:

$beschattungswert_arbeitszimmer = GetValueFloat(34017);

$anzeige_arbeitszimmer_rollo_level = $arbeitszimmer_rollo_level * 100;
//


If ($arbeitszimmer_rollo_level == 1)
{
IPS_SetVariableProfileAssociation($ProfileNameArbeitszimmer, 0, "offen", '', -1);
IPS_SetVariableProfileAssociation($ProfileNameArbeitszimmer, 0, "offen", '', 0x00FF00);
IPS_SetVariableProfileText("_uebersicht_rollo_arbeitszimmer", "", "");
return;
}

If ($arbeitszimmer_rollo_level == $beschattungswert_arbeitszimmer)
{
//IPS_SetVariableProfileAssociation($ProfileNameWohnzimmer, 0, "offen", '', -1);
IPS_SetVariableProfileAssociation($ProfileNameArbeitszimmer, 0, "beschattet", '', 0xFF6600);
IPS_SetVariableProfileText("_uebersicht_rollo_arbeitszimmer", "", "");
echo $beschattungswert_arbeitszimmer;
return;
}

If (($arbeitszimmer_rollo_level < 1) and ($arbeitszimmer_rollo_level >= 0.01))
{
//IPS_SetVariableProfileAssociation($ProfileNameWohnzimmer, 0, "offend", '', -1);
IPS_SetVariableProfileAssociation($ProfileNameArbeitszimmer, 0, $anzeige_arbeitszimmer_rollo_level, 'Jalousie', 0xFF6600);
IPS_SetVariableProfileText("_uebersicht_rollo_arbeitszimmer", "", "% geöffnet");
return;
}
If ($arbeitszimmer_rollo_level == 0)
{
//IPS_SetVariableProfileAssociation($ProfileNameWohnzimmer, 0, "offen", '', -1);
IPS_SetVariableProfileAssociation($ProfileNameArbeitszimmer, 0, "geschlossen", '', 0xFF0000);
IPS_SetVariableProfileText("_uebersicht_rollo_arbeitszimmer", "", "");
//return;
}

?>

Es gibt die Option „Sync Associations“, die sollte das Problem für Dich lösen;)

Hallo Andreas,

leider nicht.

In IPS View hab ich einen VarLabel, der wie folgt aussieht:

In IPS steht nach dem Skript z.b. „12 % geöffnet“
in IPS View steht „12“
Die Stati offen, geschlossen und beschattet werden korrekt angezeigt.

Gruß oekomat

Wo sollte das Prozent Zeichen herkommen - in der Assoziation steht doch nur die Zahl ohne Prozent drinnen?

Hallo Andreas,

If (($arbeitszimmer_rollo_level < 1) and ($arbeitszimmer_rollo_level >= 0.01))

{

//IPS_SetVariableProfileAssociation($ProfileNameWohnzimmer, 0, "offend", '', -1);

IPS_SetVariableProfileAssociation($ProfileNameArbeitszimmer, 0, $anzeige_arbeitszimmer_rollo_level, 'Jalousie', 0xFF6600);

IPS_SetVariableProfileText("_uebersicht_rollo_arbeitszimmer", "", "% geöffnet");

return;

Mit dem Skriptauszug schreib ich in die variable dass % geöffnet als suffix. Klappt in ips und webfront wunderbar. In View eben nicht.

Gruß oekomat

Hat hier niemand eine Lösung?

Sorry, den Beitrag hatte ich übersehen.

Der Sync von Assoziationen unterstützt keine Prefix/Suffix von Profilen. Du könntest aber die komplette Information direkt in die Assoziation schreiben, dann sollte das auch in IPSView klappen.

Ich habe es so ins Profil geschrieben:

Die Variable ist immer „0“ und wird neu beschrieben, mit dem o.g. Skript und zusätzlich mit Suffix, wenn das Rollo mal nicht offen, geschlossen oder beschattet ist.
Anders bekomme ich es nicht hin.

schon mal so versucht?


<?php 

$beschattungswert_arbeitszimmer = GetValueFloat(34017);
$anzeige_arbeitszimmer_rollo_level = $arbeitszimmer_rollo_level * 100;

If ($arbeitszimmer_rollo_level == 1) {
   IPS_SetVariableProfileAssociation($ProfileNameArbeitszimmer, 0, "offen", '', 0x00FF00);
} else If ($arbeitszimmer_rollo_level == $beschattungswert_arbeitszimmer) {
   IPS_SetVariableProfileAssociation($ProfileNameArbeitszimmer, 0, "beschattet", '', 0xFF6600);
} else If (($arbeitszimmer_rollo_level < 1) and ($arbeitszimmer_rollo_level >= 0.01)) {
   IPS_SetVariableProfileAssociation($ProfileNameArbeitszimmer, 0, $anzeige_arbeitszimmer_rollo_level."% geöffnet", 'Jalousie', 0xFF6600);
   //eventuell auch so: $anzeige_arbeitszimmer_rollo_level."%% geöffnet"
} else If ($arbeitszimmer_rollo_level == 0) {
   IPS_SetVariableProfileAssociation($ProfileNameArbeitszimmer, 0, "geschlossen", '', 0xFF0000);
}

?> 

Hallo Andreas,

ja und nein. In IPS View wird es jetzt richtig angezeigt. In der Variable in IPS steht jetzt:

Dadurch steht das auch im Webfront so - hab ich bisher vor IPS genutzt und vergleiche nur :slight_smile:

rollo2.PNG

Ich könnte des umgehen, indem ich eine eigene Variable für IPS anlege, wenns keine andere Lösung gibt. Ist zwar ein Umweg, aber einer mit dem ich noch leben kann.

Du musst das Suffix deines Profiles löschen und %% verwenden:


<?php 

$beschattungswert_arbeitszimmer = GetValueFloat(34017);
$anzeige_arbeitszimmer_rollo_level = $arbeitszimmer_rollo_level * 100;

If ($arbeitszimmer_rollo_level == 1) {
   IPS_SetVariableProfileAssociation($ProfileNameArbeitszimmer, 0, "offen", '', 0x00FF00);
} else If ($arbeitszimmer_rollo_level == $beschattungswert_arbeitszimmer) {
   IPS_SetVariableProfileAssociation($ProfileNameArbeitszimmer, 0, "beschattet", '', 0xFF6600);
} else If (($arbeitszimmer_rollo_level < 1) and ($arbeitszimmer_rollo_level >= 0.01)) {
   IPS_SetVariableProfileAssociation($ProfileNameArbeitszimmer, 0, $anzeige_arbeitszimmer_rollo_level."%% geöffnet", 'Jalousie', 0xFF6600);
} else If ($arbeitszimmer_rollo_level == 0) {
   IPS_SetVariableProfileAssociation($ProfileNameArbeitszimmer, 0, "geschlossen", '', 0xFF0000);
}
IPS_SetVariableProfileText("_uebersicht_rollo_arbeitszimmer", "", "");

?>

Ich habe ein Skript hier aus dem Forum angepasst, womit man Stromstoßrelais schaltet. (@Helmut hat das Skript geschrieben)
Allerdings schaltet der Button nicht um und es kommt eine Fehler Meldung.

<?
$AssociationName="EG_Foyer1_Licht"; // Hier den eigene Integerassiationnamen
$AssociationInhalt_1="EIN";              // Hier den eigene 1. IntegerassiationsText
$AssociationInhalt_2="AUS";              // Hier den eigene 2. IntegerassiationsText
$EiBSchaltID=26772;               // Hier den eigene IntegerID mit der in dem Webfront getastet werden soll
                                        // enthält auch den angezeigten Namen der einfach halber = dem AssociationNamen

if($_IPS['SENDER'] == "WebFront")

{
switch($_IPS['VALUE'])

   {
       case 1:

       IPS_SetVariableProfileAssociation($AssociationName, 0, $AssociationInhalt_1, "", 0x00FF00);
      IPS_SetVariableProfileAssociation($AssociationName, 1, "", "", -1);
       EIB_Switch($EiBSchaltID,true);//Schaltet das Relay EIN
       IPS_Sleep (200);
       EIB_Switch($EiBSchaltID,false);//Schaltet das Relay AUS
       break;

       case 0:
       IPS_SetVariableProfileAssociation($AssociationName, 1, $AssociationInhalt_2, "", 0xE0EEE0);
      IPS_SetVariableProfileAssociation($AssociationName, 0, "", "", -1);
       EIB_Switch($EiBSchaltID,true);//Schaltet das Relay EIN
       IPS_Sleep (200);
       EIB_Switch($EiBSchaltID,false);//Schaltet das Relay AUS
       break;

   }

}

?>

gibt es eine einfachere Variante einen Stromstoßrelais zu schalten? Ich brauche es nur in IPS View.

Äm, einfach nur Ein und Aus in der Case Anweisung richtig schreiben, hier das von mir zur Demo geschriebene Script.

Gruß Helmut

 Deine Integer ID mußt Du noch anpassen 

<?
$AssociationName="EG_Foyer1_Licht"; // Hier den eigene Integerassiationnamen
$AssociationInhalt_1="O N";              // Hier den eigene 1. IntegerassiationsText
$AssociationInhalt_2="OFF";              // Hier den eigene 2. IntegerassiationsText
$EiBSchaltID=48822 /*[!111\FoYe]*/;  // Hier den eigene IntegerID mit der in dem Webfront getastet werden soll
                                          // enthält auch den angezeigten Namen der einfach halber = dem AssociationNamen

if($_IPS['SENDER'] == "WebFront")

{
  switch($_IPS['VALUE'])

     {
         case 1:
       SetValueInteger(36232 /*[!111\Test1\Taster integer 2]*/, 0);
    IPS_SetVariableProfileAssociation($AssociationName, 1, " ", "", 0);
    IPS_SetVariableProfileAssociation($AssociationName, 0, $AssociationInhalt_1, "", 0x00FF00);
  // Das waren 2 Zeilen von Deinem Script :
        // IPS_SetVariableProfileAssociation($AssociationName, 0, $AssociationInhalt_1, "", 0x00FF00);
        // IPS_SetVariableProfileAssociation($AssociationName, 1, "", "", -1);
         EIB_Switch($EiBSchaltID,true);//Schaltet das Relay EIN
         IPS_Sleep (200);
         EIB_Switch($EiBSchaltID,false);//Schaltet das Relay AUS
         break;

         case 0:
SetValueInteger(36232 /*[!111\Test1\Taster integer 2]*/, 1);
    IPS_SetVariableProfileAssociation($AssociationName, 0, " ", "", 0);
    IPS_SetVariableProfileAssociation($AssociationName, 1, $AssociationInhalt_2, "", 0xE0EEE0);
   // Das waren 2 Zeilen von Deinem Script :  
        // IPS_SetVariableProfileAssociation($AssociationName, 1, $AssociationInhalt_2, "", 0xE0EEE0);
        // IPS_SetVariableProfileAssociation($AssociationName, 0, "", "", -1);
         EIB_Switch($EiBSchaltID,true);//Schaltet das Relay EIN
         IPS_Sleep (200);
        EIB_Switch($EiBSchaltID,false);//Schaltet das Relay AUS
         break;

     }

}

?>