Ankündigung

Einklappen
Keine Ankündigung bisher.

Denon über EibPC steuern

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

    Hoffe ihr könnt mir helfen!
    Code:
    if ("DENON 3312 schalten-1/3/0") then {
        AVRCommand = $PWON$;
        AVRReCommand = $PW?$;
    } endif
    //
    if (!"DENON 3312 schalten-1/3/0") then {
        AVRCommand = $PWSTANDBY$;
        AVRReCommand = $PW?$;
    } endif
    Funktioniert alles wunderbar, nur wenn ich den Denon z.B. über !"DENON 3312 schalten-1/3/0" ausschalte, ihn danach mit der Fernbedienung wieder einschalte und dann versuche über !"DENON 3312 schalten-1/3/0" wieder auszuschalten, macht er nichts!
    Erst wieder wenn ich ihn über "DENON 3312 schalten-1/3/0" wieder einschalte, kann ich ihn über! "DENON 3312 schalten-1/3/0" wieder ausschalten!

    Hoffe ich habs nicht zu verwirrend geschrieben!

    Es kommt halt schon öfter bei mir vor, dass mein Denon in meiner Wohnenszene eingeschaltet wird und dann per Fernbedienung ausgeschaltet!
    Ist halt blöd wenn er dann beim nächsten Mal nicht reagiert!

    Das Makro zur Ansteuerung hängt bei
    Angehängte Dateien
    MfG MrKnx

    Kommentar


      Moin Martin,

      Zitat von MrKNX Beitrag anzeigen
      ... ihn danach mit der Fernbedienung wieder einschalte ...
      Und woher soll der Bus nun wissen, das Du den Denon wieder eingeschaltet hast? Entweder Du spendierst Deinem Denon eine eigene Steckdose mit Stromerkennung die sensitiv genug ist die Zustände AUS, Standby und AN zu unterscheiden oder Du holst Dir ein Interface IR->KNX oder aber Du mußt den Denon halt in regelmäßigen Abständen abfragen (ist eigentlich doof).

      Gruß,
      Bernd

      Kommentar


        Du hast recht, der Bus kann das nicht mitbekommen, aber es muss ihm doch egal sein, wie oft er hintereinander EIN schaltet ohne zwischendurch auszuschalten, oder irre ich mich?!
        Ich arbeite ja nicht mit aktiven Statusrückmeldungen!
        MfG MrKnx

        Kommentar


          Zitat von bmx Beitrag anzeigen
          oder aber Du mußt den Denon halt in regelmäßigen Abständen abfragen (ist eigentlich doof).

          Gruß,
          Bernd
          Habe ich mir auch schon überlegt, habe es aber leider bis jetzt nicht geschafft mit den Rückmeldungen des Denons zu arbeiten (siehe vorige Postings)
          Vielleicht kannst du mir ja dabei helfen?!
          MfG MrKnx

          Kommentar


            Zitat von MrKNX Beitrag anzeigen
            Du hast recht, der Bus kann das nicht mitbekommen, aber es muss ihm doch egal sein, wie oft er hintereinander EIN schaltet ohne zwischendurch auszuschalten, oder irre ich mich?!
            Ich arbeite ja nicht mit aktiven Statusrückmeldungen!
            Dem Bus ist egal was da kommt, aber nicht dem EibPC. Das Stichwort ist hier das Validierungsschema.

            [highlight=epc]
            // GA eine Gruppenadresse

            if GA then {
            write( x,y);
            } endif
            [/highlight]

            Wenn auf die GA ein "EIN" gesendet wird, dann wird write( x,y) genau einmal ausgeführt. Wird nochmal ein "EIN" auf die GA gesendet, erkennt die Logikengine des EibPC, das sich gegenüber vorhin nichts geändert hat. Genau dieser Konstrukt ist aber bei Dir im Programm.

            Darum gibt es ein event()

            [highlight=epc]
            // GA eine Gruppenadresse

            if event(GA) then {
            write( x,y);
            } endif
            [/highlight]

            Wenn immer nun ein Telegramm auf die GA gesendet wird, wird auch ein write(x,y) ausgeführt.

            Willst Du nun differenzieren, welchen Wert die GA bekommen hat dann kannst Du schreiben:

            [highlight=epc]
            // GA eine Gruppenadresse

            if event(GA) and GA then {
            write( x,y);
            } endif

            if event(GA) and !GA then {
            write( x,z);
            } endif

            [/highlight]

            Ich hoffe es hilft ein wenig.

            Gruß,
            Bernd

            Kommentar


              Ich habe es jetzt so gelöst:
              Code:
              if event("DENON 3312 ON schalten-1/3/0") then {
                  AVRCommand = $PWON$;
                  AVRReCommand = $PW?$;
              } endif
              if after(event("DENON 3312 ON schalten-1/3/0"),100u64) then {
                  AVRCommand = $$;
                  AVRReCommand = $$;
              } endif
              //
              if event("DENON 3312 OFF schalten-1/3/1") then {
                  AVRCommand = $PWSTANDBY$;
                  AVRReCommand = $PW?$;
              } endif
              if after(event("DENON 3312 OFF schalten-1/3/1"),100u64) then {
                  AVRCommand = $$;
                  AVRReCommand = $$;
              } endif
              Ist sicherlich nicht die schönste Lösung, aber funktioniert!

              Jetzt müsste ich es nur noch schaffen, mit den Rückmeldungen zu arbeiten!?
              MfG MrKnx

              Kommentar


                Code:
                if change(AVRResponse) then pdisplay(AVR3312ID,AVRResponse,INFO,DISPLAY,GREEN,InformationSideID) endif 
                //
                if change(AVRResponse) then {
                    if (AVRResponse == $ZMON$) then write("DENON 3312 ON/OFF rückmelden-1/3/2",EIN) endif
                } endif
                Warum kann ich mit AVRResponse nicht arbeiten?????
                AVRResponse geht definitiv auf ZMON und so wird es mir auch im Browser angezeigt, jedoch geht meine "DENON 3312 ON/OFF rückmelden-1/3/2" nicht auf ein!
                Warum???

                Muss ich vorher dir Rückmeldung irgendwie umwandeln, konvertieren oder was weis ich?????

                Bitte helft mir!!!!
                MfG MrKnx

                Kommentar


                  Probiere es mal so:
                  [highlight=epc]
                  if change(AVRResponse) and AVRResponse == $ZMON$ then {
                  write("DENON 3312 ON/OFF rückmelden-1/3/2",EIN) endif
                  } endif
                  [/highlight]

                  Kommentar


                    Hatte ich auch schon probiert!?
                    MfG MrKnx

                    Kommentar


                      Zitat von MrKNX Beitrag anzeigen
                      Hatte ich auch schon probiert!?
                      Ich vermute, dass die Rückgabe irgendwie anders ist.
                      [highlight=epc]
                      myDummyGA='10/2/3'c14
                      if change(AVRResponse) then {
                      write('10/2/3'c14,AVRResponse) endif
                      } endif
                      [/highlight]
                      Was steht da nun im Telegrammmonitor - vorausgesetzt, du nutzt die 10/2/3 nicht anders.
                      offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                      Enertex Produkte kaufen

                      Kommentar


                        Wenn ichs so kompiliere
                        Code:
                        myDummyGA='10/2/3'c14
                        if change(AVRResponse) then write('10/2/3'c14,AVRResponse) endif
                        kommt dieser Fehler
                        Code:
                        Laufzeitfehler:
                          ! Benutzten Sie Konvertierungsfunktionen:
                         Datentyp der Parameter nicht gleich. Kontrollieren Sie auch die Zuweisung der Funktionsrückgabe. 1-tes Argument von : >write('10/2/3'c14,AVRResponse)< ! 
                        ID:14
                         EibParser wurde mit Fehler beendet.
                        hier der Auschnitt aus dem Makro das ich verwende
                        Code:
                        DenonAVR^Name^TCPConnectResponse = 99
                        DenonAVR^Name^TCPCloseResponse   = 99
                        DenonAVR^Name^TCPCommandSend     = AUS
                        DenonAVR^Name^Delay              = 1000u64
                        DenonAVR^Name^CR                 = $$; if systemstart() then stringset(DenonAVR^Name^CR,0x0Du16,0u16) endif
                        DenonAVR^Name^ReCommand          = DenonAVRReCommand
                        DenonAVR^Name^DataRead           = $$
                        DenonAVR^Name^PortRead           = 0u16
                        DenonAVR^Name^IPRead             = 0u32
                        
                        if DenonAVR^Name^ReCommand != $$ then {
                            DenonAVR^Name^TCPConnectResponse = connecttcp(DenonAVRPort, DenonAVRIP)
                        } endif
                        if DenonAVR^Name^TCPConnectResponse == 0 then {
                            sendtcp(DenonAVRPort, DenonAVRIP, DenonAVR^Name^ReCommand + DenonAVR^Name^CR);
                            DenonAVR^Name^TCPCommandSend = EIN
                        } endif
                        if DenonAVR^Name^TCPConnectResponse > 0 and DenonAVR^Name^TCPConnectResponse < 99 then {
                            DenonAVR^Name^TCPCommandSend = EIN
                        } endif
                        if event(readtcp(DenonAVR^Name^PortRead,DenonAVR^Name^IPRead,DenonAVR^Name^DataRead)) and (DenonAVR^Name^PortRead == DenonAVRPort) and (DenonAVR^Name^IPRead == DenonAVRIP) then {
                            [COLOR=Red]DenonAVRResponse[/COLOR] = DenonAVR^Name^DataRead
                        } endif
                        if after(DenonAVR^Name^TCPCommandSend == EIN,DenonAVR^Name^Delay) then {
                            DenonAVR^Name^TCPCloseResponse = closetcp(DenonAVRPort, DenonAVRIP);
                            DenonAVR^Name^TCPCommandSend = AUS
                        } endif
                        if DenonAVR^Name^TCPCloseResponse != 99 then {
                            DenonAVR^Name^ReCommand = $$;
                            DenonAVR^Name^TCPCloseResponse = 99
                        } endif
                        MfG MrKnx

                        Kommentar


                          Code:
                          myDummyGA='10/2/3'c14
                          myDummyVAR = convert(AVRResponse,'10/2/3'c14)
                          if change(AVRResponse) then write('10/2/3'c14,myDummyVAR) endif
                          In diesem Fall hat meine myDummyGA auch den Wert PWON!!!
                          MfG MrKnx

                          Kommentar


                            Zitat von MrKNX Beitrag anzeigen
                            n diesem Fall hat meine myDummyGA auch den Wert PWON!!!
                            Ja, aber bei Dir steht oben im Code $ZMON$!
                            offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                            Enertex Produkte kaufen

                            Kommentar


                              Stimmt, der Denon gibt leider nicht immer nur PWON sondern manchmal auch ZMON oder PWON ZMON aus!
                              Daher habe ich auch schon versucht:
                              Code:
                              if event(readtcp(DenonAVR^Name^PortRead,DenonAVR^Name^IPRead,DenonAVR^Name^DataRead)) and (DenonAVR^Name^PortRead == DenonAVRPort) and (DenonAVR^Name^IPRead == DenonAVRIP) then {
                                  DenonAVRResponse = convert(DenonAVR^Name^DataRead,$$c14)
                              } endif
                              Code:
                              if change(AVRResponse) then {
                                  if (AVRResponse == $PWON$c14) or (AVRResponse == $ZMON$c14) or (AVRResponse == $ZMON PWON$c14) then {             
                                     write("DENON 3312 ON/OFF rückmelden-1/3/2",EIN) 
                                 }endif
                              }endif
                              leider auch ohne Erfolg
                              MfG MrKnx

                              Kommentar


                                Selbst wenn ich über den Debugger den Wert PWON oder ZMON.. in die Variable AVRResponse schreibe, geht meine RückmeldeGA nicht auf EIN!

                                Irgendwo liegt ein Hund begraben
                                MfG MrKnx

                                Kommentar

                                Lädt...
                                X