Página 1 de 2 12 ÚltimoÚltimo
Resultados 1 al 25 de 28
  1. #1
    restaun está desconectado Forero
    Fecha de ingreso
    ago 2017
    Ubicación
    Zaragoza
    Mensajes
    29

    Predeterminado ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?

    Hola.
    Tengo un VMIII de 3000W de 24V(Huel). Tengo conectado al hibrido 4 paquetes de baterías de 24V. Empaquetadas con 8 celdas lifepo4 prismáticas de 20A cada una y con un BMS simple de los chinos. A el tengo conectado la lineal de luz, enchufes, microondas y nevera.

    El problema que tengo es que solo las quiero intentar cargar el en la batería el sobrante solar. Pero el hibrido no las carga cuando se quedan sin carga, por que el BMS que las desconecta, 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, a 20% que cambie a red y en determinadas horas cargue de red(Tengo horario discriminatorio).
    Me he comprado una Pi 4 y 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.
    He visto la programación por Node-Red, no lo he manejado nunca, y gracias a nuestro compañero Tejota, he conseguido comunicar el hibrido con la Pi 4 con un convertidor RS232 a USB.
    ¿Sabéis de algún curso, especialmente gratuito, que me ayude?
    Espera haberme explicado bien.
    Un saludo.

  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: ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?

    Supongo que algo de idea de programacion tienes no?
    NODE RED esta basado en javascript. Y el dashboard esta basado en angular-js.
    La mayoria de nodos estan hechos ya....solo hay q enlazarlos con los "enganches" correspondientes y adecuados.
    El dashboard ya es diseño particular.

    Aun sin tener mucha idea de programacion, si tienes los conceptos claros de como llevar los msg hacia donde quieres ya tienes mucho adelantado.

    Como imagino que querras manejar todo a distancia y con cierta seguridad, es indispensable que manejes la Rpi desde VNC con cuenta gratisware para 5 Rpis. Esto doy por sentado que lo tienes ya.

    Presupongo tambien que sabes importar-exportar flujos.

    Presupongo tambien que tienes clara la topologia de flujos usados en un hibrido de estos. Bueno yo tengo la mia propia que no tiene porque ser un dogma. Para mi es la mas logica. Para un hibrido de estos yo usaria un flujo por cada proceso en concreto para modularizar al maximo todo el sistema.

    O sea un flujo independiente para:

    1.- conexion con el hibrido (serie y CRC)
    2.- Datos de lectura del hibrido de varios comandos sacando un JSON de casi todos los parametros de lectura.
    3.- Datos de escritura del hibrido, o sea comandos de configuracion con confirmacion de hacerlos.
    4.- Dashboard para representacion de datos.
    5.- Proceso de automatismo para lo que sea. Un flujo para excedentes, otro para algoritmo de carga, otro para horarios, etc
    6.- Almacenamiento en bases de datos.
    7.- MQTT server y mandar datos al exterior.
    8.- Flujo para monitor de red si lo hubiera
    9.- Flujo para monitor de bateria si lo hubiera
    10.- Flujos para cualquier dispositivo que genere datos y haya que incorporarlo al sistema.

    No se si queda clara la topologia que uso en NODE RED para estos hibridos y en su extension a toda la instalacion.
    Todos estos flujos se pueden interconectar entre si con nodos link. Y si hay algun fallo en alguno de ellos es facilmente localizable y aislable hasta su depuracion total.

    Espero que lo que he escrito no te parezca ciencia ficcion.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

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

    Predeterminado Re: ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?

    No se si este flujo funcionara para el VMIII. Es el de peticion de datos.
    Código HTML:
    [{"id":"b64aea96.1edff8","type":"tab","label":"Peticion Datos ","disabled":false,"info":""},{"id":"656df515.ce263c","type":"debug","z":"b64aea96.1edff8","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1590,"y":180,"wires":[]},{"id":"ddd867bf.aaa238","type":"switch","z":"b64aea96.1edff8","name":"Repartidor Datos Lecturas","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"QID Numero de Serie","vt":"str"},{"t":"eq","v":"QPIGS Estado General","vt":"str"},{"t":"eq","v":"QVFW Version CPU1","vt":"str"},{"t":"eq","v":"QVFW3 Firmware CPU3","vt":"str"},{"t":"eq","v":"QFLAG Miscelanea","vt":"str"},{"t":"eq","v":"QPIRI Configuracion","vt":"str"},{"t":"eq","v":"QBEQI Ecualizacion Bateria","vt":"str"},{"t":"eq","v":"QPIWS Informacion Warnings","vt":"str"},{"t":"eq","v":"QMOD Modo de Trabajo","vt":"str"},{"t":"cont","v":"energiaproducidadiaria","vt":"str"},{"t":"cont","v":"cargadiariaentregada","vt":"str"}],"checkall":"true","repair":false,"outputs":11,"x":810,"y":280,"wires":[["76a777e.04fae88"],["2d622003.9654a"],["264b584b.b10538"],["1dde102c.915dd"],["cdaae9e3.e97ee8"],["2e42d19d.e68d4e"],["a432093f.aa8718"],["5363bd28.f55644"],["3876257f.ce03fa"],["4df9d04e.8ba69"],["b48a6da6.0a5a7"]]},{"id":"e1a904b2.57ebd8","type":"comment","z":"b64aea96.1edff8","name":"Repartiendo por topic","info":"","x":820,"y":160,"wires":[]},{"id":"cdaae9e3.e97ee8","type":"function","z":"b64aea96.1edff8","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":1070,"y":220,"wires":[["d496e68f.dd36b8"]]},{"id":"2d622003.9654a","type":"function","z":"b64aea96.1edff8","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));\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    }\n];","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1070,"y":100,"wires":[["d496e68f.dd36b8"]]},{"id":"2e42d19d.e68d4e","type":"function","z":"b64aea96.1edff8","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,"initialize":"","finalize":"","x":1060,"y":260,"wires":[["d496e68f.dd36b8"]]},{"id":"264b584b.b10538","type":"function","z":"b64aea96.1edff8","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":1080,"y":140,"wires":[["d496e68f.dd36b8"]]},{"id":"1dde102c.915dd","type":"function","z":"b64aea96.1edff8","name":"QVFW3 Firmware U3","func":"var output = msg.payload;\nlet Firmware3 = (output.slice(10, 15));\nreturn [\n    {\n        payload: {\n                Firmware3: Firmware3\n                 }\n    }\n]","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1080,"y":180,"wires":[["d496e68f.dd36b8"]]},{"id":"a432093f.aa8718","type":"function","z":"b64aea96.1edff8","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":1070,"y":300,"wires":[["d496e68f.dd36b8"]]},{"id":"76a777e.04fae88","type":"function","z":"b64aea96.1edff8","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":1080,"y":60,"wires":[["d496e68f.dd36b8"]]},{"id":"c02df4c7.2b8858","type":"comment","z":"b64aea96.1edff8","name":"Extractores","info":"","x":1070,"y":20,"wires":[]},{"id":"5363bd28.f55644","type":"function","z":"b64aea96.1edff8","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":1090,"y":340,"wires":[["8f499f21.db47a"]]},{"id":"d496e68f.dd36b8","type":"join","z":"b64aea96.1edff8","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":1350,"y":280,"wires":[["4610eb36.0cda24"]]},{"id":"3876257f.ce03fa","type":"function","z":"b64aea96.1edff8","name":"QMOD Extractor","func":"var output = msg.payload;\nlet mdts = output.slice(1, 2);\nlet mododetrabajo;\nif (mdts === \"P\") {\n    mododetrabajo = 0;\n} else if (mdts === \"S\") {\n    mododetrabajo = 1;\n} else if (mdts === \"L\") {\n    mododetrabajo = 2;\n} else if (mdts === \"B\") {\n    mododetrabajo = 3;\n} else if (mdts === \"F\") {\n    mododetrabajo = 4;\n} else if (mdts === \"H\") {\n    mododetrabajo = 5;\n}    \nreturn [{\n    payload: {\n         mododetrabajo: mododetrabajo\n             }\n        }\n       ];","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1060,"y":380,"wires":[["d496e68f.dd36b8"]]},{"id":"4df9d04e.8ba69","type":"function","z":"b64aea96.1edff8","name":"QED Energia diaria producida","func":"var energiadiaria = parseInt(msg.payload.slice(1, 9));\nreturn [\n    {\n        payload: {\n                energiadiaria: energiadiaria\n                 }\n    }\n];","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1110,"y":420,"wires":[["d496e68f.dd36b8"]]},{"id":"b48a6da6.0a5a7","type":"function","z":"b64aea96.1edff8","name":"QLD Carga diaria entregada","func":"var cargadiariaentregada = parseInt(msg.payload.slice(1, 9));\nreturn [\n    {\n        payload: {\n                cargadiariaentregada: cargadiariaentregada\n                 }\n    }\n];","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1100,"y":460,"wires":[["d496e68f.dd36b8"]]},{"id":"2b9df1a6.b0c3be","type":"inject","z":"b64aea96.1edff8","name":"QPIRI Configuracion","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"4","crontab":"","once":false,"onceDelay":0.1,"topic":"Configuracion","payload":"QPIRI","payloadType":"str","x":160,"y":280,"wires":[["c7c15806.b94a08"]]},{"id":"3f6fcf41.b0c9b","type":"inject","z":"b64aea96.1edff8","name":"QFLAG Miscelanea","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"4","crontab":"","once":false,"onceDelay":0.1,"topic":"Miscelanea","payload":"QFLAG","payloadType":"str","x":160,"y":240,"wires":[["c7c15806.b94a08"]]},{"id":"d8c50598.959d08","type":"inject","z":"b64aea96.1edff8","name":"QBEQI Ecualizacion Bateria","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"4","crontab":"","once":false,"onceDelay":0.1,"topic":"Ecualizacion Bateria","payload":"QBEQI","payloadType":"str","x":190,"y":320,"wires":[["c7c15806.b94a08"]]},{"id":"b8aababe.475c48","type":"inject","z":"b64aea96.1edff8","name":"QPIWS Informacion Warnings","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"4","crontab":"","once":false,"onceDelay":0.1,"topic":"Informacion Warnings","payload":"QPIWS","payloadType":"str","x":190,"y":360,"wires":[["c7c15806.b94a08"]]},{"id":"e31ca507.0337c8","type":"inject","z":"b64aea96.1edff8","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":120,"wires":[["c7c15806.b94a08"]]},{"id":"9f05d989.c8d1c8","type":"inject","z":"b64aea96.1edff8","name":"QID Numero de Serie","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"4","crontab":"","once":false,"onceDelay":0.1,"topic":"Numero de Serie","payload":"QID","payloadType":"str","x":160,"y":80,"wires":[["c7c15806.b94a08"]]},{"id":"df565146.bed17","type":"inject","z":"b64aea96.1edff8","name":"QVFW Firmware CPU1","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"4","crontab":"","once":false,"onceDelay":0.1,"topic":"Version CPU1","payload":"QVFW","payloadType":"str","x":170,"y":160,"wires":[["c7c15806.b94a08"]]},{"id":"1bd7eeb7.ecb4d1","type":"inject","z":"b64aea96.1edff8","name":"QVFW3 Firmware CPU3","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"4","crontab":"","once":false,"onceDelay":0.1,"topic":"Firmware CPU3","payload":"QVFW3","payloadType":"str","x":170,"y":200,"wires":[["c7c15806.b94a08"]]},{"id":"c7c15806.b94a08","type":"link out","z":"b64aea96.1edff8","name":"HaciaCRCTJ","links":["eb6e10a9.7a027"],"x":570,"y":360,"wires":[],"l":true},{"id":"90b89299.cbdb9","type":"comment","z":"b64aea96.1edff8","name":"Comandos de monitorizacion cada 4 segundos","info":"Comandos de Monitorizacion","x":220,"y":40,"wires":[]},{"id":"cca87d37.d68fe","type":"inject","z":"b64aea96.1edff8","name":"QMOD Modo de Trabajo","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"4","crontab":"","once":false,"onceDelay":0.1,"topic":"Modo de Trabajo","payload":"QMOD","payloadType":"str","x":170,"y":400,"wires":[["c7c15806.b94a08"]]},{"id":"5c798ce6.17be54","type":"inject","z":"b64aea96.1edff8","name":"DAT Ajuste de Fecha","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"00 04 * * *","once":false,"onceDelay":0.1,"topic":"ajustedetiempo","payload":"DAT","payloadType":"str","x":160,"y":480,"wires":[["4df499e8.7f7a28"]]},{"id":"4df499e8.7f7a28","type":"simpletime","z":"b64aea96.1edff8","name":"","mydate":true,"myymd":true,"myyear":true,"mymonth":true,"mymonthn":true,"mydom":true,"mydoy":true,"myday":true,"myhourpm":true,"myhour":true,"mytime":true,"mytimes":true,"myminute":true,"myminutes":true,"mysecond":true,"mymillis":true,"myepoch":true,"myrawdate":true,"mypm":true,"x":130,"y":520,"wires":[["c69d17ae.5977d8"]]},{"id":"c69d17ae.5977d8","type":"function","z":"b64aea96.1edff8","name":"FormatoTiempo","func":"var comando = msg.payload;\nvar aa = msg.myyear.slice(2,4);\nvar mm = msg.mymonthn;\nvar dd = msg.mydom;\nvar hh = msg.myhour;\nvar ff = msg.myminute;\nvar ss = msg.mysecond;\nmsg.payload = comando + aa + mm + dd + hh + ff + ss;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":300,"y":520,"wires":[["c7c15806.b94a08"]]},{"id":"ee035659.ac57c8","type":"inject","z":"b64aea96.1edff8","name":"Energiaproducidadiaria","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"60","crontab":"","once":false,"onceDelay":0.1,"topic":"energiaproducidadiaria","payload":"QED","payloadType":"str","x":170,"y":600,"wires":[["f63c64cd.1c87b8"]]},{"id":"f63c64cd.1c87b8","type":"simpletime","z":"b64aea96.1edff8","name":"","mydate":true,"myymd":true,"myyear":true,"mymonth":true,"mymonthn":true,"mydom":true,"mydoy":true,"myday":true,"myhourpm":true,"myhour":true,"mytime":true,"mytimes":true,"myminute":true,"myminutes":true,"mysecond":true,"mymillis":true,"myepoch":true,"myrawdate":true,"mypm":true,"x":370,"y":600,"wires":[["57ffd3db.e580cc"]]},{"id":"1cf7d00a.74e5a","type":"inject","z":"b64aea96.1edff8","name":"Cargadiariaentregada","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"60","crontab":"","once":false,"onceDelay":0.1,"topic":"cargadiariaentregada","payload":"QLD","payloadType":"str","x":170,"y":640,"wires":[["a6969e99.1427d"]]},{"id":"a6969e99.1427d","type":"simpletime","z":"b64aea96.1edff8","name":"","mydate":true,"myymd":true,"myyear":true,"mymonth":true,"mymonthn":true,"mydom":true,"mydoy":true,"myday":true,"myhourpm":true,"myhour":true,"mytime":true,"mytimes":true,"myminute":true,"myminutes":true,"mysecond":true,"mymillis":true,"myepoch":true,"myrawdate":true,"mypm":true,"x":370,"y":640,"wires":[["d703a84c.fe37a8"]]},{"id":"57ffd3db.e580cc","type":"function","z":"b64aea96.1edff8","name":"FormatoTiempo","func":"var comando = msg.payload;\nvar aa = msg.myyear;\nvar mm = msg.mymonthn;\nvar dd = msg.mydom;\nmsg.payload = comando + aa + mm + dd;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":540,"y":600,"wires":[["c7c15806.b94a08"]]},{"id":"d703a84c.fe37a8","type":"function","z":"b64aea96.1edff8","name":"FormatoTiempo","func":"var comando = msg.payload;\nvar aa = msg.myyear;\nvar mm = msg.mymonthn;\nvar dd = msg.mydom;\nmsg.payload = comando + aa + mm + dd;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":540,"y":640,"wires":[["c7c15806.b94a08"]]},{"id":"921aa426.3b2548","type":"comment","z":"b64aea96.1edff8","name":"Monitorizacion para Hibrido Axpert VMIII  ","info":"","x":660,"y":40,"wires":[]},{"id":"6d1f4850.9fadd8","type":"link out","z":"b64aea96.1edff8","name":"TodasLecturasAXPERTVMIII","links":[],"x":1560,"y":340,"wires":[],"l":true},{"id":"b1a6b89d.94b028","type":"comment","z":"b64aea96.1edff8","name":"Creando Objeto con todas las lecturas del Hibrido","info":"","x":1440,"y":240,"wires":[]},{"id":"4610eb36.0cda24","type":"function","z":"b64aea96.1edff8","name":"Id en topic num serie","func":"var topic = flow.get('numerodeserie');\nmsg.topic = topic;\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1560,"y":280,"wires":[["6d1f4850.9fadd8","656df515.ce263c"]]},{"id":"59ec335d.5a4a3c","type":"link in","z":"b64aea96.1edff8","name":"De Respuesta Hibrido","links":["7b391204.f208ac"],"x":580,"y":280,"wires":[["ddd867bf.aaa238"]],"l":true},{"id":"8f499f21.db47a","type":"rbe","z":"b64aea96.1edff8","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":1310,"y":340,"wires":[["d496e68f.dd36b8"]]}]
    Va linkado con este otro flujo que es de comunicaciones por puerto serie para ttyUSB0 :

    Código HTML:
    [{"id":"38c7c06f.91bde","type":"tab","label":"Conexion Hibrido","disabled":false,"info":""},{"id":"eb6e10a9.7a027","type":"link in","z":"38c7c06f.91bde","name":"Entrada CRCTJ","links":["c7c15806.b94a08"],"x":180,"y":120,"wires":[["9f934f99.81ad2"]],"l":true},{"id":"7b391204.f208ac","type":"link out","z":"38c7c06f.91bde","name":"Respuesta Hibrido","links":["59ec335d.5a4a3c"],"x":790,"y":120,"wires":[],"l":true},{"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":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":770,"y":200,"wires":[]},{"id":"9f934f99.81ad2","type":"function","z":"38c7c06f.91bde","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":380,"y":120,"wires":[["be30c92d.24a888"]]},{"id":"be30c92d.24a888","type":"serial request","z":"38c7c06f.91bde","name":"Puerto Serie","serial":"a4822951.b73cc8","x":550,"y":120,"wires":[["7b391204.f208ac","4905e6b9.67a498"]]},{"id":"5975b23d.51a56c","type":"comment","z":"38c7c06f.91bde","name":"Si usamos un conversor RS232-TCPIP visita:  https://www.solarweb.net/forosolar/fotovoltaica-sistemas-aislados-la-red/49199-nodered-conexion-voltronic-axpert-rs232-tcpip.html","info":"","x":640,"y":260,"wires":[]},{"id":"7a9a64fa.f22aac","type":"comment","z":"38c7c06f.91bde","name":"Es conveniente asignar el puerto serie a la direccion fisica del USB mediante udev en las rules y darle un nombre apropiado","info":"","x":650,"y":300,"wires":[]},{"id":"92c2239b.32646","type":"comment","z":"38c7c06f.91bde","name":"Para conexiones USB-USB via HID visita:  https://www.solarweb.net/forosolar/fotovoltaica-sistemas-aislados-la-red/48074-nodered-conexion-axperts-voltronics-puerto-usb.html","info":"","x":670,"y":340,"wires":[]},{"id":"a4822951.b73cc8","type":"serial-port","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":"10000"}]
    Ya diras si sale el JSON con datos.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

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

    Predeterminado Re: ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?

    Hola.
    Estaba usando lo que publicaste en el hilo de RS232 RJ45 para conectarlo, y acabo de terminar esto después de 3 horas investigando y estudiando codigo. Jejejejejejeje. No hay nada como saber.

    Código HTML:
    [{"id":"43f193be.a46afc","type":"tab","label":"DashboarVMIII","disabled":false,"info":""},{"id":"97242079.33461","type":"ui_switch","z":"43f193be.a46afc","name":"Carga solar","label":"Carga solar","tooltip":"","group":"41484e55.2483a","order":0,"width":0,"height":0,"passthru":true,"decouple":"false","topic":"Modo Carga Baterias","style":"","onvalue":"PCP03","onvalueType":"str","onicon":"","oncolor":"","offvalue":"PCP01","offvalueType":"str","officon":"","offcolor":"","x":110,"y":60,"wires":[["a10e76ef.fafe98"]]},{"id":"a10e76ef.fafe98","type":"link out","z":"43f193be.a46afc","name":"AOtrosFlows","links":["eb901e68.0fc9"],"x":290,"y":60,"wires":[],"l":true},{"id":"187817e4.2b7408","type":"ui_text","z":"43f193be.a46afc","group":"41484e55.2483a","order":1,"width":0,"height":0,"name":"","label":"Carga de bateria","format":"{{msg.payload.prioridadcargadorbatconf}}","layout":"row-spread","x":450,"y":120,"wires":[]},{"id":"223d05fa.6abc5a","type":"link in","z":"43f193be.a46afc","name":"DeOtrosFlows","links":["91a797cc.4d1e58"],"x":110,"y":120,"wires":[["ae3aab69.5c1248"]],"l":true},{"id":"ae3aab69.5c1248","type":"function","z":"43f193be.a46afc","name":"","func":"var output = msg.payload.prioridadcargadorbatconf\nlet batstatus =\"\"\nif (output==\"1\"){\n   batstatus = \"Utility\";\n}\nelse if(output==\"3\"){\n    batstatus = \"Solar\";\n}\nreturn [\n    {\n        payload: {\n                prioridadcargadorbatconf: batstatus\n                 }\n    }\n]","outputs":1,"noerr":0,"x":270,"y":120,"wires":[["187817e4.2b7408"]]},{"id":"41484e55.2483a","type":"ui_group","z":"","name":"Parametros","tab":"87e6f9e9.429d98","order":2,"disp":true,"width":"6","collapse":false},{"id":"87e6f9e9.429d98","type":"ui_tab","z":"","name":"VMIII","icon":"dashboard","disabled":false,"hidden":false}]

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

    Predeterminado Re: ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?

    El que pone las condiciones es el BMS. Tienes datos del BMS?? sabes como sacarlos??

    Date cuenta que el hibrido hara lo que quieres que haga en funcion de los datos que de el BMS.

    La parte del hibrido es facil de hacer pero hace falta saber cuando tiene que hacerlo y eso es con los datos del BMS.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  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: ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?

    Ese dato del 20%, supongo que de la carga de la bateria, de donde lo sacas?? del hibrido? de algun display del bms?
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

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

    Predeterminado Re: ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?

    Hola.
    Aquí los datos del BMS.

    ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?-datos-bms-1-.jpg

    Lo tengo configurado en Bulk a 28,4 cambie a batería en 27V y retorne a red a 23V.
    Ya estoy haciendo el dashboard. Esto va poco a poco. Ahora a ver como lo automatizo.
    Por cierto, hay dos parámetros que me dan NULL. El QDE y el QLD.
    Un saludo y gracias.

  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: ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?

    Cita Iniciado por restaun Ver mensaje
    Hola.
    Aquí los datos del BMS.

    Pulsa en la imagen para verla en tamaño completo

Nombre: datos bms (1).jpg
Visitas: 86
Tamaño: 161,3 KB
ID: 24102

    Lo tengo configurado en Bulk a 28,4 cambie a batería en 27V y retorne a red a 23V.
    Ya estoy haciendo el dashboard. Esto va poco a poco. Ahora a ver como lo automatizo.
    Por cierto, hay dos parámetros que me dan NULL. El QDE y el QLD.
    Un saludo y gracias.
    Me parece todo estupendo.... pero me referia a si los datos del BMS los saca por algun sitio ademas de la pantalla que lleva. Es que esos datos hacen falta para meterlos en el nodered y hacer el automatismo que sea menester.

    - - - - - - - - - - - - - - - - - - -

    Cita Iniciado por restaun Ver mensaje

    Lo tengo configurado en Bulk a 28,4 cambie a batería en 27V y retorne a red a 23V.
    Ya estoy haciendo el dashboard. Esto va poco a poco. Ahora a ver como lo automatizo.
    Por cierto, hay dos parámetros que me dan NULL. El QDE y el QLD.
    Un saludo y gracias.
    El QDE y el QLD lo llevan el MAX... suponia que el VMIII lo llevaria tambien.... a no ser que tengan otra nomenclatura de comando. El reloj esta puesto en hora?? esos comandos son para los acumulativos diarios de energia generada por placas y entregada a cargas. Tambien hay acumulativos de meses, años y total.
    Hay que instalar el nodo simpletime para que funcione. Estoy suponiendo que los comandos son iguales que el MAX. Y podria ser que no fuera asi.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

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

    Predeterminado Re: ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?

    A, no. Es un BMS chino con balanceador. No tiene puerto de salida de datos.
    ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?-bms-2-.jpg

    Esta en hora, pero no los coge. El PDF Del protocoloP30 no salen esos datos. Sin embargo ICC si los coge, los tiene que tener en otro formato.

    ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?-captura.jpg

    Una captura del ICC.

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

    Predeterminado Re: ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?

    Cita Iniciado por restaun Ver mensaje
    A, no. Es un BMS chino con balanceador. No tiene puerto de salida de datos.
    Pulsa en la imagen para verla en tamaño completo

Nombre: bms (2).jpg
Visitas: 145
Tamaño: 83,1 KB
ID: 24103

    Esta en hora, pero no los coge. El PDF Del protocoloP30 no salen esos datos. Sin embargo ICC si los coge, los tiene que tener en otro formato.
    Pues son los mismos comandos que yo he puesto en el flow. Has instalado el simpletime??

    QEDyyyymmdd: Query PV Energy for the given day. yyyy must be the current year, mm must be the current month, and dd must be no later than the current day. Example: "QED20200929" without the quotes but with the 2 usual CRC characters and a carriage return for the PV energy generated on 2020/Sep/29. Result example "(00000123" for 123 Wh. There are always 8 digits after the '('. The result will also have the usual 2 CRC characters and carriage return and no quotes.
    QEMyyyymm: Query PV Energy for the given month. yyyy must be the current year. Same result format as QED.
    QEYyyyy: Query PV energy for the given year. There is storage for a few years, possibly restricted to 2017-2026. Result is in watt·hours, but the least significant two digits will always be zero (the firmware stores the energy internally in hundreds of Wh, and multiplies by 100 to display the result in Wh).
    QET: Query total PV energy grand total since switch-on.
    QLD, QLM, QLY, QLT: same as for the QEx commands, but reports load energy instead of PV energy.
    Pues sin datos del BMS como vas a condicionar los comandos del hibrido??

    Por ejemplo, si el SOC de las baterias te dice el BMS que estan al 20% y quieres pasar a modo line, como metes ese dato del 20% al flujo??
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  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: ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?

    Cita Iniciado por restaun Ver mensaje
    Sin embargo ICC si los coge, los tiene que tener en otro formato.

    Pulsa en la imagen para verla en tamaño completo

Nombre: Captura.jpg
Visitas: 64
Tamaño: 60,3 KB
ID: 24104

    Una captura del ICC.
    En esa foto no se ve nada de esos comandos... El primer string es una respuesta a un QPIGS, la segunda string es una respuesta a QMOD y la tercera string no se lo que es.
    De todas formas ICC calcula esos datos de forma interna.... no creo que los pille del hibrido.
    Los comandos del VMIII de los acumulativos esos son como te he puesto y como he incorporado en el flujo. El formato de tiempo lo da el nodo simpletime... si no lo tienes instalado no funcionaran.
    Habria que activar el depurador que he puesto en el flujo de comunicaciones a ver cuando entren esos comandos que es lo que responde el hibrido... si hay NAKsss es que algo va mal.
    Esos comandos se repiten cada minuto mas o menos.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

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

    Predeterminado Re: ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?

    Esto es lo que recibo.

    QLD20210130 cargadiariaentregada : msg : Object
    object
    _msgid: "ba899584.cfe248"
    topic: "QLD20210130 cargadiariaentregada"
    mydate: "Sat Jan 30 2021"
    myymd: "2021-01-30"
    myyear: "2021"
    mymonth: "Jan"
    mymonthn: "01"
    mydom: "30"
    mydoy: "30"
    myday: "Sat"
    myhourpm: "12"
    myhour: "00"
    mytime: "00:28"
    mytimes: "00:28:58"
    myminute: "28"
    myminutes: "28:58"
    mysecond: "58"
    mymillis: "483"
    myepoch: "1611962938483"
    myrawdate: "2021-01-29T23:28:58.483Z"
    mypm: "AM"
    _event: "node:382496a.778b56a"
    request_payload: buffer[14]
    [0 … 9]
    0: 0x51
    1: 0x4c
    2: 0x44
    3: 0x32
    4: 0x30
    5: 0x32
    6: 0x31
    7: 0x30
    8: 0x31
    9: 0x33
    [10 … 13]
    10: 0x30
    11: 0xb5
    12: 0x9e
    13: 0xd
    request_msgid: "ba899584.cfe248"
    payload: string
    (NAKss
    port: "/dev/ttyUSB0"
    status: "OK"



    QED20210130 energiaproducidadiaria : msg : Object
    object
    _msgid: "94156db3.db8b4"
    topic: "QED20210130 energiaproducidadiaria"
    mydate: "Sat Jan 30 2021"
    myymd: "2021-01-30"
    myyear: "2021"
    mymonth: "Jan"
    mymonthn: "01"
    mydom: "30"
    mydoy: "30"
    myday: "Sat"
    myhourpm: "12"
    myhour: "00"
    mytime: "00:28"
    mytimes: "00:28:56"
    myminute: "28"
    myminutes: "28:56"
    mysecond: "56"
    mymillis: "132"
    myepoch: "1611962936132"
    myrawdate: "2021-01-29T23:28:56.132Z"
    mypm: "AM"
    _event: "node:382496a.778b56a"
    request_payload: buffer[14]
    [0 … 9]
    0: 0x51
    1: 0x45
    2: 0x44
    3: 0x32
    4: 0x30
    5: 0x32
    6: 0x31
    7: 0x30
    8: 0x31
    9: 0x33
    [10 … 13]
    10: 0x30
    11: 0x90
    12: 0x90
    13: 0xd
    request_msgid: "94156db3.db8b4"
    payload: string
    (NAKss
    port: "/dev/ttyUSB0"
    status: "OK"

  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: ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?

    Pues el comando esta bien mandado.... Si responde NAKss es que ese comando no vale para el VMIII. O es otro o tiene otro formato.... pero ese texto en ingles que te he pasado antes es de los que lo han probado con equipos parecidos con ese display.

    Habria que snifear las comunicaciones con un watchpower a ver que comandos sobre ese parametro esta mandando.... pero se me hace muy raro que sean diferentes. Voy a investigar algo mas.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

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

    Predeterminado Re: ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?

    Pues sin datos del BMS como vas a condicionar los comandos del hibrido??

    Por ejemplo, si el SOC de las baterías te dice el BMS que están al 20% y quieres pasar a modo line, como metes ese dato del 20% al flujo??
    Eso es lo que estoy intentando hacer ahora. Por ahora ye he puesto un interruptor y un horario y por ahora funciona. Estoy terminando el dashboard y configurando cosas mientras lo hago. Va lento. Es la primera vez que hago esto.

    Con estos parámetros de las baterías y del BMS son con los que he parametrizado por ahora el hibrido.
    ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?-captura.jpg

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

    Predeterminado Re: ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?

    Lo ideal seria que el BMS mandara datos a la Rpi (SOC, voltajes y amperios). No te va a quedar mas remedio que calcular el SOC en la Rpi en base a los voltajes y amperios que entran y salen de las baterias. O bien fiarte del SOC que da el hibrido pero ese va en funcion solo del voltaje y no es nada preciso.

    Para un balance correcto tendrias que sacar la potencia hacia baterias (amperioscargabatxVbat) y la potencia desde baterias (amperiosdescargabatxVbat) Hacer un timeseries y asi por lo menos tener un SOC muy aproximado en el tiempo para usarlo en la automatizacion del hibrido.
    Si en el dashboard vas a meter graficas timeseries te recomiendo que instales emoncms... gestiona muy bien los datos procedentes de nodered y despues puedes meter las graficas en los dashboard con iframe.

    Por ejemplo, esto es un dashboard de nodered con grafica de emoncms por timeseries incrustada con iframe en un nodo ui_template.

    El UI_TEMPLATE tendria este codigo dentro del flujo del dashboard usado:

    Código HTML:
    [{"id":"5b6d961.d37ec68","type":"ui_template","z":"f6f2187d.f17ca8","group":"f1976897.ed7818","name":"I-V  BMV700","order":2,"width":0,"height":0,"format":"<iframe id='sociv' style='width:1200px; height:500px;' frameborder='0' scrolling='no' marginheight='0' marginwidth='0' src='https://internetdemiscosas.es/emoncms/dashboard/view/sociv'></iframe>","storeOutMessages":true,"fwdInMessages":true,"resendOnRefresh":true,"templateScope":"local","x":1210,"y":80,"wires":[[]]},{"id":"f1976897.ed7818","type":"ui_group","z":"","name":"Datos BMV700","tab":"84439381.6a9b1","order":2,"disp":false,"width":23,"collapse":false},{"id":"84439381.6a9b1","type":"ui_tab","z":"","name":"Baterias","icon":"dashboard","order":2,"disabled":false,"hidden":false}]
    Seria la grafica I-V-SOC del algoritmo de carga procedente del emoncms y encajada a 1200x500 pixeles.



    Instalar el emoncms no es sencillo.... aunque han puesto scripts para instalar solo las partes necesarias ... invita un poco a duda.

    Respecto a los comandos QEx y QLx .... En el VMIII q tienes tu, en el display puedes sacar los totales generados en el dia, mes y año? Es que creo que esos comandos no los implantaron hasta cierta version del display. Si tu VMIII es de los primeros igual no lo lleva y por eso da NAKss. De los dos firmwares que lleva el VMIII, el segundo que numeracion lleva? Esa es la del display, la primera es de la placa de control del hibrido.

    Por si te sirve de ayuda.... para crear una tabla simple en un nodo UI_TEMPLATE te paso codigo de esa tabla que se ve debajo del status de bateria. Metiendole al nodo los msg.payload adecuados y cambiando los labels y la "decoracion" puedes hacer la tabla que quieras.

    Código HTML:
    [{"id":"d1e2a23.905e96","type":"ui_template","z":"f6f2187d.f17ca8","group":"9c3b7e5.44c848","name":"Tabla Datos Baterias","order":3,"width":10,"height":4,"format":"<table id=\"table\" border=\"2\">\n    <caption><font color=\"red\"><font size=\"5\"><center>Parametros dinamicos en las Baterias</center></font></font></caption>\n        <tbody>\n            <tr>\n <td><font color=\"skyblue\"><center>Temperatura de las Baterias</center></font></td>\n <td><font color=\"green\"><center>{{msg.payload.temperaturabaterias}} ºC</center></font></td>\n            </tr>\n            <tr>\n <td><font color=\"skyblue\"><center>Humedad Relativa de las Baterias</center></font></td>\n <td><font color=\"green\"><center>{{msg.payload.humedadbaterias}} %</center></font></td>\n            </tr>\n            <tr>\n <td><font color=\"skyblue\"><center>Voltaje de Absorcion recalculado a {{msg.payload.temperaturabaterias}} ºC</center></font></td>\n <td><font color=\"green\"><center>{{msg.payload.Vabscompensado}} Voltios</center></font></td>\n            </tr>\n            <tr>\n <td><font color=\"skyblue\"><center>Voltaje de Flotacion recalculado a {{msg.payload.temperaturabaterias}} ºC</center></font></td>\n <td><font color=\"green\"><center>{{msg.payload.Vflotcompensado}} Voltios</center></font></td>\n            </tr>\n            <tr>\n <td><font color=\"skyblue\"><center>Voltaje de Ecualizacion recalculado a {{msg.payload.temperaturabaterias}} ºC</center></font></td>\n <td><font color=\"green\"><center>{{msg.payload.Veqcompensado}} Voltios</center></font></td>\n            </tr>\n     </tbody>\n</table>\n\n","storeOutMessages":false,"fwdInMessages":true,"resendOnRefresh":true,"templateScope":"local","x":480,"y":400,"wires":[[]]},{"id":"9c3b7e5.44c848","type":"ui_group","z":"","name":"Status Bateria","tab":"84439381.6a9b1","order":1,"disp":false,"width":"10","collapse":false},{"id":"84439381.6a9b1","type":"ui_tab","z":"","name":"Baterias","icon":"dashboard","order":2,"disabled":false,"hidden":false}]
    Ale ya tienes tajo. Ya puedes ver que esto de los dashboard da mucho de si.

    - - - - - - - - - - - - - - - - - - -

    Se me olvido decirte que es bueno hacerte copias de seguridad de los flujos. Te lo digo porque si en algun deploy se te queda atascado porque hayas forzado algun nodo, es posible que pierdas todos los flujos hechos.

    Para evitar estas cosas, mirate la foto. Hazte un cp de vez en cuando del json de los flujos y si se quedara pillado y tuvieras que reiniciar el nodered, el json de los flujos se te quedara vacio y si tienes una copia pues la renombras y restart el nodered... por lo menos no perderas todo.




    Lo de Backup es porque es una Rpi que tiene de hostname Backup.... no es porque el archivo se llame asi "per se". El nombre del json de los flujos sera flows_hostname.json
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

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

    Predeterminado Re: ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?

    Emoncmque? jejeje.
    Ya lo tengo instalado y he conseguido que se hablen entre ellos. Peeeeero, ahí se queda por ahora, otra cosa para aprender Buf.
    Si que salen los datos de acumulados. los firmwares que tengo es el 20.58 es el 1.12 y otro que es el 0.21
    Tengo esto hecho, y mas también.

    Código HTML:
    [{"id":"e22985f6.4085d8","type":"tab","label":"Salida AC","disabled":false,"info":""},{"id":"34abc3c4.374a2c","type":"link in","z":"e22985f6.4085d8","name":"A dashboard","links":["e12ad3f.350e43"],"x":95,"y":240,"wires":[["2b809bc5.ff2674","f5060bd4.65b288","35cec06e.e936","1e69a65d.9d7b4a","9d90a923.3b6648","8ca3e799.b0ad88","6bee28e3.f8af18"]]},{"id":"2b809bc5.ff2674","type":"ui_text","z":"e22985f6.4085d8","group":"e9ad68a.6d77d98","order":1,"width":0,"height":0,"name":"Voltaje de salida","label":"Voltaje","format":"{{msg.payload.voltajesalida}} V","layout":"row-center","x":360,"y":140,"wires":[]},{"id":"f5060bd4.65b288","type":"ui_text","z":"e22985f6.4085d8","group":"e9ad68a.6d77d98","order":3,"width":0,"height":0,"name":"Frecuencia salida","label":"Frecuencia","format":"{{msg.payload.frecuenciasalida}} Hz","layout":"row-center","x":370,"y":180,"wires":[]},{"id":"35cec06e.e936","type":"debug","z":"e22985f6.4085d8","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","x":230,"y":660,"wires":[]},{"id":"9d90a923.3b6648","type":"ui_text","z":"e22985f6.4085d8","group":"e9ad68a.6d77d98","order":4,"width":0,"height":0,"name":"Potencia activa","label":"Potencia activa","format":"{{msg.payload.potenciaactivasalida}} w","layout":"row-center","x":360,"y":260,"wires":[]},{"id":"1e69a65d.9d7b4a","type":"ui_text","z":"e22985f6.4085d8","group":"e9ad68a.6d77d98","order":2,"width":0,"height":0,"name":"Potencia aparente","label":"Potencia aparente","format":"{{msg.payload.potenciaparentesalida}} w","layout":"row-center","x":370,"y":220,"wires":[]},{"id":"aaf7e2fc.d5ed9","type":"link out","z":"e22985f6.4085d8","name":"De dashboard","links":["11ec8945.405447"],"x":1280,"y":500,"wires":[],"l":true},{"id":"cd1f1939.25a408","type":"ui_time_scheduler","z":"e22985f6.4085d8","group":"e9ad68a.6d77d98","name":"","startDay":"1","refresh":60,"devices":["Horario SBR","Horario RSB","Horario SRB"],"customPayload":false,"eventMode":false,"sendTopic":false,"outputs":4,"order":9,"width":10,"height":"2","x":590,"y":500,"wires":[["a2878f79.11074"],["155e7fa8.6d1b9"],["245e2561.6fbada"],["2d22b178.f94fce"]]},{"id":"155e7fa8.6d1b9","type":"rbe","z":"e22985f6.4085d8","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":810,"y":460,"wires":[["36e9608a.41bb9"]]},{"id":"a2878f79.11074","type":"file","z":"e22985f6.4085d8","name":"WriteFile","filename":"/home/pi/Documents/horarioAC.txt","appendNewline":true,"createDir":true,"overwriteFile":"true","encoding":"none","x":820,"y":420,"wires":[[]]},{"id":"96fae642.af9fc8","type":"inject","z":"e22985f6.4085d8","name":"FireAfterReboot","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":true,"onceDelay":0.1,"x":280,"y":500,"wires":[["e4afeda1.c08d1"]]},{"id":"e4afeda1.c08d1","type":"file in","z":"e22985f6.4085d8","name":"ReadFile","filename":"/home/pi/Documents/horarioAC.txt","format":"utf8","chunk":false,"sendError":false,"encoding":"none","x":440,"y":500,"wires":[["cd1f1939.25a408"]]},{"id":"36e9608a.41bb9","type":"ui_button","z":"e22985f6.4085d8","name":"Salida solar, bateria, red","group":"e9ad68a.6d77d98","order":6,"width":0,"height":0,"passthru":true,"label":"Solar, bateria, red","tooltip":"","color":"","bgcolor":"","icon":"","payload":"POP02","payloadType":"str","topic":"","x":1010,"y":460,"wires":[["aaf7e2fc.d5ed9"]]},{"id":"67dc856b.cce64c","type":"ui_button","z":"e22985f6.4085d8","name":"Salida red,solar, bateria","group":"e9ad68a.6d77d98","order":7,"width":0,"height":0,"passthru":true,"label":"Red, solar, bateria","tooltip":"","color":"","bgcolor":"","icon":"","payload":"POP00","payloadType":"str","topic":"","x":1010,"y":500,"wires":[["aaf7e2fc.d5ed9"]]},{"id":"1692f690.37e4d9","type":"ui_button","z":"e22985f6.4085d8","name":"Salida solar, red, bateria","group":"e9ad68a.6d77d98","order":8,"width":0,"height":0,"passthru":true,"label":"Solar, red, bateria","tooltip":"","color":"","bgcolor":"","icon":"","payload":"POP01","payloadType":"str","topic":"","x":1010,"y":540,"wires":[["aaf7e2fc.d5ed9"]]},{"id":"7efd091b.0adca8","type":"ui_text","z":"e22985f6.4085d8","group":"e9ad68a.6d77d98","order":5,"width":0,"height":0,"name":"","label":"Salida en","format":"{{msg.payload.prioridadfuentesalidaconf}}","layout":"row-center","x":560,"y":300,"wires":[]},{"id":"8ca3e799.b0ad88","type":"function","z":"e22985f6.4085d8","name":"Modo de salida AC","func":"var output = msg.payload.prioridadfuentesalidaconf\nlet salidastatus =\"\"\nif (output==\"1\"){\n   salidastatus = \"Solar, red, bateria\";\n}\nelse if(output==\"2\"){\n    salidastatus = \"Solar, bateria, red\";\n}else {\n    salidastatus = \"Red, solar, bateria\"\n}\nreturn [\n    {\n        payload: {\n                prioridadfuentesalidaconf: salidastatus\n                 }\n    }\n]","outputs":1,"noerr":0,"x":370,"y":300,"wires":[["7efd091b.0adca8"]]},{"id":"2d22b178.f94fce","type":"rbe","z":"e22985f6.4085d8","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":810,"y":540,"wires":[["1692f690.37e4d9"]]},{"id":"245e2561.6fbada","type":"rbe","z":"e22985f6.4085d8","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":810,"y":500,"wires":[["67dc856b.cce64c"]]},{"id":"6bee28e3.f8af18","type":"switch","z":"e22985f6.4085d8","name":"","property":"payload.capacidadbateria","propertyType":"msg","rules":[{"t":"lt","v":"10","vt":"num"}],"checkall":"true","repair":false,"outputs":1,"x":330,"y":360,"wires":[["4ecd7956.bb59a8"]]},{"id":"4ecd7956.bb59a8","type":"change","z":"e22985f6.4085d8","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":480,"y":360,"wires":[["2d22b178.f94fce"]]},{"id":"e9ad68a.6d77d98","type":"ui_group","z":"","name":"Salida AC","tab":"87e6f9e9.429d98","order":4,"disp":true,"width":10,"collapse":false},{"id":"87e6f9e9.429d98","type":"ui_tab","z":"","name":"VMIII","icon":"dashboard","disabled":false,"hidden":false}]
    Aquí tengo puesto un switch para el cambio de 20% de bateria

    Tambien una pestaña de bateria.

    Código HTML:
    [{"id":"43f193be.a46afc","type":"tab","label":"Bateria","disabled":false,"info":""},{"id":"a10e76ef.fafe98","type":"link out","z":"43f193be.a46afc","name":"De dashboard","links":["11ec8945.405447"],"x":1120,"y":420,"wires":[],"l":true},{"id":"187817e4.2b7408","type":"ui_text","z":"43f193be.a46afc","group":"41484e55.2483a","order":4,"width":0,"height":0,"name":"","label":"Carga de bateria en","format":"{{msg.payload.prioridadcargadorbatconf}}","layout":"row-center","x":570,"y":40,"wires":[]},{"id":"223d05fa.6abc5a","type":"link in","z":"43f193be.a46afc","name":"A dashboard","links":["e12ad3f.350e43"],"x":90,"y":120,"wires":[["ae3aab69.5c1248","647a5df1.53c014","48797279.302a3c","15d52ff0.0e53e"]],"l":true},{"id":"ae3aab69.5c1248","type":"function","z":"43f193be.a46afc","name":"Modo de carga de bateria","func":"var output = msg.payload.prioridadcargadorbatconf\nlet batstatus =\"\"\nif (output==\"1\"){\n   batstatus = \"Primero solar\";\n}\nelse if(output==\"3\"){\n    batstatus = \"Solar\";\n}else {\n    batstatus = \"Red y solar\"\n}\nreturn [\n    {\n        payload: {\n                prioridadcargadorbatconf: batstatus\n                 }\n    }\n]","outputs":1,"noerr":0,"x":350,"y":40,"wires":[["187817e4.2b7408"]]},{"id":"647a5df1.53c014","type":"ui_gauge","z":"43f193be.a46afc","name":"VoltBat","group":"41484e55.2483a","order":3,"width":5,"height":4,"gtype":"gage","title":"Voltaje","label":" Vdc","format":"{{msg.payload.voltajebateria}}","min":"22","max":"29","colors":["#ffff00","#00ff00","#ff0000"],"seg1":"24,3","seg2":"27","x":300,"y":100,"wires":[]},{"id":"48797279.302a3c","type":"function","z":"43f193be.a46afc","name":"Intensidad de bateria","func":"var carga =parseFloat(msg.payload.amperioscargabat)\nvar descarga = parseFloat(msg.payload.amperiosdescargabat)\nlet ampbat =0\nif(carga>0){\n    ampbat=carga;\n}else if (descarga>0){\n    ampbat =-descarga;\n}\n\nreturn [\n    {\n        payload: {\n                ampbat: ampbat\n                 }\n    }\n]","outputs":1,"noerr":0,"x":340,"y":160,"wires":[["f8395019.cac18"]]},{"id":"f8395019.cac18","type":"ui_gauge","z":"43f193be.a46afc","name":"Consumo de bateria","group":"41484e55.2483a","order":2,"width":5,"height":4,"gtype":"gage","title":"Consumo ","label":"Amp","format":"{{msg.payload.ampbat}}","min":"-150","max":"150","colors":["#ff0000","#00e600","#ff0000"],"seg1":"-30","seg2":"30","x":560,"y":160,"wires":[]},{"id":"cafc4f0c.c87d8","type":"file","z":"43f193be.a46afc","name":"WriteFile","filename":"/home/pi/Documents/thorariobateria.txt","appendNewline":true,"createDir":true,"overwriteFile":"true","encoding":"none","x":620,"y":340,"wires":[[]]},{"id":"71f78df9.350574","type":"inject","z":"43f193be.a46afc","name":"FireAfterReboot","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":true,"onceDelay":0.1,"x":120,"y":420,"wires":[["5620b7db.0030a8"]]},{"id":"5620b7db.0030a8","type":"file in","z":"43f193be.a46afc","name":"ReadFile","filename":"/home/pi/Documents/thorariobateria.txt","format":"utf8","chunk":false,"sendError":false,"encoding":"none","x":280,"y":420,"wires":[["374bd03f.e686"]]},{"id":"15d52ff0.0e53e","type":"ui_level","z":"43f193be.a46afc","group":"41484e55.2483a","order":1,"width":0,"height":0,"name":"","label":"SOC","colorHi":"#00ff00","colorWarn":"#00c800","colorNormal":"#00b33c","colorOff":"#ff0000","min":0,"max":100,"segWarn":"20","segHigh":"80","unit":"%","layout":"sh","channelA":"","channelB":"","decimals":0,"animations":"rocket","shape":"3","colorschema":"fixed","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"1","colorFromTheme":true,"textAnimations":true,"hideValue":false,"tickmode":"auto","peakmode":false,"property":"payload.capacidadbateria","peaktime":3000,"x":290,"y":220,"wires":[]},{"id":"fcc8795b.648f88","type":"ui_button","z":"43f193be.a46afc","name":"Carga solar","group":"41484e55.2483a","order":5,"width":0,"height":0,"passthru":true,"label":"Solar","tooltip":"","color":"","bgcolor":"","icon":"","payload":"PCP03","payloadType":"str","topic":"","x":810,"y":380,"wires":[["a10e76ef.fafe98"]]},{"id":"1f6247aa.f4e178","type":"ui_button","z":"43f193be.a46afc","name":"Carga red y solar","group":"41484e55.2483a","order":6,"width":0,"height":0,"passthru":true,"label":"Red y solar","tooltip":"","color":"","bgcolor":"","icon":"","payload":"PCP02","payloadType":"str","topic":"","x":830,"y":420,"wires":[["a10e76ef.fafe98"]]},{"id":"8424095c.481c68","type":"ui_button","z":"43f193be.a46afc","name":"Prim. solar","group":"41484e55.2483a","order":7,"width":0,"height":0,"passthru":true,"label":"Prim. solar","tooltip":"","color":"","bgcolor":"","icon":"","payload":"PCP01","payloadType":"str","topic":"","x":810,"y":460,"wires":[["a10e76ef.fafe98"]]},{"id":"374bd03f.e686","type":"ui_time_scheduler","z":"43f193be.a46afc","group":"41484e55.2483a","name":"","startDay":"1","refresh":60,"devices":["Horario solar","Horario red","Horario solar, red"],"customPayload":false,"eventMode":false,"sendTopic":false,"outputs":4,"order":9,"width":10,"height":"1","x":430,"y":420,"wires":[["cafc4f0c.c87d8"],["e7d1680.b332098"],["da0a71ba.e6ce9"],["bb94d753.f45f08"]]},{"id":"e7d1680.b332098","type":"rbe","z":"43f193be.a46afc","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":630,"y":380,"wires":[["fcc8795b.648f88"]]},{"id":"bb94d753.f45f08","type":"rbe","z":"43f193be.a46afc","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":630,"y":460,"wires":[["8424095c.481c68"]]},{"id":"da0a71ba.e6ce9","type":"rbe","z":"43f193be.a46afc","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":630,"y":420,"wires":[["1f6247aa.f4e178"]]},{"id":"41484e55.2483a","type":"ui_group","z":"","name":"Bateria","tab":"87e6f9e9.429d98","order":3,"disp":true,"width":"10","collapse":false},{"id":"87e6f9e9.429d98","type":"ui_tab","z":"","name":"VMIII","icon":"dashboard","disabled":false,"hidden":false}]
    Voy haciendo cosillas.

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

    Predeterminado Re: ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?

    Ya veo que te vas soltando...

    No hay mayor satisfaccion que crear tu propio control sin depender de nadie.

    Estas empleando como condicion el SOC que da el hibrido. Ya te digo que no es muy exacto.

    Por otra parte, los cambios SBU, SUB, USB estan correctos pero ten en cuenta que cuando se produce un cambio de esos, el hibrido conmuta un rele... es el rele de potencia de salida. Como tienes los % de carga de ACOUTPUT del QPIGS cada 4 sec, yo añadira una condicion && al SOC contemplando que se produzca el cambio cuando el SOC sea el que configures y (&&) el % de carga ACOUTPUT sea por ejemplo <= 5 o un porcentaje bajo para que el rele no conmute por ejemplo con un 70% de carga y no sufra. No deberia de pasar nada con un 70% de carga y el rele conmutando pero si lo hace con 5% o un 10% de carga durara mas.

    Respecto a los acumulativos de generacion y carga.... me da que aunque esten en display no los han metido en firmware con esa version que tienes. De que fecha es ese hibrido?? Eso viene en los digitos del quinto al octavo del numero de serie. He visto un firmware del 2018 del VMIII y no vienen esos comandos. Si asi fuera habra que quitarlos del flujo de peticion de datos y del nodo separador de extractores. Esos acumulativos habria que calcularlos con el emoncms.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

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

    Predeterminado Re: ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?

    Ya me has echo tener que buscar como hacer puertas lógicas ..... He instalado un nodo lógico. Como es lógico en cosas de programación, hace falta.
    Lo compre en el 2018, y pone 1808. Así que no los tendré. ¿Y actualizarlo? Sera muy engorroso, supongo.
    El calculo con el SOC será temporal asta que pueda hacerlo de mejor manera.

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

    Predeterminado Re: ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?

    Cita Iniciado por restaun Ver mensaje
    Ya me has echo tener que buscar como hacer puertas lógicas ..... He instalado un nodo lógico. Como es lógico en cosas de programación, hace falta.
    Lo compre en el 2018, y pone 1808. Así que no los tendré. ¿Y actualizarlo? Sera muy engorroso, supongo.
    El calculo con el SOC será temporal asta que pueda hacerlo de mejor manera.
    En principio habria que actualizar tanto el firmware de placa de control como el del display MCU. Habria que investigar un poco para que al updatear con un firmware actual no hubiese problemas de hardware.... es posible que los nuevos VMIII tengan algun update de hardware y el tuyo no. Todo es mirarlo. Este modelo VMIII no lo tengo en seguimiento de firmwares... asi que toca investigacion.

    Te paso flujo de como lo tengo montado yo para segun "tus puertas logicas" conmute SBU SUB por horario, cargas, un SOC real de un monitor de baterias y mas cosas. Yo abuso mucho de node funcion... ya sabes: la cabra siempre tira al monte... y cuando estoy perro pues ya meto nodos hechos tipo rbe de excepcion.
    Pero bueno te puede dar una idea.... cada coder tiene sus manias....
    Hay algunas variables globales de tiempos y demas... porque son para todos los dispositivos de la instalacion.
    Se Inicializa el flujo en automatico para mas seguridad.... ya que si no se queda en manual y no actuaria en caso de reinicio o deploy general.
    Es para un MAX pero valido para un VMIII, lo digo por los nodos link que se ven ahi.

    Código HTML:
    [{"id":"d76e6f0e.4a01a","type":"function","z":"cbbe440c.1fbcd8","name":"SBU  SUB  por horario y carga minima","func":"var cargatotal = parseInt(msg.payload.porcentajecargasalida);\nvar SOC = parseInt(flow.get('SOC'));\nvar tiempologs = global.get('tiempologs');\nvar Vplaca = parseInt(msg.payload.voltajeenplaca);\nvar Vplaca2 = parseInt(msg.payload.voltajenplaca2);\nvar SUB = {payload: \"POP01\" , topic: \"Modo Line\" , tiempo: tiempologs};\nvar SBU = {payload: \"POP02\" , topic: \"Modo Bateria\" , tiempo: tiempologs};\nvar hora = parseInt(msg.myhour);\nvar reset = {reset};\n        if((hora>=22 || hora<=15) && (cargatotal<12) && (Vplaca>100 || Vplaca2>100)){\n            return[SUB,null,reset,null];\n        }\n        else if ((hora>=16 && hora<=21) && cargatotal<12 && SOC>=85){\n            return[null,SBU,null,reset];\n        }\n        else if ((hora>=22 || hora<=15) && cargatotal<12 && SOC<=75) {\n            return[SUB,null,reset,null];    \n        }\n        else {\n            return[null,null,null,null];\n        }","outputs":4,"noerr":0,"initialize":"","finalize":"","x":930,"y":120,"wires":[["39f142c8.3d868e"],["c1862b8.f54d7d8"],["c1862b8.f54d7d8"],["39f142c8.3d868e"]]},{"id":"8d24bb24.5c1838","type":"simpletime","z":"cbbe440c.1fbcd8","name":"","mydate":true,"myymd":true,"myyear":true,"mymonth":true,"mymonthn":true,"mydom":true,"mydoy":true,"myday":true,"myhourpm":true,"myhour":true,"mytime":true,"mytimes":true,"myminute":true,"myminutes":true,"mysecond":true,"mymillis":true,"myepoch":true,"myrawdate":true,"mypm":true,"x":430,"y":120,"wires":[["9c49d501.7fd448"]]},{"id":"39f142c8.3d868e","type":"rbe","z":"cbbe440c.1fbcd8","name":"SUB","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":1210,"y":60,"wires":[["69917812.c7fb68"]]},{"id":"1211f57e.0fcd3b","type":"link in","z":"cbbe440c.1fbcd8","name":"TodaslaslecturasMAX0","links":["9aa52a54.ef8738"],"x":200,"y":140,"wires":[["8d24bb24.5c1838"]],"l":true},{"id":"c1862b8.f54d7d8","type":"rbe","z":"cbbe440c.1fbcd8","name":"SBU","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":1210,"y":180,"wires":[["69917812.c7fb68"]]},{"id":"6678a508.ec563c","type":"ui_button","z":"cbbe440c.1fbcd8","name":"","group":"8ba97681.ef52f8","order":5,"width":0,"height":0,"passthru":true,"label":"SBU SUB MANUAL MAX0","tooltip":"","color":"","bgcolor":"","icon":"","payload":"false","payloadType":"bool","topic":"SBUSUB","x":440,"y":220,"wires":[["9c49d501.7fd448","7c0395b8.c18e2c","cf4adac9.0d4d28"]]},{"id":"d7a63952.54c948","type":"ui_button","z":"cbbe440c.1fbcd8","name":"","group":"8ba97681.ef52f8","order":6,"width":0,"height":0,"passthru":true,"label":"SBU SUB AUTO MAX0","tooltip":"","color":"","bgcolor":"","icon":"","payload":"true","payloadType":"bool","topic":"SBUSUB","x":430,"y":280,"wires":[["9c49d501.7fd448","cf4adac9.0d4d28","7c0395b8.c18e2c"]]},{"id":"9c49d501.7fd448","type":"function","z":"cbbe440c.1fbcd8","name":"Control SBU SUB","func":"if (msg.topic === \"SBUSUB\") {\n    context.pass = (msg.payload === true) ? true : false;\n    return null;\n}\nif (context.pass) {\n    return msg;\n}\nreturn null;","outputs":1,"noerr":0,"x":650,"y":120,"wires":[["d76e6f0e.4a01a","525a66f.03f0198"]]},{"id":"cf4adac9.0d4d28","type":"ui_led","z":"cbbe440c.1fbcd8","order":4,"group":"134bed5d.83e903","width":0,"height":0,"label":"SBUSUB Manual MAX0","labelPlacement":"right","labelAlignment":"center","colorForValue":[{"color":"red","value":"true","valueType":"bool"},{"color":"green","value":"false","valueType":"bool"}],"allowColorForValueInMessage":false,"name":"SBUSUB Manual MAX0","x":750,"y":280,"wires":[]},{"id":"7c0395b8.c18e2c","type":"ui_led","z":"cbbe440c.1fbcd8","order":5,"group":"134bed5d.83e903","width":0,"height":0,"label":"SBU SUB AUTO MAX0","labelPlacement":"right","labelAlignment":"center","colorForValue":[{"color":"red","value":"false","valueType":"bool"},{"color":"green","value":"true","valueType":"bool"}],"allowColorForValueInMessage":false,"name":"SBUSUB Horario MAX0","x":750,"y":220,"wires":[]},{"id":"69917812.c7fb68","type":"link out","z":"cbbe440c.1fbcd8","name":"ParaCRCTJMAX0","links":["eb6e10a9.7a027"],"x":1390,"y":120,"wires":[],"l":true},{"id":"525a66f.03f0198","type":"debug","z":"cbbe440c.1fbcd8","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":850,"y":40,"wires":[]},{"id":"d0510386.4ba2e","type":"inject","z":"cbbe440c.1fbcd8","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"1","topic":"","payload":"","payloadType":"date","x":150,"y":280,"wires":[["d7a63952.54c948"]]},{"id":"8ba97681.ef52f8","type":"ui_group","z":"","name":"BotonesControl","tab":"ca198839.5811a8","order":1,"disp":false,"width":"8","collapse":false},{"id":"134bed5d.83e903","type":"ui_group","z":"","name":"DisplayBotones","tab":"ca198839.5811a8","order":2,"disp":false,"width":"8","collapse":false},{"id":"ca198839.5811a8","type":"ui_tab","z":"","name":"ControlGlobal","icon":"dashboard","order":9,"disabled":false,"hidden":false}]
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

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

    Predeterminado Re: ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?

    Buenas.
    Lo que he echo hasta ahora.
    ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?-dashh1.jpg

    ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?-captura3.png



    He conseguido meter en horario los cambios de carga de batería y de salida AC.
    Ahora me falta el poder forzar las baterías a cargar por debajo de cierta carga estando en solo solar y buscar como calcular el SOC para realizarlo con el. El que da el hibrido, como me comento Tejota, no es muy fiable. Me estuve fijando y da unos saltos muy grandes.
    Os pongo el de la batería por si queréis echarle un vistazo.

    Código HTML:
    [{"id":"a10e76ef.fafe98","type":"link out","z":"43f193be.a46afc","name":"De dashboard","links":["11ec8945.405447"],"x":1335,"y":400,"wires":[]},{"id":"187817e4.2b7408","type":"ui_text","z":"43f193be.a46afc","group":"41484e55.2483a","order":10,"width":0,"height":0,"name":"","label":"Carga de bateria en","format":"{{msg.payload.prioridadcargadorbatconf}}","layout":"row-center","x":560,"y":100,"wires":[]},{"id":"223d05fa.6abc5a","type":"link in","z":"43f193be.a46afc","name":"A dashboard","links":["e12ad3f.350e43"],"x":135,"y":220,"wires":[["ae3aab69.5c1248","647a5df1.53c014","48797279.302a3c","15d52ff0.0e53e","6467aa99.076674","949f0d46.262a7"]]},{"id":"ae3aab69.5c1248","type":"function","z":"43f193be.a46afc","name":"Modo de carga de bateria","func":"var output = msg.payload.prioridadcargadorbatconf\nlet batstatus =\"\"\nif (output==\"1\"){\n   batstatus = \"Primero solar\";\n}\nelse if(output==\"3\"){\n    batstatus = \"Solar\";\n}else {\n    batstatus = \"Red y solar\"\n}\nreturn [\n    {\n        payload: {\n                prioridadcargadorbatconf: batstatus\n                 }\n    }\n]","outputs":1,"noerr":0,"x":340,"y":100,"wires":[["187817e4.2b7408"]]},{"id":"647a5df1.53c014","type":"ui_gauge","z":"43f193be.a46afc","name":"VoltBat","group":"41484e55.2483a","order":3,"width":5,"height":4,"gtype":"gage","title":"Voltaje","label":" Vdc","format":"{{msg.payload.voltajebateria}}","min":"22","max":"29","colors":["#ffff00","#00ff00","#ff0000"],"seg1":"24,3","seg2":"27","x":290,"y":140,"wires":[]},{"id":"48797279.302a3c","type":"function","z":"43f193be.a46afc","name":"Intensidad de bateria","func":"var carga =parseFloat(msg.payload.amperioscargabat)\nvar descarga = parseFloat(msg.payload.amperiosdescargabat)\nvar voltbat=parseFloat(msg.payload.voltajebateria)\nlet ampbat =0\nlet potbat=0\nif(carga>0){\n    ampbat=carga;\n}else if (descarga>0){\n    ampbat =-descarga;\n}\npotbat=parseFloat(ampbat*voltbat).toFixed(1);\n\nreturn [\n    {\n        payload: {\n                ampbat: ampbat,\n                potbat: potbat\n                 }\n    }\n]","outputs":1,"noerr":0,"x":320,"y":300,"wires":[["f8395019.cac18","67580814.c03758"]]},{"id":"f8395019.cac18","type":"ui_gauge","z":"43f193be.a46afc","name":"Consumo de bateria","group":"41484e55.2483a","order":2,"width":5,"height":4,"gtype":"gage","title":"Consumo ","label":"Amp","format":"{{msg.payload.ampbat}}","min":"-150","max":"150","colors":["#ff0000","#00e600","#ff0000"],"seg1":"-30","seg2":"30","x":560,"y":280,"wires":[]},{"id":"cafc4f0c.c87d8","type":"file","z":"43f193be.a46afc","name":"WriteFile","filename":"/home/pi/Documents/thorariobateria.txt","appendNewline":true,"createDir":true,"overwriteFile":"true","encoding":"none","x":1040,"y":340,"wires":[[]]},{"id":"71f78df9.350574","type":"inject","z":"43f193be.a46afc","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":true,"onceDelay":"5","x":270,"y":400,"wires":[["5620b7db.0030a8","f5d30544.d85748"]]},{"id":"5620b7db.0030a8","type":"file in","z":"43f193be.a46afc","name":"ReadFile","filename":"/home/pi/Documents/thorariobateria.txt","format":"utf8","chunk":false,"sendError":false,"encoding":"none","x":500,"y":400,"wires":[["374bd03f.e686"]]},{"id":"15d52ff0.0e53e","type":"ui_level","z":"43f193be.a46afc","group":"41484e55.2483a","order":1,"width":0,"height":0,"name":"","label":"SOC","colorHi":"#00ff00","colorWarn":"#00c800","colorNormal":"#00b33c","colorOff":"#ff0000","min":0,"max":100,"segWarn":"20","segHigh":"80","unit":"%","layout":"sh","channelA":"","channelB":"","decimals":0,"animations":"rocket","shape":"3","colorschema":"fixed","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"1","colorFromTheme":true,"textAnimations":true,"hideValue":false,"tickmode":"auto","peakmode":false,"property":"payload.capacidadbateria","peaktime":3000,"x":270,"y":220,"wires":[]},{"id":"fcc8795b.648f88","type":"ui_button","z":"43f193be.a46afc","name":"Carga solar","group":"41484e55.2483a","order":8,"width":5,"height":1,"passthru":true,"label":"Solar","tooltip":"","color":"","bgcolor":"","icon":"","payload":"PCP03","payloadType":"str","topic":"","x":1230,"y":440,"wires":[["a10e76ef.fafe98"]]},{"id":"8424095c.481c68","type":"ui_button","z":"43f193be.a46afc","name":"Prim. solar","group":"41484e55.2483a","order":9,"width":5,"height":1,"passthru":true,"label":"Prim. solar","tooltip":"","color":"","bgcolor":"","icon":"","payload":"PCP01","payloadType":"str","topic":"","x":1230,"y":380,"wires":[["a10e76ef.fafe98"]]},{"id":"374bd03f.e686","type":"ui_time_scheduler","z":"43f193be.a46afc","group":"41484e55.2483a","name":"","startDay":"1","refresh":60,"devices":["Horario sin cargar"],"customPayload":false,"eventMode":false,"sendTopic":true,"outputs":2,"order":11,"width":10,"height":3,"x":710,"y":400,"wires":[["cafc4f0c.c87d8"],["8690a11d.e9ca6","a10a45b5.d6cc58"]]},{"id":"8690a11d.e9ca6","type":"and-gate","z":"43f193be.a46afc","name":"","rules":[{"t":"true","propertyType":"msg","property":"payload","topic":"Horario sin cargar"},{"t":"true","propertyType":"msg","property":"payload","topic":"horario"}],"outputTopic":"","gateType":"and","emitOnlyIfTrue":true,"x":1060,"y":440,"wires":[["fcc8795b.648f88"]]},{"id":"a10a45b5.d6cc58","type":"and-gate","z":"43f193be.a46afc","name":"","rules":[{"t":"false","propertyType":"msg","property":"payload","topic":"Horario sin cargar"},{"t":"true","propertyType":"msg","property":"payload","topic":"horario"}],"outputTopic":"","gateType":"and","emitOnlyIfTrue":true,"x":1060,"y":380,"wires":[["8424095c.481c68"]]},{"id":"f4a029f.c2323d8","type":"ui_led","z":"43f193be.a46afc","order":5,"group":"41484e55.2483a","width":1,"height":1,"label":"","labelPlacement":"right","labelAlignment":"center","colorForValue":[{"color":"#ff4500","value":"false","valueType":"bool"},{"color":"#7fff00","value":"true","valueType":"bool"}],"allowColorForValueInMessage":false,"shape":"circle","showGlow":true,"name":"Horario","x":960,"y":500,"wires":[]},{"id":"67580814.c03758","type":"ui_gauge","z":"43f193be.a46afc","name":"Potencia de bateria","group":"1d224e25.325d02","order":4,"width":5,"height":4,"gtype":"gage","title":"Potencia Bat.","label":"w","format":"{{msg.payload.potbat}}","min":"-3000","max":"3000","colors":["#ff0000","#00e600","#ff0000"],"seg1":"-1500","seg2":"1500","x":550,"y":320,"wires":[]},{"id":"6467aa99.076674","type":"ui_level","z":"43f193be.a46afc","group":"1d224e25.325d02","order":3,"width":2,"height":9,"name":"","label":"SOC","colorHi":"#00ff00","colorWarn":"#00c800","colorNormal":"#00b33c","colorOff":"#ff0000","min":0,"max":100,"segWarn":"20","segHigh":"80","unit":"%","layout":"sv","channelA":"","channelB":"","decimals":0,"animations":"rocket","shape":"3","colorschema":"fixed","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"1","colorFromTheme":true,"textAnimations":true,"hideValue":false,"tickmode":"auto","peakmode":false,"property":"payload.capacidadbateria","peaktime":3000,"x":270,"y":260,"wires":[]},{"id":"4131721b.61411c","type":"change","z":"43f193be.a46afc","name":"","rules":[{"t":"set","p":"max","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":830,"y":140,"wires":[["d497e503.edefd8"]]},{"id":"35cd0f86.dc2ce","type":"ui_text","z":"43f193be.a46afc","group":"41484e55.2483a","order":7,"width":3,"height":1,"name":"value max","label":"Bat. max","format":"{{msg.payload}} V","layout":"row-left","x":1200,"y":160,"wires":[]},{"id":"60bb83c5.a3b36c","type":"switch","z":"43f193be.a46afc","name":"Desvio a Max Min","property":"payload","propertyType":"msg","rules":[{"t":"gt","v":"max","vt":"flow"},{"t":"lt","v":"min","vt":"flow"}],"checkall":"true","repair":false,"outputs":2,"x":640,"y":180,"wires":[["4131721b.61411c"],["65dd8da4.7d84f4"]]},{"id":"d497e503.edefd8","type":"function","z":"43f193be.a46afc","name":"Si es mayor..","func":"if(msg.payload == -17)\n{\n msg.payload = \"-\"\n}else\n{\n msg.payload = msg.payload \n}\nreturn msg;","outputs":1,"noerr":0,"x":990,"y":140,"wires":[["35cd0f86.dc2ce","bb0fdfa1.68bbf"]]},{"id":"65dd8da4.7d84f4","type":"change","z":"43f193be.a46afc","name":"","rules":[{"t":"set","p":"min","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":830,"y":220,"wires":[["769b3ba.d1661c4"]]},{"id":"769b3ba.d1661c4","type":"function","z":"43f193be.a46afc","name":"Si es menor...","func":"if(msg.payload == 30)\n{\n msg.payload = \"-\"\n}else\n{\n msg.payload = msg.payload\n}\nreturn msg;","outputs":1,"noerr":0,"x":1000,"y":220,"wires":[["312bc111.03088e","5e084d37.7994c4"]]},{"id":"312bc111.03088e","type":"ui_text","z":"43f193be.a46afc","group":"41484e55.2483a","order":6,"width":3,"height":1,"name":"value min","label":"Bat. min","format":"{{msg.payload}} V","layout":"row-left","x":1190,"y":200,"wires":[]},{"id":"949f0d46.262a7","type":"function","z":"43f193be.a46afc","name":"Cambiar a numer","func":"\nmsg.payload = Number(msg.payload.voltajebateria);\nreturn msg;","outputs":1,"noerr":0,"x":320,"y":180,"wires":[["60bb83c5.a3b36c"]]},{"id":"f12575f3.996878","type":"file","z":"43f193be.a46afc","name":"WriteFile","filename":"/home/pi/Documents/minbat.txt","appendNewline":true,"createDir":true,"overwriteFile":"true","encoding":"none","x":1300,"y":260,"wires":[[]]},{"id":"a9c891e2.2b748","type":"file","z":"43f193be.a46afc","name":"WriteFile","filename":"/home/pi/Documents/maxbat.txt","appendNewline":true,"createDir":true,"overwriteFile":"true","encoding":"none","x":1300,"y":100,"wires":[[]]},{"id":"bda8b751.437998","type":"file in","z":"43f193be.a46afc","name":"ReadFile","filename":"/home/pi/Documents/maxbat.txt","format":"utf8","chunk":false,"sendError":false,"encoding":"none","x":610,"y":140,"wires":[["4131721b.61411c"]]},{"id":"915a2418.d1d748","type":"file in","z":"43f193be.a46afc","name":"ReadFile","filename":"/home/pi/Documents/minbat.txt","format":"utf8","chunk":false,"sendError":false,"encoding":"none","x":610,"y":220,"wires":[["65dd8da4.7d84f4"]]},{"id":"f111d19c.8de71","type":"inject","z":"43f193be.a46afc","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":true,"onceDelay":0.1,"x":460,"y":140,"wires":[["bda8b751.437998","915a2418.d1d748"]]},{"id":"a96fe8bc.ac1838","type":"switch","z":"43f193be.a46afc","name":"","property":"count","propertyType":"msg","rules":[{"t":"eq","v":"1","vt":"str"},{"t":"eq","v":"2","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":570,"y":480,"wires":[["4f5e420.f579bc"],["fedbd330.6e06a","346f5e5.bd915a2"]]},{"id":"fedbd330.6e06a","type":"change","z":"43f193be.a46afc","name":"Reset","rules":[{"t":"set","p":"reset","pt":"msg","to":"foo","tot":"str"},{"t":"delete","p":"payload","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":510,"y":520,"wires":[["fb6d1ff9.c0ae9"]]},{"id":"f5d30544.d85748","type":"ui_button","z":"43f193be.a46afc","name":"","group":"41484e55.2483a","order":4,"width":3,"height":1,"passthru":true,"label":"Activar horario","tooltip":"horario","color":"","bgcolor":"","icon":"","payload":"","payloadType":"str","topic":"horario","x":260,"y":480,"wires":[["fb6d1ff9.c0ae9"]]},{"id":"4f5e420.f579bc","type":"change","z":"43f193be.a46afc","name":"True","rules":[{"t":"set","p":"payload","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":730,"y":460,"wires":[["f4a029f.c2323d8","8690a11d.e9ca6","a10a45b5.d6cc58"]]},{"id":"346f5e5.bd915a2","type":"change","z":"43f193be.a46afc","name":"False","rules":[{"t":"set","p":"payload","pt":"msg","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":730,"y":500,"wires":[["f4a029f.c2323d8","8690a11d.e9ca6","a10a45b5.d6cc58"]]},{"id":"fb6d1ff9.c0ae9","type":"counter","z":"43f193be.a46afc","name":"","init":"0","step":"1","lower":"","upper":"","mode":"increment","outputs":1,"x":440,"y":480,"wires":[["a96fe8bc.ac1838"]]},{"id":"5e084d37.7994c4","type":"switch","z":"43f193be.a46afc","name":"","property":"payload.voltajebateria","propertyType":"msg","rules":[{"t":"gt","v":"20","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":1170,"y":260,"wires":[["f12575f3.996878"]]},{"id":"bb0fdfa1.68bbf","type":"switch","z":"43f193be.a46afc","name":"","property":"payload.voltajebateria","propertyType":"msg","rules":[{"t":"gt","v":"20","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":1170,"y":100,"wires":[["a9c891e2.2b748"]]},{"id":"41484e55.2483a","type":"ui_group","z":"","name":"Bateria","tab":"cf52c41d.4312b8","order":2,"disp":false,"width":"10","collapse":false},{"id":"1d224e25.325d02","type":"ui_group","z":"","name":"Gauges","tab":"86a871b6.5aa41","order":1,"disp":false,"width":12,"collapse":false},{"id":"cf52c41d.4312b8","type":"ui_tab","z":"","name":"Bateria","icon":"dashboard","order":3,"disabled":false,"hidden":false},{"id":"86a871b6.5aa41","type":"ui_tab","z":"","name":"VMIII Home","icon":"dashboard","order":1,"disabled":false,"hidden":false}]
    ¿Voy bien?, me recomendáis algo.
    Si todo funciona bien me liare con Emoncms a ver que se puede hacer con ello.
    Un saludo.

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

    Predeterminado Re: ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?

    Hay errores de novato. Lo que pasa que los dashboard aguantan todo.

    Por ejemplo.

    En el nodo funcion de Intensidad de bateria, la linea potbat=parseFloat(ampbat*voltbat).toFixed(1) no es consistente porque estas haciendo que potbat sea un string al meter el toFixed. Lo que pasa que como lo lanzas hacia un dashboard este esta preparado para recibir strings y no has notado nada. Pero si ese dato lo usaras mas adelante para calcular cosas.... no es un numero porque lo has transformado con el toFixed. Mete un depurador a la salida del nodo ese de funcion y veras como el potbat es un string.

    Despues hacer un float para sacar un decimal a la potencia indica que quieres ir a resolucion de la decima de watio... es completamente irrelevante para las medidas que estamos tratando.
    Yo optaria por un parseInt(ampbat*voltbat); Asi te aseguras que es un numero saliendo del nodo sin decimales.

    Para usar un toFixed y que salga un numero hay que hacerlo entre parentesis: potbat=parseFloat((ampbat*voltbat).toFixed(1));

    Los decimales tambien los puedes tratar en el propio dashboard metiendo en value format: {{value | number:1}}% para un decimal.

    Si corriges estos fallos desde el principio despues te sera mas facil no caer en ellos. Sobre todo diferenciar entre strings y numeros.

    El nodo "cambiar a numer" para que es??? msg.payload.voltajebateria ya viene como numero desde la peticion de datos del hibrido.

    No se, es lo que he visto a primera vista....
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

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

    Predeterminado Re: ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?

    Ya he corregido lo que me has dicho y lo que tenia echo en los otros flows. Lo de "cambiar numer" también lo he corregido. Es para sacar solo ese dato en esa linea. Estaba haciendo algo que ya estaba echo de antes.
    He visto que para enviar datos a emoncms no va bien el echo de poner una salida en cada flow. He mandado los datos a un flow y de ahí he puesto solo una salida para emoncs.
    Gracias

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

    Predeterminado Re: ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?

    Cita Iniciado por restaun Ver mensaje
    Ya he corregido lo que me has dicho y lo que tenia echo en los otros flows. Lo de "cambiar numer" también lo he corregido. Es para sacar solo ese dato en esa linea. Estaba haciendo algo que ya estaba echo de antes.
    He visto que para enviar datos a emoncms no va bien el echo de poner una salida en cada flow. He mandado los datos a un flow y de ahí he puesto solo una salida para emoncs.
    Gracias
    A ver.... el emoncms tiene que recibir un object {} de nodered sobre un unico inputnode de emoncms. Si recibe varios objects diferentes sobre el mismo inputnode de emoncms va a haber problemas.
    Lo ideal seria mandar los objects resultantes de los flujos hacia inputnodes diferentes del emoncms.
    Por ejemplo. La salida de peticion de datos del hibrido (object) iria solo a los inputs del node 0 del emoncms (o del nombre que le pongamos a ese node 0 de los inputs). Los datos de cualquier otro dispositivo o flujo del nodered irian a los inputs del node 1 del emoncms y sucesivos.
    Yo tengo unas cuantas inputs node diferentes en el emoncms.... cada uno corresponde a un dispositivo o proceso.

    ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?-inputsnode.jpg

    Despues cada node input tiene sus logs para hacer los feeds (fuentes)

    ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?-logsentradashaciafuentes.jpg


    Y asi, haces tus feeds o fuentes que es donde verdaderamente se almacenan los datos. Fijaos los tamaños de cada grupo de feeds.

    ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?-fuentes.jpg

    Despues puedes hacer tus fuentes virtuales que son fuentes combinadas de diferentes fuentes originales de diferentes inputs para hacer algun feed especifico
    ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?-fuentesvirtuales.jpg

    Y por ultimo puedes hacer tus graficas timeseries con los feeds que quieras, ya sean nativos o virtuales:

    ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?-graphsdefuentesvirtuales.jpg


    Por eso decia que una cosa es instalar el emoncms y otra saber manejarlo para sacarle todo.

    Y eso que no he dicho nada sobre los dashboard de emoncms. Esos dashboard como los dashboard de nodered son un mundo aparte. Y ambos pueden coexistir.
    Este panel de potencias en dashboard emoncms es el que estoy usando actualmente incrustado en un dashboard de nodered. Tambien se ve una incrustacion de una grafica timeseries del emoncms...



    Por eso decia que integrar ambas plataformas: Node red y emoncms hacen unos dashboards muy potentes. Quizas porque estoy sacando lo mejor de ambas. Pero para gustos.... los colores....
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

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

    Predeterminado Re: ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?

    Que bien queda eso.
    Veo que tienes mas menús que yo. Yo solo tengo inputs, feeds, visualización, schedule y admin.
    Lo mas importante ya lo tengo, que es el control horario. Pero aun me queda mucho.
    He echo esta funcion para el calculo de potencia en la entrada. No se puede adquirir directamente del VMIII.

    Código:
    var vac=msg.payload.voltajesalida
    var pac=msg.payload.potenciaactivasalida
    var pbatd=msg.payload.voltajebateria*msg.payload.amperiosdescargabat
    var pbatc=msg.payload.voltajebateria*msg.payload.amperioscargabat
    var ppv=msg.payload.potenciaenplaca
    let potred
    var pred =parseInt(pac-pbatd-ppv)
    if (pred <0){
        potred=0
    }else
        potred = pred+pbatc
    return [{payload: {potred: potred}}]
    Creo que lo tengo bien.

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

    Predeterminado Re: ¿Se podría mejorar la automatización de un Voltronic VMIII con node red?

    Cita Iniciado por restaun Ver mensaje
    Que bien queda eso.
    Veo que tienes mas menús que yo. Yo solo tengo inputs, feeds, visualización, schedule y admin.
    Lo mas importante ya lo tengo, que es el control horario. Pero aun me queda mucho.
    He echo esta funcion para el calculo de potencia en la entrada. No se puede adquirir directamente del VMIII.

    Código:
    var vac=msg.payload.voltajesalida
    var pac=msg.payload.potenciaactivasalida
    var pbatd=msg.payload.voltajebateria*msg.payload.amper  iosdescargabat
    var pbatc=msg.payload.voltajebateria*msg.payload.amper  ioscargabat
    var ppv=msg.payload.potenciaenplaca
    let potred
    var pred =parseInt(pac-pbatd-ppv)
    if (pred <0){
        potred=0
    }else
        potred = pred+pbatc
    return [{payload: {potred: potred}}]
    Creo que lo tengo bien.
    Los parametros de AC INPUT son los que son porque asi lo ha querido el fabricante. Si las potencias del ACINPUT fueran extraibles con datos se verian las verguenzas de estos hibridos. Asi que han optado por no darlas, o solo dar el voltaje y la frecuencia del AC INPUT.
    Lo que has hecho es calcular la diferencia respecto a la potencia ACOUTPUT, PV y Pbat de la extracion de valores que da el hibrido.
    Si te animas y te ves con ganas yo sacaria esos datos con un medidor de red en el AC INPUT. Es decir un sensor independiente del hibrido en donde sabes realmente lo que entra y tambien lo que sale aunque sea off-grid.
    El sensor se puede incorporar al nodered para mayor "satisfaccion". Y entonces verias de verdad el rendimiento del hibrido.
    Yo lo tengo asi pero con mas sensores ya que se pueden poner en modbus con un mismo adaptador a la Rpi.

    Te dejo uno de mis videos con estos sensores:



    De hecho creo que algun argentino ha hecho un programa de monitorizacion usando un medidor de estos en AC INPUT, otro medidor en ACOUTPUT y el BMV700 en baterias... de tal forma que no tiene que interaccionar con el hibrido o inversor para saber lo que esta rindiendo. La PV la saca por diferencia. Lo malo es que lo ha hecho en una programacion un poco antigua.... en node red seria sencillisimo hacerla y con unos dashboard "full-equip". Los "pros" seria que valdrian para cualquier marca de hibrido. Los "contras" es que no puedes interaccionar con el hibrido a no ser que sepas hablar con el en su idioma.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

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