NAD Anbindung seriell

Begonnen von riker1, 14 November 2018, 12:26:49

Vorheriges Thema - Nächstes Thema

riker1

Hallo,

hat jemand zufällig einen NAD T receiver seriell angebunden?

Danke Thomas
FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

Wuppi68

Zitat von: riker1 am 14 November 2018, 12:26:49
Hallo,

hat jemand zufällig einen NAD T receiver seriell angebunden?

Danke Thomas
hier https://nadelectronics.com/software/ findest Du schon einmal wie es grundsätzlich geht :-)

vielleicht kannst Du ja ein anderes Audio Protokoll umstricken ;-)

oder den Umweg über die Harmony machen
Jetzt auf nem I3 und primär Homematic - kein Support für cfg Editierer

Support heißt nicht wenn die Frau zu Ihrem Mann sagt: Geh mal bitte zum Frauenarzt, ich habe Bauchschmerzen

riker1

Ja, danke super.
das habe mal reingeschaut ,

hat jemand ein beispiel für das Senden von seriallen Kommandos und konfigurieren der seriallen schnittstelle hierfür?

Da bin ich leider Laie.

Danke
FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

Gerold

Ich hatte mal für die serielle Anbindung meines NAD C368 Verstärker das Modul  75_LGTV_RS232.pm von Markus Bloch umgeschrieben.

Vermutlich kann man das als Basis für die Entwicklung eine Moduls für den NAD T Receiver verwenden.






riker1

 Ah super,
werde ich mal ausprobieren.

Danke
FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

riker1

Zitat von: Gerold am 14 November 2018, 15:36:03
Ich hatte mal für die serielle Anbindung meines NAD C368 Verstärker das Modul  75_LGTV_RS232.pm von Markus Bloch umgeschrieben.

Vermutlich kann man das als Basis für die Entwicklung eine Moduls für den NAD T Receiver verwenden.

Hallo Gerold,

wollte das jetzt mal probieren, geht aber blöd los......

relaod 75_NAD_RS232

liefert einen Fehler.

Can't locate Switch.pm in @INC (you may need to install the Switch module)

wie bekomme ich denn das Switch hierhin?

danke



FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

Gerold

vermutlich fehlt das Switch Perlmodul. Unter Debian kann es mit "apt-get install libswitch-perl" installiert werden.

CoolTux

Ich würde diese einzige switch case Anweisung gegen eine if elsif tauschen. Ist doch unsinnig wegen einer einzigen switch case ein ganzes Modul zu installieren.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

riker1

Zitat von: Gerold am 17 November 2018, 19:20:02
vermutlich fehlt das Switch Perlmodul. Unter Debian kann es mit "apt-get install libswitch-perl" installiert werden.

Hallo Gerold ,

danke, das hat nun geklappt. Modul kann geladen werden.



Bin leider kein Perl Experte und muss die Befehle umschreiben.

mein alter T773 kommuniziert etwas anders.

Eventuell kannst du mir einen Tipp geben, wo ich hier eingreifen muss:



Habe leider Probleme
-:generelle Kommunikation: wo muss ich da eingreifen, die hashs, verwirren mich:-)
- ein Kommando sie so aus für Power off:
   Datateil:   21 24 1
schicken muss ich : 1, 21, 21, 94, 64, 2, 213
- bzw Query Status Power wäre : Datenteil: 20 21  gesendert werden muss :1, 20, 21, 2, 214
-Responseverarbeitung: So sieht die Response aus:
Value Power Mode = Off
-: Checksum Berechnung: das bekomme ich wohl noch hin. Soll Datenteil invertiert sein: also checksum= commanddata+Data und dann als complement:


sub
NAD_RS232_GetStatus($;$)
{
    my ($hash, $local) = @_;
    #get power state
    DevIo_SimpleWrite($hash, "\r\n20 21\r\n", 0);   
    #get Mute state
    DevIo_SimpleWrite($hash, "\r\n20 24\r\n", 0); 


im $hash muss wohl die 1 stehen
hier muss ich noch 2 und die checksum anhängen


Wo müsste ich da eingreifen?

Sorry für die Anfängerfrage. Bin hier gleich zu tief im perl für mein Vermögen....



Vielen Dank für Tips.
LG Thomas


Data Format
All commands sent to the device and responses sent back have the following basic format:
<start>
Command
Data
<checksum>
8-bit Checksum
Note: The items denoted with "<" and ">" are control characters. The format of the control characters and
how to send the data is discussed later in this section.
<start> 1 byte control character which starts every packet of data.
Command 1 byte command which represents the operation to be performed or the type of
response being returned.
Data Variable length data. The length of this field depends on the command. If the data
represents a multibyte number, it should be sent least significant byte first.
<checksum> 1 byte control character which denotes the end of the data stream and the beginning of
the checksum.
8-bit Checksum This checksum is the inverse sum of the Command and Data bytes of the packet. It is
used to verify the validity of the data packet.
Any data received which does not follow this format should be ignored.



Doku:
Command Set
The command set is documented in several tables in a separate document. It describes what all the
commands are and which products support which commands.
Additions to the command set will be done on an ongoing basis as new functions are needed for new
products.
Example 1
This example will describe exactly what is sent when the Identification of the unit is Queried. This is done
by sending the Query Function command which is command 20. Since it is the Identification that is being
queried, the data value 20 is sent with the command.
The above is done by sending the following byte sequence:
<start>
1
Command
20
Data
20
<checksum>
2
Checksum
215
If the identification string of the unit was "T772" then the response to the above command would be:
<start>
1
Command
20
Data
20,84,55,55,50
<checksum>
2
Checksum
227
Example 2
This example will describe how to set the volume to a level of 3 dB. This is done by sending the Set
Function command which is command 21. The data sent would be the value 23 to set the volume, followed
by 3 which is the value for the volume. Note that since the value 3 is a reserved value for a control
character, it must be encoded.
The above is done by sending the following byte sequence:
<start>
1
Command
21
Data
23, 94, 67
<checksum>
2
Checksum
208
If the volume is successfully set to +3 dB, then the response sent back would be:
<start>
1
Command
20
Data
23, 94, 67
<checksum>
2
Checksum
209
In the above e
FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

Gerold

Hallo Thomas,

zunächst den Link zum Originalprogramm von Markus Bloch, damit kannst Du vergleichen, welche Änderungen ich vorgenommen habe.
https://github.com/mhop/fhem-mirror/blob/master/fhem/contrib/75_LGTV_RS232.pm

Von Perl habe ich auch keine Ahnung, macht aber nichts.

Die DevIo ist im FHEM Wiki dokumentiert, dort sind auch die Funktionen wie DevIo_SimpleWrite() beschrieben.

Der Schnittstellenparameter wird bei der Devicedefinition in FHEM mitgegeben (i.d.R. /dev/ttyUSB0). Man kann auch noch die Baudrate dranhängen,
in diesem Fall wird der Wert in Programm in Zeile 185 überschrieben.

Das Ändern von Parametern in der NAD erfolgt im Programm in Zeile 230, das NAD-Kommando wird in die Variable $NAD_RS232_set{$what}{$a[2]}
abgelegt, $hash wird hier nicht geändert. Ob Du auch die <CR><LF> am Beginn und Ende benötigst steht sicher in der NAD Doku.

Ich hatte vor Beginn der Programmierung die NAD an mein Laptop gehängt und die Kommunikation mit einem Terminalprogramm getestet. Man sieht
dann sehr schnell, ob das Kabel passt, die Baudrate stimmt, die Kommandos richtig eingegeben werden und wie die Response der NAD aussieht.
In $NAD_RS232_set{$what}{$a[2]} habe ich die Kommandos so abgelegt, wie ich sie auch im Terminal eingegeben habe.

Die Response wird zunächst in NAD_RS232_READ bearbeitet. Da die Daten meist häppchenweise eintrudeln, werden sie zunächst gepuffert bis sie
den regexp in Zeile 256 matchen. Den regexp wirst Du auf jeden Fall ändern müssen und auch die Weiterverarbeitung der Daten in ParseResponse
muss vermutlich an die Response deiner NAD angepasst werden.

Der regexp hat mich übrigens die meiste Zeit gekostet, da ich von den regexp auch keine Ahnung habe. Zum Glück gibts im Netz genügend
regexp Tester, die einem weiterhelfen.

Ich hoffe, die Infos helfen Dir ein wenig weiter.

riker1

super Vielen Dank.

werde ich mal ran müssen.
FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox

riker1

Zitat von: Gerold am 18 November 2018, 17:26:58
Hallo Thomas,

Ich hatte vor Beginn der Programmierung die NAD an mein Laptop gehängt und die Kommunikation mit einem Terminalprogramm getestet. Man sieht
dann sehr schnell, ob das Kabel passt, die Baudrate stimmt, die Kommandos richtig eingegeben werden und wie die Response der NAD aussieht.
In $NAD_RS232_set{$what}{$a[2]} habe ich die Kommandos so abgelegt, wie ich sie auch im Terminal eingegeben habe.


Hi
ich müsste hier nochmal drauf zurückkommen.
Ich habe unter linux und auch unter windows das problem die Schnittstelle abzuhören....wie kann ich denn die daten senden und sehen? Welches Tool hast du da benutzt? habe es mit hyerterminal und gtkerm versucht, komme aber nicht so richtig ran.
auch wenn ich

echo -e "1 20 20 2 215"  > /dev/ttyS0

mache, sehe ich keine Antwort mit
cat < /dev/ttyS0

habe schon einiges gegoogelt, aber irgendwie werde ich da nicht richtig schlau.

mit dem NAD testool, geht es ja, aber da sieht man nicht die Daten richtig....

screen /dev/ttyS0 9600  , da kommt ein leerer Screen, kann aber nichts eingeben.

Wo mache ich denn die Fehler?

Danke Thomas
FHEM    5.26.1 Ubuntu 18, FHEM    5.26.1 RPI 3 , Actoren: IT ,Tasmota, ESPEasy,
MAX CUBE, MAX HT, MAX WT, Selbstbau nanoCULs, FS 20,Tasmota, Homematic, FTK, SW. DIM, Smoke,KODI,Squeezebox