Ankündigung

Einklappen
Keine Ankündigung bisher.

Logikbausteine | EDOMI

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #61
    gaert
    Du meinst bestimmt diesen Post, ich habe mir die Umsetzung des Requestauslösers angesehen, um diese Funktionalität direkt in meinen LBS zu integrieren. Allerdings verstehe ich die Funktion nicht ganz, der Requestauslöser ist wie folgt realisiert:
    PHP-Code:
    function LB_LBSID($id) {
            if (
    $E=getLogicEingangDataAll($id)) {
                    if (
    $E[1]['value']!=&& $E[1]['refresh']==1) {
                            
    setLogicLinkAusgang($id,1,1);
                    }
            }

    Wenn der Eingang "refreshed" wurde und ein Wert am Eingang liegt, dann wird der Ausgang des LBS auf 1 gesetzt. Dadurch müsste doch der Requestauslöser auch eine 1 ausgeben, wenn über die KO am Eingang von einer anderen Logik ein Wert kommt? Denn wenn ich das Prinzip so in meinen LBS übernehme, wo der Request-Eingang und die zugehörige Ausgangsbox die gleiche KO haben, dann erzeuge ich eine Schleife. Wo könnte mein Denkfehler sein?
    You do not have permission to view this gallery.
    This gallery has 1 photos.

    Kommentar


      #62
      Nein... Der Requestauslöser ist ein "Systembaustein". Den kannst Du nicht nachbauen oder irgendwie in einen eigenen Baustein implementieren.

      Der LBS setzt den Ausgang zwar auf 1, aber das spielt keine Rolle - intern wird das alles speziell behandelt...

      Und ich glaube Du hast den LBS nicht verstanden: Der Requestauslöser löst keinen Request aus... Vielmehr wird bei(!) einem eintreffenden(!) Request Richtung EDOMI der Baustein(!) getriggert! Der Baustein wird also von einem EINTREFFENDEN Request AN EDOMI getriggert.

      Du hast die KNX-Grundlagen noch nicht wirklich verinnerlicht, oder? Mal im Schnelldurchgang: Dein Fensterstatus sollte per Initscan beim Start eingelesen werden (Status-GA). Danach braucht der Status NIE WIEDER gelesen zu werden, denn KNX sorgt (bei korrekter Konfiguration) ja gerade dafür, dass diese GA stets aktuell gehalten wird... Einen Read-Request durch EDOMI auszulösen geht zwar, macht aber bis auf wenige Ausnahmen niemals Sinn!
      Zuletzt geändert von gaert; 27.01.2016, 17:18.
      EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

      Kommentar


        #63
        Danke für die schnelle Antwort Habe mir schon fast gedacht, dass die Systembausteine nicht so einfach aufgebaut sind, sonst wären die ja auch bearbeitbar

        EDOMI soll auf einen Read-Request antworten. Mein LBS setzt sozusagen die Kontaktinfos in einen "lesbaren" Status (0=geschlossen, 1=gekippt, 2=drehgeöffnet) um, damit ich diesen in einer anderen Visu über ein entsprechendes Icon darstellen kann. Da die Werte aber erst eingelesen werden wenn ich die Visu aufrufe, brauche ich die Antwort.

        Kommentar


          #64
          Ah - ich verstehe. Na genau dafür ist der Requestbaustein ja gedacht:

          An seinen Eingang ist die "Request-GA" zu legen - diese muss "Requestable" sein (Konfiguration in EDOMI). Sobald nun ein Request vom Bus eintrifft, wird der Ausgang auf 1 gesetzt und kann dann weitere Bausteine triggern. Am Ende setzt dann eine Ausgangsbox genau diese GA (s.o.) auf den gewünschten Wert - fertig. Eine Schleife ergibt dies NICHT, da der Requestauslöser nur bei REQUESTS triggert - die Ausgangsbox setzt aber die GA aus Sicht von EDOMI (WRITE).
          EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

          Kommentar


            #65
            Danke für die Info mit "Requestable", hatte ich übersehen, jetzt antwortet EDOMI brave auf jede Anfrage

            Du hast wirklich eine super Arbeit gemacht, dass kann man nicht oft genug betonen!

            Kommentar


              #66
              Mein Fehler - die Doku wartet noch immer auf ihre Fertigstellung...
              EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

              Kommentar


                #67
                Prowl- Baustein

                Falls wer Interesse hat zu testen. Aber wie immer auf eigene Gefahr

                E1: = !=0 = Trigger
                E2: = API Key
                E3: Application
                E4: Event
                E5: Description
                E:6 Priority

                A1: = Status

                prowl.png


                pdf Endung in zip umbenennen und entpacken. Eventuell noch die Nummer anpassen falls schon ein eigener mit der Nr. 19000006_lbs.php vorhanden ist.
                Eventell kann Vento den auch in den Downloadbereich stellen.

                19000006_lbs.pdf

                Kommentar


                  #68
                  Das kann er! Aber wir müssen da noch einige Vorbereitungen treffen.. Dauert ggf. noch ein Weilchen. Wenn das abgeschlossen ist, geb ich noch mal Laut, das ihr die Bausteine hochladen könnt.

                  Kommentar


                    #69
                    Mondphasen Baustein

                    Für die Mondsüchtigen

                    E1: = !=0 = Trigger

                    A1: = Mondphase als text
                    A2: = Mondphase als Zahl 0-7
                    0 = Neumond
                    1 = Zunehmende Sichel
                    2 = Zunehmender Halbond
                    3 = Zunehmender Mond
                    4 = Vollmond
                    5 = Abnehmender Mond
                    6 = Abnehmender Halbmond
                    7 = Abnehmende Sichel

                    Mond.png

                    pdf Endung in zip umbenennen und entpacken. Eventuell noch die Nummer anpassen falls schon ein eigener mit der Nr. 19000007_lbs.php vorhanden ist.

                    Muss schauen hab irgendwo auch passende icons herum liegen.

                    19000007_lbs.pdf

                    Kommentar


                      #70
                      timberland
                      DANKE !! Hast Du statt dem Prowl es schon mal mit einer Textdatei versucht ?

                      Mein neuester LBS ist ein Byte in 8 Bits zerlegen, sorry für so trockene Dinge. Muss erstmal meine Wago anbinden, die hübschen Sachen kommen später:

                      Code:
                      ###[DEF]###
                      [name        =1 Byte → 8-Bit    ]
                      
                      [e#1        =Byte                     ]
                      [a#1        =Bit 0                     ]
                      [a#2        =Bit 1                     ]
                      [a#3        =Bit 2                     ]
                      [a#4        =Bit 3                     ]
                      [a#5        =Bit 4                     ]
                      [a#6        =Bit 5                     ]
                      [a#7        =Bit 6                     ]
                      [a#8        =Bit 7                     ]
                      
                      ###[/DEF]###
                      
                      
                      ###[HELP]###
                      E1: Eingang 1 Byte (0..255)
                      A1..A8: Bit0..Bit7 (Bit = Wert 0 oder 1)
                      ###[/HELP]###
                      
                      
                      ###[LBS]###
                      <?
                      function LB_LBSID($id) {
                          if ($E=getLogicEingangDataAll($id))  {
                              if ($E[1]['refresh']==1)  {
                                  setLogicLinkAusgang($id,1,($E[1]['value']>> 0) & 1);
                                  setLogicLinkAusgang($id,2,($E[1]['value']>> 1) & 1);
                                  setLogicLinkAusgang($id,3,($E[1]['value']>> 2) & 1);
                                  setLogicLinkAusgang($id,4,($E[1]['value']>> 3) & 1);
                                  setLogicLinkAusgang($id,5,($E[1]['value']>> 4) & 1);
                                  setLogicLinkAusgang($id,6,($E[1]['value']>> 5) & 1);
                                  setLogicLinkAusgang($id,7,($E[1]['value']>> 6) & 1);
                                  setLogicLinkAusgang($id,8,($E[1]['value']>> 7) & 1);
                              }
                          }
                      }
                      ?>
                      ###[/LBS]###
                      
                      
                      ###[EXEC]###
                      <?
                      
                      ?>
                      ###[/EXEC]###
                      >>Smelly One<<
                      >> BURLI <<
                      Grüße Armin

                      Kommentar


                        #71
                        WagoKlemme

                        weis jetzt nicht was du meinst

                        Kommentar


                          #72
                          timberland
                          Die Daten für die Müllabfuhr werden, korrigiere mich bitte wenn ich es falsch vestehe, von Prowl (iOS->Prowl) abgerufen. Die Frage war ob Du es schon versucht hast die Daten von einer Textdatei zu holen. D.h. die Termine werden in einer Textdatei abgelegt und Edomi liest die Textdatei.
                          >>Smelly One<<
                          >> BURLI <<
                          Grüße Armin

                          Kommentar


                            #73
                            Sinngemäss die "Externe Schaltliste" vom Homeserver.

                            Kommentar


                              #74
                              Prowl sendet dir eine Pushnachricht. Da werden keine Daten für Müllabfuhr abgeholt.

                              Kommentar


                                #75
                                Hier mal eine Berechnung der Sonnen Auf und Untergänge.

                                PHP-Code:
                                ###[DEF]###
                                [name       =Sonnen Auf/Untergang]
                                [e#1        =Laengengrad    #init=9.505]
                                [e#2        =Breitengrad   #init=49.1781]
                                [e#3        =Zeitzone      #init=Europe/Berlin]
                                [e#4        =Abfragetimer #init=0]
                                [a#1        =Sonnenaufgang]
                                [a#2        =Sonnenuntergang]
                                [v#1        =0]
                                [v#2        =0]
                                [v#3        =0]
                                ###[/DEF]###


                                ###[HELP]###
                                E1        =Laengengrad    #init=9.505]
                                E2        =Breitengrad   #init=49.1781]
                                E3        =Zeitzone      #init=Europe/Berlin]
                                E4        =Abfragetimer #init=0]
                                A1        =Sonnenaufgang]
                                A22        =Sonnenuntergang]
                                Es wird er Sonnenaufgang und der Sonnenuntergang für den Standort Längengrad und Breitengrad berechnet.
                                Die 2 Werte werden an den AusgängenA1 und A2 zurückgegeben. 
                                Die jeweilige Zeitzone, Längengrad und Breitengrad ist einstellbar.

                                ###[/HELP]###

                                ###[LBS]###
                                <?
                                function LB_LBSID($id)  {
                                            if ($E=getLogicEingangDataAll($id))  {
                                                    if ($E[1]['value']!=0 && $E[1]['refresh']==1)  {
                                                        $v1=$E[1]['value'];
                                                        setLogicElementVar($id,1,$v1);
                                                    }
                                                    if ($E[2]['value']!=0 && $E[2]['refresh']==1)  {
                                                        $v2=$E[2]['value'];
                                                        setLogicElementVar($id,2,$v2);
                                                    }
                                                    if ((! is_null($E[3]['value'])) && $E[3]['refresh']==1)  {
                                                        $v3=$E[3]['value'];
                                                        setLogicElementVar($id,3,$v3);
                                                    }
                                            }
                                            if ($E[4]['value']=1 && $E[4]['refresh']==1)  {  
                                                    callLogicFunctionExec(LBSID,$id);                    //EXEC-Script    starten
                                            }
                                }                
                                ?>
                                ###[/LBS]###

                                ###[EXEC]###
                                <?
                                require(dirname(__FILE__)."/../../../../main/include/php/incl_lbsexec.php");

                                sql_connect();

                                  $Laengengrad = getLogicElementVar($id,1) ;
                                  $Breitengrad = getLogicElementVar($id,2) ;

                                  $Laengengrad = 9.505 ;
                                  $Breitengrad = 49.1781 ;


                                //  date_default_timezone_set('Europe/Berlin');
                                  $defTimeZ = getLogicElementVar($id,3) ;
                                  date_default_timezone_set($defTimeZ);

                                  $this_tz_str = date_default_timezone_get();
                                  $this_tz = new DateTimeZone($this_tz_str);
                                  $now = new DateTime("now", $this_tz);
                                  $offset = $this_tz->getOffset($now)/3600 ;
                                  //echo "Offset: " . $offset . "\n" ;

                                  $now = time(); 
                                  $gmt_offset = $offset;   // Unterschied von GMT zur eigenen Zeitzone in Stunden. 
                                  $zenith = 90+50/60; 
                                  $sunset = date_sunset($now, SUNFUNCS_RET_TIMESTAMP, $Breitengrad, $Laengengrad, $zenith, $gmt_offset); 
                                  $sunrise = date_sunrise($now, SUNFUNCS_RET_TIMESTAMP, $Breitengrad, $Laengengrad, $zenith, $gmt_offset); 

                                  echo "sunrise (Sonnenaufgang) ".date("H:i",$sunrise)."\n";
                                  echo "sunset (Sonnenuntergang) ".date("H:i",$sunset)."\n";

                                  setLogicLinkAusgang($id,1,date("H:i",$sunrise));
                                  setLogicLinkAusgang($id,2,date("H:i",$sunset));
                                 
                                sql_disconnect();
                                ?>
                                ###[/EXEC]###

                                Kommentar

                                Lädt...
                                X