Ankündigung

Einklappen
Keine Ankündigung bisher.

[EibStudioV4] Probleme und Fragen

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

    HUE Lib BUG:
    also die Szenen Ansteuerung ist anscheinend falsch, wenn ich z.b. mit der Gruppenadresse für Lampe 3 Szene 1 anspreche bekomme ich ein error.
    Wenn ich aber Die gruppenadresse Lampe 2 Szene 1 anspreche geht Lampe 3 An :-)
    Mein Debugging zeigt das per Gruppenadresse die Lampe 4 angesprochen wird, die habe ich noch nicht per Szene eingerichtet.

    Macro vmHueSzene muss falsch sein, es kann aber noch ein fehler in der vmBridge sein.

    Kommentar


      Was ich nicht verstehe warum ergibt uGASzene und uLampenID immer das gleiche ?
      Wobei beim ersten event auf einer bGABitSzene1 oder 2 ist die uGASzene die vom letzten mal oder irgendwie anders,
      erst wenn ich den zweiten EIN befehl auf
      bGABitSzene1 oder 2 schicke dann bekommt uGASzene die nummer die er haben sollte.
      Das würde vielleicht das komische verhalten erklären.

      Code:
      :begin vmHueSzene(uGASzene,uLampenID,bGABitSzene1,bGABitSzene2)
      :info $Mit diesem Makro wird eine Bridge über eine 8 Bit Szene und 2x1 Bit Szenen (1. und 2. Szene)  angesteuert. \\
      Die Szene wird der LampenID der Hue zugeordnet. Dabei ist für Lampe "0" die Szene 0 und 1, für Lampe "1" die Szene 2 und 3 usw. auszuwählen$\\
      $GA für die 8-Bitszene (ga,u08)$\\
      $Nummer der Lampe, 1.. 10 (var,u08) $\\
      $GA für die 1-Bitszene der 1. Szene (ga,b01)$\\
      $GA für die 1-Bitszene der 2. Szene (ga,b01)$
      :shortinfo $Szeneaktor für die HUE$
      
      if event(bGABitSzene1) and bGABitSzene1==EIN then {
         callscene(uGASzene, (uLampenID-1)*2);
         vmDebugUDPVisuFunctionsHue($-- vmHueSzene EIN 1 --$);
         vmDebugUDPVisuFunctionsHue($uGASzene $+convert(uGASzene,$$));
         vmDebugUDPVisuFunctionsHue($uLampenID $+convert((uLampenID-1)*2,$$));
         vmDebugUDPVisuFunctionsHue($LampenID $+convert(uLampenID,$$)); 
      } endif
      
      if event(bGABitSzene2) and bGABitSzene2==EIN then {
         callscene(uGASzene, (uLampenID-1)*2+1);
         vmDebugUDPVisuFunctionsHue($-- vmHueSzene EIN 2 --$);
         vmDebugUDPVisuFunctionsHue($uGASzene $+convert(uGASzene,$$));
         vmDebugUDPVisuFunctionsHue($uLampenID $+convert((uLampenID-1)*2+1,$$));
         vmDebugUDPVisuFunctionsHue($LampenID $+convert(uLampenID,$$)); 
      } endif
      
      
      if event(bGABitSzene1) and bGABitSzene1==AUS then {
         // Lampe Ausschalten
         callscene(uGASzene, (uLampenID-1)+20);
      } endif
      if event(bGABitSzene2) and bGABitSzene2==AUS then {
         // Lampe Ausschalten
         callscene(uGASzene, (uLampenID-1)+20);
      } endif
      
      :end

      Kommentar


        Zitat von PharaDOS Beitrag anzeigen
        Was ich nicht verstehe warum ergibt uGASzene und uLampenID immer das gleiche ?
        Wobei beim ersten event auf einer bGABitSzene1 oder 2 ist die uGASzene die vom letzten mal oder irgendwie anders,
        erst wenn ich den zweiten EIN befehl auf
        bGABitSzene1 oder 2 schicke dann bekommt uGASzene die nummer die er haben sollte.
        Das würde vielleicht das komische verhalten erklären.

        Code:
        :begin vmHueSzene(uGASzene,uLampenID,bGABitSzene1,bGABitSzene2)
        :info $Mit diesem Makro wird eine Bridge über eine 8 Bit Szene und 2x1 Bit Szenen (1. und 2. Szene) angesteuert. \\
        Die Szene wird der LampenID der Hue zugeordnet. Dabei ist für Lampe "0" die Szene 0 und 1, für Lampe "1" die Szene 2 und 3 usw. auszuwählen$\\
        $GA für die 8-Bitszene (ga,u08)$\\
        $Nummer der Lampe, 1.. 10 (var,u08) $\\
        $GA für die 1-Bitszene der 1. Szene (ga,b01)$\\
        $GA für die 1-Bitszene der 2. Szene (ga,b01)$
        :shortinfo $Szeneaktor für die HUE$
        
        if event(bGABitSzene1) and bGABitSzene1==EIN then {
        callscene(uGASzene, (uLampenID-1)*2);
        vmDebugUDPVisuFunctionsHue($-- vmHueSzene EIN 1 --$);
        vmDebugUDPVisuFunctionsHue($uGASzene $+convert(uGASzene,$$));
        vmDebugUDPVisuFunctionsHue($uLampenID $+convert((uLampenID-1)*2,$$));
        vmDebugUDPVisuFunctionsHue($LampenID $+convert(uLampenID,$$));
        } endif
        
        if event(bGABitSzene2) and bGABitSzene2==EIN then {
        callscene(uGASzene, (uLampenID-1)*2+1);
        vmDebugUDPVisuFunctionsHue($-- vmHueSzene EIN 2 --$);
        vmDebugUDPVisuFunctionsHue($uGASzene $+convert(uGASzene,$$));
        vmDebugUDPVisuFunctionsHue($uLampenID $+convert((uLampenID-1)*2+1,$$));
        vmDebugUDPVisuFunctionsHue($LampenID $+convert(uLampenID,$$));
        } endif
        
        
        if event(bGABitSzene1) and bGABitSzene1==AUS then {
        // Lampe Ausschalten
        callscene(uGASzene, (uLampenID-1)+20);
        } endif
        if event(bGABitSzene2) and bGABitSzene2==AUS then {
        // Lampe Ausschalten
        callscene(uGASzene, (uLampenID-1)+20);
        } endif
        
        :end
        Also ich glaub ich hab jetzt verstanden warum die daten so sind.
        uGASzene ist der Inhalt wie es jetzt auf der Gruppenadresse aussieht (Im Hintergrund liegt die Adresse wohin geschrieben werden soll) liegt hier also ein "Anzeige fehler" vor, den er zeigt den Inhalt an und nicht die Adresse (ich denke das EIBPC so designt ist) es ist also kein fehler.
        uLampenID ist dann die neue Scenen nummer.
        Somit macht es sinn das beim ersten lesen der Inhalt von vorher angezeigt wird und beim zweiten mal lesen wird denn das gelesen was beim erstren mal geschrieben wurde.

        schade und ich dachte hier wäre dann der fehler.

        Aber das problem bleicht also noch vorhanden.
        Merkwürdig, oder ist es nur ein Timing fehler/problem?

        Kommentar


          HUE Problem/Bug:
          also ich habe die ersten 3 Gruppenadressen für die Lampe auf Taster gelegt. es wird aber immer nur Lampe 1 geschaltet.
          Wenn ich nun auf der Webseite den Multibutten auf Lampe drei Schalte wird per Gruppenadresse egal welche Lampe 3 geschaltet.
          anscheinend haben die Gruppenadresse keinen einfluss auf die Lampen Auswahl, den der Multibutton overrided alles.

          die Gruppenadresse Verbindungsstaus soll wofür sein?
          sie ist dauern auf AUS. Ich sehe auch keinen eintrag wo sie auf 1 Springt.

          Die Zeile:
          if eventread(bGAVerbindung) then writeresponse(bGAVerbindung,bGAVerbindung) endif
          Deite ich so das wenn die Verbindung gelesen wird die Verbindung auf den wert gesetzt wird der sie ist? also ist AUS bleibt AUS.

          Es werden die Richtigen Szenen und Lampen ID angesprochen, aber an HUE wird immer nur die Lampe gemeldet die im Multibutton Ausgewählt ist.

          Kommentar


            Ich glaube ich habe den Übeltäter, der erste
            uSetLampe wird doch durch den zweiten wieder überschrieben ?
            Somit wird immer nur die Lampe uLampe genommen, und das ist die Lampe über den mButton.
            Oder sehe ich das falsch.


            Code:
            if event(uGASzene) and uGASzene<63 then {
               // Pro Lampe 2 Szenen
               uSetLampe@=mod(uGASzene,2);
               cHue@=convert(Name^SzeneHue,$$);
               cSat@=convert(Name^SzeneSat,$$);
               cBri@=convert(Name^SzeneBri,$$);
               cEffekt@=Name^SzeneEff;
               cOn@=Name^SzeneOnOff;
               uSetStateCom@=uStateConnectStart@;
               uSetStatus@=kuInit@;
               uSetClose@=0;
               [COLOR=#FF0000]uSetLampe@=uLampe@;[/COLOR]
               vmDebugUDP($ Ändere Licht$);
            } endif

            Kommentar


              Verständnis Frage zur Scenen:

              Was stimmt nun?

              Anleitung:
              Jeder so definierte Szenenbaustein verwaltet 64 Szenen (Nummer 1 bis 64)

              Hue Lib:
              if event(uGASzene) and uGASzene<
              63
              then {
              sowie
              presetscene(uGASzene,
              0
              ,AUS,46100u16,EIN,100,EIN,100,EIN,$none$,EIN,$true $,EIN,EIN,EIN)

              Scenen LIB:
              $Szenennummer
              0...64
              , welche über SzeneGA angesprochen wird (var,u08)$\\

              Ich würde mal sagen das 0...63 korrekt ist
              Wäre Binär 0 bis 111111 was Programmiertechnisch sinn macht oder?

              Kommentar


                Zitat von PharaDOS Beitrag anzeigen
                Was stimmt nun?
                KNX: 1-64, im Telegramm ist die Szenennummer 0-63. 0-64 ist definitiv falsch.
                Für die Funktionen, z.B. presetscene, 0-63.

                In der HueLib <63 da immer zwei benachbarte Szenen verwendet werden.
                Zuletzt geändert von foobar0815; 03.09.2019, 19:21.

                Kommentar


                  Zitat von PharaDOS Beitrag anzeigen
                  if eventread(bGAVerbindung) then writeresponse(bGAVerbindung,bGAVerbindung) endif
                  Soll eigentlich den aktuellen Verbindungsstatus anzeigen, also ob zykl abgefragt wird:

                  Ungetestet, glaube aber es sollte so sein:
                  Code:
                  if eventread(bGAVerbindung) then writeresponse(bGAVerbindung,Name^Verbindung) endif

                  Kommentar


                    Zitat von foobar0815 Beitrag anzeigen
                    KNX: 1-64, im Telegramm ist die Szenennummer 0-63. 0-64 ist definitiv falsch.
                    Für die Funktionen, z.B. presetscene, 0-63.

                    In der HueLib <63 da immer zwei benachbarte Szenen verwendet werden.
                    Habe ich mir gedacht :-)

                    Kommentar


                      Zitat von foobar0815 Beitrag anzeigen
                      Soll eigentlich den aktuellen Verbindungsstatus anzeigen, also ob zykl abgefragt wird:

                      Ungetestet, glaube aber es sollte so sein:
                      Code:
                      if eventread(bGAVerbindung) then writeresponse(bGAVerbindung,Name^Verbindung) endif
                      probier ich mal aus. ja oder auch via Gruppenadresse die Verbindung aufbauen.
                      Zuletzt geändert von PharaDOS; 04.09.2019, 05:03.

                      Kommentar


                        Zitat von PharaDOS Beitrag anzeigen
                        Ich glaube ich habe den Übeltäter, der erste
                        uSetLampe wird doch durch den zweiten wieder überschrieben ?
                        Somit wird immer nur die Lampe uLampe genommen, und das ist die Lampe über den mButton.
                        Oder sehe ich das falsch.


                        Code:
                        if event(uGASzene) and uGASzene<63 then {
                        // Pro Lampe 2 Szenen
                        uSetLampe@=mod(uGASzene,2);
                        cHue@=convert(Name^SzeneHue,$$);
                        cSat@=convert(Name^SzeneSat,$$);
                        cBri@=convert(Name^SzeneBri,$$);
                        cEffekt@=Name^SzeneEff;
                        cOn@=Name^SzeneOnOff;
                        uSetStateCom@=uStateConnectStart@;
                        uSetStatus@=kuInit@;
                        uSetClose@=0;
                        [COLOR=#FF0000]uSetLampe@=uLampe@;[/COLOR]
                        vmDebugUDP($ Ändere Licht$);
                        } endif
                        [LEFT][COLOR=#000000][FONT=Arial][SIZE=15px][/SIZE][/FONT][/COLOR][/LEFT]
                        Hier habe ich jetzt auch die Lösung gefunden, also jetzt arbeitet die LIB auch mit den gruppen Adressen.
                        Beide
                        uSetLampe@ Variablen sind falsch, die erste macht ja nur 1 oder 0. mit dieser Änderung läuft es jetzt.
                        Alle 10 Gruppenadressen werden für Szene 1 habe ich bereits getestet sowie aus. Szene 2 fehlt noch :-)

                        Lösung:
                        Code:
                        if event(uGASzene) and uGASzene<63 then {
                        // Pro Lampe 2 Szenen und 1 mal aus
                         if (uGASzene==0 or uGASzene==1 or uGASzene==20) then uSetLampe@=1 endif;
                         if (uGASzene==2 or uGASzene==3 or uGASzene==21) then uSetLampe@=2 endif;
                         if (uGASzene==4 or uGASzene==5 or uGASzene==22) then uSetLampe@=3 endif;
                         if (uGASzene==6 or uGASzene==7 or uGASzene==23) then uSetLampe@=4 endif;
                         if (uGASzene==8 or uGASzene==9 or uGASzene==24) then uSetLampe@=5 endif;
                         if (uGASzene==10 or uGASzene==11 or uGASzene==25) then uSetLampe@=6 endif;
                         if (uGASzene==12 or uGASzene==13 or uGASzene==26) then uSetLampe@=7 endif;
                         if (uGASzene==14 or uGASzene==15 or uGASzene==27) then uSetLampe@=8 endif;
                         if (uGASzene==16 or uGASzene==17 or uGASzene==28) then uSetLampe@=9 endif;
                         if (uGASzene==18 or uGASzene==19 or uGASzene==29) then uSetLampe@=10 endif;
                        // setzte Lichtwerte
                         cHue@=convert(Name^SzeneHue,$$);
                         cSat@=convert(Name^SzeneSat,$$);
                         cBri@=convert(Name^SzeneBri,$$);
                         cEffekt@=Name^SzeneEff;
                         cOn@=Name^SzeneOnOff;
                        // setzte Status
                         uSetStateCom@=uStateConnectStart@;
                         uSetStatus@=kuInit@;
                         uSetClose@=0;
                        // Debug
                         vmDebugUDPVisuFunctionsHue($ Aendere Licht via uGASzene uSetLampe:$+convert(uSetLampe@,$$));
                        } endif
                        [LEFT][COLOR=#000000][FONT=Arial][SIZE=15px][/SIZE][/FONT][/COLOR][/LEFT]

                        Kommentar


                          Verständnisfrage:
                          in den anderen Forum Threats wurde gesagt das man die IP/Port abfragen soll wieso wird das in der Hue Lib nicht gemacht?

                          Code:
                          if event(readtcp(uDataPort@,uDataServerIP@,cData@)) and cData@!=$$ then {
                             cLights@=cData@;
                             if uStateCom@==uStateReadDeviceInfo@ then {
                                   uStateCom@=uStateCloseforReady@;
                              } endif;
                             if uStateCom@==uStateConnectSearch@ then {
                                cAnswer@=$$;
                                vmBridgeParse(cLights@,description,cAnswer@);

                          Kommentar


                            Also ich schaffe es irgendwie das der EIBPC startet aber der Webserver/Oberfläche nicht startet.
                            Ist der Fehler bekannt oder möchtest du das Programm zum analysieren haben?
                            In den Logs Ereignis ist nichts zu sehen was anders ist als vorher.

                            Kommentar


                              Schickst du mir dazu einen Support-Export?

                              Kommentar


                                Zitat von foobar0815 Beitrag anzeigen
                                Schickst du mir dazu einen Support-Export?
                                Würde ich machen läuft jetzt aber wieder. Soll ich trotzdem ein Export machen? ich werde heute Nachmittag nochmal das Projekt installieren was Probleme machte.
                                Hatte gestern ein leeres Projekt installiert und dann ein altes und irgendwann lief es wieder.
                                Aber es gibt keine Fehler beim kompilieren, so wie weiter oben im Thread forum wo ich nur die eine variable auf c65000 änderte und das ding nicht mehr startet.
                                Habe das die letzten tage häufiger (früher noch nie) das der Webserver nicht startet aber die EIB PC normal läuft.

                                Kommentar

                                Lädt...
                                X