Página 6 de 8 PrimerPrimer ... 567 ... ÚltimoÚltimo
Resultados 126 al 150 de 194
  1. #126
    asl12 está desconectado Forero
    Fecha de ingreso
    mar 2021
    Ubicación
    Navarra
    Mensajes
    238

    Predeterminado Re: Tutorial Monitorización Voltronic MAX, Nodered, Grafana...

    Hola!

    Ya de vuelta por casa... ya puse el cable que recomendaste y el segundo inversor ya comunica sin problema... pongo el link para el que lo necesite:

    https://www.amazon.es/gp/product/B08...?ie=UTF8&psc=1

    La verdad es que tengo la motorización bastante torcida...

    El BMV de Victron me está trayendo por la calle de la amargura, acabo de pedir otro de los cables oficiales, porque las lecturas son incorrectas (he desenergizado al completo el shunt, el control y el usb, en todas las combinaciones posibles incluyendo el reseteo a nivel de fábrica y sigue sin funcionar...) Sólo da lecturas correctas cuando modifico los baudios del nodo serie, despliego y lo vuelvo a poner en los 19600 que toca...pero una vez hecho, ya no cambian los valores... Por tanto, todos los automatismos al traste... Os actualizaré una vez que monte uno nuevo mañana...

    AU, tienes alguna sugerencia en relación al Hub de USB? estoy utilizando un UGreen USB3.0 que me funcionaba sin problemas...

    Los 10 Tuya que tengo, pues van unas veces y otras no... ahora el nodo al completo lo tengo fuera de Node Red. El tema es que se me cambian constantemente las IP de los enchufes wifi, las he fijado con el router (Cudy LT500, usando cesiones estáticas DHCP) pero unas se fijan y otras no... total, por ahora todos los enchufes los tengo fuera del sistema... Hoy probaré a dejarlos fuera de linea encima de una mesa, rearrancar el router e ir colocándolos uno a uno y a ver si con sus MAC les da la IP que he fijado (dentro del rango DHCP, que ya no sé ni si es lo correcto)

    A ver si reconduzco el tema...

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

    Predeterminado Re: Tutorial Monitorización Voltronic MAX, Nodered, Grafana...

    Cita Iniciado por asl12 Ver mensaje
    Hola!

    Ya de vuelta por casa... ya puse el cable que recomendaste y el segundo inversor ya comunica sin problema... pongo el link para el que lo necesite:

    https://www.amazon.es/gp/product/B08...?ie=UTF8&psc=1

    La verdad es que tengo la motorización bastante torcida...

    El BMV de Victron me está trayendo por la calle de la amargura, acabo de pedir otro de los cables oficiales, porque las lecturas son incorrectas (he desenergizado al completo el shunt, el control y el usb, en todas las combinaciones posibles incluyendo el reseteo a nivel de fábrica y sigue sin funcionar...) Sólo da lecturas correctas cuando modifico los baudios del nodo serie, despliego y lo vuelvo a poner en los 19600 que toca...pero una vez hecho, ya no cambian los valores... Por tanto, todos los automatismos al traste... Os actualizaré una vez que monte uno nuevo mañana...
    Si entiendo bien, el BMW te funciona bien una lectura o pocas más cuando lo configuras en 19600 y después ya no lee más, eso tiene una pinta tremenda de fallo en el trasporte, cables ¡¡¡

    Cita Iniciado por asl12 Ver mensaje
    AU, tienes alguna sugerencia en relación al Hub de USB? estoy utilizando un UGreen USB3.0 que me funcionaba sin problemas...
    No soy nada partidario de usar hub USB, teóricamente y digo teóricamente, se puede conectar casi lo que quieras sin problemas, pero la experiencia me dice que son más corriente de lo que parece los problemas por esta causa, sobre todo cuando hay conexiones concurrentes, no quiere decir que no pueda funcionar, solo que estamos añadiendo más factores a la ecuación .. Si puedes, evitalos, si no es posible realiza pruebas y desconfía hasta que te cerciores de su fiabilidad.

    Cita Iniciado por asl12 Ver mensaje
    Los 10 Tuya que tengo, pues van unas veces y otras no... ahora el nodo al completo lo tengo fuera de Node Red. El tema es que se me cambian constantemente las IP de los enchufes wifi, las he fijado con el router (Cudy LT500, usando cesiones estáticas DHCP) pero unas se fijan y otras no... total, por ahora todos los enchufes los tengo fuera del sistema... Hoy probaré a dejarlos fuera de linea encima de una mesa, rearrancar el router e ir colocándolos uno a uno y a ver si con sus MAC les da la IP que he fijado (dentro del rango DHCP, que ya no sé ni si es lo correcto)

    A ver si reconduzco el tema...
    Yo tengo todos los dispositivos domóticos en otro rango de red, y con asignación ip permanente por mac , es la única forma de tener flexibilidad para cambiar un dispositivo sin mucho lío, al mismo tiempo que evitas saltos y cambio.
    Lo de tener los dispositivos en otro rango de red, está bien si tienes muchos , sin son pocos, probablemente el lío que te supondrá, no te merezca la pena, y tienes que comprobar antes que tu router te permita manejar bien dos redes. En mi caso, no uso el router de la compañía, uso un enrutador propio y ataco la ONT directamente, y entre este enrutador y la red interna, tengo un firewall que realiza todas las gestiones, pero todo esto, estando muy bien, no es recomendable para alguien que no se dedique profesionalmente o sea un entusiasta de la tecnología de red, no es fácil ni barato.

    Ya contaras si cambiando el cable se soluciona lo del BMW

  3. #128
    asl12 está desconectado Forero
    Fecha de ingreso
    mar 2021
    Ubicación
    Navarra
    Mensajes
    238

    Predeterminado Re: Tutorial Monitorización Voltronic MAX, Nodered, Grafana...

    Gracias AU!

    Al final toda la desesperación se ha terminado y tengo el nodered funcionando! Al final del post, podré fotos, pero indico las soluciones a los problemas:

    1. BMV, tras el reseteo completo vi que la toma de datos sin limitación de mensajes por tiempo daba valores correctos. La solución, quitar los límites de mensajes por segundo y sobre todo, borrar el nodo serie y volverlo a importar... y solucionado! Tengo el SoC y con él recupero control!

    2. Los Inversores en orden, pero las instrucciones que enviaba al CRC no se atendían. La solución, duplicar el CRC y usar uno en exclusiva para la carga de instrucciones... como la seda va ahora.

    3. Los Tuya los estoy metiendo a nodered una vez veo que la IP se queda estática, tengo ya 6 que funcionan bien aunque en nodo sólo he metido 3 (ACS1, ACS2 y VE)

    4. El Hub lo necesito porque tengo 2 inversores, el BMV, el disco SSD y un teclado+trackpad... cómo lo harías tú?

    5. Si que te agradecería que me dijeses cómo puedo representar la suma de valores de los dos inversores (que finalmente lo hice...)

    Código:
    [{"id":"c64276cc.982158","type":"tab","label":"Graficos MQQT","disabled":false,"info":""},{"id":"768a5ecb.9404","type":"ui_text","z":"c64276cc.982158","group":"b5a59274.ca4dc","order":8,"width":"2","height":"1","name":"","label":"M-7.2","format":"{{msg.payload.prioridadfuentesalidaconf}}","layout":"row-center","className":"","x":690,"y":280,"wires":[]},{"id":"a989883d.cc2e78","type":"ui_gauge","z":"c64276cc.982158","name":"","group":"1940745e.8b2d0c","order":3,"width":"3","height":"3","gtype":"gage","title":"String SSO 1","label":"","format":"{{payload.potenciaenplaca}} W","min":0,"max":"3600","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","className":"","x":710,"y":80,"wires":[]},{"id":"edd55d24.98044","type":"ui_gauge","z":"c64276cc.982158","name":"","group":"a5ca3b79.b7e978","order":1,"width":"6","height":"3","gtype":"gage","title":"Potencia Salida","label":"","format":"{{payload.potenciaactivasalida}} W","min":0,"max":"7200","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","className":"","x":720,"y":120,"wires":[]},{"id":"e457ef40.31d8a","type":"ui_gauge","z":"c64276cc.982158","name":"","group":"1940745e.8b2d0c","order":4,"width":"3","height":"3","gtype":"gage","title":"String SSO 2","label":"","format":"{{payload.potenciaenplaca2}} W","min":0,"max":"3600","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","className":"","x":710,"y":200,"wires":[]},{"id":"bafcfdec.7ebc6","type":"ui_gauge","z":"c64276cc.982158","name":"","group":"c44c96ba.8c4278","order":3,"width":"3","height":"3","gtype":"gage","title":"Energia Generada MAX 7.2","label":"","format":"{{payload.energiadiaria}} wh","min":0,"max":"30000","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","className":"","x":760,"y":900,"wires":[]},{"id":"a5104623.fc7288","type":"ui_gauge","z":"c64276cc.982158","name":"","group":"c44c96ba.8c4278","order":2,"width":"3","height":"3","gtype":"gage","title":"Energía Consumida MAX 7.2","label":"","format":"{{payload.cargadiariaentregada}} wh","min":0,"max":"40000","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","className":"","x":760,"y":940,"wires":[]},{"id":"8ffc9a68.261e68","type":"mqtt in","z":"c64276cc.982158","name":"Max7200","topic":"Max7200","qos":"2","datatype":"auto","broker":"9ebb92df.f8b57","nl":false,"rap":true,"rh":0,"x":100,"y":120,"wires":[["f7996de7.12aa9"]]},{"id":"63f686c6.bf6c58","type":"join","z":"c64276cc.982158","name":"","mode":"custom","build":"merged","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"30","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":430,"y":120,"wires":[["a989883d.cc2e78","edd55d24.98044","e457ef40.31d8a","a91ac087.5c11d","a13fab4f.cf68b8","adc58f62.2d06c","6aab7e05.c76c3","768a5ecb.9404","173b6bc4.3dc784","d5c5064c.6cf868","9a663362.144ae","209697e6.cffb08","c89a8456.fcc208","5da18617.df9c28","3c8a1987.0b4be6"]]},{"id":"a91ac087.5c11d","type":"debug","z":"c64276cc.982158","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":710,"y":40,"wires":[]},{"id":"a1b3c433.b23b88","type":"mqtt in","z":"c64276cc.982158","name":"Max7200 Diaria","topic":"Max7200diarias","qos":"2","datatype":"auto","broker":"9ebb92df.f8b57","nl":false,"rap":true,"rh":0,"x":120,"y":920,"wires":[["275dcbd4.241ba4"]]},{"id":"275dcbd4.241ba4","type":"json","z":"c64276cc.982158","name":"","property":"payload","action":"","pretty":false,"x":290,"y":920,"wires":[["222b994a.698006"]]},{"id":"222b994a.698006","type":"join","z":"c64276cc.982158","name":"","mode":"custom","build":"merged","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"30","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":430,"y":920,"wires":[["bafcfdec.7ebc6","a5104623.fc7288","6f09e58e.3e908c","7c72d964.22c268"]]},{"id":"6f09e58e.3e908c","type":"debug","z":"c64276cc.982158","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":710,"y":860,"wires":[]},{"id":"91073ac4.fb9ff8","type":"ui_gauge","z":"c64276cc.982158","name":"","group":"c44c96ba.8c4278","order":4,"width":"3","height":"3","gtype":"gage","title":"Energia Generada MAX 8.0","label":"","format":"{{payload.energiadiaria}} wh","min":0,"max":"30000","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","className":"","x":760,"y":1180,"wires":[]},{"id":"7ef7f739.ba2008","type":"ui_gauge","z":"c64276cc.982158","name":"","group":"1940745e.8b2d0c","order":2,"width":"3","height":"3","gtype":"gage","title":"String SE","label":"","format":"{{payload.potenciaenplaca}} W","min":0,"max":"3600","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","className":"","x":700,"y":620,"wires":[]},{"id":"68a5779.7d96188","type":"mqtt in","z":"c64276cc.982158","name":"Max8000 Diaria","topic":"Max8000diarias","qos":"2","datatype":"auto","broker":"9ebb92df.f8b57","nl":false,"rap":true,"rh":0,"x":120,"y":1180,"wires":[["e4701270.b5379"]]},{"id":"e4701270.b5379","type":"json","z":"c64276cc.982158","name":"","property":"payload","action":"","pretty":false,"x":290,"y":1180,"wires":[["9548e6ef.d05c58"]]},{"id":"9548e6ef.d05c58","type":"join","z":"c64276cc.982158","name":"","mode":"custom","build":"merged","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"30","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":430,"y":1180,"wires":[["91073ac4.fb9ff8","58935707.b88d28","67e59d09.fcff44"]]},{"id":"f51481f2.5484d","type":"mqtt in","z":"c64276cc.982158","name":"Max8000","topic":"Max8000","qos":"2","datatype":"auto","broker":"9ebb92df.f8b57","nl":false,"rap":true,"rh":0,"x":120,"y":660,"wires":[["2b112332.f1eb0c"]]},{"id":"470b85c4.2b882c","type":"join","z":"c64276cc.982158","name":"","mode":"custom","build":"merged","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"30","count":"","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":450,"y":660,"wires":[["7ef7f739.ba2008","267585ad.97a04a","d01d76f4.914248","49ce7bd9.220954","bca3fc7.c9486","c3ea8ca1.781d6","9919b80c.926fc8"]]},{"id":"2b112332.f1eb0c","type":"json","z":"c64276cc.982158","name":"","property":"payload","action":"","pretty":false,"x":310,"y":660,"wires":[["470b85c4.2b882c"]]},{"id":"a13fab4f.cf68b8","type":"function","z":"c64276cc.982158","name":"","func":"msg.topic = \"Max7200\"\nmsg.payload = \n{\n    \"max7200_potenciaenplacatotal\": msg.payload.potenciaenplaca + msg.payload.potenciaenplaca2,\n    \"max7200_potenciaenplaca\": msg.payload.potenciaenplaca,\n    \"max7200_potenciaenplaca2\": msg.payload.potenciaenplaca2,\n}\n\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":160,"y":440,"wires":[["14a2f597.631f6a"]]},{"id":"14a2f597.631f6a","type":"join","z":"c64276cc.982158","name":"Combinado Inversores","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":380,"y":480,"wires":[["66e54f94.5a475"]]},{"id":"66e54f94.5a475","type":"function","z":"c64276cc.982158","name":"suma","func":"var total = msg.payload.Max7200.max7200_potenciaenplacatotal + msg.payload.Max8000.max8000_potenciaenplacatotal\nmsg.payload = total\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":550,"y":480,"wires":[["a27cbc26.2401f","7ebefd17.e2b0f4","b18fcf7b.0fd94"]]},{"id":"267585ad.97a04a","type":"function","z":"c64276cc.982158","name":"","func":"msg.topic = \"Max8000\"\nmsg.payload = \n{\n    \"max8000_potenciaenplacatotal\": msg.payload.potenciaenplaca,\n    \"max8000_potenciaenplaca\": msg.payload.potenciaenplaca,\n}\n\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":160,"y":520,"wires":[["14a2f597.631f6a"]]},{"id":"a3662231.41567","type":"join","z":"c64276cc.982158","name":"Combinado Inversores","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"2","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"","reduceFixup":"","x":380,"y":1020,"wires":[["3e2e2657.aca25a"]]},{"id":"3e2e2657.aca25a","type":"function","z":"c64276cc.982158","name":"suma","func":"var total = msg.payload.Max7200.max7200_energiadiariatotal + msg.payload.Max8000.max8000_energiadiariatotal\nmsg.payload = total\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":550,"y":1020,"wires":[["2d164b61.8eed04","99676419.cfcfc8"]]},{"id":"2d164b61.8eed04","type":"ui_gauge","z":"c64276cc.982158","name":"","group":"c44c96ba.8c4278","order":1,"width":"3","height":"3","gtype":"gage","title":"Generacion Total","label":"","format":"{{payload.total}} wh","min":0,"max":"40000","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","className":"","x":730,"y":1020,"wires":[]},{"id":"58935707.b88d28","type":"function","z":"c64276cc.982158","name":"","func":"msg.topic = \"Max8000\"\nmsg.payload = \n{\n    \"max8000_energiadiariatotal\": msg.payload.energiadiaria,\n    \"max8000_energiadiaria\": msg.payload.energiadiaria,\n}\n\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":160,"y":1100,"wires":[["a3662231.41567","2f26c110.876fce"]]},{"id":"7c72d964.22c268","type":"function","z":"c64276cc.982158","name":"","func":"msg.topic = \"Max7200\"\nmsg.payload = \n{\n    \"max7200_energiadiariatotal\": msg.payload.energiadiaria,\n    \"max7200_energiadiaria\": msg.payload.energiadiaria,\n}\n\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":160,"y":980,"wires":[["a3662231.41567","7b4749ac.249f18"]]},{"id":"86a15eb0.4783c","type":"ui_gauge","z":"c64276cc.982158","name":"","group":"1940745e.8b2d0c","order":1,"width":"6","height":"3","gtype":"gage","title":"Todos los Strings","label":"","format":"{{msg.payload.total}} W","min":0,"max":"10800","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","className":"","x":850,"y":480,"wires":[]},{"id":"a27cbc26.2401f","type":"debug","z":"c64276cc.982158","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":710,"y":440,"wires":[]},{"id":"99676419.cfcfc8","type":"debug","z":"c64276cc.982158","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":710,"y":980,"wires":[]},{"id":"d01d76f4.914248","type":"debug","z":"c64276cc.982158","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":710,"y":580,"wires":[]},{"id":"67e59d09.fcff44","type":"debug","z":"c64276cc.982158","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":710,"y":1140,"wires":[]},{"id":"173b6bc4.3dc784","type":"ui_text","z":"c64276cc.982158","group":"b5a59274.ca4dc","order":1,"width":"2","height":"1","name":"","label":"B-7.2","format":"{{payload.voltajeabsorcionconf}} V","layout":"row-center","className":"","x":830,"y":280,"wires":[]},{"id":"d5c5064c.6cf868","type":"ui_text","z":"c64276cc.982158","group":"b5a59274.ca4dc","order":2,"width":"2","height":"1","name":"","label":"F-7.2","format":"{{payload.voltajeabsorcionconf}} V","layout":"row-center","className":"","x":690,"y":320,"wires":[]},{"id":"c3ea8ca1.781d6","type":"ui_text","z":"c64276cc.982158","group":"b5a59274.ca4dc","order":5,"width":"2","height":"1","name":"","label":"F-8.0","format":"{{payload.voltajeabsorcionconf}} V","layout":"row-center","className":"","x":690,"y":780,"wires":[]},{"id":"49ce7bd9.220954","type":"ui_text","z":"c64276cc.982158","group":"b5a59274.ca4dc","order":9,"width":"2","height":"1","name":"","label":"M-8.0","format":"{{msg.payload.prioridadfuentesalidaconf}}","layout":"row-center","className":"","x":690,"y":700,"wires":[]},{"id":"bca3fc7.c9486","type":"ui_text","z":"c64276cc.982158","group":"b5a59274.ca4dc","order":4,"width":"2","height":"1","name":"","label":"B-8.0","format":"{{payload.voltajeabsorcionconf}} V","layout":"row-center","className":"","x":690,"y":740,"wires":[]},{"id":"7ebefd17.e2b0f4","type":"ui_chart","z":"c64276cc.982158","d":true,"name":"","group":"1940745e.8b2d0c","order":6,"width":"6","height":"4","label":"Generación instantanea","chartType":"line","legend":"false","xformat":"HH:mm","interpolate":"linear","nodata":"","dot":true,"ymin":"0","ymax":"8000","removeOlder":"1","removeOlderPoints":"","removeOlderUnit":"86400","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"className":"","x":750,"y":520,"wires":[[]]},{"id":"554ca21f.a1197c","type":"ui_chart","z":"c64276cc.982158","d":true,"name":"","group":"a5ca3b79.b7e978","order":5,"width":"6","height":"4","label":"Consumo instantaneo","chartType":"line","legend":"false","xformat":"HH:mm","interpolate":"linear","nodata":"","dot":true,"ymin":"0","ymax":"8000","removeOlder":"1","removeOlderPoints":"","removeOlderUnit":"86400","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"className":"","x":920,"y":160,"wires":[[]]},{"id":"b18fcf7b.0fd94","type":"json","z":"c64276cc.982158","name":"","property":"payload","action":"","pretty":true,"x":690,"y":480,"wires":[["86a15eb0.4783c","e7027684.913518"]]},{"id":"adc58f62.2d06c","type":"function","z":"c64276cc.982158","name":"","func":"msg.topic = \"Max7200\"\nmsg.payload = \n{\n    \"consumodiariografico\": msg.payload.potenciaactivasalida,\n}\n\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":700,"y":160,"wires":[["554ca21f.a1197c"]]},{"id":"6aab7e05.c76c3","type":"ui_gauge","z":"c64276cc.982158","name":"","group":"f0f0092e.8794b8","order":4,"width":"3","height":"3","gtype":"gage","title":"MAX 7.2","label":"","format":"{{payload.amperioscargabat}} A","min":"0","max":"80","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","className":"","x":700,"y":240,"wires":[]},{"id":"9919b80c.926fc8","type":"ui_gauge","z":"c64276cc.982158","name":"","group":"f0f0092e.8794b8","order":5,"width":"3","height":"3","gtype":"gage","title":"MAX 8.0","label":"","format":"{{payload.amperioscargabat}} A","min":"0","max":"80","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","className":"","x":700,"y":660,"wires":[]},{"id":"d3ba978f.b345f8","type":"debug","z":"c64276cc.982158","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":710,"y":980,"wires":[]},{"id":"7b4749ac.249f18","type":"debug","z":"c64276cc.982158","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":390,"y":980,"wires":[]},{"id":"2f26c110.876fce","type":"debug","z":"c64276cc.982158","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":390,"y":1100,"wires":[]},{"id":"9a663362.144ae","type":"ui_text","z":"c64276cc.982158","group":"b5a59274.ca4dc","order":6,"width":"2","height":"1","name":"","label":"A-7.2","format":"{{payload.amperiosmaxcargadorbatconf}} A","layout":"row-center","className":"","x":830,"y":320,"wires":[]},{"id":"e7027684.913518","type":"debug","z":"c64276cc.982158","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":890,"y":440,"wires":[]},{"id":"f7996de7.12aa9","type":"json","z":"c64276cc.982158","name":"","property":"payload","action":"","pretty":false,"x":290,"y":120,"wires":[["63f686c6.bf6c58"]]},{"id":"209697e6.cffb08","type":"ui_gauge","z":"c64276cc.982158","d":true,"name":"","group":"f0f0092e.8794b8","order":3,"width":"3","height":"3","gtype":"gage","title":"Tension Bateria MAX","label":"","format":"{{payload.voltajebateria}} V","min":"48","max":"56","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","className":"","x":900,"y":200,"wires":[]},{"id":"ee9ab8d4.77e1b8","type":"debug","z":"c64276cc.982158","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":550,"y":1220,"wires":[]},{"id":"c89a8456.fcc208","type":"ui_text","z":"c64276cc.982158","group":"b5a59274.ca4dc","order":7,"width":"2","height":"1","name":"","label":"MC-7.2","format":"{{payload.prioridadcargadorbatconf}}","layout":"row-center","className":"","x":700,"y":360,"wires":[]},{"id":"5da18617.df9c28","type":"ui_gauge","z":"c64276cc.982158","name":"","group":"a5ca3b79.b7e978","order":1,"width":"3","height":"3","gtype":"gage","title":"Tension Externa","label":"","format":"{{payload.voltajered}} V","min":"210","max":"250","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","className":"","x":900,"y":80,"wires":[]},{"id":"3c8a1987.0b4be6","type":"ui_gauge","z":"c64276cc.982158","name":"","group":"a5ca3b79.b7e978","order":1,"width":"3","height":"3","gtype":"gage","title":"Tension Interna","label":"","format":"{{payload.voltajesalida}} V","min":"210","max":"250","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","className":"","x":900,"y":120,"wires":[]},{"id":"b5a59274.ca4dc","type":"ui_group","name":"Control","tab":"402daa81.d7ced4","order":6,"disp":true,"width":"6","collapse":true,"className":""},{"id":"1940745e.8b2d0c","type":"ui_group","name":"Generación","tab":"402daa81.d7ced4","order":3,"disp":true,"width":"6","collapse":false,"className":""},{"id":"a5ca3b79.b7e978","type":"ui_group","name":"Consumo","tab":"402daa81.d7ced4","order":4,"disp":true,"width":"6","collapse":false,"className":""},{"id":"c44c96ba.8c4278","type":"ui_group","name":"Datos diarios","tab":"402daa81.d7ced4","order":5,"disp":true,"width":"6","collapse":true,"className":""},{"id":"9ebb92df.f8b57","type":"mqtt-broker","name":"127.0.0.1","broker":"127.0.0.1","port":"1883","clientid":"","usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"sessionExpiry":""},{"id":"f0f0092e.8794b8","type":"ui_group","name":"Bateria","tab":"402daa81.d7ced4","order":2,"disp":true,"width":"6","collapse":false,"className":""},{"id":"402daa81.d7ced4","type":"ui_tab","name":"Casa","icon":"dashboard","disabled":false,"hidden":false}]
    6. Mi siguiente compra va a ser un IotaWatt para monitorizar más circuitos (admite 14 por unos 100€)

    7. He cambiado mi tarifa eléctrica a la de IBR VE, donde tengo el kwh a 3cent (de 1am a 7am) y con ello me ahorro el cargador de coche (todas las noches le meto 65km al coche más el aporte solar directo y de batería), cambio a red a esas horas y dejo las baterías a un SoC del 40% de forma que las ciclo mucho menos a un coste ridículo. En invierno haré programaciones en nodered y manuales en las BC para maximizar el uso en esa franja.

    Ahora que tengo esto estabilizado y bastante automatizado, tendré que pensar en empezar a guardar datos en Influx...o qué me recomiendas?

    Mil gracias por el apoyo! Y cuando tenga los nodos robustos, os los copio
    Miniaturas adjuntadas Miniaturas adjuntadas Tutorial Monitorización Voltronic MAX, Nodered, Grafana...-screenshot-2021-10-15-22.11.19.jpg   Tutorial Monitorización Voltronic MAX, Nodered, Grafana...-screenshot-2021-10-15-22.00.52.jpg  

    Tutorial Monitorización Voltronic MAX, Nodered, Grafana...-screenshot-2021-10-15-22.00.42.jpg   Tutorial Monitorización Voltronic MAX, Nodered, Grafana...-screenshot-2021-10-15-21.59.49.jpg  

    Tutorial Monitorización Voltronic MAX, Nodered, Grafana...-screenshot-2021-10-15-21.56.24.jpg   Tutorial Monitorización Voltronic MAX, Nodered, Grafana...-screenshot-2021-10-15-22.19.24.jpg  

    Tutorial Monitorización Voltronic MAX, Nodered, Grafana...-screenshot-2021-10-15-22.19.10.jpg  

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

    Predeterminado Re: Tutorial Monitorización Voltronic MAX, Nodered, Grafana...

    Repasa este flow, intenta encajarlos en tu flujo, le quiete algunas partes que estaban mal y realice algunas modificaciones .

    Código:
    [     {         "id": "c64276cc.982158",         "type": "tab",         "label": "Graficos MQQT",         "disabled": false,         "info": ""     },     {         "id": "01353f328391c5b7",         "type": "group",         "z": "c64276cc.982158",         "name": "Max-01",         "style": {             "fill": "#bfdbef",             "label": true,             "fill-opacity": "0.5",             "color": "#000000"         },         "nodes": [             "768a5ecb.9404",             "a989883d.cc2e78",             "edd55d24.98044",             "e457ef40.31d8a",             "8ffc9a68.261e68",             "a91ac087.5c11d",             "173b6bc4.3dc784",             "d5c5064c.6cf868",             "554ca21f.a1197c",             "6aab7e05.c76c3",             "9a663362.144ae",             "f7996de7.12aa9",             "209697e6.cffb08",             "c89a8456.fcc208",             "5da18617.df9c28",             "3c8a1987.0b4be6",             "fb7063684157bf16",             "a07c4f44e161ef2a",             "e6afc61718baef18"         ],         "x": 134,         "y": -21,         "w": 912,         "h": 642     },     {         "id": "c71bc959608bc405",         "type": "group",         "z": "c64276cc.982158",         "name": "Max-02",         "style": {             "fill": "#bfdbef",             "label": true,             "fill-opacity": "0.5",             "color": "#000000"         },         "nodes": [             "7ef7f739.ba2008",             "2b112332.f1eb0c",             "d01d76f4.914248",             "c3ea8ca1.781d6",             "49ce7bd9.220954",             "bca3fc7.c9486",             "9919b80c.926fc8",             "a59d6ca107172025"         ],         "x": 154,         "y": 979,         "w": 792,         "h": 282     },     {         "id": "f556117974a546ec",         "type": "group",         "z": "c64276cc.982158",         "name": "Potencias Totales",         "style": {             "stroke": "#a4a4a4",             "label": true,             "fill": "#e3f3d3",             "fill-opacity": "0.5",             "color": "#000000"         },         "nodes": [             "a13fab4f.cf68b8",             "267585ad.97a04a",             "86a15eb0.4783c",             "7ebefd17.e2b0f4",             "ab417e43c18ff636",             "ef8840002a02a322",             "1b68781ef822d609",             "652f5453559b4c03",             "8f9b1c77de91251e",             "8cb36db1ed110889"         ],         "x": 154,         "y": 679,         "w": 812,         "h": 202     },     {         "id": "768a5ecb.9404",         "type": "ui_text",         "z": "c64276cc.982158",         "g": "01353f328391c5b7",         "group": "b5a59274.ca4dc",         "order": 7,         "width": 2,         "height": 1,         "name": "",         "label": "M-7.2",         "format": "{{msg.payload.prioridadfuentesalidaconf}}",         "layout": "row-center",         "className": "",         "x": 850,         "y": 500,         "wires": []     },     {         "id": "a989883d.cc2e78",         "type": "ui_gauge",         "z": "c64276cc.982158",         "g": "01353f328391c5b7",         "name": "",         "group": "1940745e.8b2d0c",         "order": 3,         "width": 3,         "height": 3,         "gtype": "gage",         "title": "String SSO 1",         "label": "",         "format": "{{payload.potenciaenplaca}} W",         "min": 0,         "max": "3600",         "colors": [             "#00b500",             "#e6e600",             "#ca3838"         ],         "seg1": "",         "seg2": "",         "className": "",         "x": 890,         "y": 60,         "wires": []     },     {         "id": "edd55d24.98044",         "type": "ui_gauge",         "z": "c64276cc.982158",         "g": "01353f328391c5b7",         "name": "",         "group": "a5ca3b79.b7e978",         "order": 1,         "width": 6,         "height": 3,         "gtype": "gage",         "title": "Potencia Salida",         "label": "",         "format": "{{payload.potenciaactivasalida}} W",         "min": 0,         "max": "7200",         "colors": [             "#00b500",             "#e6e600",             "#ca3838"         ],         "seg1": "",         "seg2": "",         "className": "",         "x": 900,         "y": 180,         "wires": []     },     {         "id": "e457ef40.31d8a",         "type": "ui_gauge",         "z": "c64276cc.982158",         "g": "01353f328391c5b7",         "name": "",         "group": "1940745e.8b2d0c",         "order": 4,         "width": 3,         "height": 3,         "gtype": "gage",         "title": "String SSO 2",         "label": "",         "format": "{{payload.potenciaenplaca2}} W",         "min": 0,         "max": "3600",         "colors": [             "#00b500",             "#e6e600",             "#ca3838"         ],         "seg1": "",         "seg2": "",         "className": "",         "x": 870,         "y": 340,         "wires": []     },     {         "id": "8ffc9a68.261e68",         "type": "mqtt in",         "z": "c64276cc.982158",         "g": "01353f328391c5b7",         "name": "Max-01",         "topic": "Max-01",         "qos": "2",         "datatype": "auto",         "broker": "9ebb92df.f8b57",         "nl": false,         "rap": true,         "rh": 0,         "x": 210,         "y": 280,         "wires": [             [                 "f7996de7.12aa9"             ]         ]     },     {         "id": "a91ac087.5c11d",         "type": "debug",         "z": "c64276cc.982158",         "g": "01353f328391c5b7",         "name": "",         "active": false,         "tosidebar": true,         "console": false,         "tostatus": false,         "complete": "false",         "statusVal": "",         "statusType": "auto",         "x": 890,         "y": 20,         "wires": []     },     {         "id": "7ef7f739.ba2008",         "type": "ui_gauge",         "z": "c64276cc.982158",         "g": "c71bc959608bc405",         "name": "",         "group": "1940745e.8b2d0c",         "order": 2,         "width": 3,         "height": 3,         "gtype": "gage",         "title": "String SE",         "label": "",         "format": "{{payload.potenciaenplaca}} W",         "min": 0,         "max": "3600",         "colors": [             "#00b500",             "#e6e600",             "#ca3838"         ],         "seg1": "",         "seg2": "",         "className": "",         "x": 820,         "y": 1060,         "wires": []     },     {         "id": "2b112332.f1eb0c",         "type": "json",         "z": "c64276cc.982158",         "g": "c71bc959608bc405",         "name": "",         "property": "payload",         "action": "",         "pretty": false,         "x": 410,         "y": 1100,         "wires": [             [                 "d01d76f4.914248",                 "7ef7f739.ba2008",                 "9919b80c.926fc8",                 "49ce7bd9.220954",                 "bca3fc7.c9486",                 "c3ea8ca1.781d6",                 "a15912578bb86ebc"             ]         ]     },     {         "id": "a13fab4f.cf68b8",         "type": "function",         "z": "c64276cc.982158",         "g": "f556117974a546ec",         "name": "",         "func": "msg.topic = \"Max7200\"\nmsg.payload = \n{\n    \"max7200_potenciaenplacatotal\": msg.payload.potenciaenplaca + msg.payload.potenciaenplaca2,\n    \"max7200_potenciaenplaca\": msg.payload.potenciaenplaca,\n    \"max7200_potenciaenplaca2\": msg.payload.potenciaenplaca2,\n}\n\nreturn msg;\n",         "outputs": 1,         "noerr": 0,         "initialize": "",         "finalize": "",         "libs": [],         "x": 360,         "y": 720,         "wires": [             [                 "ab417e43c18ff636",                 "1b68781ef822d609"             ]         ]     },     {         "id": "267585ad.97a04a",         "type": "function",         "z": "c64276cc.982158",         "g": "f556117974a546ec",         "name": "",         "func": "msg.topic = \"Max8000\"\nmsg.payload = \n{\n    \"max8000_potenciaenplacatotal\": msg.payload.potenciaenplaca + msg.payload.potenciaenplaca2,\n    \"max8000_potenciaenplaca\": msg.payload.potenciaenplaca,\n    \"max8000_potenciaenplaca2\": msg.payload.potenciaenplaca2,\n    \n}\n\nreturn msg;\n",         "outputs": 1,         "noerr": 0,         "initialize": "",         "finalize": "",         "libs": [],         "x": 340,         "y": 840,         "wires": [             [                 "ef8840002a02a322",                 "1b68781ef822d609"             ]         ]     },     {         "id": "86a15eb0.4783c",         "type": "ui_gauge",         "z": "c64276cc.982158",         "g": "f556117974a546ec",         "name": "",         "group": "1940745e.8b2d0c",         "order": 1,         "width": 6,         "height": 3,         "gtype": "gage",         "title": "Todos los Strings",         "label": "",         "format": "{{msg.payload}} W",         "min": 0,         "max": "10800",         "colors": [             "#00b500",             "#e6e600",             "#ca3838"         ],         "seg1": "",         "seg2": "",         "className": "",         "x": 810,         "y": 840,         "wires": []     },     {         "id": "d01d76f4.914248",         "type": "debug",         "z": "c64276cc.982158",         "g": "c71bc959608bc405",         "name": "",         "active": false,         "tosidebar": true,         "console": false,         "tostatus": false,         "complete": "false",         "statusVal": "",         "statusType": "auto",         "x": 830,         "y": 1020,         "wires": []     },     {         "id": "173b6bc4.3dc784",         "type": "ui_text",         "z": "c64276cc.982158",         "g": "01353f328391c5b7",         "group": "b5a59274.ca4dc",         "order": 1,         "width": 2,         "height": 1,         "name": "",         "label": "B-7.2",         "format": "{{payload.voltajeabsorcionconf}} V",         "layout": "row-center",         "className": "",         "x": 850,         "y": 420,         "wires": []     },     {         "id": "d5c5064c.6cf868",         "type": "ui_text",         "z": "c64276cc.982158",         "g": "01353f328391c5b7",         "group": "b5a59274.ca4dc",         "order": 2,         "width": 2,         "height": 1,         "name": "",         "label": "F-7.2",         "format": "{{payload.voltajeabsorcionconf}} V",         "layout": "row-center",         "className": "",         "x": 850,         "y": 540,         "wires": []     },     {         "id": "c3ea8ca1.781d6",         "type": "ui_text",         "z": "c64276cc.982158",         "g": "c71bc959608bc405",         "group": "b5a59274.ca4dc",         "order": 4,         "width": 2,         "height": 1,         "name": "",         "label": "F-8.0",         "format": "{{payload.voltajeabsorcionconf}} V",         "layout": "row-center",         "className": "",         "x": 810,         "y": 1220,         "wires": []     },     {         "id": "49ce7bd9.220954",         "type": "ui_text",         "z": "c64276cc.982158",         "g": "c71bc959608bc405",         "group": "b5a59274.ca4dc",         "order": 8,         "width": 2,         "height": 1,         "name": "",         "label": "M-8.0",         "format": "{{msg.payload.prioridadfuentesalidaconf}}",         "layout": "row-center",         "className": "",         "x": 810,         "y": 1140,         "wires": []     },     {         "id": "bca3fc7.c9486",         "type": "ui_text",         "z": "c64276cc.982158",         "g": "c71bc959608bc405",         "group": "b5a59274.ca4dc",         "order": 3,         "width": 2,         "height": 1,         "name": "",         "label": "B-8.0",         "format": "{{payload.voltajeabsorcionconf}} V",         "layout": "row-center",         "className": "",         "x": 810,         "y": 1180,         "wires": []     },     {         "id": "7ebefd17.e2b0f4",         "type": "ui_chart",         "z": "c64276cc.982158",         "g": "f556117974a546ec",         "name": "",         "group": "c9124366e8b6320a",         "order": 1,         "width": 12,         "height": 4,         "label": "Generación instantanea",         "chartType": "line",         "legend": "false",         "xformat": "HH:mm",         "interpolate": "bezier",         "nodata": "",         "dot": false,         "ymin": "0",         "ymax": "8000",         "removeOlder": "1",         "removeOlderPoints": "",         "removeOlderUnit": "86400",         "cutout": 0,         "useOneColor": false,         "useUTC": false,         "colors": [             "#1f77b4",             "#aec7e8",             "#ff7f0e",             "#2ca02c",             "#98df8a",             "#d62728",             "#ff9896",             "#9467bd",             "#c5b0d5"         ],         "outputs": 1,         "useDifferentColor": false,         "className": "",         "x": 830,         "y": 720,         "wires": [             []         ]     },     {         "id": "554ca21f.a1197c",         "type": "ui_chart",         "z": "c64276cc.982158",         "g": "01353f328391c5b7",         "name": "",         "group": "c9124366e8b6320a",         "order": 2,         "width": 12,         "height": 4,         "label": "Consumo instantaneo",         "chartType": "line",         "legend": "false",         "xformat": "HH:mm",         "interpolate": "bezier",         "nodata": "",         "dot": false,         "ymin": "0",         "ymax": "8000",         "removeOlder": "1",         "removeOlderPoints": "",         "removeOlderUnit": "86400",         "cutout": 0,         "useOneColor": false,         "useUTC": false,         "colors": [             "#1f77b4",             "#aec7e8",             "#ff7f0e",             "#2ca02c",             "#98df8a",             "#d62728",             "#ff9896",             "#9467bd",             "#c5b0d5"         ],         "outputs": 1,         "useDifferentColor": false,         "className": "",         "x": 920,         "y": 280,         "wires": [             []         ]     },     {         "id": "6aab7e05.c76c3",         "type": "ui_gauge",         "z": "c64276cc.982158",         "g": "01353f328391c5b7",         "name": "",         "group": "f0f0092e.8794b8",         "order": 2,         "width": 3,         "height": 3,         "gtype": "gage",         "title": "MAX 7.2",         "label": "",         "format": "{{payload.amperioscargabat}} A",         "min": "0",         "max": "80",         "colors": [             "#00b500",             "#e6e600",             "#ca3838"         ],         "seg1": "",         "seg2": "",         "className": "",         "x": 860,         "y": 380,         "wires": []     },     {         "id": "9919b80c.926fc8",         "type": "ui_gauge",         "z": "c64276cc.982158",         "g": "c71bc959608bc405",         "name": "",         "group": "f0f0092e.8794b8",         "order": 3,         "width": 3,         "height": 3,         "gtype": "gage",         "title": "MAX 8.0",         "label": "",         "format": "{{msg.payload.amperioscargabat}} A",         "min": "0",         "max": "80",         "colors": [             "#00b500",             "#e6e600",             "#ca3838"         ],         "seg1": "",         "seg2": "",         "className": "",         "x": 820,         "y": 1100,         "wires": []     },     {         "id": "9a663362.144ae",         "type": "ui_text",         "z": "c64276cc.982158",         "g": "01353f328391c5b7",         "group": "b5a59274.ca4dc",         "order": 5,         "width": 2,         "height": 1,         "name": "",         "label": "A-7.2",         "format": "{{payload.amperiosmaxcargadorbatconf}} A",         "layout": "row-center",         "className": "",         "x": 850,         "y": 460,         "wires": []     },     {         "id": "f7996de7.12aa9",         "type": "json",         "z": "c64276cc.982158",         "g": "01353f328391c5b7",         "name": "",         "property": "payload",         "action": "",         "pretty": false,         "x": 370,         "y": 280,         "wires": [             [                 "fb7063684157bf16",                 "a91ac087.5c11d",                 "a989883d.cc2e78",                 "5da18617.df9c28",                 "3c8a1987.0b4be6",                 "209697e6.cffb08",                 "e457ef40.31d8a",                 "6aab7e05.c76c3",                 "173b6bc4.3dc784",                 "9a663362.144ae",                 "768a5ecb.9404",                 "d5c5064c.6cf868",                 "c89a8456.fcc208",                 "edd55d24.98044",                 "a07c4f44e161ef2a",                 "e6afc61718baef18"             ]         ]     },     {         "id": "209697e6.cffb08",         "type": "ui_gauge",         "z": "c64276cc.982158",         "g": "01353f328391c5b7",         "name": "",         "group": "f0f0092e.8794b8",         "order": 1,         "width": 3,         "height": 3,         "gtype": "gage",         "title": "Tension Bateria MAX",         "label": "",         "format": "{{payload.voltajebateria}} V",         "min": "48",         "max": "56",         "colors": [             "#00b500",             "#e6e600",             "#ca3838"         ],         "seg1": "",         "seg2": "",         "className": "",         "x": 900,         "y": 220,         "wires": []     },     {         "id": "c89a8456.fcc208",         "type": "ui_text",         "z": "c64276cc.982158",         "g": "01353f328391c5b7",         "group": "b5a59274.ca4dc",         "order": 6,         "width": 2,         "height": 1,         "name": "",         "label": "MC-7.2",         "format": "{{payload.prioridadcargadorbatconf}}",         "layout": "row-center",         "className": "",         "x": 860,         "y": 580,         "wires": []     },     {         "id": "5da18617.df9c28",         "type": "ui_gauge",         "z": "c64276cc.982158",         "g": "01353f328391c5b7",         "name": "",         "group": "a5ca3b79.b7e978",         "order": 2,         "width": 3,         "height": 3,         "gtype": "gage",         "title": "Tension Externa",         "label": "",         "format": "{{payload.voltajered}} V",         "min": "210",         "max": "250",         "colors": [             "#00b500",             "#e6e600",             "#ca3838"         ],         "seg1": "",         "seg2": "",         "className": "",         "x": 900,         "y": 100,         "wires": []     },     {         "id": "3c8a1987.0b4be6",         "type": "ui_gauge",         "z": "c64276cc.982158",         "g": "01353f328391c5b7",         "name": "",         "group": "a5ca3b79.b7e978",         "order": 3,         "width": 3,         "height": 3,         "gtype": "gage",         "title": "Tension Interna",         "label": "",         "format": "{{payload.voltajesalida}} V",         "min": "210",         "max": "250",         "colors": [             "#00b500",             "#e6e600",             "#ca3838"         ],         "seg1": "",         "seg2": "",         "className": "",         "x": 900,         "y": 140,         "wires": []     },     {         "id": "ab417e43c18ff636",         "type": "debug",         "z": "c64276cc.982158",         "g": "f556117974a546ec",         "name": "",         "active": false,         "tosidebar": true,         "console": false,         "tostatus": false,         "complete": "true",         "targetType": "full",         "statusVal": "",         "statusType": "auto",         "x": 530,         "y": 720,         "wires": []     },     {         "id": "ef8840002a02a322",         "type": "debug",         "z": "c64276cc.982158",         "g": "f556117974a546ec",         "name": "",         "active": false,         "tosidebar": true,         "console": false,         "tostatus": false,         "complete": "true",         "targetType": "full",         "statusVal": "",         "statusType": "auto",         "x": 470,         "y": 840,         "wires": []     },     {         "id": "fb7063684157bf16",         "type": "debug",         "z": "c64276cc.982158",         "g": "01353f328391c5b7",         "name": "",         "active": false,         "tosidebar": true,         "console": false,         "tostatus": false,         "complete": "false",         "statusVal": "",         "statusType": "auto",         "x": 350,         "y": 240,         "wires": []     },     {         "id": "1b68781ef822d609",         "type": "function",         "z": "c64276cc.982158",         "g": "f556117974a546ec",         "name": "",         "func": "context.data=context.data || {};\nswitch (msg.topic) {\n    case \"Max7200\":\n        context.data.potencia1 = msg.payload.max7200_potenciaenplacatotal;\n        msg=null\n        break;\n    case \"Max8000\":\n        context.data.potencia2 = msg.payload.max8000_potenciaenplacatotal;\n        msg=null\n        break;\n    default:\n    msg=null;\n    break;\n}\nif (context.data.potencia1 != null && context.data.potencia2 != null )\n    {var total = context.data.potencia1 + context.data.potencia2;\n    context.data=null;\n    return {payload:total};\n} else return msg;",         "outputs": 1,         "noerr": 0,         "initialize": "",         "finalize": "",         "libs": [],         "x": 500,         "y": 780,         "wires": [             [                 "652f5453559b4c03",                 "86a15eb0.4783c",                 "7ebefd17.e2b0f4"             ]         ]     },     {         "id": "652f5453559b4c03",         "type": "debug",         "z": "c64276cc.982158",         "g": "f556117974a546ec",         "name": "",         "active": false,         "tosidebar": true,         "console": false,         "tostatus": false,         "complete": "payload",         "targetType": "msg",         "statusVal": "",         "statusType": "auto",         "x": 790,         "y": 780,         "wires": []     },     {         "id": "a59d6ca107172025",         "type": "mqtt in",         "z": "c64276cc.982158",         "g": "c71bc959608bc405",         "name": "Max-02",         "topic": "Max-02",         "qos": "2",         "datatype": "auto",         "broker": "9ebb92df.f8b57",         "nl": false,         "rap": true,         "rh": 0,         "x": 230,         "y": 1100,         "wires": [             [                 "2b112332.f1eb0c"             ]         ]     },     {         "id": "a07c4f44e161ef2a",         "type": "link out",         "z": "c64276cc.982158",         "g": "01353f328391c5b7",         "name": "",         "links": [             "8f9b1c77de91251e",             "60f76d4a2b836429"         ],         "x": 335,         "y": 340,         "wires": []     },     {         "id": "8f9b1c77de91251e",         "type": "link in",         "z": "c64276cc.982158",         "g": "f556117974a546ec",         "name": "",         "links": [             "a07c4f44e161ef2a"         ],         "x": 195,         "y": 720,         "wires": [             [                 "a13fab4f.cf68b8"             ]         ]     },     {         "id": "a15912578bb86ebc",         "type": "link out",         "z": "c64276cc.982158",         "name": "",         "links": [             "8cb36db1ed110889"         ],         "x": 335,         "y": 1040,         "wires": []     },     {         "id": "8cb36db1ed110889",         "type": "link in",         "z": "c64276cc.982158",         "g": "f556117974a546ec",         "name": "",         "links": [             "a15912578bb86ebc"         ],         "x": 195,         "y": 840,         "wires": [             [                 "267585ad.97a04a"             ]         ]     },     {         "id": "e6afc61718baef18",         "type": "change",         "z": "c64276cc.982158",         "g": "01353f328391c5b7",         "name": "",         "rules": [             {                 "t": "set",                 "p": "payload",                 "pt": "msg",                 "to": "payload.potenciaactivasalida",                 "tot": "msg"             }         ],         "action": "",         "property": "",         "from": "",         "to": "",         "reg": false,         "x": 720,         "y": 280,         "wires": [             [                 "554ca21f.a1197c"             ]         ]     },     {         "id": "8e2c064cd9f92577",         "type": "ui_spacer",         "z": "c64276cc.982158",         "name": "spacer",         "group": "f0f0092e.8794b8",         "order": 4,         "width": 3,         "height": 1     },     {         "id": "1c2b059b06a54d44",         "type": "ui_spacer",         "z": "c64276cc.982158",         "name": "spacer",         "group": "f0f0092e.8794b8",         "order": 5,         "width": 3,         "height": 1     },     {         "id": "829b4d8181203e6c",         "type": "ui_spacer",         "z": "c64276cc.982158",         "name": "spacer",         "group": "f0f0092e.8794b8",         "order": 6,         "width": 3,         "height": 1     },     {         "id": "1d7a3356944b97e1",         "type": "ui_spacer",         "z": "c64276cc.982158",         "name": "spacer",         "group": "1940745e.8b2d0c",         "order": 5,         "width": 3,         "height": 1     },     {         "id": "f2d5a46fd1e17055",         "type": "ui_spacer",         "z": "c64276cc.982158",         "name": "spacer",         "group": "1940745e.8b2d0c",         "order": 6,         "width": 3,         "height": 1     },     {         "id": "9cfadb7ff2f4f81e",         "type": "ui_spacer",         "z": "c64276cc.982158",         "name": "spacer",         "group": "1940745e.8b2d0c",         "order": 7,         "width": 3,         "height": 1     },     {         "id": "3840d032cf4bf80a",         "type": "ui_spacer",         "z": "c64276cc.982158",         "name": "spacer",         "group": "b5a59274.ca4dc",         "order": 9,         "width": 2,         "height": 1     },     {         "id": "b5a59274.ca4dc",         "type": "ui_group",         "name": "Control",         "tab": "402daa81.d7ced4",         "order": 5,         "disp": true,         "width": "6",         "collapse": true,         "className": ""     },     {         "id": "1940745e.8b2d0c",         "type": "ui_group",         "name": "Generación",         "tab": "402daa81.d7ced4",         "order": 2,         "disp": true,         "width": "6",         "collapse": false,         "className": ""     },     {         "id": "a5ca3b79.b7e978",         "type": "ui_group",         "name": "Consumo",         "tab": "402daa81.d7ced4",         "order": 3,         "disp": true,         "width": "6",         "collapse": false,         "className": ""     },     {         "id": "9ebb92df.f8b57",         "type": "mqtt-broker",         "name": "192.168.3.10",         "broker": "192.168.3.10",         "port": "1883",         "clientid": "",         "usetls": false,         "protocolVersion": "4",         "keepalive": "60",         "cleansession": true,         "birthTopic": "",         "birthQos": "0",         "birthPayload": "",         "birthMsg": {},         "closeTopic": "",         "closeQos": "0",         "closePayload": "",         "closeMsg": {},         "willTopic": "",         "willQos": "0",         "willPayload": "",         "willMsg": {},         "sessionExpiry": ""     },     {         "id": "c9124366e8b6320a",         "type": "ui_group",         "name": "Graficas",         "tab": "402daa81.d7ced4",         "order": 6,         "disp": true,         "width": "12",         "collapse": false,         "className": ""     },     {         "id": "f0f0092e.8794b8",         "type": "ui_group",         "name": "Bateria",         "tab": "402daa81.d7ced4",         "order": 1,         "disp": true,         "width": "6",         "collapse": false,         "className": ""     },     {         "id": "402daa81.d7ced4",         "type": "ui_tab",         "name": "Casa",         "icon": "dashboard",         "disabled": false,         "hidden": false     } ]
    - - - - - - - - - - - - - - - - - - -

    Bueno , parece que al final el esfuerzo está dando frutos, me alegro.
    Sobre el hub, yo tengo dos inversores conectados en un rasp sencilla sin nada más que la recogida de datos, eso son solo 2 cables, no tengo nada más conectado en ella, el resto lo tengo en máquinas más grandes, pero si el hub te funciona, no hay problemas, solo asegúrate de reservar un usb3.0 para el ssd

    Con el tema de las eléctricas hay que estar atento, sobre todo con la letra pequeña, algunas compañías pueden cambiar la tarifa unilateralmente, yo actualmente tengo contratado el mínimo pasible, y desde el invierno pasado, gasto 0, solo mantengo la línea por tener una seguridad añadida.
    Sin duda para monitorear bien granafa y influx, lo único es que no sé si sobrecargaras esa raspb... me da que en un tiempo te quedaras corto, por otro lado piensa ya en hacer copias de seguridad de los flujos etc .

  5. #130
    asl12 está desconectado Forero
    Fecha de ingreso
    mar 2021
    Ubicación
    Navarra
    Mensajes
    238

    Predeterminado Re: Tutorial Monitorización Voltronic MAX, Nodered, Grafana...

    Pues un millón de gracias por todo el trabajo que te has tomado al reajustar mi flujo, incluyendo el nodo para la suma...

    Ya he hecho el cambio y eliminado el Hub USB, al llegar a casa, había perdido de nuevo la conexión con los puertos serie... por lo que a ver si se vuelve todo más estable...

    En relación al flujo, adjunto imágenes, donde se aprecia que el refresco de los tres extractores se realiza cada 10+10+10 segundos, por lo que he tenido que añadir un nodo join con 30s de tiempo para que cuando llegue un dato no me lo mande vacío... otra opción es ampliar el join del flow del inversor... no sé cómo se ajusta ese refresco...

    Tutorial Monitorización Voltronic MAX, Nodered, Grafana...-screenshot-2021-10-16-20.34.58.jpg
    Tutorial Monitorización Voltronic MAX, Nodered, Grafana...-screenshot-2021-10-16-20.39.41.jpg

    En relación al equipo sobre el que correr los sistemas, como tengo 2 rasp, podría poner ambas con SSD y una con Nodered & Grafana y la otra con influx... eso lo ves razonable?

    Mil gracias!!!!

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

    Predeterminado Re: Tutorial Monitorización Voltronic MAX, Nodered, Grafana...

    No te estoy entendiendo muy bien .. Los tiempos de lectura son penalizados sobre todo por los nodos join , para hacer ajustes en los tiempos tienes que revisar todo el flujo desde su inicio, así, sin cronómetro, los nodos inject trabajan cada 4 segundos, y los nodos join esperan otros 4 segundos, si cambial alguno de estos tiempos obtendrás resultados algo distintos, incluso puede que deja de funcionar , esos 8 segundo son sin sumar lo que emplea el resto del código que bien pueden ser 2 unos más , pero todo esto es poniéndose en lo peor, en realidad trabajan con tiempos mucho menores, en mi equipo está tirando datos cada 4 segundos , el tapón en mi caso es el nodo join, que hace una espera de 4 segundos para recoger datos.


    Si usas dos rasb con ssd puede funcionar bien.

  7. #132
    asl12 está desconectado Forero
    Fecha de ingreso
    mar 2021
    Ubicación
    Navarra
    Mensajes
    238

    Predeterminado Re: Tutorial Monitorización Voltronic MAX, Nodered, Grafana...

    Gracias por la respuesta!

    La imagen que adjunto es con los flujos a 4seg, si ves el debug muestra que cada nodo extractor toma 10seg y como hay 3, el completo necesita 30seg...

    Tutorial Monitorización Voltronic MAX, Nodered, Grafana...-screenshot-2021-10-16-22.13.58.jpg

    Código:
    [{"id":"510263c3.2cdeec","type":"tab","label":"Axpert Max 7.2","disabled":false,"info":""},{"id":"bfb6c218.cd8e","type":"function","z":"510263c3.2cdeec","name":"CRCTJ 7200w","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":"","libs":[],"x":1060,"y":660,"wires":[["68a41506.e847bc"]]},{"id":"a718fcb0.1511d","type":"link out","z":"510263c3.2cdeec","name":"Respuesta Puerto serie","links":["727c0ad6.915784"],"x":1470,"y":660,"wires":[],"l":true},{"id":"e109da12.e0f838","type":"comment","z":"510263c3.2cdeec","name":"Comunicacion Puerto Serie","info":"","x":1210,"y":620,"wires":[]},{"id":"a59749c7.670148","type":"switch","z":"510263c3.2cdeec","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":830,"y":300,"wires":[["f1e91b17.6285d8"],["5911b409.bac47c"],["530a2970.2ceec8"],["6246b51a.6fa9fc"],["853c6ff8.f80b"],["bda4136b.8efde"],["1805a453.7a3b8c"],["e6bce707.5ee798"],["56939100.8b6c7"],["36bf2160.ae7dae"],["e191d503.991798"],["6022d36e.b8765c"],["6a936fd6.d5bf8"]]},{"id":"dc95b930.397b48","type":"comment","z":"510263c3.2cdeec","name":"Repartiendo por topic","info":"","x":840,"y":180,"wires":[]},{"id":"853c6ff8.f80b","type":"function","z":"510263c3.2cdeec","d":true,"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,"initialize":"","finalize":"","libs":[],"x":1090,"y":240,"wires":[[]]},{"id":"5911b409.bac47c","type":"function","z":"510263c3.2cdeec","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":"","libs":[],"x":1090,"y":120,"wires":[["2855606.56c67a"]]},{"id":"bda4136b.8efde","type":"function","z":"510263c3.2cdeec","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":"","libs":[],"x":1080,"y":280,"wires":[["2855606.56c67a"]]},{"id":"530a2970.2ceec8","type":"function","z":"510263c3.2cdeec","d":true,"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,"initialize":"","finalize":"","libs":[],"x":1100,"y":160,"wires":[[]]},{"id":"6246b51a.6fa9fc","type":"function","z":"510263c3.2cdeec","d":true,"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":"","libs":[],"x":1100,"y":200,"wires":[[]]},{"id":"1805a453.7a3b8c","type":"function","z":"510263c3.2cdeec","d":true,"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":"","libs":[],"x":1090,"y":320,"wires":[[]]},{"id":"f1e91b17.6285d8","type":"function","z":"510263c3.2cdeec","d":true,"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":"","libs":[],"x":1100,"y":80,"wires":[[]]},{"id":"94f71cfa.a2b7c","type":"comment","z":"510263c3.2cdeec","name":"Extractores","info":"","x":1090,"y":40,"wires":[]},{"id":"e6bce707.5ee798","type":"function","z":"510263c3.2cdeec","d":true,"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            fallo58voltajeinversorbajo: fallo58voltajeinversorbajo,\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":"","libs":[],"x":1110,"y":360,"wires":[[]]},{"id":"56939100.8b6c7","type":"function","z":"510263c3.2cdeec","d":true,"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":"","libs":[],"x":1080,"y":400,"wires":[[]]},{"id":"36bf2160.ae7dae","type":"function","z":"510263c3.2cdeec","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":"","libs":[],"x":1090,"y":440,"wires":[["2855606.56c67a"]]},{"id":"e191d503.991798","type":"function","z":"510263c3.2cdeec","d":true,"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":"","libs":[],"x":1080,"y":480,"wires":[[]]},{"id":"6022d36e.b8765c","type":"function","z":"510263c3.2cdeec","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":"","libs":[],"x":1130,"y":520,"wires":[["6773d8de.7b68a8"]]},{"id":"6a936fd6.d5bf8","type":"function","z":"510263c3.2cdeec","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":"","libs":[],"x":1120,"y":560,"wires":[["6773d8de.7b68a8"]]},{"id":"bd4acf70.39a25","type":"inject","z":"510263c3.2cdeec","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":180,"y":300,"wires":[["1ca333d9.5fedfc"]]},{"id":"2bbf93f9.a0f16c","type":"inject","z":"510263c3.2cdeec","d":true,"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":180,"y":260,"wires":[["1ca333d9.5fedfc"]]},{"id":"ba923259.13b94","type":"inject","z":"510263c3.2cdeec","d":true,"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":210,"y":340,"wires":[["1ca333d9.5fedfc"]]},{"id":"ac79947a.fc8128","type":"inject","z":"510263c3.2cdeec","d":true,"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":210,"y":380,"wires":[["1ca333d9.5fedfc"]]},{"id":"146e5805.f77c98","type":"inject","z":"510263c3.2cdeec","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":190,"y":140,"wires":[["1ca333d9.5fedfc"]]},{"id":"23474f37.7e773","type":"inject","z":"510263c3.2cdeec","d":true,"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":180,"y":100,"wires":[["1ca333d9.5fedfc"]]},{"id":"733da488.b6129c","type":"inject","z":"510263c3.2cdeec","d":true,"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":190,"y":180,"wires":[["1ca333d9.5fedfc"]]},{"id":"83a0a7a8.3127c8","type":"inject","z":"510263c3.2cdeec","d":true,"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":190,"y":220,"wires":[["1ca333d9.5fedfc"]]},{"id":"1ca333d9.5fedfc","type":"link out","z":"510263c3.2cdeec","name":"EntradaalCRC","links":["c4b0af1.d0bce5"],"x":600,"y":380,"wires":[],"l":true},{"id":"2f3caf61.4fac8","type":"comment","z":"510263c3.2cdeec","name":"Comandos de monitorizacion cada 4 segundos","info":"Comandos de Monitorizacion","x":240,"y":60,"wires":[]},{"id":"fa01b393.426c2","type":"inject","z":"510263c3.2cdeec","d":true,"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":190,"y":420,"wires":[["1ca333d9.5fedfc"]]},{"id":"91aa5689.9c9758","type":"inject","z":"510263c3.2cdeec","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":200,"y":460,"wires":[["1ca333d9.5fedfc"]]},{"id":"1e5af6ec.c3f109","type":"inject","z":"510263c3.2cdeec","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":180,"y":500,"wires":[["f3d6a3c3.3da18"]]},{"id":"e7e718d0.481778","type":"function","z":"510263c3.2cdeec","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":320,"y":540,"wires":[["1ca333d9.5fedfc"]]},{"id":"23d89fb5.a6423","type":"inject","z":"510263c3.2cdeec","d":true,"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":170,"y":580,"wires":[["1ca333d9.5fedfc"]]},{"id":"e8345858.2f45f8","type":"inject","z":"510263c3.2cdeec","name":"Energiaproducidadiaria","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"60","crontab":"","once":false,"onceDelay":0.1,"topic":"energiaproducidadiaria","payload":"QED","payloadType":"str","x":190,"y":620,"wires":[["44b3130.5b42fec"]]},{"id":"6fe11148.ab85c","type":"inject","z":"510263c3.2cdeec","name":"Cargadiariaentregada","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"60","crontab":"","once":false,"onceDelay":0.1,"topic":"cargadiariaentregada","payload":"QLD","payloadType":"str","x":190,"y":660,"wires":[["81d1fced.16599"]]},{"id":"ec7f1ed7.67a94","type":"function","z":"510263c3.2cdeec","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":560,"y":620,"wires":[["1ca333d9.5fedfc"]]},{"id":"9af8d033.3243e","type":"function","z":"510263c3.2cdeec","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":560,"y":660,"wires":[["1ca333d9.5fedfc"]]},{"id":"99b605de.ca2aa8","type":"comment","z":"510263c3.2cdeec","name":"Monitorizacion para Hibrido AXPERT MAX SINGLE  ","info":"","x":710,"y":60,"wires":[]},{"id":"6113564d.8b0ff8","type":"comment","z":"510263c3.2cdeec","name":"Creando Objeto con todas las lecturas del Hibrido","info":"","x":1460,"y":60,"wires":[]},{"id":"c4b0af1.d0bce5","type":"link in","z":"510263c3.2cdeec","name":"EntradaalCRC","links":["1ca333d9.5fedfc"],"x":850,"y":660,"wires":[["bfb6c218.cd8e"]],"l":true},{"id":"727c0ad6.915784","type":"link in","z":"510263c3.2cdeec","name":"Respuesta Puerto serie","links":["a718fcb0.1511d"],"x":600,"y":300,"wires":[["a59749c7.670148"]],"l":true},{"id":"f3d6a3c3.3da18","type":"simpletime","z":"510263c3.2cdeec","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":150,"y":540,"wires":[["e7e718d0.481778"]]},{"id":"44b3130.5b42fec","type":"simpletime","z":"510263c3.2cdeec","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":390,"y":620,"wires":[["ec7f1ed7.67a94"]]},{"id":"81d1fced.16599","type":"simpletime","z":"510263c3.2cdeec","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":390,"y":660,"wires":[["9af8d033.3243e"]]},{"id":"ef3e6756.0ab4c8","type":"link in","z":"510263c3.2cdeec","name":"Control BMV IN","links":["cbc6a793.a19bb8","424f2480.c1a57c","395fd48c.699ebc","6fd0bfc3.68707","1f0ecc9.9d07633","412c6845.24d358","567365ec.dbbc3c","f431c57b.0d7608","dcdd62a3.0b53c"],"x":895,"y":720,"wires":[["51cb2e77.c88ce"]]},{"id":"4eb3d5c2.0fea4c","type":"mqtt out","z":"510263c3.2cdeec","name":"Lecturas MAX7.2","topic":"Max7200","qos":"1","retain":"true","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"9ebb92df.f8b57","x":1690,"y":240,"wires":[]},{"id":"2855606.56c67a","type":"join","z":"510263c3.2cdeec","name":"Datos instantaneos","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":1430,"y":240,"wires":[["4eb3d5c2.0fea4c","abd42d67.4e578"]]},{"id":"6773d8de.7b68a8","type":"join","z":"510263c3.2cdeec","name":"Datos diarios","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":1410,"y":300,"wires":[["887fbe1a.ea411"]]},{"id":"887fbe1a.ea411","type":"mqtt out","z":"510263c3.2cdeec","name":"Lecturas D MAX7.2","topic":"Max7200diarias","qos":"2","retain":"true","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"9ebb92df.f8b57","x":1690,"y":300,"wires":[]},{"id":"68a41506.e847bc","type":"serial request","z":"510263c3.2cdeec","name":"","serial":"d91892fc.ad91a","x":1250,"y":660,"wires":[["a718fcb0.1511d","63640a8d.ee1524"]]},{"id":"51cb2e77.c88ce","type":"function","z":"510263c3.2cdeec","name":"CRCTJ 7200w","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":"","libs":[],"x":1060,"y":720,"wires":[["c166d293.de35b"]]},{"id":"c166d293.de35b","type":"serial out","z":"510263c3.2cdeec","name":"","serial":"d91892fc.ad91a","x":1250,"y":720,"wires":[]},{"id":"63640a8d.ee1524","type":"debug","z":"510263c3.2cdeec","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1450,"y":720,"wires":[]},{"id":"f3c04ffb.6484","type":"inject","z":"510263c3.2cdeec","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":970,"y":600,"wires":[["68a41506.e847bc"]]},{"id":"42506c40.390774","type":"inject","z":"510263c3.2cdeec","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":1200,"y":800,"wires":[[]]},{"id":"abd42d67.4e578","type":"debug","z":"510263c3.2cdeec","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1670,"y":200,"wires":[]},{"id":"9ebb92df.f8b57","type":"mqtt-broker","name":"127.0.0.1","broker":"127.0.0.1","port":"1883","clientid":"","usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"sessionExpiry":""},{"id":"d91892fc.ad91a","type":"serial-port","serialport":"/dev/ttyUSB1","serialbaud":"2400","databits":"8","parity":"none","stopbits":"1","waitfor":"","dtr":"none","rts":"none","cts":"none","dsr":"none","newline":"\\n","bin":"false","out":"char","addchar":"","responsetimeout":"10000"}]
    Lo copio para que veas que están a 4seg...

    Esto es lo que me mataba al hacer las sumas...

    -------

    Podría ser estos 10000ms?

    Tutorial Monitorización Voltronic MAX, Nodered, Grafana...-screenshot-2021-10-16-22.18.06.jpg

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

    Predeterminado Re: Tutorial Monitorización Voltronic MAX, Nodered, Grafana...

    Pues no veo porque te salen esos tiempos tan grandes ... En mi código, del que partiste originalmente los tiempos son de 4 segundos entre lecturas , esto pasa en ocasiones cuando se hace demasiadas modificaciones, cada modificación se tiene que comprobar con tranquilidad , y aún hay más, no puedo comprobar tu código, porque en el equipo que programo no tengo puertos com ni inversores, puedo hacer algunas cosas como leer datos en mqtt, pero no puedo conectar por com con los inversores para ver esos tiempos , y lo de tener barios CRC la verdad no le veo la ventaja... puede que tenga alguna, pero no lo parece, es una rutina que no es especialmente complicada desde el punto de vista del proceso de datos, por lo que no invierte nada de tiempo en procesar lo que le metas, yo solo tengo un nodo con una sola rutina, en mi flujo tengo bastantes cosas más, que podrían ralentizar el asunto, pero no es así, también tengo las inyecciones para la DB de influx y toda la lógica para la weco y unos panes de alarmas... y más cosas, pero me da 4 segundos .. No entiendo como te dan tantos a ti ..
    Mañana revisaré el código con más detenimiento por si veo algo...


    Lo de los 10 s que comentas el un time out ¡¡ es el tiempo que espera antes de decir que se terminó el tiempo de espera y dar un error , no tienen nada que ver.

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

    Tendrás que rastrear los tiempos, usa nodos debug , investiga donde se pierde ese tiempo, seguro que lo puedes averiguar, el asunto es ir subiendo por todas las etapas del código y ver donde consume ese tiempo.

  9. #134
    asl12 está desconectado Forero
    Fecha de ingreso
    mar 2021
    Ubicación
    Navarra
    Mensajes
    238

    Predeterminado Re: Tutorial Monitorización Voltronic MAX, Nodered, Grafana...

    Hola!

    Adjunto un par de imágenes donde se ve como el CRC tras procesar los inyectores cada 4 segundos envía los 3 resultados que le llegan. Sin embargo el nodo serie usa 10segundos por cada mensaje de salida, como son 3, si los quiero juntar, necesito 30seg...

    En relación a tener 2 CRC, lo hice porque el nodo serie no procesaba las instrucciones para la gestión de tensiones de batería o modo de actuación del inversor si le llegaba todo por la misma linea de flujo...

    La cosa es que con el ICC los datos eran creo que por segundos y funcionaba...

    Tutorial Monitorización Voltronic MAX, Nodered, Grafana...-screenshot-2021-10-17-10.01.23.jpg

    Tutorial Monitorización Voltronic MAX, Nodered, Grafana...-screenshot-2021-10-17-10.01.43.jpg

    Voy a probar a usar un nodo serie con entrada y uno con salida en lugar de uno con entrada y salida...

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

    Predeterminado Re: Tutorial Monitorización Voltronic MAX, Nodered, Grafana...

    No perdamos la lógica ,si yo tengo una raspb 3 con una sd normalita y tengo metidos dos flujos como el de la imagen, mas complejos que el tuyo , manejando los dos inversores y las alarmas de ambos, con tiempos de 4 segundos, tu con una raspb 4 tienes que tener como poco los mismo tiempos, no tienen sentido otra cosa, así que yo retornaría a un flujo que sepas que funciona, alguno de los que te pase, que son los mismo que yo uso, pero quitando la parte de las baterías y alarmas. me temo que te estas liando mas de la cuenta, el otro día estabas poniendo nodos join sin necesidad y estabas retrasado el flujo que te modifique nada menos que 8 segundos mas ... antes de modificar algo te tienes que asegurar que entiendes lo que hace, o como poco que continua funcionando... de otra forma es un nido de errores y una enorme perdida de tiempo, si continuas modificando mas y mas , no se si lograras hacer que funcione, lo que si es seguro es que será un flujo muy distinto al que yo manejo y si funciona, con todo lo que eso tiene de malo en cuanto a buscar problemas, lo ideal es mantener un núcleo funcional y confiable, y crecer en la periferia, sin realizar grande alteraciones de lo esencial... meter mas nodos serie y mas CRC ... te digo que ese no es el problema , que no le veo el sentido .. mira mi flujo la cantidad de nodos que tiene, y lo que ves es solo la mitad, tiene otro igual para el segundo inversor

    Tutorial Monitorización Voltronic MAX, Nodered, Grafana...-0028.jpg

  11. #136
    asl12 está desconectado Forero
    Fecha de ingreso
    mar 2021
    Ubicación
    Navarra
    Mensajes
    238

    Predeterminado Re: Tutorial Monitorización Voltronic MAX, Nodered, Grafana...

    Hola caballero!

    Tienes toda la razón con el tema de no ir modificando sin conocimiento, yo tengo muy poco, pero la verdad es que los 10seg son los que me llevan matando y haciéndonos (a ambos) perder mucho tiempo...

    He puesto el mismo flujo que pegaste en su día y continuaba dando salidas cada 10seg, por lo que he cambiado a 1000ms el tiempo del nodo serie y ahora todo funciona... incluyendo las sumas, he quitado los nodos join y por ahora va bastante bien! (cada 28 seg se pone a cero pero recupera en 4s, voy a ver si encuentro algo pero no me preocupa ese tema nada ya!). Las instrucciones (a través del protocolo P30 las toma muy rápidamente, así que muy bien)

    Pues a ver si esto se mantiene andando!

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

    Predeterminado Re: Tutorial Monitorización Voltronic MAX, Nodered, Grafana...

    Cita Iniciado por asl12 Ver mensaje
    Hola caballero!

    Tienes toda la razón con el tema de no ir modificando sin conocimiento, yo tengo muy poco, pero la verdad es que los 10seg son los que me llevan matando y haciéndonos (a ambos) perder mucho tiempo...

    He puesto el mismo flujo que pegaste en su día y continuaba dando salidas cada 10seg, por lo que he cambiado a 1000ms el tiempo del nodo serie y ahora todo funciona... incluyendo las sumas, he quitado los nodos join y por ahora va bastante bien! (cada 28 seg se pone a cero pero recupera en 4s, voy a ver si encuentro algo pero no me preocupa ese tema nada ya!). Las instrucciones (a través del protocolo P30 las toma muy rápidamente, así que muy bien)

    Pues a ver si esto se mantiene andando!
    Pues tiene toda la pinta de no ser por culpa del flujo, parece algo de las comunicaciones ... que no tendrá el inversor mas moderno un puerto diferente que este trabajando de una forma distinta ¡¡¡ .. por que te aseguro que no tienen mucho sentido, si ves mi flujo es muy grande y corre bastante bien ¡¡
    Si logras que funcione razonablemente bien , con el tiempo lo retomaras, conforme aprendas mas cosas de node red, yo conforma pasa el tiempo y aprendo cosas nuevas, repaso flujos antiguos ... supongo que te pasara lo mismo .

    Y otro tema, como estas haciendo las lecturas del bms ? te da SOC confiable o te toca andar con estimaciones ?

    Saludos ..

  13. #138
    asl12 está desconectado Forero
    Fecha de ingreso
    mar 2021
    Ubicación
    Navarra
    Mensajes
    238

    Predeterminado Re: Tutorial Monitorización Voltronic MAX, Nodered, Grafana...

    Hola!
    Estoy super contento de haberlo hecho funcionar! Un millón de gracias por la ayuda desinteresada, desde medio día todo marcha muy fino, salvo los gaps esos de 4seg, que no me importan. Como dices, con tiempo iré aprendiendo y depurando... El BMV va fino hoy también.
    Ayer hice copia de flujos pero hoy haré otra sin duda...
    Los Tuya funcionan sin haberles cambiado a tasmota igual los dejo como estan y ya me aventuraré en el futuro (tengo que intentar organizar lo de la ips para los último que llegaron) ... Pedí los que me dijiste y son idénticos a los que tenía, incluso me mandaron con la misma marca! Abrirlos no sé cómo, pero ya buscaré algún video que no incluya pasar un coche por encima (es lo único que he encontrado)
    Sobre influxdb igual te dejo tranquilo no? Me parece mal seguir tirando de ti... Esta noche copiare los nodos para que cualquiera pueda usarlos...
    Lo dicho un millón de gracias!!!

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

    Predeterminado Re: Tutorial Monitorización Voltronic MAX, Nodered, Grafana...

    Yo estoy encantado de echar una mano al que la necesite y se atreva ... jajaj hay que tener ganas de meterse en harina .... y no te preocupes por preguntar lo que necesites, si puedo y en la medida que mi tiempo me lo permita, estoy encantado de ayudar, en otras ocasiones soy yo el ayudado ¡¡¡ ... y al final de la vuelta, se trata de formar un grupo, donde unos y otros nos apoyemos, esto es una parte muy importante del desarrollo informático, la divulgación de soluciones beneficia al colectivo, y después el colectivo te termina beneficiando.
    En Influx, estoy menos puesto, pero al mismo tiempo hay menos que hacer que en nodered, son menos cosas, y casi todas están documentadas medio bien, lo básico es instalar el motor de base de datos, crear una base de datos, y mandarle daros desde nodered, después con grafana, te conectas a la base de datos, y configuras la lectura y representación de gráficos por tiempo , series o como convenga , donde hay más chicha, es en las consultas de la DB, pero mara algo básico es fácil.
    Y sobre tasmota, si ya te funcionan los enchufes, y estás contento... ni tocarlo ¡¡¡ tasmota es genial, pero hay que montar un lío gordo, y no parece que lo necesites en realidad.. Si en algún momento te surge la necesidad .. Pues siempre se puede uno meter en harina.
    Saludos.

  15. #140
    nico1 está desconectado Forero Junior
    Fecha de ingreso
    feb 2021
    Ubicación
    Girona
    Mensajes
    2

    Predeterminado Re: Tutorial Monitorización Voltronic MAX, Nodered, Grafana...

    Hola,
    Lo primero agradeceros el esfuerzo, dedicación y la ayuda que estáis prestando de manera desinteresado a gente que como yo que sin conocimientos en programación se llegan a poner pequeños proyectos en marcha.
    Hace poco cambie mi inversor voltronic axpert v3 de 3Kw por uno axpert max 7,2Kw, estoy intentando poder monitorizarlo, tengo una raspberry 3b y tengo instalado el node red, grafana y a partir de aquí es donde ya no me entero de nada, me he leído todo el tutorial de monitorización y a medida que voy leyendo más me estoy liando, he copiado los nodos que habéis ido publicando con las diferentes modificaciones y nos sé cómo seguir para hacerlos funcionar con grafana, seguramente es porque soy bastante torpe, si no es abusar mucho de vuestra paciencia y tiempo ¿sería posible editar un manual paso a paso como hacerlo?.
    También quería preguntaros si es normal que el inversor este consumiendo de la red más o menos 2W y a partir de las 17h consuma 50/40W.
    Agradeceros vuestra ayuda.

  16. #141
    azlo está desconectado Forero
    Fecha de ingreso
    oct 2021
    Mensajes
    48

    Predeterminado Re: Tutorial Monitorización Voltronic MAX, Nodered, Grafana...

    Hola!

    Inversores como estos de aliexpress son compatibles con estos tipos de sistema de monitorizaicón? Aún no he conectado nada, pero ya tengo un adpatador de COM a USB, y una Raspeberry buscando utilidad también!

    es.aliexpress.com/item/1005003203404752.html

    Un saludo!

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

    Predeterminado Re: Tutorial Monitorización Voltronic MAX, Nodered, Grafana...

    Cita Iniciado por nico1 Ver mensaje
    Hola,
    Lo primero agradeceros el esfuerzo, dedicación y la ayuda que estáis prestando de manera desinteresado a gente que como yo que sin conocimientos en programación se llegan a poner pequeños proyectos en marcha.
    Hace poco cambie mi inversor voltronic axpert v3 de 3Kw por uno axpert max 7,2Kw, estoy intentando poder monitorizarlo, tengo una raspberry 3b y tengo instalado el node red, grafana y a partir de aquí es donde ya no me entero de nada, me he leído todo el tutorial de monitorización y a medida que voy leyendo más me estoy liando, he copiado los nodos que habéis ido publicando con las diferentes modificaciones y nos sé cómo seguir para hacerlos funcionar con grafana, seguramente es porque soy bastante torpe, si no es abusar mucho de vuestra paciencia y tiempo ¿sería posible editar un manual paso a paso como hacerlo?.
    También quería preguntaros si es normal que el inversor este consumiendo de la red más o menos 2W y a partir de las 17h consuma 50/40W.
    Agradeceros vuestra ayuda.
    Primero que nada, permíteme que te haga una sugerencia, para poder echar una mano en algo hay que hacer preguntas concretas muy concretas si es posible, si no, la respuesta será tan general como la pregunta, y muy probablemente carente de utilidad práctica, no te lo tomes mal, que no es esa la intención ¡¡¡ ehh ..
    En tu caso, por lo que pones parece que te atascaste con nodered ? con algún flujo en concreto? en que parte del codigo? .. o no es eso y si te funciona, pero no sabes como usar grafana?, piensa que de grafana no publicamos nada aun... y que antes de montar grafana tienes que tener influxdb corriendo, y aun antes que todo esto, tienes que saber que es lo que quieres monitorizar... en concreto exactamente... tienes que tener una idea exacta de que quieres hacer, si no es imposible que te diga nada... o te digo lo que me parezca y intentamos acertar a ciegas, me entiendes? .
    Se concretó, que quieres monitorizar , existen mucho muchos datos y no sé ni tan siquiera que datos estas registrando ya .


    Te adelanto que lo más fácil es que antes de nada leas algún tutorial de la red para instalar influx y grafana en una raspb, es la forma más fácil , si te salen dudas durante la instalación, concreta que problema es el que tienes y intento mirar de ayudarte. Con influx y grafana instalados, nos dices que pretendes hacer con que flujo o con que datos y lo miramos.


    Hacer un tutorial genérico de como se hace es una gran inversión de tiempo, y tampoco creas que soy un experto en estos programas ,,, lo justo para defenderme en 4 cosas que me interesan.

    Si te pones las pilas te echo una mano en lo que pueda.

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

    Cita Iniciado por azlo Ver mensaje
    Hola!

    Inversores como estos de aliexpress son compatibles con estos tipos de sistema de monitorizaicón? Aún no he conectado nada, pero ya tengo un adpatador de COM a USB, y una Raspeberry buscando utilidad también!

    es.aliexpress.com/item/1005003203404752.html

    Un saludo!
    No conozco este equipo, piensa que inversores hoy bastantes y no tienen por qué trabajar igual, este que pones, tiene pinta como de voltronic, pero al ver la foto de la placa , no se parece en nada, así que no creo que sea compatible, claro que si es un clónico , pues lo mismo resulta que si, pero sin probar o sin tener la documentación completa, es como imposible de saber.

  18. #143
    nico1 está desconectado Forero Junior
    Fecha de ingreso
    feb 2021
    Ubicación
    Girona
    Mensajes
    2

    Predeterminado Re: Tutorial Monitorización Voltronic MAX, Nodered, Grafana...

    Hola, quizás no me he expresado bien, estos son mas o menos los parámetros que pretendo ver y interactuar, los dos string tanto en el voltaje como en la producción, el consumo de batería y el voltaje, el consumo de salida de momento no se que mas añadir.
    Y hay una pregunta que creo que estaba clara, estoy detectando un consumo del inversor 2W/h desde las 9 de la mañana hasta las 5 de la tarde y cambia a 40/50W/h ¿es normal?

  19. #144
    azlo está desconectado Forero
    Fecha de ingreso
    oct 2021
    Mensajes
    48

    Predeterminado Re: Tutorial Monitorización Voltronic MAX, Nodered, Grafana...

    Cita Iniciado por Au-PRX Ver mensaje
    No conozco este equipo, piensa que inversores hoy bastantes y no tienen por qué trabajar igual, este que pones, tiene pinta como de voltronic, pero al ver la foto de la placa , no se parece en nada, así que no creo que sea compatible, claro que si es un clónico , pues lo mismo resulta que si, pero sin probar o sin tener la documentación completa, es como imposible de saber.
    Hola! Gracias por la respuesta.

    Entonces a ver cuando lo conecte, como tengo el cable COM-USB, lo conectaré a ver como va tema drivers y investigaré los programas. Según como lo vea en Windows ya me metería a hacerlo con Linux o la Raspberry. Lo que más me interesaría sería saber como va la evolución de las baterías a lo largo del día y la noche y en qué momentos del día tiene que tirar de baterías para dar apoyo a las placas, espero que en unos días ya lo pueda acabar de conectar todo y arrancar.

    De momento tenemos todas las placas arriba conectadas en dos ramas, a ver si aligeramos.

    Un saludo!

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

    Predeterminado Re: Tutorial Monitorización Voltronic MAX, Nodered, Grafana...

    Cita Iniciado por nico1 Ver mensaje
    Hola, quizás no me he expresado bien, estos son mas o menos los parámetros que pretendo ver y interactuar, los dos string tanto en el voltaje como en la producción, el consumo de batería y el voltaje, el consumo de salida de momento no se que mas añadir.
    Y hay una pregunta que creo que estaba clara, estoy detectando un consumo del inversor 2W/h desde las 9 de la mañana hasta las 5 de la tarde y cambia a 40/50W/h ¿es normal?
    Los 40/50 W son completamente normales, es el consumo del propio aparato, en este mismo foro se habla de este tema en un par de post, entre otros en la revisión de max que hace Tejota.
    Para sacar esos datos que mencionas tienes que poner un nodo (node-red-contrib-influxdb) en la salida de datos de cada nodo y apuntarlo a tu base de datos influx , después desde grafana te conectas con la misma base de datos y hacer una consulta por tiempo , con eso ya tendrás gráficos del dato que sea.

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

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

    Cita Iniciado por azlo Ver mensaje
    Hola! Gracias por la respuesta.

    Entonces a ver cuando lo conecte, como tengo el cable COM-USB, lo conectaré a ver como va tema drivers y investigaré los programas. Según como lo vea en Windows ya me metería a hacerlo con Linux o la Raspberry. Lo que más me interesaría sería saber como va la evolución de las baterías a lo largo del día y la noche y en qué momentos del día tiene que tirar de baterías para dar apoyo a las placas, espero que en unos días ya lo pueda acabar de conectar todo y arrancar.

    De momento tenemos todas las placas arriba conectadas en dos ramas, a ver si aligeramos.

    Un saludo!
    Mira la documentación, con un poco de suerte puedes encontrar algo de utilidad, si te enteras de con que protocolo trabaja sería lo ideal, pero es casi seguro que no lo pondrá, pero por lo menos lo básico es saber los datos de comunicación del puerto, dando por sentado que sea un puerto serie, necesitas conocer su velocidad, si tiene o no paridad y el bit de stop, con eso ya te podrías conectar desde un pc.
    Repasa el programa que te den, mira si tienen configuración de puertos.
    Por último si ya tienes lecturas de algún tipo en su programa, puedes intentar algún comando sencillo del protocolo p30, y ver si responde, para hacer esto necesitas nodered y un cable de comunicaciones que sepas que funciona.

  21. #146
    asl12 está desconectado Forero
    Fecha de ingreso
    mar 2021
    Ubicación
    Navarra
    Mensajes
    238

    Predeterminado Re: Tutorial Monitorización Voltronic MAX, Nodered, Grafana...

    Hola!

    Por aquí he vuelto! Mil gracias AU, el nodered va como un tiro! Todo genial, sigue con los refrescos (paso por cero cada cierto tiempo) pero estoy super contento, os adjunto una foto del cuadro de mando. Los automatismos del tensión de carga & ACS en función del SOC, A, la carga del VE por tiempo o incluso recarga de batería en base a tiempo y SOC... o el cambio de SBU a SUB por tiempos... combinado con los enchufes inteligentes... todo marcha genial!

    Tutorial Monitorización Voltronic MAX, Nodered, Grafana...-screenshot-2021-10-21-23.06.56.jpg

    Respecto a nodos, los puedo colgar si queréis... Una duda, sabéis cómo puedo modificar el valor del SOC al que quiero cargar la batería por la noche desde el cuadro de mando tipo poner un valor o un desplegable? Adjunto foto del nodo actual que se entiende bastante bien (la inyección inicial es el SOC)... Es por aprender más sobre las lógicas...

    Tutorial Monitorización Voltronic MAX, Nodered, Grafana...-screenshot-2021-10-21-23.14.21.jpg

    Los datos no los estoy guardando (los flujos si!), pero bueno, eso es Influx...

    Se os ocurre algún flujo para ser automatizado?

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

    Predeterminado Re: Tutorial Monitorización Voltronic MAX, Nodered, Grafana...

    Cita Iniciado por asl12 Ver mensaje
    Hola!

    Por aquí he vuelto! Mil gracias AU, el nodered va como un tiro! Todo genial, sigue con los refrescos (paso por cero cada cierto tiempo) pero estoy super contento, os adjunto una foto del cuadro de mando. Los automatismos del tensión de carga & ACS en función del SOC, A, la carga del VE por tiempo o incluso recarga de batería en base a tiempo y SOC... o el cambio de SBU a SUB por tiempos... combinado con los enchufes inteligentes... todo marcha genial!
    Me alegro de que estés contento con tu instalación ... Si quieres continuar mejorando y refinando el código, te recomiendo que ejecutes una copia offline , así puedes probar sin afectar a la máquina que tienes en producción.
    Cuando dices que pasas por cero, supongo que te refieres a que obtienes ceros que no deberías obtener en algunos momentos, para solucionarlo tienes dos opciones, o encuentras la inconsistencia y la corriges, (no siempre se puede) o filtras los ceros antes de que alcancen su destino, esto puede ser conveniente o no, dependiendo de si en algún momento existen valores cero reales es esa variable.

    Cita Iniciado por asl12 Ver mensaje
    Hola!

    Respecto a nodos, los puedo colgar si queréis... Una duda, sabéis cómo puedo modificar el valor del SOC al que quiero cargar la batería por la noche desde el cuadro de mando tipo poner un valor o un desplegable? Adjunto foto del nodo actual que se entiende bastante bien (la inyección inicial es el SOC)... Es por aprender más sobre las lógicas...
    Un par de ejemplos.... pero esta era fácil ehhh ¡¡¡ la podías haber encontrado tu seguro ¡¡¡consulta el manual.. que aprenderás mucho ;-)

    Código:
    [     {         "id": "4f42e1290f7addb9",         "type": "ui_dropdown",         "z": "b90912270a32ee20",         "name": "",         "label": "New Drop down",         "tooltip": "",         "place": "Select option",         "group": "b5a59274.ca4dc",         "order": 1,         "width": 0,         "height": 0,         "passthru": false,         "multiple": false,         "options": [             {                 "label": "Soc 80",                 "value": 80,                 "type": "num"             },             {                 "label": "Soc 70",                 "value": 70,                 "type": "num"             },             {                 "label": "Soc 50",                 "value": 50,                 "type": "num"             }         ],         "payload": "",         "topic": "",         "topicType": "str",         "className": "",         "x": 340,         "y": 600,         "wires": [             [                 "2994b95aca46d4a3"             ]         ]     },     {         "id": "01bb442bbca542d0",         "type": "ui_numeric",         "z": "b90912270a32ee20",         "name": "Set Temp",         "label": "SOC",         "tooltip": "",         "group": "b5a59274.ca4dc",         "order": 2,         "width": 0,         "height": 0,         "wrap": false,         "passthru": false,         "topic": "",         "topicType": "str",         "format": "{{value}}",         "min": "50",         "max": "100",         "step": 1,         "className": "",         "x": 320,         "y": 500,         "wires": [             [                 "15b15292c97fea2a"             ]         ]     },     {         "id": "2994b95aca46d4a3",         "type": "debug",         "z": "b90912270a32ee20",         "name": "",         "active": true,         "tosidebar": true,         "console": false,         "tostatus": false,         "complete": "false",         "statusVal": "",         "statusType": "auto",         "x": 600,         "y": 600,         "wires": []     },     {         "id": "15b15292c97fea2a",         "type": "debug",         "z": "b90912270a32ee20",         "name": "",         "active": true,         "tosidebar": true,         "console": false,         "tostatus": false,         "complete": "false",         "statusVal": "",         "statusType": "auto",         "x": 610,         "y": 500,         "wires": []     },     {         "id": "b5a59274.ca4dc",         "type": "ui_group",         "name": "Control",         "tab": "402daa81.d7ced4",         "order": 5,         "disp": true,         "width": "6",         "collapse": true,         "className": ""     },     {         "id": "402daa81.d7ced4",         "type": "ui_tab",         "name": "Casa",         "icon": "dashboard",         "disabled": false,         "hidden": false     } ]
    Cita Iniciado por asl12 Ver mensaje
    Hola!
    Los datos no los estoy guardando (los flujos si!), pero bueno, eso es Influx...

    Se os ocurre algún flujo para ser automatizado?
    Yo estoy dándole vuelta a como hacer un control de cargas preferentes, de manera que pueda controlar que electrodoméstico tiene preferencia cuando las condiciones energéticas no llegan para todos al mismo tiempo, por ejemplo hoy quiero poner una lavadora , un lavaplatos, si alguno de estos coinciden bien entre ello o bien con la calefacción, o el termo.. o la inducción... etc, como lo manejo?. y también tienen que manejar el ciclo de trabajo, pongo este mismo electrodomésticos, y cuál comienza antes y cuando comienza el segundo o el tercero.. para que los picos de consumo no se solapen.
    La parte de la detección de consumos y el reconocimiento del ciclo de cada aparato es lo primero.
    Si lo termino, ya comentaré el resultado.

  23. #148
    asl12 está desconectado Forero
    Fecha de ingreso
    mar 2021
    Ubicación
    Navarra
    Mensajes
    238

    Predeterminado Re: Tutorial Monitorización Voltronic MAX, Nodered, Grafana...

    Gracias AU!
    Y cómo haría para que el valor seleccionado (en ese desplegable) fuese el valor objetivo de la variable con el que un nodo switch hace cada una de las salidas? Por ejemplo, entra un payload con un valor de SOC de 73 cómo harías para que las ramas que salen del nodo switch dependiesen del valor del selector (70 por ejemplo) que hemos creado? Probé mil cosas, pero no me funcionan...

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

    Predeterminado Re: Tutorial Monitorización Voltronic MAX, Nodered, Grafana...

    Cita Iniciado por asl12 Ver mensaje
    Gracias AU!
    Y cómo haría para que el valor seleccionado (en ese desplegable) fuese el valor objetivo de la variable con el que un nodo switch hace cada una de las salidas? Por ejemplo, entra un payload con un valor de SOC de 73 cómo harías para que las ramas que salen del nodo switch dependiesen del valor del selector (70 por ejemplo) que hemos creado? Probé mil cosas, pero no me funcionan...
    Prácticamente lo estás diciendo tú, solo tienes que añadir en el switch el valor igual a y la salida ... no tiene nada, y tantas salidas como valores, aunque no se para qué quieres eso, si ta tienes un valor distinto en cada caso, solo tienes que aplicarlo en la llamada correspondiente. .. Como estas haciendo la orden para el soc destino ? --- es un valor numérico? un voltaje , es un SOC directamente , sin ver la rutina no te puedo decir mucho más. Mi sistema no se puede aplicar en tu BMS, por que lo que hago es usar un modo USE cuando quiero controlar la carga, de forma que pueda aplicar Flotacion y Absorción en niveles que interrumpen la carga de no ser que este por los suelos, con esto puedo detener la carga en valores soc de 70 u 80 sin problemas, y para cargar cambio en modo de batería dejando que sean estas las que controlen el ciclo mientras el SOC no sea más de 70 u 80, ya que mis baterías tienen un control de carga sofisticado con balanceo activo y realizan un buen trabajo, pero todo esto se puede decidir solo con saber si es 70 u 80 el destino un control sencillo.

    De todas formas este sería el código que creo que pides.

    Código:
    [     {         "id": "307a07598bf9c086",         "type": "switch",         "z": "cb9627d381d31d83",         "name": "",         "property": "payload",         "propertyType": "msg",         "rules": [             {                 "t": "eq",                 "v": "70",                 "vt": "str"             },             {                 "t": "eq",                 "v": "60",                 "vt": "str"             },             {                 "t": "eq",                 "v": "50",                 "vt": "str"             }         ],         "checkall": "true",         "repair": false,         "outputs": 3,         "x": 550,         "y": 320,         "wires": [             [                 "95f3770259dd596b"             ],             [                 "b4bbe0e397716833"             ],             [                 "4a5a1321711859dc"             ]         ]     },     {         "id": "8e9b9d7eae66c16d",         "type": "ui_dropdown",         "z": "cb9627d381d31d83",         "name": "",         "label": "",         "tooltip": "",         "place": "Select option",         "group": "a5ca3b79.b7e978",         "order": 0,         "width": 0,         "height": 0,         "passthru": true,         "multiple": false,         "options": [             {                 "label": "SOC 70",                 "value": 70,                 "type": "num"             },             {                 "label": "SOC 60",                 "value": "60",                 "type": "str"             },             {                 "label": "SOC 50",                 "value": "50",                 "type": "str"             }         ],         "payload": "",         "topic": "topic",         "topicType": "msg",         "className": "",         "x": 360,         "y": 320,         "wires": [             [                 "307a07598bf9c086"             ]         ]     },     {         "id": "95f3770259dd596b",         "type": "debug",         "z": "cb9627d381d31d83",         "name": "",         "active": true,         "tosidebar": true,         "console": false,         "tostatus": false,         "complete": "false",         "statusVal": "",         "statusType": "auto",         "x": 730,         "y": 260,         "wires": []     },     {         "id": "b4bbe0e397716833",         "type": "debug",         "z": "cb9627d381d31d83",         "name": "",         "active": true,         "tosidebar": true,         "console": false,         "tostatus": false,         "complete": "false",         "statusVal": "",         "statusType": "auto",         "x": 730,         "y": 320,         "wires": []     },     {         "id": "4a5a1321711859dc",         "type": "debug",         "z": "cb9627d381d31d83",         "name": "",         "active": true,         "tosidebar": true,         "console": false,         "tostatus": false,         "complete": "false",         "statusVal": "",         "statusType": "auto",         "x": 730,         "y": 380,         "wires": []     },     {         "id": "a5ca3b79.b7e978",         "type": "ui_group",         "name": "Consumo",         "tab": "402daa81.d7ced4",         "order": 3,         "disp": true,         "width": "6",         "collapse": false,         "className": ""     },     {         "id": "402daa81.d7ced4",         "type": "ui_tab",         "name": "Casa",         "icon": "dashboard",         "disabled": false,         "hidden": false     } ]

  25. #150
    asl12 está desconectado Forero
    Fecha de ingreso
    mar 2021
    Ubicación
    Navarra
    Mensajes
    238

    Predeterminado Re: Tutorial Monitorización Voltronic MAX, Nodered, Grafana...

    Cita Iniciado por Au-PRX Ver mensaje
    Prácticamente lo estás diciendo tú, solo tienes que añadir en el switch el valor igual a y la salida ... no tiene nada, y tantas salidas como valores, aunque no se para qué quieres eso, si ta tienes un valor distinto en cada caso, solo tienes que aplicarlo en la llamada correspondiente. .. Como estas haciendo la orden para el soc destino ? --- es un valor numérico? un voltaje , es un SOC directamente , sin ver la rutina no te puedo decir mucho más. Mi sistema no se puede aplicar en tu BMS, por que lo que hago es usar un modo USE cuando quiero controlar la carga, de forma que pueda aplicar Flotacion y Absorción en niveles que interrumpen la carga de no ser que este por los suelos, con esto puedo detener la carga en valores soc de 70 u 80 sin problemas, y para cargar cambio en modo de batería dejando que sean estas las que controlen el ciclo mientras el SOC no sea más de 70 u 80, ya que mis baterías tienen un control de carga sofisticado con balanceo activo y realizan un buen trabajo, pero todo esto se puede decidir solo con saber si es 70 u 80 el destino un control sencillo.

    De todas formas este sería el código que creo que pides.

    Código:
    [     {         "id": "307a07598bf9c086",         "type": "switch",         "z": "cb9627d381d31d83",         "name": "",         "property": "payload",         "propertyType": "msg",         "rules": [             {                 "t": "eq",                 "v": "70",                 "vt": "str"             },             {                 "t": "eq",                 "v": "60",                 "vt": "str"             },             {                 "t": "eq",                 "v": "50",                 "vt": "str"             }         ],         "checkall": "true",         "repair": false,         "outputs": 3,         "x": 550,         "y": 320,         "wires": [             [                 "95f3770259dd596b"             ],             [                 "b4bbe0e397716833"             ],             [                 "4a5a1321711859dc"             ]         ]     },     {         "id": "8e9b9d7eae66c16d",         "type": "ui_dropdown",         "z": "cb9627d381d31d83",         "name": "",         "label": "",         "tooltip": "",         "place": "Select option",         "group": "a5ca3b79.b7e978",         "order": 0,         "width": 0,         "height": 0,         "passthru": true,         "multiple": false,         "options": [             {                 "label": "SOC 70",                 "value": 70,                 "type": "num"             },             {                 "label": "SOC 60",                 "value": "60",                 "type": "str"             },             {                 "label": "SOC 50",                 "value": "50",                 "type": "str"             }         ],         "payload": "",         "topic": "topic",         "topicType": "msg",         "className": "",         "x": 360,         "y": 320,         "wires": [             [                 "307a07598bf9c086"             ]         ]     },     {         "id": "95f3770259dd596b",         "type": "debug",         "z": "cb9627d381d31d83",         "name": "",         "active": true,         "tosidebar": true,         "console": false,         "tostatus": false,         "complete": "false",         "statusVal": "",         "statusType": "auto",         "x": 730,         "y": 260,         "wires": []     },     {         "id": "b4bbe0e397716833",         "type": "debug",         "z": "cb9627d381d31d83",         "name": "",         "active": true,         "tosidebar": true,         "console": false,         "tostatus": false,         "complete": "false",         "statusVal": "",         "statusType": "auto",         "x": 730,         "y": 320,         "wires": []     },     {         "id": "4a5a1321711859dc",         "type": "debug",         "z": "cb9627d381d31d83",         "name": "",         "active": true,         "tosidebar": true,         "console": false,         "tostatus": false,         "complete": "false",         "statusVal": "",         "statusType": "auto",         "x": 730,         "y": 380,         "wires": []     },     {         "id": "a5ca3b79.b7e978",         "type": "ui_group",         "name": "Consumo",         "tab": "402daa81.d7ced4",         "order": 3,         "disp": true,         "width": "6",         "collapse": false,         "className": ""     },     {         "id": "402daa81.d7ced4",         "type": "ui_tab",         "name": "Casa",         "icon": "dashboard",         "disabled": false,         "hidden": false     } ]
    Gracias! lo que quiero hacer es poder elegir en el deplegable el nivel de SoC de forma que cuando entre el SoC real del BMV, si es menor que el valor definido en el desplegable, el inversor entre 1am y 7am pase a modo de carga SNU y suba intensidad desde 2A hasta 30A...

    Copio flujo:

    Código:
    [{"id":"3b97dabe.d70516","type":"link in","z":"92979e93.f7e7d","name":"Gestion BMV IN","links":["f9b11a5b.95b6a8"],"x":75,"y":880,"wires":[["c1ecaac1.b7a748","25eeb7c0.5f0388","382ae68d.510c2a","925b20ac.60893"]]},{"id":"c1ecaac1.b7a748","type":"time-range-switch","z":"92979e93.f7e7d","name":"","lat":"42","lon":"12","startTime":"00:55","endTime":"07:02","startOffset":"","endOffset":"","x":280,"y":640,"wires":[["da718c30.d6595","6d8e0903.393bb8"],["cb7a5bb5.62c8f8","eae2db66.a15f88","1145872e.675839"]]},{"id":"6d8e0903.393bb8","type":"switch","z":"92979e93.f7e7d","name":"Carga por SOC Extra","property":"payload.SOC","propertyType":"msg","rules":[{"t":"gt","v":"topic.selector","vt":"msg"},{"t":"lt","v":"topic.selector","vt":"msg"},{"t":"lt","v":"30","vt":"num"}],"checkall":"true","repair":false,"outputs":3,"x":240,"y":520,"wires":[["1fde88a8.669967","6ad893c7.2d215c"],["a379ec60.6521","a6d550ac.50aea"],["a379ec60.6521","a6d550ac.50aea"]]},{"id":"1e15ecda.d82403","type":"ui_dropdown","z":"92979e93.f7e7d","name":"","label":"SOC","tooltip":"","place":"Select option","group":"118c40b3.3c7d6f","order":5,"width":0,"height":0,"passthru":true,"multiple":false,"options":[{"label":"soc 70","value":70,"type":"num"},{"label":"soc 50","value":50,"type":"num"}],"payload":"","topic":"topic.selector","topicType":"msg","className":"","x":170,"y":440,"wires":[["6d8e0903.393bb8"]]},{"id":"1fde88a8.669967","type":"function","z":"92979e93.f7e7d","name":"OSO","func":"msg.payload=\"PCP03\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":450,"y":420,"wires":[["bbef6f5.ac5d09"]]},{"id":"6ad893c7.2d215c","type":"function","z":"92979e93.f7e7d","name":"BCh02","func":"msg.payload=\"MUCHGC002\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":450,"y":460,"wires":[["bbef6f5.ac5d09"]]},{"id":"a379ec60.6521","type":"function","z":"92979e93.f7e7d","name":"SNU","func":"msg.payload=\"PCP02\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":810,"y":540,"wires":[["bbef6f5.ac5d09"]]},{"id":"a6d550ac.50aea","type":"function","z":"92979e93.f7e7d","name":"BCh30","func":"msg.payload=\"MUCHGC030\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":810,"y":580,"wires":[["bbef6f5.ac5d09"]]},{"id":"bbef6f5.ac5d09","type":"link out","z":"92979e93.f7e7d","name":"Control BMV OUT","links":["4d2d866e.4d33c8","b08e2dd0.b7e1a","ef3e6756.0ab4c8"],"x":990,"y":460,"wires":[],"l":true},{"id":"118c40b3.3c7d6f","type":"ui_group","name":"Acciones","tab":"402daa81.d7ced4","order":5,"disp":true,"width":"6","collapse":false,"className":""},{"id":"402daa81.d7ced4","type":"ui_tab","name":"Casa","icon":"dashboard","disabled":false,"hidden":false}]

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