Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

IP Control (X2400H)

Pagina: 1
Acties:

Onderwerpen

Vraag


  • wouser
  • Registratie: oktober 2014
  • Laatst online: 04-10 09:49
Tweakers! Ik heb recent een denon X2400H gekocht, deze wil ik graag via IP besturen echter kan ik nergens officiele documenten vinden hoe dit zou moeten werken. Uiteindelijk wil ik een home-assistant component schrijven maar eerst even huis-tuin-en-keuken scripts gebruiken om er wat gewenning in te krijgen.

Op dit moment probeer ik middels een python script commands te versturen naar de receiver. Op andere, vergelijkbare modellen is poort 23 aangewezen voor IP controls. Ik heb gecheckt beschikbare poorten zijn 80, 23 en 111 (RPCBIND).
Uit het IP control document van de X2300 (en consorte) heb ik getracht een aantal commando's te destilleren echter zonder succes.

Op dit moment stopt mijn script bij 'connection timed out'. Is er iemand die hier ervaring mee heeft? Dit werkende heeft of mij op de goede weg kan helpen?

Alvast bedankt!


Onderstaande mijn huidige script (python):

import socket
import os
from time import sleep

#De versterkker
host = '192.168.1.129'
port = 23 #beschikbare zijn HTTP, 23, 111


#De connectie definieren
def signaal(input):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(5)
try:
s.connect((host,port))
s.send(input)
ant = s.recv(2048)
s.close()
return ant
except socket.error as e:
print "Socket verbinding error:"
print e
return

#signaal('\x21\x01\x08\x02\x10\x10\x0D')
#signaal('PWON<CR>') zou aan moeten zijn
#signaal(' 0x0D')
#signaal('\x80\x87\x79\x78\x0D') # zou aan moeten zijn
signaal('\x80\x87\x83\x84\x65\x78\x68\x66\x89\x0D') # zou standby moeten zijn

Beste antwoord (via wouser op 10-01-2018 10:53)


  • kroegtijger
  • Registratie: juli 2001
  • Laatst online: 01:18
Zo te zien moet je een byte-array gebruiken.
Om mijn beamer-scherm te bedienen (weliswaar via seriele connectie, maar het concept werkt natuurlijk op eenzelfde manier voor de netwerk-verbinding) via scripting gebruik ik onderstaande code. Ik vermoed dat je een bytearray moet gebruiken (bytearray.fromhex())
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import sys
import serial
import time


# Com settings
# Baud rate: 2400 Data length: 8 Parity: none
# UP:  FF  AA  EE  EE  DD
# STOP:  FF  AA  EE  EE  CC
# DOWN:  FF  AA  EE  EE  EE

def screen(com, do):
    baud = 2400
    ser = serial.Serial(
        port="COM" + com,
        baudrate=baud,
        parity=serial.PARITY_NONE,
        bytesize=serial.EIGHTBITS
    )
    try:
        ser.open()
    except:
        pass

    ser.isOpen()
    ser.write(do + '\n')
    ser.close()

def act(com, action):
    if action == "up":
        do = "FF AA EE EE DD"
        do = bytearray.fromhex(do)
        screen(com,do)

    if action == "stop":
        do = "FF AA EE EE CC"
        do = bytearray.fromhex(do)
        screen(com, do)

    if action == "down":
        do = "FF AA EE EE EE"
        do = bytearray.fromhex(do)
        screen(com, do)

def get_input():
    com = str(sys.argv[1])
    action = sys.argv[2]
    act(com, action)

get_input()

Dat kan ik dan weer vanuit Domoticz aanroepen om daadwerkelijk het scherm te bedienen. Een vergelijkbare manier kan je dus hanteren voor je receiver

It´s not a lie, if you believe it

Alle reacties


Acties:
  • Beste antwoord
  • +1Henk 'm!

  • kroegtijger
  • Registratie: juli 2001
  • Laatst online: 01:18
Zo te zien moet je een byte-array gebruiken.
Om mijn beamer-scherm te bedienen (weliswaar via seriele connectie, maar het concept werkt natuurlijk op eenzelfde manier voor de netwerk-verbinding) via scripting gebruik ik onderstaande code. Ik vermoed dat je een bytearray moet gebruiken (bytearray.fromhex())
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import sys
import serial
import time


# Com settings
# Baud rate: 2400 Data length: 8 Parity: none
# UP:  FF  AA  EE  EE  DD
# STOP:  FF  AA  EE  EE  CC
# DOWN:  FF  AA  EE  EE  EE

def screen(com, do):
    baud = 2400
    ser = serial.Serial(
        port="COM" + com,
        baudrate=baud,
        parity=serial.PARITY_NONE,
        bytesize=serial.EIGHTBITS
    )
    try:
        ser.open()
    except:
        pass

    ser.isOpen()
    ser.write(do + '\n')
    ser.close()

def act(com, action):
    if action == "up":
        do = "FF AA EE EE DD"
        do = bytearray.fromhex(do)
        screen(com,do)

    if action == "stop":
        do = "FF AA EE EE CC"
        do = bytearray.fromhex(do)
        screen(com, do)

    if action == "down":
        do = "FF AA EE EE EE"
        do = bytearray.fromhex(do)
        screen(com, do)

def get_input():
    com = str(sys.argv[1])
    action = sys.argv[2]
    act(com, action)

get_input()

Dat kan ik dan weer vanuit Domoticz aanroepen om daadwerkelijk het scherm te bedienen. Een vergelijkbare manier kan je dus hanteren voor je receiver

It´s not a lie, if you believe it


  • wouser
  • Registratie: oktober 2014
  • Laatst online: 04-10 09:49
@kroegtijger

Wow, Hulde! Thanks alot! Met jou tips/voorbeeld heb ik het werkende gekregen. Uiteindelijk was het niet zo lastig (zoals meestal :+ ).

Voor toekomstige mensen die hiermee worstelen dit is mijn script waarmee ik het volume 1 stapje hoger kan maken. Van daaruit is het makkelijk te modificeren naar elke commando die in het control protocol staan :)


#!/usr/bin/python
import socket
import sys
import os
from time import sleep

host = '192.168.1.129'
port = 23

def signaal(input):
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(3)
try:
s.connect((host,port))
s.send(bytearray(input + '\r', 'ascii'))
ant = s.recv(135)
print ant
s.close()
sleep(0.06)
return #ant
except socket.error as e:
print "Socket verbinding error:"
print e
return

signaal(str(sys.argv[1]))

wouser wijzigde deze reactie 10-01-2018 13:15 (7%)
Reden: Elegantere versie van het script toegevoegd.


  • kroegtijger
  • Registratie: juli 2001
  • Laatst online: 01:18

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/usr/bin/python
import socket
import sys
import os
from time import sleep

host = '192.168.1.129'
port = 23

def signaal(input):
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.settimeout(3)
        try:
                s.connect((host,port))
                s.send(bytearray(input  + '\r', 'ascii'))
                ant = s.recv(135)
                print ant
                s.close()
                sleep(0.06)
                return #ant
        except socket.error as e:
                print "Socket verbinding error:"
                print e
                return

signaal(str(sys.argv\[1]))

En nu ook met indentation ;)
Het heeft mij destijds ook wel even wat werk gekost hoor, maar als je eenmaal achter de bytearray bent kom je er vrij snel uit

It´s not a lie, if you believe it


  • The Eagle
  • Registratie: januari 2002
  • Laatst online: 22:07

The Eagle

I wear my sunglasses at night

FWIW, heb je hier iets aan?
http://batpigworld.com/wp/?p=106
http://batpigworld.com/wp/?p=117

Sowieso is batpigworld een hele goede en tevens uitgebreide bron van info vwb Denon. Als je iets wilt weten en het staat niet in het boekje, check dan daar. Merkte trouwens dat de links op de eerste pagina naar de volledig beschikbare set dood waren. Maar als je batpig daar ff over mailt zet ie hem vast weer online :)

Al is het nieuws nog zo slecht, het wordt leuker als je het op zijn Brabants zegt :)


  • Archie_T
  • Registratie: januari 2002
  • Laatst online: 17-11 20:52
Op mijn X1100w roep ik alles aan met
code:
1
http://<ip>/goform/formiPhoneAppDirect.xml?<commando>

Heb deze PDF gebruikt: http://openrb.com/wp-cont...R3312_PROTOCOL_V7.6.0.pdf voor alle commando’s en kan het apparaat volledig bedienen. Weet niet of je er wat aan hebt, zo nee, sorry voor het verstoren van je topic ;)

Archie_T wijzigde deze reactie 10-01-2018 22:48 (8%)
Reden: Tussen code tags gezet


  • wouser
  • Registratie: oktober 2014
  • Laatst online: 04-10 09:49
Dank allen! Nuttige informatie inderdaad, kans is groot dat ik vroeg of laat nog ergens tegen aan loop en hier wat aan kan hebben:)

Heb zelf niet geprobeerd via http ondanks dat ik al ergens was tegengekomen dat dit ook zou kunnen. Had niet mijn directe voorkeur het op die manier te doen maar is zeer waarschijnlijk wel mogelijk op een X2400H, dus thanks!

@Archie_T Nogmaals dank voor de tip: Dit werkt echter niet op de H-series -> Deze hebben geen web bediening waar de W serie dat wel heeft (staat tevens op de site vermeld :) )

wouser wijzigde deze reactie 11-01-2018 08:33 (20%)


  • gielie
  • Registratie: september 2005
  • Laatst online: 16-11 12:38
quote:
wouser schreef op donderdag 11 januari 2018 @ 07:01:
Dank allen! Nuttige informatie inderdaad, kans is groot dat ik vroeg of laat nog ergens tegen aan loop en hier wat aan kan hebben:)

Heb zelf niet geprobeerd via http ondanks dat ik al ergens was tegengekomen dat dit ook zou kunnen. Had niet mijn directe voorkeur het op die manier te doen maar is zeer waarschijnlijk wel mogelijk op een X2400H, dus thanks!

@Archie_T Nogmaals dank voor de tip: Dit werkt echter niet op de H-series -> Deze hebben geen web bediening waar de W serie dat wel heeft (staat tevens op de site vermeld :) )
Hi,
Ik zou graag willen weten of/hoe ik mijn 2400H kan bedienen via Domoticz, mijn oude 2100W kon ik prima via Domoticz bedienen maar aangezien de web bediening/interface eruit gesloopt is krijg ik dit niet meer voor elkaar.

"Death smiles at us all, all a man can do is smile back." - Maximus Decimus Meridius


  • wouser
  • Registratie: oktober 2014
  • Laatst online: 04-10 09:49
Ik heb de mijne , x2400h, geïntegreerd in home assistent maar wel door een python script te callen.

In dat python script heb ik alle door mij gewenste functies gezet die ik dan gewoon kan aanroepen. Ik weet niet of dat in domoticz ook kan maar als je er interesse in hebt wil ik je best mijn script sturen!

Edit: autocorrect fouten van telefoon gecorrigeerd

wouser wijzigde deze reactie 14-03-2018 20:16 (8%)


Acties:
  • +1Henk 'm!

  • gielie
  • Registratie: september 2005
  • Laatst online: 16-11 12:38
quote:
wouser schreef op woensdag 14 maart 2018 @ 20:15:
Ik heb de mijne , x2400h, geïntegreerd in home assistent maar wel door een python script te callen.

In dat python script heb ik alle door mij gewenste functies gezet die ik dan gewoon kan aanroepen. Ik weet niet of dat in domoticz ook kan maar als je er interesse in hebt wil ik je best mijn script sturen!

Edit: autocorrect fouten van telefoon gecorrigeerd
Script is altijd welkom, ik kan in domoticz ook python gebruiken.

"Death smiles at us all, all a man can do is smile back." - Maximus Decimus Meridius


  • Bockelaar
  • Registratie: juli 2001
  • Laatst online: 19:10
dat script wil ik ook wel :)

Remember: A CRAY is the only computer that runs an endless loop in just 4 hours...


  • wouser
  • Registratie: oktober 2014
  • Laatst online: 04-10 09:49
@gielie en @Bockelaar

Excuus Gielie voor deze late reactie, had hem eerder blijkbaar gemist.. ..

Hieronder mijn script met een paar simpele functies. Deze kan ik dan in homeassistent eenvoudigen 'callen'door bijvoorbeeld:
NB Ben geen programmeur; dit is slechts hobby werk dus waarschijnlijk is het een vrij lelijk script maar het functioneert :)

shell_command:
denonuit: 'python /config/denon.py PW STANDBY'
denonaan: 'python /config/denon.py PW ON'
denonvolume: 'python /config/denon.py MV {{ states.input_number.versterker.state | int }}'
denoninput: 'python /config/denon.py SI {{ states.input_select.versterker_input.state }}'
denonspotify: 'python /config/denon.py SI HEOS'

Ik heb een excel sheet met alle mogelijke commandos van de 2400H; Deze is gewoon van de site maar mocht iemand interesse hebben stuur even een PM; kan deze volgens mij niet als bijlage toevoegen namelijk?

Script in python:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/usr/bin/python
import socket
import sys
import os
from time import sleep

host = '192.168.1.129'
port = 23

def checkaan():
        status = signaal('PW?')
        if str(status) == "PWSTANDBY\r":
                signaal('PWON')
def uit():
        status = signaal('PW?')
        if str(status) != "PWSTANDBY\r":
                signaal('PWSTANDBY')

def signaal(input):
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.settimeout(1)
        try:
                s.connect((host,port))
                s.send(bytearray(input  + '\r', 'ascii'))
                ant = s.recv(135)
                s.close()
                sleep(0.06)
                return ant
        except socket.error as e:
                return
do = str(sys.argv[1]) + str(sys.argv[2])

if str(sys.argv[1]) == "SI":
        checkaan()
        if str(sys.argv[2])=="Plex":
                do=str(sys.argv[1]) + "MPLAY"
        elif str(sys.argv[2]) == "Chromecast":
                do=str(sys.argv[1]) + "SAT/CBL"
        elif str(sys.argv[2]) == "Spotify":
                do=str(sys.argv[1]) + "AUX1"
        elif str(sys.argv[2]) == "HEOS":
                signaal("MV35")
                do=str(sys.argv[1]) + "NET"
        elif str(sys.argv[2]) == "Game":
                do =str(sys.argv[1]) + "GAME"

signaal(do)

wouser wijzigde deze reactie 03-10-2018 22:23 (21%)


  • peterpijpelink
  • Registratie: juni 2006
  • Laatst online: 20:49
werkt goed, bedankt! ik roep aan als script commando via Domoticz bij aanzetten van een groep (Denon aan/ tv aan etc, input naar xxx) :)

http://pvoutput.org/list.jsp?userid=22724 [Zonneboiler + 38 zonnepanelen, Warmtepomp 11.2 Ecodan + Daikin Ururu airco] Van gas los sinds 07-2019


Acties:
  • +1Henk 'm!

  • wouser
  • Registratie: oktober 2014
  • Laatst online: 04-10 09:49
@peterpijpelink Precies de manier waarop ik het ook gebruik :) In principe kan je het script makkelijk uitbreiden met andere commandos of complexere dingen mee laten doen maar ben zelf verder gegaan met Nodered om dat te doen en gebruik dit script eigenlijk als soort 'afstandsbediening' waarmee ik simpele enkelvoudige functies van de versterker kan aanroepen :)
Pagina: 1


Apple iPhone 11 Nintendo Switch Lite LG OLED C9 Google Pixel 4 FIFA 20 Samsung Galaxy S10 Sony PlayStation 5 Elektrisch rijden

'14 '15 '16 '17 2018

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2019 Hosting door True