Página 7 de 8 PrimerPrimer ... 678 ÚltimoÚltimo
Resultados 151 al 175 de 194
  1. #151
    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! 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}]


    Esto es otra cosa completamente diferente de lo que estabas pidiendo inicialmente, ves porque hay que concretar las preguntas, me puedo pasar 3 horas haciendo algo inútil si no concretamos bien ¡¡¡Bueno.

    Tienes dos condiciones, la hora, y si el soc , que si es menor del elegido en el desplegable, se toma una decision.
    En el flujo que paso , doy por sentado que el SOC real llega por (msn.paylos.soc) también entiendo que el nodo (time range) es trasparente y permite pasar el msg, y por último no repase tus funciones de control de modo y amperaje, solo las enlace, así que revisarlas antes de poner en producción este flujo.

    Explicación,tienes tres nodos de inyeccion para pruebas, y tienes dos nodos separados del flujo, uno es un dropdown y esta enlazado con una función, esto lo que hace es que guarda en una variable flow (SOCSelec) el valor seleccionado en el desplegable, piensa que es necesario seleccionar un valor antes de que pueda funcionar, y que el alcance de la variable es solo flow, no te funcionara fuera del flujo donde se declara.
    Más tarde en el flujo principal en el (switch) comparo la variable flow (SOCSelec) con él (msg.payload.soc ) que llega de tu flujo si es menor sale por la salida inferior, si es mayor por la superior, y santas pascuas ¡¡ .
    Revisa la lógica, que no sea que lo esté haciendo a la inversa (cosa frecuente en mi) ... y después puedes eliminar los inyectores de pruebas y los nodos debut.

    Saludos.

    Código:
    [     {         "id": "c1ed9479090fed94",         "type": "switch",         "z": "836e8b2d1254e558",         "name": "",         "property": "payload.SOC",         "propertyType": "msg",         "rules": [             {                 "t": "gte",                 "v": "SOCSelec",                 "vt": "flow"             },             {                 "t": "lt",                 "v": "SOCSelec",                 "vt": "flow"             }         ],         "checkall": "true",         "repair": false,         "outputs": 2,         "x": 310,         "y": 420,         "wires": [             [                 "e7e967f6e5a7e565",                 "432653bd3da30b9f",                 "01d6ad913d09afe8"             ],             [                 "45980505345587bb",                 "4f5745c411d7f890",                 "575a6d9917101c7e"             ]         ]     },     {         "id": "155a171232448d20",         "type": "inject",         "z": "836e8b2d1254e558",         "name": "SOC 30",         "props": [             {                 "p": "payload.SOC",                 "v": "30",                 "vt": "num"             }         ],         "repeat": "",         "crontab": "",         "once": false,         "onceDelay": 0.1,         "topic": "",         "x": 130,         "y": 360,         "wires": [             [                 "c1ed9479090fed94"             ]         ]     },     {         "id": "e7e967f6e5a7e565",         "type": "debug",         "z": "836e8b2d1254e558",         "name": "",         "active": true,         "tosidebar": true,         "console": false,         "tostatus": false,         "complete": "false",         "statusVal": "",         "statusType": "auto",         "x": 490,         "y": 280,         "wires": []     },     {         "id": "a115e51bdca5a4b5",         "type": "ui_dropdown",         "z": "836e8b2d1254e558",         "name": "",         "label": "",         "tooltip": "",         "place": "Select option",         "group": "b5a59274.ca4dc",         "order": 0,         "width": 0,         "height": 0,         "passthru": true,         "multiple": false,         "options": [             {                 "label": "SOC 40",                 "value": 40,                 "type": "num"             },             {                 "label": "SOC 50",                 "value": 50,                 "type": "num"             },             {                 "label": "SOC 60",                 "value": 60,                 "type": "num"             }         ],         "payload": "",         "topic": "topic",         "topicType": "msg",         "className": "",         "x": 120,         "y": 220,         "wires": [             [                 "f8ebd945315d05b6"             ]         ]     },     {         "id": "f8ebd945315d05b6",         "type": "function",         "z": "836e8b2d1254e558",         "name": "",         "func": "//var SOCSelec = flow.get ('SOCSelec') || 0;\n\nflow.set ('SOCSelec', msg.payload);\nreturn msg;",         "outputs": 1,         "noerr": 0,         "initialize": "",         "finalize": "",         "libs": [],         "x": 120,         "y": 280,         "wires": [             []         ]     },     {         "id": "575a6d9917101c7e",         "type": "debug",         "z": "836e8b2d1254e558",         "name": "",         "active": true,         "tosidebar": true,         "console": false,         "tostatus": false,         "complete": "false",         "statusVal": "",         "statusType": "auto",         "x": 490,         "y": 560,         "wires": []     },     {         "id": "dd80333f24e3a888",         "type": "inject",         "z": "836e8b2d1254e558",         "name": "SOC 40",         "props": [             {                 "p": "payload.SOC",                 "v": "40",                 "vt": "num"             }         ],         "repeat": "",         "crontab": "",         "once": false,         "onceDelay": 0.1,         "topic": "",         "x": 130,         "y": 420,         "wires": [             [                 "c1ed9479090fed94"             ]         ]     },     {         "id": "6fbe8782941845a5",         "type": "inject",         "z": "836e8b2d1254e558",         "name": "SOC 50",         "props": [             {                 "p": "payload.SOC",                 "v": "50",                 "vt": "num"             }         ],         "repeat": "",         "crontab": "",         "once": false,         "onceDelay": 0.1,         "topic": "",         "payloadType": "str",         "x": 130,         "y": 480,         "wires": [             [                 "c1ed9479090fed94"             ]         ]     },     {         "id": "24e27bdd09fd0305",         "type": "link in",         "z": "836e8b2d1254e558",         "name": "Gestion BMV IN",         "links": [             "f9b11a5b.95b6a8"         ],         "x": 55,         "y": 600,         "wires": [             [                 "579a91c8119ff173"             ]         ]     },     {         "id": "579a91c8119ff173",         "type": "time-range-switch",         "z": "836e8b2d1254e558",         "name": "",         "lat": "42",         "lon": "12",         "startTime": "00:55",         "endTime": "07:02",         "startOffset": "",         "endOffset": "",         "x": 190,         "y": 600,         "wires": [             [                 "c1ed9479090fed94"             ],             []         ]     },     {         "id": "432653bd3da30b9f",         "type": "function",         "z": "836e8b2d1254e558",         "name": "OSO",         "func": "msg.payload=\"PCP03\"\nreturn msg;",         "outputs": 1,         "noerr": 0,         "initialize": "",         "finalize": "",         "libs": [],         "x": 470,         "y": 320,         "wires": [             [                 "e83acb8325134b54",                 "526e5648dd36e03a"             ]         ]     },     {         "id": "01d6ad913d09afe8",         "type": "function",         "z": "836e8b2d1254e558",         "name": "BCh02",         "func": "msg.payload=\"MUCHGC002\"\nreturn msg;",         "outputs": 1,         "noerr": 0,         "initialize": "",         "finalize": "",         "libs": [],         "x": 470,         "y": 360,         "wires": [             [                 "e83acb8325134b54",                 "526e5648dd36e03a"             ]         ]     },     {         "id": "45980505345587bb",         "type": "function",         "z": "836e8b2d1254e558",         "name": "SNU",         "func": "msg.payload=\"PCP02\"\nreturn msg;",         "outputs": 1,         "noerr": 0,         "initialize": "",         "finalize": "",         "libs": [],         "x": 470,         "y": 480,         "wires": [             [                 "e83acb8325134b54",                 "dc2ac71a441ad298"             ]         ]     },     {         "id": "4f5745c411d7f890",         "type": "function",         "z": "836e8b2d1254e558",         "name": "BCh30",         "func": "msg.payload=\"MUCHGC030\"\nreturn msg;",         "outputs": 1,         "noerr": 0,         "initialize": "",         "finalize": "",         "libs": [],         "x": 470,         "y": 520,         "wires": [             [                 "e83acb8325134b54",                 "dc2ac71a441ad298"             ]         ]     },     {         "id": "e83acb8325134b54",         "type": "link out",         "z": "836e8b2d1254e558",         "name": "Control BMV OUT",         "links": [             "4d2d866e.4d33c8",             "b08e2dd0.b7e1a",             "ef3e6756.0ab4c8"         ],         "x": 830,         "y": 420,         "wires": [],         "l": true     },     {         "id": "526e5648dd36e03a",         "type": "debug",         "z": "836e8b2d1254e558",         "name": "",         "active": true,         "tosidebar": true,         "console": false,         "tostatus": false,         "complete": "false",         "statusVal": "",         "statusType": "auto",         "x": 810,         "y": 360,         "wires": []     },     {         "id": "dc2ac71a441ad298",         "type": "debug",         "z": "836e8b2d1254e558",         "name": "",         "active": true,         "tosidebar": true,         "console": false,         "tostatus": false,         "complete": "false",         "statusVal": "",         "statusType": "auto",         "x": 810,         "y": 480,         "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     } ]
    Por cierto el iotawatt que comentabas tiene muy buena pinta... puede ser una buena solución para monitorizar circuitos completos , no serviría para por ejemplo monitorizar la nevera o la lavadora de forma unitaria, porque sus circuitos no suelen ser únicos, en las viviendas se suelen hacer circuitos del tipo .. Potencia cocina, alumbrado general ... enchufes planta uno etc, y para estos casos su puede ser interesante, consumos generales y por circuitos .

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

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

    Mil gracias!!!

    Después del tiempo juntos siempre pienso que cuando algo no se entiende (lo que yo describía) es porque no lo había explicado lo suficientemente bien! Disculpa!

    El flujo es perfecto, ya lo tengo integrado y he hecho unas pruebas y funciona de maravilla! Los nodos de tiempo son transparentes, así que el payload.soc fluye sin problemas!
    Había probado mil nodos, pero sin escribir un nodo función era imposible... intenté generar un flow y un topic (que no era lo correcto) pero con tu función va de lujo! He añadido una salida más de seguridad para que sea cual sea la selección nunca baje de 30 (por si alguna vez se queda sin seleccionar).

    Con esta funcionalidad lo que haré será gestionar la batería en invierno, dado que tengo una tarifa muy diferente según los horarios (24cent y 3 cent) por lo que ni siquiera estoy ciclando la batería por las noches... cambio a modo U y ya está. Sólo quiero cargar los días que vea que va a hacer muy malo y tenga consumos altos (calefacción).

    Con el nodo que me has propuesto a ver si monto un selector multiopción y así queda más chulo...

    Respecto al IotaWatt, como los principales consumos los tengo directos al cuadro, creo que podré tomar datos de:
    Red, VE, Frigorifico, Congelador, Horno&Micro, Vitro, Lavadora, Lavavajillas, Panificadora, Plancha y hasta la Thermomix! así que igual uso los 14!!!

    Tengo el nodo de openweathermap que da info cada 3h de los próximos 5 días y que incluye un objeto con el nivel de nubes en escala de 0 a 100... Lo cual en mi caso sería fantástico para mandar un flow SOCSelec (que me has montado) con un nivel u otro... pero ya cacharrearé con el tema!

    Un millón de gracias!

  3. #153
    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
    Mil gracias!!!

    Después del tiempo juntos siempre pienso que cuando algo no se entiende (lo que yo describía) es porque no lo había explicado lo suficientemente bien! Disculpa!

    El flujo es perfecto, ya lo tengo integrado y he hecho unas pruebas y funciona de maravilla! Los nodos de tiempo son transparentes, así que el payload.soc fluye sin problemas!
    Había probado mil nodos, pero sin escribir un nodo función era imposible... intenté generar un flow y un topic (que no era lo correcto) pero con tu función va de lujo! He añadido una salida más de seguridad para que sea cual sea la selección nunca baje de 30 (por si alguna vez se queda sin seleccionar).

    Con esta funcionalidad lo que haré será gestionar la batería en invierno, dado que tengo una tarifa muy diferente según los horarios (24cent y 3 cent) por lo que ni siquiera estoy ciclando la batería por las noches... cambio a modo U y ya está. Sólo quiero cargar los días que vea que va a hacer muy malo y tenga consumos altos (calefacción).

    Con el nodo que me has propuesto a ver si monto un selector multiopción y así queda más chulo...

    Respecto al Iota Watt, como los principales consumos los tengo directos al cuadro, creo que podré tomar datos de:
    Red, VE, Frigorifico, Congelador, Horno&Micro, Vitro, Lavadora, Lavavajillas, Panificadora, Plancha y hasta la Thermomix! así que igual uso los 14!!!

    Tengo el nodo de openweathermap que da info cada 3h de los próximos 5 días y que incluye un objeto con el nivel de nubes en escala de 0 a 100... Lo cual en mi caso sería fantástico para mandar un flow SOCSelec (que me has montado) con un nivel u otro... pero ya cacharrearé con el tema!

    Un millón de gracias!
    Genial... me alegro que acertáramos en la rutina, y sobre lo de entenderse, lo cierto es que sé que no es fácil cuando se habla de temas de programación y de lógica de procesos , yo para poder entender el problema y diseñar una solución, tengo que saber que información llega , por donde , que salidas esperamos etc, y tú lo estás viendo, pero yo solo tengo en la cabeza mi instalación, y ya me cuesta recordar cada cosa... imagina intentar recordar la de los demás, por eso insisto en explicaciones concretas y flujos para comprender como funciona y poder cambiarlo si es necesario, es posible que algunas personas lo pillen al vuelo, pero yo necesito verlo con detalle.

    En lugar de usar openweathermap , estoy viendo de usar solcast.com, es una web que alberga un motor de predicción de rendimiento solar, parametrizable, con lo que es posible hacer una predicción de rendimiento directo según los datos técnicos de tu instalación particular, y para rizar el rizo, es posible entrenarlo con información real de rendimiento, de manera que afina mucho los resultados.
    Estoy aún en fase de "acariciar la idea", ya que tengo abiertos demasiados frentes, pero las primeras pruebas fueron sorprendentes ¡¡ , muy prometedoras.

    Saludos ¡¡

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

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

    Hola!

    Llevo unos días sin escribir porque la verdad es que el sistema me estaba dando mil problemas, esta noche ha sido la primera en la que todo ha funcionado. Como ya os comenté mi instalación semiaislada conecta sólo de 1am a 7am a la red para llevar a cabo una rutina de:

    -Cambio de prioridad de cargas de SBU a SUB
    -Carga de coche eléctrico, activando un enchufe Tuya
    -Recarga de batería hasta el 85% de SoC, seleccionable con el desplegable que nos pasó AU (cuando tengo días nublados en el horizonte), cambiando el modo de carga y vigilando el SoC (y ajustando tensión de carga de batería)
    -Recarga de uno de los termos de ACS (cuando acumulo más de 3 días de nubes)
    -Por fuera de nodered, a esas horas conecto una de las bombas de calor para que atempere la casa

    Pues el tema es que las instrucciones enviadas al inversor se ejecutaban con retardo (que era diferente en cada parámetro y cada día), por lo que nada iba fino...

    Solución que hoy ha hecho que todo marche:

    Tutorial Monitorización Voltronic MAX, Nodered, Grafana...-screenshot-2021-10-31-11.00.32.jpg

    1. Ajustar el envío de órdenes a través del puerto serie del inversor.

    Tutorial Monitorización Voltronic MAX, Nodered, Grafana...-screenshot-2021-10-31-10.57.36.jpg

    2. Definir en nodered unas variables globales con las que controlar los tempos de inyección de órdenes.

    Tutorial Monitorización Voltronic MAX, Nodered, Grafana...-screenshot-2021-10-31-10.57.48.jpg

    Explicaciones (adjunto los nodos para que se vea mejor):
    1. - Envío de órdenes de lectura de datos al inversor cada 60min, salvo lectura de ciertos parámetros cada 5min, desde la 0:30am a las 7:30am
        - Envío de órdenes de cambio de parámetros al inversor en esa franja temporal sin el "ruido" de continuos requerimientos de lectura que por otro lado son totalmente innecesarios

    Código:
    [{"id":"f4c67433.6ac0f8","type":"comment","z":"510263c3.2cdeec","name":"Comunicacion Puerto Serie","info":"","x":590,"y":780,"wires":[]},{"id":"d237db02.771348","type":"debug","z":"510263c3.2cdeec","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":890,"y":1020,"wires":[]},{"id":"6a75c1ec.fa49a","type":"link in","z":"510263c3.2cdeec","name":"Botones","links":["5da372bc.32a5ac"],"x":480,"y":1100,"wires":[["8f05adc7.da392"]],"l":true},{"id":"6fbeb1b0.8a304","type":"function","z":"510263c3.2cdeec","name":"Load Priority","func":"msg.payload = global.get ('LoadPriority', msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":470,"y":940,"wires":[["8f05adc7.da392"]]},{"id":"9ef2a336.d4b07","type":"function","z":"510263c3.2cdeec","name":"Charge Priority","func":"msg.payload = global.get ('ChargePriority', msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":480,"y":980,"wires":[["8f05adc7.da392"]]},{"id":"b6be9e90.2f2a8","type":"inject","z":"510263c3.2cdeec","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"5","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"str","x":80,"y":920,"wires":[["b0f98eb0.d2cf7","369bc02e.6b22"]]},{"id":"d22d73f4.f0871","type":"function","z":"510263c3.2cdeec","name":"Charge Bulk","func":"msg.payload = global.get ('ChargeBulk', msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":470,"y":1060,"wires":[["8f05adc7.da392"]]},{"id":"780a9e39.ba77d","type":"function","z":"510263c3.2cdeec","name":"Charge Float","func":"msg.payload = global.get ('ChargeFloat', msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":470,"y":1020,"wires":[["8f05adc7.da392"]]},{"id":"90b28075.99bee","type":"inject","z":"510263c3.2cdeec","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"47","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"str","x":250,"y":1020,"wires":[["d22d73f4.f0871","780a9e39.ba77d"]]},{"id":"b0f98eb0.d2cf7","type":"time-range-switch","z":"510263c3.2cdeec","name":"","lat":"42","lon":"12","startTime":"00:55","endTime":"01:15","startOffset":"","endOffset":"","x":230,"y":900,"wires":[["6fbeb1b0.8a304","9ef2a336.d4b07"],[]]},{"id":"369bc02e.6b22","type":"time-range-switch","z":"510263c3.2cdeec","name":"","lat":"42","lon":"12","startTime":"07:00","endTime":"07:15","startOffset":"","endOffset":"","x":230,"y":940,"wires":[["6fbeb1b0.8a304","9ef2a336.d4b07"],[]]},{"id":"44886809.e19d78","type":"serial request","z":"510263c3.2cdeec","name":"","serial":"d91892fc.ad91a","x":690,"y":1020,"wires":[["d237db02.771348","85cddabc.4c4538"]]},{"id":"ac4a30f4.5688b","type":"link in","z":"510263c3.2cdeec","name":"EntradaalCRC","links":["1ca333d9.5fedfc"],"x":230,"y":860,"wires":[["8aa753cc.9cffa"]],"l":true},{"id":"8f05adc7.da392","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":680,"y":980,"wires":[["44886809.e19d78"]]},{"id":"85cddabc.4c4538","type":"link out","z":"510263c3.2cdeec","name":"Respuesta Puerto serie","links":["727c0ad6.915784"],"x":930,"y":980,"wires":[],"l":true},{"id":"44e19106.252da","type":"inject","z":"510263c3.2cdeec","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"46","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"str","x":250,"y":980,"wires":[["6fbeb1b0.8a304","9ef2a336.d4b07"]]},{"id":"8aa753cc.9cffa","type":"time-range-switch","z":"510263c3.2cdeec","name":"","lat":"42","lon":"12","startTime":"00:30","endTime":"07:30","startOffset":"","endOffset":"","x":470,"y":900,"wires":[[],["8f05adc7.da392"]]},{"id":"892003a7.a010c","type":"time-range-switch","z":"510263c3.2cdeec","name":"","lat":"42","lon":"12","startTime":"00:30","endTime":"07:30","startOffset":"","endOffset":"","x":470,"y":860,"wires":[["8f05adc7.da392"],[]]},{"id":"a14699cd.7f4cb8","type":"inject","z":"510263c3.2cdeec","name":"QPIGS Estado General","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"300","crontab":"","once":false,"onceDelay":0.1,"topic":"Estado General","payload":"QPIGS","payloadType":"str","x":190,"y":740,"wires":[["892003a7.a010c"]]},{"id":"8677dbd4.089408","type":"inject","z":"510263c3.2cdeec","name":"QPIRI Configuracion","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"3600","crontab":"","once":false,"onceDelay":0.1,"topic":"Configuracion","payload":"QPIRI","payloadType":"str","x":200,"y":780,"wires":[["892003a7.a010c"]]},{"id":"9495cf67.b4a7b","type":"inject","z":"510263c3.2cdeec","name":"QPIGS2 Segundo Campo","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"3600","crontab":"","once":false,"onceDelay":0.1,"topic":"Campo2","payload":"QPIGS2","payloadType":"str","x":180,"y":820,"wires":[["892003a7.a010c"]]},{"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":"1333"}]
    2. Gracias al nodo función que me mandó AU, he definido una variable global para las lecturas y otras para los parámetros clave de gestión del inversor (los copio también)

    Código:
    [{"id":"3b97dabe.d70516","type":"link in","z":"92979e93.f7e7d","name":"Info SoC","links":["f9b11a5b.95b6a8"],"x":75,"y":460,"wires":[["c1ecaac1.b7a748","25eeb7c0.5f0388","382ae68d.510c2a","925b20ac.60893","d0cb0d3e.e711a","202ecb90.ee17e4","9a081cf.e068fe","b22e6138.70e67"]]},{"id":"202ecb90.ee17e4","type":"time-range-switch","z":"92979e93.f7e7d","name":"","lat":"42","lon":"12","startTime":"00:58","endTime":"06:00","startOffset":"","endOffset":"","x":290,"y":320,"wires":[["5b2f462d.d67e78"],["cb7a5bb5.62c8f8"]]},{"id":"c1ecaac1.b7a748","type":"time-range-switch","z":"92979e93.f7e7d","name":"","lat":"42","lon":"12","startTime":"00:58","endTime":"07:00","startOffset":"","endOffset":"","x":290,"y":380,"wires":[["da718c30.d6595"],["eae2db66.a15f88"]]},{"id":"692e1f94.8deb7","type":"function","z":"92979e93.f7e7d","name":"","func":"//var SOCSelec = flow.get ('SOCSelec') || 0;\n\nflow.set ('SOCSelec', msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":280,"y":260,"wires":[[]]},{"id":"da4c9e6a.b0d4a","type":"ui_dropdown","z":"92979e93.f7e7d","name":"","label":"SoC Select","tooltip":"","place":"Select option","group":"118c40b3.3c7d6f","order":1,"width":0,"height":0,"passthru":true,"multiple":false,"options":[{"label":"SOC 30","value":30,"type":"num"},{"label":"SOC 65","value":65,"type":"num"},{"label":"SOC 85","value":85,"type":"num"}],"payload":"","topic":"topic","topicType":"msg","className":"","x":290,"y":220,"wires":[["692e1f94.8deb7"]]},{"id":"5b2f462d.d67e78","type":"switch","z":"92979e93.f7e7d","name":"SOC Select","property":"payload.SOC","propertyType":"msg","rules":[{"t":"gte","v":"SOCSelec","vt":"flow"},{"t":"lt","v":"SOCSelec","vt":"flow"},{"t":"lt","v":"30","vt":"num"}],"checkall":"true","repair":false,"outputs":3,"x":490,"y":260,"wires":[["7080fe21.da473"],["3aefb4e5.5c9b2c"],["3aefb4e5.5c9b2c"]]},{"id":"eae2db66.a15f88","type":"switch","z":"92979e93.f7e7d","name":"Pri. por SOC","property":"payload.SOC","propertyType":"msg","rules":[{"t":"gt","v":"20","vt":"num"},{"t":"lt","v":"15","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":490,"y":420,"wires":[["28351fca.9335e"],["cf46f63a.1e4418"]]},{"id":"cf46f63a.1e4418","type":"function","z":"92979e93.f7e7d","name":"SUB","func":"msg.payload=\"POP01\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":670,"y":440,"wires":[["79e7e41b.94da2c"]]},{"id":"28351fca.9335e","type":"function","z":"92979e93.f7e7d","name":"SBU","func":"msg.payload=\"POP02\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":670,"y":400,"wires":[["79e7e41b.94da2c"]]},{"id":"da718c30.d6595","type":"function","z":"92979e93.f7e7d","name":"SUB","func":"msg.payload=\"POP01\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":670,"y":360,"wires":[["79e7e41b.94da2c"]]},{"id":"cb7a5bb5.62c8f8","type":"function","z":"92979e93.f7e7d","name":"OSO","func":"msg.payload=\"PCP03\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":670,"y":320,"wires":[["54c1e2.5f6c4e2"]]},{"id":"3aefb4e5.5c9b2c","type":"function","z":"92979e93.f7e7d","name":"SNU","func":"msg.payload=\"PCP02\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":670,"y":280,"wires":[["54c1e2.5f6c4e2"]]},{"id":"7080fe21.da473","type":"function","z":"92979e93.f7e7d","name":"OSO","func":"msg.payload=\"PCP03\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":670,"y":240,"wires":[["54c1e2.5f6c4e2"]]},{"id":"54c1e2.5f6c4e2","type":"function","z":"92979e93.f7e7d","name":"Charge Priority","func":"//var ChargePriority = global.get ('ChargePriority' || 0;\n\nglobal.set ('ChargePriority', msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":840,"y":280,"wires":[[]]},{"id":"79e7e41b.94da2c","type":"function","z":"92979e93.f7e7d","name":"Load Priority","func":"//var LoadPriority = global.get ('LoadPriority' || 0;\n\nglobal.set ('LoadPriority', msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":830,"y":400,"wires":[[]]},{"id":"118c40b3.3c7d6f","type":"ui_group","name":"Acciones","tab":"402daa81.d7ced4","order":6,"disp":true,"width":"6","collapse":false,"className":""},{"id":"402daa81.d7ced4","type":"ui_tab","name":"Casa","icon":"dashboard","disabled":false,"hidden":false}]
    Código:
    [{"id":"f2d6f5f0.bab578","type":"link in","z":"216f217c.94c8ee","name":"MAX7200","links":["e2947a2c.07c2b8"],"x":100,"y":220,"wires":[["db8b8d30.c4daa","db654944.1bbb48"]],"l":true},{"id":"db8b8d30.c4daa","type":"debug","z":"216f217c.94c8ee","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":290,"y":160,"wires":[]},{"id":"96813aaa.ba0968","type":"debug","z":"216f217c.94c8ee","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":530,"y":220,"wires":[]},{"id":"db654944.1bbb48","type":"function","z":"216f217c.94c8ee","name":"SalidaMax7200","func":"//var SalidaMax7200 = global.get ('SalidaMax7200' || 0;\n\nglobal.set ('SalidaMax7200', msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":300,"y":220,"wires":[["96813aaa.ba0968"]]},{"id":"e3f92e98.f41e4","type":"function","z":"216f217c.94c8ee","name":"SalidaMax7200","func":"msg.payload = global.get ('SalidaMax7200', msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":300,"y":280,"wires":[["d84ea6e4.607848"]]},{"id":"1e9cf6b9.a00ad9","type":"inject","z":"216f217c.94c8ee","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"5","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"str","x":130,"y":280,"wires":[["e3f92e98.f41e4"]]},{"id":"d84ea6e4.607848","type":"debug","z":"216f217c.94c8ee","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":530,"y":280,"wires":[]}]
    Mi siguiente paso va a ser montar el nuevo cuadro donde con un shelly voy a controlar un contactor que acople a la red de 1am a 7am de forma que pueda estar completamente offgrid el resto del día salvo que el SoC caiga momento en el que se abrirá de nuevo el contactor.
    Siguiendo con el tema, si dejo Node Red corriendo en una rasp con una micro SD y en la otra con el disco SSD pongo Influx y Grafana, cómo lo veis? La publicación de información entiendo que lo mejor sería hacerla con publicaciones MQTT desde la Rasp que corre Node Red y la suscripciones MQTT desde la otra donde se grabarán en Influx

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

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

    Muy buen trabajo la verdad. Enhorabuena.

    Hace tiempo intenté usar node red para otro propósito pero estaba muy verde el software. Me salía mucho más fácil hacerlo en python o incluso c. Ahora lo probé para algo totalmente diferente como es una camara de vigilancia que con un algoritmo detecta, contea i clasifica los animales vistos i lo veo muchísimo más maduro que antes.

  6. #156
    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 Pidjey Ver mensaje
    Muy buen trabajo la verdad. Enhorabuena.

    Hace tiempo intenté usar node red para otro propósito pero estaba muy verde el software. Me salía mucho más fácil hacerlo en python o incluso c. Ahora lo probé para algo totalmente diferente como es una camara de vigilancia que con un algoritmo detecta, contea i clasifica los animales vistos i lo veo muchísimo más maduro que antes.
    Hoy por hoy si estás pensando en integración de sistemas, nodered es la herramienta más potente, se puede hacer casi lo que quieras y de forma relativamente rápido.
    Actualmente tengo más de 80 dispositivos trabajando en nodered.

  7. #157
    Cubano está desconectado Forero
    Fecha de ingreso
    sep 2021
    Mensajes
    87

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

    Asl12, cómo metes los enchufes tuya a nodered? Porque el modo de tuya pide una clave que no sé de cómo conseguirla.

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

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

    Hola!

    Sigo cosechando satisfacciones con el Node Red, gracias a la ayuda que me habéis dado... sigo automatizando elementos. Os comparto el flujo para carga nocturna (de 1am a 7am) de batería (tarifa de 3cents/kwh) en función de la nubosidad esperada al día siguiente (mantengo la posibilidad de realizar una carga al 85% para emergencias de forma seleccionable).

    - Nodo Openweathermap (con google maps podéis poner las coordenadas exactas de la instalación)
    - Algoritmo muy sencillo (simplemente sumo el porcentaje de nubes de las 10am, 1pm y 4pm, que las entrega el nodo, y la inyección de consulta la hago a la 1am). Con dicha suma obtengo un valor que convierto en 4 niveles predeterminados de SoC, que es la variable clave en el flujo de gestión nocturna.
    - Adicionalmente los días muy nubosos, se realiza una carga de ACS del termo de uso diario.

    Código:
    [{"id":"9a6fbf85.8127e","type":"openweathermap","z":"92979e93.f7e7d","name":"","wtype":"forecast","lon":"1","lat":"1","city":"","country":"","language":"es","x":570,"y":60,"wires":[["25e26388.341cac","b46df784.7a6328"]]},{"id":"f1abc6f8.5080d8","type":"inject","z":"92979e93.f7e7d","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"*/10 1 * * *","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":310,"y":60,"wires":[["9a6fbf85.8127e"]]},{"id":"25e26388.341cac","type":"function","z":"92979e93.f7e7d","name":"Clouds_SoC","func":"msg.topic = \"Clouds\"\nmsg.payload = \n{\n    \"Clouds_total\": msg.payload[2].clouds.all + msg.payload[3].clouds.all + msg.payload[4].clouds.all,\n}\nmsg.payload = msg.payload.Clouds_total;\nreturn msg;\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":270,"y":100,"wires":[["788971f5.2bbdb","8eb7fe4d.5e089"]]},{"id":"788971f5.2bbdb","type":"switch","z":"92979e93.f7e7d","name":"Weather","property":"payload","propertyType":"msg","rules":[{"t":"gt","v":"225","vt":"num"},{"t":"gt","v":"200","vt":"str"},{"t":"gt","v":"100","vt":"num"},{"t":"lt","v":"100","vt":"num"}],"checkall":"true","repair":false,"outputs":4,"x":280,"y":240,"wires":[["f54bd88.2589228","7c73e006.ee82a"],["1568ccc6.ca9643"],["48b85673.7951b8"],["60892da4.04ddd4"]]},{"id":"60892da4.04ddd4","type":"change","z":"92979e93.f7e7d","name":"SOC 30","rules":[{"t":"set","p":"payload","pt":"msg","to":"30","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":460,"y":300,"wires":[["c738026f.b7055"]]},{"id":"48b85673.7951b8","type":"change","z":"92979e93.f7e7d","name":"SOC 50","rules":[{"t":"set","p":"payload","pt":"msg","to":"50","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":460,"y":260,"wires":[["c738026f.b7055"]]},{"id":"f54bd88.2589228","type":"change","z":"92979e93.f7e7d","name":"SOC 85","rules":[{"t":"set","p":"payload","pt":"msg","to":"85","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":460,"y":180,"wires":[["c738026f.b7055"]]},{"id":"c738026f.b7055","type":"function","z":"92979e93.f7e7d","name":"Clouds_status","func":"//var Clouds_status = flow.get ('Clouds_status') || 0;\n\nflow.set ('Clouds_status', msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":660,"y":240,"wires":[[]]},{"id":"1568ccc6.ca9643","type":"change","z":"92979e93.f7e7d","name":"SOC 70","rules":[{"t":"set","p":"payload","pt":"msg","to":"70","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":460,"y":220,"wires":[["c738026f.b7055"]]},{"id":"8eb7fe4d.5e089","type":"ui_chart","z":"92979e93.f7e7d","name":"","group":"b5a59274.ca4dc","order":13,"width":"6","height":"3","label":"Clouds","chartType":"line","legend":"false","xformat":"HH:mm","interpolate":"bezier","nodata":"","dot":false,"ymin":"0","ymax":"300","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":100,"wires":[[]]},{"id":"b46df784.7a6328","type":"debug","z":"92979e93.f7e7d","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":850,"y":60,"wires":[]},{"id":"97547251.5e202","type":"link out","z":"92979e93.f7e7d","name":"Nuboso ACS","links":["f11c4e86.a454c","5f06519b.d6615"],"x":575,"y":140,"wires":[]},{"id":"7c73e006.ee82a","type":"delay","z":"92979e93.f7e7d","name":"","pauseType":"delay","timeout":"4","timeoutUnits":"hours","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":460,"y":140,"wires":[["97547251.5e202"]]},{"id":"35c01e11.5feda2","type":"ui_dropdown","z":"92979e93.f7e7d","name":"","label":"Nivel bateria","tooltip":"","place":"Select option","group":"118c40b3.3c7d6f","order":1,"width":0,"height":0,"passthru":true,"multiple":false,"options":[{"label":"Auto","value":10,"type":"num"},{"label":"Llena","value":85,"type":"num"}],"payload":"","topic":"topic","topicType":"msg","className":"","x":870,"y":180,"wires":[["c7227362.74fb6"]]},{"id":"c7227362.74fb6","type":"function","z":"92979e93.f7e7d","name":"SoC Llena","func":"//var SOC85 = flow.get ('SOC85') || 0;\n\nflow.set ('SOC85', msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":870,"y":220,"wires":[[]]},{"id":"b5a59274.ca4dc","type":"ui_group","name":"Control","tab":"402daa81.d7ced4","order":7,"disp":true,"width":"6","collapse":true,"className":""},{"id":"118c40b3.3c7d6f","type":"ui_group","name":"Acciones","tab":"402daa81.d7ced4","order":8,"disp":true,"width":"6","collapse":false,"className":""},{"id":"402daa81.d7ced4","type":"ui_tab","name":"Casa","icon":"dashboard","disabled":false,"hidden":false}]
    Código:
    [{"id":"c1ecaac1.b7a748","type":"time-range-switch","z":"92979e93.f7e7d","name":"","lat":"42","lon":"12","startTime":"00:58","endTime":"07:00","startOffset":"","endOffset":"","x":350,"y":800,"wires":[["da718c30.d6595"],["eae2db66.a15f88"]]},{"id":"da718c30.d6595","type":"function","z":"92979e93.f7e7d","name":"SUB","func":"msg.payload=\"POP01\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":730,"y":780,"wires":[["79e7e41b.94da2c"]]},{"id":"cb7a5bb5.62c8f8","type":"function","z":"92979e93.f7e7d","name":"OSO","func":"msg.payload=\"PCP03\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":730,"y":740,"wires":[["54c1e2.5f6c4e2"]]},{"id":"3b97dabe.d70516","type":"link in","z":"92979e93.f7e7d","name":"Info SoC","links":["f9b11a5b.95b6a8"],"x":135,"y":880,"wires":[["c1ecaac1.b7a748","25eeb7c0.5f0388","382ae68d.510c2a","925b20ac.60893","d0cb0d3e.e711a","202ecb90.ee17e4","9a081cf.e068fe"]]},{"id":"25eeb7c0.5f0388","type":"time-range-switch","z":"92979e93.f7e7d","name":"","lat":"42","lon":"12","startTime":"10:00","endTime":"12:30","startOffset":"","endOffset":"","x":350,"y":920,"wires":[["decf9017.c3735"],[]]},{"id":"decf9017.c3735","type":"switch","z":"92979e93.f7e7d","name":"SoC ACS_80L","property":"payload.SOC","propertyType":"msg","rules":[{"t":"lt","v":"75","vt":"num"},{"t":"gt","v":"75","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":600,"y":940,"wires":[["c382bdc8.e200b"],["5396f701.554888"]]},{"id":"c382bdc8.e200b","type":"change","z":"92979e93.f7e7d","name":"OFF","rules":[{"t":"set","p":"payload","pt":"msg","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":830,"y":900,"wires":[["e769d292.a86fa"]]},{"id":"e769d292.a86fa","type":"link out","z":"92979e93.f7e7d","name":"Tuya ACS_80L","links":["bbfc364c.489108"],"x":1140,"y":1000,"wires":[],"l":true},{"id":"382ae68d.510c2a","type":"time-range-switch","z":"92979e93.f7e7d","name":"","lat":"42","lon":"12","startTime":"12:00","endTime":"17:00","startOffset":"","endOffset":"","x":350,"y":1040,"wires":[["ac772495.c73d58","d32daec4.db31c"],[]]},{"id":"ac772495.c73d58","type":"switch","z":"92979e93.f7e7d","name":"SoC ACS_200L","property":"payload.SOC","propertyType":"msg","rules":[{"t":"gt","v":"86","vt":"num"},{"t":"lte","v":"86","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":600,"y":1060,"wires":[["d614eeee.233cb"],["d552aa64.7f88e8"]]},{"id":"d552aa64.7f88e8","type":"change","z":"92979e93.f7e7d","name":"OFF","rules":[{"t":"set","p":"payload","pt":"msg","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":830,"y":1100,"wires":[["538c1e6e.f9aa2"]]},{"id":"538c1e6e.f9aa2","type":"link out","z":"92979e93.f7e7d","name":"Tuya ACS_200L","links":["3f7a0437.d1e95c"],"x":1140,"y":1040,"wires":[],"l":true},{"id":"925b20ac.60893","type":"time-range-switch","z":"92979e93.f7e7d","name":"","lat":"42","lon":"12","startTime":"17:00","endTime":"04:50","startOffset":"","endOffset":"","x":350,"y":960,"wires":[["4540d261.7a7bec"],[]]},{"id":"4540d261.7a7bec","type":"change","z":"92979e93.f7e7d","name":"OFF de todo el ACS","rules":[{"t":"set","p":"payload","pt":"msg","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":620,"y":1020,"wires":[["e769d292.a86fa","538c1e6e.f9aa2"]]},{"id":"5b2f462d.d67e78","type":"switch","z":"92979e93.f7e7d","name":"SOC Auto","property":"payload.SOC","propertyType":"msg","rules":[{"t":"gt","v":"Clouds_status","vt":"flow"},{"t":"lt","v":"Clouds_status","vt":"flow"}],"checkall":"true","repair":false,"outputs":2,"x":580,"y":640,"wires":[["7080fe21.da473"],["3aefb4e5.5c9b2c"]]},{"id":"7080fe21.da473","type":"function","z":"92979e93.f7e7d","name":"OSO","func":"msg.payload=\"PCP03\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":730,"y":620,"wires":[["54c1e2.5f6c4e2"]]},{"id":"3aefb4e5.5c9b2c","type":"function","z":"92979e93.f7e7d","name":"SNU","func":"msg.payload=\"PCP02\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":730,"y":660,"wires":[["54c1e2.5f6c4e2"]]},{"id":"eae2db66.a15f88","type":"switch","z":"92979e93.f7e7d","name":"Pri. por SOC","property":"payload.SOC","propertyType":"msg","rules":[{"t":"gt","v":"20","vt":"num"},{"t":"lt","v":"15","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":550,"y":840,"wires":[["28351fca.9335e"],["cf46f63a.1e4418"]]},{"id":"28351fca.9335e","type":"function","z":"92979e93.f7e7d","name":"SBU","func":"msg.payload=\"POP02\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":730,"y":820,"wires":[["79e7e41b.94da2c"]]},{"id":"cf46f63a.1e4418","type":"function","z":"92979e93.f7e7d","name":"SUB","func":"msg.payload=\"POP01\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":730,"y":860,"wires":[["79e7e41b.94da2c"]]},{"id":"d0cb0d3e.e711a","type":"debug","z":"92979e93.f7e7d","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":350,"y":880,"wires":[]},{"id":"79e7e41b.94da2c","type":"function","z":"92979e93.f7e7d","name":"Load Priority","func":"//var LoadPriority = global.get ('LoadPriority' || 0;\n\nglobal.set ('LoadPriority', msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":890,"y":820,"wires":[[]]},{"id":"54c1e2.5f6c4e2","type":"function","z":"92979e93.f7e7d","name":"Charge Priority","func":"//var ChargePriority = global.get ('ChargePriority' || 0;\n\nglobal.set ('ChargePriority', msg.payload);\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":900,"y":680,"wires":[[]]},{"id":"202ecb90.ee17e4","type":"time-range-switch","z":"92979e93.f7e7d","name":"","lat":"42","lon":"12","startTime":"01:00","endTime":"06:30","startOffset":"","endOffset":"","x":360,"y":740,"wires":[["ce0f23da.a4bae"],["cb7a5bb5.62c8f8"]]},{"id":"9a081cf.e068fe","type":"time-range-switch","z":"92979e93.f7e7d","name":"","lat":"42","lon":"12","startTime":"06:55","endTime":"09:59","startOffset":"","endOffset":"","x":350,"y":1000,"wires":[["4540d261.7a7bec"],[]]},{"id":"d32daec4.db31c","type":"switch","z":"92979e93.f7e7d","name":"SoC ACS_80L","property":"payload.SOC","propertyType":"msg","rules":[{"t":"lt","v":"90","vt":"num"},{"t":"gt","v":"90","vt":"num"}],"checkall":"true","repair":false,"outputs":2,"x":600,"y":980,"wires":[["c382bdc8.e200b"],["e74c53f7.eb10e"]]},{"id":"e74c53f7.eb10e","type":"change","z":"92979e93.f7e7d","name":"ON","rules":[{"t":"set","p":"payload","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":830,"y":980,"wires":[["e769d292.a86fa"]]},{"id":"9bb26083.6f19b","type":"time-range-switch","z":"92979e93.f7e7d","name":"","lat":"42","lon":"12","startTime":"05:00","endTime":"06:50","startOffset":"","endOffset":"","x":350,"y":1100,"wires":[["d833404.62b8ec"],[]]},{"id":"d833404.62b8ec","type":"change","z":"92979e93.f7e7d","name":"ON","rules":[{"t":"set","p":"payload","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":830,"y":1140,"wires":[["e769d292.a86fa"]]},{"id":"5f06519b.d6615","type":"link in","z":"92979e93.f7e7d","name":"Nuboso ACS","links":["97547251.5e202"],"x":135,"y":920,"wires":[["9bb26083.6f19b"]]},{"id":"ce0f23da.a4bae","type":"switch","z":"92979e93.f7e7d","name":"SOC85","property":"payload.SOC","propertyType":"msg","rules":[{"t":"gte","v":"SOC85","vt":"flow"},{"t":"lt","v":"SOC85","vt":"flow"}],"checkall":"true","repair":false,"outputs":2,"x":520,"y":700,"wires":[["5b2f462d.d67e78"],["71848eb0.21937"]]},{"id":"71848eb0.21937","type":"function","z":"92979e93.f7e7d","name":"SNU","func":"msg.payload=\"PCP02\"\nreturn msg;","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":730,"y":700,"wires":[["54c1e2.5f6c4e2"]]},{"id":"d614eeee.233cb","type":"switch","z":"92979e93.f7e7d","name":"Potencia Bateria","property":"payload.SOC","propertyType":"msg","rules":[{"t":"gte","v":"Bat_ACS200","vt":"flow"},{"t":"lt","v":"Bat_ACS200","vt":"flow"}],"checkall":"true","repair":false,"outputs":2,"x":840,"y":1060,"wires":[["538c1e6e.f9aa2"],["d552aa64.7f88e8"]]},{"id":"5396f701.554888","type":"switch","z":"92979e93.f7e7d","name":"SOC85","property":"payload.SOC","propertyType":"msg","rules":[{"t":"gte","v":"SOC85","vt":"flow"},{"t":"lt","v":"SOC85","vt":"flow"}],"checkall":"true","repair":false,"outputs":2,"x":840,"y":940,"wires":[["c5c72354.adb5f"],[]]},{"id":"c5c72354.adb5f","type":"switch","z":"92979e93.f7e7d","name":"Potencia Bateria","property":"payload.SOC","propertyType":"msg","rules":[{"t":"lt","v":"Bat_ACS80","vt":"flow"},{"t":"gte","v":"Bat_ACS80","vt":"flow"}],"checkall":"true","repair":false,"outputs":2,"x":1020,"y":940,"wires":[["c382bdc8.e200b"],["e769d292.a86fa"]]}]
    Os pongo una imagen del flujo:

    Tutorial Monitorización Voltronic MAX, Nodered, Grafana...-screenshot-2021-11-02-21.45.12.jpg

    AU, exactamente cómo querías montar el algoritmo de carga? Lo digo para mejorar el mío... Este lleva dos días funcionando! así como todo el tinglado...

  9. #159
    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 Cubano Ver mensaje
    Asl12, cómo metes los enchufes tuya a nodered? Porque el modo de tuya pide una clave que no sé de cómo conseguirla.
    Hola!

    Me ha costado un montón pero por torpeza... es un poco laborioso, te adjunto el enlace:

    https://github.com/codetheweb/tuyapi.../docs/SETUP.md

    Aquí están todos los pasos, hay que seguirlos, porque yo alguno me despistaba y luego no iba... pero leyéndolo uno a uno y haciéndolo paso a paso yo lo he hecho funcionar... Es un poco lioso pero inténtalo...

    Tutorial Monitorización Voltronic MAX, Nodered, Grafana...-screenshot-2021-11-02-22.23.28.jpg

    Todos en verde! me volví loco con las IPs... y era un replicador wifi el que me liaba todo...

  10. #160
    Cubano está desconectado Forero
    Fecha de ingreso
    sep 2021
    Mensajes
    87

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

    Muchas gracias asl12.

    Probé con ese mismo tutorial, pero es muy lioso, y utilizo el traductor de google, así que más lioso todavía. Hice la mitad de los pasos, pero lo vi demasiado complicado y desistí.

    He visto un video y parece más sencillo seguir los pasos. Un día de estos pruebo otra vez. Aunque una vez conseguido a ver luego como sigo, jajaj. Ya iremos aprendiendo.

    Un saludo.

  11. #161
    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...

    Me parece muy interesante, le echaré un ojo con detenimiento para comprender como estas estimando las cargas.
    En mi caso si te estás refiriendo al algoritmo de carga que uso actualmente, es muy sencillo, mis consumos son muy estables, prácticamente consumo siempre lo mismo, así que la variabilidad es mínima, solo realizo algún ajuste puntual, cuando se proveen días de lluvia por ejemplo. Incluso la mayoría de días nublados logros el objetivo de carga sin problemas, piensa que tengo unos 70 metros cuadrados de paneles, por poco que produzcan, tengo suficiente para las necesidades diarias normales. La regulación de carga es más por preservar las baterías que por realizar cargas de la red eléctrica en la medida justa, ya que nunca cargo de la red, hasta la fecha aún no me quede sin energía ni un solo día.

    Aun así, el sistema que estaba mirando, se trata de un algoritmo que realiza predicciones teniendo en cuenta datos de tu instalación concreta, datos meteo, y que es posible entrenar, esto último, por lo visto arroja unos resultados sorprendentes, pero aún no me puse con el asunto, tengo otras prioridades y esta por más interesante que me parece, la tengo relegada para un futuro próximo.

    PD
    En la medida de lo posible, es mejor no usar dispositivos tuya, son un dolor de cabeza, y siempre que exista una alternativa es preferible usar esta última. La razón es que tuya fabrica el mismo dispositivo para diferentes marcas, y en muchas ocasiones el mismo aparato aparentemente idéntico a uno le funciona y a otro no, es una lotería y un dolor de cabeza, aun con todo, hay quien los usa, yo prefiero usar alguna marca china o no que sepa que funciona con alguna seguridad.


    Saludos

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

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

    Vaya os dejo unos meses sueltos y montais la de Dios. jajajaja

    Hay una cosa que no he visto... bueno no la he visto por ningun sitio todavia y creo que seria muy bueno para este tipo de instalaciones.
    Yo casi tengo practicamente toda una instalacion con este sistema y es un salto cualitativo y cuantitativo muy importante.
    Me refiero a introducir los sistema vectoriales en los dashboards tanto para control como para monitoreo. Lo de las grafiquitas y relojitos esta muy bien pero hace falta algo mas real... que se pueda ver y tocar. Y ahi entran los vectoriales.

    En la plataforma nodered hay un nodo llamado SVG (Scalar Vectorial Graphic) que usado adecuadamente obtienes un dashboard de los que yo llamo de la cuarta revolucion industrial en IoT que es ni mas ni menos que digitalizar los equipos que componen la instalacion.

    La instalacion total esta basada en un diagrama de cableado, es decir, algo como esto:

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

    Ahora imaginad que los componentes, los wires, los leds, los interruptores, etc de ese diagrama fueran interactivos, es decir, se comportaran segun estan pasando las cosas en la instalacion y que con un click en alguno de ellos (o menu contextual) pudieras entrar en otra pantalla para ver en detalle o ajustar lo que fuera de ese. componente en concreto.
    Por ejemplo en un MAX se podria mostrar en dashboard la barra led tal cual esta manifestandose realmente. O incluso mostrar la pantalla del display digitalizada tal cual se ve realmente.
    Esto solo se puede hacer en entornos vectoriales con ficheros svg en donde cada forma representada es punterable y por tanto asignable un valor o funcion.
    En una foto svg no hay mapeo de bits como en una foto con pixeles. Los que hayan trabajado en diseño vectorial con Illustrator y similares saben de lo que hablo. Eso implica trabajar con ficheros muy livianos (es texto puro y duro) para representar los componentes de una instalacion en donde no hay perdida de resolucion como ocurre con fotos con pixeles a la hora de ampliar.

    La idea de monitorizacion es:

    1.- Mostrar al completo toda la instalacion con sus componentes tal cual se ven en realidad, leds encendiendose, apagandose y animaciones varias para que de un vistazo rapido veas que todo funciona con normalidad. Por supuesto si hay algun error o falla grave en ese dashboard de la instalacion completa debe mostrarse para que se vea donde esta el fallo, que es y porque ha ocurrido, todo en tiempo real. Un diagrama de cableado completo mostrando las potencias por ejemplo que circulan por los cables en tiempo real y con colorines de verde a rojo segun potencia circulante en el cable seria ideal para ver como esta funcionando todo... por ejemplo...
    Y si hablara ya seria ciencia ficcion.... o quizas no...

    2.- Clickeando cualquier punto o componente del dashboard de la instalacion completa que nos active lo que haga o que nos lleve a otras pantallas (otros svg por ejemplo) para mostrar mas detalles de lo seleccionado: relojitos, graficas, etc. que obviamente no se ven en el dashboard principal de la instalacion completa.


    Como lo veis???
    Pues que sepais que todo esto se puede hacer con la plataforma nodered.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  13. #163
    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...

    Hombre Tejota, me alegro de verte por aquí de nuevo .... que sepas que parte de la culpa de este lío, la tienes tú ¡¡¡ ;-)

    Sobre los svg, si lo conocía, de hecho tengo una representación de un inversor y sus correspondientes flujos de energía entre la batería y la casa, como poder hacerse es completamente posible, y no funciona nada mal, permite hacer representaciones muy funcionales, incluso interacción con botones o zonas calientes etc... pero , es muy laborioso. Inicialmente, tenía pensado hacer una interfaz virtual del display del MAx, pero es bastante trabajo. Pero sin duda para una representación general de funcionamiento es ideal. Lo mismo algun dia me animo y retoma el tema ¡¡¡

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

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

    Cita Iniciado por Au-PRX Ver mensaje
    Hombre Tejota, me alegro de verte por aquí de nuevo .... que sepas que parte de la culpa de este lío, la tienes tú ¡¡¡ ;-)

    Sobre los svg, si lo conocía, de hecho tengo una representación de un inversor y sus correspondientes flujos de energía entre la batería y la casa, como poder hacerse es completamente posible, y no funciona nada mal, permite hacer representaciones muy funcionales, incluso interacción con botones o zonas calientes etc... pero , es muy laborioso. Inicialmente, tenía pensado hacer una interfaz virtual del display del MAx, pero es bastante trabajo. Pero sin duda para una representación general de funcionamiento es ideal. Lo mismo algun dia me animo y retoma el tema ¡¡¡
    Tutorial Monitorización Voltronic MAX, Nodered, Grafana...-cosas.jpg

    Bueno, todo es ponerse....
    Notese lo "rusientes" q se ponen las placas cuando estan produciendo "fuerte".
    En los svg todo es susceptible de monitorizarse. La barra led la estoy codificando...a ver que sale.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

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

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

    Aunque quizas para vectoriales habria que usar un hilo nuevo ya que es un Universo aparte. Estamos hablando de interaccionar con la instalacion a niveles micro y macro. Y la interaccion puede ser de muy simple a todo lo compleja que queramos.

    Yo los niveles que estoy manejando es de potencias en wires de toda la instalacion con colores verdes para poca potencia y rulando a rojo para potencias maximas pasando por todo el gradiente verde-rojo. Esa seria la pantalla principal de la monitorizacion y control.

    Los leds de los equipos pues el color real segun la funcion que hagan. Eso no es muy dificil.
    Interruptores todavia no he metido ninguno con ningun rele pero tampoco es dificil a nivel evento.

    Lo que si he hecho es en la pantalla principal donde esta toda la instalacion con sus wires es poner eventos UI-CONTROL doble click en las partes de los equipos. Por ejemplo, si pico dos veces en el display del MAX entro en una pantalla de cambio de parametros desde el 1 hasta el ultimo. Si pico dos veces en una placa solar de uno de los campos entro a otra pantalla donde estan graficos, producciones, voltajes de placa, etc, o sea todo lo referente al campo solar. Si pico dos veces en una pylontech entro a los valores y graficos de esa unidad pylontech exclusivamente.

    Es decir, el diagrama de cableado con sus potencias de toda la instalacion es la pantalla principal y de ahi te vas a la parte de la instalacion que quieras ver mas en detalle.
    Tambien puedes meter unos botones de infos relevantes en la pantalla principal como datos globales de produccion total, consumo total, etc q tambien podrian linkarse a pantallas mas especificas con datos mas concretos de esas referencias.

    No se, es otra forma de ver una monitorizacion mucho mas real e intuitiva y al ser svg la pantalla principal el peso es ridiculo porque es todo texto pudiendo manejar esas pantallas por las Rpi sin problemas.

    Tengo SVGeado un MAX con sus dimensiones reales, desde los conectores MC4, hasta el display al minimo detalle, con sus IDs bien claritas y punterables. Lo que se ve dentro del display no.... eso lleva abundante dedicacion.

    Una US2000c tambien svgeada, los voltronics de segunda generacion (5048 y V2) con su display tambien svgeados... estos no son muy complicados.
    Una svgs de torres de alta para la red, y unos svgs de electrodomesticos para las cargas.
    Unos medidores de SOC para baterias tanto horizontales como verticales por niveles de 0 a 100 y colorines segun SOC, esto son diseño propio ya que no encontre nada parecido por los mundos svg.

    Por cierto me encontre un inversor Victron a dimension real svgeado por la red....o sea que alguien ha hecho cositas por ahi.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  16. #166
    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...

    Sin duda creo que este tema da para un hilo propio, de hecho abarca más de lo que parece, pues la representación gráfica, es un campo algo alejado en principio de los temas habituales del foro, y hay que empaparse del manejo de algunos programas para poder sacar el máximo partido a esta posibilidad.

    En su día estuve indagando un poco sobre toda en las posibilidades y hasta donde se puede llegar con esta herramienta, y encuentre que es posible hacer casi cualquier cosa que te plantees, es solo cuestión de dedicación y tiempo, se pueden representar incluso movimiento de flujo de energía intermitencias cambios de color y casi lo que se quiera.


    Pienso que hay dos formas de enfocar el asunto.
    Una ,llamémosla realista, que persigue una aproximación más parecida a la vista directa de los equipos, puede que más adecuada para el acceso a la instalación del resto de la familia ¡¡¡¡ ;D

    Y otra más sinóptica, o industrial , donde se representan los sistemas de manera menos realista, de modo conveniente para poder representar visualmente información y relaciones con diferentes elementos dinámica y más completamente que empleando relojes .

    También es posible hacer una mezcla de las dos, claro.

    Adjunto una imagen de las pruebas que realice, lo único destacable es el movimiento del flujo que acelera o se ralentiza en relación con el amperaje que trasporta, y cambia de dirección con la de la energía. El formato está adaptado para ser visionado en un teléfono. La posibilidad de orientar horizontal o verticalmente los números también da más juego que en otras representaciones.


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


    Algo interesante podría ser ir haciendo una pequeña biblioteca de gráficos para poder montar paneles de diferentes tipos.

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

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

    Cita Iniciado por Au-PRX Ver mensaje
    Sin duda creo que este tema da para un hilo propio, de hecho abarca más de lo que parece, pues la representación gráfica, es un campo algo alejado en principio de los temas habituales del foro, y hay que empaparse del manejo de algunos programas para poder sacar el máximo partido a esta posibilidad.

    En su día estuve indagando un poco sobre toda en las posibilidades y hasta donde se puede llegar con esta herramienta, y encuentre que es posible hacer casi cualquier cosa que te plantees, es solo cuestión de dedicación y tiempo, se pueden representar incluso movimiento de flujo de energía intermitencias cambios de color y casi lo que se quiera.


    Pienso que hay dos formas de enfocar el asunto.
    Una ,llamémosla realista, que persigue una aproximación más parecida a la vista directa de los equipos, puede que más adecuada para el acceso a la instalación del resto de la familia ¡¡¡¡ ;D

    Y otra más sinóptica, o industrial , donde se representan los sistemas de manera menos realista, de modo conveniente para poder representar visualmente información y relaciones con diferentes elementos dinámica y más completamente que empleando relojes .

    También es posible hacer una mezcla de las dos, claro.

    Adjunto una imagen de las pruebas que realice, lo único destacable es el movimiento del flujo que acelera o se ralentiza en relación con el amperaje que trasporta, y cambia de dirección con la de la energía. El formato está adaptado para ser visionado en un teléfono. La posibilidad de orientar horizontal o verticalmente los números también da más juego que en otras representaciones.


    Pulsa en la imagen para verla en tamaño completo

Nombre: pantalla.jpg
Visitas: 43
Tamaño: 14,1 KB
ID: 27361


    Algo interesante podría ser ir haciendo una pequeña biblioteca de gráficos para poder montar paneles de diferentes tipos.
    Pero en esa pantalla no has usado el nodo SVG no?
    Ese nodo es relativamente de hace poco https://flows.nodered.org/node/node-red-contrib-ui-svg
    No estan soportados todos los comandos para atacar un css pero si la mayoria. Por ejemplo las animaciones no estan soportadas de forma nativa, hay que inicializarlas en el nodo de forma individualizada. Styles, attributes texto etc si modifican directamente el svg.
    Despues ese nodo hay expresiones de atributo de estilo que no las reconoce y hay que cambiarlas por elemento de estilo. El autor ya lo ha señalado pero eso implica revisar los svg importados de la red y corregir ese problema ya que de lo contrario habra rellenos de otro color, concretamente del background por defecto.

    Animaciones como tal no estoy usando ya que implica doble trabajo. Queda muy bonito pero hay que picar mucho codigo. Eso ya lo dejo para los "pros".

    En cambio los cambios de colores si que lo veo muy interesante ya que el ojo humano percibe muy rapidamente un cambio de color brusco en un diagrama amplio. Y cuando hay cambios bruscos de colores es que hay cambios importantes en la instalacion.

    Cuantas veces se ha dicho, todo en verde.... eso indica que la cosa esta bien y sin "stress". En cuanto hay cosas rojas parpadeando, hay problemas o la instalacion esta entrando en "stress". Y si se ve que partes son las stressadas mucho mejor, sobre todo si puedes picar sobre ellas y ver que esta pasando con mas detalle.

    Que aparezcan y desaparezcan cosas es tambien interesante en el sentido de que por ejemplo si no hay Sol, las placas desaparecen de la pantalla. Idem si no hay red, la torre electrica que simboliza la red desaparece. O si no hay cargas, desaparecen los svgs q representan las cargas acoutput (neveras, bombillas, etc).
    El cambio de direccion de flujos en los wires de bateria son indiscutibles, yo lo hago con flechas segun direccion de la potencia q va por esos wires. Y si la potencia es cero, el wire desaparece integramente. TAmbien para wires de 230V exportada o importada.

    Creo que tendre que sacar un video en donde se vea con todo lujo de detalles esto. Pero el Spielberg me ha dicho que no tiene presupuesto para mi pelicula. xD

    Por cierto, no estoy usando el editor svg del nodo. Lo veo muy cutre. Tampoco illustrator ni lnkscape... son demasiado para estos graficos. Estoy usando un editor svg muy liviano https://boxy-svg.com/ . El svg resultante lo vuelco (es un archivo de texto) directamente en el nodo svg en la pestaña svg y asi carga perfectamente y sin errores.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  18. #168
    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 Tejota Ver mensaje
    Pero en esa pantalla no has usado el nodo SVG no?
    Ese nodo es relativamente de hace poco https://flows.nodered.org/node/node-red-contrib-ui-svg
    No estan soportados todos los comandos para atacar un css pero si la mayoria. Por ejemplo las animaciones no estan soportadas de forma nativa, hay que inicializarlas en el nodo de forma individualizada. Styles, attributes texto etc si modifican directamente el svg.
    Despues ese nodo hay expresiones de atributo de estilo que no las reconoce y hay que cambiarlas por elemento de estilo. El autor ya lo ha señalado pero eso implica revisar los svg importados de la red y corregir ese problema ya que de lo contrario habra rellenos de otro color, concretamente del background por defecto.

    Animaciones como tal no estoy usando ya que implica doble trabajo. Queda muy bonito pero hay que picar mucho codigo. Eso ya lo dejo para los "pros".

    En cambio los cambios de colores si que lo veo muy interesante ya que el ojo humano percibe muy rapidamente un cambio de color brusco en un diagrama amplio. Y cuando hay cambios bruscos de colores es que hay cambios importantes en la instalacion.

    Cuantas veces se ha dicho, todo en verde.... eso indica que la cosa esta bien y sin "stress". En cuanto hay cosas rojas parpadeando, hay problemas o la instalacion esta entrando en "stress". Y si se ve que partes son las stressadas mucho mejor, sobre todo si puedes picar sobre ellas y ver que esta pasando con mas detalle.

    Que aparezcan y desaparezcan cosas es tambien interesante en el sentido de que por ejemplo si no hay Sol, las placas desaparecen de la pantalla. Idem si no hay red, la torre electrica que simboliza la red desaparece. O si no hay cargas, desaparecen los svgs q representan las cargas acoutput (neveras, bombillas, etc).
    El cambio de direccion de flujos en los wires de bateria son indiscutibles, yo lo hago con flechas segun direccion de la potencia q va por esos wires. Y si la potencia es cero, el wire desaparece integramente. TAmbien para wires de 230V exportada o importada.

    Creo que tendre que sacar un video en donde se vea con todo lujo de detalles esto. Pero el Spielberg me ha dicho que no tiene presupuesto para mi pelicula. xD

    Por cierto, no estoy usando el editor svg del nodo. Lo veo muy cutre. Tampoco illustrator ni lnkscape... son demasiado para estos graficos. Estoy usando un editor svg muy liviano https://boxy-svg.com/ . El svg resultante lo vuelco (es un archivo de texto) directamente en el nodo svg en la pestaña svg y asi carga perfectamente y sin errores.



    Claro que estoy usando el nodo SVG... si no la cosa no tendría sentido ...
    El tema de las técnicas para hacer notar un cambio o una condición de determinado elemento, como bien dices, puede ser simplemente con indicaciones de color y dirección, se trata de encontrar la forma de trasmitir la información con un esfuerzo técnico adecuado... que tampoco estamos haciendo la capilla sixtina. Yo también descarte él meto de animación que soporta el SVG, por la misma razón que tú , pero no abandone la idea e intente una aproximación diferente, utilizar gif, y funciono, no es tan potente, pero se puede utilizar sin tantas complicaciones.
    Yo tampoco uso el editor del nodo, empleo editores gráficos de toda la vida, Photoshop y Corel , después copio el resultado al nodo... creo que es la manera más fácil de trabajar con SVG y este nodo.


    PD
    Lo de publicar video me parece muy didáctico... pero me da una pereza tremenda... tengo que ver como capturo y edito después... etc No lo tengo en mi rutina habitual, y me supone mucho tiempo... pero puede que si termino haciendo algo que merezca la pena me anime ...


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

    Creoq ue es el mismo nodo ¡¡

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

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

    Si es el mismo.
    Yo estoy usando como te dije el boxy-svg.
    Un odysee rapidito de una de las instalaciones q tengo dentro de otra mas grande pero creo que se ve la potencia del svg a la hora de interaccionar con cualquier variable del entorno.
    No hay sonido... lo he grabado hace un momento pero es mas o menos como son los svg q estoy usando y como los edito con el boxy. Se ven claramente las IDs y las classes segun convengan. Y bueno, cuando haces un zoom, la calidad es full-equip como no podia ser de otra forma en los vectoriales.

    https://odysee.com/@Rincon_de_Tejota...oZyL7pvDvriqoM

    En los wires que unen los dispositivos meto un text numerico con la potencia, un fill, visibilidad, strokes, etc segun esten pasando las cosas. Las flechas aparecen o desaparecen segun la direccion de la potencia. La torre de alta se pone de colores segun lo que chupes de la red o viertas a la red. El medidor de SOC va de rojo a verde segun se van cargando o descargando las baterias con indicacion del valor de SOC en los cuadraditos respectivos.
    Una vez tienes el svg totalmente definido ya puedes ir metiendo ahi los eventos como quieras segun esten pasando en la instalacion.
    La verdad es que puedes hacer lo que quieras segun el tiempo que estes dispuesto a gastar picando codigo.
    El nodo svg, en si, solo lo edito para los eventos para usar UI-CONTROL y para cargar el svg de todo el mapa. De momento ni animaciones, ni scripts.

    Uso msg inputs para todos los datos y conversiones a traves de nodos funcion. Aparte de los datos del inversor, meto datos de un SDM230 en la acinput y los datos que vienen de las pylontech desde su bms. Todo entra via msg.inputs con las conversiones adecuadadas para que el nodo svg interprete todo y lo represente en el dashboard.

    Un video explicativo de todo esto podria tener metrajes de largo (horas). Si se hace corto la gente de base no lo entendera.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

  20. #170
    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 también soy de la opinión que hoy por hoy , en nodered, si necesitas una representación gráfica más ... personalizada o industrial, que con indicadores específicos, incluso con procedimientos o maniobras, el camino es este.
    El único, pero, es el que ya sabemos, tiempo , se necesita una buena planificación, porque cualquier cambio de idea, puede suponer horas de trabajo. Yo cuando dispongo de algo de tiempo, le dedicaré algún rato más, y veremos que capaz de hacer....
    Saludos ¡¡

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

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

    Cita Iniciado por Au-PRX Ver mensaje
    Yo también soy de la opinión que hoy por hoy , en nodered, si necesitas una representación gráfica más ... personalizada o industrial, que con indicadores específicos, incluso con procedimientos o maniobras, el camino es este.
    El único, pero, es el que ya sabemos, tiempo , se necesita una buena planificación, porque cualquier cambio de idea, puede suponer horas de trabajo. Yo cuando dispongo de algo de tiempo, le dedicaré algún rato más, y veremos que capaz de hacer....
    Saludos ¡¡
    El tiempo es oro. Yo ya llevo perdidas muchas horas de sueño, mas de las normales. Y es que me meto en unos jardines... Tengo vectorizado practicamente el 70% de este monstruo:



    El svg ocupa 2,3M. Texto legible, nada de importaciones de png ni nada. Esta modularizado al maximo de tal forma que pueden quitarse y ponerse partes completas. Las partes comunes son en algunos casos baterias y en todas la red de entrada, logicamente. Pero cada wire y cada flecha interactua con los datos entrantes al svg. Los inversores interactuan segun pasan cosas y entran datos. Las baterias idem. Todo se manifiesta segun los datos que le entran al svg de todos los dispositivos y cosas. Parece que esta vivo. Cada dispositivo (inversor, bateria, redelectrica, cargas, campo solar, etc) es clickeable y entras en pantallas secundarias para ajustes y detalles que en la pantalla principal no entrarian.

    Esta es la potencia de la plataforma NODE RED pese a quien le pese. Yo ya vi el potencial hace unos años y aposte por ella. Los resultados son mas que evidentes.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

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

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

    Esta es solo mi opinion, es realmente nodered efectivo? yo lo he intentado usar varias veces ya y he acabado descartandolo. Para programas en general con python obtengo muchos mejores resultados. Si quireo hacer interfaces con pyqt5 tengo mucho mejores resultados. Para interfaces web en python hay decenas de frameworks.

    El problema que suelo tener con nodered es que me encuentro muchas paredes en cosas que quiero hacer que son sencillas para las que tengo que implementar soluciones realmente complicadas que no tendria que hacer con otros sistemas. Es como que gano mucho tiempo haciendo algunas cosas pero pierdo demasiado en otras.

    Un ejemplo es este, hay maneras en la que tu creas un canvas en las que metes cada elemento con coordenadas, dibujas con coordenadas y puedes ir actualizando todo lo que hay en el canvas con numeros y movimientos. Yo hago esas cosas a veces para el trabajo y no me llevan demasiado tiempo. Es un poco lo mismo que haceis ahi pero con lenguage mucho mas comodo y con un live update mucho mas eficiente. Admiro mucho vuestro trabajo por que haciendolo asi lleva mucho curro.
    Diseñador de curvas solares y equivalente electrico usando los datos tecnicos del panel: http://solarpanelsimulator.bitballoon.com/

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

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

    Cita Iniciado por Pidjey Ver mensaje
    Esta es solo mi opinion, es realmente nodered efectivo? yo lo he intentado usar varias veces ya y he acabado descartandolo. Para programas en general con python obtengo muchos mejores resultados. Si quireo hacer interfaces con pyqt5 tengo mucho mejores resultados. Para interfaces web en python hay decenas de frameworks.

    El problema que suelo tener con nodered es que me encuentro muchas paredes en cosas que quiero hacer que son sencillas para las que tengo que implementar soluciones realmente complicadas que no tendria que hacer con otros sistemas. Es como que gano mucho tiempo haciendo algunas cosas pero pierdo demasiado en otras.

    Un ejemplo es este, hay maneras en la que tu creas un canvas en las que metes cada elemento con coordenadas, dibujas con coordenadas y puedes ir actualizando todo lo que hay en el canvas con numeros y movimientos. Yo hago esas cosas a veces para el trabajo y no me llevan demasiado tiempo. Es un poco lo mismo que haceis ahi pero con lenguage mucho mas comodo y con un live update mucho mas eficiente. Admiro mucho vuestro trabajo por que haciendolo asi lleva mucho curro.
    Eso es porque python es tu "lenguaje materno".
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

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

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

    Cita Iniciado por Tejota Ver mensaje
    Eso es porque python es tu "lenguaje materno".
    En realidad no. Ni siquiera es un lenguaje que me guste. Mi lenguaje favorito i en el que empleo el 80% del tiempo por mi trabajo es C. Simplemente para ese tipo de aplicaciones python me da un buen balance esfuerzo/resultado en comparacion con otros lenguajes. Hay aplicaciones que no usaria python ni loco.
    Diseñador de curvas solares y equivalente electrico usando los datos tecnicos del panel: http://solarpanelsimulator.bitballoon.com/

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

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

    Cita Iniciado por Pidjey Ver mensaje
    En realidad no. Ni siquiera es un lenguaje que me guste. Mi lenguaje favorito i en el que empleo el 80% del tiempo por mi trabajo es C. Simplemente para ese tipo de aplicaciones python me da un buen balance esfuerzo/resultado en comparacion con otros lenguajes. Hay aplicaciones que no usaria python ni loco.
    Para representacion de datos en tiempo real, python necesita de interfaces y traductores. NODE RED es javascript puro y duro, es decir, es un servidor web nativo donde los datos fluyen en tiempo real directamente al servidor web sin interfaces ni conversores ni nada.
    Una instalacion de este tipo dispone en tiempo real de muchos datos y si hay que procesarlos todos con terceros programas (interfaces) puede que la Rpi se venga abajo o necesites de varias.

    En ese tipo de instalacion estoy usando dos Rpi y eso que es NODE RED. Una para recolectar los datos de todos los dispositivos y almacenarlos en influxdb2 y la otra Rpi solo para mostrarlos e interactuar con la instalacion.
    Yo creo que cada lenguaje es para un uso determinado. Lo que pasa que la gente eso de hablar muchos idiomas pues es complicado y van a lo facil y a lo primero que aprendieron en la "escuela" es decir Python.
    NODERED y el Autoconsumo Fotovoltaico
    NO RESPONDO PREGUNTAS TECNICAS POR PRIVADO. SOLO EN FORO PUBLICO, asi sirve para todos.

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