Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon! 🥇🥈🥉

SveinHa

Medlemmer
  • Innlegg

    1 772
  • Ble med

  • Besøkte siden sist

  • Dager vunnet

    120

Alt skrevet av SveinHa

  1. ...og så kan det jo være greit å ha i bakhånd litt top-notch medisinsk verneutstyr i tilfelle media slipper ut et nytt virus som vi må beskytte oss mot:
  2. Nå vil jeg påstå at det aller meste av den 3D printingen jeg gjør har en vesentlig nytteverdi men noe som er bare for gøy gjør jeg selvsagt også . Tenkte denne tråden kunne samle en del av det mindre seriøse vi 3D printere driver med. For å starte en plass så har jeg irritert meg litt på fløyten i plystrekjelen, lite og varierende lyd... Dette MÅ jo kunne fikses enkelt tenkte jeg og lastet ned og printet noen fløyter. Ikke alle var på langt nær gode nok men spesielt EN utmerket seg med tydelig lyd med ganskje beskjeden "vind". Laget meg et adapter til kjelen etter mål fra den utvalgte fløyten i Onshape og gjorde et forsøk. INGEN lyd... Blåste i den og den virket helt fint... Fant en spesiallaget fløyte som skulle være designet for akkurat dette bruket, justerbar til og med, men lite hell med den også... Etterhvert ble den en del forsøk men varierende hell (litt pent språk for "elendig") og endte opp med bl.a. disse her: Den store oransje er "spesialdesignet" og de 2 mindre er mine modifikasjoner som hadde en smule nedsmelting pga feil materiale... Den røde til høyre er første forsøk med ferdigfløyte fra nett og resten er nå diverse forsøk... De svarte nede til venstre er Tsjernobyl utgavene, total nedsmelting, ikke på kjelen men i 3D printeren... PC-FR er ikke helt enkelt i bruk men tåler temperatur opp i rundt 150 grader uten deformering... Har nå laget en mengde seljefløyter så dette burde jo ikke være såååå vanskelig... Er endt opp slik: Ikke veeeeeldig imponerende men i alle fall bedre enn utgangspunktet...
  3. Omsider fått litt system på Piene mine. Fant ikke noe jeg likte på nett så laget selv... https://www.printables.com/model/1220361-rpi-5-nvme-poe-cabinet-and-rack Og når jeg først var i seget så fixet jeg automatisk backup til Synology etter denne oppskriften...
  4. Hele gårsdagen gik med til å flytte Node-RED installasjonen fra ProxMox/Linux Mint til RPi 5. Jeg har hatt 3 stk identiske Gigabyte BRIX microPCer i ProxMox cluster men på senhøsten i fjor begynte den ene å rote det til ved å dø. Strøm av/på og den var i live igjen men den døde jevnlig, kunne gå uker mellom eller minutter... Virker som et varmeproblem for med kort av-tid dør den veldig raskt igjen. Åpnet opp og blåst ren uten at der var noe synlig støv og viften virker fint, hører den justerer seg opp og ned så jeg aner ikke hva som egentlig er feil... Uansett, denne ble erstattet av en annen microPC uten ProxMox grunnet ytelse på videoovervåking. For 2-3 uker siden begynte neste ProxMox maskin å rote på samme måten. Denne kjører Node-RED så den er jo kritisk mht. hjemmeautomasjon... Med bare 1.5 maskin i ProxMox cluster hadde det vært bedre med ren ProxMox uten cluster... Så i går trakk jeg pusten og flyttet Node-RED til en RPi 5 med 500GB NVMe disk. Selve flyttingen av 5700 noder, etter at Node-RED er installert, tar jo bare få sekunder men der blir en mengde opprydding etterpå fordi installasjonen havnet i annen mappe/bruker på nye maskinen (litt standardisering i heimen skader ikke) og diverse passord for SQL, sftp og annet følger ikke med (heldigvis er disse bare definert en plass selv om de er brukt et utall steder). Også en del andre ting som strømprisdata (en masse tomme registre som må fylles opp for å unngå en masse feilmeldinger), lysmode (Dag/Kveld/Natt som i utgangspunktet er blank som også gir en mengde feilmeldinger), Dashboard themes som ikke følger med samt litt konfigurering som avviker fra standarden så er hele greiene oppe og går. Tar litt tid å finne alle disse småfellene... En litt uventet effekt er at jeg har et inntrykk av at Node-RED Dashboard er mer responsivt nå selv om jeg nå kjører på en mindre CPU, antar ProxMox som mellomledd struper litt mer enn jeg ville tro. Virtualiseringsteknologier er jo spesifikt IKKE anbefalt for videoovervåking av ytelsesgrunner. Edit: Jeg startet med NVMe disken i et USB-kabinett og hadde merkbart bedre ytelse enn tidligere med så flyttet jeg disken til et Pimoroni NVMe base og da fikk jeg merkbare enda bedre ytelse. Anbefales!!! Edit2: Og midt i dette hadde jeg ny brukt laptop som jeg holdt på å få i gang med Linux Mint og div installering... Så det ble en litt hektisk dag...
  5. Vet det ble en duplisering nå men tanken er å ta bort de gamle på litt sikt. Nå har jeg begge deler, både den gamle teite varianten og den nye riktigere...
  6. Gjort en quick and dirty fix... Legg inn denne: i stedet for den opprinnelige: [{"id":"c622a1c1b5d187fe","type":"function","z":"2447f70b5f1095ba","name":"List all stations & create flow.stations","func":"var brands = flow.get(\"brands\");\nvar statsRaw = flow.get(\"stationsRaw\");\n//flow.set(\"Stations\",msg.payload);\n//node.warn( \"pl.length: \" + statsRaw.length);\nvar arr = [];\nvar arr2 = [];\nvar obj2 = {}\nvar msg2 = {}\nvar i = 0;\nvar j = 0;\nfor (i = 0;i < statsRaw.length;i++){\n let obj = {}\n //if (i == 2150)i++;\n //if (i == 2302)i++;\n //if (i == 2305)i++;\n //if (i == 3512)i++;\n obj.id = statsRaw[i].id;\n obj.name = statsRaw[i].name || \"-\"\n // Find brand from brandId\n for (j = 0;j < brands.length;j++){\n if (Number(statsRaw[i].brandId) == Number(brands[j].id)){\n obj.brand = brands[j].name || \"-\"\n obj.logo = brands[j].pictureUrl || \"-\"\n //node.warn(i + \" \" + j + \" \" + brands[j].name);\n break;\n }\n }\n obj.location = statsRaw[i].location || \"-\"\n // Add prices, some stations miss prices, skip these\n var obj3 = {}\n let objFt = []\n let ftidStr = \"\";\n if (statsRaw[i].hasOwnProperty(\"prices\")){ // skip no-price stations\n for (j = 0;j < statsRaw[i].prices.length;j++){\n var ftid = statsRaw[i].prices[j].fuelTypeId;\n if (ftid == 1) ftidStr = \"D\";\n else if (ftid == 2) ftidStr = \"B95\";\n else if (ftid == 3) ftidStr = \"B98\";\n else if (ftid == 4) ftidStr = \"FD\";\n else ftidStr = \"-\";\n // New pricestructure 02.03.25\n objFt.push({\"fuelTypeID\":statsRaw[i].prices[j].fuelTypeId,\"type\":ftidStr,\"price\":statsRaw[i].prices[j].price,\"lastUpdated\":statsRaw[i].prices[j].lastUpdated});\n obj3.new = objFt;\n\n if (ftid == 1 && statsRaw[i].prices[j].price != 0){ \n obj3.D = {}\n obj3.D.price = statsRaw[i].prices[j].price;\n obj3.D.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n obj3.D.type = \"D\";\n }\n if (ftid == 2 && statsRaw[i].prices[j].price != 0){ \n obj3.B95 = {}\n obj3.B95.price = statsRaw[i].prices[j].price;\n obj3.B95.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n obj3.B95.type = \"B95\";\n } \n if (ftid == 3 && statsRaw[i].prices[j].price != 0){\n obj3.B98 = {}\n obj3.B98.price = statsRaw[i].prices[j].price;\n obj3.B98.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n obj3.B98.type = \"B98\";\n }\n if (ftid == 4 && statsRaw[i].prices[j].price != 0){\n obj3.FD = {}\n obj3.FD.price = statsRaw[i].prices[j].price;\n obj3.FD.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n obj3.FD.type = \"FD\";\n }\n }\n }//skip to here\n// console.log(obj3);\n obj.prices = obj3;\n\n \n arr.push(obj);\n}\nmsg2.payload = arr;\nflow.set(\"stationsPrepd\",arr);\nreturn msg2;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":280,"y":560,"wires":[["ee9831abc8e3a182"]]}] Dette gir noen nye felt i flow.stationsPrepd som du igjen kan hente ut med denne: [{"id":"eeb0ef3e1e4c1567","type":"inject","z":"2447f70b5f1095ba","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"[2088,25148,2263]","payloadType":"json","x":620,"y":1220,"wires":[["0d4e5a87fd3822c7"]]},{"id":"0d4e5a87fd3822c7","type":"function","z":"2447f70b5f1095ba","name":"List valgte stasjoner","func":"let selected = msg.payload;\nlet stats = flow.get(\"stationsPrepd\");\nlet arr = []\n\nfor (let i in selected){\n for (let j in stats){\n if (stats[j].id == selected[i]){\n for (let k in stats[j].prices.new){\n// node.warn(stats[j].name);\n// node.warn(stats[j].prices.new[k].type);\n// node.warn(stats[j].prices.new[k].price);\n// let dt = new Date(stats[j].prices.new[k].lastUpdated);\n// node.warn(dt.toLocaleString(\"nb-NO\"));\n }\n arr.push(stats[j]);\n }\n \n }\n}\n\nmsg.payload = arr;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":860,"y":1220,"wires":[["88658fb3f9f8c6ae"]]},{"id":"88658fb3f9f8c6ae","type":"debug","z":"2447f70b5f1095ba","name":"debug 14","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1050,"y":1220,"wires":[]}] ...og hvis du fjerner kommentar (//) fra de 5 linjene i "List valgte stasjoner" så kommer resultatet direkte i loggen også... Edit#2: Da skal de være oppegående... Ser Esso Mandalskrysset har en del priser som ikke dukker opp i drivstoffappen, sannsynligvis strøm...
  7. Supert. Jeg ser der henger igjen noe litt hårete programmering fra gamle dager... Skal fikse litt opp i det om litt...
  8. Hvis du har "Drivstoffpriser" bildet oppe og går (Kun i Dash1.0) så finner du alle priser der. Søk i alle felt nederst i første tabell, klikk på stasjonen i venstre tabell så legger den seg i favoritter (midtre tabell) og viser alle priser i høyre tabell. Klikk i favoritt for å fjerne fra favoritt.
  9. Jeg har laget dette spesifikt for diesel så bensin har jeg ikke tatt hensyn til men om du går inn i subDrivstoffPris og endrer "prices.D" til "prices.B95" eller "prices.B98" så burde det virke. Strengt tatt vil du vel klare deg med dette: og hente ut de aktuelle stasjonene og priser fra flow.stationsPrepd: Ganske mye av koden min er jo kun for å gi farger slik at det hele blir mer visuelt...
  10. Har nok småputlet og fixet litt nå og da. Pr i dag ser det slik ut hos meg (med både Dash1.0 og Dash 2.0 noder": [{"id":"c622a1c1b5d187fe","type":"function","z":"2447f70b5f1095ba","name":"List all stations & create flow.stations","func":"var brands = flow.get(\"brands\");\nvar statsRaw = flow.get(\"stationsRaw\");\n//flow.set(\"Stations\",msg.payload);\n//node.warn( \"pl.length: \" + statsRaw.length);\nvar arr = [];\nvar arr2 = [];\nvar obj2 = {}\nvar msg2 = {}\nvar i = 0;\nvar j = 0;\nfor (i = 0;i < statsRaw.length;i++){\n let obj = {}\n //if (i == 2150)i++;\n //if (i == 2302)i++;\n //if (i == 2305)i++;\n //if (i == 3512)i++;\n obj.id = statsRaw[i].id;\n obj.name = statsRaw[i].name || \"-\"\n // Find brand from brandId\n for (j = 0;j < brands.length;j++){\n if (Number(statsRaw[i].brandId) == Number(brands[j].id)){\n obj.brand = brands[j].name || \"-\"\n obj.logo = brands[j].pictureUrl || \"-\"\n //node.warn(i + \" \" + j + \" \" + brands[j].name);\n break;\n }\n }\n obj.location = statsRaw[i].location || \"-\"\n // Add prices, some stations miss prices, skip these\n //node.warn(\"Add prices\");\n var obj3 = {}\n //console.log(statsRaw[i].prices.length);\n if (statsRaw[i].hasOwnProperty(\"prices\")){ // skip no-price stations\n for (j = 0;j < statsRaw[i].prices.length;j++){\n //node.warn(\"Add prices: \" + i + \" \" + j);\n var ftid = statsRaw[i].prices[j].fuelTypeId;\n if (ftid == 1 && statsRaw[i].prices[j].price != 0){ \n obj3.D = {}\n obj3.D.price = statsRaw[i].prices[j].price;\n obj3.D.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n obj3.D.type = \"D\";\n }\n if (ftid == 2 && statsRaw[i].prices[j].price != 0){ \n obj3.B95 = {}\n obj3.B95.price = statsRaw[i].prices[j].price;\n obj3.B95.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n obj3.B95.type = \"B95\";\n } \n if (ftid == 3 && statsRaw[i].prices[j].price != 0){\n obj3.B98 = {}\n obj3.B98.price = statsRaw[i].prices[j].price;\n obj3.B98.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n obj3.B98.type = \"B98\";\n }\n if (ftid == 4 && statsRaw[i].prices[j].price != 0){\n obj3.FD = {}\n obj3.FD.price = statsRaw[i].prices[j].price;\n obj3.FD.lastUpdated = statsRaw[i].prices[j].lastUpdated;\n obj3.FD.type = \"FD\";\n }\n }\n }//skip to here\n// console.log(obj3);\n obj.prices = obj3;\n\n \n arr.push(obj);\n}\nmsg2.payload = arr;\nflow.set(\"stationsPrepd\",arr);\nreturn msg2;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":260,"y":550,"wires":[["ee9831abc8e3a182"]]},{"id":"6d9e547c291b0fbc","type":"delay","z":"2447f70b5f1095ba","name":"+1 gang","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":460,"y":150,"wires":[["920c8e464a11c598"]]},{"id":"e6a31dc9dfb2064d","type":"change","z":"2447f70b5f1095ba","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"stationsPrepd","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":470,"y":100,"wires":[["920c8e464a11c598","92ef0335f61a9718","6d9e547c291b0fbc"]]},{"id":"ee9831abc8e3a182","type":"junction","z":"2447f70b5f1095ba","x":530,"y":880,"wires":[["6ffebf4f1340a92e","e6a31dc9dfb2064d","f193882be2dc7762"]]},{"id":"1187eef693a5d073","type":"group","z":"2447f70b5f1095ba","name":"Hent drivstoffpriser fra Drivstoffappen","style":{"label":true,"color":"#000000"},"nodes":["9103052baf82e5d0","08c3e48feae420a1","5301761a12ee53d3"],"x":14,"y":39,"w":239,"h":152},{"id":"9103052baf82e5d0","type":"inject","z":"2447f70b5f1095ba","g":"1187eef693a5d073","name":"Hvert 15 min","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"*/15 6-23 * * *","once":false,"onceDelay":"5","topic":"","payload":"","payloadType":"date","x":140,"y":80,"wires":[["ad3a3a41bdece374"]]},{"id":"08c3e48feae420a1","type":"inject","z":"2447f70b5f1095ba","g":"1187eef693a5d073","name":"Hvert 60 min","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"0 0-5 * * *","once":false,"onceDelay":"5","topic":"","payload":"","payloadType":"date","x":140,"y":110,"wires":[["ad3a3a41bdece374"]]},{"id":"5301761a12ee53d3","type":"ui_button","z":"2447f70b5f1095ba","g":"1187eef693a5d073","name":"","group":"c5147f5beba7be52","order":23,"width":"3","height":"2","passthru":false,"label":"Oppdater","tooltip":"","color":"","bgcolor":"","className":"","icon":"","payload":"","payloadType":"str","topic":"topic","topicType":"msg","x":120,"y":150,"wires":[["fb25d94b.139e78"]]},{"id":"c5147f5beba7be52","type":"ui_group","name":"Wide","tab":"8b4128994ad0c3a1","order":2,"disp":false,"width":"40","collapse":false,"className":""},{"id":"8b4128994ad0c3a1","type":"ui_tab","name":"Dieselpriser","icon":"drive_eta","order":24,"disabled":false,"hidden":false},{"id":"77e67d4e89c2c546","type":"group","z":"2447f70b5f1095ba","name":"Vis utvalgte dieselpriser m/trend","style":{"label":true,"color":"#000000"},"nodes":["dc20c0baebcded39","52943a1fc077d28f","7014c2032a87fc3b","671050bdedc0c3cb","8e502b90702d3857","b1eaf76d80b124b2","13527989f83e29d2","a789bc33845b6aae","28fe85a134fe0971","dfb010ed7eafaf57","f10d3ac86fabfb52","920c8e464a11c598","80fadd7556b173c2","a25c248dc4ebd8e1","4845524c229e5de4","4bc7a1bfe0edbd3d","a0ed1589c7578ebc","313d717f04abb611","df6111373c9fcb74","9115f8c79d2fb5bf","bb875534cb2f1287","ef238c7de03c89ba","342412d6ccffa890","deb634361ea88282","7d2c0b671fe55eb5","73f01377bb3987bb","2ca32bed009a91c7","c4e4ad48e1be3967","fedddf6d961e47e1","f004caf9b1859658","f280cce61136ea5f","35afefb923880a86","13a80ea70008ef69","de080617e02b76c0","efb09c551659ae8e","c9be417364a0636a","c1e1c529d2ebbbe3","ba85ec803b447086","575ebc0b7826b668","a5b30e2c9a5b185b","5cdf4a4e44ba3e96","7907e0a5a1ff80b6","ee11d26aa7381961","c6597ae705c493fd","197fde062f906fe2","d3117ab9bbdc344d","a76caa7a16bac95c","99fbdbd6f1247a74","f41e2331b0b830d3","98ad46a8c1cec362","b4db27ab8e1249f9","211a49ea39c47dbf","345e2bc8bcaeeffd","f3a5b1da15641fda","f82266bbecc5f929","7ec8a975f4e62ea5","b4c42883c0d1b421","89f905a2a16a5653","bd92fd80ba8708f5","919354dd3a9d85e1","af920dde227a02ba","42965b35532dc0a6","198ea5a17cf29258","591771770c56781a","72b2d1bb06c9fd47","835b0df2bd3edcbb","69d3c375167219d4","e329d720082ab3ca","494289de7de6d7f1","26ccfdd89731f3a7","1e1b7ff7040d7b80","9b2dcbd582073b91","836292a9fd69e76b","bcc37ebceee47007","a05d8f5407d2cdb1","900c5206972e6c86","0d6ee42acdd37ff2","dfd2ccaa5bc1b57f","f69279700d78497e","23f00bc1a8a74fa9","335994ff4485b3ec","42b492a395c7e579","3c9ceafdd8c29bf3","a01f5e223eb1c084","ea45b82d3dbb59a7","2b1034676d5cf0ad","edda9c63ecdd3aa5","9b8a839f4476974a","211cc02ca79c120b","b17af5ca3a29fb12","f3a4d2156cdcdab6","dce9b94037817b13","d1d4e9dece7df913","c34edf432a785f77","88e00589654790f5","a83908819ec381b2","93aeb62e57c14023","ee43915933528bfa","89afa177a44ffbc5","85512989de4690f3","6024725ae75382fb","419d1e6e4e82482e","1ea7fb4b20337450","7a0bc26925236777","86b7aca3b73895f5","13a4afa74f1e8be6","a5989d0a9b6bbaeb"],"x":644,"y":9,"w":1682,"h":812},{"id":"2835c4be2e0c346c","type":"subflow","name":"subDrivstoffpris","info":"","category":"","in":[{"x":60,"y":80,"wires":[{"id":"629ced2da13dc595"}]}],"out":[{"x":440,"y":50,"wires":[{"id":"629ced2da13dc595","port":0}]},{"x":440,"y":110,"wires":[{"id":"629ced2da13dc595","port":1}]}],"env":[{"name":"station","type":"str","value":""},{"name":"statInt","type":"str","value":""},{"name":"statInt_Prev","type":"str","value":""}],"meta":{"version":"1.0","author":"SveinHa"},"color":"#DDAA99","outputLabels":["Trend","Skilt"]},{"id":"629ced2da13dc595","type":"function","z":"2835c4be2e0c346c","name":"Hjernen ;-)","func":"var ts = new Date();\nlet sid = msg.id;\nvar station = msg.station;\nvar statInt = msg.statInt;\n//var statInt_Prev = statInt_Prev;\n\nvar prev = 0;\nvar diff = 0;\nvar msg2 = {}\n//console.log(msg.payload);\n//msg.payload = msg.payload.filter((/** @type {{ id: string; }} */ e) => e.id == sid);\nmsg.payload = msg.payload.filter((e) => e.id == sid);\n//console.log(msg.payload[0].brandId);\n//node.warn(msg);\n\n//msg.payload = msg.payload.filter((/** @type {{ discountInfo: string; }} */ e) => e.discountInfo == station); \n//console.log(msg.payload[0].prices.D.type);\n//msg.payload[0].type = msg.payload[0].prices.D.type;//.filter(e => e.type == 'D');\nvar price = msg.payload[0].prices.D.price;\n//console.log(price);\nvar now = Number(new Date());\nvar age = (now - msg.payload[0].prices.D.lastUpdated) / 3600 / 1000; //age in hours\nvar diffSymbol = \"\";\nflow.set(\"$parent.\" + statInt, price);\nprev = flow.get(\"$parent.\" + statInt + \"_Prev\") || 0\n\n//node.warn(\"ID: \" + msg.payload[0].id + \", name: \" + msg.payload[0].name + \", brand: \" + msg.payload[0].brand );\n\nvar snitt = flow.get(\"$parent.AvgPrice\");\nvar min = flow.get(\"$parent.MinPrice\");\nvar max = flow.get(\"$parent.MaxPrice\");\nvar lolim = snitt - ((max - min)/6);\nvar hilim = snitt + ((max - min)/6);\nif (price < lolim) msg2.color = \"LIME\";\nelse if (price > hilim) msg2.color = \"RED\";\nelse msg2.color = \"YELLOW\";\n//node.warn(min + \"-\" + lolim + \"-\" + snitt + \"-\" + hilim + \"-\" + max);\n\nif (price != prev) {\n var ts = new Date();\n flow.set(\"$parent.\" + statInt + \"_Diff\", Number((price - prev).toFixed(2)));\n flow.set(\"$parent.\" + statInt + \"_Prev\", price);\n flow.set(\"$parent.\" + statInt + \"_PrevT\", Number(ts));\n}\n\ndiff = flow.get(\"$parent.\" + statInt + \"_Diff\") || \"-\"\nvar tss = flow.get(\"$parent.\" + statInt + \"_PrevT\") || 0\nvar ageD = Number((Number(now) - Number(tss))) / 3600 / 1000; //age in hours\nif (ageD > 999.9) ageD = 999.9;\n\nif (diff >= 0) diffSymbol = \"<font color=RED> \" + diff;//.toFixed(2);\nelse diffSymbol = \"<font color=LIME> \" + diff;//.toFixed(2);\nflow.set(\"$parent.\" + statInt + \"_DiffS\", diffSymbol);\n\ndiffSymbol = flow.get(\"$parent.\" + statInt + \"_DiffS\") || \"-\"\nmsg2.payload = \"<font size=6>\" + price.toFixed(2) + \"<font size=2>\" + diffSymbol + \"(\" + ageD.toFixed(1) + \"h)\";\nmsg2.topic = station.slice(0,15); //Forkort for lange navn\nmsg2.age = age.toFixed(1);\nif (age < 1) { msg2.stationcolor = \"LIME\"; }\nelse if (age < 6) { msg2.stationcolor = \"YELLOW\"; }\nelse if (age <= 12) { msg2.stationcolor = \"ORANGE\"; }\nelse if (age > 12) { msg2.stationcolor = \"RED\"; }\n\n//node.warn(msg2.topic + \"Price: \" + price + \" Prev: \" + prev + \"Diff: \" + diff);\nmsg2.pri = flow.get(\"$parent.\" + statInt + \"_Pri\") \n//node.send([null,msg2]);\n//node.warn(\"$parent.\" + statInt + \"-\" + msg2.pri);\nmsg2.src = msg.payload[0].logo;\n\n\nmsg2.label = \"<font color=\" + msg2.stationcolor + \">\" + msg2.topic + \" (\" + msg2.age + \"h)\";\nmsg2.payload= \"<font color=\" + msg2.color + \">Kr.\" + msg2.payload;\n//msg2.ui_update = true;\n\nmsg.payload = Number(price.toFixed(2));\nmsg.topic = station;\n\nvar te = new Date();\n//console.log(station + \": \" + (Number(te) - Number(ts)))\nreturn [msg, msg2];","outputs":2,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":220,"y":80,"wires":[[],[]]},{"id":"dc20c0baebcded39","type":"persist in","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Dieselpriser","storageNode":"8a6654beead70801","x":1830,"y":680,"wires":[]},{"id":"52943a1fc077d28f","type":"persist out","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Dieselpriser","storageNode":"8a6654beead70801","x":1460,"y":670,"wires":[["835b0df2bd3edcbb"]]},{"id":"7014c2032a87fc3b","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":5,"width":"6","height":"2","name":"Price 1","label":"{{msg.label}}","format":"{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1970,"y":150,"wires":[]},{"id":"671050bdedc0c3cb","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":15,"width":"6","height":"2","name":"Price 6","label":"{{msg.label}}","format":"{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1970,"y":450,"wires":[]},{"id":"8e502b90702d3857","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":17,"width":"6","height":"2","name":"Price 7","label":"{{msg.label}}","format":"{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1970,"y":510,"wires":[]},{"id":"b1eaf76d80b124b2","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":13,"width":"6","height":"2","name":"Price 5","label":"{{msg.label}}","format":"{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1970,"y":390,"wires":[]},{"id":"13527989f83e29d2","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":3,"width":"6","height":"2","name":"Price 0","label":"{{msg.label}}","format":"{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1970,"y":90,"wires":[]},{"id":"a789bc33845b6aae","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":9,"width":"6","height":"2","name":"Price 3","label":"{{msg.label}}","format":"{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1970,"y":270,"wires":[]},{"id":"28fe85a134fe0971","type":"debug","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"debug 89","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":790,"y":600,"wires":[]},{"id":"dfb010ed7eafaf57","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Last update","func":"msg.label = \"Siste oppdatering\";\n//var d = new Date(msg.headers.date);\nvar d = new Date();\n//node.warn(d);\nmsg.payload = d.toLocaleString('nb-NO' );//.slice(0,16);\n//node.warn(msg.payload);\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":980,"y":530,"wires":[["f10d3ac86fabfb52","a25c248dc4ebd8e1"]]},{"id":"f10d3ac86fabfb52","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":24,"width":"6","height":"2","name":"Siste oppdat","label":"{{msg.label}}","format":"{{msg.payload}}","layout":"row-left","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1300,"y":530,"wires":[]},{"id":"920c8e464a11c598","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":670,"y":130,"wires":[["28fe85a134fe0971","313d717f04abb611","efb09c551659ae8e","c1e1c529d2ebbbe3","7d2c0b671fe55eb5","9115f8c79d2fb5bf","bb875534cb2f1287","ef238c7de03c89ba","342412d6ccffa890","deb634361ea88282","73f01377bb3987bb","7907e0a5a1ff80b6","72b2d1bb06c9fd47","dfb010ed7eafaf57"]]},{"id":"80fadd7556b173c2","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":25,"width":"6","height":"1","name":"Legend","label":"<font color=\"LIME\"><1h <font color=\"YELLOW\"><6h <font color=\"ORANGE\"><=12h <font color=\"RED\">>12h<font color=#43464B>","format":"","layout":"row-left","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1290,"y":600,"wires":[]},{"id":"a25c248dc4ebd8e1","type":"change","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"flow.get.AvgPrice","rules":[{"t":"set","p":"payload","pt":"msg","to":"AvgPrice","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":980,"y":600,"wires":[["80fadd7556b173c2","4845524c229e5de4","575ebc0b7826b668"]]},{"id":"4845524c229e5de4","type":"change","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","rules":[{"t":"set","p":"topic","pt":"msg","to":"Snitt","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":1300,"y":570,"wires":[[]]},{"id":"4bc7a1bfe0edbd3d","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":7,"width":"6","height":"2","name":"Price 2","label":"{{msg.label}}","format":"{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1970,"y":210,"wires":[]},{"id":"a0ed1589c7578ebc","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":11,"width":"6","height":"2","name":"Price 4","label":"{{msg.label}}","format":"{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1970,"y":330,"wires":[]},{"id":"313d717f04abb611","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Esso Avaldsnes","func":"//console.log(\"Dieselpriser start\");\nmsg.id = 203; // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Esso Avaldsnes'; // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'EssoAval'; // Unikt kortnavn, 8 tegn, for bruk i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":990,"y":130,"wires":[["df6111373c9fcb74"]]},{"id":"df6111373c9fcb74","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1310,"y":130,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"9115f8c79d2fb5bf","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Uno-X Avaldsnes","func":"msg.id = 137; // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Uno-X Avaldsnes'; // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'UnoXAval'; // Unikt kortnavn, 8 tegn, for bruk i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":1000,"y":210,"wires":[["c4e4ad48e1be3967"]]},{"id":"bb875534cb2f1287","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Uno-X Norheim","func":"msg.id = 269; // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Uno-X Norheim'; // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'UnoXNorh'; // Unikt kortnavn, 8 tegn, for bruk i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":990,"y":250,"wires":[["fedddf6d961e47e1"]]},{"id":"ef238c7de03c89ba","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Tanken Helganes - Flyplassv.","func":"msg.id = 1546; // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Tanken Helganes - Flyplassvegen'; // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'TankFlyp'; // Unikt kortnavn, 8 tegn, for bruk i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":1030,"y":290,"wires":[["f004caf9b1859658"]]},{"id":"342412d6ccffa890","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Cirkle K Kvala","func":"msg.id = 187; // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Circle K Kvala'; // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'CirKKval'; // Unikt kortnavn, 8 tegn, for bruk i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":990,"y":330,"wires":[["f280cce61136ea5f"]]},{"id":"deb634361ea88282","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Revheim Storbilvask","func":"msg.id = 22828; // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Revheim Storbilvask'; // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'RevhStor'; // Unikt kortnavn, 8 tegn, for bruk i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":1010,"y":370,"wires":[["35afefb923880a86"]]},{"id":"7d2c0b671fe55eb5","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Esso Raglamyr","func":"msg.id = 216; // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Esso Raglamyr'; // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'EssoRagl'; // Unikt kortnavn, 8 tegn, for bruk i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":990,"y":170,"wires":[["2ca32bed009a91c7"]]},{"id":"73f01377bb3987bb","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Shell Norheim","func":"msg.id = 1342; // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Shell Norheim'; // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'ShelNorh'; // Unikt kortnavn, 8 tegn, for bruk i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":990,"y":410,"wires":[["13a80ea70008ef69"]]},{"id":"2ca32bed009a91c7","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1310,"y":170,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"c4e4ad48e1be3967","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1310,"y":210,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"fedddf6d961e47e1","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1310,"y":250,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"f004caf9b1859658","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1310,"y":290,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"f280cce61136ea5f","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1310,"y":330,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"35afefb923880a86","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1310,"y":370,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"13a80ea70008ef69","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1310,"y":410,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"de080617e02b76c0","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Beregn snittpris","func":"var sum = 0;\nvar temp = 0;\nvar antall = 0;\nvar minPrice = 999;\nvar maxPrice = 0;\n\nflow.keys().forEach(function(element) {\n// if(element.substring(element.length -5,element.length)!=\"_Prev\"){\n if(element.slice(-5) == \"_Prev\"){\n temp = flow.get(element.slice(0, element.length -5));\n sum += temp;\n antall += 1;\n if (temp > maxPrice) maxPrice = temp;\n if (temp < minPrice) minPrice = temp;\n //node.warn(element.slice(0,element.length -5) + \" Sum: \" + sum + \" Antall: \" + antall + \" temp: \" + temp);\n }\n})\nmsg.payload = (sum / antall).toFixed(2);\nflow.set(\"AvgPrice\", Number(msg.payload));\nflow.set(\"MaxPrice\", Number(maxPrice));\nflow.set(\"MinPrice\", Number(minPrice));\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":980,"y":670,"wires":[["ba85ec803b447086"]]},{"id":"efb09c551659ae8e","type":"delay","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","pauseType":"delay","timeout":"1","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":790,"y":670,"wires":[["de080617e02b76c0"]]},{"id":"c9be417364a0636a","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Sorter på pris, store in flow","func":"var statList = []\nvar i = 0;\nvar temp = \"\";\n// Hent alle stasjoner of pris\nflow.keys().forEach(function(element) {\n if(element.slice(-5) == \"_Prev\"){\n temp = flow.get(element.slice(0, element.length -5));\n var name = element.slice(0, element.length - 5);\n var value = flow.get(element.slice(0, element.length - 5));\n statList.push({ name, value });\n }\n})\n// Sort lav->høy pris\nstatList.sort( (A,B) => A.value - B.value ) \n//node.warn((statList));\nstatList.forEach(function(element) {\n flow.set(element.name + \"_Pri\", i);\n i++;\n// node.warn(element);\n})","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1020,"y":720,"wires":[[]]},{"id":"c1e1c529d2ebbbe3","type":"delay","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","pauseType":"delay","timeout":"100","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":800,"y":720,"wires":[["c9be417364a0636a"]]},{"id":"ba85ec803b447086","type":"debug","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Snittpris","active":true,"tosidebar":false,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"payload","statusType":"auto","x":1290,"y":670,"wires":[]},{"id":"575ebc0b7826b668","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":26,"width":"6","height":"1","name":"Legend price","label":"","format":"<font color=\"LIME\" size=5>1/3 < <font color=\"YELLOW\">{{msg.payload}}<font color=\"RED\">< 1/3","layout":"row-left","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1300,"y":630,"wires":[]},{"id":"a5b30e2c9a5b185b","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":19,"width":"6","height":"2","name":"Price 8","label":"{{msg.label}}","format":"{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1970,"y":570,"wires":[]},{"id":"5cdf4a4e44ba3e96","type":"ui_text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","order":21,"width":"6","height":"2","name":"Price 9","label":"{{msg.label}}","format":"{{msg.payload}}","layout":"col-center","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1970,"y":630,"wires":[]},{"id":"7907e0a5a1ff80b6","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"CircleK Hafrsfjord","func":"msg.id = 3691; // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'CircleK Hafrsfjord'; // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'CirKHafr'; // Unikt kortnavn, 8 tegn, for bruk i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":1000,"y":450,"wires":[["ee11d26aa7381961"]]},{"id":"ee11d26aa7381961","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1310,"y":450,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"c6597ae705c493fd","type":"subflow:2835c4be2e0c346c","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","x":1310,"y":490,"wires":[["69d3c375167219d4"],["e329d720082ab3ca"]]},{"id":"197fde062f906fe2","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 0","width":"2","height":"2","order":2,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1970,"y":60,"wires":[[]]},{"id":"d3117ab9bbdc344d","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 1","width":"2","height":"2","order":4,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1970,"y":120,"wires":[[]]},{"id":"a76caa7a16bac95c","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 2","width":"2","height":"2","order":6,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1970,"y":180,"wires":[[]]},{"id":"99fbdbd6f1247a74","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 3","width":"2","height":"2","order":8,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1970,"y":240,"wires":[[]]},{"id":"f41e2331b0b830d3","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 4","width":"2","height":"2","order":10,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1970,"y":300,"wires":[[]]},{"id":"98ad46a8c1cec362","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 5","width":"2","height":"2","order":12,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1970,"y":360,"wires":[[]]},{"id":"b4db27ab8e1249f9","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 6","width":"2","height":"2","order":14,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1970,"y":420,"wires":[[]]},{"id":"211a49ea39c47dbf","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 7","width":"2","height":"2","order":16,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1970,"y":480,"wires":[[]]},{"id":"345e2bc8bcaeeffd","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 8","width":"2","height":"2","order":18,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1970,"y":540,"wires":[[]]},{"id":"f3a5b1da15641fda","type":"ui_media","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"c5147f5beba7be52","name":"Brand 9","width":"2","height":"2","order":20,"category":"","file":"","layout":"adjust","showcontrols":false,"loop":false,"onstart":false,"scope":"local","tooltip":"","x":1970,"y":600,"wires":[[]]},{"id":"f82266bbecc5f929","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1870,"y":80,"wires":[["13527989f83e29d2","197fde062f906fe2","900c5206972e6c86","edda9c63ecdd3aa5"]]},{"id":"7ec8a975f4e62ea5","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1870,"y":140,"wires":[["7014c2032a87fc3b","d3117ab9bbdc344d","0d6ee42acdd37ff2","b17af5ca3a29fb12"]]},{"id":"b4c42883c0d1b421","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1870,"y":200,"wires":[["4bc7a1bfe0edbd3d","a76caa7a16bac95c","dfd2ccaa5bc1b57f","dce9b94037817b13"]]},{"id":"89f905a2a16a5653","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1870,"y":260,"wires":[["a789bc33845b6aae","99fbdbd6f1247a74","f69279700d78497e","c34edf432a785f77"]]},{"id":"bd92fd80ba8708f5","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1870,"y":310,"wires":[["a0ed1589c7578ebc","f41e2331b0b830d3","23f00bc1a8a74fa9","a83908819ec381b2"]]},{"id":"919354dd3a9d85e1","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1870,"y":370,"wires":[["b1eaf76d80b124b2","98ad46a8c1cec362","335994ff4485b3ec","ee43915933528bfa"]]},{"id":"af920dde227a02ba","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1870,"y":430,"wires":[["b4db27ab8e1249f9","671050bdedc0c3cb","42b492a395c7e579","85512989de4690f3"]]},{"id":"42965b35532dc0a6","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1870,"y":500,"wires":[["8e502b90702d3857","211a49ea39c47dbf","3c9ceafdd8c29bf3","419d1e6e4e82482e"]]},{"id":"198ea5a17cf29258","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1870,"y":560,"wires":[["a5b30e2c9a5b185b","345e2bc8bcaeeffd","a01f5e223eb1c084","7a0bc26925236777"]]},{"id":"591771770c56781a","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1870,"y":620,"wires":[["5cdf4a4e44ba3e96","f3a5b1da15641fda","ea45b82d3dbb59a7","13a4afa74f1e8be6"]]},{"id":"72b2d1bb06c9fd47","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Uno-X Tananger","func":"msg.id = 3589; // StasjonsID fra Drivstoffappen. Finnes i generelt \"Drivstoff\" tab.\nmsg.station = 'Uno-X Tananger'; // Visningsnavn. Kan tilpasses da stasjonsnavn i drivstoffappen ikke alltid er like beskrivende\nmsg.statInt = 'UnoXTana'; // Unikt kortnavn, 8 tegn, for bruk i flow-variabler\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":990,"y":490,"wires":[["c6597ae705c493fd"]]},{"id":"835b0df2bd3edcbb","type":"ui_chart","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","group":"c5147f5beba7be52","order":1,"width":"32","height":"20","label":"Dieselpris (6u).","chartType":"line","legend":"true","xformat":"DD dd hh:mm","interpolate":"step","nodata":"No data...","dot":false,"ymin":"","ymax":"","removeOlder":"6","removeOlderPoints":"","removeOlderUnit":"604800","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#f9fafa","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#0501f9","#9467bd","#f5ed00"],"outputs":1,"useDifferentColor":false,"className":"","x":1660,"y":630,"wires":[["494289de7de6d7f1","dc20c0baebcded39"]]},{"id":"69d3c375167219d4","type":"junction","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","x":1450,"y":640,"wires":[["835b0df2bd3edcbb","a5989d0a9b6bbaeb"]]},{"id":"e329d720082ab3ca","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"pri-pens","func":"switch (msg.pri){\n case 0:\n return [msg,null,null,null,null,null,null,null,null,null]\n case 1:\n return [null,msg,null,null,null,null,null,null,null,null]\n case 2:\n return [null,null,msg,null,null,null,null,null,null,null]\n case 3:\n return [null,null,null,msg,null,null,null,null,null,null]\n case 4:\n return [null,null,null,null,msg,null,null,null,null,null]\n case 5:\n return [null,null,null,null,null,msg,null,null,null,null]\n case 6:\n return [null,null,null,null,null,null,msg,null,null,null]\n case 7:\n return [null,null,null,null,null,null,null,msg,null,null]\n case 8:\n return [null,null,null,null,null,null,null,null,msg,null]\n case 9:\n return [null,null,null,null,null,null,null,null,null,msg]\n}\n","outputs":10,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1710,"y":320,"wires":[["f82266bbecc5f929"],["7ec8a975f4e62ea5"],["b4c42883c0d1b421"],["89f905a2a16a5653"],["bd92fd80ba8708f5"],["919354dd3a9d85e1"],["af920dde227a02ba"],["42965b35532dc0a6"],["198ea5a17cf29258"],["591771770c56781a"]]},{"id":"494289de7de6d7f1","type":"change","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"to flow.test","rules":[{"t":"set","p":"test","pt":"flow","to":"payload","tot":"msg"},{"t":"delete","p":"payload[0].data[10]","pt":"msg"},{"t":"delete","p":"payload[0].data[11]","pt":"msg"},{"t":"delete","p":"payload[0].series[10]","pt":"msg"},{"t":"delete","p":"payload[0].series[11]","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1980,"y":660,"wires":[[]]},{"id":"26ccfdd89731f3a7","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Change data for chart","func":"/*for (var i in msg.payload[0].series){\n if (msg.payload[0].series[i] == \"YX 7-Eleven Norheim\") msg.payload[0].series[i] = \"Uno-X Norheim\";\n //node.warn(msg.payload[0].series[i]);\n}*/\nfor (var i in msg.payload[0].data[6]){\n// console.log(msg.payload[0].data[6][i].y);\n if (msg.payload[0].data[6][i].y == 29.99){\n node.warn(\"Old data: \" + msg.payload[0].data[6][i].y);\n msg.payload[0].data[6][i].y = 18.99;\n }\n}\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1680,"y":740,"wires":[["9b2dcbd582073b91","835b0df2bd3edcbb"]]},{"id":"1e1b7ff7040d7b80","type":"inject","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"flow.test","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"test","payloadType":"flow","x":1480,"y":740,"wires":[["26ccfdd89731f3a7"]]},{"id":"9b2dcbd582073b91","type":"debug","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"debug 160","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":2000,"y":740,"wires":[]},{"id":"836292a9fd69e76b","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Change stationname for chart","func":"for (var i in msg.payload[0].series){\n if (msg.payload[0].series[i] == \"YX 7-Eleven Norheim\") msg.payload[0].series[i] = \"Uno-X Norheim\";\n //node.warn(msg.payload[0].series[i]);\n}\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1610,"y":520,"wires":[["835b0df2bd3edcbb"]]},{"id":"bcc37ebceee47007","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"Console log ferdig","func":"console.log(\"Dieselpriser innhenting ferdig\");\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":2020,"y":780,"wires":[[]]},{"id":"a05d8f5407d2cdb1","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"console.log Diesel End","func":"console.log(\"Dieselpriser slutt\");\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":1090,"y":640,"wires":[[]]},{"id":"900c5206972e6c86","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":2,"width":"2","height":"1","name":"Price0","label":"","format":"{{msg.payload}}","layout":"col-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2120,"y":80,"wires":[]},{"id":"0d6ee42acdd37ff2","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":4,"width":"2","height":"1","name":"Price1","label":"","format":"{{msg.payload}}","layout":"col-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2120,"y":140,"wires":[]},{"id":"dfd2ccaa5bc1b57f","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":6,"width":"2","height":"1","name":"Price2","label":"","format":"{{msg.payload}}","layout":"col-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2120,"y":190,"wires":[]},{"id":"f69279700d78497e","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":8,"width":"2","height":"1","name":"Price3","label":"","format":"{{msg.payload}}","layout":"col-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2120,"y":250,"wires":[]},{"id":"23f00bc1a8a74fa9","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":10,"width":"2","height":"1","name":"Price4","label":"","format":"{{msg.payload}}","layout":"col-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2120,"y":310,"wires":[]},{"id":"335994ff4485b3ec","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":12,"width":"2","height":"1","name":"Price5","label":"","format":"{{msg.payload}}","layout":"col-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2120,"y":370,"wires":[]},{"id":"42b492a395c7e579","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":14,"width":"2","height":"1","name":"Price6","label":"","format":"{{msg.payload}}","layout":"col-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2120,"y":440,"wires":[]},{"id":"3c9ceafdd8c29bf3","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":16,"width":"2","height":"1","name":"Price7","label":"","format":"{{msg.payload}}","layout":"col-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2120,"y":500,"wires":[]},{"id":"a01f5e223eb1c084","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":18,"width":"2","height":"1","name":"Price8","label":"","format":"{{msg.payload}}","layout":"col-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2120,"y":560,"wires":[]},{"id":"ea45b82d3dbb59a7","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":20,"width":"2","height":"1","name":"Price9","label":"","format":"{{msg.payload}}","layout":"col-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2120,"y":620,"wires":[]},{"id":"2b1034676d5cf0ad","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":1,"width":"2","height":"1","name":"Label0","label":"","format":"{{msg.payload}}","layout":"row-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2250,"y":50,"wires":[]},{"id":"edda9c63ecdd3aa5","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"lab2pl","func":"msg.payload = msg.label;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":2120,"y":50,"wires":[["2b1034676d5cf0ad"]]},{"id":"9b8a839f4476974a","type":"inject","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":1730,"y":70,"wires":[["e6a31dc9dfb2064d"]]},{"id":"211cc02ca79c120b","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":3,"width":"2","height":"1","name":"Label1","label":"","format":"{{msg.payload}}","layout":"row-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2250,"y":110,"wires":[]},{"id":"b17af5ca3a29fb12","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"lab2pl","func":"msg.payload = msg.label;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":2120,"y":110,"wires":[["211cc02ca79c120b"]]},{"id":"f3a4d2156cdcdab6","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":5,"width":"2","height":"1","name":"Label2","label":"","format":"{{msg.payload}}","layout":"row-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2250,"y":170,"wires":[]},{"id":"dce9b94037817b13","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"lab2pl","func":"msg.payload = msg.label;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":2120,"y":170,"wires":[["f3a4d2156cdcdab6"]]},{"id":"d1d4e9dece7df913","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":7,"width":"2","height":"1","name":"Label3","label":"","format":"{{msg.payload}}","layout":"row-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2250,"y":220,"wires":[]},{"id":"c34edf432a785f77","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"lab2pl","func":"msg.payload = msg.label;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":2120,"y":220,"wires":[["d1d4e9dece7df913"]]},{"id":"88e00589654790f5","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":9,"width":"2","height":"1","name":"Label4","label":"","format":"{{msg.payload}}","layout":"row-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2250,"y":280,"wires":[]},{"id":"a83908819ec381b2","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"lab2pl","func":"msg.payload = msg.label;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":2120,"y":280,"wires":[["88e00589654790f5"]]},{"id":"93aeb62e57c14023","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":11,"width":"2","height":"1","name":"Label5","label":"","format":"{{msg.payload}}","layout":"row-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2250,"y":340,"wires":[]},{"id":"ee43915933528bfa","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"lab2pl","func":"msg.payload = msg.label;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":2120,"y":340,"wires":[["93aeb62e57c14023"]]},{"id":"89afa177a44ffbc5","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":13,"width":"2","height":"1","name":"Label6","label":"","format":"{{msg.payload}}","layout":"row-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2250,"y":400,"wires":[]},{"id":"85512989de4690f3","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"lab2pl","func":"msg.payload = msg.label;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":2120,"y":400,"wires":[["89afa177a44ffbc5"]]},{"id":"6024725ae75382fb","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":15,"width":"2","height":"1","name":"Label7","label":"","format":"{{msg.payload}}","layout":"row-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2250,"y":470,"wires":[]},{"id":"419d1e6e4e82482e","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"lab2pl","func":"msg.payload = msg.label;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":2120,"y":470,"wires":[["6024725ae75382fb"]]},{"id":"1ea7fb4b20337450","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":17,"width":"2","height":"1","name":"Label8","label":"","format":"{{msg.payload}}","layout":"row-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2250,"y":530,"wires":[]},{"id":"7a0bc26925236777","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"lab2pl","func":"msg.payload = msg.label;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":2120,"y":530,"wires":[["1ea7fb4b20337450"]]},{"id":"86b7aca3b73895f5","type":"ui-text","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"110556e0baae6953","order":19,"width":"2","height":"1","name":"Label9","label":"","format":"{{msg.payload}}","layout":"row-center","style":false,"font":"","fontSize":16,"color":"#717171","wrapText":false,"className":"","x":2250,"y":590,"wires":[]},{"id":"13a4afa74f1e8be6","type":"function","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","name":"lab2pl","func":"msg.payload = msg.label;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":2120,"y":590,"wires":[["86b7aca3b73895f5"]]},{"id":"a5989d0a9b6bbaeb","type":"ui-chart","z":"2447f70b5f1095ba","g":"77e67d4e89c2c546","group":"deae7d4f0db6abd8","name":"","label":"Dieselpris (6u)","order":1,"chartType":"line","category":"topic","categoryType":"msg","xAxisLabel":"","xAxisProperty":"","xAxisPropertyType":"timestamp","xAxisType":"time","xAxisFormat":"","xAxisFormatType":"auto","xmin":"","xmax":"","yAxisLabel":"","yAxisProperty":"payload","yAxisPropertyType":"msg","ymin":"","ymax":"","bins":10,"action":"append","stackSeries":false,"pointShape":"false","pointRadius":4,"showLegend":true,"removeOlder":"6","removeOlderUnit":"604800","removeOlderPoints":"","colors":["#0095ff","#ff0000","#ff7f0e","#2ca02c","#a347e1","#d62728","#ff9896","#9467bd","#c5b0d5"],"textColor":["#f6f5f4"],"textColorDefault":false,"gridColor":["#e5e5e5"],"gridColorDefault":true,"width":"8","height":"14","className":"","interpolation":"step","x":1760,"y":590,"wires":[[]]},{"id":"8a6654beead70801","type":"persist-store","filename":"persist-diesel.json","interval":"900"},{"id":"110556e0baae6953","type":"ui-group","name":"Priser","page":"fdfb3f185ed18988","width":"4","height":"1","order":3,"showTitle":true,"className":"","visible":"true","disabled":"false","groupType":"default"},{"id":"deae7d4f0db6abd8","type":"ui-group","name":"Chart","page":"fdfb3f185ed18988","width":"8","height":"1","order":2,"showTitle":true,"className":"","visible":"true","disabled":"false","groupType":"default"},{"id":"fdfb3f185ed18988","type":"ui-page","name":"Dieselpriser","ui":"44c64ce8a980fc91","path":"/dieselpriser","icon":"home","layout":"grid","theme":"29f0478829dcd961","breakpoints":[{"name":"Default","px":"0","cols":"3"},{"name":"Tablet","px":"576","cols":"6"},{"name":"Small Desktop","px":"768","cols":"9"},{"name":"Desktop","px":"1024","cols":"12"}],"order":6,"className":"","visible":true,"disabled":false},{"id":"44c64ce8a980fc91","type":"ui-base","name":"Vale Cottage","path":"/dashboard","appIcon":"","includeClientData":true,"acceptsClientConfig":["ui-notification","ui-control","ui-iframe"],"showPathInSidebar":false,"headerContent":"page","navigationStyle":"fixed","titleBarStyle":"hidden","showReconnectNotification":true,"notificationDisplayTime":"5","showDisconnectNotification":true},{"id":"29f0478829dcd961","type":"ui-theme","name":"Dark","colors":{"surface":"#241f31","primary":"#3d997d","bgPage":"#241f31","groupBg":"#241f31","groupOutline":"#9a9996"},"sizes":{"density":"compact","pagePadding":"6px","groupGap":"6px","groupBorderRadius":"4px","widgetGap":"6px"}},{"id":"516b853f82e2fd07","type":"group","z":"2447f70b5f1095ba","name":"Vis universalliste drivstoffpriser i egen tab","style":{"label":true,"color":"#000000"},"nodes":["6ffebf4f1340a92e","fc1b2554d6e80f6b","5fd3c4e366a636d6","6bfcbbe7c43dcc84","03dc6f5b94c49e02","4d95ecb3e17e80a4","bf43e528a5851b0d","f193882be2dc7762","d9d0882ba114f2ae","dd937fc64214f72d","13d4a47fe1d5ae74","65cdb903a6486baf","6e102042f9d3270e","92ef0335f61a9718"],"x":644,"y":839,"w":912,"h":292},{"id":"6ffebf4f1340a92e","type":"ui_table","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","group":"0d788a3660f620b1","name":"All stations","order":4,"width":"12","height":"21","columns":[{"field":"name","title":"","width":"26%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"brand","title":"","width":"27%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"location","title":"","width":"31%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"id","title":"id","width":"13%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}}],"outputs":1,"cts":true,"x":1210,"y":920,"wires":[["fc1b2554d6e80f6b"]]},{"id":"fc1b2554d6e80f6b","type":"function","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","name":"add to favs","func":"var favs = flow.get(\"Favs\") || []\nvar pl = msg.payload;\nvar arr = [];\nvar exists = false;\narr = favs;\n\nfor (var i = 0;i < favs.length;i++){\n if (favs[i].id == pl.id) exists = true;\n}\nif (exists == false) arr.push(pl);\n\nflow.set(\"Favs\", arr);\nreturn msg; ","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":740,"y":960,"wires":[["6bfcbbe7c43dcc84"]]},{"id":"5fd3c4e366a636d6","type":"ui_table","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","group":"0d788a3660f620b1","name":"Selected stations","order":5,"width":"14","height":"22","columns":[{"field":"name","title":"name","width":"30%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"brand","title":"brand","width":"30%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"location","title":"location","width":"30%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"id","title":"id","width":"10%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}}],"outputs":1,"cts":true,"x":1230,"y":960,"wires":[["03dc6f5b94c49e02"]]},{"id":"6bfcbbe7c43dcc84","type":"function","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","name":"List fav stations","func":"var favs = flow.get(\"Favs\") || []\nvar arr = []\nvar msg2 = {}\nfor (var i = 0;i < favs.length;i++){\n let obj = {}\n obj.id = favs[i].id;\n obj.name = favs[i].name;\n obj.brand = favs[i].brand;\n obj.location = favs[i].location;\n arr.push(obj);\n}\nmsg2.payload = arr;\nreturn msg2; ","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":970,"y":960,"wires":[["5fd3c4e366a636d6","f193882be2dc7762"]]},{"id":"03dc6f5b94c49e02","type":"function","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","name":"Remove station from fav","func":"var i,j = 0;\nvar favs = flow.get(\"Favs\") || []\nvar favs2 = []\nvar remove = msg.payload;\nvar arr = []\nvar msg2 = {}\nfor (i = 0;i < favs.length;i++){\n if (favs[i].id != remove.id){\n favs2[j] = favs[i];\n j++;\n }\n}\nflow.set(\"Favs\", favs2)\nreturn msg; ","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":1180,"y":1030,"wires":[["6bfcbbe7c43dcc84"]]},{"id":"4d95ecb3e17e80a4","type":"ui_table","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","group":"0d788a3660f620b1","name":"Drivstoffpriser","order":6,"width":"14","height":"22","columns":[{"field":"brand","title":"","width":"20%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"name","title":"","width":"25%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"type","title":"","width":"15%","align":"right","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"price","title":"Kr","width":"15%","align":"right","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"age","title":"hrs.","width":"15%","align":"right","formatter":"plaintext","formatterParams":{"target":"_blank"}}],"outputs":1,"cts":true,"x":1220,"y":1090,"wires":[[]]},{"id":"bf43e528a5851b0d","type":"function","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","name":"List priser for favs","func":"var favs = flow.get(\"Favs\") || []\nvar stats = flow.get(\"stationsPrepd\") || []\nvar arr = []\nvar msg2 = {}\nvar now = Number(new Date());\nvar age = 0;\n\nfor (var i = 0;i < stats.length;i++){ //bla gjennom alle stasjoner\n for (var j = 0;j < favs.length;j++){ // bla gjennom favoritter\n if (stats[i].id == favs[j].id){ //er gjeldende stasjon i favoritter?\n// console.log(stats[i].prices);\n// for (var k = 0; k < stats[i].prices.length; k++){ // bla gjennom drivstofftyper\n for (var k in stats[i].prices){ // bla gjennom drivstofftyper\n// console.log(stats[i].id);\n let obj = {}\n obj.name = stats[i].name;\n obj.brand = stats[i].brand;\n obj.location = stats[i].location;\n obj.type = stats[i].prices[k].type;\n obj.price = stats[i].prices[k].price;\n obj.age = ((now - stats[i].prices[k].lastUpdated) / 3600 / 1000).toFixed(1);// + \"h\"; //age in hours\n arr.push(obj);\n }\n }\n }\n}\nmsg2.payload = arr;\nreturn msg2;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":980,"y":1090,"wires":[["4d95ecb3e17e80a4"]]},{"id":"f193882be2dc7762","type":"delay","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","name":"","pauseType":"delay","timeout":"500","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":770,"y":1090,"wires":[["bf43e528a5851b0d"]]},{"id":"d9d0882ba114f2ae","type":"ui_text_input","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","name":"","label":"Søk...","tooltip":"","group":"0d788a3660f620b1","order":7,"width":"10","height":"1","passthru":true,"mode":"text","delay":300,"topic":"topic","sendOnBlur":true,"className":"","topicType":"msg","x":720,"y":880,"wires":[["dd937fc64214f72d"]]},{"id":"dd937fc64214f72d","type":"function","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","name":"List selected stations","func":"var stats = flow.get(\"stationsPrepd\") || []\nvar searchText = msg.payload;\nvar arr = [];\nvar msg2 = {}\nfor (var i = 0;i < stats.length;i++){\n let obj = {}\n obj.id = stats[i].id;\n obj.name = stats[i].name || \"-\"\n obj.brand = stats[i].brand || \"-\"\n obj.location = stats[i].location || \"-\"\n // plukk ut bare stasjoner som inneholder søkebegrepet\n if (obj.name.includes(searchText) || obj.brand.includes(searchText) || obj.location.includes(searchText)){\n arr.push(obj);\n }\n}\nmsg2.payload = arr;\nreturn msg2;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":990,"y":880,"wires":[["6ffebf4f1340a92e"]]},{"id":"13d4a47fe1d5ae74","type":"ui_text","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","group":"0d788a3660f620b1","order":1,"width":"12","height":"1","name":"","label":"Alle stasjoner","format":"{{msg.payload}}","layout":"row-spread","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1450,"y":890,"wires":[]},{"id":"65cdb903a6486baf","type":"ui_text","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","group":"0d788a3660f620b1","order":2,"width":"14","height":"1","name":"","label":"Favoritter","format":"{{msg.payload}}","layout":"row-spread","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1430,"y":920,"wires":[]},{"id":"6e102042f9d3270e","type":"ui_text","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","group":"0d788a3660f620b1","order":3,"width":"13","height":"1","name":"","label":"Priser","format":"{{msg.payload}}","layout":"row-spread","className":"","style":false,"font":"","fontSize":"","color":"#000000","x":1420,"y":950,"wires":[]},{"id":"92ef0335f61a9718","type":"delay","z":"2447f70b5f1095ba","g":"516b853f82e2fd07","name":"","pauseType":"delay","timeout":"500","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":740,"y":1000,"wires":[["6bfcbbe7c43dcc84"]]},{"id":"0d788a3660f620b1","type":"ui_group","name":"Drivstoffpriser","tab":"1083c01bcc75e66c","order":1,"disp":true,"width":"40","collapse":false,"className":""},{"id":"1083c01bcc75e66c","type":"ui_tab","name":"Drivstoff","icon":"local_gas_station","order":25,"disabled":false,"hidden":false},{"id":"66fed02de14cd5a7","type":"group","z":"2447f70b5f1095ba","name":"Hente \"brands\" fra drivstoffappen","style":{"label":true,"color":"#000000"},"nodes":["372632c4f60d8424","77f438e4db6a6f68","82d67472bd4bb8a0","bd7bfcedba0b2323","0b4991ca32c4cf40"],"x":24,"y":589,"w":232,"h":242},{"id":"372632c4f60d8424","type":"http request","z":"2447f70b5f1095ba","g":"66fed02de14cd5a7","name":"API Request","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://api.drivstoffappen.no/api/v1/brands?stationTypeId=1","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[{"keyType":"other","keyValue":"X-API-KEY","valueType":"msg","valueValue":"md5Hash"},{"keyType":"other","keyValue":"X-CLIENT-ID","valueType":"other","valueValue":"com.raskebiler.drivstoff.appen.ios"}],"x":140,"y":710,"wires":[["77f438e4db6a6f68"]]},{"id":"77f438e4db6a6f68","type":"json","z":"2447f70b5f1095ba","g":"66fed02de14cd5a7","name":"","property":"payload","action":"","pretty":false,"x":120,"y":750,"wires":[["82d67472bd4bb8a0"]]},{"id":"82d67472bd4bb8a0","type":"change","z":"2447f70b5f1095ba","g":"66fed02de14cd5a7","name":"set flow.brands","rules":[{"t":"set","p":"brands","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":150,"y":790,"wires":[[]]},{"id":"bd7bfcedba0b2323","type":"inject","z":"2447f70b5f1095ba","g":"66fed02de14cd5a7","name":"Once a day","props":[{"p":"payload"}],"repeat":"","crontab":"03 12 * * *","once":false,"onceDelay":0.1,"topic":"","payload":"token2","payloadType":"flow","x":140,"y":670,"wires":[[]]},{"id":"0b4991ca32c4cf40","type":"change","z":"2447f70b5f1095ba","g":"66fed02de14cd5a7","name":"set.flow.token2","rules":[{"t":"set","p":"token2","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":150,"y":630,"wires":[["372632c4f60d8424"]]},{"id":"19e9dd7c0992a4db","type":"group","z":"2447f70b5f1095ba","name":"Hente \"stations\" fra drivstoffappen","style":{"label":true,"color":"#000000"},"nodes":["fb25d94b.139e78","9b28d83a.0226d","bc5b206f4b80b029","36db2ee7d9dbc9dc","09f4eac7c81a8f68","029b804564b2042d","ad3a3a41bdece374"],"x":14,"y":199,"w":252,"h":322},{"id":"fb25d94b.139e78","type":"http request","z":"2447f70b5f1095ba","g":"19e9dd7c0992a4db","name":"Get Token","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://api.drivstoffappen.no/api/v1/authorization-sessions","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":110,"y":280,"wires":[["9b28d83a.0226d"]]},{"id":"9b28d83a.0226d","type":"function","z":"2447f70b5f1095ba","g":"19e9dd7c0992a4db","name":"Process Token","func":"//console.log(\"Dieselpriser innhentes\");\nmsg.token = JSON.parse(msg.payload).token;\nmsg.tokenBytes = Buffer.from(msg.token);\nmsg.shiftedBytes = Buffer.concat([msg.tokenBytes.slice(1), msg.tokenBytes.slice(0, 1)]);\nmsg.shiftedToken = msg.shiftedBytes.toString();\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":120,"y":320,"wires":[["bc5b206f4b80b029"]]},{"id":"bc5b206f4b80b029","type":"md5","z":"2447f70b5f1095ba","g":"19e9dd7c0992a4db","name":"MD5","fieldToHash":"shiftedToken","fieldTypeToHash":"msg","hashField":"md5Hash","hashFieldType":"msg","x":90,"y":360,"wires":[["09f4eac7c81a8f68","0b4991ca32c4cf40"]]},{"id":"36db2ee7d9dbc9dc","type":"json","z":"2447f70b5f1095ba","g":"19e9dd7c0992a4db","name":"","property":"payload","action":"","pretty":false,"x":90,"y":440,"wires":[["029b804564b2042d"]]},{"id":"09f4eac7c81a8f68","type":"http request","z":"2447f70b5f1095ba","g":"19e9dd7c0992a4db","name":"API Request","method":"GET","ret":"txt","paytoqs":"ignore","url":"https://api.drivstoffappen.no/api/v1/stations?stationTypeId=1","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[{"keyType":"other","keyValue":"X-API-KEY","valueType":"msg","valueValue":"md5Hash"},{"keyType":"other","keyValue":"X-CLIENT-ID","valueType":"other","valueValue":"com.raskebiler.drivstoff.appen.ios"}],"x":110,"y":400,"wires":[["36db2ee7d9dbc9dc"]]},{"id":"029b804564b2042d","type":"change","z":"2447f70b5f1095ba","g":"19e9dd7c0992a4db","name":"set flow.stationsRaw","rules":[{"t":"set","p":"stationsRaw","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":140,"y":480,"wires":[["c622a1c1b5d187fe"]]},{"id":"ad3a3a41bdece374","type":"delay","z":"2447f70b5f1095ba","g":"19e9dd7c0992a4db","name":"","pauseType":"delay","timeout":"4","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":100,"y":240,"wires":[["fb25d94b.139e78"]]}]
  11. Filen heter "persist-diesel.json" og ligger /home/nodered (der "nodered" er brukernavnet på min maskin). Det beste er nok å slette de 2 persist-nodene før du deployer og heller legge de inn igjen senere, evt. trykke "+" i persist noden og legge til din egen fil: Både "Name" og "Store" må være identiske i et par av Persist-In og Persist-Out noder for at dette skal virke.
  12. Persist er bare for å beholde data gjennom Node-RED omstart og er ikke kritisk i det hele tatt. Du må nok opprette filen selv i persist-noden. Jeg har satt opp chart noden til å vise drivstoffdata i 6 uker så det er en smule irriterende å miste denne historikken med et lite blink i lyset, derfor persist-nodene for å ta vare på og gjenopprette historikken ved restart...
  13. Foreløpig har jeg kommet hit med overgangen til Dash2.0: Men en må ha bildet "Drivstoff" for mer detaljer og finne stasjons-ID og det har jeg ikke tatt meg tid til enda... Dash2.0 har fremdeles en del begrensinger og ikke minst en "skjerm-størrelsesenhet" som gjør det veldig vanskelig å putte mye info inn på ett bilde... Virker som om det er en grafisk designer som har fått mer makt enn de praktiske designerene... Men der har skjedd en god del positivt med Dash2.0 siden vi snakket om det på BP for en tid siden.
  14. @Mastiff Jeg har ikke tilpasset den til Dash2.0 enda men jobber med saken. Der har dukket opp noen svenske stasjoner i Drivstoffapp databasen som helt mangler prisinformasjon, det feltet er der bare ikke, og det får flowen min til å krasje. I denne funksjonsblokken: må der legges inn disse 2 linjene: Tror jeg fikk med meg de fleste versjonene her: Du kan godt installere Dashboard 1.0 samtidig med 2.0 for å se hvordan det virker...
  15. Jeg tror nok dette er en smule utenfor komfortsonen min. Ikke det at jeg tviholder på komfortsonen, det er jo ikke noe gøy, men jeg vil heller legge jobb i andre ting... Etter å ha lett litt på nett ser det ut til at HP kun har optimalisering av batterilevetid på laptoper for bedriftsmarkedet og ikke hjemmemarkedet. Proffene har en setting i BIOS som aktiverer dette og hjemmelaptoper har en helt annen BIOS (ser helt forskjellig ut og mangler bl.a. det saliggjørende valget). Litt begrenset hva en legger av jobb i en velbrukt laptop til kr 2000 også. Får se etter en proffmaskin neste gang.
  16. Ser jeg ikke har "charge_control_*":
  17. Supert, da har jeg litt mer å jobbe med. Har som nevnt prøvd noen alternative programmer men ingen klarte å gjøre noe på min laptop.
  18. Dette her fungerte jo helt som tenkt men ikke helt ideelt likevel for nå brukes batteriet aktivt (tømmes) rundt halve tiden og så lades opp igjen. Li-Ion batterier har vel noe sånt som 800 sykler tilgjengelig... Det beste hadde jo vært å lade batteriet opp til 80% og så gå over til å kjøre laptopen på direktestrøm uten batterilading men det vet jeg ikke hvordan jeg skal få til... Får gruble litt eller kanskje noen har tips?
  19. Dette her skulle nå være forholdsvis enkelt å lage i flere sammenhenger, i alle fall under Linux.
  20. Jeg har "i alle år" hatt laptopen stående på lading mer eller mindre døgnet rundt vel vitende om at batteriet ikke liker det... Lithiumbatteri liker seg aller best med en ladeprosent på 20 til 80. Der finnes en del programmer som kan installeres på laptopen der du kan styre batteriladingen til f.eks. 20 og 80% og jeg har prøvd noen av de på min HP ENVY x360 med Ryzen 7 prosessor men denne maskinen lar seg ikke styre på denne måten. Da får en ty til andre midler. I Linux finnes jo en mengde forskjelige verktøy som kan kombineres og i dette tilfellet endte jeg opp med denne løsningen: upower kan lese ut en masse informasjon om batteriet (finn navnet på batteriet med: upower --enumerate) grep gir en enkel utsortering av aktuell info resultatet lagres i tekstfil mosquitto_pub sender data fra tekstfil til mqtt broker Ovenforstående ligger i et shell script som fyres i gang f.eks. hvert 5 minutt av cron (sudo crontab -e) Node-RED henter data fra mqtt, gjør nødvendige beregninger og styrer en wallplug av/på etter valgte grenser for ladestatus mintre.sh: #!/bin/sh upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep percentage > /home/svein/mintre.txt mosquitto_pub -h 172.16.0.94 -u useruser -P passpass -t Teknisk/mintre/soc -f /home/svein/mintre.txt cron: */5 * * * * /home/svein/mintre.sh Node-RED: Funksjonsblokken "Charge on/off" inneholder: let chgCmd = true; let soc = Number(msg.payload.slice(-6,-2)); if (soc >= 80) context.set("chgCmd", false); if (soc <= 20) context.set("chgCmd", true); msg.topic = "Teknisk/mintre/charge" msg.payload = context.get("chgCmd"); return msg; ...og plutselig holder batteriet seg innenfor 20-80%😎 i alle fall så lenge den er på sin vante plass... ...og så kan en jo raffinere litt slik at batteriet bare går ned til 20 om natten og ned til 50-60 om dagen slik at en har større reserve om en må ta laptopen "ut på tur"...
  21. Det antikvariske nettbrettet med sprukket skjerm og Virtuino IoT i entreen sovnet omsider og ble erstattet av en RPi med 10.1" touchskjerm fra Ali og 3D printet ramme. Virtuino ble erstattet av et tilpasset Node-RED Dashboard 2.0 bilde men har jo da naturligvis kapasitet til å vise alle andre bildene i systemet.
  22. Nå er 4 stk LiFePO4 batterier oppe og går med til sammen 1070Ah, ca 54kWh. De 3 første har hver sin 200A JK-BMS som har kommunisert via BLE til en Raspberry Pi 3B+ som kjører jblance/mpp-solar. Dette har fungert helt fint men litt tregt med oppdatering hver ca 40 sekund. Helt greit til mitt bruk men ikke imponerende... Det fjerde batteriet har en tilsynelatende lik JK-BMS men er likevel en generasjon nyere uten at det umiddelbart viser uten etter litt leting. Dette er den siste JK-BMSen jeg har kjøpt og den har ligget som reserve i et års tid. mpp-solar får kontakt med BMSen men viser helt hinsides verdier så måtte gjøre noe... Finner at mpp-solar kun støtter noen svært få JK-BMSer... Etter litt leting finner jeg syssi/esphome-jk-bms og smetter den inn på en ESP32. Litt konfigurering som ikke lå helt oppe i dagen måtte til men ganske kjapt var den oppe og gå med et av eksempelprosjektene. Data mottatt til MQTT var langt mer omfattende (uten at jeg trenger noe mer enn det jeg hadde som også var ganske rikelig) og i en nokså annet format så rutinene mine i Node-RED måtte tilpasses litt... Oppdatering hvert 5 sekund er jo også greit. Kjapt vist i tabellform ser det slik ut: mpp-solar blir oppe og gå uansett om jeg legger de 3 siste batteriene også over på esphome-jk-bms for denne styrer også inverter.
  23. Jeg endret navn på den SSID som laget trøbbel men denne SSID var oppe og gikk likevel... Med appen "WiFi Analyzer" på telefonen fikk jeg opp MAC på aksesspunktet som laget trøbbel og selv om det etter signalstyrke kunne se ut til å være i gangen i hovedhuset fant jeg det på eldhusloftet: Et gammelt Ubiquiti aksesspunkt som ikke styres av UniFi... Litt pussig at jo nærmere Quislingen jeg var, jo dårligere ble signalstyrken... og da jeg gikk rundt og lette var jeg mindre enn 2 meter unna... Koblet ut dette og da forsvant denne SSID. Tilbakeførte SSIDnavn på opprinnelig nettverk og så langt ser det ut til at jeg er oppegående igjen... ...men jeg skjønner fremdeles ikke hvor 192.168.80.84 kommer fra... Antar det er det gamle aksesspunktet som har en "skjult" DHCP server... Noen ganger hjelper det bare å stille et spørsmål... 👍😁
  24. En litt snodig sak oppstod i går. Ett enkelt IPkamera (Tapo C200) får ip: 192.168.80.84 selv om det har fast ip i DHCP serveren satt til 172.16.0.xx. Det har koblet seg til et av mine trådløse nett men der har også dukket opp en mistenkelig melding i UniFi loggen: "A third-party access point near #et av mine aksesspunkt# is broadcasting #min SSID#. Prøvde å slå på "Rogue DHCP Server Detection" i UniFi server uten at det hjalp noe og "DHCP guarding" er også slått på... Nettverksoversikt: Altibox internet i bromodus. WiFi skal da være avslått. Tok den ut av bromodus, endret SSID og satt den i bromodus igjen uten at ny SSID dukket opp (som forventet) Ubiquiti EdgeMAX router med DHCP server i 172.16.0.nn området. Flere titalls enheter har fast IP satt i DHCP serveren, også det aktuelle kamera. UniFi lokal server for 4 UniFi aksesspunkt Så vidt jeg kan se er det kun dette ene kameraet som finner feil DHCP server/ikke finner DHCP server og går på en eller annen standard adresse. Jeg har funnet på nett at en del routere bruker 192.168.80.80 som service- eller adminport. Noen gode tips for feilsøking her? Eneste endringen i nettverk gjort de siste ukene er å flytte UniFi server fra en Windows maskin til en annen og konfigurasjon flyttet med backup gammel server/restore til ny.
×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.