Vinnerliste
Populært innhold
Viser innholdet med mest poeng fra 12. des. 2023 i alle områder
-
Denne her har jeg grublet en stund på men nå har jeg funnet en god løsning. Der er flere problemstillinger involvert: Automatisk åpne 2 nettlesere og plassere de på hver sin skjerm i fullskjermmodus ved boot. Vise en dashboard-tab på ene skjermen og en annen på den andre. NR-Dashboard kan styres fra NodeRed men styrer alle skjermer samtidig med mindre kommandoer sendes til en bestemt SocketID (SocketID endrer seg ved refresh i browser, boot og litt tilfeldig i andre sammenhenger). 1: Automatisk åpne nettlesere (På RPi). Opprett en tekstfil med følgende innhold: Jeg kalte den "ChromX2.sh" og la den på Desktop. Filen må gjøres kjørbar (chmod +x /home/pi/Desktop/ChromX2.sh). Innholdet sier seg noenlunde selv. Posisjon tilpasses den oppløsningen du selv har (jeg bruker 1920x1080). Kiosk-mode gir fullskjerm. User data må legges på eget område for hver browser. IP-adresse er NodeRed server. "&" tegnet på slutten MÅ være der ellers utføres ikke neste linje. Kjør filen og se om den virker som tenkt. Menylinjen forsvinner i kiosk mode men trykk <Ctrl><Esc> så dukker i alle fall startmenyen opp. Automatisk kjøre "ChromX2.sh" ved boot: Reboot og sjekk at det virker som tenkt. 2: Vise 2 forskjellige dashboard tabs. Først må en finne og ta vare på SocketID for begge nettlesere. Jeg har 2 muligheter her. Fra starten av laget jeg 2 trykknapper i et bilde, en "Venstre" og en "Høyre". Ved å trykke på "Venstre" på venstre skjerm lagret jeg SocketID for venstre skjerm i flow.variable, tilsvarende for høyre. Dette fungerer helt fint helt til SocketID endrer seg, da må en trykke på de nevnte knapper igjen... Først trykknappene, så filtreres alt bort bortsett fra den IP som RPien har (om en trykker på disse knappene i en annen nettleser så ignoreres det) og til slutt lagres SocketID i flow. All nødvendig informasjon ligger i msg fra trykknapp. [{"id":"12c333975644cb20","type":"ui_button","z":"4d395651357ab1b1","name":"","group":"0cf69380855e1696","order":12,"width":"3","height":"1","passthru":false,"label":"Venstre","tooltip":"{{msg.tooltip}}","color":"{{msg.color}}","bgcolor":"{{msg.background}}","className":"","icon":"","payload":"","payloadType":"date","topic":"topic","topicType":"msg","x":1120,"y":1190,"wires":[["991fa4955520b550"]]},{"id":"7fa7787facca58ea","type":"change","z":"4d395651357ab1b1","name":"set flow.sock1","rules":[{"t":"set","p":"sock1","pt":"flow","to":"socketid","tot":"msg","dc":true},{"t":"set","p":"sock1lastUpdate","pt":"flow","to":"","tot":"date"}],"action":"","property":"","from":"","to":"","reg":false,"x":1480,"y":1190,"wires":[[]]},{"id":"983e3e4679f69cd1","type":"ui_button","z":"4d395651357ab1b1","name":"","group":"0cf69380855e1696","order":13,"width":"3","height":"1","passthru":false,"label":"Høyre","tooltip":"{{msg.tooltip}}","color":"{{msg.color}}","bgcolor":"{{msg.background}}","className":"","icon":"","payload":"","payloadType":"date","topic":"topic","topicType":"msg","x":1110,"y":1240,"wires":[["2d77526d1dede3a3"]]},{"id":"f4e01bff12906cf9","type":"change","z":"4d395651357ab1b1","name":"set flow.sock2","rules":[{"t":"set","p":"sock2","pt":"flow","to":"socketid","tot":"msg","dc":true},{"t":"set","p":"sock2lastUpdate","pt":"flow","to":"","tot":"date"}],"action":"","property":"","from":"","to":"","reg":false,"x":1480,"y":1240,"wires":[[]]},{"id":"991fa4955520b550","type":"switch","z":"4d395651357ab1b1","name":"IP ...132","property":"socketip","propertyType":"msg","rules":[{"t":"eq","v":"172.16.0.132","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":1290,"y":1190,"wires":[["7fa7787facca58ea"]]},{"id":"2d77526d1dede3a3","type":"switch","z":"4d395651357ab1b1","name":"IP ...132","property":"socketip","propertyType":"msg","rules":[{"t":"eq","v":"172.16.0.132","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":1290,"y":1240,"wires":[["f4e01bff12906cf9"]]},{"id":"21833df567cffbb7","type":"comment","z":"4d395651357ab1b1","name":"Lagre socketid manuelt, kun for V + H skjerm under TV","info":"","x":1260,"y":1150,"wires":[]},{"id":"0cf69380855e1696","type":"ui_group","name":"Video","tab":"8f4c3716a72a96a8","order":1,"disp":false,"width":"30","collapse":false,"className":""},{"id":"8f4c3716a72a96a8","type":"ui_tab","name":"Kamera","icon":"videocam","order":12,"disabled":false,"hidden":false}] For å vise en bestemt tab på venstre skjerm: [{"id":"dc3ca5d7f364bdfe","type":"change","z":"4d395651357ab1b1","name":"Garasje","rules":[{"t":"set","p":"payload","pt":"msg","to":"Garasje","tot":"str"},{"t":"set","p":"socketid","pt":"msg","to":"sock1","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":1470,"y":710,"wires":[["e3be770ddac7f6f7"]]},{"id":"5595414b58551dce","type":"inject","z":"4d395651357ab1b1","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":1320,"y":710,"wires":[["dc3ca5d7f364bdfe"]]},{"id":"e3be770ddac7f6f7","type":"ui_ui_control","z":"4d395651357ab1b1","name":"ui control","events":"connect","x":1620,"y":710,"wires":[[]]},{"id":"7ec2e1019c1cfd8d","type":"change","z":"4d395651357ab1b1","name":"Pool","rules":[{"t":"set","p":"payload","pt":"msg","to":"Pool","tot":"str"},{"t":"set","p":"socketid","pt":"msg","to":"sock1","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":1460,"y":750,"wires":[["e3be770ddac7f6f7"]]},{"id":"d1a1d4c032f162ea","type":"inject","z":"4d395651357ab1b1","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":1320,"y":750,"wires":[["7ec2e1019c1cfd8d"]]}] 3: Automatisk hente inn SocketID for begge nettlesere. Her sliter jeg med å vite hvem som er venstre og hvem som er høyre men det betyr nå ikke så veldig mye, det viktigste er å vite at jeg har 2 unike aktive SocketID lagret. Dersom begge nettlesere rapporterer ny socketID innenfor 5 sek (ved boot går der typisk innefor 250mS mellom mottak av begge SocketID men greit med litt spillerom her, tar også gjerne litt tid å laste siden) lagres de i flow.sock1 og flow.sock2 "Strømpris" og "Solar" er standard-tabene som vises automatisk når ny SockerID er mottatt fra begge nettlesere. Toggle og 2true/2false nodene er bare for å lagre annenhver SocketID i hhv sock1 og sock2 og det er her jeg ikke klarer å skille på høyre eller venstre skjerm. [{"id":"dc3ca5d7f364bdfe","type":"change","z":"4d395651357ab1b1","name":"Garasje","rules":[{"t":"set","p":"payload","pt":"msg","to":"Garasje","tot":"str"},{"t":"set","p":"socketid","pt":"msg","to":"sock1","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":1770,"y":550,"wires":[["e3be770ddac7f6f7"]]},{"id":"5595414b58551dce","type":"inject","z":"4d395651357ab1b1","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":1620,"y":550,"wires":[["dc3ca5d7f364bdfe"]]},{"id":"e3be770ddac7f6f7","type":"ui_ui_control","z":"4d395651357ab1b1","name":"ui control","events":"connect","x":1920,"y":550,"wires":[["92b8218ed302d655"]]},{"id":"7ec2e1019c1cfd8d","type":"change","z":"4d395651357ab1b1","name":"Pool","rules":[{"t":"set","p":"payload","pt":"msg","to":"Pool","tot":"str"},{"t":"set","p":"socketid","pt":"msg","to":"sock1","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":1760,"y":590,"wires":[["e3be770ddac7f6f7"]]},{"id":"d1a1d4c032f162ea","type":"inject","z":"4d395651357ab1b1","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":1620,"y":590,"wires":[["7ec2e1019c1cfd8d"]]},{"id":"92b8218ed302d655","type":"switch","z":"4d395651357ab1b1","name":"IP ...132","property":"socketip","propertyType":"msg","rules":[{"t":"eq","v":"172.16.0.132","vt":"str"}],"checkall":"true","repair":false,"outputs":1,"x":2070,"y":550,"wires":[["e0a957ccf246b3ab"]]},{"id":"e0a957ccf246b3ab","type":"switch","z":"4d395651357ab1b1","name":"toggle","property":"SessID_toggle","propertyType":"flow","rules":[{"t":"true"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":1600,"y":660,"wires":[["c7f5ecd6fa318894"],["eb953c2216749af0"]]},{"id":"c7f5ecd6fa318894","type":"change","z":"4d395651357ab1b1","name":"2false","rules":[{"t":"set","p":"SessID_toggle","pt":"flow","to":"false","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":1760,"y":650,"wires":[["bd1be74d2e460943","be71680e3306e128"]]},{"id":"eb953c2216749af0","type":"change","z":"4d395651357ab1b1","name":"2true","rules":[{"t":"set","p":"SessID_toggle","pt":"flow","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":1760,"y":680,"wires":[["bd1be74d2e460943","2e2cd87801046062"]]},{"id":"94699f674c8fe770","type":"delay","z":"4d395651357ab1b1","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":2100,"y":660,"wires":[["582beb75912af2fd"]]},{"id":"bd1be74d2e460943","type":"function","z":"4d395651357ab1b1","name":"Reset delay","func":"//msg.delay = 600000;\nvar m1 = {reset:true};\nreturn [[m1,msg]];","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1950,"y":660,"wires":[["94699f674c8fe770"]]},{"id":"582beb75912af2fd","type":"function","z":"4d395651357ab1b1","name":"Ny socketID for begge?","func":"var sock1t = flow.get(\"sock1lastUpdate\");\nvar sock2t = flow.get(\"sock2lastUpdate\");\nif (Math.abs(sock1t - sock2t) < 5000){\n node.warn(\"TimeDiff: \" + (sock1t - sock2t));\n node.send(msg);\n}\n","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":2300,"y":660,"wires":[["0561d71505d376ae","c1fb16b8ae61f341"]]},{"id":"be71680e3306e128","type":"change","z":"4d395651357ab1b1","name":"set flow.sock1","rules":[{"t":"set","p":"sock1","pt":"flow","to":"socketid","tot":"msg","dc":true},{"t":"set","p":"sock1lastUpdate","pt":"flow","to":"","tot":"date"}],"action":"","property":"","from":"","to":"","reg":false,"x":1960,"y":620,"wires":[[]]},{"id":"2e2cd87801046062","type":"change","z":"4d395651357ab1b1","name":"set flow.sock2","rules":[{"t":"set","p":"sock2","pt":"flow","to":"socketid","tot":"msg","dc":true},{"t":"set","p":"sock2lastUpdate","pt":"flow","to":"","tot":"date"}],"action":"","property":"","from":"","to":"","reg":false,"x":1960,"y":700,"wires":[[]]},{"id":"c1fb16b8ae61f341","type":"change","z":"4d395651357ab1b1","name":"Strømpris","rules":[{"t":"set","p":"payload","pt":"msg","to":"Strømpris","tot":"str"},{"t":"set","p":"socketid","pt":"msg","to":"sock2","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":2050,"y":390,"wires":[["e3be770ddac7f6f7"]]},{"id":"0561d71505d376ae","type":"change","z":"4d395651357ab1b1","name":"Solar","rules":[{"t":"set","p":"payload","pt":"msg","to":"Solar","tot":"str"},{"t":"set","p":"socketid","pt":"msg","to":"sock1","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":2040,"y":430,"wires":[["e3be770ddac7f6f7"]]}] Det er jo enkelt å manuelt bytte SocketID i en funksjonsblokk men jeg tror ikke det går an å gjøre det automatisk: Flow variablene: Disse flowene er litt forenklet men burde være greie å forstå. Hele greiene mine med automatisk visning av 3 videotabs basert på bevegelsessensorer/knapper i videobilde, tab-valg med zigbee fjernkontroll ser slik ut:1 poeng
Vinnerlisten er satt til Oslo/GMT+01:00