I'm looking for help with my project

The only thing in the flow you provided is a chart node. How do you want to add a chart to Steve's flow? What data do you want to chart?

L'unica cosa nel flusso che hai fornito è un nodo grafico. Come vuoi aggiungere un grafico al flusso di Steve? Quali dati vuoi tracciare?


When I try to import this code it makes me an error
Why?

This dashboard is complete and working. I'd like to add this to Steve but I can't for this problem.

can you copy the text of the error message and go to https://translate.google.com and provide the english translation

puoi copiare il testo del messaggio di errore e andare su https://translate.google.com e fornire la traduzione in inglese

Now I will explain my situation from the beginning for clarity. I have already created a dashboard with a chart and a switch that allow me to monitor the LED, all working. To this project completed with ease I would like to add something difficult. A timer that allows the user to schedule the time of turning the LED on and off. The one Steve shared is perfect for what I'm looking for. When I try to copy the code entered by him in the link at the top, it will give me an error: "Error: Input not a JSON Array". Now I'm looking for a nice person to help me to the end since I'd like to finish this project.

If you are getting "Error: Input not a JSON Array" then you probably did not copy the entire flow. You should be able to press the copy button at the top right of the flow or by selecting the entire flow with your mouse. Here is another coy you can try using

Se viene visualizzato il messaggio "Errore: input non un array JSON", probabilmente non è stato copiato l'intero flusso. Dovresti essere in grado di premere il pulsante Copia in alto a destra del flusso o selezionando l'intero flusso con il mouse. Ecco un altro timido che puoi provare a usare

[{"id":"45244920.3a9a58","type":"ui_text","z":"67b3dea3.cc212","group":"c3f194d9.93ecd8","order":1,"width":"16","height":"2","name":"CRON Description","label":"Expression Description (updates as you type)...","format":"{{msg.payload.result.description}}","layout":"col-center","x":750,"y":380,"wires":[]},{"id":"f15b83a7.a6af","type":"comment","z":"67b3dea3.cc212","name":"Demonstrating fixes times as schedule","info":"","x":170,"y":40,"wires":[]},{"id":"b7865408.3c0318","type":"cronplus","z":"67b3dea3.cc212","name":"Fixed dates and CRON","outputField":"payload","timeZone":"","options":[{"topic":"fixed dates","payload":"fixed","type":"str","expression":"1609459200000, 2021-12-31 00:00, 2022-12-31 08:00 GMT+8"},{"topic":"cron","payload":"lunch time","type":"str","expression":"0 0 12 * * * 2021-2061"}],"x":390,"y":160,"wires":[["e7fc4742.5b6af8"]]},{"id":"e7fc4742.5b6af8","type":"debug","z":"67b3dea3.cc212","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":590,"y":160,"wires":[]},{"id":"206014e1.13ff2c","type":"inject","z":"67b3dea3.cc212","name":"Get status-all","topic":"","payload":"{     \"command\": \"status-all\" }","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":110,"y":160,"wires":[["b7865408.3c0318"]]},{"id":"356fb7e6.b19f48","type":"inject","z":"67b3dea3.cc212","name":"Add a 2 fixed time entries, 30 sec and 1 min from now","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":240,"y":80,"wires":[["570b9484.b16e7c"]]},{"id":"570b9484.b16e7c","type":"function","z":"67b3dea3.cc212","name":"create payload to add 2 dates","func":"let nowPlus30s = (new Date()).addSeconds(30);\nlet nowPlus1min = (new Date()).addSeconds(60);\nmsg.payload = {\n    \"command\":\"add\",\n    \"name\":\"dynamic date sequence\",\n    \"expression\" : [nowPlus30s, nowPlus1min],\n    \"payload\":\"dynamic\",\n    \"type\":\"str\"\n}\nreturn msg;","outputs":1,"noerr":0,"x":250,"y":120,"wires":[["b7865408.3c0318"]]},{"id":"88c28bd5.c47098","type":"cronplus","z":"67b3dea3.cc212","name":"","outputField":"payload","timeZone":"","options":[],"x":460,"y":380,"wires":[["45244920.3a9a58"]]},{"id":"9cd1a086.94ce8","type":"function","z":"67b3dea3.cc212","name":"describe cmd","func":"msg.payload = {\n    \"command\": \"describe\",\n    \"expression\": msg.payload\n}\nreturn msg;","outputs":1,"noerr":0,"x":270,"y":380,"wires":[["88c28bd5.c47098"]]},{"id":"987471e.3ae719","type":"change","z":"67b3dea3.cc212","name":"","rules":[{"t":"set","p":"ui_add_schedule_name","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":330,"y":260,"wires":[[]]},{"id":"e361f76a.5874f8","type":"change","z":"67b3dea3.cc212","name":"","rules":[{"t":"set","p":"ui_add_schedule_payload","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":340,"y":300,"wires":[[]]},{"id":"bfc8a8aa.9d1278","type":"change","z":"67b3dea3.cc212","name":"","rules":[{"t":"set","p":"ui_add_schedule_expression","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":350,"y":340,"wires":[[]]},{"id":"1b154c90.5d6513","type":"change","z":"67b3dea3.cc212","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{}","tot":"json"},{"t":"set","p":"payload.payload","pt":"msg","to":"ui_add_schedule_payload","tot":"flow"},{"t":"set","p":"payload.name","pt":"msg","to":"ui_add_schedule_name","tot":"flow"},{"t":"set","p":"payload.expression","pt":"msg","to":"ui_add_schedule_expression","tot":"flow"},{"t":"set","p":"payload.command","pt":"msg","to":"add","tot":"str"},{"t":"set","p":"payload.type","pt":"msg","to":"str","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":280,"y":460,"wires":[["bc8bdc30.f0491","a06f450d.517748"]]},{"id":"bc8bdc30.f0491","type":"cronplus","z":"67b3dea3.cc212","name":"","outputField":"payload","timeZone":"","options":[],"x":620,"y":460,"wires":[["b5f89b28.b166b8"]]},{"id":"9d40f876.1f3558","type":"ui_toast","z":"67b3dea3.cc212","position":"top right","displayTime":"3","highlight":"","sendall":true,"outputs":0,"ok":"OK","cancel":"","topic":"","name":"","x":570,"y":540,"wires":[]},{"id":"b5f89b28.b166b8","type":"switch","z":"67b3dea3.cc212","name":"1=Cron Event   2=List Results ","property":"cronplus.triggerTimestamp","propertyType":"msg","rules":[{"t":"nnull"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":300,"y":560,"wires":[["9d40f876.1f3558"],["258f9405.a704fc"]]},{"id":"dd697beb.c4b008","type":"catch","z":"67b3dea3.cc212","name":"","scope":null,"uncaught":false,"x":80,"y":680,"wires":[["b2f937b5.1eccd8","fd2d5791.feefd8"]]},{"id":"b2f937b5.1eccd8","type":"ui_toast","z":"67b3dea3.cc212","position":"top right","displayTime":"3","highlight":"red","outputs":0,"ok":"OK","cancel":"","topic":"Error...","name":"","x":290,"y":680,"wires":[]},{"id":"a06f450d.517748","type":"ui_button","z":"67b3dea3.cc212","name":"Refresh","group":"c3f194d9.93ecd8","order":6,"width":"1","height":"1","passthru":true,"label":"","tooltip":"Get status of jobs","color":"","bgcolor":"","icon":"fa-refresh","payload":"{\"command\":\"list-all\"}","payloadType":"json","topic":"","x":460,"y":480,"wires":[["bc8bdc30.f0491"]]},{"id":"2f564fab.37bae","type":"ui_text_input","z":"67b3dea3.cc212","name":"","label":"Expression","tooltip":"CRON expression or date/csv list of dates","group":"c3f194d9.93ecd8","order":3,"width":"4","height":"1","passthru":true,"mode":"text","delay":"100","topic":"","x":90,"y":340,"wires":[["9cd1a086.94ce8","bfc8a8aa.9d1278"]]},{"id":"3f3d2695.841bda","type":"ui_text_input","z":"67b3dea3.cc212","name":"","label":"Name","tooltip":"Schedule Name","group":"c3f194d9.93ecd8","order":2,"width":"4","height":"1","passthru":true,"mode":"text","delay":"100","topic":"","x":70,"y":260,"wires":[["987471e.3ae719"]]},{"id":"6cdb60f9.f3289","type":"ui_button","z":"67b3dea3.cc212","name":"","group":"c3f194d9.93ecd8","order":5,"width":"3","height":"1","passthru":false,"label":"Add","tooltip":"Add or update named schedule","color":"","bgcolor":"","icon":"send","payload":"","payloadType":"str","topic":"","x":70,"y":460,"wires":[["1b154c90.5d6513"]]},{"id":"953c0f8e.1f84","type":"ui_text_input","z":"67b3dea3.cc212","name":"","label":"Payload","tooltip":"Payload to send when schedule fires","group":"c3f194d9.93ecd8","order":4,"width":"4","height":"1","passthru":true,"mode":"text","delay":"100","topic":"","x":80,"y":300,"wires":[["e361f76a.5874f8"]]},{"id":"8006cf83.90142","type":"ui_template","z":"67b3dea3.cc212","group":"c3f194d9.93ecd8","name":"","order":7,"width":"16","height":"5","format":"<style type=\"text/css\">\n.t1  {border-collapse:collapse;border-spacing:0;border-color:#ccc;}\n.t1 td{font-family:Arial, sans-serif;font-size:14px;padding:8px 3px;border-style:solid;border-width:0px;overflow:hidden;word-break:normal;border-top-width:1px;border-bottom-width:1px;border-color:#ccc;color:#333;background-color:#fff;}\n.t1 th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#ccc;color:#333;background-color:#f0f0f0;}\n.t1 .t1-36r9{background-color:#000000;color:#ffffff;text-align:left;vertical-align:top}\n.t1 .t1-x2zo{background-color:#c0c0c0;font-size:small;text-align:left;vertical-align:top}\n.t1 .t1-o73e{background-color:#c0c0c0;font-size:small;text-align:center;vertical-align:top}\n.t1 .t1-5qt9{font-size:small;text-align:left;vertical-align:top}\n.t1 .t1-5qta{font-size:small;text-align:center;vertical-align:middle}\n</style>\n<table class=\"t1\">\n  <tr>\n    <th class=\"t1-36r9\" colspan=\"9\">CRON Schedules</th>\n  </tr>\n  <tr>\n    <td class=\"t1-x2zo\">Name</td>\n    <td class=\"t1-x2zo\">Expression</td>\n    <td class=\"t1-x2zo\">Payload</td>\n    <td class=\"t1-x2zo\">Description</td>\n    <td class=\"t1-x2zo\">Next run</td>\n    <td class=\"t1-x2zo\">State</td>\n    <td class=\"t1-o73e\">Delete</td>\n    <td class=\"t1-o73e\">Pause</td>\n    <td class=\"t1-o73e\">Resume</td>\n  </tr>\n  <tr  ng-repeat=\"item in msg.payload\">\n    <td class=\"t1-5qt9\">{{item.config.name}}</td>\n    <td class=\"t1-5qt9\" style=\"white-space: nowrap\" nowrap>{{item.config.expression}}</td>\n    <td class=\"t1-5qt9\">{{item.config.payload}}</td>\n    <td class=\"t1-5qt9\">{{item.status.description}}</td>\n    <td class=\"t1-5qt9\">{{item.status.nextDescription}}</td>\n    <td class=\"t1-5qta\"><i class=\"fa fa-{{item.status.isRunning ? 'play' : 'pause'}}\"> </i></td>\n\n   <td class=\"t1-5qta\">\n       <md-button class=\"md-raised\"\n        ng-click=\"send([[{payload:{command:'remove', name: item.config.name}}, {payload:{command:'list-all'}}]]);\"> <i class=\"fa fa-trash\"> </i></md-button>\n   </td>\n   <td class=\"t1-5qta\">\n       <md-button class=\"button\" \n       ng-click=\"send([[{payload:{command:'pause', name: item.config.name}}, {payload:{command:'list-all'}}]]);\"> <i class=\"fa fa-pause\"> </i></md-button>\n   </td>\n   <td class=\"t1-5qta\">\n       <md-button class=\"button\" \n       ng-click=\"send([[{payload:{command:'start', name: item.config.name}}, {payload:{command:'list-all'}}]]);\"> <i class=\"fa fa-play\"> </i></md-button>\n   </td>\n\n  </tr>\n\n </tbody>\n</table>\n\n<!--<table id=\"table\" class=\"table table-striped table-responsive-md btn-table\" >-->\n<!--     <tr>-->\n<!--        <th>Name</th> -->\n<!--        <th>Expression</th> -->\n<!--        <th>Payload</th> -->\n<!--        <th>Description</th>-->\n<!--        <th>Next run</th>-->\n<!--        <th>State</th>-->\n<!--        <th>Delete</th>-->\n<!--        <th>Pause</th>-->\n<!--        <th>Resume</th>-->\n<!-- </tr>-->\n<!-- <tbody>-->\n<!-- <tr ng-repeat=\"item in msg.payload\">-->\n<!--   <td >{{item.config.name}}</td>-->\n<!--   <td style=\"white-space: nowrap\" nowrap>{{item.config.expression}}</td>-->\n<!--   <td >{{item.config.payload}}</td>-->\n<!--   <td >{{item.status.description}}</td>-->\n<!--   <td >{{item.status.nextDescription}}</td>-->\n<!--   <td >{{item.status.isRunning ? 'Running' : 'Paused'}}</td>-->\n<!--   <td>-->\n<!--       <md-button class=\"md-raised\"-->\n<!--        ng-click=\"send([[{payload:{command:'remove', name: item.config.name}}, {payload:{command:'list-all'}}]]);\"> <i class=\"fa fa-trash\"> </i></md-button>-->\n<!--   </td>-->\n<!--   <td>-->\n<!--       <md-button class=\"button\" -->\n<!--       ng-click=\"send([[{payload:{command:'pause', name: item.config.name}}, {payload:{command:'list-all'}}]]);\"> <i class=\"fa fa-pause\"> </i></md-button>-->\n<!--   </td>-->\n<!--   <td>-->\n<!--       <md-button class=\"button\" -->\n<!--       ng-click=\"send([[{payload:{command:'start', name: item.config.name}}, {payload:{command:'list-all'}}]]);\"> <i class=\"fa fa-play\"> </i></md-button>-->\n<!--   </td>-->\n<!-- </tr>-->\n<!-- </tbody>-->\n<!--</table>-->\n\n","storeOutMessages":false,"fwdInMessages":false,"templateScope":"local","x":720,"y":580,"wires":[["3f356bf.24b8294"]]},{"id":"258f9405.a704fc","type":"function","z":"67b3dea3.cc212","name":"Make table data","func":"if(!msg.payload || !msg.payload.result || !msg.payload.result.length){\n    msg.payload = [];\n    return msg;\n}\n\nmsg.payload = msg.payload.result;\nreturn msg;","outputs":1,"noerr":0,"x":560,"y":580,"wires":[["8006cf83.90142"]]},{"id":"fd2d5791.feefd8","type":"debug","z":"67b3dea3.cc212","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":250,"y":720,"wires":[]},{"id":"3f356bf.24b8294","type":"link out","z":"67b3dea3.cc212","name":"","links":["b9b9e3e3.d4933","c190f97a.373d28"],"x":855,"y":580,"wires":[]},{"id":"a786bd5e.e6e55","type":"ui_template","z":"67b3dea3.cc212","group":"c3f194d9.93ecd8","name":"CRON Info","order":8,"width":"16","height":"12","format":"<div>\n<pre>CRON Format...\n\n    s  m  h  md m  wd y\n    |  |  |  |  |  |  |\n    *  *  *  *  *  *  *    Field              Allowed values    Special symbols\n    |  |  |  |  |  |  |    -----------------  ---------------   ---------------\n    `--|--|--|--|--|--|->  Second (optional)  0-59              * / , -\n       `--|--|--|--|--|->  Minute             0-59              * / , -\n          `--|--|--|--|->  Hour               0-23              * / , -\n             `--|--|--|->  Day of Month       1-31              * / , - L W\n                `--|--|->  Month              1-12 or JAN-DEC   * / , -\n                   `--|->  Day of Week        0-7 or SUN-SAT    * / , - L #\n                      `->  Year (optional)    1970-2099         * / , -\n                \n</pre>    \n</div>\n\n<style type=\"text/css\">\n.t2  {border-collapse:collapse;border-spacing:0;border-color:#ccc;}\n.t2 td{font-family:Arial, sans-serif;font-size:14px;padding:2px 2px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#ccc;color:#333;background-color:#fff;}\n.t2 th{font-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#ccc;color:#333;background-color:#f0f0f0;}\n.t2 .t2-dg6o{background-color:#000000;color:#ffffff;text-align:left;vertical-align:top}\n.t2 .t2-6e8n{font-weight:bold;background-color:#c0c0c0;border-color:inherit;text-align:left;vertical-align:top}\n.t2 .t2-0pky{border-color:inherit;text-align:left;vertical-align:top}\n</style>\n<table class=\"t2\">\n  <tr>\n    <th class=\"t2-dg6o\" colspan=\"2\">Example CRON Expressions</th>\n  </tr>\n  <tr>\n    <td class=\"t2-6e8n\">Expression</td>\n    <td class=\"t2-6e8n\">Description</td>\n  </tr>\n  <tr>\n    <td class=\"t2-0pky\">* * * * * *</td>\n    <td class=\"t2-0pky\">Every Second</td>\n  </tr>\n  <tr>\n    <td class=\"t2-0pky\">0 * * * * *</td>\n    <td class=\"t2-0pky\">Every minute</td>\n  </tr>\n  <tr>\n    <td class=\"t2-0pky\">0 */10 * * * *</td>\n    <td class=\"t2-0pky\">Every 10 minutes</td>\n  </tr>\n  <tr>\n    <td class=\"t2-0pky\">0 */20 1 * * *</td>\n    <td class=\"t2-0pky\">Every 20 minutes, between 01:00 AM and 01:59 AM</td>\n  </tr>\n  <tr>\n    <td class=\"t2-0pky\">0 15,30,45 * * * *</td>\n    <td class=\"t2-0pky\">At 15, 30, and 45 minutes past the hour</td>\n  </tr>\n  <tr>\n    <td class=\"t2-0pky\">0 0 12 * * *</td>\n    <td class=\"t2-0pky\">Every day at noon - 12pm</td>\n  </tr>\n  <tr>\n    <td class=\"t2-0pky\">0 0 2 29 FEB * 2020-2040</td>\n    <td class=\"t2-0pky\">At 02:00 AM, on day 29 of the month, only in February, every 4 years, 2020 through 2040</td>\n  </tr>\n  <tr>\n    <td class=\"t2-0pky\">0 0 7 * *</td>\n    <td class=\"t2-0pky\">MON#1 * At 07:00 AM, on the first Monday of the month</td>\n  </tr>\n  <tr>\n    <td class=\"t2-0pky\">0 0 12 * JAN,FEB,MAR,APR *</td>\n    <td class=\"t2-0pky\">Every day at noon in January, February, March and April</td>\n  </tr>\n  <tr>\n    <td class=\"t2-0pky\">* * 1W * *</td>\n    <td class=\"t2-0pky\">Every minute, on the first weekday of the month</td>\n  </tr>\n  <tr>\n    <td class=\"t2-0pky\">* * * * Tue#3</td>\n    <td class=\"t2-0pky\">Every minute, on the third Tuesday of the month</td>\n  </tr>\n  <tr>\n    <td class=\"t2-0pky\">0 12 * * MONL</td>\n    <td class=\"t2-0pky\">At 12:00 PM, on the last Monday of the month</td>\n  </tr>\n</table>","storeOutMessages":true,"fwdInMessages":true,"templateScope":"local","x":730,"y":640,"wires":[[]]},{"id":"c190f97a.373d28","type":"link in","z":"67b3dea3.cc212","name":"","links":["3f356bf.24b8294","dde0b2cf.76d48"],"x":415,"y":440,"wires":[["bc8bdc30.f0491"]]},{"id":"c3f194d9.93ecd8","type":"ui_group","z":"","name":"Default","tab":"327ea06c.0a258","disp":false,"width":"16","collapse":false},{"id":"327ea06c.0a258","type":"ui_tab","z":"","name":"CRON","icon":"dashboard","order":2,"disabled":false,"hidden":false}]

Is this flow mentioned by you complete or do I need to edit something once i'm inserted?

@zenofmud thank you infinitely, succeeded. Last question: how do I connect the knot of the gpio to turn it on?

The cron-plus node will send a msg out when ever the timer is set to. If you set the cron to send a message every minute, you will get a msg out every minute. Take that msg and use a change node to set msg.payload to what the gpio node needs.

Il nodo cron-plus invierà un messaggio quando il timer è impostato su. Se imposti cron per inviare un messaggio ogni minuto, riceverai un messaggio ogni minuto. Prendi quel messaggio e usa un nodo change per impostare msg.payload su ciò di cui il nodo gpio ha bisogno.

@fralac Steve updated his flow because I found s small bug. You might want to grab it again.

Steve ha aggiornato il suo flusso perché ho trovato un piccolo bug. Potresti voler prenderlo di nuovo.

Sorry for who don't speak Italian.
La tua domanda è un po' troppo generica per ottenere aiuto su un forum, per questo ci sono dei problemi nel darti delle risposte precise.
Il tuo problema può avere molte possibili soluzioni, quindi le risposte sono state poco incisive. La soluzione del cron può essere una, ma forse non la più adatta se ho capito (intuito) quello che cerchi. Tu vorresti creare un flip-flop astabile con i tempi regolabili da dashboard, giusto? Oppure vuoi un led che si accenda ad un ora e si spenga ad un'altra?
Nel primo caso, quello che mi pare corrisponda di più alla tua richiesta, penso che si potrebbe fare con un nodo funzione in cui salvi il messaggio che arriva con un dato topic dal nodo della dashboard in una variabile e che poi confronti con il conteggio dei messaggi che arrivano da una dase dei tempi, ovvero un nodo inject della durata che ritieni idonea seguito da un noto counter.
Ovviamente ad ogni cambio di stato resetti il counter.
Spero di essere stato chiaro :-?
M

Google translate:

Your question is a bit too general to get help on a forum, so there are problems with giving you precise answers.
Your problem may have many possible solutions, so the answers were not very effective. The solution of the cron can be one, but perhaps not the most suitable if I understood (intuited) what you are looking for. You would like to create an astable flip-flop with adjustable time from dashboard, right? Or do you want an LED that lights up at one hour and turns off at another?
In the first case, what I think corresponds more to your request, I think you could do with a function node where you save the message that arrives with a given topic from the dashboard node in a variable and then compares with the count of messages that come from a dase of the times, or an inject node of the duration that you believe is followed by a well-known counter
Obviously, at each change of state, reset the counter.
I hope I was clear :-?

Tanks for translation :slight_smile:
M

Hello @zenofmud...could you please help me? I did this:


is this how the cron-plus is connected to the gpio?

You should be able to figure this out. Ask yourself
"What do I need to send to the GPIO node?"
"How can I tell if that is what I am sending?"
"If what I need to send is not what I'm sending, how can I change it to send what it needs?

If you answer those three questions, you shoud be able to debug your problem yourself and fix it and have learned something in the process.

1 Like

The only thing I don't understand is which node, in the cron-plus stream, sends input and output. Can you help me?

Tell you want, answer the questions I asked, here they are again (rephrased)

  1. What do you need to send to the GPIO node?

  2. What is the cronplus sending as output?

  3. is what cronplus is sending what you need to send into the gpio node?

  4. if not, how can you change it so it is correct?

The cron node sends messages at the times configured in the node, or configured by passing messages to it from other nodes. No nodes send inputs, nodes only send outputs.

Yes,I now...I was wrong

The GPIO node must send the pulse(1) to have the field lit. Sending Cron-plus as output I think is the msg.payload. The third one I don't know how to answer. The fourth I don't know how to answer