Ankündigung

Einklappen
Keine Ankündigung bisher.

Denon über EibPC steuern

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

    Zitat von MrKNX Beitrag anzeigen
    Selbst wenn ich über den Debugger den Wert PWON oder ZMON.. in die Variable AVRResponse schreibe, geht meine RückmeldeGA nicht auf EIN!
    Kann es sein, dass sich der String in zwei aufeinanderfolgenden Zyklen sich ändert? Verzichte doch mal auf das change. Die Valdiierung sorgt ja eh dafür, dass nur einmal der Befehl ausgeführt wird.
    offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
    Enertex Produkte kaufen

    Kommentar


      Wie gesagt, selbst wenn ich immer Debugger in die Variable AVRResponse Werte schreibe und ich zwischendurch auch andere Werte als PWON sende, geht die GA nicht auf ein!!
      Durch die verschiedenen Werte die ich in die Variable schreibe, müsste doch das change ansprechen oder?
      MfG MrKnx

      Kommentar


        Code:
        if (AVRResponse == $LICHTEIN$c14) then write("EG Wohnzimmer Licht schalten-10/0/80",EIN) endif
        Was muss ich jetzt in den Debugger schreiben damit es anspricht???
        Wenn ich LICHTEIN schreibe tut sich nichts?!?!?!
        MfG MrKnx

        Kommentar


          Zitat von MrKNX Beitrag anzeigen
          Was muss ich jetzt in den Debugger schreiben damit es anspricht???
          Wenn ich LICHTEIN schreibe tut sich nichts?!?!?!
          Sicher LICHTEIN und dann sollte das auch auslösen.
          offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
          Enertex Produkte kaufen

          Kommentar


            Ein Democode, den ich eben getestet habe:
            [highlight=epc]
            [EibPC]
            uu='0/7/1'b01
            s=$$c14
            if after(systemstart(),1000u64) then s=$Hallo$c14 endif
            if s==$Hallo$c14 then write('0/7/1'b01,EIN) endif
            [/highlight]
            offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
            Enertex Produkte kaufen

            Kommentar


              Code:
              s=$$c14
              if after(systemstart(),10000u64) then s=$Hallo$c14 endif
              if after(systemstart(),15000u64) then s=$Hello$c14 endif
              if s==$Hallo$c14 then write("EG Wohnzimmer Licht schalten-10/0/80",EIN) endif 
              if s==$Hello$c14 then write("EG Wohnzimmer Licht schalten-10/0/80",AUS) endif
              Der Code funktioniert bei mir auch, jedoch wenn ich danach manuell Hallo in die Variable über den Debugger schreibe tut sich nichts mehr!!??
              MfG MrKnx

              Kommentar


                Zitat von MrKNX Beitrag anzeigen
                Der Code funktioniert bei mir auch, jedoch wenn ich danach manuell Hallo in die Variable über den Debugger schreibe tut sich nichts mehr!!??
                Ups, da seh ich, der Debugger schickt da noch Leerzeichen hinterher (wage zu erkennen im Meldungsfenster an den "20" beim Abfragen). Wenn ich das recht in Erinnerung hab, ist das lt KNX Standard bei c14 Pflicht.
                Der EibPC wird daher nichts ausführen, da er $Hallo$c14 mit $Hallo $c14 vergleicht. Füge ich die Leerzeichen im Vergleich ein, geht's.
                Ich hab das nun mit $$ gemacht und dabei vermutlich einen Bug entdeckt, der Dein Verhalten erklärt. Ich muss das aber nochmals genauer checken.
                offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
                Enertex Produkte kaufen

                Kommentar


                  Zitat von enertegus Beitrag anzeigen
                  Ups, da seh ich, der Debugger schickt da noch Leerzeichen hinterher (wage zu erkennen im Meldungsfenster an den "20" beim Abfragen). Wenn ich das recht in Erinnerung hab, ist das lt KNX Standard bei c14 Pflicht.
                  Der EibPC wird daher nichts ausführen, da er $Hallo$c14 mit $Hallo $c14 vergleicht. Füge ich die Leerzeichen im Vergleich ein, geht's.
                  Ich hab das nun mit $$ gemacht und dabei vermutlich einen Bug entdeckt, der Dein Verhalten erklärt. Ich muss das aber nochmals genauer checken.
                  Wollte mal nachfragen, ob du diesbezüglich schon etwas in Erfahrung gebracht hast?
                  MfG MrKnx

                  Kommentar


                    Da es draußen wieder ziemlich **** ist, habe ich etwas Zeit gefunden und habe mich mit der Status Rückmeldung meines Denn beschäftigt!

                    Habe es jetzt so gelöst:

                    Makroaufruf im Programm:

                    Code:
                    DenonAVRReadData(Read3312,**u16,**.**.**.**,AVRReCommand,"DENON 3312 ON/OFF rückmelden-1/3/2")
                    Code:
                    AVRCommand = $$
                    AVRReCommand = $$
                    //
                    if event("DENON 3312 ON/OFF schalten-1/3/1") and ("DENON 3312 ON/OFF schalten-1/3/1"==EIN) then {
                    		AVRReCommand = $PW?$;
                    }endif

                    Makro:

                    Code:
                    :begin DenonAVRReadData(Name,DenonAVRPort,DenonAVRIP,DenonAVRReCommand,DenonRueckGA)
                    :info $DenonAVR-Makro - Bitte Beschreibung in der Makro-Datei lesen.$ \\
                          $Name des Denon AVR$ \\
                          $TCP Port des Denon AVR (Normalerweise Port 23)$ \\
                          $IP des Denon AVR$ \\
                          $Variable für Kommando  (Diese im Programmcode mit dem Command füllen. Bsp.: "PW?" oder "SI?". Siehe Denon AVR control protocol. $  \\
                    	  $Gruppenadresse für Rückmeldung$ \\
                    	  
                    :shortinfo $DenonAVR-Makro - Bitte Beschreibung in der Makro-Datei lesen.$
                    
                    // Initialisierung
                    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
                    DenonAVR^Name^FindOFF            = $OFF$
                    DenonAVR^Name^FindSTANDBY        = $STANDBY$
                    DenonAVR^Name^FindON             = $ON$
                    DenonAVR^Name^OFF                = find(DenonAVR^Name^DataRead,DenonAVR^Name^FindOFF,0u16)
                    DenonAVR^Name^STANDBY            = find(DenonAVR^Name^DataRead,DenonAVR^Name^FindSTANDBY,0u16)
                    DenonAVR^Name^ON                 = find(DenonAVR^Name^DataRead,DenonAVR^Name^FindON,0u16)
                    DenonAVR^Name^Response           = $$c14
                    
                    if after(DenonAVR^Name^ReCommand != $$,50u64) 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 {
                    	DenonAVR^Name^Response = convert(DenonAVR^Name^DataRead,$$c14)
                    } 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
                    if (DenonAVR^Name^OFF < 1400u16) or (DenonAVR^Name^STANDBY < 1400u16) then write(DenonRueckGA,AUS) endif
                    if (DenonAVR^Name^ON < 1400u16) then write (DenonRueckGA,EIN) endif
                    
                    :end
                    Funktioniert soweit auch zuverlässig, jedoch wenn ich den Denon über die GA einschalte und anschließend manuell den Denon am Gerät selber ausschalte, muss ich die GA "DENON 3312 ON/OFF schalten-1/3/1" vorher auf AUS setzen, damit es funktioniert!!!

                    Warum??

                    Code:
                    if [COLOR="Red"][B]event[/B][/COLOR]("DENON 3312 ON/OFF schalten-1/3/1") and ("DENON 3312 ON/OFF schalten-1/3/1"==[COLOR="red"][B]EIN[/B][/COLOR]) then
                    Müsste doch jedes mal wenn ein EIN auf die GA kommt ausgeführt werden oder irre ich??
                    MfG MrKnx

                    Kommentar


                      Hab hier noch etwas interessantes gefunden, um den Denon nicht unbedingt umständlich ûber TCP ansprechen zu müssen, sondern direkt mit HTTP Befehle zu schalten.

                      https://knx-user-forum.de/openhab/31...steuern-2.html

                      Funktioniert bestens
                      MfG MrKnx

                      Kommentar


                        Klasse! Vielen Dank für die Info!
                        Gruß
                        Christian

                        Kommentar


                          Zitat von enertegus Beitrag anzeigen
                          Ups, da seh ich, der Debugger schickt da noch Leerzeichen hinterher (wage zu erkennen im Meldungsfenster an den "20" beim Abfragen). Wenn ich das recht in Erinnerung hab, ist das lt KNX Standard bei c14 Pflicht.
                          Der EibPC wird daher nichts ausführen, da er $Hallo$c14 mit $Hallo $c14 vergleicht. Füge ich die Leerzeichen im Vergleich ein, geht's.
                          Ich hab das nun mit $$ gemacht und dabei vermutlich einen Bug entdeckt, der Dein Verhalten erklärt. Ich muss das aber nochmals genauer checken.

                          Es ist zwar schon einige Zeit her und ich habe es noch nicht versucht, aber geht das aktuell schon?
                          MfG MrKnx

                          Kommentar


                            Hallo zusammen, hat irgendjemand zufällig ein schönen und funktionierenden Weg den Denon zu steuern?
                            Ich möchte z.B. die Zone2 über einen Schalter ein und aus schalten... Ich bekomme es irgendwie nicht hin.

                            Kommentar


                              Hi,

                              bei mir funktioniert es damit seit Jahren perfekt....
                              Angehängte Dateien
                              MfG MrKnx

                              Kommentar

                              Lädt...
                              X