Implementazione client NodeJS

Oltre alle piattaforme cosiderate comuni, in questa sezione si discute sullo sviluppo di interfaccie per altri sistemi.
Rispondi
MB_T
Messaggi: 3
Iscritto il: 28/02/2013, 23:38
Che utente sei?: Utente finale - Uso la domotica

Implementazione client NodeJS

Messaggio da MB_T » 01/03/2013, 0:01

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

MB_trento
Messaggi: 1
Iscritto il: 11/02/2013, 9:47
Che utente sei?: Sviluppatore software

Re: Implementazione client NodeJS

Messaggio da MB_trento » 18/03/2013, 11:26

Ho risolto il problema.
Si trattava di un errore nella codifica del pacchetto. Ora la centrale mi risponde :)

saluti

Nik_Egodom3
Messaggi: 31
Iscritto il: 14/10/2009, 14:51
Che utente sei?: Sviluppatore software

Re: Implementazione client NodeJS

Messaggio da Nik_Egodom3 » 18/03/2013, 15:15

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.

Rispondi

Torna a “Altri sistemi”