+ Antworten
Seite 2 von 2 ErsteErste 1 2
Ergebnis 11 bis 18 von 18
  1. #11
    Registriert seit
    Jun 2014
    Beiträge
    40

    Zitat Zitat von DerStandart Beitrag anzeigen
    Okay. Ich kann es gerade leider nicht testen. Sorry.


    Anscheinend ja. Das Semikolon fehlt.

    Ja, man sollte sich nicht immer auf die Zeilenangabe des Kompilers verlassen bzw. auch davor und danach suchen
    Danke fürs Augen öffnen

    Also vom Prinzip hab ich jetzt das was ich wollte. Allerdings nur mit Testwerten, muss noch die entsprechenden Variablen einfügen.
    Danke für die Hilfe!

    PHP-Code:
    <?
    if (IPS_SemaphoreEnter("RTCschreiben"3500))
    {
        
    // Raumadresse umschalten
        
    EIB_Counter16Bit(3591152); 
        
    // 3s warten
        
    IPS_Sleep(3000);
        
    // Temperatur schreiben
        
    EIB_Counter16Bit(49996220); 
        
    //Semaphore wieder freigeben
        
    IPS_SemaphoreLeave("RTCschreiben");
    }

    ?>

  2. #12
    Registriert seit
    Nov 2009
    Ort
    Essen
    Beiträge
    2,000

    Wozu sind die 3 Sekunden Pause?
    Deutschlandweite Dienstleistungen rund um und mit IP-Symcon - hauptsächlich im Bereich KNX. ekey Partner. DoorBird Partner. --> https://schrader-it.net

  3. #13
    Registriert seit
    Jun 2014
    Beiträge
    40

    Der Hersteller gibt die 3s Pause vor damit in der Wärmepumpe die Raumadresse sicher umgeschalten werden kann bevor die Temperatur geschrieben wird. Obs nötig ist oder nicht, ich glaubs nicht, aber ich halt mich mal an die Herstellerangabe.

  4. #14
    Registriert seit
    Nov 2009
    Ort
    Essen
    Beiträge
    2,000

    Okay. Das solltest Du nur nicht allzu oft in zu vielen Skripten machen, ansonsten kann es passieren, dass Dir die Threads voll laufen und IPS dann nicht mehr in Echtzeit reagiert. So, wie es jetzt ist, wird der Thread für die Dauer des Skriptes + 3 Sekunden blockiert.

    Besser wäre es dann, einen SkriptTimer zu erstellen, der das Skript dann nach 3 Sekunden wieder aufruft.
    Deutschlandweite Dienstleistungen rund um und mit IP-Symcon - hauptsächlich im Bereich KNX. ekey Partner. DoorBird Partner. --> https://schrader-it.net

  5. #15
    Registriert seit
    Apr 2010
    Ort
    Oberbayern
    Beiträge
    4,866

    Besser wäre es dann, einen SkriptTimer zu erstellen, der das Skript dann nach 3 Sekunden wieder aufruft.
    Womit mein Vorschlag wieder ins Rampenlicht rückt
    Grüsse, Kronos.
    Wenn am Anfang alles schief geht, nenne es Version 1.0
    IPS 5.3 auf Server 2016 / HM mit CCU2 (RaspberryMatic) + LAN-Adapter + LAN- & Wired Gateway, 241 Geräte / XBee Pro (Roomba) / RoboRock S50 / RGB-W 868 / MiLight / EKM 868 / AKM / ein Rudel Squeezeboxen+Pi / EM24DIN+VS102 / AM 220 AC / PlugWise / VU+ / ALL4x00 / LevelJet / IRTRans / Echos diverse / viel zu wenig Zeit


    Einfach mal rein schauen: IPS-Chat

  6. #16
    Registriert seit
    Jun 2014
    Beiträge
    40

    Ja, dessen bin ich mir bewusst. Allerdings ist ja nur maximal ein Sleep aktiv, die anderen Skripte werden ja durch das Semaphore geblockt. Es geht hier um vier Skripte die hier zusammenspielen. Diese werden nur getriggert wenn sich an einem Sensor die Temperatur ändert. Die Sensoren haben glaub ich eine Aktualisierungsrate von ca 1 min. Also ich denk das ist alles recht überschaubar.

    Ich bin hier einfach mal den einfachsten Weg gegangen der für mich am schnellsten zu durchschauen war. Hab leider nur wenig Zeit das nötigste umzusetzen, werde wohl eher nicht zum Poweruser

    Bin mir aber durchaus bewusst, dass man mit Sleep Befehlen vorsichtig umgehen muss. Trotzdem danke für die Hinweise!

  7. #17
    Registriert seit
    Jun 2014
    Beiträge
    40

    Ok, ihr habt mich überzeugt

    Ich denke es ist besser ein Skript zu haben das alles erledigt als mehrere einzelne.

    Ich hab mir das Beispiel mit dem Skripttimer und der Schrittkette nochmal angeschaut und etwas ausgemistet und umgestaltet.
    Leider kann ich es nicht mehr testen. Aber vielleicht könnt ihr mal einen Blick drauf werfen ob das so machbar ist?

    Ich würde das Skript dann über ein Ereignis mit IPS_RunScript alle 10 Minuten starten und dann sämtliche Raumdaten an die WP schicken. Wäre der richtige Weg oder?

    PHP-Code:
    <?php
    $step 
    =    GetValue(30180 /*Schrittmerker*/);
    $setpoint = (GetValue(59741 /*Raumsolltemperatur*/)*10); //*10 weil WP Ganzzahl erwartet

    if(($IPS_SENDER <> "TimerEvent")and($step == 0)){
        
    $step 1;
    }
    if(
    $IPS_SENDER == "TimerEvent"){
        switch(
    $step) {
          case 
    1:
            
    $step $step++;
            
    IPS_SetScriptTimer($IPS_SELF3);
            
    // Raumadresse auf 50 umschalten
            
    EIB_Counter16Bit(3591150);
           break;
       case 
    2// Raumwerte OG schreiben
            
    $step $step++;
            
    IPS_SetScriptTimer($IPS_SELF1);
            
    // Raum Solltemperatur schreiben
            
    EIB_Counter16Bit(28260$setpoint);
            
    // Raum Isttemperatur schreiben
            
    EIB_Counter16Bit(28260, (GetValue(38372)*10);
            break;
        case 
    3:
            
    $step $step++;
            
    IPS_SetScriptTimer($IPS_SELF3);
            
    // Raumadresse auf 51 umschalten
            
    EIB_Counter16Bit(3591151);
           break;
       case 
    4// Raumwerte Kind 1 schreiben
            
    $step $step++;
            
    IPS_SetScriptTimer($IPS_SELF1);
            
    // Raum Solltemperatur schreiben
            
    EIB_Counter16Bit(28260$setpoint);
            
    // Raum Isttemperatur schreiben
            
    EIB_Counter16Bit(28260, (GetValue(38372)*10);
            break;
       case 
    5:
            
    // Ablauf  fertig
            
    SetValue(30180 /*[6 Szenarien\Beschatten\Step]*/0);
            
    IPS_SetScriptTimer($IPS_SELF0);
        }
    //Schrittnumer an Variable übergeben
    SetValue(30180$step);

    ?>

  8. #18
    Registriert seit
    Jun 2014
    Beiträge
    40

    Hab mittlerweile die Funktion am Laufen, so siehts aus.
    Für weitere Raumadressen muss ich dann einfach noch die Schritte 1 und 2 vervielfältigen.

    Nochmals Danke für eure Hilfe!

    PHP-Code:
    <?php
    $step 
    =    GetValue(30180 /*Schrittmerker*/);
    $setpoint = (GetValue(59741 /*Raumsolltemperatur*/)*10); //*10 weil WP Ganzzahl erwartet

    if(($IPS_SENDER <> "TimerEvent")and($step == 0)){   // Skript wurde nicht durch Timer gestartet und Schrittkette ist auf 0
        
    $step 1;
        
    IPS_SetScriptTimer($IPS_SELF1); // Skript soll nach 1s wieder gestartet werden
    }

    if(
    $IPS_SENDER == "TimerEvent"){
        switch(
    $step) {
          case 
    1:
            
    // Schrittmerker um 1 erhöhen
            
    $step++;    
            
    // Skript soll nach 3s wieder gestartet werden
            
    IPS_SetScriptTimer($IPS_SELF3); 
            
    // Raumadresse auf 50 umschalten
            
    EIB_Counter16Bit(3591150);
           break;
       case 
    2// Raumwerte OG schreiben
            // Schrittmerker um 1 erhöhen
            
    $step++;    
            
    // Skript soll nach 1s wieder gestartet werden
            
    IPS_SetScriptTimer($IPS_SELF1);
            
    // Raum Solltemperatur schreiben
            
    EIB_Counter16Bit(28260$setpoint);
            
    // Raum Isttemperatur schreiben, Wert aus Variable holen und mit 100 multiplizieren
            
    EIB_Counter16Bit(49996, (GetValue(20344)*10));
            break;
       case 
    3:
            
    // Ablauf  fertig
            
    $step 0;
            
    IPS_SetScriptTimer($IPS_SELF0);
        }
    }
    //Schrittnumer an Variable übergeben
    SetValue(30180$step); 
    ?>

Ähnliche Themen

  1. Skripte wiederverwenden
    Von baba im Forum Skripte, PHP, SQL
    Antworten: 3
    Letzter Beitrag: 23.11.14, 23:39
  2. Gartentür automatisch verriegeln ?
    Von bziegenhagen im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 1
    Letzter Beitrag: 11.12.12, 11:06
  3. Z-Wave Skripte
    Von neodaysleeper im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 11
    Letzter Beitrag: 21.04.10, 12:19
  4. IPS Skripte verschwunden?!?
    Von Magmaster im Forum Allgemeine Diskussion (2.x/3.x)
    Antworten: 2
    Letzter Beitrag: 08.12.09, 16:38
  5. Skripte verknüpfen
    Von Jersey im Forum Allgemeine Diskussion
    Antworten: 1
    Letzter Beitrag: 02.07.06, 06:42