Grafico da log KNX (in formato xml)

di il
8 risposte

Grafico da log KNX (in formato xml)

Buongiorno,
alle volte mi capita di mettere in monitoraggio un'installazione KNX e di ricavarne il log in formato xml.
Mi piacerebbe capire se c'è un software che mi consenta di creare un grafico filtrando tra vari indirizzi di gruppo al fine di rendere più comprensibile i valori numerici (che vanno contestualizzati).
Per ora ci perdo un sacco di tempo con excel (premetto che non sono capace di programmare o scrivere macro).
Un grafico tipo potrebbe essere composto da: temperatura esterna, temperatura di set point, temperatura della stanza, velocità ventilante, stato valvola (on, off), assorbimento pompa di calore... mi pare anche che già ci sia l'xml_scheme per legare i valori sol log e le variabili KNX

Qualcuno di voi ha qualche consiglio da darmi o potrebbe essere interessato a sviluppare tale funzionalità?

8 Risposte

  • Re: Grafico da log KNX (in formato xml)

    Ciao ,per caso hai i testi ebook per KNX basic course od advanced course, potrei essere interessato però devo capire quanto tempo e quali risorse sono necessarie per acquisire l'argomento e quindi sviluppare il software,magari prova a postare una parte dell'xml ,se ce li hai anche lo schema od il dtd
  • Re: Grafico da log KNX (in formato xml)

    Ciao, ti ringrazio per l'interesse.
    Una parte di log potrebbe essere:
    <CommunicationLog xmlns="http://knx.org/xml/telegrams/0">
    <RecordStart Timestamp="2016-07-20T09:29:02.2165599Z" Mode="LinkLayer" Host="PentiumQ" ConnectionName="XXX DDNS" ConnectionOptions="Tunneling, IPAddress=centrale.XXXXXX.com, IPPort=3671, UseNat=True" ConnectorType="KnxIpTunneling" />
    <Connection Timestamp="2016-07-20T09:29:02.2215607Z" State="Established" />

    <Telegram Timestamp="2016-07-20T09:29:04.1239258Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE0116A1129010080" />
    <Telegram Timestamp="2016-07-20T09:29:12.9232731Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE0116B3B05020080FF" />
    <Telegram Timestamp="2016-07-20T09:29:15.0135752Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE0116B09330300800D6E" />
    <Telegram Timestamp="2016-07-20T09:29:17.5609651Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE01168391502008040" />
    <Telegram Timestamp="2016-07-20T09:29:30.6338245Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE011651001010080" />
    <Telegram Timestamp="2016-07-20T09:29:30.6578307Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE011653A0602008000" />
    <Telegram Timestamp="2016-07-20T09:29:30.682832Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE011650866010080" />
    <Telegram Timestamp="2016-07-20T09:29:41.7338695Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE01167090B0300800D19" />
    <Telegram Timestamp="2016-07-20T09:29:47.2511806Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE0116608A1010081" />
    <Telegram Timestamp="2016-07-20T09:29:47.2871881Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE0116608A2010080" />
    <Telegram Timestamp="2016-07-20T09:29:47.3121848Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE0116608A3010080" />
    <Telegram Timestamp="2016-07-20T09:29:47.4192046Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE01166103D010080" />
    <Telegram Timestamp="2016-07-20T09:29:47.4417164Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE011663A0702008000" />
    <Telegram Timestamp="2016-07-20T09:29:47.4722268Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE011660840010080" />
    <Telegram Timestamp="2016-07-20T09:30:04.7481847Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE0116A3B04020080FF" />
    <Telegram Timestamp="2016-07-20T09:30:08.5172174Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE0FFFF09020300800DAA" />
    <Telegram Timestamp="2016-07-20T09:30:08.6732482Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE0116509030300800DAA" />
    <Telegram Timestamp="2016-07-20T09:30:15.6542539Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE0116B0898010080" />
    <Telegram Timestamp="2016-07-20T09:30:15.6882556Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE0116B1033010080" />
    <Telegram Timestamp="2016-07-20T09:30:15.7932754Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE0116B3A0502008000" />
    <Telegram Timestamp="2016-07-20T09:30:15.8142766Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE0116B0836010080" />
    <Telegram Timestamp="2016-07-20T09:30:48.4651336Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE0116809150300800D23" />
    <Telegram Timestamp="2016-07-20T09:30:48.5971493Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE01168087B010080" />
    <Telegram Timestamp="2016-07-20T09:31:04.9945782Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00BCE011F11133010000" />
    <Telegram Timestamp="2016-07-20T09:31:05.0756074Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE0116B1133010040" />
    <Telegram Timestamp="2016-07-20T09:31:19.2426616Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00BCE011F11133010081" />
    <Telegram Timestamp="2016-07-20T09:31:22.571156Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE011690883010080" />
    <Telegram Timestamp="2016-07-20T09:31:22.5951569Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE011690884010081" />
    <Telegram Timestamp="2016-07-20T09:31:22.6241586Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE01169101F010081" />
    <Telegram Timestamp="2016-07-20T09:31:22.6506693Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE011693B0302008000" />
    <Telegram Timestamp="2016-07-20T09:31:22.7972003Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE0116909210300800D14" />
    <Telegram Timestamp="2016-07-20T09:31:23.5863183Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE01169391F02008000" />
    <Telegram Timestamp="2016-07-20T09:31:38.8775246Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00BCE011F11133010000" />
    <Telegram Timestamp="2016-07-20T09:31:38.9335272Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE0116B1133010040" />
    <Telegram Timestamp="2016-07-20T09:31:47.2637476Z" Service="L_Data.ind" FrameFormat="CommonEmi" RawData="2900BCE01166093D0300800D19" />
    <Telegram Timestamp="2016-07-20T09:32:05.1273835Z" Service="L_Data.con" FrameFormat="CommonEmi" RawData="2E00BCE011F11133010081" />

    Dopo il salto iniziano le vere e proprie righe del log.
    Per il DTD ed eventuali guide vedo cosa riesco a recuperare, poi ti faccio sapere.
    Ti allego anche uno screenshot di quanto si ottiene dalla vista in linea mediante ETS (programma che si usa per programmare gli impianti KNX).
    Allegati:
    vista controllo in linea da ETS
    vista controllo in linea da ETS
  • Re: Grafico da log KNX (in formato xml)

    Ciao ,i rawdata sono dati grezzi di cui è sconosciuta la struttura se non dall'applicazione che li ha generati,se però ho ben capito i file che carichi in excel e di cui potrebbe essere utile la visualizzazione su un grafico sono altri ,prova a postarli ...
  • Re: Grafico da log KNX (in formato xml)

    Ciao, in effetti è possibile esportare anche in .csv, nelle righe a seguire (sono sempre le medesime dell'xml) ti riporto tale esportazione.
    Tieni conto che alcuni dati sono presenti solo se hai a disposizione anche la programmazione. i vari DTP (Data Point Type) fanno parte del protocollo KNX (es. 1.001 = on off; 9.001 = temperature...) e se serve ti posso fornire tale documentazione al riguardo.

    #,Ora,Servizio,Flags ,Prio,Indirizzo Sorgente,Nome Sorgente,Indirizzo Destinazione,Nome Destinatario,Rout,Tipo,DPT,Info
    1,"20/07/2016 11:29:02,216",Start,,,,,,,,,,"Registrazione avviata, Host=PentiumQ, Connection=XXX DDNS, Mode=Livello Collegamento"
    2,"20/07/2016 11:29:02,221",Evento connessione,,,,,,,,,,Connessione stabilita
    3,"20/07/2016 11:29:04,123",dal bus,,Low,1.1.106,RDG160KN Room Thermostat,2/1/41,Camera 4 - Stato Finestra,6,GroupValueWrite, 1.001 switch,$00 | Off
    4,"20/07/2016 11:29:12,923",dal bus,,Low,1.1.107,RDG160KN Room Thermostat,7/3/5,Sala Colazioni - stato valvola raff,6,GroupValueWrite, 5.001 percentage (0..100%),$FF | 100 %
    5,"20/07/2016 11:29:15,013",dal bus,,Low,1.1.107,RDG160KN Room Thermostat,1/1/51,Sala Colazioni - FB Room Temperature,6,GroupValueWrite, 9.001 temperature (°C),"0D 6E | 27,8 °C"
    6,"20/07/2016 11:29:17,560",dal bus,,Low,1.1.104,RDG160KN Room Thermostat,7/1/21,Camera 2 - Fan Coil Output,6,GroupValueWrite, 5.001 percentage (0..100%),$40 | 25 %
    7,"20/07/2016 11:29:30,633",dal bus,,Low,1.1.101,RDG100KN Room Thermostat,2/0/1,Reception 101 - Attivazione,6,GroupValueWrite, 1.001 switch,$00 | Off
    8,"20/07/2016 11:29:30,657",dal bus,,Low,1.1.101,RDG100KN Room Thermostat,7/2/6,Reception 101 - stato valvola risc,6,GroupValueWrite, 5.001 percentage (0..100%),$00 | 0 %
    9,"20/07/2016 11:29:30,682",dal bus,,Low,1.1.101,RDG100KN Room Thermostat,1/0/102,Reception 101 - FB - Preselection Economy,6,GroupValueWrite, 1.003 enable,$00 | Disabilita
    10,"20/07/2016 11:29:41,733",dal bus,,Low,1.1.103,RDG160KN Room Thermostat,1/1/11,Camera 1 - FB Room Temperature,6,GroupValueWrite, 9.001 temperature (°C),"0D 19 | 26,1 °C"
    11,"20/07/2016 11:29:47,251",dal bus,,Low,1.1.102,RDG100KN Room Thermostat,1/0/161,Reception 102 - FB - Preselection Comfort,6,GroupValueWrite, 1.003 enable,$01 | Abilitato
    12,"20/07/2016 11:29:47,287",dal bus,,Low,1.1.102,RDG100KN Room Thermostat,1/0/162,Reception 102 - FB - Preselection Economy,6,GroupValueWrite, 1.003 enable,$00 | Disabilita
    13,"20/07/2016 11:29:47,312",dal bus,,Low,1.1.102,RDG100KN Room Thermostat,1/0/163,Reception 102 - FB - Preselection Protection,6,GroupValueWrite, 1.003 enable,$00 | Disabilita
    14,"20/07/2016 11:29:47,419",dal bus,,Low,1.1.102,RDG100KN Room Thermostat,2/0/61,Reception 102 - Attivazione,6,GroupValueWrite, 1.001 switch,$00 | Off
    15,"20/07/2016 11:29:47,441",dal bus,,Low,1.1.102,RDG100KN Room Thermostat,7/2/7,Reception 102 - stato valvola risc,6,GroupValueWrite, 5.001 percentage (0..100%),$00 | 0 %
    16,"20/07/2016 11:29:47,472",dal bus,,Low,1.1.102,RDG100KN Room Thermostat,1/0/64,Reception 102 - Fan Operative,6,GroupValueWrite, 1.003 enable,$00 | Disabilita
    17,"20/07/2016 11:30:04,748",dal bus,,Low,1.1.106,RDG160KN Room Thermostat,7/3/4,Camera 4 - stato valvola raff,6,GroupValueWrite, 5.001 percentage (0..100%),$FF | 100 %
    18,"20/07/2016 11:30:08,517",dal bus,,Low,15.15.255,-,1/1/2,Reception 101 - Comfort Basic Set Point,6,GroupValueWrite, 9.001 temperature (°C),0D AA | 29 °C
    19,"20/07/2016 11:30:08,673",dal bus,,Low,1.1.101,RDG100KN Room Thermostat,1/1/3,Reception 101 - FB Current Set Point,6,GroupValueWrite, 9.001 temperature (°C),0D AA | 29 °C
    20,"20/07/2016 11:30:15,654",dal bus,,Low,1.1.107,RDG160KN Room Thermostat,1/0/152,Sala Colazioni - FB - Preselection Economy,6,GroupValueWrite, 1.003 enable,$00 | Disabilita
    21,"20/07/2016 11:30:15,688",dal bus,,Low,1.1.107,RDG160KN Room Thermostat,2/0/51,Sala Colazioni - Attivazione,6,GroupValueWrite, 1.001 switch,$00 | Off
    22,"20/07/2016 11:30:15,793",dal bus,,Low,1.1.107,RDG160KN Room Thermostat,7/2/5,Sala Colazioni - stato valvola risc,6,GroupValueWrite, 5.001 percentage (0..100%),$00 | 0 %
    23,"20/07/2016 11:30:15,814",dal bus,,Low,1.1.107,RDG160KN Room Thermostat,1/0/54,Sala Colazioni - Fan Operative,6,GroupValueWrite, 1.003 enable,$00 | Disabilita
    24,"20/07/2016 11:30:48,465",dal bus,,Low,1.1.104,RDG160KN Room Thermostat,1/1/21,Camera 2 - FB Room Temperature,6,GroupValueWrite, 9.001 temperature (°C),"0D 23 | 26,3 °C"
    25,"20/07/2016 11:30:48,597",dal bus,,Low,1.1.104,RDG160KN Room Thermostat,1/0/123,Camera 2 - FB - Preselection Protection,6,GroupValueWrite, 1.003 enable,$00 | Disabilita
    26,"20/07/2016 11:31:04,994",al bus,,Low,1.1.241,IPS/S2.1 IP Interface,2/1/51,Sala Colazioni - Stato Finestra,6,GroupValueRead,,$00
    27,"20/07/2016 11:31:05,075",dal bus,,Low,1.1.107,RDG160KN Room Thermostat,2/1/51,Sala Colazioni - Stato Finestra,6,GroupValueResponse, 1.001 switch,$00 | Off
    28,"20/07/2016 11:31:19,242",al bus,,Low,1.1.241,IPS/S2.1 IP Interface,2/1/51,Sala Colazioni - Stato Finestra,6,GroupValueWrite, 1.001 switch,$01 | On
    29,"20/07/2016 11:31:22,571",dal bus,,Low,1.1.105,RDG160KN Room Thermostat,1/0/131,Camera 3 - FB - Preselection Comfort,6,GroupValueWrite, 1.003 enable,$00 | Disabilita
    30,"20/07/2016 11:31:22,595",dal bus,,Low,1.1.105,RDG160KN Room Thermostat,1/0/132,Camera 3 - FB - Preselection Economy,6,GroupValueWrite, 1.003 enable,$01 | Abilitato
    31,"20/07/2016 11:31:22,624",dal bus,,Low,1.1.105,RDG160KN Room Thermostat,2/0/31,Camera 3 - Cliente IN,6,GroupValueWrite, 1.001 switch,$01 | On
    32,"20/07/2016 11:31:22,650",dal bus,,Low,1.1.105,RDG160KN Room Thermostat,7/3/3,Camera 3 - stato valvola raff,6,GroupValueWrite, 5.001 percentage (0..100%),$00 | 0 %
    33,"20/07/2016 11:31:22,797",dal bus,,Low,1.1.105,RDG160KN Room Thermostat,1/1/33,Camera 3 - FB Current Set Point,6,GroupValueWrite, 9.001 temperature (°C),0D 14 | 26 °C
    34,"20/07/2016 11:31:23,586",dal bus,,Low,1.1.105,RDG160KN Room Thermostat,7/1/31,Camera 3 - Fan Coil Output,6,GroupValueWrite, 5.001 percentage (0..100%),$00 | 0 %
    35,"20/07/2016 11:31:38,877",al bus,,Low,1.1.241,IPS/S2.1 IP Interface,2/1/51,Sala Colazioni - Stato Finestra,6,GroupValueRead,,$00
    36,"20/07/2016 11:31:38,933",dal bus,,Low,1.1.107,RDG160KN Room Thermostat,2/1/51,Sala Colazioni - Stato Finestra,6,GroupValueResponse, 1.001 switch,$00 | Off
    37,"20/07/2016 11:31:47,263",dal bus,,Low,1.1.102,RDG100KN Room Thermostat,1/1/61,Reception 102 - FB Room Temperature,6,GroupValueWrite, 9.001 temperature (°C),"0D 19 | 26,1 °C"
    38,"20/07/2016 11:32:05,127",al bus,,Low,1.1.241,IPS/S2.1 IP Interface,2/1/51,Sala Colazioni - Stato Finestra,6,GroupValueWrite, 1.001 switch,$01 | On

    Per fare i grafici parto dal csv, lo edito per "isolarmi il valore dopo il simbolo | e lo importo in excel.
    Dal file così importato mi ricavo data, ora, e valore, poi faccio il grafico aggiungendo le scale di riferimento ed il valore della funzione (es. FB Current Set Point).
    Capisci che è un sistema molto macchinoso che non mi consente di poter aggiungere facilmente altre info o magari aggiungere righe di log.
    Onestamente non so nemmeno se Excel sia lo strumento più adatto allo scopo.
  • Re: Grafico da log KNX (in formato xml)

    Ciao ,vorrei chiederti il significato di alcuni campi: Rout,Tipo,DPT(a cui già mi accennavi),Info

    il "valore" che recuperi a quale "colonna" corrisponde?
  • Re: Grafico da log KNX (in formato xml)

    Ciao, allora:
    - Rout è il numero di passaggi che compie il telegramma a partire dalla sorgente (es. dispositivo) fino al (o ai) riceventi, al massimo mi pare possano essere 6 passaggi, ma non è un dato significativo (fa sempre parte del protocollo KNX)
    - Tipo identifica se il telegramma è di lettura, scrittura o risposta
    - DPT in KNX sono definiti vari tipi di dato anche in funzione della lunghezza dell'informazione da trasmettere es 1 bit può solo essere 0-1 ma a seconda del DPT lo si può più correttamente interpretare come vero-falso on-off enable-disable (trovi tutti i DPT al link w w w .knx.org/fileadmin/template/documents/downloads_support_menu/KNX_tutor_seminar_page/Advanced_documentation/05_Interworking_E1209.pdf)
    Il valore che identifico è posto dopo il simbolo | e si trova nell'ultima colonna
    ti aggiungo l'immagine del csv importato senza "manipolazioni" (nome sorgente ed indirizzo destinazione vanno importati come testo) e ti do qualche altra info:
    - Nome sorgente è il dispositivo che origina il telegramma (termostato, attuatore, PC...) [indirizzo fisico del dispositivo]
    - Indirizzo destinazione è importante in quanto rappresenta la funzione, in KNX viene detto oggetto di gruppo [è un indirizzo logico]
    - nome destinatario è il nome (mnemonico) associato a quella funzione e corrisponde all'indirizzo di gruppo = nome destinazione

    diciamo che per ogni curva che si vuole ottenere i valori necessari sono:
    - data e ora per metterli in scala cronologica
    - indirizzo destinazione (o nome destinatario) per nominare la curva
    - valore che si estrae dal campo info
    Allegati:
    import csv grezzo su excel
    import csv grezzo su excel
  • Re: Grafico da log KNX (in formato xml)

    Ciao grazie delle indicazioni ma non mi sembra corretto lavorare a gratis ed il compenso eventuale per un progetto così piccolo non può essere allettante
  • Re: Grafico da log KNX (in formato xml)

    Ok grazie comunque per la disponibilità.
    La richiesta rimane valida per tutti gli altri a cui potrebbe interessare.
Devi accedere o registrarti per scrivere nel forum
8 risposte