Página 2 de 2 PrimerPrimer 12
Resultados 26 al 31 de 31
  1. #26
    Avatar de Tejota
    Tejota está desconectado Forero
    Fecha de ingreso
    ago 2015
    Ubicación
    Inmortal Ciudad de Zaragoza
    Mensajes
    3.411

    Predeterminado Re: [NODERED] Connection with Axperts per RJ45 serial port (PCM60X and the rest)

    Cita Iniciado por TjObie Ver mensaje
    The flow

    Código HTML:
    [{"id":"38c7c06f.91bde","type":"tab","label":"Pylon Connection","disabled":false,"info":""},{"id":"ef1c7c5b.d906","type":"comment","z":"38c7c06f.91bde","name":"RS232-USB PL2303 or FTDI Conversor transparente (NO TTL)","info":"","x":470,"y":60,"wires":[]},{"id":"4905e6b9.67a498","type":"debug","z":"38c7c06f.91bde","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":770,"y":100,"wires":[]},{"id":"be30c92d.24a888","type":"serial request","z":"38c7c06f.91bde","name":"Get Pylon Batteries","serial":"a4822951.b73cc8","x":570,"y":120,"wires":[["4905e6b9.67a498"]]},{"id":"d35c1d3f.4263","type":"inject","z":"38c7c06f.91bde","name":"Pylon INFO","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"Get the Pylon values INFO","payload":"\"info\\n\"","payloadType":"jsonata","x":170,"y":200,"wires":[["2e3e8822.35bb68"]]},{"id":"1f93bd3e.c85453","type":"inject","z":"38c7c06f.91bde","name":"Pylon PWR","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"Get the Pylon values PWR","payload":"\"pwr\\n\"","payloadType":"jsonata","x":170,"y":240,"wires":[["2e3e8822.35bb68"]]},{"id":"a283d8aa.8cf0c8","type":"inject","z":"38c7c06f.91bde","name":"Pylon PWRSYS","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"Get the Pylon values PWRSYS","payload":"\"pwrsys\\n\"","payloadType":"jsonata","x":180,"y":280,"wires":[["2e3e8822.35bb68"]]},{"id":"2e3e8822.35bb68","type":"link out","z":"38c7c06f.91bde","name":"SendToSerialConverter","links":["ad93eb1f.0e10d8"],"x":365,"y":200,"wires":[]},{"id":"ad93eb1f.0e10d8","type":"link in","z":"38c7c06f.91bde","name":"GetBatteryData","links":["2e3e8822.35bb68"],"x":395,"y":120,"wires":[["be30c92d.24a888"]]},{"id":"28f3fa92.87e8b6","type":"inject","z":"38c7c06f.91bde","name":"Pylon SOCD","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"Get the Pylon values SOCD","payload":"\"socd\\n\"","payloadType":"jsonata","x":170,"y":320,"wires":[["2e3e8822.35bb68"]]},{"id":"9a904c9a.d0ada","type":"inject","z":"38c7c06f.91bde","name":"Pylon SOCD","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"Get the Pylon values SOH","payload":"\"soh\\n\"","payloadType":"jsonata","x":170,"y":360,"wires":[["2e3e8822.35bb68"]]},{"id":"a4822951.b73cc8","type":"serial-port","serialport":"/dev/ttyUSB1","serialbaud":"115200","databits":"8","parity":"none","stopbits":"1","waitfor":"","dtr":"none","rts":"none","cts":"none","dsr":"none","newline":"\\n","bin":"false","out":"char","addchar":"","responsetimeout":"2000"}]
    Follow on this trhead: https://www.solarweb.net/forosolar/f...tml#post412259
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  2. #27
    TjObie está desconectado Forero Junior
    Fecha de ingreso
    feb 2021
    Ubicación
    Seafield, South Africa
    Mensajes
    10

    Predeterminado Re: [NODERED] Conexion con Axperts por puerto serie RJ45 (PCM60X y el resto)

    Hi Tejota

    I have now finished my Node-Red Dash board to monitor the Axpert MAX and the Pylon Batteries.

    Do you have a thread somewhere that explains how you control the inverter ie update values on the inverter setting?

  3. #28
    gonzaandroid está desconectado Forero Junior
    Fecha de ingreso
    feb 2021
    Ubicación
    Agudo
    Mensajes
    4

    Predeterminado Re: [NODERED] Conexion con Axperts por puerto serie RJ45 (PCM60X y el resto)

    Hola muy buenas a todos. Me presento soy Gonzalo y e adquirido un Voltronic axpert vm3

    os comento mi problema haber si alguien me puede ayudar. Me e comprado un cable usb a rs 232 lo conecto a mi pc
    pero usando el wachpower no consigo conectar el inversor nunca leo nada. por bluetoot con la app si consigo conectarme.

    E instalado node red para intentar hacer lo que vosotros haceis pero ni aun asi recibo nada en la pantalla del puerto serie.
    [NODERED] Conexion con Axperts por puerto serie RJ45 (PCM60X y el resto)-captura1.png


    ¿alguien puede decirme que estoy haciendo mal?

    Cuando solucione eso seguire intentado y ya ir depurando datos del inversor pero poco a poco

    Gracias por la ayuda

  4. #29
    TjObie está desconectado Forero Junior
    Fecha de ingreso
    feb 2021
    Ubicación
    Seafield, South Africa
    Mensajes
    10

    Predeterminado Re: [NODERED] Connection with Axperts per RJ45 serial port (PCM60X and the rest)

    Hi Gonzalo

    Look at the post earlier on in this topic from Tejota message #10... you need to inject some data into the inverter for it to respond.
    Copy the nodered flow from this message #10 and use it to start your testing...

    [NODERED] Conexion con Axperts por puerto serie RJ45 (PCM60X y el resto)-22900d1594591100-nodered-conexion-axperts-puerto-serie-rj45-pcm60x-resto-voltronicmksporrj45node.jpg

    Código HTML:
    [{"id":"19564b21.32eff5","type":"tab","label":"Voltronic MKS por Serie","disabled":false,"info":""},{"id":"d4cfefe9.02213","type":"inject","z":"19564b21.32eff5","name":"QPIRI Configuracion","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"7","crontab":"","once":false,"onceDelay":0.1,"topic":"Configuracion","payload":"QPIRI","payloadType":"str","x":160,"y":700,"wires":[["cd3d2ac7.1d46a8"]]},{"id":"d9f62829.05de08","type":"inject","z":"19564b21.32eff5","name":"QFLAG Miscelanea","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"7","crontab":"","once":false,"onceDelay":0.1,"topic":"Miscelanea","payload":"QFLAG","payloadType":"str","x":160,"y":660,"wires":[["cd3d2ac7.1d46a8"]]},{"id":"2d7e0c41.621c44","type":"inject","z":"19564b21.32eff5","name":"QBEQI Ecualizacion Bateria","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"60","crontab":"","once":false,"onceDelay":0.1,"topic":"Ecualizacion Bateria","payload":"QBEQI","payloadType":"str","x":190,"y":740,"wires":[["cd3d2ac7.1d46a8"]]},{"id":"5ecd3155.2c11b","type":"inject","z":"19564b21.32eff5","name":"QPIWS Informacion Warnings","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"5","crontab":"","once":false,"onceDelay":0.1,"topic":"Informacion Warnings","payload":"QPIWS","payloadType":"str","x":190,"y":780,"wires":[["cd3d2ac7.1d46a8"]]},{"id":"61b5f624.ac2ff8","type":"inject","z":"19564b21.32eff5","name":"QPIGS Estado General","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"4","crontab":"","once":false,"onceDelay":0.1,"topic":"Estado General","payload":"QPIGS","payloadType":"str","x":170,"y":540,"wires":[["cd3d2ac7.1d46a8"]]},{"id":"61774ebc.bdb58","type":"inject","z":"19564b21.32eff5","name":"QID Numero de Serie","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"60","crontab":"","once":false,"onceDelay":0.1,"topic":"Numero de Serie","payload":"QID","payloadType":"str","x":160,"y":500,"wires":[["cd3d2ac7.1d46a8"]]},{"id":"f2b7cde4.f8323","type":"function","z":"19564b21.32eff5","name":"CRCTJ","func":"    //  Algoritmo para lanzar los comandos hacia Voltronics por puerto serie con CRC propietario\n    //  Algoritmo realizado por Tejota   [email protected]\n    var topic = (msg.payload) + (\" \") + (msg.topic); // Topic con el comando string y posible descripcion\n    var comandobuffer = Buffer.from(msg.payload);   // pasando a buffer el string del comando          \n    var crc = 0x0000;                              //  inicio del crc\n    for (tj = 0; tj < comandobuffer.length; tj++)    // scaneo del buffer\n            {\n        const byte = comandobuffer[tj];          // analizando el byte para aplicarle el crc16xmodem\n        tejota = (crc >>> 8) & 0xff;\n        tejota ^= byte & 0xff;\n        tejota ^= tejota >>> 4;\n        crc = (crc << 8) & 0xffff;            //  Algoritmo\n        crc ^= tejota;                       //  crc16 xmodem \n        tejota = (tejota << 5) & 0xffff;    //   sin tabla estatica\n        crc ^= tejota;\n        tejota = (tejota << 7) & 0xffff;\n        crc ^= tejota;\n            }                            // resultante crc numerico \n    var crchexastring = crc.toString(16).padStart(4,'0');  // crc numerico a string hexa añadiendo ceros a izquierda si es preciso\n    var crchexabuffer = Buffer.from(crchexastring, \"hex\"); // buffer del crchexa\n    for (mdk=0; mdk < crchexabuffer.length; mdk++)  // scaneo del buffer\n            {\n            if (crchexabuffer[mdk]==10 || crchexabuffer[mdk]==13 || crchexabuffer[mdk]==40)   // Exceptuando estos bytes mdk \n                    {\n                        crchexabuffer[mdk]++;  // se pone el byte siguiente si es alguno de las excepciones mdk\n                    }\n            }        \n    const retornodecarro = Buffer.from(\"\\r\");\n    var crctotalbuffer = [comandobuffer, crchexabuffer, retornodecarro];  // construyendo el buffer final hacia el hibrido\n    msg.payload = Buffer.concat(crctotalbuffer);\n    msg.topic = topic;\n    return msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":300,"y":160,"wires":[["7545bcea.c00be4"]]},{"id":"3e8e715b.5ee93e","type":"debug","z":"19564b21.32eff5","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1170,"y":580,"wires":[]},{"id":"458ab114.214cc","type":"inject","z":"19564b21.32eff5","name":"QVFW Firmware CPU1","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"60","crontab":"","once":false,"onceDelay":0.1,"topic":"Version CPU1","payload":"QVFW","payloadType":"str","x":170,"y":580,"wires":[["cd3d2ac7.1d46a8"]]},{"id":"ebc28d21.a11f6","type":"inject","z":"19564b21.32eff5","name":"QVFW2 Firmware CPU2","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"60","crontab":"","once":false,"onceDelay":0.1,"topic":"Firmware CPU2","payload":"QVFW2","payloadType":"str","x":170,"y":620,"wires":[["cd3d2ac7.1d46a8"]]},{"id":"cd3d2ac7.1d46a8","type":"link out","z":"19564b21.32eff5","name":"ParaCRCTJ","links":["319f8dab.b39e82"],"x":430,"y":660,"wires":[],"l":true},{"id":"29d04a1f.362d16","type":"comment","z":"19564b21.32eff5","name":"Comandos de monitorizacion","info":"Comandos de Monitorizacion","x":160,"y":460,"wires":[]},{"id":"319f8dab.b39e82","type":"link in","z":"19564b21.32eff5","name":"CRCTJWelcome","links":["cd3d2ac7.1d46a8"],"x":140,"y":160,"wires":[["f2b7cde4.f8323"]],"l":true},{"id":"37e0fc60.268e84","type":"link out","z":"19564b21.32eff5","name":"ParaExtractores","links":["9d52fd26.2692a"],"x":700,"y":160,"wires":[],"l":true},{"id":"3853f47d.20b97c","type":"switch","z":"19564b21.32eff5","name":"Repartidor Datos Lecturas","property":"topic","propertyType":"msg","rules":[{"t":"cont","v":"QID","vt":"str"},{"t":"cont","v":"QPIGS","vt":"str"},{"t":"cont","v":"CPU1","vt":"str"},{"t":"cont","v":"QVFW2","vt":"str"},{"t":"cont","v":"QFLAG","vt":"str"},{"t":"cont","v":"QPIRI","vt":"str"},{"t":"cont","v":"QBEQI","vt":"str"},{"t":"cont","v":"QPIWS","vt":"str"},{"t":"cont","v":"QMOD","vt":"str"}],"checkall":"true","repair":false,"outputs":9,"x":390,"y":360,"wires":[["7e3afdaa.d84a14"],["352dccd5.c07ce4"],["7fe9a5f8.3302dc"],["505dc93e.025028"],["2e34f984.dd4516"],["b11d5d54.57ada"],["fb4c23a9.f5653"],["5592a1b4.8fc35"],["dcec16ee.014fd8"]]},{"id":"9d52fd26.2692a","type":"link in","z":"19564b21.32eff5","name":"ExtractoresWelcome","links":["37e0fc60.268e84"],"x":150,"y":360,"wires":[["3853f47d.20b97c"]],"l":true},{"id":"7163cfa9.53c4d","type":"comment","z":"19564b21.32eff5","name":"Repartiendo por topic","info":"","x":380,"y":260,"wires":[]},{"id":"2e34f984.dd4516","type":"function","z":"19564b21.32eff5","name":"QFLAGExtraccion","func":"var output = msg.payload.substr(1, 11);\nvar E = output.indexOf(\"E\")+1;\nvar D = output.indexOf(\"D\");\nvar enables = output.substr(E, (D-E));\nvar disables = output.substr(D+1);\nswitch (enables.includes(\"a\")){\n    case true:\n        buzzer = 1;\n        break;\n    case false:    \n        buzzer = 0;\n}    \nswitch (enables.includes(\"b\")){\n    case true:\n        bypassoverload = 1;\n        break;\n    case false:\n        bypassoverload = 0;\n        break;\n} \nswitch (enables.includes(\"k\")){\n    case true:\n        guardapantallalcd = 1;\n        break;\n    case false:    \n        guardapantallalcd = 0;\n}    \nswitch (enables.includes(\"j\")){\n    case true:\n        powersaving = 1;\n        break;\n    case false:\n        powersaving = 0;\n        break;\n} \nswitch (enables.includes(\"u\")){\n    case true:\n        overloadrestart = 1;\n        break;\n    case false:    \n        overloadrestart = 0;\n}    \nswitch (enables.includes(\"v\")){\n    case true:\n        overtemperaturerestart = 1;\n        break;\n    case false:\n        overtemperaturerestart = 0;\n        break;\n}\nswitch (enables.includes(\"x\")){\n    case true:\n        luzlcd = 1;\n        break;\n    case false:\n        luzlcd = 0;\n        break;\n} \nswitch (enables.includes(\"y\")){\n    case true:\n        pitidosifuenteprimariafalla = 1;\n        break;\n    case false:\n        pitidosifuenteprimariafalla = 0;\n        break;\n} \nswitch (enables.includes(\"z\")){\n    case true:\n        grabarerrores = 1;\n        break;\n    case false:\n        grabarerrores = 0;\n        break;\n} \nreturn [\n    {\n        payload: {\n                buzzer: buzzer,\n                bypassoverload: bypassoverload,\n                guardapantallalcd: guardapantallalcd,\n                powersaving: powersaving,\n                overloadrestart: overloadrestart,\n                overtemperaturerestart: overtemperaturerestart,\n                luzlcd: luzlcd,\n                pitidosifuenteprimariafalla: pitidosifuenteprimariafalla,\n                grabarerrores: grabarerrores,\n                 }\n    }\n]\n","outputs":1,"noerr":0,"x":650,"y":420,"wires":[["2cb73b17.d23c34"]]},{"id":"352dccd5.c07ce4","type":"function","z":"19564b21.32eff5","name":"QPIGSExtraccion","func":"var output = msg.payload.split(\" \");\nlet voltajered = parseFloat(output[0].slice(1, 5));\nlet frecuenciared = parseFloat(output[1]);\nlet voltajesalida = parseFloat(output[2]);\nlet frecuenciasalida = parseFloat(output[3]);\nlet potenciaparentesalida = parseInt(output[4]);\nlet potenciaactivasalida = parseInt(output[5]);\nlet porcentajecargasalida = parseInt(output[6]);\nlet voltajebusalta = parseInt(output[7]);\nlet voltajebateria = parseFloat(output[8]);\nlet amperioscargabat = parseInt(output[9]);\nlet capacidadbateria = parseInt(output[10])\nlet temperaturainversor = parseInt(output[11]);\nlet amperiosenplaca = parseInt(output[12]);\nlet voltajeenplaca = parseInt(output[13]);\nlet voltajescc = parseFloat(output[14]);\nlet amperiosdescargabat = parseInt(output[15]);\nlet prioridadSBU = parseInt(output[16].slice(0,1));\nlet estadoconf = parseInt(output[16].slice(1,2));\nlet estadoscc = parseInt(output[16].slice(2,3));\nlet cargasconectadas = parseInt(output[16].slice(3,4));\nlet voltajeconstantemientrascarga = parseInt(output[16].slice(4,5));\nlet estadodecargageneral = parseInt(output[16].slice(5,6));\nlet estadodecargasolar = parseInt(output[16].slice(6,7));\nlet estadodecargared = parseInt(output[16].slice(7,9));\nlet potenciaenplaca = parseInt(output[19]);\nlet estadodelmppt = parseInt(output[20].slice(0,1));\nlet estadodelswitch = parseInt(output[20].slice(1,2));\n/*var numerodeserie = flow.get(numerodeserie);*/\nreturn [\n    {\n        payload: {\n                voltajered: voltajered,\n                frecuenciared: frecuenciared,\n                voltajesalida: voltajesalida,\n                frecuenciasalida: frecuenciasalida,\n                potenciaparentesalida: potenciaparentesalida,\n                potenciaactivasalida: potenciaactivasalida,\n                porcentajecargasalida: porcentajecargasalida,\n                voltajebateria: voltajebateria,\n                amperiosdescargabat: amperiosdescargabat,\n                amperioscargabat: amperioscargabat,\n                temperaturainversor: temperaturainversor,\n                potenciaenplaca: potenciaenplaca,\n                voltajeenplaca: voltajeenplaca,\n                estadodelmppt: estadodelmppt,\n                cargasconectadas: cargasconectadas,\n                voltajebusalta: voltajebusalta,\n                capacidadbateria: capacidadbateria,\n                amperiosenplaca: amperiosenplaca, \n                voltajescc: voltajescc,\n                prioridadSBU: prioridadSBU,\n                estadoconf: estadoconf,\n                estadoscc: estadoscc,\n                voltajeconstantemientrascarga: voltajeconstantemientrascarga,\n                estadodecargageneral: estadodecargageneral,\n                estadodecargasolar: estadodecargasolar,\n                estadodecargared: estadodecargared,\n                estadodelswitch: estadodelswitch\n                } ,\n/*        topic: {numerodeserie: numerodeserie}*/\n    }\n];","outputs":1,"noerr":0,"initialize":"","finalize":"","x":650,"y":300,"wires":[["2cb73b17.d23c34"]]},{"id":"b11d5d54.57ada","type":"function","z":"19564b21.32eff5","name":"QPIRIExtraccion","func":"var output = msg.payload.split(\" \");\nlet voltajeredconf = parseFloat((output[0].slice(1, 5)));\nlet amperiosredmaxconf = parseFloat(output[1]);\nlet voltajesalidaconf = parseFloat(output[2]);\nlet frecuenciasalidaconf = parseFloat(output[3]);\nlet amperiossalidaconf = parseFloat(output[4]);\nlet potenciaaparentesalidaconf = parseFloat(output[5]);\nlet potenciaactivasalidaconf = parseFloat(output[6]);\nlet voltajebateriaconf = parseInt(output[7]);\nlet voltajelimitedescargabatconf = parseFloat(output[8]);\nlet voltajelimiterecargabatconf = parseFloat(output[22]);\nlet voltajeminimoparacorteconf = parseFloat(output[9]);\nlet voltajeabsorcionconf = parseFloat(output[10]);\nlet voltajeflotacionconf = parseFloat(output[11]);\nlet tipodebateriaconf = parseInt(output[12]);\nlet amperiosmaxcargadorbatconf = parseInt(output[13]);\nlet amperiosmaxtotalesabatconf = parseInt(output[14]);\nlet rangovoltajedentradaconf = parseInt(output[15]);\nlet prioridadfuentesalidaconf = parseInt(output[16]);\nlet prioridadcargadorbatconf = parseInt(output[17]);\nlet maximonumeroparalelosconf = parseInt(output[18]);\nlet tipodemaquina = parseInt(output[19]);\nlet tipodehibridoconf = parseInt(output[20]);\nlet tipodesalidaparaleloconf = parseInt(output[21]);\nlet potenciasolarparaleloconf = parseInt(output[23]);\nlet potenciasolarbalanceconf = parseInt(output[24]);\nreturn [\n    {\n        payload: {\n                voltajeredconf: voltajeredconf,\n                amperiosredmaxconf: amperiosredmaxconf,\n                voltajesalidaconf: voltajesalidaconf,\n                frecuenciasalidaconf: frecuenciasalidaconf,\n                amperiossalidaconf: amperiossalidaconf,\n                potenciaaparentesalidaconf: potenciaaparentesalidaconf,\n                potenciaactivasalidaconf: potenciaactivasalidaconf,\n                voltajebateriaconf: voltajebateriaconf,\n                voltajelimiterecargabatconf: voltajelimiterecargabatconf,\n                voltajelimitedescargabatconf: voltajelimitedescargabatconf,\n                voltajeminimoparacorteconf: voltajeminimoparacorteconf,\n                voltajeabsorcionconf: voltajeabsorcionconf,\n                voltajeflotacionconf: voltajeflotacionconf,\n                tipodebateriaconf: tipodebateriaconf,\n                amperiosmaxcargadorbatconf: amperiosmaxcargadorbatconf,\n                amperiosmaxtotalesabatconf: amperiosmaxtotalesabatconf,\n                rangovoltajedentradaconf: rangovoltajedentradaconf,\n                prioridadfuentesalidaconf: prioridadfuentesalidaconf,\n                prioridadcargadorbatconf: prioridadcargadorbatconf,\n                maximonumeroparalelosconf: maximonumeroparalelosconf,\n                tipodemaquina: tipodemaquina,\n                tipodehibridoconf: tipodehibridoconf,\n                tipodesalidaparaleloconf: tipodesalidaparaleloconf,\n                potenciasolarparaleloconf: potenciasolarparaleloconf,\n                potenciasolarbalanceconf: potenciasolarbalanceconf\n                }\n    }\n]","outputs":1,"noerr":0,"x":640,"y":460,"wires":[["2cb73b17.d23c34"]]},{"id":"7fe9a5f8.3302dc","type":"function","z":"19564b21.32eff5","name":"QVFW Extraccion U1","func":"var output = msg.payload;\nlet Firmware = (output.slice(10, 15));\nreturn [\n    {\n        payload: {\n                Firmware: Firmware\n                 }\n    }\n]","outputs":1,"noerr":0,"x":660,"y":340,"wires":[["2cb73b17.d23c34"]]},{"id":"505dc93e.025028","type":"function","z":"19564b21.32eff5","name":"QVFW2 Firmware U2","func":"var output = msg.payload;\nlet Firmware2 = (output.slice(11, 16));\nreturn [\n    {\n        payload: {\n                Firmware2: Firmware2\n                 }\n    }\n]","outputs":1,"noerr":0,"x":660,"y":380,"wires":[["2cb73b17.d23c34"]]},{"id":"fb4c23a9.f5653","type":"function","z":"19564b21.32eff5","name":"QBEQI Ecu Extrac","func":"var output = msg.payload.split(\" \");\nlet activacionecualizacion = parseInt(output[0].slice(1, 2));\nlet tiempoecualizacion = parseInt(output[1]);\nlet diasentreecualizaciones = parseInt(output[2]);\nlet maxamperiosparaecualizar = parseInt(output[3]);\nlet diasquefaltanparaecualizar = parseInt(output[4]);\nlet voltajedeecualizacion = parseFloat(output[5]);\nlet tiempodeabsorcion = parseInt(output[6]);\nlet timeoutecualizacion = parseInt(output[7]);\nreturn [\n    {\n        payload: {\n                activacionecualizacion: activacionecualizacion,\n                tiempoecualizacion: tiempoecualizacion,\n                diasentreecualizaciones: diasentreecualizaciones,\n                maxamperiosparaecualizar: maxamperiosparaecualizar,\n                diasquefaltanparaecualizar: diasquefaltanparaecualizar,\n                voltajedeecualizacion: voltajedeecualizacion,\n                tiempodeabsorcion: tiempodeabsorcion,\n                timeoutecualizacion: timeoutecualizacion\n                 }\n    }\n]","outputs":1,"noerr":0,"initialize":"","finalize":"","x":650,"y":500,"wires":[["2cb73b17.d23c34"]]},{"id":"7e3afdaa.d84a14","type":"function","z":"19564b21.32eff5","name":"QID Nº Serie Extrac","func":"var numerodeserie = msg.payload.slice(1, 15);\nflow.set('numerodeserie', numerodeserie);\nreturn [\n    {\n        payload: {\n                numerodeserie: numerodeserie\n                 }\n    }\n];\n// Numero de Serie va a flow o incluso podria ir a global para identificar en paralelos ","outputs":1,"noerr":0,"initialize":"","finalize":"","x":660,"y":260,"wires":[["2cb73b17.d23c34"]]},{"id":"f25ab0ee.65fde","type":"comment","z":"19564b21.32eff5","name":"Extractores","info":"","x":670,"y":220,"wires":[]},{"id":"5592a1b4.8fc35","type":"function","z":"19564b21.32eff5","name":"QPIWS Warnings Extrac","func":"var output = msg.payload;\nlet reservado = parseInt(output.slice(1, 2));\nlet falloinversor = parseInt(output.slice(2, 3));\nlet fallo08voltajebusalto = parseInt(output.slice(3, 4));\nlet fallo52voltajebusbajo = parseInt(output.slice(4, 5));\nlet fallo09softwarebus = parseInt(output.slice(5, 6));\nlet peligronoacinput = parseFloat(output.slice(6, 7));\nlet peligrocortopv = parseInt(output.slice(7, 8));\nlet fallo58voltajeinversorbajo = parseInt(output.slice(8, 9));\nlet fallo06voltajeinversoralto = parseInt(output.slice(9, 10));\nlet peligro02sobretemperatura = parseInt(output.slice(10, 11));\nlet peligro01ventilador = parseInt(output.slice(11, 12));\nlet peligro03altovoltajebateria = parseInt(output.slice(12, 13));\nlet peligro04bajovoltajebateria = parseInt(output.slice(13, 14));\nlet peligro07sobrecargar = parseInt(output.slice(14, 15));\nlet peligrobateriashutdown = parseInt(output.slice(15, 16));\nlet peligro10bateriaderating = parseInt(output.slice(16, 17));\nlet peligroeeprom = parseInt(output.slice(17, 18));\nlet fallo51sobrecorriente = parseInt(output.slice(18, 19));\nlet fallosoftwareinversor = parseInt(output.slice(19, 20));\nlet falloautotest = parseInt(output.slice(20, 21));\nlet fallo55continuaenac = parseInt(output.slice(21, 22));\nlet fallo56bateriaabierta = parseInt(output.slice(22, 23));\nlet fallo57sensorcorriente = parseInt(output.slice(23, 24));\nlet fallocortobateria = parseInt(output.slice(24, 25));\nlet peligrolimitepotencia = parseInt(output.slice(25, 26));\nlet peligro13altovoltajeplaca = parseInt(output.slice(26, 27));\nlet fallompptsobrecarga = parseInt(output.slice(27, 28));\nlet peligro14mpptsobrecarga = parseInt(output.slice(28, 29));\nlet peligro12bateriabajaparamppt = parseInt(output.slice(29, 30));\nreturn [\n    {\n        payload: {\n            falloinversor: falloinversor,\n            fallo08voltajebusalto: fallo08voltajebusalto,\n            fallo52voltajebusbajo: fallo52voltajebusbajo,\n            fallo09softwarebus: fallo09softwarebus,\n            peligronoacinput: peligronoacinput,\n            peligrocortopv: peligrocortopv,\n            fallo06voltajeinversoralto: fallo06voltajeinversoralto,\n            peligro02sobretemperatura: peligro02sobretemperatura,\n            peligro01ventilador: peligro01ventilador,\n            peligro03altovoltajebateria: peligro03altovoltajebateria,\n            peligro04bajovoltajebateria: peligro04bajovoltajebateria,\n            peligro07sobrecargar: peligro07sobrecargar,\n            peligrobateriashutdown: peligrobateriashutdown,\n            peligro10bateriaderating: peligro10bateriaderating,\n            peligroeeprom: peligroeeprom,\n            fallo51sobrecorriente: fallo51sobrecorriente,\n            fallosoftwareinversor: fallosoftwareinversor,\n            falloautotest: falloautotest,\n            fallo55continuaenac: fallo55continuaenac,\n            fallo56bateriaabierta: fallo56bateriaabierta,\n            fallo57sensorcorriente: fallo57sensorcorriente,\n            fallocortobateria: fallocortobateria,\n            peligro13altovoltajeplaca: peligro13altovoltajeplaca,\n            fallompptsobrecarga: fallompptsobrecarga,\n            peligro14mpptsobrecarga: peligro14mpptsobrecarga,\n            peligro12bateriabajaparamppt: peligro12bateriabajaparamppt\n                 }\n    }\n]","outputs":1,"noerr":0,"initialize":"","finalize":"","x":670,"y":540,"wires":[["2cb73b17.d23c34"]]},{"id":"2cb73b17.d23c34","type":"join","z":"19564b21.32eff5","name":"Juntando Todo 4 s","mode":"custom","build":"merged","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"4","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":910,"y":380,"wires":[["565c63f0.2649fc"]]},{"id":"ea295d26.2fccd","type":"link out","z":"19564b21.32eff5","name":"TodasLecturasHibrido","links":[],"x":1060,"y":460,"wires":[],"l":true},{"id":"4bcb3d1b.5ea574","type":"comment","z":"19564b21.32eff5","name":"Creando Objeto con todas las lecturas del Hibrido","info":"","x":1040,"y":320,"wires":[]},{"id":"565c63f0.2649fc","type":"function","z":"19564b21.32eff5","name":"Id en topic num serie","func":"var topic = flow.get('numerodeserie');\nmsg.topic = topic;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1120,"y":380,"wires":[["ea295d26.2fccd","3e8e715b.5ee93e"]]},{"id":"fc5f3dc3.947c9","type":"inject","z":"19564b21.32eff5","name":"QMOD Modo de Trabajo","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"5","crontab":"","once":false,"onceDelay":0.1,"topic":"Modo de Trabajo","payload":"QMOD","payloadType":"str","x":170,"y":820,"wires":[["cd3d2ac7.1d46a8"]]},{"id":"dcec16ee.014fd8","type":"function","z":"19564b21.32eff5","name":"QMOD Extractor","func":"var output = msg.payload;\nlet mododetrabajo = output.slice(1, 2);\nreturn [{\n    payload: {\n         mododetrabajo: mododetrabajo\n             }\n        }\n       ];","outputs":1,"noerr":0,"initialize":"","finalize":"","x":640,"y":580,"wires":[["2cb73b17.d23c34"]]},{"id":"f8fed9b0.a2c708","type":"comment","z":"19564b21.32eff5","name":"RS232-USB PL2303 or FTDI Conversor","info":"","x":490,"y":100,"wires":[]},{"id":"7545bcea.c00be4","type":"serial request","z":"19564b21.32eff5","name":"","serial":"88ec1814.a229c8","x":490,"y":160,"wires":[["37e0fc60.268e84"]]},{"id":"88ec1814.a229c8","type":"serial-port","z":"","serialport":"/dev/ttyUSB0","serialbaud":"2400","databits":"8","parity":"none","stopbits":"1","waitfor":"","dtr":"none","rts":"none","cts":"none","dsr":"none","newline":"\\r","bin":"false","out":"char","addchar":"","responsetimeout":"1000"}]

  5. #30
    juan3211 está desconectado Forero Junior
    Fecha de ingreso
    mar 2016
    Ubicación
    bizkaia
    Mensajes
    24

    Predeterminado Re: [NODERED] Conexion con Axperts por puerto serie RJ45 (PCM60X y el resto)

    Cita Iniciado por Tejota Ver mensaje
    Lo que se te escapa es que el que funciona esta cargado con un firmware diferente a los otros 9. Que pareces nuevo Tejota. Y el chino.. pues eso.... de chinos, chinadas. El orden de los pinout en los dt-06 es irrelevante ya que dandole la vuelta va a funcionar.... unicamente tener cuidado de si hay que darle la vuelta o no. Si todos fueran iguales no habria que estar mirando en dar la vuelta al modulo.

    He estado mirando la conexion saltando la placa de comunicaciones y no es buena idea para nada. Hay que pasar por los optoacopladores si o si, para evitar sustos tanto por la tierra digital como porque cualquier cosa que ocurra en el conversor que se use afectara directamente a la placa de control del hibrido y puede ser peligroso.

    Lo que pasa que hay que usar un cable preparado para usar el rj45 del hibrido. No vale el que trae ese de rj45 a db9 ya que no usa la patilla 4 que saca una alimentacion exclusiva para los conversores a +12V. Esa alimentacion de +12V se usa para alimentar tambien el propio conversor USB HID que lleva el hibrido, luego es una alimentacion que se puede usar externamente para otros conversores, ya sean ttl-tcpip, ttl-wifi, ttl-bluetooth.

    El RJ45 que lleva el PCM60X no saca +12V por la patilla 4 pero si saca +12V, -12V, tierra no digital y datos por el gold finger. Para esto igual seria bueno meter los conversores en una placa prototipo gold finger y no usar para nada el rj45 del PCM60X. Algo me inventare para no estar pendiente de alimentaciones externas.
    Una placa gold finger es como la que usan los Infinisolar esos tan caros y que hay de varios tipos segun se use.
    Hola Tejota, muchas gracias por este post.

    Actualmente tengo NODERED instalado en una maquina virtual de esas "free", junto con mosquitto y grafana para mis cositas de casa.

    Estaba pensando, por hacerlo sencillo en lo siguiente:
    1. instalar en un esp8266 el firmware tasmota con la opcion serial bridge por mqtt.
    2. añadir un max3232 a ese esp8266 y conectar al pinout del RJ45 de un inversor voltronic axpert
    3. tasmota me reenviará todo al MQTT, y viceversa, desde MQTT al tasmota y éste al inversor
    4. y ya en NodeRed extraes la info, CRC, etc... y/o envias ordendes sencillas al inversor.

    De este modo, si algun dia quiero añadir una funcion, me la hago en nodered y no tengo que actualizar el firmware del esp8266.

    El caso es que tengo alguna duda.
    1. Podemos alimentar (con el correspondiente regulador de tension) el MAX3232 y el ESP8266 desde el puerto RJ45? Que pines se deben utilizar?
    2. Y la otra, que no acabo de encontrar en la web facil, cual es el pin out del conector RJ45 de estos inversores?

    Sabes alguna de ellas?

    Gracias.

  6. #31
    tensoway está desconectado Forero Junior
    Fecha de ingreso
    jul 2021
    Mensajes
    1

    Predeterminado Re: [NODERED] Conexion con Axperts por puerto serie RJ45 (PCM60X y el resto)

    Hola buenas, primero felicitar a tejota por los tutoriales y vídeos con los que voy aprendiendo cosillas jeje, además de Víctor que le sigo en Youtube.
    Tengo un powerwall de.celdas recicladas compuesto por dos baterías en paralelo de 7s 150p pero montada en módulo cerrado ( lo cual tengo intención de cambiar) con 13 placas de 265 w y un axpert vmIII a 24v y quiero monitorizar lo con nodered, antes tuve ICC solar y emoncms pero nunca termino de gustarme, así que tengo la Raspberry y he cogido el conversor de serie a USB.
    Mi pregunta es cómo se cuáles son los cables que salen del rj45 para conectar al conversor
    Muchas gracias y un saludo

Página 2 de 2 PrimerPrimer 12



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