Pagina 1 di 1

Implementazione client NodeJS

Inviato: 01/03/2013, 0:01
da MB_T
Buona sera,
ho preso visione del protocollo EgoClient e degli esempi in Delphi con le procedure di lettura/scrittura via socket. Ho intenzione di sviluppare un client in linguaggio nodeJs (http://www.nodejs.org). Per ora lo scopo è principalmente quello di monitorare il comportamento dell'impianto, cioè ascoltare gli eventi che la centrale riceve sul bus (es. valore di consumo instantaneo, temperatura, etc).

Attualmente non sono ancora in grado di comunicare con la centrale, e non ho modo di capire l'origine dell'errore.
Di seguito posto i dettagli del problema, in modo che voi o qualche utente che ha già implementato le specifiche EgoClient in java o altri linguaggi, possa aiutarmi ad risolvere il problema.

Ecco di seguito la situazione:
- ambiente windows7 e windowsXP
- firewall disabilitati
- lato server (centrale), il socket sembra in ascolto, infatti stabilisco la connessione sulla porta 215
- anche il keydome si connette, e mi chiede di inserire n caratteri del Codice di Accesso. Inserendo però il codice, la finestra principale va a tutto schermo, ma non mostra nient altro (eccetto versione, ora, e lo scorrere della scritta "ON-LINE")

- nel mio codice, qualsiasi stream di byte invii via socket, la centrale non ritorna alcuna risposta (nemmeno di errore)
- stando al protocollo, il pacchetto per la prima richiesta (comando 9000 senza altri parametri) dovrebbe essere il seguente: ( 35, 75, 0, 0, 16, 0, 0, 239, 0, 0, 0, 0, 0, 0, 0, 0 );
cioè
35,75 = 9000 (comando di richiesta accesso)
16 = dimensione pacchetto
239 = XOR della dimensione pacchetto

-convertito in hex diventa ( 0x23, 0x4b, 0x0, 0x0, 0x10, 0x0, 0x0, 0xef, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0), questo dovrebbe essere il buffer di byte da inviare sul socket.

Come accennato, spedisco il pacchetto, e non ricevo nessuna risposta. Provando anche con altri esempi, il comportamento è il medesimo. Il fatto che anche il keydome non sembra funzionare a pieno mi fa sospettare ci sia qualche blocco lato centrale, ma almeno sul keydome la richiesta del Codice di Accesso e la relativa risposta avvengono correttamente. Come primo step, vorrei arrivare a replicare almeno questa situazione.

grazie dell'aiuto

Re: Implementazione client NodeJS

Inviato: 18/03/2013, 11:26
da MB_trento
Ho risolto il problema.
Si trattava di un errore nella codifica del pacchetto. Ora la centrale mi risponde :)

saluti

Re: Implementazione client NodeJS

Inviato: 18/03/2013, 15:15
da Nik_Egodom3
Ciao,
in effetti la codifica che avevi postato non era corretta.
il pacchetto per la prima richiesta (comando 9000 senza altri parametri) dovrebbe essere il seguente: ( 35, 75, 0, 0, 16, 0, 0, 239, 0, 0, 0, 0, 0, 0, 0, 0 );
cioè
35,75 = 9000 (comando di richiesta accesso)
16 = dimensione pacchetto
239 = XOR della dimensione pacchetto
Il pacchetto per il codice 9000 è: ( 35, 40, 0, 0, 16, 0, 0, 239, 0, 0, 0, 0, 0, 0, 0, 0 )

Riguardo KeyDome, il progetto è un esempio di come si può sviluppare un applicativo che comunichi con il protocollo EgoClient. Di fatto, lo sviluppo della Centrale è proseguito, e la procedura di visualizzazione dei pulsanti su KeyDome non passa alcune verifiche a codice, cosa che lascia invisibili i pulsanti. Ti è quindi sufficiente modificare quella procedura (ad esempio lasciando sempre visibili i pulsanti) e ricompilare per averli a disposizione.