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

    Predeterminado [NODERED] Conexion con Axperts Voltronics por puerto USB.

    Si por puerto serie (RJ45) es bastante sencillo conectar un Voltronic en NODERED, por el puerto USB lleva algo mas de complicacion. La mayoria de los programadores que trabajan con el puerto USB de Voltronic usan solamente las librerias de file descriptor (fd). Si bien es suficiente para un uso de unos pocos comandos cuando al hibrido le hacemos multiples peticiones de comandos en pocos segundos por el USB la cosa no es tan suficiente con el fd. El file descriptor es un archivo temporal que el kernel crea para comunicarse con los dispositivos, generalmente esta en el directorio /dev y sera algo similar a /dev/hidraw0, 1, etc. No voy a entrar en detalles comparativos entre el RJ45 y el USB. A mi modo de ver es mas versatil y fiable el RJ45 que el USB en estos equipos, mas que nada porque el USB es un HID de lo mas cutre que os podais encontrar. No he podido o no he sabido sacar ningun featurereport ni nada para controlar el flujo del HID. O sea, este HID va en plan emisor de eventos puro y duro: tu pregunta y yo te contesto a mi bola. Y al no haber flujo de control como en el puerto serie en cuanto le preguntas mucho, se "atora" por lo que hay que medir bien la velocidad de preguntas y pillar bien las respuestas para que no se solapen entre ellas. O sea, fabricarse un driver desde cero. Con un par.

    Por cierto, el USBHID del hibrido se alimenta del exterior, o sea de tu Rpi o de tu ordenador. Puedes apagar el hibrido, incluso de baterias que el HID lo va a detectar la Rpi. De ahi que problemas de alimentacion con la Rpi afecten a la perdida de comunicacion por USB con el hibrido en casos puntuales.


    En NODERED no voy a usar file descriptor. Voy a usar una API que habla directamente con el HID. Se trata de node-hid api . En paleta de nodos instalables hay un nodo llamado node-contrib-usbhid NO LO INSTALEIS DESDE PALETA, EL AUTOR NO HA ACTUALIZADO LAS DEPENDENCIAS y da error al instalar desde paleta. Hay que instalarlo desde npm.

    Pongo fotos en orden del proceso de instalacion de la API (node-hid) y de los nodos en paleta (node-contrib-usbhid). No creo que tengais mucho problema en seguirlos. Estan bastante claros.

    [NODERED] Conexion con Axperts Voltronics por puerto USB.-instalandodependenciasparausbhidnodered.jpg
    [NODERED] Conexion con Axperts Voltronics por puerto USB.-instalandodependenciasusbhidnodered2.jpg
    Desde .node-red teclead npm i somebuddy87/node-red-contrib-usbhid
    [NODERED] Conexion con Axperts Voltronics por puerto USB.-instalandonode-red-contrib-usbhiddesdenpm.jpg
    [NODERED] Conexion con Axperts Voltronics por puerto USB.-acabandodeinstalarnode-red-contribusbhid.jpg

    Ahora vamos a nuestra plataforma NODE RED y tendremos que ver los nodos usbhid instalados en la paleta:

    [NODERED] Conexion con Axperts Voltronics por puerto USB.-nodosusbhidenpaleta.png

    Antes de ponernos a funcionar con el usbhid tenemos que dar permisos de lectura y escritura a los dispositivos que se van a generar cuando usemos usbhid.
    Volvemos a linea de comandos. Tendremos que crear el archivo 99-voltronic.rules con sudo y añadir las lineas de la foto:



    [NODERED] Conexion con Axperts Voltronics por puerto USB.-permisosusbnoderedvoltronic.jpg
    De esta forma los 4 usbs en cuanto detecten un HID con ese Idproduct e Idvendor tendran los permisos de lectura y escritura para la plataforma. Mirad tambien como he asignado un symlink virtual a cada conector USB para ese HID. Asi podreis asignar fisicamente un dev a cada puerto usb.
    Una vez creado el archivo rules tendreis que reiniciar el sistema para que los cambios hagan efecto.


    Vamos a ver si los nodos usbhid funcionan en la plataforma y el hibrido dice algo o esta callado:

    [NODERED] Conexion con Axperts Voltronics por puerto USB.-gethid.jpg

    De momento se ve que la plataforma detecta el HID del hibrido con el nodo getHIDdevices.

    Ponemos el nodo de HIDdevices y configuramos los datos que nos ha dado el getHIDdevices:

    [NODERED] Conexion con Axperts Voltronics por puerto USB.-vidpidconfig.jpg

    Hacemos alguna peticion de algun comando y el hibrido no esta mudo..... Oh!!! habla en hebreo... pero habla.

    [NODERED] Conexion con Axperts Voltronics por puerto USB.-hibridomandacosasenbuffer.jpg

    Bueno, pues nada.... cuestion de llamar a los traductores de hebreo:

    [NODERED] Conexion con Axperts Voltronics por puerto USB.-bufferparsinghibrido.jpg

    Y ya vemos en la pantalla de depuracion cosas legibles.


    Un poco de arquitectura NODERED y tenemos un flujo para un Axpert Voltronic que nos da un JSON de bastantes parametros del hibrido para su almacenamiento, redireccion mosquitera o representacion donde sea menester.

    [NODERED] Conexion con Axperts Voltronics por puerto USB.-voltronicmksporusbnodered.jpg

    Por supuesto he dejado las entradas y salidas del flujo para ir incorporando mas cosas, como pueden ser botones, sliders y demas dashboard para configurar los parametros del hibrido desde la Rpi. Idem para nodos de funcion exclusivos de algoritmos de carga y demas cacharreria.

    A ver si alguno se anima. Esto da para una personalizacion de la instalacion a gusto del usuario. Y por supuesto que el flujo que he puesto es mejorable pero como no tengo criticos...

    Dejo el flujo en linea:

    Código HTML:
    [{"id":"2c0cfdc.c46c602","type":"tab","label":"Voltronic MKS por USB","disabled":false,"info":""},{"id":"6c0a3edc.a82de","type":"inject","z":"2c0cfdc.c46c602","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":140,"y":700,"wires":[["ac2a49dd.512438"]]},{"id":"b8681580.f6b638","type":"inject","z":"2c0cfdc.c46c602","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":140,"y":660,"wires":[["ac2a49dd.512438"]]},{"id":"c315c02f.2bed1","type":"inject","z":"2c0cfdc.c46c602","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":170,"y":740,"wires":[["ac2a49dd.512438"]]},{"id":"47b7567a.4dc558","type":"inject","z":"2c0cfdc.c46c602","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":170,"y":780,"wires":[["ac2a49dd.512438"]]},{"id":"8d340413.a06bf8","type":"inject","z":"2c0cfdc.c46c602","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":150,"y":540,"wires":[["ac2a49dd.512438"]]},{"id":"2cd7dbcd.7d01a4","type":"inject","z":"2c0cfdc.c46c602","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":140,"y":500,"wires":[["ac2a49dd.512438"]]},{"id":"fb0c9d3a.bd42f","type":"function","z":"2c0cfdc.c46c602","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":280,"y":160,"wires":[["89c0f835.c54ab8"]]},{"id":"89c0f835.c54ab8","type":"delay","z":"2c0cfdc.c46c602","name":"","pauseType":"rate","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"0.8","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":430,"y":160,"wires":[["99e3facb.0c2fc8","f37f99b4.47fcd8"]]},{"id":"99e3facb.0c2fc8","type":"HIDdevice","z":"2c0cfdc.c46c602","connection":"ca5b4d52.c7dc6","name":"Voltronic","x":600,"y":160,"wires":[["765057a0.9c7028"],[]]},{"id":"6196de4d.452f","type":"join","z":"2c0cfdc.c46c602","name":"String final","mode":"custom","build":"string","property":"payload","propertyType":"msg","key":"topic","joiner":"","joinerType":"str","accumulate":false,"timeout":"","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":810,"y":100,"wires":[["88f539c9.d84ee8"]]},{"id":"280e455d.250e1a","type":"debug","z":"2c0cfdc.c46c602","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":1150,"y":580,"wires":[]},{"id":"765057a0.9c7028","type":"function","z":"2c0cfdc.c46c602","name":"Completo en 13 (\\r)","func":"var payload = msg.payload;\nfor (tj = 0; tj < payload.length; tj++) {\nif (payload[tj] == 13) {\n    msg.complete = true;\n         }\n}\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":790,"y":160,"wires":[["6196de4d.452f"]]},{"id":"f37f99b4.47fcd8","type":"change","z":"2c0cfdc.c46c602","name":"Delete payload","rules":[{"t":"delete","p":"payload","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":620,"y":100,"wires":[["6196de4d.452f"]]},{"id":"68985b5e.c2a8f4","type":"inject","z":"2c0cfdc.c46c602","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":150,"y":580,"wires":[["ac2a49dd.512438"]]},{"id":"bd3d203f.623d9","type":"inject","z":"2c0cfdc.c46c602","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":150,"y":620,"wires":[["ac2a49dd.512438"]]},{"id":"ac2a49dd.512438","type":"link out","z":"2c0cfdc.c46c602","name":"ParaCRCTJ","links":["13b953a1.2ef79c"],"x":410,"y":660,"wires":[],"l":true},{"id":"45507b31.ce6ee4","type":"comment","z":"2c0cfdc.c46c602","name":"Comandos de monitorizacion","info":"Comandos de Monitorizacion","x":140,"y":460,"wires":[]},{"id":"13b953a1.2ef79c","type":"link in","z":"2c0cfdc.c46c602","name":"CRCTJWelcome","links":["ac2a49dd.512438"],"x":120,"y":160,"wires":[["fb0c9d3a.bd42f"]],"l":true},{"id":"3bc02c65.358c14","type":"comment","z":"2c0cfdc.c46c602","name":"Rate Limit a 1 msg cada 0,8s","info":"","x":360,"y":120,"wires":[]},{"id":"3d67e40a.721a8c","type":"comment","z":"2c0cfdc.c46c602","name":"Generando cadena de salida con descripcion en topic","info":"","x":720,"y":60,"wires":[]},{"id":"754880f1.ee725","type":"comment","z":"2c0cfdc.c46c602","name":"Juntando payloads hasta completar string","info":"","x":1080,"y":160,"wires":[]},{"id":"88f539c9.d84ee8","type":"link out","z":"2c0cfdc.c46c602","name":"ParaExtractores","links":["175dfd79.d26a83"],"x":1030,"y":100,"wires":[],"l":true},{"id":"c8d39d7e.6c58","type":"switch","z":"2c0cfdc.c46c602","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":370,"y":360,"wires":[["208b6136.748a4e"],["16809939.52bd57"],["848b4d62.aae62"],["f68d0ca2.3e3b"],["268069a2.5ee866"],["231c7627.1620fa"],["4cccba7e.48b844"],["c7108bd6.a898e8"],["1c62fbc2.20db04"]]},{"id":"175dfd79.d26a83","type":"link in","z":"2c0cfdc.c46c602","name":"ExtractoresWelcome","links":["88f539c9.d84ee8"],"x":130,"y":360,"wires":[["c8d39d7e.6c58"]],"l":true},{"id":"5aa9fcfa.2fbbd4","type":"comment","z":"2c0cfdc.c46c602","name":"Repartiendo por topic","info":"","x":360,"y":260,"wires":[]},{"id":"268069a2.5ee866","type":"function","z":"2c0cfdc.c46c602","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":630,"y":420,"wires":[["4c1a593c.2808d8"]]},{"id":"16809939.52bd57","type":"function","z":"2c0cfdc.c46c602","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":630,"y":300,"wires":[["4c1a593c.2808d8"]]},{"id":"231c7627.1620fa","type":"function","z":"2c0cfdc.c46c602","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":620,"y":460,"wires":[["4c1a593c.2808d8"]]},{"id":"848b4d62.aae62","type":"function","z":"2c0cfdc.c46c602","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":640,"y":340,"wires":[["4c1a593c.2808d8"]]},{"id":"f68d0ca2.3e3b","type":"function","z":"2c0cfdc.c46c602","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":640,"y":380,"wires":[["4c1a593c.2808d8"]]},{"id":"4cccba7e.48b844","type":"function","z":"2c0cfdc.c46c602","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":630,"y":500,"wires":[["4c1a593c.2808d8"]]},{"id":"208b6136.748a4e","type":"function","z":"2c0cfdc.c46c602","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":640,"y":260,"wires":[["4c1a593c.2808d8"]]},{"id":"76b888ca.efad58","type":"comment","z":"2c0cfdc.c46c602","name":"Extractores","info":"","x":650,"y":220,"wires":[]},{"id":"c7108bd6.a898e8","type":"function","z":"2c0cfdc.c46c602","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":650,"y":540,"wires":[["4c1a593c.2808d8"]]},{"id":"4c1a593c.2808d8","type":"join","z":"2c0cfdc.c46c602","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":890,"y":380,"wires":[["eff4f325.390ac"]]},{"id":"c683b45d.2d7cb8","type":"link out","z":"2c0cfdc.c46c602","name":"TodasLecturasHibrido","links":[],"x":1040,"y":460,"wires":[],"l":true},{"id":"1b65284f.139fa8","type":"comment","z":"2c0cfdc.c46c602","name":"Creando Objeto con todas las lecturas del Hibrido","info":"","x":1020,"y":320,"wires":[]},{"id":"eff4f325.390ac","type":"function","z":"2c0cfdc.c46c602","name":"Id en topic num serie","func":"var topic = flow.get('numerodeserie');\nmsg.topic = topic;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1100,"y":380,"wires":[["c683b45d.2d7cb8","280e455d.250e1a"]]},{"id":"10de9cf2.6fb1a3","type":"inject","z":"2c0cfdc.c46c602","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":150,"y":820,"wires":[["ac2a49dd.512438"]]},{"id":"1c62fbc2.20db04","type":"function","z":"2c0cfdc.c46c602","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":620,"y":580,"wires":[["4c1a593c.2808d8"]]},{"id":"ca5b4d52.c7dc6","type":"HIDConfig","z":"","path":"/dev/Voltronic","name":""}]
    Última edición por Tejota; 13/07/2020 a las 14:06 Razón: No se ve nada en linea de comandos...
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  2. #2
    Avatar de Tejota
    Tejota está desconectado Forero
    Fecha de ingreso
    ago 2015
    Ubicación
    Inmortal Ciudad de Zaragoza
    Mensajes
    3.411

    Predeterminado Re: [NODERED] Conexion con Axperts Voltronics por puerto USB.

    Por cierto, tengo que solucionar las tramas de mas de 8 bytes q se envian al USBHID. No lo habia tenido en cuenta porque por el puerto serie RJ45 ya se encapsulan automaticamente a 8 bytes por el propio nodo serial.

    Al USBHID hay que darselo todo mascadito para que no se atragante.

    Lo metere en el nodo funcion CRCTJ cuando tenga un rato.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  3. #3
    ministropepon está desconectado Forero
    Fecha de ingreso
    may 2014
    Ubicación
    Madrid, Spain
    Mensajes
    446

    Predeterminado Re: [NODERED] Conexion con Axperts Voltronics por puerto USB.

    Tejota! Gracias!

    Gracias a tu post estoy vitaminando mi Node-Red!

    [NODERED] Conexion con Axperts Voltronics por puerto USB.-screenshot_20201106_223241.jpg

    [NODERED] Conexion con Axperts Voltronics por puerto USB.-screenshot_20201106_223206.jpg

    [NODERED] Conexion con Axperts Voltronics por puerto USB.-screenshot_20201106_223043.jpg

    Sigo avanzando! gracias!

  4. #4
    Avatar de Tejota
    Tejota está desconectado Forero
    Fecha de ingreso
    ago 2015
    Ubicación
    Inmortal Ciudad de Zaragoza
    Mensajes
    3.411

    Predeterminado Re: [NODERED] Conexion con Axperts Voltronics por puerto USB.

    Muchos nodos ttyUSB. Eso puede acarrear problemas pq son muchas instances sobre el dev. Yo opte por centralizar las llamadas en un nodo anterior (el del CRC) y de este hacia el ttyUSB. Por lo que solo tengo un nodo ttyUSB, de esta forma todas las peticiones al dispositivo (dev) van canalizadas por el mismo sitio.

    En el hilo de la conexion por RJ45 creo que se ve bien: https://www.solarweb.net/forosolar/f...tml#post399210
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  5. #5
    ministropepon está desconectado Forero
    Fecha de ingreso
    may 2014
    Ubicación
    Madrid, Spain
    Mensajes
    446

    Predeterminado Re: [NODERED] Conexion con Axperts Voltronics por puerto USB.

    Ya he visto el "truco": usar los msg.topic. Perfecto! voy a mejorarlo! Gracias.

    He visto que tienes controlado el comando QPIGS hasta el nº20, en la documentación que tengo solo llego hasta el 16: status. Ya he visto qu el 19 es la potencia entrante por paneles, que yo lo tenía calculando I*V de paneles. ¿Tienes doc completa?

    Gracias!

  6. #6
    Avatar de Tejota
    Tejota está desconectado Forero
    Fecha de ingreso
    ago 2015
    Ubicación
    Inmortal Ciudad de Zaragoza
    Mensajes
    3.411

    Predeterminado Re: [NODERED] Conexion con Axperts Voltronics por puerto USB.

    Cita Iniciado por ministropepon Ver mensaje
    Ya he visto el "truco": usar los msg.topic. Perfecto! voy a mejorarlo! Gracias.

    He visto que tienes controlado el comando QPIGS hasta el nº20, en la documentación que tengo solo llego hasta el 16: status. Ya he visto qu el 19 es la potencia entrante por paneles, que yo lo tenía calculando I*V de paneles. ¿Tienes doc completa?

    Gracias!
    No es un truco, es usar las propertys de los msgs. No solo payloads hay en el msg. Hay muchos mas y los que quieras ponerles.
    Te paso los protocolos disponibles para Voltronics, desde los InfiniSolar sin CRCs hasta los P30 y los P18 de los V2. Tambien el del regulador solar PCM60X q comparte comandos con algun Voltronic, sobre los comandos relativos a ecualizaciones. Habra otros comandos que no estan y son incorporaciones nuevas en los nuevos modelos. Para esos nuevos comandos no queda mas remedio que diseccionar el firwmare y sacar la parametrizacion porque no creo que haya documentacion publica para ello. Me refiero por ejemplo a los comandos de LED en los MAX por ejemplo y conteo de producciones diarias, semanales, mensuales, etc

    ProtocoloP30.pdf
    ProtocoloPCM60X.pdf
    ProtocoloP18.pdf
    ProtocoloInfiniSolar.pdf
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  7. #7
    ministropepon está desconectado Forero
    Fecha de ingreso
    may 2014
    Ubicación
    Madrid, Spain
    Mensajes
    446

    Predeterminado Re: [NODERED] Conexion con Axperts Voltronics por puerto USB.

    Gracias Tejota! voy a ver qué es y no es compatible con mi King.

  8. #8
    Avatar de Tejota
    Tejota está desconectado Forero
    Fecha de ingreso
    ago 2015
    Ubicación
    Inmortal Ciudad de Zaragoza
    Mensajes
    3.411

    Predeterminado Re: [NODERED] Conexion con Axperts Voltronics por puerto USB.

    Es posible que esos comandos del King no esten en esos protocolos. La forma de sacarlos es snifeando las comunicaciones entre un watchpower que soporte el King y el propio King. Como son en texto plano por via serie se pueden interceptar y ver el formato y los parametros del comando.

    Usa el watchpower de linux sobre un x86 y lanza a archivo txt lo que recoja el descriptor del device (/dev/ttyxxx) que uses. Mete los comandos no documentados en el watchpower y despues analiza el archivo. Ahi veras como son.

    No se si me has seguido el razonamiento o tengo que "volar" mas bajo....xD...
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  9. #9
    ministropepon está desconectado Forero
    Fecha de ingreso
    may 2014
    Ubicación
    Madrid, Spain
    Mensajes
    446

    Predeterminado Re: [NODERED] Conexion con Axperts Voltronics por puerto USB.

    Esta es la documentación que he encontrado que incluye los comandos del Axpert King:

    King_product-application_pdf-20190724092401-8519-pip-gk-mk-protocol.pdf

    Un saludo!

  10. #10
    CharlieRC está desconectado Forero Junior
    Fecha de ingreso
    feb 2018
    Ubicación
    Barcelona
    Mensajes
    13

    Predeterminado Re: [NODERED] Conexion con Axperts Voltronics por puerto USB.

    Primero de todo, quiero darte las gracias Tejota por estos tutoriales que a los que empezamos, nos ayudan muchísimo.
    He seguido los pasos que has comentado y finalmente me ha funcionado, pero he tenido un problema que he podido solventar, por si a alguien con mi mismo problema le puede ayudar:

    donde tu comentas que hay que crear el fichero /etc/udev/99-voltronic.rules he tenido que poner esta única linea:

    KERNEL=="hidraw*", ATTRS{idVendor}=="0665", ATTRS{idProduct}=="5161", MODE="0666", GROUP="plugdev"

    ya que desde node-red me aparecía este mensaje de error si ponía las que tu decías:

    1 Jan 13:39:43 - [info] Starting flows
    11 Jan 13:39:43 - [error] [HIDdevice:e4159dc8.3a92c] TypeError: Cannot read property 'on' of undefined
    11 Jan 13:39:43 - [info] Started flows
    11 Jan 13:42:44 - [warn]


    fuente de la solución: https://github.com/somebuddy87/node-...sbhid/issues/6


    En mi caso utilizo una RBpi y un AXPERT de pruebas modelo 2424.

    Te agradezco de nuevo la ayuda, estoy empezando a trastear con node-red y emoncms, y me está ayudando mucho toda esta información

    Saludos,

  11. #11
    Avatar de Tejota
    Tejota está desconectado Forero
    Fecha de ingreso
    ago 2015
    Ubicación
    Inmortal Ciudad de Zaragoza
    Mensajes
    3.411

    Predeterminado Re: [NODERED] Conexion con Axperts Voltronics por puerto USB.

    Cita Iniciado por CharlieRC Ver mensaje
    Primero de todo, quiero darte las gracias Tejota por estos tutoriales que a los que empezamos, nos ayudan muchísimo.
    He seguido los pasos que has comentado y finalmente me ha funcionado, pero he tenido un problema que he podido solventar, por si a alguien con mi mismo problema le puede ayudar:

    donde tu comentas que hay que crear el fichero /etc/udev/99-voltronic.rules he tenido que poner esta única linea:

    KERNEL=="hidraw*", ATTRS{idVendor}=="0665", ATTRS{idProduct}=="5161", MODE="0666", GROUP="plugdev"

    ya que desde node-red me aparecía este mensaje de error si ponía las que tu decías:

    1 Jan 13:39:43 - [info] Starting flows
    11 Jan 13:39:43 - [error] [HIDdevice:e4159dc8.3a92c] TypeError: Cannot read property 'on' of undefined
    11 Jan 13:39:43 - [info] Started flows
    11 Jan 13:42:44 - [warn]


    fuente de la solución: https://github.com/somebuddy87/node-...sbhid/issues/6


    En mi caso utilizo una RBpi y un AXPERT de pruebas modelo 2424.

    Te agradezco de nuevo la ayuda, estoy empezando a trastear con node-red y emoncms, y me está ayudando mucho toda esta información

    Saludos,
    Que te sale en consola al poner udevadm info /dev/hidraw0 ?? idem si tienes mas hidraw... a ver que kernels salen.... igual es una Rpi diferente a la que use yo.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  12. #12
    CharlieRC está desconectado Forero Junior
    Fecha de ingreso
    feb 2018
    Ubicación
    Barcelona
    Mensajes
    13

    Predeterminado Re: [NODERED] Conexion con Axperts Voltronics por puerto USB.

    Me sale esto:

    P: /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/0003:0665:5161.0001/hidraw/hidraw0
    N: hidraw0
    L: 0
    E: DEVPATH=/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/0003:0665:5161.0001/hidraw/hidraw0
    E: DEVNAME=/dev/hidraw0
    E: MAJOR=244
    E: MINOR=0
    E: SUBSYSTEM=hidraw


    modelo RB:

    Raspberry Pi 3 Model B Plus Rev 1.3

    sólo estoy usando un hidraw

    Salu2

  13. #13
    Avatar de Tejota
    Tejota está desconectado Forero
    Fecha de ingreso
    ago 2015
    Ubicación
    Inmortal Ciudad de Zaragoza
    Mensajes
    3.411

    Predeterminado Re: [NODERED] Conexion con Axperts Voltronics por puerto USB.

    Igual es por el subsystem.

    Pon estas lineas y quita la que has puesto a ver si se soluciona:

    Código:
    KERNELS=="1-1.2", ATTRS{idVendor}=="0665", ATTRS{idProduct}=="5161", SUBSYSTEM=="hidraw", ACTION=="add", MODE="0777", GROUP="plugdev", SYMLINK+="Voltronic1"
    KERNELS=="1-1.3", ATTRS{idVendor}=="0665", ATTRS{idProduct}=="5161", SUBSYSTEM=="hidraw", ACTION=="add", MODE="0777", GROUP="plugdev", SYMLINK+="Voltronic2"
    KERNELS=="1-1.1.2", ATTRS{idVendor}=="0665", ATTRS{idProduct}=="5161", SUBSYSTEM=="hidraw", ACTION=="add", MODE="0777", GROUP="plugdev", SYMLINK+="Voltronic3"
    KERNELS=="1-1.1.3", ATTRS{idVendor}=="0665", ATTRS{idProduct}=="5161", SUBSYSTEM=="hidraw", ACTION=="add", MODE="0777", GROUP="plugdev", SYMLINK+="Voltronic4"
    Quizas con el subsytems==usb el hidraw todavia sea root y por eso el node red dice que no puede hacer nada con ese dev.

    Todo es un problema de permisos. Node red se ejecuta sin privilegios root por seguridad y por tanto si algun dev es solo root no podra interactuar con el, por eso se usan las rules.

    A mi me funciona con el subsytems==usb pero igual tengo los permisos cambiados en otro sitio y no me he percatado.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  14. #14
    ministropepon está desconectado Forero
    Fecha de ingreso
    may 2014
    Ubicación
    Madrid, Spain
    Mensajes
    446

    Predeterminado Re: [NODERED] Conexion con Axperts Voltronics por puerto USB.

    Si es un problema de permisos se puede probar, temporalmente, a darle permisos manualmente:

    Código:
    sudo chmod 0777 /dev/hidraw0
    Si así se soluciona se puede arreglar como bien comenta Tejota con las rules para que dicho cambio sea permanente y automático cada vez que se reinicie o se detecte de nuevo dicho dispositivo.

    Un saludo!

  15. #15
    CharlieRC está desconectado Forero Junior
    Fecha de ingreso
    feb 2018
    Ubicación
    Barcelona
    Mensajes
    13

    Predeterminado Re: [NODERED] Conexion con Axperts Voltronics por puerto USB.

    Si así se soluciona se puede arreglar como bien comenta Tejota con las rules para que dicho cambio sea permanente y automático cada vez que se reinicie o se detecte de nuevo dicho dispositivo.
    Gracias por el interés Tejota y ministropepon!

    Tejota, probado y funcionando con esas nuevas lineas.

    Yo creo también como decís, que es por un tema de permisos, en la última versión liberada de sistema operativo han cambiado cosas, yo utilizo "Buster" (ver10):


    PRETTY_NAME="Raspbian GNU/Linux 10 (buster)"
    NAME="Raspbian GNU/Linux"
    VERSION_ID="10"
    VERSION="10 (buster)"
    VERSION_CODENAME=buster
    ID=raspbian
    ID_LIKE=debian


    Salu2.

  16. #16
    Avatar de Tejota
    Tejota está desconectado Forero
    Fecha de ingreso
    ago 2015
    Ubicación
    Inmortal Ciudad de Zaragoza
    Mensajes
    3.411

    Predeterminado Re: [NODERED] Conexion con Axperts Voltronics por puerto USB.

    Los kernels de esas 4 lineas corresponden a cada uno de los USBs que lleva la Rpi y con los symlinks de las lineas puedes identificar que esta conectado a cada conector USB. Lo que no me acuerdo es cual es cual, eso lo podras hacer probando en cada usb, viendo el dev que se crea y etiquetandolos.

    Yo lo hice asi porque de esta forma puedes poner varios hibridos y saber cual es cual.

    Obviamente solo es valido para la Rpi3. Para la Rpi4 los kernels creo que cambian pero se pueden sacar con el udevadm. Idem si usas un hub usb... sacas los kernels con el udevadm y puedes etiquetar todos los puertos del hub usb en las rules. Esto viene bien si usas muchos conversores y cosas a los USBs.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  17. #17
    restaun está desconectado Forero
    Fecha de ingreso
    ago 2017
    Ubicación
    Zaragoza
    Mensajes
    29

    Predeterminado Re: [NODERED] Conexion con Axperts Voltronics por puerto USB.

    Hola.
    Lo he intentado usar en Windows 10, se conecta pero no se hablan.
    Ahora no puedo usar otro sistema operativo por que lo tengo para mas cosas y no puedo acceder a otro hardware.
    Un saludo.

    [NODERED] Conexion con Axperts Voltronics por puerto USB.-node-red-_-192.168.1.241-google-chrome-2021-01-26-20-12-04.jpg

    [NODERED] Conexion con Axperts Voltronics por puerto USB.-node-red-_-192.168.1.241-google-chrome-2021-01-26-20-10-54.jpg

  18. #18
    Avatar de Tejota
    Tejota está desconectado Forero
    Fecha de ingreso
    ago 2015
    Ubicación
    Inmortal Ciudad de Zaragoza
    Mensajes
    3.411

    Predeterminado Re: [NODERED] Conexion con Axperts Voltronics por puerto USB.

    Pues en windows no se como gestiona el node red los puertos USB. En linux es raw todo pero en windows supongo que ira a traves de driver.
    En las fotos no se ve nada. Todo borroso, sin definicion y no se aprecian las letras.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  19. #19
    restaun está desconectado Forero
    Fecha de ingreso
    ago 2017
    Ubicación
    Zaragoza
    Mensajes
    29

    Predeterminado Re: [NODERED] Conexion con Axperts Voltronics por puerto USB.

    Pues si, se ven mal. Lo curioso es que los he subido en GIF.
    Bueno. Si pongo el debug tras el serial request sale esto "TypeError: Cannot read property 'length' of undefined" y si lo pongo al final no da ninguna información.
    De todas formas ya intentare hacerme con una raspberry.
    Gracias.

  20. #20
    Avatar de Tejota
    Tejota está desconectado Forero
    Fecha de ingreso
    ago 2015
    Ubicación
    Inmortal Ciudad de Zaragoza
    Mensajes
    3.411

    Predeterminado Re: [NODERED] Conexion con Axperts Voltronics por puerto USB.

    Cita Iniciado por restaun Ver mensaje
    Pues si, se ven mal. Lo curioso es que los he subido en GIF.
    Bueno. Si pongo el debug tras el serial request sale esto "TypeError: Cannot read property 'length' of undefined" y si lo pongo al final no da ninguna información.
    De todas formas ya intentare hacerme con una raspberry.
    Gracias.
    Que Voltronic estas usando?? Has probado a traves de puerto serie (rj45 del hibrido) en vez del puerto USB? O sea con adaptador rs232-usb transparente.... quizas asi el windows lo vea al ser mas transparente que un HID. Es que el USB HID por windows a saber como lo esta gestionando desde nodered.

    Creo que en algun hilo del ICC hago referencia a estos adaptadores: https://www.solarweb.net/forosolar/f...tml#post404677
    A mi son los que mejor me funcionan para nodered. Pero tienen que ser esos... no valen los TTL-USB.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  21. #21
    restaun está desconectado Forero
    Fecha de ingreso
    ago 2017
    Ubicación
    Zaragoza
    Mensajes
    29

    Predeterminado Re: [NODERED] Conexion con Axperts Voltronics por puerto USB.

    Hola.
    Es un VMIII de 3000W.
    Fui a comprar un adaptador y acabe comprando una Pi 4. Y a la primera.
    Ahora estoy con videos de Node-Red, para ver como funciona esto. Supongo que también le podre mandar ordenes.
    ¿Dónde puedo saber que protocolo usa? Y mas importante, ¿Sabéis de algún curso gratuito?
    Gracias por tu trabajo.
    Un saludo.

  22. #22
    Avatar de Tejota
    Tejota está desconectado Forero
    Fecha de ingreso
    ago 2015
    Ubicación
    Inmortal Ciudad de Zaragoza
    Mensajes
    3.411

    Predeterminado Re: [NODERED] Conexion con Axperts Voltronics por puerto USB.

    Cita Iniciado por restaun Ver mensaje
    Hola.
    Es un VMIII de 3000W.
    Fui a comprar un adaptador y acabe comprando una Pi 4. Y a la primera.
    Ahora estoy con videos de Node-Red, para ver como funciona esto. Supongo que también le podre mandar ordenes.
    ¿Dónde puedo saber que protocolo usa? Y mas importante, ¿Sabéis de algún curso gratuito?
    Gracias por tu trabajo.
    Un saludo.
    Pues usa el adaptador hacia serie con la PI4 y pasa del USB.
    El VMIII traia cable USB?? yo creo que solo trae cable DB9-RJ45. No se que adaptador habras pillado.

    Ordenes siempre le mandas ya sea para recabar datos o para modificar parametros.... el protocolo es P30. Lo que pasa que en los flujos que yo he puesto solo es para recabar datos. Tengo otros flujos para modificar parametros pero ya depende un poco del modelo que se use porque todos los modelos no usan los mismos parametros.

    Depende un poco de lo que quieras hacer y como lo plantees. Lo importante es tener solo una instance de puerto serie o usb y canalizar todo ahi con los nodos link. Los nodos link vienen muy bien para enganchar entre flujos. No es conveniente tener solo un flujo donde este todo. Hay que subdividir y modularizar todo que se pueda. Por ejemplo un flujo para recabar datos, otro flujo para configurar parametros, otro flujo para el hibrido haga cosas cuando se den ciertas condiciones, otro flujo para excedentes, y asi multiples flujos para cosas concretas..... despues con los nodos links vas canalizando todo hacia el puerto de comunicaciones, por eso digo que solo debe haber una instance de puerto y no duplicarlo por todos los flujos o en el mismo flujo.

    Y bueno despues tienes el dashboard (otro flujo) que eso es todo angular-js y ahi eso es un universo aparte. Puedes hacer el dashboard todo lo complejo que quieras o todo lo sencillo que quieras. El limite lo pones tu.

    Por ejemplo, este es un dashboard de los normalitos para un MAX hecho con NODERED:



    El MAX tiene una parametrizacion muy parecida al VMIII.

    Cursos de NODE RED hay muchos.... aplicados a la FV y a estos hibridos casi ninguno. Como digo depende mucho de lo que le quieras hacer al VMIII.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  23. #23
    restaun está desconectado Forero
    Fecha de ingreso
    ago 2017
    Ubicación
    Zaragoza
    Mensajes
    29

    Predeterminado Re: [NODERED] Conexion con Axperts Voltronics por puerto USB.

    Hola.
    Adaptador no he cogido por que tenia uno en el trabajo sin uso, que usaba para adquisición de datos de un PLC viejo.
    Es por el tema de la batería y su ciclado.
    Tengo conectado al hibrido 4 paquetes de baterías de 24V. Empaquetadas con 8 celdas lifepo4 prismáticas de 20A cada una. Crecerá la cantidad de ellas en cualquier momento.
    El problema que tengo es que solo las quiero intentar cargar por el sobrante solar. Pero el hibrido no las carga cuando se quedan sin carga si lo pongo en solo solar y por supuesto no hay sol. Quiero que pare de usar la batería y cambie a carga por red solo en caso de que baje de ciertos porcentajes,20% que cambie a red y en determinadas horas cargue de red(Tengo horario discriminatorio). He estado jugueteando hoy con la versión de prueba de ICC que tiene alguna posibilidad de cambios de horarios, pero no cambia la forma de cargar de la batería. Y si la pongo en solar primero, cuando baja de 100v las placas, empieza a cargar las baterías por red. Por ahora es lo que quiero automatizar.
    Un saludo.

  24. #24
    Avatar de Tejota
    Tejota está desconectado Forero
    Fecha de ingreso
    ago 2015
    Ubicación
    Inmortal Ciudad de Zaragoza
    Mensajes
    3.411

    Predeterminado Re: [NODERED] Conexion con Axperts Voltronics por puerto USB.

    Pues el ICC no te sirve... eso esta pensado para algo mas simple y standard.

    El BMS da datos de SOC, y ademas seran buenos.... supongo...

    El parametro 5 en que lo tienes ?? en USE?

    Supongo que el hibrido no se comunica con las baterias via cable exclusivo no?

    Teniendo acceso a los datos del BMS, el hibrido se puede manejar desde nodered en base a esos datos o en base a datos temporales pero es necesario que los datos de la condicion sean estables y reales para que el hibrido haga lo que tu quieres.

    Abre hilo nuevo para no contaminar este...
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  25. #25
    restaun está desconectado Forero
    Fecha de ingreso
    ago 2017
    Ubicación
    Zaragoza
    Mensajes
    29

    Predeterminado Re: [NODERED] Conexion con Axperts Voltronics por puerto USB.

    Ok, vecino. Jejejejejeje.

Página 1 de 2 12 ÚltimoÚltimo



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