Ankündigung

Einklappen
Keine Ankündigung bisher.

EDOMI - LBS - Diskussion

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

    #61
    Hab ich da etwas falsch verstanden ?
    der LBS läuft nicht mehr nach Beenden/Neustart … ? Wenn ich einen String nach z.B. Neustart erhalte, dann zeig die Visu doch dir neuen Werte an ….

    Ich möchte aber dass nach einem z.B. Neustart - keine Ahnung - eine KO ein 1 sendet die dann in einem HTTP Request mir den String schickt, ohne dass ich manuell es anfordern oder iTunes bemühen muss.
    Danke und LG, Dariusz
    GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

    Kommentar


      #62
      Nimm doch die interne KO Systemstart.

      Kommentar


        #63
        Die System-KO ?
        Zu welchem Zeitpunkt löst die aus ?
        Wenn Edomi noch nicht hoch ist, dann kann der String unter umständen nicht vom LBS in Empfang genommen werden, oder ?
        Danke und LG, Dariusz
        GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

        Kommentar


          #64
          Aaaalso...:

          Beim einem (neu)Start von EDOMI passiert folgendes:
          Alle LBS werden zunächst initialisiert, d.h. wie in einer elektronischen Schaltung werden die Signalwege rekursiv verfolgt und die entsprechenden Ein/Ausgänge gesetzt. Die Eingänge werden dabei ggf. mit dem Initialwert/Fixwert belegt oder auch mit einem KO-Wert, sofern das KO bereits einen Wert hat (z.B. remanente KOs). Nachdem diese erste Initialisierung abgeschlossen ist (zu erkennen als "INIT" in den Logs) wird EDOMI richtig gestartet, d.h. jetzt werden die Logiken erst normal arbeiten.

          Wenn Du also einen LBS automatisch starten willst, genügt es einen Initialwert (#init=...) an einen beliebigen Eingang zu legen - denn dann hat der Eingang ja bereits einen Wert und wird den LBS triggern. Was dann genau passiert entscheidet natürlich der Code im LBS...

          Natürlich kann man genauso gut das SysKO "Systemstart" an einen Eingang legen - dann startet der LBS auch automatisch (allerdings erst NACH der INIT-Phase, aber das spielt in den meisten Anwendungsfällen keine Rolle).

          Wenn EDOMI beendet oder neugestartet wird, werden natürlich alle LBS beendet - auch die EXEC-Scripte. Oder anders ausgedrückt: Beenden/Neustart verhält sich aus Sicht der LBS/EXEC wie ein Shutdown/Reboot der Hardware.
          EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

          Kommentar


            #65
            Zitat von coliflower Beitrag anzeigen
            Die System-KO ?
            Zu welchem Zeitpunkt löst die aus ?
            Wenn Edomi noch nicht hoch ist, dann kann der String unter umständen nicht vom LBS in Empfang genommen werden, oder ?
            Das SysKO "Systemstart" wird auf 1 gesetzt, sobald EDOMI "bereit" ist, d.h. EDOMI muss natürlich gestartet sein und die INIT-Phase ist abgeschlossen. Also quasi die Stunde Null des Normalbetriebs...

            Wenn EDOMI "noch nicht hoch" ist, kann natürlich auch nix vom LBS empfangen werden - der LBS ist ja ein Bestandteil von EDOMI selbst
            EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

            Kommentar


              #66
              DANKESCHÖN für die Erklärung !

              Mir ging es ja darum, dass wenn der LBS bereit ist, das KO{2} am Eingang des LBS verbunden, am LBS-Ausgang die 1 and die Ausgangsbox sendet und dadurch eine HTTP-Telegramm auslöst ...

              Die 1 wird durchgereicht, der HTTP „Auftrag“ wird versendet ...
              Danke und LG, Dariusz
              GIRA | ENERTEX | MDT | MEANWELL | 24VDC LED | iBEMI | EDOMI | ETS5 | DS214+ | KNX/RS232-GW-ROTEL

              Kommentar


                #67
                Hi,

                kann man diese Fehlermeldung irgendwie abfangen: Code 8 / Zeile 1 / Undefined offset: 1

                kommt bei dieser Abfrage im EXEC Abschnitt : $sonos_1->GetPositionInfo();
                Das Array sieht so aus:
                array(8) { ["TrackNumberInQueue"]=> string(1) "1" ["TrackURI"]=> string(63) "x-rincon-mp3radio://arabella.stream.kapper.net:8000/arabellavie" ["TrackDuration"]=> string(7) "0:00:00" ["RelTime"]=> string(7) "0:00:14" ["Title"]=> string(11) "arabellavie" ["AlbumArtist"]=> NULL ["Album"]=> NULL ["TitleArtist"]=> NULL } Nehme an das kommt von den letzten mit NULL, da kommt beim Radio nichts. Die Ausgabe selbst funktioniert aber.

                Kommentar


                  #68
                  Irgendwie fehlen die Kommas in Deiner Array-Definition... Oder ist das ein var_dump?!

                  Poste am besten mal den Quelltext Deines LBS - sonst wird die Fehlersuche etwas schwierig...
                  EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                  Kommentar


                    #69
                    sollten diese Funktionen sein


                    PHP-Code:



                    function Upnp($url,$SOAP_service,$SOAP_action,$SOAP_arguments '',$XML_filter '')
                        {
                            
                    $POST_xml '<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">';
                            
                    $POST_xml .= '<s:Body>';
                            
                    $POST_xml .= '<u:'.$SOAP_action.' xmlns:u="'.$SOAP_service.'">';
                            
                    $POST_xml .= $SOAP_arguments;
                            
                    $POST_xml .= '</u:'.$SOAP_action.'>';
                            
                    $POST_xml .= '</s:Body>';
                            
                    $POST_xml .= '</s:Envelope>';

                            
                    $POST_url $this->IP.":".$this->PORT.$url;

                            
                    $ch curl_init();
                            
                    curl_setopt($chCURLOPT_SSL_VERIFYPEER0);
                            
                    curl_setopt($chCURLOPT_SSL_VERIFYHOST0);
                            
                    curl_setopt($chCURLOPT_URL$POST_url);
                            
                    curl_setopt($chCURLOPT_HEADER0);
                            
                    curl_setopt($chCURLOPT_RETURNTRANSFER1);
                            
                    curl_setopt($chCURLOPT_TIMEOUT30);
                            
                    curl_setopt($chCURLOPT_HTTPHEADER, array("Content-Type: text/xml""SOAPAction: ".$SOAP_service."#".$SOAP_action));
                            
                    curl_setopt($chCURLOPT_POST1);
                            
                    curl_setopt($chCURLOPT_POSTFIELDS$POST_xml);
                            
                    $r curl_exec($ch);
                            
                    curl_close($ch);

                            if (
                    $XML_filter != '')
                                return 
                    $this->Filter($r,$XML_filter);
                            else
                                return 
                    $r;
                        }
                        function 
                    Filter($subject,$pattern)
                        {
                            
                    preg_match('/\<'.$pattern.'\>(.+)\<\/'.$pattern.'\>/',$subject,$matches); ///'/\<'.$pattern.'\>(.+)\<\/'.$pattern.'\>/'
                            
                    return $matches[1];
                        }

                    function 
                    GetPositionInfo()
                        {
                            
                    $url '/MediaRenderer/AVTransport/Control';
                            
                    $action 'GetPositionInfo';
                            
                    $service 'urn:schemas-upnp-org:service:AVTransport:1';
                            
                    $args '<InstanceID>0</InstanceID>';
                            
                    $xml $this->Upnp($url,$service,$action,$args);

                            
                    $data["TrackNumberInQueue"] = $this->Filter($xml,"Track");
                            
                    $data["TrackURI"] = $this->Filter($xml,"TrackURI");
                            
                    $data["TrackDuration"] = $this->Filter($xml,"TrackDuration");
                            
                    $data["RelTime"] = $this->Filter($xml,"RelTime");
                            
                    $TrackMetaData $this->Filter($xml,"TrackMetaData");

                            
                    $xml substr($xmlstripos($TrackMetaData'&lt;'));
                            
                    $xml substr($xml0strrpos($xml'&gt;') + 4);
                            
                    $xml str_replace(array("&lt;""&gt;""&quot;""&amp;""%3a""%2f""%25"), array("<"">"""", "&", ":", "/", "%"), $xml);

                            
                    $data["Title"] = $this->Filter($xml,"dc:title");    // Track Title
                            
                    $data["AlbumArtist"] = $this->Filter($xml,"r:albumArtist");        // Album Artist
                            
                    $data["Album"] = $this->Filter($xml,"upnp:album");        // Album Title
                            
                    $data["TitleArtist"] = $this->Filter($xml,"dc:creator");    // Track Artist

                            return 
                    $data;
                        } 

                    Kommentar


                      #70
                      Also so wird das nix... Wo ist denn jetzt "Zeile 1" usw... Poste doch einfach mal den LBS-Code - und zwar im Ganzen
                      EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                      Kommentar


                        #71
                        Ich habe mal einen LBS "Toggeln mit Status-KO" erstellt - dieser wird beim nächsten Update als 13000020 dauerhaft hinzugefügt. Wer mag, kann gerne schonmal "testen" (ist ja relativ trivial...):

                        PHP-Code:
                        ###[DEF]###
                        [name        =Toggeln mit Status-KO    ]

                        [e#1        =Trigger    ]
                        [e#2        =Wert A #init=0    ]
                        [e#3        =Wert B #init=1    ]
                        [e#4        =Status-KO    ]

                        [a#1        =Wert A/B    ]
                        ###[/DEF]###


                        ###[HELP]###
                        Dieser Baustein setzt A1 auf den Wert an E2 oder E3 in Abhängigkeit vom Wert z.B. eines Status-KOs an E4:

                        Ist der Wert des Status-KOs an E4 = E2, wird A1 auf den Wert an E3 gesetzt.
                        Ist der Wert des Status-KOs an E4 &ne; E2, wird A1 auf den Wert an E2 gesetzt.

                        Dieses "Toggeln" wird bei jeden neuen Telegram &ne;0 an E1 durchgeführt.

                        Wichtig: Als Vergleichswert dient ausschließlich E2. Ist z.B. E2=0 und E3=1 und E4=999 (also weder =E2 noch =E3), wird A1 auf E2 gesetzt. 

                        Eine Änderung der Werte an E2, E3 oder E4 triggert den Baustein nicht(!). Der Baustein wird ausschließlich über ein neues Telegramm &ne;0 an E1 getriggert.

                        E1: Trigger &ne;0
                        E2: Wert A
                        E3: Wert B
                        E4: Vergleichswert, z.B. ein Status-KO

                        A1: wird bei jedem Trigger (E1) entweder auf den Wert von E2 oder auf den Wert von E3 gesetzt
                        ###[/HELP]###


                        ###[LBS]###
                        <?
                        function LB_LBSID($id) {
                            if ($E=getLogicEingangDataAll($id)) {
                            
                                if ($E[1]['value']!=0 && $E[1]['refresh']==1) {
                                
                                    if ($E[4]['value']==$E[2]['value']) {
                                        setLogicLinkAusgang($id,1,$E[3]['value']);
                                    } else {
                                        setLogicLinkAusgang($id,1,$E[2]['value']);
                                    }
                                    
                                }
                                
                            }
                        }
                        ?>
                        ###[/LBS]###


                        ###[EXEC]###
                        <?
                        ?>
                        ###[/EXEC]###
                        EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                        Kommentar


                          #72
                          gaert
                          ​LBS "Toggeln mit Status-KO" im Einsatz - funktioniert wie er soll.

                          Kommentar


                            #73
                            Verwunderlich... Der Hilfetext ist ja auch länger als die Logik selbst
                            EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                            Kommentar


                              #74
                              gaert

                              Ich benötigte heute eine Restwert-Divisions Logik. Da es sich um eine kleine mathematische Funktion handelt, könntest du diese vielleicht mit ausliefern.

                              Code:
                              ###[DEF]###
                              [name        =Restwertdivision A/B        ]
                              
                              [e#1        =A                 ]
                              [e#2        =B                 ]
                              
                              [a#1        =0/1                    ]
                              ###[/DEF]###
                              
                              
                              ###[HELP]###
                              Durch die Restwert-Division lässt sich schnell herausfinden, ob eine Zahl (Wert an E1) durch eine andere Zahl (Wert an E2) teilbar ist.
                              Jedes neue Telegramm an E1 oder E2 triggert den Baustein.
                              
                              E1: Wert A
                              E2: Wert B
                              A1: Wenn E1 (A) / E2 (B) teilbar ist, wird A1=1 gesetzt. Andernfalls wird A1=0 gesetzt.
                              ###[/HELP]###
                              
                              
                              ###[LBS]###
                              <?
                              function LB_LBSID($id) {
                                  if ($E=getLogicEingangDataAll($id)) {
                                      if ($E[1]['refresh']==1 || $E[2]['refresh']==1) {
                                          if ($E[1]['value'] % $E[2]['value']==0) {
                                              setLogicLinkAusgang($id,1,1);
                                          } else {
                                              setLogicLinkAusgang($id,1,0);
                                          }
                                      }
                                  }
                              }
                              ?>
                              ###[/LBS]###
                              
                              
                              ###[EXEC]###
                              <?
                              
                              ?>
                              ###[/EXEC]###

                              Kommentar


                                #75
                                Ein "Mod"-LBS also Danke, aber ich werde mich erst später darum kümmern können - bzw. mal einen eigenen Thread für "Bitte diesen LBS aufnehmen" machen, sonst komme ich durcheinander Also bitte im Hinterkopf behalten und noch etwas Geduld aufbringen...
                                EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                                Kommentar

                                Lädt...
                                X