Ankündigung

Einklappen
Keine Ankündigung bisher.

Eigener LBS für TV Steckdose mit Fehlern

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Eigener LBS für TV Steckdose mit Fehlern

    Hallo zusammen,

    ich habe mich mal an meinem ersten LBS versucht. Er soll die TV Steckdose basierend auf Präsenz und Stomwert schalten.
    Wenn die TV Dose aus ist, und Präsenz im Raum ist, dann funktioniert das ganze. Nur leider wird die Dose nicht mehr deaktiviert.

    Kann mir vielleicht jemand einen Tip geben ?

    PHP-Code:
    ###[DEF]###
    [name =TV Dose Schalter ]
    [titel =TV Dose ]

    [e#1 TRIGGER= ]
    [e#2 TRIGGER= ]
    [e#3 TRIGGER= ]
    [e#4 =≠0 ]

    [a#1=] Ausgangswert für TV Dose

    [v#1 = ] Vergleichswert für Präsenz
    [v#2 = ] Vergleichswert für Stromwert
    ###[/DEF]###


    ###[HELP]###
    Dieser Baustein dient dem Schalten einer TV Dose basierend auf der Raum Präsenz, dem Stromwert und dem Status der Dose.

    Jedes neue Telegramm an E1 und E3 triggert den Baustein.
    Ändert sich und führt dazu, dass A1 entweder =0 oder =1 gesetzt wird.

    E1: Präsenz des Raumes
    E2: Status der TV Steckdose
    E3: Stromwert der TV Steckdose
    E4: Schwellwert für Standby
    A1: Schaltung der TV Steckdose (0 oder 1)
    ###[/HELP]###


    ###[LBS]###
    <?
    function LB_LBSID($id) {
    if ($E=logic_getInputs($id))
    {
    if ($E[1]['refresh']==1 || $E[3]['refresh']==1)
    {
    if($E[1]['value']==0 && ($E[3]['value']<$E[4]['value']))
    {
    logic_setOutput($id,1,0);
    }
    if($E[2]['value']==0 && $E[1]['value']==1)
    {
    logic_setOutput($id,1,1);
    }

    }
    }
    }
    ?>
    ###[/LBS]###


    ###[EXEC]###
    <?

    ?>
    ###[/EXEC]###
    Zuletzt geändert von DJFalk; 30.04.2020, 10:16.

    #2
    E4 auch mit einem Punkt als Dezimaltrenner eingetragen? Oder zumindest eine Ganzzahl?

    Kommentar


      #3
      Die Werte an den Eingängen werden m.W. als Strings interpretiert.
      Um auf der sicheren Seite zu sein, würde ich ein
      PHP-Code:
      intval($E[3]['value'])<intval($E[4]['value']) 
      verwenden.

      Kommentar


        #4
        Nun funktioniert es. Vielen Dank für die schnelle Hilfe

        Kommentar


          #5
          Hallo,

          bin gerade auch mit einem Baustein dran. Ich nutze diesen Thread einfach mal dafür. Als Grundlage diente der Baustein 19000273.

          Mein Problem ist, dass ich im Moment nur eine Ausgabe bekomme wenn E4=0 ist. Der Modus mit E4=1 oder E4=2 läuft nicht.
          Kann mir da einer einen Tipp geben?

          Code:
          function LB_LBSID($id)
          {
          if ($E = logic_getInputs($id)) {
          if ( $E[1]['value'] > 0 && $E[1]['refresh']==1 && intval($E[4]['value']==0 ) ) { // Auswahlwert
          $givenValue = intval($E[1]['value']) + intval($E[3]['value']);
          if ($givenValue > 0 && $givenValue <= 14) {
          logic_setOutput($id, $givenValue, $E[2]['value']);
          }
          if ( $E[1]['value'] > 0 && intval($E[2]['refresh'])==1 && intval($E[4]['value']==1 ) ) { // Auswahlwert
          $givenValue = intval($E[1]['value']) + intval($E[3]['value']);
          if ($givenValue > 0 && $givenValue <= 14) {
          logic_setOutput($id, $givenValue, $E[2]['value']);
          }
          }
          if ( $E[1]['value'] >0 && (intval($E[1]['refresh']==1) || intval($E[2]['refresh']==1 )) && intval($E[4]['value']==2) ) { // Auswahlwert
          $givenValue = intval($E[1]['value']) + intval($E[3]['value']);
          if ($givenValue > 0 && $givenValue <= 14) {
          logic_setOutput($id, $givenValue, $E[2]['value']);
          }
          }}
          }
          }

          Kommentar


            #6
            Zitat von Michael85 Beitrag anzeigen
            Kann mir da einer einen Tipp geben?
            Die Klammern '{' und '}' richtig setzen. Du machst derzeit nur etwas wenn

            PHP-Code:
            $E[1]['value'] > && $E[1]['refresh']==&& intval($E[4]['value']==
            Also passiert auch nur was wenn an E1 eine Zahl>0 kommt und E4=0 ist.

            PHP-Code:
            intval($E[4]['value']==
            Hier muss das intval sicher auch in die Klammer, oder? Ist aber in diesem Fall auch nicht notwendig, wenn du nur auf 0 und 1 prüfst, dann funktioniert das ohne intval().
            Zuletzt geändert von jonofe; 29.04.2020, 14:12.

            Kommentar


              #7
              Zitat von jonofe Beitrag anzeigen
              Die Klammern '{' und '}' richtig setzen. Du machst derzeit nur etwas wenn
              Danke jonofe es lag an den Klammern. Eine } war an der verkehrten Stelle.

              Kommentar

              Lädt...
              X