Página 8 de 33 PrimerPrimer ... 78918 ... ÚltimoÚltimo
Resultados 176 al 200 de 803
  1. #176
    Coulomb está desconectado Forero Junior
    Fecha de ingreso
    dic 2020
    Ubicación
    Brisbane, Australia
    Mensajes
    4

    Predeterminado Re: [Voltronic] AXPERT MAX review en profundidad

    Cita Iniciado por Tejota Ver mensaje
    Verifico que NO hay comandos BTA en el MAX para ajuste fino de voltaje de bateria. Esto puede ser un problema a la hora de hacer coexistir diferentes reguladores con el regulador del MAX.
    Mi lectura del firmware es que el comando BTA SI existe en la versión principal del firmware 90.19, pero los comandos son manejados en primera instancia por el firmware de la pantalla, y esto NO tiene el comando BTA (pero conserva el incómodo BTA0/1/2 comandos). Creo que todo lo que tendría que hacer sería "pasar" el comando BTA al firmware principal y dejar que lo procese.

    Definitivamente una lástima.

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

    Predeterminado Re: [Voltronic] AXPERT MAX review en profundidad

    Cita Iniciado por Coulomb Ver mensaje
    Mi lectura del firmware es que el comando BTA SI existe en la versión principal del firmware 90.19, pero los comandos son manejados en primera instancia por el firmware de la pantalla, y esto NO tiene el comando BTA (pero conserva el incómodo BTA0/1/2 comandos). Creo que todo lo que tendría que hacer sería "pasar" el comando BTA al firmware principal y dejar que lo procese.

    Definitivamente una lástima.
    Uh Oh!! Coulomb here!!

    Yes, MCU board filter all commands from ports in display unit but what happen if you jump display board connecting serial com directly to auxiliary board??

    There is an auxiliary board between DSP board and display board (MCU) where serial optos are. I remember this board has got two free RJ45 connectors.




    I havent tested these RJ45s but I think you could inject serial com commands directly (like BTA calibration) to DSP board like old com board voltronic.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  3. #178
    Coulomb está desconectado Forero Junior
    Fecha de ingreso
    dic 2020
    Ubicación
    Brisbane, Australia
    Mensajes
    4

    Predeterminado Re: [Voltronic] AXPERT MAX review en profundidad

    Cita Iniciado por Tejota Ver mensaje
    Uh Oh!! Coulomb here!!
    :-) Just passing through. You seem to have the best information on the Axpert Max at present.

    Yes, MCU board filter all commands from ports in display unit but what happen if you jump display board connecting serial com directly to auxiliary board??

    There is an auxiliary board between DSP board and display board (MCU) where serial optos are. I remember this board has got two free RJ45 connectors.

    I haven't tested these RJ45s but I think you could inject serial com commands directly (like BTA calibration) to DSP board like old com board Voltronic.
    Yes, I've often wondered what those connectors are for; it's not like them to waste components that aren't actually used.

    It looks like it should work. I think you should try it as part of your in-depth review �� I don't know how convenient it would be to reach those spare connectors, though. It may be more convenient to temporarily unplug the removable display, and feed commands in there. It looks like they're all still at 2400 bps.

    Edit: Assuming that disconnecting the removable display doesn't cause the inverter to have a fit. And that the pinout is the same as for the PC connection.

  4. #179
    Au-PRX está desconectado Forero
    Fecha de ingreso
    sep 2020
    Ubicación
    Cataluña
    Mensajes
    316

    Predeterminado Re: [Voltronic] AXPERT MAX review en profundidad

    Antes de nada felices reyes para todos... ¡¡ ;-)
    Tejota, por fin encontré el tiempo para terminar de conectar el MAX , y ya tengo todo funcionando, pero claro, me surgen algunas dudas sobre el comportamiento del equipo, como no ...
    El caso es que los primeros días con el firmware original (45 02) se comportaba de forma digamos predecible, si las cargas son pequeñas, digamos 200/300 W, el equipo devuelve hacia la red unos 100w (-100w) aproximadamente , después de actualizar el firmware (90.16), parece que este comportamiento cambio, el caso es que no estoy muy seguro de no haber tocado nada más, pues estos días estoy retoqueteando la configuración, para incluir las baterías, en este momento si las cargas son pequeñas, 200/300w el equipo consume de red uno 100 y pocos W y solo si hay cargas más potentes (3500w) se comporta como antes debolviendo a la red (-200/-300W) .
    Me parece un comportamiento extraño, no sé si tendré algo mal en mi sistema de medida, ... alguna configuración.. no sé. Tu observaste algo parecido con el último firmware?


    Otra pregunta relacionada, seguí tu tutorial sobre el SDM230, todo funciona aparentemente bien, pero no puedo obtener los KWh por ejemplo y algunas medidas mas, parece que por mod bus estos registros siempre están a cero, no así en el lcd donde si puedo ver las medidas, tienes idea de por que?
    Gracias..

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

    Predeterminado Re: [Voltronic] AXPERT MAX review en profundidad

    Cita Iniciado por Au-PRX Ver mensaje
    Antes de nada felices reyes para todos... ¡¡ ;-)
    Tejota, por fin encontré el tiempo para terminar de conectar el MAX , y ya tengo todo funcionando, pero claro, me surgen algunas dudas sobre el comportamiento del equipo, como no ...
    El caso es que los primeros días con el firmware original (45 02) se comportaba de forma digamos predecible, si las cargas son pequeñas, digamos 200/300 W, el equipo devuelve hacia la red unos 100w (-100w) aproximadamente , después de actualizar el firmware (90.16), parece que este comportamiento cambio, el caso es que no estoy muy seguro de no haber tocado nada más, pues estos días estoy retoqueteando la configuración, para incluir las baterías, en este momento si las cargas son pequeñas, 200/300w el equipo consume de red uno 100 y pocos W y solo si hay cargas más potentes (3500w) se comporta como antes debolviendo a la red (-200/-300W) .
    Me parece un comportamiento extraño, no sé si tendré algo mal en mi sistema de medida, ... alguna configuración.. no sé. Tu observaste algo parecido con el último firmware?
    Lo que observe fue que no vertia tanto como con la 45.01 con cargas elevadas y sin cargas elevadas. Con la 45.01 vi vertidos de hasta 1,5kW.... eso con la 90.16 no lo he llegado a ver... maximo unos 250W-300W
    Hay otra firmware rulando por ahi 90.19 donde dicen que no vierte nada. No lo he verificado ya que no lo he cargado. Ademas la fuente no es conocida y tengo mis reservas.... comparare con el 90.16 y si veo que en el firmware que es identico excepto alguna cosilla donde han corregido cosas pues lo dare por flasehable... mientras no lo compruebe asi no, ya que no viene de fuente fiable para mi.

    Cita Iniciado por Au-PRX Ver mensaje
    Otra pregunta relacionada, seguí tu tutorial sobre el SDM230, todo funciona aparentemente bien, pero no puedo obtener los KWh por ejemplo y algunas medidas mas, parece que por mod bus estos registros siempre están a cero, no así en el lcd donde si puedo ver las medidas, tienes idea de por que?
    Gracias..
    Esto tendria que ir en hilo aparte para no mezclar. Creo que no hice hilo de ese video.... asi que si te animas lo creas y explico cosas del script usado. No saque los totales del modbus porque son acumulativos y eso se puede hacer externamente. Me centre solo en los datos de tiempo real y ese dato que dices es suma de datos en tiempo real. En otras palabras que lo calculo aparte por mis medios sin que me lo haga el SDM230. Pero se puede incluir en el script sin problemas para sacarlo.

    De todas formas veo que estas usando nodered.... Vas a monitorizar tambien el MAX?
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  6. #181
    Au-PRX está desconectado Forero
    Fecha de ingreso
    sep 2020
    Ubicación
    Cataluña
    Mensajes
    316

    Predeterminado Re: [Voltronic] AXPERT MAX review en profundidad

    Cita Iniciado por Tejota Ver mensaje
    Lo que observe fue que no vertia tanto como con la 45.01 con cargas elevadas y sin cargas elevadas. Con la 45.01 vi vertidos de hasta 1,5kW.... eso con la 90.16 no lo he llegado a ver... maximo unos 250W-300W
    Hay otra firmware rulando por ahi 90.19 donde dicen que no vierte nada. No lo he verificado ya que no lo he cargado. Ademas la fuente no es conocida y tengo mis reservas.... comparare con el 90.16 y si veo que en el firmware que es identico excepto alguna cosilla donde han corregido cosas pues lo dare por flasehable... mientras no lo compruebe asi no, ya que no viene de fuente fiable para mi.
    Pues es algo curioso, me pase dos días observando el equipo, con la 45.01 hace lo que tu comentas , vertidos incluso de 1000 y pico según el frenazo, pero con la 90.16 los vertidos se reducen, (aun veo picos en negativo), pero lo que sucede es que tengo un consumo de la red constante incluso cuando hay suficiente sol (sobre 100w) incluso cuando tiro de batería (sobre los 50w), algo que no tiene sentido para mi, si corto la entrada deja de consumir y sigue tan tranquilo, pero claro, no se trata de tener que andar cortando el suministro, si no encuentro por que, lo flaseare de nuevo con otra 90.16 de otro origen, no sea que esta (que en teoría es buena) tenga algo extraño. La 90.19 no la conocía.


    Cita Iniciado por Tejota Ver mensaje
    Esto tendria que ir en hilo aparte para no mezclar. Creo que no hice hilo de ese video.... asi que si te animas lo creas y explico cosas del script usado. No saque los totales del modbus porque son acumulativos y eso se puede hacer externamente. Me centre solo en los datos de tiempo real y ese dato que dices es suma de datos en tiempo real. En otras palabras que lo calculo aparte por mis medios sin que me lo haga el SDM230. Pero se puede incluir en el script sin problemas para sacarlo.

    De todas formas veo que estas usando nodered.... Vas a monitorizar tambien el MAX?
    Tienes razón, los registros que siempre me dan 0 creo recordar que son todos acumulativos, y también tienen el bite mas significativo en 1 mientras que el restos de registros lo tiene a 0, de todas formas en realidad no necesito esos valores mas allá que como comparador de mis cálculos, uso una librería de node red, que resulta muy cómoda para calcular energía (watt2kwh) parece que funciona bastante bien y es muy cómoda de usar. Pero no descarto cogerte la palabra, si no en este caso, puede que en otro muy similar con una aparato que seguro conocerás (USR -TCP232-302 RS232 Serial a RJ45 Ethernet), es similar al que usas en el video, de echo creo que existe otro modelo que tiene los dos puertos , el caso es que intente sin éxito redirigir el serie del Max por la red, para hacer una lectura remota, tengo que dedicarle un poco mas de tiempo.

    Y si , mi intención es recoger toda la telemétrica del max y la batería con node red, pero acabo de empezar como el que dice, aun tengo que solucionar la topología y ver como traigo la conexión hasta el servidor ... para mi node red es fundamental, integro todos los sistemas en el, es como una navaja suiza

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

    Tengo la impresión que esos 50W son los que consume el Max, lo que no entiendo es por que los esta consumiendo de la red eléctrica, mientras uso batería.

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

    Predeterminado Re: [Voltronic] AXPERT MAX review en profundidad

    En modo SUB el autoconsumo del MAX vendra siempre de la red. Es algo que asi lo han diseñado en el firmware, sobre todo en los ultimos firmwares que han metido baterias de litio. En los antiguos creo que no ocurria y pillaba de baterias el autoconsumo.

    Creo que lo hacen por las baterias de litio para que todo vaya para las cargas y no compute el autoconsumo interno.

    Y ya lo han dejado para todo tipo de baterias.

    Sobre sacar datos del MAX via TCPIP con ese adaptador es relativamente sencillo con NODERED. Hay que encapsular con socat... y despues ya usar el nodo serial al uso. Yo es que no tengo tiempo material de poner todas estas cosas en video ni en el foro pero tenerlas las tengo y las he hecho funcionar en la plataforma NODERED.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  8. #183
    Au-PRX está desconectado Forero
    Fecha de ingreso
    sep 2020
    Ubicación
    Cataluña
    Mensajes
    316

    Predeterminado Re: [Voltronic] AXPERT MAX review en profundidad

    Cita Iniciado por Tejota Ver mensaje
    En modo SUB el autoconsumo del MAX vendra siempre de la red. Es algo que asi lo han diseñado en el firmware, sobre todo en los ultimos firmwares que han metido baterias de litio. En los antiguos creo que no ocurria y pillaba de baterias el autoconsumo.

    Creo que lo hacen por las baterias de litio para que todo vaya para las cargas y no compute el autoconsumo interno.

    Y ya lo han dejado para todo tipo de baterias.
    Parece que tiene un comportamiento extraño, esta mañana esta consumiendo solo 3w de la red eléctrica, mientras carga batería.
    Tendré que observar mas tiempo, y en el peor de los casos, lo solucionara con un corte según carga.

    Cita Iniciado por Tejota Ver mensaje
    Sobre sacar datos del MAX via TCPIP con ese adaptador es relativamente sencillo con NODERED. Hay que encapsular con socat... y despues ya usar el nodo serial al uso. Yo es que no tengo tiempo material de poner todas estas cosas en video ni en el foro pero tenerlas las tengo y las he hecho funcionar en la plataforma NODERED.
    Creo que ya localice el problema, para poder conectar todo uso un adaptador mancho doble, y me parece que no esta funcionando como debe, por que pongo el mismo cable y aparato entre dos equipos y comunico por serie/ip sin problemas, pero con el adaptador solo logro mandar datos y no recibo nada, mañana confecciono un cable nuevo sin adaptador y pruebo.

    Se que tu solo usas linux, en mi instalación conviven varias plataformas, incluido Windows, según para que uso un SO u otro.

    Un pregunta el aviso 69 que demonios es ... la descripción es un poco critica , no se muy bien si solo es un aviso, o si hay que hacer algo... dice algo así como que cuando no se puede cargar la bateara después de la comunicación exitosa con el inversor muestra el código 69 para detener la carga...
    No parece muy normal un aviso así solo por terminar la carga ... haber que hace en el próximo ciclo de carga.

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

    Predeterminado Re: [Voltronic] AXPERT MAX review en profundidad

    El error 69 creo que lo manda el BMS de la bateria y el hibrido lo refleja en su sistema (display, etc).

    Viene a ser como que el BMS no quiere mas amperios y el hibrido posiblemente en algun "frenazo" le mande algo a la bateria. El BMS lo detecta y manda un 69 al hibrido para "decir basta". Asi explicado a grosso modo.
    Eso se veria muy bien monitorizando el error y los amperios entrantes y salientes del hibrido hacia bateria. Yo es que no tengo pylon ni nada parecido.... pero seria muy facil de ver que pasa graficamente.

    Yo creo que todo viene dado porque el regulador Voltronic es "lento de reflejos" o bien falta codigo para depurarlo mejor y que no ocurran esos fallos puntuales. En principio no son errores como tal... son warnings y me temo que seran reincidentes hasta que el chino programador o el de diseño del regulador se lo monten mejor. De chinos, chinadas.

    Sobre el conversor serie-tcpip yo creo que funcionara en cualquier plataforma con nodered. NO se si el socat va en la chapuza del señor puertas. Si saco un poco de tiempo igual hago un hilo sobre este conversor en nodered... es bastante interesante si quieres tener tus dispositivos asociados a una ip local, sobre todo en este MAX que ese conversor wifi que lleva es bastante "sospechoso".
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  10. #185
    Au-PRX está desconectado Forero
    Fecha de ingreso
    sep 2020
    Ubicación
    Cataluña
    Mensajes
    316

    Predeterminado Re: [Voltronic] AXPERT MAX review en profundidad

    Cita Iniciado por Tejota Ver mensaje
    El error 69 creo que lo manda el BMS de la bateria y el hibrido lo refleja en su sistema (display, etc).

    Viene a ser como que el BMS no quiere mas amperios y el hibrido posiblemente en algun "frenazo" le mande algo a la bateria. El BMS lo detecta y manda un 69 al hibrido para "decir basta". Asi explicado a grosso modo.
    Eso se veria muy bien monitorizando el error y los amperios entrantes y salientes del hibrido hacia bateria. Yo es que no tengo pylon ni nada parecido.... pero seria muy facil de ver que pasa graficamente.

    Yo creo que todo viene dado porque el regulador Voltronic es "lento de reflejos" o bien falta codigo para depurarlo mejor y que no ocurran esos fallos puntuales. En principio no son errores como tal... son warnings y me temo que seran reincidentes hasta que el chino programador o el de diseño del regulador se lo monten mejor. De chinos, chinadas.
    Gracias por la explicación Tejota, la verdad es que estoy deseando tener telemetría ... en una grafica se ven muy bien muchas cosas. Yo en este momento estoy usando una batería con BMS, y tiene mucha pinta de ser lo que dices, lo malo es que no estoy seguro si esto deja la batería desconectada o no, en poco tiempo lo veremos, por que es seguro que pasara mas veces

    Cita Iniciado por Tejota Ver mensaje
    Sobre el conversor serie-tcpip yo creo que funcionara en cualquier plataforma con nodered. NO se si el socat va en la chapuza del señor puertas. Si saco un poco de tiempo igual hago un hilo sobre este conversor en nodered... es bastante interesante si quieres tener tus dispositivos asociados a una ip local, sobre todo en este MAX que ese conversor wifi que lleva es bastante "sospechoso".
    Existe una release de socat para windows, pero no la necesito, en realidad casi todos los conversores soportan virtualización de puertos, y es posible montar un COM , en la plataforma como si fuese nativo, y cualquier aplicación lo ve, incluido nodered, en esa parte no tengo problemas, es el el trasporte, creo que un canal no funciona físicamente por culpa de un adaptador, en cuanto pueda monto otro cable directo y veremos si acierto en el diagnostico. Los sistemas que tratar señales siempre son bien venidos cuando se pretende integrar aparatos sensores etc, en mi instalación tengo redes wifi, Radiafrecuancia (432mzh) Zwabe, ZigBee, y algunos sistemas mas, muchos necesitan de algún tipo de conversión para trabajar por ethernet, así que si haces algún hilo sobre el tema, lo leeré con interés ¡¡¡
    Muchas gracias por tu ayuda. ;-)

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

    Predeterminado Re: [Voltronic] AXPERT MAX review en profundidad

    Yo me referia al wifi del MAX porque ese conversor wifi que lleva interno en el MCU lo que hace es asociar un ip local al hibrido. Lo que pasa que para habilitarlo tienes que darlo de alta en los sistemas chinos de Voltronic. Es decir, les dejas la puerta abierta de tu hibrido a ellos.

    Y esta es una politica de intromision a tus datos y por extension al control de tu dispositivo por terceros. Esto no lo van a reconocer nunca pero a poco que sepas como funcionan esos conversores ya sabes de lo que son capaces. Creo que tengo una foto por aqui del MCU donde se ve el conversor wifi. Si te fijas es una referencia desconocida por lo que sera un conversor de tipo propietario exclusivo para Voltronic. Y ahi pueden cargar lo que quieran.

    [Voltronic]  AXPERT MAX  review en profundidad-frontal4.jpg

    Yo no lo uso. De hecho esta en AP mode. En cuanto toque red internet de salida cuando lo des de alta en los servidores chinos ya tienen todo lo que necesitan.

    Pero claro eso a la gente en general no le preocupa y es una practica habitual de todos los fabricantes de cualquier dispositivo ip. Creo que esto deberia de estar regulado a nivel LOPD. Y de esto nadie habla.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  12. #187
    Au-PRX está desconectado Forero
    Fecha de ingreso
    sep 2020
    Ubicación
    Cataluña
    Mensajes
    316

    Predeterminado Re: [Voltronic] AXPERT MAX review en profundidad

    Cita Iniciado por Tejota Ver mensaje
    Yo me referia al wifi del MAX porque ese conversor wifi que lleva interno en el MCU lo que hace es asociar un ip local al hibrido. Lo que pasa que para habilitarlo tienes que darlo de alta en los sistemas chinos de Voltronic. Es decir, les dejas la puerta abierta de tu hibrido a ellos.

    Y esta es una politica de intromision a tus datos y por extension al control de tu dispositivo por terceros. Esto no lo van a reconocer nunca pero a poco que sepas como funcionan esos conversores ya sabes de lo que son capaces. Creo que tengo una foto por aqui del MCU donde se ve el conversor wifi. Si te fijas es una referencia desconocida por lo que sera un conversor de tipo propietario exclusivo para Voltronic. Y ahi pueden cargar lo que quieran.

    Pulsa en la imagen para verla en tamaño completo

Nombre: Frontal4.jpg
Visitas: 124
Tamaño: 69,6 KB
ID: 23937

    Yo no lo uso. De hecho esta en AP mode. En cuanto toque red internet de salida cuando lo des de alta en los servidores chinos ya tienen todo lo que necesitan.

    Pero claro eso a la gente en general no le preocupa y es una practica habitual de todos los fabricantes de cualquier dispositivo ip. Creo que esto deberia de estar regulado a nivel LOPD. Y de esto nadie habla.
    No puedo estar mas de acuerdo, me paso media vida securizando redes, y no veas los que escupen algunos aparatitos chinos y no tan chinos, llenan los log del firewall de miles de peticiones de conexión no solicitadas, por supuesto todas son tratadas igual. En estos momentos es tan peligrosa le red externa como la intranet , cada programa cada aparato , todo intenta conectarse sin pedir permiso, y claro sin control del usuario que desconocedor lo que se cuece bajo el capot , están alimentando de metadatos al "ladrón" y exponiendo su sistema sin saberlo, yo me asombro que aun algunos usuarios después de explicarles el problema, es como que prefieren mirar hacia otro lado,,, total que mas da si no soy nadie , si ya controlan todo... prefieren no pensar, esta es la actitud que nos codena al resto. Esto tenia que estar regulado, pero por el momento es la selva.

    Hace unos días precisamente desmonte el MCU para indagar en la conexión wifi, me entraron ganas de desconectarla ... por que no estoy muy seguro de si dejara de funcionar algo mas,... es dicho claramente una puerta trasera con pinta de caramelito , te lo ponen fácil para que con la excusa de que todo el mundo pueda , ello se cuelan por el camino.

    Creo que terminare montando una maquina con un par de puertos serie en la sala de maquinas de la FV, y conectare todo en local y esa maquina a la red y listo, creo que es lo mas fácil.

    Mira termino de recordar una anécdota, en otro día encontré una cámara de red, sin wifi, que se paso un buen rato interrogando al servidor de vozIp , así como el que no quiere la cosa, no analice las peticiones por falta de tiempo, pero me parece de lo mas curioso .

    No se ven muy limpias las soldaduras.
    Miniaturas adjuntadas Miniaturas adjuntadas [Voltronic]  AXPERT MAX  review en profundidad-eb-w02.jpg  

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

    Predeterminado [NODERED] Monitorizacion AXPERT MAX

    Monitorizacion de un AXPERT MAX mediante NODERED.


    Aunque este modelo dispone de un display inteligente (MCU) capaz de recolectar datos por si solo y de disponer de un gateway wifi con una app china para su control y monitorizacion lo que voy a contar a continuacion sirve tambien para controlar y monitorizar con nuestra propia aplicación sobre un hardware ARM como es una raspberry Pi y un sistema operativo RASPBIAN con NODERED como plataforma de desarrollo de nuestra app.

    La forma de conectarse al MAX es por puerto serie, bien sea desde un conversor USB-RS232 o bien desde un conversor RS-232-TCPIP descritos en los hilos:

    https://www.solarweb.net/forosolar/f...60x-resto.html
    https://www.solarweb.net/forosolar/f...232-tcpip.html

    Como es un hibrido un poco diferente a los offgrid standard, logicamente lleva comandos nuevos de control y monitorizacion.

    Al llevar control de tiempo (fecha y hora) tambien hay comandos nuevos que se basan en esta variable.

    Vamos a comenzar por los flujos de monitorizacion, es decir, de solo lectura. Este hibrido trabaja en protocolo P30.

    Flujo presentado:
    Código HTML:
    [{"id":"9bc9a9f6.d07ec8","type":"tab","label":"Axpert MAX","disabled":false,"info":""},{"id":"509893d1.98ab3c","type":"function","z":"9bc9a9f6.d07ec8","name":"CRCTJ","func":"    //  Algoritmo para lanzar los comandos hacia Voltronics con CRC propietario\n    //  Algoritmo realizado por Tejota   \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":1020,"y":640,"wires":[["8bc4fb15.08c6c8"]]},{"id":"645a2e8b.dcbcb","type":"debug","z":"9bc9a9f6.d07ec8","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1590,"y":180,"wires":[]},{"id":"22222d68.bf0a42","type":"link out","z":"9bc9a9f6.d07ec8","name":"Respuesta Puerto serie","links":["4faa967b.783d88"],"x":1410,"y":640,"wires":[],"l":true},{"id":"ff4e665c.3a6d68","type":"comment","z":"9bc9a9f6.d07ec8","name":"Comunicacion Puerto Serie","info":"","x":1190,"y":600,"wires":[]},{"id":"ab516497.6a2e48","type":"switch","z":"9bc9a9f6.d07ec8","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":"eq","v":"QPIGS2 Campo2","vt":"str"},{"t":"eq","v":"QLED Barra LED","vt":"str"},{"t":"cont","v":"energiaproducidadiaria","vt":"str"},{"t":"cont","v":"cargadiariaentregada","vt":"str"}],"checkall":"true","repair":false,"outputs":13,"x":810,"y":280,"wires":[["9c689710.cb0018"],["e4137dce.db47"],["4423063a.c56eb8"],["198b4fc2.1fca4"],["8d3d9618.158258"],["bd349fa8.774d1"],["dd066a1.e232a98"],["af0311cf.2cd99"],["3a0b2dac.6bc8a2"],["fcd12eb.29738d"],["3b4d261d.daba4a"],["c2c747ec.cc0b58"],["f5269e19.63df9"]]},{"id":"63fac829.9a70a8","type":"comment","z":"9bc9a9f6.d07ec8","name":"Repartiendo por topic","info":"","x":820,"y":160,"wires":[]},{"id":"8d3d9618.158258","type":"function","z":"9bc9a9f6.d07ec8","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":[["40daa278.7eaa8c"]]},{"id":"e4137dce.db47","type":"function","z":"9bc9a9f6.d07ec8","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":[["40daa278.7eaa8c"]]},{"id":"bd349fa8.774d1","type":"function","z":"9bc9a9f6.d07ec8","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]);\nglobal.set('voltajeabsorcionconfmax0' , voltajeabsorcionconf);\nglobal.set('voltajeflotacionconfmax0' , voltajeflotacionconf);\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":[["40daa278.7eaa8c"]]},{"id":"4423063a.c56eb8","type":"function","z":"9bc9a9f6.d07ec8","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":[["40daa278.7eaa8c"]]},{"id":"198b4fc2.1fca4","type":"function","z":"9bc9a9f6.d07ec8","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":[["40daa278.7eaa8c"]]},{"id":"dd066a1.e232a98","type":"function","z":"9bc9a9f6.d07ec8","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":[["40daa278.7eaa8c"]]},{"id":"9c689710.cb0018","type":"function","z":"9bc9a9f6.d07ec8","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":[["40daa278.7eaa8c"]]},{"id":"d4064c8b.a9e53","type":"comment","z":"9bc9a9f6.d07ec8","name":"Extractores","info":"","x":1070,"y":20,"wires":[]},{"id":"af0311cf.2cd99","type":"function","z":"9bc9a9f6.d07ec8","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":[["5b6d382c.101f88"]]},{"id":"40daa278.7eaa8c","type":"join","z":"9bc9a9f6.d07ec8","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":[["d4e52660.0f5988"]]},{"id":"3a0b2dac.6bc8a2","type":"function","z":"9bc9a9f6.d07ec8","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":[["40daa278.7eaa8c"]]},{"id":"fcd12eb.29738d","type":"function","z":"9bc9a9f6.d07ec8","name":"QPIGS2Extraccion","func":"var output = msg.payload.split(\" \");\nlet amperiosenplaca2 = parseInt(output[0].slice(1, 5));\nlet voltajeenplaca2 = parseInt(output[1]);\nlet potenciaenplaca2 = parseInt(output[2]);\nreturn [\n    {\n        payload: {\n                potenciaenplaca2: potenciaenplaca2,\n                voltajeenplaca2: voltajeenplaca2,\n                amperiosenplaca2: amperiosenplaca2\n                }\n    }\n];","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1070,"y":420,"wires":[["40daa278.7eaa8c"]]},{"id":"3b4d261d.daba4a","type":"function","z":"9bc9a9f6.d07ec8","name":"QLEDExtraccion","func":"var output = msg.payload.split(\" \");\nlet led = parseInt(output[0].slice(1, 2));\nlet ledvelocidad = parseInt(output[1]);\nlet ledefectos = parseInt(output[2]);\nlet ledbrillo = parseInt(output[3]);\nlet ledcosa = parseInt(output[4]);\nlet colorred = (output[5].slice(0,9));\nlet colorsolar = (output[5].slice(9,18));\nlet colorbateria = (output[5].slice(18,27));\nreturn [\n    {\n        payload: {\n                led: led,\n                ledvelocidad: ledvelocidad,\n                ledefectos: ledefectos,\n                ledbrillo: ledbrillo,\n                ledcosa: ledcosa,\n                colorred: colorred,\n                colorsolar: colorsolar,\n                colorbateria: colorbateria\n                }\n    }\n];","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1060,"y":460,"wires":[["40daa278.7eaa8c"]]},{"id":"c2c747ec.cc0b58","type":"function","z":"9bc9a9f6.d07ec8","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":500,"wires":[["40daa278.7eaa8c"]]},{"id":"f5269e19.63df9","type":"function","z":"9bc9a9f6.d07ec8","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":540,"wires":[["40daa278.7eaa8c"]]},{"id":"1dd162e5.f2db9d","type":"inject","z":"9bc9a9f6.d07ec8","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":[["61ce5339.3ff7ac"]]},{"id":"bb6879c0.e826a8","type":"inject","z":"9bc9a9f6.d07ec8","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":[["61ce5339.3ff7ac"]]},{"id":"60ba838c.a6dd2c","type":"inject","z":"9bc9a9f6.d07ec8","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":[["61ce5339.3ff7ac"]]},{"id":"a17ca4f5.bae9e8","type":"inject","z":"9bc9a9f6.d07ec8","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":[["61ce5339.3ff7ac"]]},{"id":"5acbc736.c03538","type":"inject","z":"9bc9a9f6.d07ec8","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":[["61ce5339.3ff7ac"]]},{"id":"a6e956bb.15a808","type":"inject","z":"9bc9a9f6.d07ec8","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":[["61ce5339.3ff7ac"]]},{"id":"d882e049.679d1","type":"inject","z":"9bc9a9f6.d07ec8","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":[["61ce5339.3ff7ac"]]},{"id":"251c2eb7.ca3252","type":"inject","z":"9bc9a9f6.d07ec8","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":[["61ce5339.3ff7ac"]]},{"id":"61ce5339.3ff7ac","type":"link out","z":"9bc9a9f6.d07ec8","name":"EntradaalCRC","links":["2756c316.eadf3c"],"x":580,"y":360,"wires":[],"l":true},{"id":"497e6e1c.0ee55","type":"comment","z":"9bc9a9f6.d07ec8","name":"Comandos de monitorizacion cada 4 segundos","info":"Comandos de Monitorizacion","x":220,"y":40,"wires":[]},{"id":"39202c23.e6ea64","type":"inject","z":"9bc9a9f6.d07ec8","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":[["61ce5339.3ff7ac"]]},{"id":"c82b0d71.22c3c","type":"inject","z":"9bc9a9f6.d07ec8","name":"QPIGS2 Segundo Campo","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"4","crontab":"","once":false,"onceDelay":0.1,"topic":"Campo2","payload":"QPIGS2","payloadType":"str","x":180,"y":440,"wires":[["61ce5339.3ff7ac"]]},{"id":"4813b372.e9c16c","type":"inject","z":"9bc9a9f6.d07ec8","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":[["da8cd6b5.8dc498"]]},{"id":"da8cd6b5.8dc498","type":"simpletime","z":"9bc9a9f6.d07ec8","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":[["7ca8dbdc.f345e4"]]},{"id":"7ca8dbdc.f345e4","type":"function","z":"9bc9a9f6.d07ec8","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":[["61ce5339.3ff7ac"]]},{"id":"445143c5.a5e9fc","type":"inject","z":"9bc9a9f6.d07ec8","name":"QLED Barra LED","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"4","crontab":"","once":false,"onceDelay":0.1,"topic":"Barra LED","payload":"QLED","payloadType":"str","x":150,"y":560,"wires":[["61ce5339.3ff7ac"]]},{"id":"aa4c4d04.97883","type":"inject","z":"9bc9a9f6.d07ec8","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":[["aafe8fbb.da251"]]},{"id":"aafe8fbb.da251","type":"simpletime","z":"9bc9a9f6.d07ec8","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":[["2f807913.a65ce6"]]},{"id":"d4afdba8.6582e8","type":"inject","z":"9bc9a9f6.d07ec8","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":[["dc6f9b44.a170f8"]]},{"id":"dc6f9b44.a170f8","type":"simpletime","z":"9bc9a9f6.d07ec8","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":[["985cc328.92477"]]},{"id":"2f807913.a65ce6","type":"function","z":"9bc9a9f6.d07ec8","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":[["61ce5339.3ff7ac"]]},{"id":"985cc328.92477","type":"function","z":"9bc9a9f6.d07ec8","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":[["61ce5339.3ff7ac"]]},{"id":"6919b517.d1e43c","type":"comment","z":"9bc9a9f6.d07ec8","name":"Monitorizacion para Hibrido AXPERT MAX SINGLE  ","info":"","x":690,"y":40,"wires":[]},{"id":"4698e682.977198","type":"link out","z":"9bc9a9f6.d07ec8","name":"TodasLecturasAXPERTMAX","links":[],"x":1560,"y":340,"wires":[],"l":true},{"id":"bd8fa222.184f2","type":"comment","z":"9bc9a9f6.d07ec8","name":"Creando Objeto con todas las lecturas del Hibrido","info":"","x":1440,"y":240,"wires":[]},{"id":"d4e52660.0f5988","type":"function","z":"9bc9a9f6.d07ec8","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":[["4698e682.977198","645a2e8b.dcbcb"]]},{"id":"2756c316.eadf3c","type":"link in","z":"9bc9a9f6.d07ec8","name":"EntradaalCRC","links":["61ce5339.3ff7ac"],"x":830,"y":640,"wires":[["509893d1.98ab3c"]],"l":true},{"id":"4faa967b.783d88","type":"link in","z":"9bc9a9f6.d07ec8","name":"Respuesta Puerto serie","links":["22222d68.bf0a42"],"x":580,"y":280,"wires":[["ab516497.6a2e48"]],"l":true},{"id":"5b6d382c.101f88","type":"rbe","z":"9bc9a9f6.d07ec8","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":1310,"y":340,"wires":[["40daa278.7eaa8c"]]},{"id":"8bc4fb15.08c6c8","type":"serial request","z":"9bc9a9f6.d07ec8","name":"","serial":"f455d2af.938f","x":1190,"y":640,"wires":[["22222d68.bf0a42"]]},{"id":"f455d2af.938f","type":"serial-port","z":"","serialport":"/dev/ttyUSB0","serialbaud":"2400","databits":"8","parity":"none","stopbits":"1","waitfor":"","dtr":"none","rts":"none","cts":"none","dsr":"none","newline":"\\r","bin":"false","out":"char","addchar":"","responsetimeout":"10000"}]
    Corresponde a este flujo en la plataforma:

    [Voltronic]  AXPERT MAX  review en profundidad-flujomonitorizacionmax.jpg

    Algunas consideraciones de este flujo:

    1.- Esta hecho para conversor USB-RS232 tipo PL2303.
    2.- La salida obtenida es un JSON con todos los parametros solicitados y topic el numero de serie del MAX.
    3.- La solicitud de datos es cada 4 segundos.
    4.- Hay un ajuste de fecha y hora una vez cada 24 horas siendo a las 4:00 cuando se hace.
    5.- Da datos cada minuto de energia producida por campos solares (los dos) diarios.
    6.- Da datos cada minuto de energia consumida en ACOUT diaria.
    7.- Es necesaria la instalacion del nodo simpletime. Se busca en la paleta de nodos instalables.

    Para proximas entregas queda pendiente un dashboard alimentado por ese JSON como podria ser este:

    [Voltronic]  AXPERT MAX  review en profundidad-dashboardprovisional.jpg
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  14. #189
    Au-PRX está desconectado Forero
    Fecha de ingreso
    sep 2020
    Ubicación
    Cataluña
    Mensajes
    316

    Predeterminado Re: [NODERED] Monitorizacion AXPERT MAX

    Cita Iniciado por Tejota Ver mensaje
    Monitorizacion de un AXPERT MAX mediante NODERED.


    Aunque este modelo dispone de un display inteligente (MCU) capaz de recolectar datos por si solo y de disponer de un gateway wifi con una app china para su control y monitorizacion lo que voy a contar a continuacion sirve tambien para controlar y monitorizar con nuestra propia aplicación sobre un hardware ARM como es una raspberry Pi y un sistema operativo RASPBIAN con NODERED como plataforma de desarrollo de nuestra app.

    La forma de conectarse al MAX es por puerto serie, bien sea desde un conversor USB-RS232 o bien desde un conversor RS-232-TCPIP descritos en los hilos:

    https://www.solarweb.net/forosolar/f...60x-resto.html
    https://www.solarweb.net/forosolar/f...232-tcpip.html

    Como es un hibrido un poco diferente a los offgrid standard, logicamente lleva comandos nuevos de control y monitorizacion.

    Al llevar control de tiempo (fecha y hora) tambien hay comandos nuevos que se basan en esta variable.

    Vamos a comenzar por los flujos de monitorizacion, es decir, de solo lectura. Este hibrido trabaja en protocolo P30.

    Flujo presentado:
    Código HTML:
    [{"id":"9bc9a9f6.d07ec8","type":"tab","label":"Axpert MAX","disabled":false,"info":""},{"id":"509893d1.98ab3c","type":"function","z":"9bc9a9f6.d07ec8","name":"CRCTJ","func":"    //  Algoritmo para lanzar los comandos hacia Voltronics con CRC propietario\n    //  Algoritmo realizado por Tejota   \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":1020,"y":640,"wires":[["8bc4fb15.08c6c8"]]},{"id":"645a2e8b.dcbcb","type":"debug","z":"9bc9a9f6.d07ec8","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1590,"y":180,"wires":[]},{"id":"22222d68.bf0a42","type":"link out","z":"9bc9a9f6.d07ec8","name":"Respuesta Puerto serie","links":["4faa967b.783d88"],"x":1410,"y":640,"wires":[],"l":true},{"id":"ff4e665c.3a6d68","type":"comment","z":"9bc9a9f6.d07ec8","name":"Comunicacion Puerto Serie","info":"","x":1190,"y":600,"wires":[]},{"id":"ab516497.6a2e48","type":"switch","z":"9bc9a9f6.d07ec8","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":"eq","v":"QPIGS2 Campo2","vt":"str"},{"t":"eq","v":"QLED Barra LED","vt":"str"},{"t":"cont","v":"energiaproducidadiaria","vt":"str"},{"t":"cont","v":"cargadiariaentregada","vt":"str"}],"checkall":"true","repair":false,"outputs":13,"x":810,"y":280,"wires":[["9c689710.cb0018"],["e4137dce.db47"],["4423063a.c56eb8"],["198b4fc2.1fca4"],["8d3d9618.158258"],["bd349fa8.774d1"],["dd066a1.e232a98"],["af0311cf.2cd99"],["3a0b2dac.6bc8a2"],["fcd12eb.29738d"],["3b4d261d.daba4a"],["c2c747ec.cc0b58"],["f5269e19.63df9"]]},{"id":"63fac829.9a70a8","type":"comment","z":"9bc9a9f6.d07ec8","name":"Repartiendo por topic","info":"","x":820,"y":160,"wires":[]},{"id":"8d3d9618.158258","type":"function","z":"9bc9a9f6.d07ec8","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":[["40daa278.7eaa8c"]]},{"id":"e4137dce.db47","type":"function","z":"9bc9a9f6.d07ec8","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":[["40daa278.7eaa8c"]]},{"id":"bd349fa8.774d1","type":"function","z":"9bc9a9f6.d07ec8","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]);\nglobal.set('voltajeabsorcionconfmax0' , voltajeabsorcionconf);\nglobal.set('voltajeflotacionconfmax0' , voltajeflotacionconf);\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":[["40daa278.7eaa8c"]]},{"id":"4423063a.c56eb8","type":"function","z":"9bc9a9f6.d07ec8","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":[["40daa278.7eaa8c"]]},{"id":"198b4fc2.1fca4","type":"function","z":"9bc9a9f6.d07ec8","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":[["40daa278.7eaa8c"]]},{"id":"dd066a1.e232a98","type":"function","z":"9bc9a9f6.d07ec8","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":[["40daa278.7eaa8c"]]},{"id":"9c689710.cb0018","type":"function","z":"9bc9a9f6.d07ec8","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":[["40daa278.7eaa8c"]]},{"id":"d4064c8b.a9e53","type":"comment","z":"9bc9a9f6.d07ec8","name":"Extractores","info":"","x":1070,"y":20,"wires":[]},{"id":"af0311cf.2cd99","type":"function","z":"9bc9a9f6.d07ec8","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":[["5b6d382c.101f88"]]},{"id":"40daa278.7eaa8c","type":"join","z":"9bc9a9f6.d07ec8","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":[["d4e52660.0f5988"]]},{"id":"3a0b2dac.6bc8a2","type":"function","z":"9bc9a9f6.d07ec8","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":[["40daa278.7eaa8c"]]},{"id":"fcd12eb.29738d","type":"function","z":"9bc9a9f6.d07ec8","name":"QPIGS2Extraccion","func":"var output = msg.payload.split(\" \");\nlet amperiosenplaca2 = parseInt(output[0].slice(1, 5));\nlet voltajeenplaca2 = parseInt(output[1]);\nlet potenciaenplaca2 = parseInt(output[2]);\nreturn [\n    {\n        payload: {\n                potenciaenplaca2: potenciaenplaca2,\n                voltajeenplaca2: voltajeenplaca2,\n                amperiosenplaca2: amperiosenplaca2\n                }\n    }\n];","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1070,"y":420,"wires":[["40daa278.7eaa8c"]]},{"id":"3b4d261d.daba4a","type":"function","z":"9bc9a9f6.d07ec8","name":"QLEDExtraccion","func":"var output = msg.payload.split(\" \");\nlet led = parseInt(output[0].slice(1, 2));\nlet ledvelocidad = parseInt(output[1]);\nlet ledefectos = parseInt(output[2]);\nlet ledbrillo = parseInt(output[3]);\nlet ledcosa = parseInt(output[4]);\nlet colorred = (output[5].slice(0,9));\nlet colorsolar = (output[5].slice(9,18));\nlet colorbateria = (output[5].slice(18,27));\nreturn [\n    {\n        payload: {\n                led: led,\n                ledvelocidad: ledvelocidad,\n                ledefectos: ledefectos,\n                ledbrillo: ledbrillo,\n                ledcosa: ledcosa,\n                colorred: colorred,\n                colorsolar: colorsolar,\n                colorbateria: colorbateria\n                }\n    }\n];","outputs":1,"noerr":0,"initialize":"","finalize":"","x":1060,"y":460,"wires":[["40daa278.7eaa8c"]]},{"id":"c2c747ec.cc0b58","type":"function","z":"9bc9a9f6.d07ec8","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":500,"wires":[["40daa278.7eaa8c"]]},{"id":"f5269e19.63df9","type":"function","z":"9bc9a9f6.d07ec8","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":540,"wires":[["40daa278.7eaa8c"]]},{"id":"1dd162e5.f2db9d","type":"inject","z":"9bc9a9f6.d07ec8","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":[["61ce5339.3ff7ac"]]},{"id":"bb6879c0.e826a8","type":"inject","z":"9bc9a9f6.d07ec8","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":[["61ce5339.3ff7ac"]]},{"id":"60ba838c.a6dd2c","type":"inject","z":"9bc9a9f6.d07ec8","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":[["61ce5339.3ff7ac"]]},{"id":"a17ca4f5.bae9e8","type":"inject","z":"9bc9a9f6.d07ec8","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":[["61ce5339.3ff7ac"]]},{"id":"5acbc736.c03538","type":"inject","z":"9bc9a9f6.d07ec8","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":[["61ce5339.3ff7ac"]]},{"id":"a6e956bb.15a808","type":"inject","z":"9bc9a9f6.d07ec8","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":[["61ce5339.3ff7ac"]]},{"id":"d882e049.679d1","type":"inject","z":"9bc9a9f6.d07ec8","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":[["61ce5339.3ff7ac"]]},{"id":"251c2eb7.ca3252","type":"inject","z":"9bc9a9f6.d07ec8","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":[["61ce5339.3ff7ac"]]},{"id":"61ce5339.3ff7ac","type":"link out","z":"9bc9a9f6.d07ec8","name":"EntradaalCRC","links":["2756c316.eadf3c"],"x":580,"y":360,"wires":[],"l":true},{"id":"497e6e1c.0ee55","type":"comment","z":"9bc9a9f6.d07ec8","name":"Comandos de monitorizacion cada 4 segundos","info":"Comandos de Monitorizacion","x":220,"y":40,"wires":[]},{"id":"39202c23.e6ea64","type":"inject","z":"9bc9a9f6.d07ec8","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":[["61ce5339.3ff7ac"]]},{"id":"c82b0d71.22c3c","type":"inject","z":"9bc9a9f6.d07ec8","name":"QPIGS2 Segundo Campo","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"4","crontab":"","once":false,"onceDelay":0.1,"topic":"Campo2","payload":"QPIGS2","payloadType":"str","x":180,"y":440,"wires":[["61ce5339.3ff7ac"]]},{"id":"4813b372.e9c16c","type":"inject","z":"9bc9a9f6.d07ec8","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":[["da8cd6b5.8dc498"]]},{"id":"da8cd6b5.8dc498","type":"simpletime","z":"9bc9a9f6.d07ec8","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":[["7ca8dbdc.f345e4"]]},{"id":"7ca8dbdc.f345e4","type":"function","z":"9bc9a9f6.d07ec8","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":[["61ce5339.3ff7ac"]]},{"id":"445143c5.a5e9fc","type":"inject","z":"9bc9a9f6.d07ec8","name":"QLED Barra LED","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"4","crontab":"","once":false,"onceDelay":0.1,"topic":"Barra LED","payload":"QLED","payloadType":"str","x":150,"y":560,"wires":[["61ce5339.3ff7ac"]]},{"id":"aa4c4d04.97883","type":"inject","z":"9bc9a9f6.d07ec8","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":[["aafe8fbb.da251"]]},{"id":"aafe8fbb.da251","type":"simpletime","z":"9bc9a9f6.d07ec8","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":[["2f807913.a65ce6"]]},{"id":"d4afdba8.6582e8","type":"inject","z":"9bc9a9f6.d07ec8","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":[["dc6f9b44.a170f8"]]},{"id":"dc6f9b44.a170f8","type":"simpletime","z":"9bc9a9f6.d07ec8","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":[["985cc328.92477"]]},{"id":"2f807913.a65ce6","type":"function","z":"9bc9a9f6.d07ec8","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":[["61ce5339.3ff7ac"]]},{"id":"985cc328.92477","type":"function","z":"9bc9a9f6.d07ec8","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":[["61ce5339.3ff7ac"]]},{"id":"6919b517.d1e43c","type":"comment","z":"9bc9a9f6.d07ec8","name":"Monitorizacion para Hibrido AXPERT MAX SINGLE  ","info":"","x":690,"y":40,"wires":[]},{"id":"4698e682.977198","type":"link out","z":"9bc9a9f6.d07ec8","name":"TodasLecturasAXPERTMAX","links":[],"x":1560,"y":340,"wires":[],"l":true},{"id":"bd8fa222.184f2","type":"comment","z":"9bc9a9f6.d07ec8","name":"Creando Objeto con todas las lecturas del Hibrido","info":"","x":1440,"y":240,"wires":[]},{"id":"d4e52660.0f5988","type":"function","z":"9bc9a9f6.d07ec8","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":[["4698e682.977198","645a2e8b.dcbcb"]]},{"id":"2756c316.eadf3c","type":"link in","z":"9bc9a9f6.d07ec8","name":"EntradaalCRC","links":["61ce5339.3ff7ac"],"x":830,"y":640,"wires":[["509893d1.98ab3c"]],"l":true},{"id":"4faa967b.783d88","type":"link in","z":"9bc9a9f6.d07ec8","name":"Respuesta Puerto serie","links":["22222d68.bf0a42"],"x":580,"y":280,"wires":[["ab516497.6a2e48"]],"l":true},{"id":"5b6d382c.101f88","type":"rbe","z":"9bc9a9f6.d07ec8","name":"","func":"rbe","gap":"","start":"","inout":"out","property":"payload","x":1310,"y":340,"wires":[["40daa278.7eaa8c"]]},{"id":"8bc4fb15.08c6c8","type":"serial request","z":"9bc9a9f6.d07ec8","name":"","serial":"f455d2af.938f","x":1190,"y":640,"wires":[["22222d68.bf0a42"]]},{"id":"f455d2af.938f","type":"serial-port","z":"","serialport":"/dev/ttyUSB0","serialbaud":"2400","databits":"8","parity":"none","stopbits":"1","waitfor":"","dtr":"none","rts":"none","cts":"none","dsr":"none","newline":"\\r","bin":"false","out":"char","addchar":"","responsetimeout":"10000"}]
    Corresponde a este flujo en la plataforma:

    Pulsa en la imagen para verla en tamaño completo

Nombre: FlujomonitorizacionMAX.jpg
Visitas: 181
Tamaño: 66,9 KB
ID: 23973

    Algunas consideraciones de este flujo:

    1.- Esta hecho para conversor USB-RS232 tipo PL2303.
    2.- La salida obtenida es un JSON con todos los parametros solicitados y topic el numero de serie del MAX.
    3.- La solicitud de datos es cada 4 segundos.
    4.- Hay un ajuste de fecha y hora una vez cada 24 horas siendo a las 4:00 cuando se hace.
    5.- Da datos cada minuto de energia producida por campos solares (los dos) diarios.
    6.- Da datos cada minuto de energia consumida en ACOUT diaria.
    7.- Es necesaria la instalacion del nodo simpletime. Se busca en la paleta de nodos instalables.

    Para proximas entregas queda pendiente un dashboard alimentado por ese JSON como podria ser este:

    Pulsa en la imagen para verla en tamaño completo

Nombre: dashboardprovisional.jpg
Visitas: 172
Tamaño: 61,1 KB
ID: 23974
    Buen trabajo te pegaste Tejota ,,, ya estoy obteniendo datos en modo gráfico de los valores principales , pero la verdad con esta riqueza de información merece la pena hacer un panel en condiciones, a ver si hoy me llega el cable que necesito y lo pongo en marcha.
    Muchas gracias. ¡¡¡

  15. #190
    Au-PRX está desconectado Forero
    Fecha de ingreso
    sep 2020
    Ubicación
    Cataluña
    Mensajes
    316

    Predeterminado Re: [Voltronic] AXPERT MAX review en profundidad

    Tejota, estoy viendo temperaturas de 45º en el MAX con una temperatura ambiente de 17, no es un poco alta ? , cuando en verano tengamos 30º de temperatura ambiente... que pasara ? se pondrá sobre los 50 , 60 ¡¡¡¡ ? . Esto esta sucediendo mientras le están entrado 80A de carga a las baterías.
    Es por prever mas ventilación en la sala de maquinas.

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

    Predeterminado Re: [Voltronic] AXPERT MAX review en profundidad

    Cita Iniciado por Au-PRX Ver mensaje
    Tejota, estoy viendo temperaturas de 45º en el MAX con una temperatura ambiente de 17, no es un poco alta ? , cuando en verano tengamos 30º de temperatura ambiente... que pasara ? se pondrá sobre los 50 , 60 ¡¡¡¡ ? . Esto esta sucediendo mientras le están entrado 80A de carga a las baterías.
    Es por prever mas ventilación en la sala de maquinas.
    Tu tambien lo has notado no??? La temperatura de este bicho sube mucho cuando el regulador esta trabajando al maximo y el acoutput tambien. Yo he visto hasta 66 grados... con 15 grados de ambiente. Antes de que llegue el verano le dare la vuelta a los ventiladores quitando los filtros de arriba.... el flujo de aire esta invertido y eso no es natural. El aire caliente tiene que ir de abajo hacia arriba, no al reves como va ahora. Esto ya lo he hecho en otros Voltronics y la diferencia es brvtal. Y en este mas todavia porque es mas tocho.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  17. #192
    Pidjey está desconectado Forero
    Fecha de ingreso
    ene 2013
    Ubicación
    Leon
    Mensajes
    1.521

    Predeterminado Re: [Voltronic] AXPERT MAX review en profundidad

    Cita Iniciado por Tejota Ver mensaje
    Tu tambien lo has notado no??? La temperatura de este bicho sube mucho cuando el regulador esta trabajando al maximo y el acoutput tambien. Yo he visto hasta 66 grados... con 15 grados de ambiente. Antes de que llegue el verano le dare la vuelta a los ventiladores quitando los filtros de arriba.... el flujo de aire esta invertido y eso no es natural. El aire caliente tiene que ir de abajo hacia arriba, no al reves como va ahora. Esto ya lo he hecho en otros Voltronics y la diferencia es brvtal. Y en este mas todavia porque es mas tocho.
    Eso me di cuenta yo en el mio, que el aire lo saca para abajo lo que yo tambien pienso que no tiene mucho sentido. Lo cambiare.
    Diseñador de curvas solares y equivalente electrico usando los datos tecnicos del panel: http://solarpanelsimulator.bitballoon.com/

  18. #193
    Au-PRX está desconectado Forero
    Fecha de ingreso
    sep 2020
    Ubicación
    Cataluña
    Mensajes
    316

    Predeterminado Re: [Voltronic] AXPERT MAX review en profundidad

    Cita Iniciado por Tejota Ver mensaje
    Tu tambien lo has notado no??? La temperatura de este bicho sube mucho cuando el regulador esta trabajando al maximo y el acoutput tambien. Yo he visto hasta 66 grados... con 15 grados de ambiente. Antes de que llegue el verano le dare la vuelta a los ventiladores quitando los filtros de arriba.... el flujo de aire esta invertido y eso no es natural. El aire caliente tiene que ir de abajo hacia arriba, no al reves como va ahora. Esto ya lo he hecho en otros Voltronics y la diferencia es brvtal. Y en este mas todavia porque es mas tocho.
    estos chinos.. no tiene sentido ponerlos al contrario, cuesta lo mismo poner de un lado que del otro, de no ser que tenga cerca de los ventiladores algún componente especialmente sensible al calor y de esta forma este recibiendo un flujo mas alto que puestos de la forma natural.
    Incluso si me apuras el aire caliente se almacena en la zona alta de las estancias, especialmente en las salas de maquinas, por eso los extractores están arriba siempre, tendré que incluir uno en mi sala, que es pequeña, y me temo que este bicho la caliente mas rápido de la cuenta.

  19. #194
    Au-PRX está desconectado Forero
    Fecha de ingreso
    sep 2020
    Ubicación
    Cataluña
    Mensajes
    316

    Predeterminado Re: [Voltronic] AXPERT MAX review en profundidad

    No hay nada como ver gráficas para entender que está pasando....
    Tejota, al final recuperé una Rasb que tenía con un PiHole en desuso y la estoy haciendo trabajar recogiendo la telemetría del inversor, hoy ya pude ver un ciclo de carga completo, y descubrí algo curioso, que supongo que será normal, pero que desconocía, y es que los springs no solo van por su cuenta cuando alguno recibe una sombra, sino que cuando le parece o frena y suministra más carga también trabajan de forma independiente, no sé muy bien como o cuál es el criterio para hacer trabajar a uno más que al otro, y en otro momento justo lo contrario.
    El escenario es un soporte de paneles en dos filas una sobre otra 8x8 paneles de 465W

    En la gráfica que adjunto se puede ver muy bien el efecto de una sombra, un poco después de las 8:50 comienzan los primeros valores de carga, sobre las 9 arranca claramente la carga y comienza el juego de la sombra, es una sombra estrecha que afecta solo al Spring 01 , es la punta de un árbol cuando el sol está aun muy bajo, después de las 10:00 ya no hay sombras y se igualan (aprox) las producciones de los dos String , alcanzando los 80A de carga aporx sobre las 10:30, sobre las 10:50 la batería alcanza el 90% de carga y reduce a 20A y despus a 10A al alcanzar el 95% de carga, como verás las gráficas de potencia de los springs, hacen lo que quieren, pero son muy simétricas y cuanto más se separa la gráfica de la zona de carga fuerte, más diferentes son las potencias que dan cada spring .
    Esto me hace preguntarme si en realidad existen diferencias de producción entre los dos springs

    [Voltronic]  AXPERT MAX  review en profundidad-cargaplacas.jpg

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

    Predeterminado Re: [Voltronic] AXPERT MAX review en profundidad

    Yo es que tengo los dos strings en diferentes orientaciones y no puedo hacer esas comparaciones. Uno esta al Este con 16x250Wp y el otro al Sur con 10x250Wp. Lo que si he notado es que cuando le da la gana un campo (o ambos) se queda a cero produccion durante unos segundos y despues vuelve al maximo o hasta donde le pida la carga.
    Tampoco le he dedicado tiempo a ver que pasaba...

    Con Rpi el conversor rs232-usb va mejor o hace lo mismo que el SO del puertas??
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  21. #196
    Au-PRX está desconectado Forero
    Fecha de ingreso
    sep 2020
    Ubicación
    Cataluña
    Mensajes
    316

    Predeterminado Re: [Voltronic] AXPERT MAX review en profundidad

    Cita Iniciado por Tejota Ver mensaje
    Yo es que tengo los dos strings en diferentes orientaciones y no puedo hacer esas comparaciones. Uno esta al Este con 16x250Wp y el otro al Sur con 10x250Wp. Lo que si he notado es que cuando le da la gana un campo (o ambos) se queda a cero produccion durante unos segundos y despues vuelve al maximo o hasta donde le pida la carga.
    Tampoco le he dedicado tiempo a ver que pasaba...

    Con Rpi el conversor rs232-usb va mejor o hace lo mismo que el SO del puertas??
    Pues el cable serie funciona mejor con la Rpi, al final logre que funcionara con el windows, pero la Rpi funciona especialmente bien para cosas como esta, solo le falta un puerto IDE ... 😆, hace años que uso Rpi para cosas de poco recursos, lo malo es que antes o después, la sd se fastidia, y los imventos para poner arranque desde usb tampoco son una maravilla, en ese sentido bananapi esta mejor

  22. #197
    Pidjey está desconectado Forero
    Fecha de ingreso
    ene 2013
    Ubicación
    Leon
    Mensajes
    1.521

    Predeterminado Re: [Voltronic] AXPERT MAX review en profundidad

    Lo de que recolecten tus datos esta perfectamente regulado. Tiene que venir por lei en los terminos cuando aceptas su servicio. Cualquier medianamente serie empresa te lo va a poner. Que alguien se lo lea es otra cosa.

    Mientras se haga de manera anonima que es como dice la lei yo estoy a favor. Es la mejor manera de mejorar un producto.
    Diseñador de curvas solares y equivalente electrico usando los datos tecnicos del panel: http://solarpanelsimulator.bitballoon.com/

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

    Predeterminado Re: [Voltronic] AXPERT MAX review en profundidad

    Cita Iniciado por Pidjey Ver mensaje
    Lo de que recolecten tus datos esta perfectamente regulado. Tiene que venir por lei en los terminos cuando aceptas su servicio. Cualquier medianamente serie empresa te lo va a poner. Que alguien se lo lea es otra cosa.

    Mientras se haga de manera anonima que es como dice la lei yo estoy a favor. Es la mejor manera de mejorar un producto.
    Pues eso yo no lo he leido en el manual de instrucciones.
    De hecho si no sabes como esta diseñado ese modulo wifi no deberias de preocuparte de nada. Lo que pasa que si nunca has manejado un modulo de esos no sabes de lo que es capaz. Y tal cual esta montado y donde esta montado, lo que menos me preocuparia seria que recolectasen los datos. Ese modulo es un conversor wifi-ttl, es decir, lo que viene y va por el wifi pasa directamente al hibrido, sean datos de solo lectura asi como datos de escritura, es decir, pueden controlar el hibrido sin tu saberlo. Y eso, ya no mola tanto.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  24. #199
    Pidjey está desconectado Forero
    Fecha de ingreso
    ene 2013
    Ubicación
    Leon
    Mensajes
    1.521

    Predeterminado Re: [Voltronic] AXPERT MAX review en profundidad

    Si hacen eso estan incurriendo en un delito ya que eso esta perfectamente regulado en la lei.
    Diseñador de curvas solares y equivalente electrico usando los datos tecnicos del panel: http://solarpanelsimulator.bitballoon.com/

  25. #200
    Au-PRX está desconectado Forero
    Fecha de ingreso
    sep 2020
    Ubicación
    Cataluña
    Mensajes
    316

    Predeterminado Re: [Voltronic] AXPERT MAX review en profundidad

    Cita Iniciado por Pidjey Ver mensaje
    Lo de que recolecten tus datos esta perfectamente regulado. Tiene que venir por lei en los terminos cuando aceptas su servicio. Cualquier medianamente serie empresa te lo va a poner. Que alguien se lo lea es otra cosa.

    Mientras se haga de manera anonima que es como dice la lei yo estoy a favor. Es la mejor manera de mejorar un producto.
    Permíteme que discrepe Pidjey, para mi el fin no justifica los medios nunca, y recogiendo datos de esa forma, se están haciendo las cosas bastante mal.
    Primero eso de que para desapoyar un producto tenga yo que ceder mis datos, por supuestos cargando yo con el costo de sesión de los mismos, no me parece para nada bien, si tuviesen un mínimo, este tipo de prácticas iría acompañada de alguna ventaja como compensación por correr yo con la generación y trasporte de esos datos, que al fin y al cabo son míos, esta ventaja bien podría ser algún tipo de descuento o periodo de soporte gratuito. Segundo es práctica muy, pero muy habitual, aceptes o no el contrato, que todos y cada unos de los dispositivos que conectas a la red, intentan comunicarse sin tu permiso, prácticamente en cuanto disponen red, están llamando a casa, yo esto lo llamo espionaje sin eufemismos, y te puedo asegurar que es así, esta es una de las áreas que toco por mi trabajo, y tendrías que ver los logs que salen, y no, no son solo llamadas para actualizaciones de lo que sea, que aun así, tendrían que ser notificadas y autorizadas, se trata de telemetría pura y dura, esto es una intrusión bastante deshonesta en nuestra privacidad, y no por extendida es menos grave, y por último, de dire que el anonimato no existe, solo es una falsa impresión, vamos que si pretendo saber cosas de ti, te sorprenderías hasta que punto puedo descubrir quien eres y que haces, si colocas uno de mis productos en tu casa, y si tienes más de uno, y si cruzo información con otras empresas "aliadas" o la compro, te aseguro que no es anónimo para nada.

    Por otra parte, me parece lícito que una empresa solicite tu participación clara y francamente en una campaña de recogida de información para la mejora de un producto, pero tiene que figurar en un lugar ineludible y de forma clara, (quieres ceder los datos de telemetría de este equipo para bla bla) , si está enterado en el fondo de un contrato de 15 páginas , es como si no existiese, razón por la que hacen los contratos con lenguaje de difícil comprensión y diseñados para que el usuario abandone en la primera página.


    Por último, piensa que la finalidad principal, y casi la única de la recogida de datos, es para ganar dinero, en el mejor de los casos de forma honesta, en el peor, y cada dia más extendido, de forma intrusiva elaborando perfiles de compra según tu actividad, perfiles que después se usan para bombardeándote con publicidad, perfiles que se venden o ceden a otras empresas y que en muchos casos terminan por perjudicarte de una u otra forma, en algunos casos causando perjuicios grabes para algunas personas.


    El cambio que sufrimos como sociedad en las últimas décadas, sobre todo en lo referente a la comunicación y la información, es lo bastante rápido como para que los inconvenientes de este cambio pasen desapercibidos para un gran número de personas, que no saben y directamente no quieren saber que está pasando con su información, mientras miles de desconocidos saben de ti mucho más de lo que crees, tú ponen cortinas en su casa por si el vecino de enfrente te puede ver, esto con el tiempo se normalizara de algún modo, o bien seremos todos más ... exhibicionistas , o bien más y más personas entenderán que la exposición a las redes de información es una realidad que nos rodea y tenemos que poder regularla, como las cortinas de nuestra casa.

Página 8 de 33 PrimerPrimer ... 78918 ... Ú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