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

SveinHa

Medlemmer
  • Innlegg

    1 718
  • Ble med

  • Besøkte siden sist

  • Dager vunnet

    106

Alt skrevet av SveinHa

  1. 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...
  2. 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...
  3. 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...
  4. 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...
  5. Supert. Jeg ser der henger igjen noe litt hårete programmering fra gamle dager... Skal fikse litt opp i det om litt...
  6. 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.
  7. 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...
  8. 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"]]}]
  9. 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.
  10. 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...
  11. 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.
  12. @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...
  13. 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.
  14. Ser jeg ikke har "charge_control_*":
  15. 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.
  16. 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?
  17. Dette her skulle nå være forholdsvis enkelt å lage i flere sammenhenger, i alle fall under Linux.
  18. 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"...
  19. 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.
  20. 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.
  21. 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... 👍😁
  22. 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.
  23. Ikke akkurat automatisert... men lagt mange timer i feilsøking på kablet nett som nesten ikke virker... Satte opp en ping-jobb med litt trending og endte opp slik: I starten er det jo stort sett greit men ping-tid langt utenfor skalaen er jo helt uakseptabelt. Symptomene er skjermbilder i Node-RED som fryser bare sekunder etter de er åpnet og fjernstyring av andre maskiner med VNC e.l. som også fryser etter få sekund same dårlig respons for det meste. Nå ville tilfeldighetene og litt mistanke at jeg pinget den maskinen som var årsak til problemene og da jeg endret ping til en annen maskin og så etter noen minutt stoppet Quislingen ordnet det seg ganske så bra: Den blå streken viser når Quislingen ble slått av. Fremdeles en og annen lang ping-tid men plutselig er jo nettet mitt oppegående igjen.
  24. Når en har hjemmeautomasjon, energistyring og 3D printing som noen av hobbyene så blir der ikke mye fritid... Den 8kW varmepumpen som havarerte for et år siden ble erstattet av en 2.8kW varmekolbe. Det har for så vidt fungert greit nok men 2.8kW er ganske snaut for grunnvarme i berederen og nesten alle gulvene i huset... I et lyst (?) øyeblikk heromdagen kom jeg på at jeg har stående en 17kW luft/vann monoblokk varmepumpe til poolen og den blir ikke fyrt opp før i mai... Og i mai trenger jeg ikke varmepumpe i huset... En liten flyttesjau og pool-pumpen fikk plass der den gamle stod... eller i alle fall nesten... Litt spesialkoblinger poppet ut av 3D printeren (oransje og grønn på bildet) og voila, full varme i hele huset på et blunk 😁 Nå er jo 17kW en smule overkill så jeg satte den på minimum og da tar den vannet opp fra 14 grd til 55 ved å bruke 2kW. Når jeg sier "poppet ut av 3D printeren" så er vel det tidenes overdrivelse for det kostet maaaaange timer med frustrasjon både på 3D modellering og printing. Jeg bruker helst Onshape for 3D modellering men den har ikke innvendige rørgjenger innebygget så det endte med at jeg laget en 3/4" gjengestuss i Fusion og importerte i Onshape. So far so good... Men det må jo produseres også. Hadde et EasyPrint PETG filament som iflg spec skulle være ideelt men jeg fikk ikke til å printe skikkelig. Mange 7 timers utskrifter skar seg etter 2-4 timer så jeg endte opp med en standard PETG. Men hvor lenge var Adam i Eva? Selv med et par cm tykt massivt materiale (100% infill) var der lekkasjer rett gjennom materialet... Nå er der på vei en i polykarbonat så får vi håpe den er bedre... Men så dukker jo det store spørsmålet opp: Hvorfor koster en erstatning for den forrige varmepumpen kr 70.000-120.000 når den jeg satte inn nå er dobbelt så stor og koster kr 33.000? Den opprinnelige var innstilt på 40 grader i vannet (kunne stilles til 55 men det visste jeg ikke og jeg kunne ikke endre det selv uten spesialverktøy) og pool-pumpen leverer 55 grader selv om den står på 34 grader setpunkt. Jeg har jo lenge sett at pool-pumper er betraktelig billigere enn hus-pumper men jeg har aldri skjønt hvorfor... og det gjør jeg fremdeles ikke...
×
×
  • 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.