+ Antworten
Ergebnis 1 bis 7 von 7
  1. #1
    Registriert seit
    May 2017
    Beiträge
    85

    Standard Skript soll Skrip aufrufen und Wert übergeben

    Hallo,

    ich habe ein Skript, dass mir den Bypass der Lüftungsanlage steuert, je nach Außentemperatur.
    In einem 2. Skript kann ich über das Webinterface die Lüftungsstufe von 1-4 steuern. Das Skript sieht so aus und funktioniert einwandfrei:

    PHP-Code:
    <?
    //Homematic-Kanäle 
    //Kanal 1: 16286 
    //Kanal 2: 37400 
    //Kanal 3: 26325 

    switch($_IPS['SENDER'])
    {
        case 
    "WebFront":
            
    SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
        switch(
    $_IPS['VALUE'])
        {
           case 
    1:
            
    HM_WriteValueBoolean(16286,"STATE",false);
            
    HM_WriteValueBoolean(37400,"STATE",false);
            
    HM_WriteValueBoolean(26325,"STATE",false);
           break;
           case 
    2:
            
    HM_WriteValueBoolean(16286,"STATE",true);
            
    HM_WriteValueBoolean(37400,"STATE",false);
            
    HM_WriteValueBoolean(26325,"STATE",false);
           break;
           case 
    3:
            
    HM_WriteValueBoolean(16286,"STATE",true);
            
    HM_WriteValueBoolean(37400,"STATE",true);
            
    HM_WriteValueBoolean(26325,"STATE",false);
            break;
            case 
    4:
            
    HM_WriteValueBoolean(16286,"STATE",true);
            
    HM_WriteValueBoolean(37400,"STATE",true);
            
    HM_WriteValueBoolean(26325,"STATE",true);
            break;
        }
        break;
    }  
    ?>
    Meine Frage ist nun, wie kann ich dem Skript, dass den Bypass steuert, sagen, wenn Bypass auf --> Setze Lüftungsanlage auf 2 (case 2). Am liebsten wäre wir ein eleganter Weg, der das vorhandene Skript nutzt.

    Ich hoffe, ihr versteht mein Vorhaben und könnt mir helfen

  2. #2
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    8,771

    Mit RunScriptEx:
    IPS_RunScriptEx — IP-Symcon :: Automatisierungssoftware
    Du musst aber unter dein case 'WebFront':
    noch ein case 'RunScript': einfügen.
    Michael
    on Win7VM (ESXi): I5, 24GB RAM, HW-RAID5, 3xSat | HW: CCU + 123 Geräte (506ch), EM1000, CUL, 1Wire, XBee, ELRO 433MHz, FritzBox Cable, Android Phone + Tablet, Samsung C-Serie TV +SamyGo-Ext, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, Rising AV, Piwik, RoundCube, Wordpress, WinLIRC, WHS2011, MediaPortal, XBMC

  3. #3
    Registriert seit
    May 2017
    Beiträge
    85

    Ok, in der Theorie ist es jetzt klar.
    Aber in der Praxis klappt es nicht.

    Ist das so korrekt?

    Aufgerufenes Skript:

    PHP-Code:
    <?
    //Homematic-Kanäle 
    //Kanal 1: 16286 
    //Kanal 2: 37400 
    //Kanal 3: 26325 

    switch($_IPS['SENDER'])
    {
        case 
    "WebFront":
            
    SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
        case 
    "RunScript":
            
    SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
        switch(
    $_IPS['VALUE'])
        {
           case 
    1:
            
    HM_WriteValueBoolean(16286,"STATE",false);
            
    HM_WriteValueBoolean(37400,"STATE",false);
            
    HM_WriteValueBoolean(26325,"STATE",false);
           break;
           case 
    2:
            
    HM_WriteValueBoolean(16286,"STATE",true);
            
    HM_WriteValueBoolean(37400,"STATE",false);
            
    HM_WriteValueBoolean(26325,"STATE",false);
           break;
           case 
    3:
            
    HM_WriteValueBoolean(16286,"STATE",true);
            
    HM_WriteValueBoolean(37400,"STATE",true);
            
    HM_WriteValueBoolean(26325,"STATE",false);
            break;
            case 
    4:
            
    HM_WriteValueBoolean(16286,"STATE",true);
            
    HM_WriteValueBoolean(37400,"STATE",true);
            
    HM_WriteValueBoolean(26325,"STATE",true);
            break;
        }
        break;
    }  
    ?>
    Das Skript soll das obere aufrufen:

    PHP-Code:
    <?
    $Bypass_Temperatur 
    "23.0";                                        // gewünschte Raumtemperatur;
    $Mindest_Aussentemperatur "5.0";                                 // minimale Aussentemperatur; 
    $Hysterese "1.0";                                                 // Hysterse
    $Aussenluft GetValueFloat(38339);                                   // aktuelle Außentemperatur
    $Abluft GetValueFloat(34473);                     // aktuelle Ablufttemperatur
    $Zuluft GetValueFloat(53040);                                             // aktuelle Zulufttemperatur
    $Status_Bypass GetValueBoolean(36803);                                       // aktueller Bypassstatus
    $Sommerbetrieb GetValueBoolean(17793);                      // Prüfung ob Sommer- oder Winterhalbjahr
    $SEWT GetValueBoolean(25099);                                      // Läuft der Erdwärmetauscher (falls ja, kühlt er die Aussenluft herunter)

    if ($Status_Bypass == false){                                       // Bedingungen für Öffnung des Bypass, nur im Sommerhalbjahr aktiv
        
    if ($Sommerbetrieb == true and $Aussenluft $Mindest_Aussentemperatur and ($Abluft+$Hysterese) > $Bypass_Temperatur and $Aussenluft $Abluft)      {
                    
    HM_WriteValueBoolean(52155,"STATE",true);                   // Bypass öffnen
                    
    IPS_RunScriptEx(42440, array("case" => "2"));                          //Lüftung auf Stufe 2 stellen
                    
    }
                   elseif (
    $SEWT == true){
                    
    HM_WriteValueBoolean(52155,"STATE",true);           // Bypass öffnen 
                    
    IPS_RunScriptEx(42440, array("case" => "1"));                          //Lüftung auf Stufe 1 stellen
                    
    }
        }

    elseif (
    $Status_Bypass == true){                                                            // Bypass schließen
        
    if ($Sommerbetrieb == true) {                                                           // Prüfung auf Sommerhalbjahr
            
    if ($SEWT == true){
              
    IPS_Sleep(5);                                                                     // nichts tun
            
    }
            elseif (
    $Aussenluft $Mindest_Aussentemperatur){
                
    HM_WriteValueBoolean(52155,"STATE",false);                      // Bypass schließen, wenn es draußen zu kalt ist
                
    IPS_RunScriptEx(42440, array("case" => "1"));                          //Lüftung auf Stufe 1 stellen

            
    }
            elseif (
    $Aussenluft >= ($Bypass_Temperatur-$Hysterese)){                                    
                
    HM_WriteValueBoolean(52155,"STATE",false);                       // Bypass schließen, wenn es draußen wärmer ist als gewünscht
                
    IPS_RunScriptEx(42440, array("case" => "1"));                          //Lüftung auf Stufe 1 stellen
                
    }
            }
        }

    elseif (
    $Status_Bypass == true){
        if (
    $Sommerbetrieb == false){
            
    HM_WriteValueBoolean(52155,"STATE",false);                      // Bypass im Winter geschlossen halten
            
    IPS_RunScriptEx(42440, array("case" => "1"));                          //Lüftung auf Stufe 1 stellen
        
    }
    }
    Geändert von Peter1984 (20.06.19 um 09:23 Uhr)

  4. #4
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    8,771

    Case ist keine Variable, sondern 'VALUE'.
    Also:
    PHP-Code:
    IPS_RunScriptEx(42440, array("VALUE" => 2)); //Lüftung auf Stufe 2 stellen 
    Und in Script 1 das zweite SetValue raus Sonst gibt es Fehler, weil VARIABLE nicht vorhanden ist bei starten des Script über RunScript.
    So:
    PHP-Code:
    case "WebFront":

    SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
    case 
    "RunScript"
    Michael
    Geändert von Nall-chan (20.06.19 um 09:49 Uhr)
    on Win7VM (ESXi): I5, 24GB RAM, HW-RAID5, 3xSat | HW: CCU + 123 Geräte (506ch), EM1000, CUL, 1Wire, XBee, ELRO 433MHz, FritzBox Cable, Android Phone + Tablet, Samsung C-Serie TV +SamyGo-Ext, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, Rising AV, Piwik, RoundCube, Wordpress, WinLIRC, WHS2011, MediaPortal, XBMC

  5. #5
    Registriert seit
    May 2017
    Beiträge
    85

    Danke, funktioniert perfekt!

  6. #6
    Registriert seit
    Jun 2019
    Beiträge
    18

    Hi, ich würde gerne auch so ein Script verwenden.
    Wie viele in diesen Tagen. ABER:

    Um welche Anlage dreht es sich?
    Ich habe eine WOLF CWL 300 und bin froh, dass ich mehr als
    diesen Stufenschalter im HWR habe.
    Aber diese Infowerte und Schaltmöglichkeiten hätte ich gerne.

    Kann mir da jemand auf die Sprünge helfen?

    Vielen Dank!

  7. #7
    Registriert seit
    May 2017
    Beiträge
    85

    Hallo, ich habe eine Helios KWL 370 aus 2014. Das ist noch die Anlage ohne Webinterface. Mein Schwager hat mir eine Platine gebaut, die die Widerstände des internen Schalters nachahmt. Diese Platine steuere ich über einen 4 Kanal Homematic Aktor, die Temperaturen bekomme ich über 1Wire-Sensoren. Du solltest dazu aber ein neues Thema aufmachen oder suchen, ob es schon was passendes gibt.

Ähnliche Themen

  1. HomeMatic IP (Soll und IST Wert)
    Von steiner im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 1
    Letzter Beitrag: 26.10.18, 12:54
  2. Per Alexa Scripte aufrufen und Variablen übergeben
    Von Markus1979 im Forum Amazon Alexa
    Antworten: 4
    Letzter Beitrag: 02.09.17, 08:31
  3. Eltaco FAE14SSR Soll- und Ist-Wert vorgeben
    Von kallipeter im Forum EnOcean
    Antworten: 3
    Letzter Beitrag: 01.06.16, 12:32
  4. Skript von extern starten und Variablen übergeben
    Von ips123 im Forum Skripte, PHP, SQL
    Antworten: 4
    Letzter Beitrag: 14.03.16, 11:37
  5. Soll-Temperatur an FHZ übergeben
    Von computerpap im Forum Skripte, PHP, SQL
    Antworten: 7
    Letzter Beitrag: 06.12.06, 20:08