Zitat von MrKNX
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
Denon über EibPC steuern
Einklappen
X
-
offizielles Supportforum für den Enertex® EibPC: https://knx-user-forum.de/eibpc/
Enertex Produkte kaufen
-
Zitat von MrKNX Beitrag anzeigenWas muss ich jetzt in den Debugger schreiben damit es anspricht???
Wenn ich LICHTEIN schreibe tut sich nichts?!?!?!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
MfG MrKnx
Kommentar
-
Zitat von MrKNX Beitrag anzeigenDer Code funktioniert bei mir auch, jedoch wenn ich danach manuell Hallo in die Variable über den Debugger schreibe tut sich nichts mehr!!??
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 anzeigenUps, 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.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
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
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 bestensMfG MrKnx
Kommentar
-
Zitat von enertegus Beitrag anzeigenUps, 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
Kommentar