Vinnerliste
Populært innhold
Viser innholdet med mest poeng siden 14. mars 2024 i alle områder
-
På hytta hadde jeg en vegg der jeg ønsket meg noe indirekte lys. En LED stripe hadde vært fint men skulle jeg sette den litt ned på veggen for å lyse på taket eller skulle jeg sette den i taket for å lyse ned på veggen? Hmmm hva med å gjøre den styrbar med en steppermotor og tilte den som det passet meg? En U aluminiumsprofl med plass til en LED stripe med adresserbare LEDs. Profilene kunne henges opp i hver ende med et ELFA garderobestang-feste slik som dette: med en 3D printet plugg Og så måtte jeg ha en boks på midten der jeg hadde elektronikken og en steppermotor: Det var allerede et lampepunkt i taket og boksen ble laget stor nok til å dekke dette. Fordi steppermotoren jeg hadde var 5V og ganske svak måtte jeg ha et gir. Onshape har ferdige rutiner for Wormgear så jeg definerte et sånn passe stort ett: Så ble det ganske mye fikling og måling, modellering og testprinting: Og når alt var på plass og skulle testes så vise det seg at poweret fra Ali var av dårlig kvalitet og sank spenningen når det ble belastet slik at ESP32'en restartet 😞 Nytt power ble bestillt men jeg orket ikke å printe en ny boks så det fikk være at den var litt oversized: Stepperen er en slik: og drives av en ULN2003 som ofte følger med når du kjøper se små stepperne For å slippe å måtte styre de høye strømmene med MOS-FET brukte jeg selvfølgelig adresserbare LED Så var det bare å skru alt opp i taket: Fordi lyspunktet i taket styres av en fysisk bryter er det programmert slik at den husker siste innstilling av farge og lysstyrke. Når den starter tenner den lysene en og en utover (because I can!) Etter litt testing tror jeg jeg har funnet den optimale vinkelen så det er ikke sikkert jeg lager så mye Alexa kommandoer for å justere denne, men barnebarna har fått en egen regnbue kommando da 🙂 Her er en video der jeg skrur på strømmen og ber Alexa om rainbow: IMG_6663.MP4 Foreløpig har HS bare fått disse devicene for testing: Her er koden rå, dere får heller spørre om dere lurer på noe. Tar gjerne tips om ting som kan gjøres bedre også. Legg merke til at jeg bruke siste LED på stripa som status LED Om jeg skulle gjøre det omigjen nå ville jeg valgt en 12V stepper så jeg kunne ha 12V LED. 5V gir veldig høy strøm med mulighet for varmgang og fallende spenning i enden av LEDen. Kanskje til og med 24V med en spenningsregulator til Stepperen og/eller ESP32'en.13 poeng
-
Etter stadige innbrudd med påfølgande redusert kjeksbeholdning vart det i dag konkludert med at dette ikkje kan fortsette. Fleire tiltak vart vurdert, før konklusjonen vart å montere Aqara dørsensor! Testa med god effekt, så får vi sjå framover om tjuven ved neste anledning får ein overraskelse 😁 Snapchat-532688679.mp412 poeng
-
@A.B. Hei, Matter er klar for Gen3 panelovner, med tentativ lanseringsdato i første eller andre uke av september 2024. Lanseringen kunne ha skjedd tidligere, men dette avhenger av en annen avdeling. Vi har også offisiell Homey Pro-integrasjon klar til august, som vil støtte alle Mill-produkter unntatt Gen1, som fortsatt bruker den gamle plattformen. Matter fungerer for alle andre produkter som socket, konveksjon og oljeovner, men i første omgang vil kun Gen3 panelovner og Gen3m bli sertifisert. Sertifisering er overraskende kostbart, og det er en lisenskostnad per enhet som Mill må betale. Det er mulig at andre enheter blir sertifisert hvis etterspørselen er stor nok. Jeg skulle gjerne sertifisert alle enhetene, men dette avgjøres av andre på kontoret. Skulle det bli besluttet, vil sertifiseringen gå raskt da alt fungerer utmerket. Noen interessante fakta: Gen3m batchen som produseres i år kommer med ESP32 C6, som har Matter, Zigbee i tillegg til WiFi 6. I 2025 vil denne brikken bli rullet ut til alle panelovner. De som har en Gen3m fra batchen som kommer i butikkene vil bli automatisk oppgradert slik at Zigbee og Matter støttes via OTA. Om du har noen gen3m ovner fra tidligere av så si ifra, jeg kan fikse nye gen3mv2 top del (som er gen4)for deg :) Bare send meg en PM med navn og addresse + tlf så fikser jeg det. Et annet morsomt poeng er at Gen3m og Gen4 kan kjøre Matter og Mill samtidig, så du kan være koblet til begge systemene. På Gen3 er dette ikke mulig på grunn av for lite minne, så der må man bytte mellom de ønskede systemene. Matter kommer som versjon 1.3, og funksjonaliteten er noe grunnleggende siden Matter fortsatt er ganske nytt. Det ser ut til at CSA bruker mer tid på å legge til nye produkttyper. De vil sannsynligvis legge til mer funksjonalitet i termostatmodulene etter hvert. Vi vil da kunne oppdatere til nye Matter-versjoner når tiden er inne. Ønsker deg en fortsatt flott kveld og sommer! @a.b En siste ting, neste uke øker vi API-kallgrensen fra 2300 til 5000 per time. Vi har mottatt mange klager på at den nåværende grensen er for lav. Derfor øker vi grensen til 5000 API-kall per time. Hvis dette fortsatt ikke er tilstrekkelig, tror jeg problemet ligger et annet sted.10 poeng
-
Da har jeg tatt avskjed med HomeSeer etter snart 20 år til fordel for Home Assistant. Jeg må si at jeg er mektig imponert over hvor enkelt integrasjoner bare popper inn. Har nå fått flyttet over alle Z-wave, Zigbee og RFXCom, samt fått opp Reolink kameraer, varmepumper, Nissan-tilkobling, Tibber, Yr, Sonos, TP-link mesh, Yale dørlås og en del andre Wi-Fi enheter jeg har i huset. Har ikke hatt noen problemer med å få dette satt opp overhodet. Z-wave var så enkelt som å flytte over USB-stick'en, siden den inneholder hele nettverket. For Zigbee valgte jeg å kjøpe en ny USB-stick (Sonoff 3.0) og legge til device på nytt inn i ZHA-integrasjonen. Dermed kunne den gamle PC'en fortsatt styre de enhetene jeg ikke hadde fått flyttet over. Skal sies at det gamle Zigbee-oppsettet kjørte på en Raspberry Pi med en Conbee stick. Kommer ikke til å savne noen av delene. Nå kjører alt på en Gigabyte Brix GB-BRR5H-4500 med 16 GB RAM (tenker å oppgradere til 32). Så nå er det bare å bygge noen kule dashboard og se på flere muligheter for å koble sammen enheter i forskjellige automasjoner.7 poeng
-
7 poeng
-
6 poeng
-
Har gjort veldig mye de siste par mnd: * Migrert alle serverne mine fra ESXi 7.0 til Proxmox VE (takk for den, Broadcom! 😞). Det gikk overraskende smertefritt, siden jeg hadde tilgang på en ekstra PC som kunne brukes. La da til ESXi-serveren i Proxmox og kunne bare ta en "import" av hver enkelt VM. Så var det bare å endre litt på nettverksoppsettet, fjerne VMtools og installere QEMU i stedet, så var det i boks! * Migrert fra Xeoma til Frigate for kameraene mine. Frigate kjører i en Proxmox LXC (Xeoma var en egen Ubuntu VM) og den får tilgang til å bruke iGPU, slik at CPU-belastningen er minimal (3 kamera). Jeg har også fått aktivert varsling ved detekterte personer i carporten på natt/borte (mot varsel ved bevegelse i Xeoma - blafrende plastposer, osv ga mange falske varsler!). * Migrert Mosquitto og Zigbee2MQTT til LXC. Disse kjørte før på samme VM som HomeSeer, men nå har jeg satt opp en Proxmox LXC til hver av dem i stedet. Da slipper jeg nedetid på disse tingene ved restart av HS-VMen f.eks. * Oppgradert fra HS3 til HS4. Det var vel litt "på overtid", 5 år etter jeg kjøpte oppgraderingslisens... Det gikk dessverre ikke helt smertefritt, for jeg kom meg ikke forbi lisens-aktiveringssiden (første siden man får opp etter oppgradering). Meldte supportsak til HS også, uten at det førte noen vei. Snapshot i Proxmox funker heldigvis fint da, så jeg kunne lett rulle tilbake til HS3. Etter et par kvelder så prøvde jeg nest nyeste versjon av HS4 - da funket det! 🙂 Utover det så merker jeg at særlig HSTouch er mye raskere/stabil med HS4 enn det det var med HS3. Og mscMQTT er også mer stabilt i nyeste versjon. * Fortsetter migreringen fra HomeSeer til Home Assistant. Det meste av ZigBee, Chromecasts, 433 MHz-utstyr er nå migrert over og styres fra HASS. Z-wave gjenstår, men der må jeg flytte ALT samtidig (i motsetning til ZigBee, som via Z2M kan styres fra begge systemer samtidig). Så her er det nok noen uker enda før jeg er i mål. 😛6 poeng
-
Jeg vil bare fremsnakke kundeservice fra Fibaro her. Jeg hadde surret bort noen monteringsdetaljer for noen av mine enheter og spurte på support om det er mulig å få tak i dem. Det kom svar etter en dag, og de bare sendte meg det jeg trengte. Helt gratis, og fri frakt. Riktignok ganske enkle plastdetaljer, men det kostet jo å behandle det og betale frakt. Så i tillegg til at Fibaro er de mest driftssikre komponentene i mine systemer, så har de også en kundebehandling som man ikke er vant til i 2024. Det er til å bli glad av, selv om det nå begynner å bli nok regnvær. Det kan de nok ikke gjøre noe med. MVH Einar Sjaavik6 poeng
-
Når en har en meget komplisert plen på 750 m2 og robotklipper uten sporing så dukker der jo fort opp behov for litt snekring på gutterommet... Har hatt meg en del turer rundt i hagen for å lete etter klipperen som har satt seg fast en eller annen plass så litt hjelp til å lete og, ikke minst, se hvilke områder som klippes er ganske greit... Nå har jeg jobbet noe tid med dette og det er på tide å dokumentere litt av prosessen i tilfelle andre vil gjøre noe lignende... 1: Skaffe kart over hagen. Her har jeg brukt kommunekart.com og "Tegn i kart" for å lage et omriss av plenen. Etter omrisset er laget lagres det til fil i kml format. For enkelhets skyld konverterer jeg denne til .geojson format i online konverteringsprogram. Pr i dag ser omrisset slik ut i kommunekart.com: .geojson filen importeres manuelt i Node-RED. Dette er jo en mer eller mindre engangs sak... 2: Innhente GPS-data og sende til MQTT. ESP32 med NEO-6 GPS koster "next to nothing" og er en grei løsning for dette bruket. Har slitt en del med Arduino-IDE så derfor havnet jeg på MicroPython denne gang. Siden jeg har 2 separate prosesser gående samtidig har jeg valgt å bruke uasyncio for multitasking. Task#1: Innhente data fra GPS og lagre posisjonsdata i fil. Task#2: På gitte intervall, pt hvert 30 sek, koble på wlan og sende data fra datafilen til MQTT broker. I hagen min er der noen wlan dødsoner og derfor nyttig å gjøre opplasting litt i rykk og napp når wlan er tilgjengelig. 3: Behandle GPS-data i Node-RED. Etterhvert som data mottas fra MQTT lagres de i et array of objects i flow-variabel og deretter tegnes det opp i en chart node. Array med data begrenses til et passende antall posisjoner, pt. 3000. Eldre data slettes automatisk. Prototype GPS-tracker: Første sporing: Node-RED: [{"id":"7b7be9e90c83eaff","type":"group","z":"c0e718067b85a8cc","name":"Lagre GPS-data","style":{"label":true},"nodes":["43d583213bfaa02f","2218191fe090798b","55b21eb55f283b61","8c73af56d7fdc323","36f55a2e222b2326","c466d510d0476f0e","93ac548a0bcda12d"],"x":24,"y":779,"w":832,"h":192},{"id":"43d583213bfaa02f","type":"mqtt in","z":"c0e718067b85a8cc","g":"7b7be9e90c83eaff","name":"","topic":"Ambrogio/Robertino/pos","qos":"2","datatype":"auto-detect","broker":"6db118ed1b0c56de","nl":false,"rap":true,"rh":0,"inputs":0,"x":160,"y":830,"wires":[["2218191fe090798b","55b21eb55f283b61","36f55a2e222b2326"]]},{"id":"2218191fe090798b","type":"show-value","z":"c0e718067b85a8cc","g":"7b7be9e90c83eaff","name":"","path":"","x":160,"y":880,"wires":[[]]},{"id":"55b21eb55f283b61","type":"function","z":"c0e718067b85a8cc","g":"7b7be9e90c83eaff","name":"GPS Tracker position","func":"let xMax = 5.229248;\nlet xMin = 5.228394;\nlet yMax = 59.392793;\nlet yMin = 59.392350;\nconst numpos = 4000;\nlet arr = flow.get(\"Robertino\") || []\nlet arr2 = []\n//node.warn(msg.payload);\nlet data = msg.payload;\n//var temp=data.split(\",\");\nlet msg2 = {}\n//node.warn(data);\n\n// lon/lat har format ddmm.mmmmmm\nlet lat = Number(data.lat) / 100;\n//node.warn(lat)\nlet intpart = parseInt(lat);\nlet fractpart = lat - intpart;\nlat = intpart + (fractpart * 1.666667);\n//node.warn(lat)\n\nlet lon = Number(data.lon) / 100;\nintpart = parseInt(lon);\nfractpart = lon - intpart;\nlon = intpart + (fractpart * 1.666667);\n\nlet time = data.utc;\n//node.warn(lat);\n//node.warn(lon);\n\n// Ignorer verdier utenfor kartet\nif (lat < yMax && lat > yMin && lon < xMax && lon > xMin) arr.push({\"lat\": lat, \"lon\": lon, \"UTC\": time});\n\n// Remove old positions\nlet n = arr.length;\n//node.warn(n);\narr2 = arr.slice(n - numpos);\n\n//node.warn(arr);\n//node.warn(arr2);\nflow.set(\"Robertino\", arr2);\nmsg.payload = \" \";\nmsg2.topic = \"Robertino\";\nmsg2.payload = time;\nreturn [msg, msg2];","outputs":2,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":410,"y":830,"wires":[["c466d510d0476f0e"],["8c73af56d7fdc323"]]},{"id":"8c73af56d7fdc323","type":"ui_text","z":"c0e718067b85a8cc","g":"7b7be9e90c83eaff","group":"a7f439d7b1e0bbd4","order":9,"width":"8","height":"1","name":"Robertino last track","label":"{{msg.topic}} last trck","format":"<font size=6>{{msg.payload}}<font size=3> UTC","layout":"row-spread","className":"","style":false,"font":"","fontSize":16,"color":"#000000","x":740,"y":870,"wires":[]},{"id":"36f55a2e222b2326","type":"debug","z":"c0e718067b85a8cc","g":"7b7be9e90c83eaff","name":"debug 180","active":true,"tosidebar":false,"console":false,"tostatus":true,"complete":"payload","targetType":"msg","statusVal":"","statusType":"counter","x":160,"y":930,"wires":[]},{"id":"c466d510d0476f0e","type":"function","z":"c0e718067b85a8cc","g":"7b7be9e90c83eaff","name":"Reset delay","func":"//msg.delay = 600000;\nvar m1 = {reset:true};\nreturn [[m1,msg]];","outputs":1,"noerr":0,"initialize":"","finalize":"","libs":[],"x":610,"y":820,"wires":[["93ac548a0bcda12d"]]},{"id":"93ac548a0bcda12d","type":"delay","z":"c0e718067b85a8cc","g":"7b7be9e90c83eaff","name":"","pauseType":"delay","timeout":"2","timeoutUnits":"seconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":770,"y":820,"wires":[["3f628673e320b6ef"]]},{"id":"6db118ed1b0c56de","type":"mqtt-broker","name":"DaleMQTT","broker":"172.16.0.94","port":"1883","clientid":"34567890","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":false,"autoUnsubscribe":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"userProps":"","sessionExpiry":""},{"id":"a7f439d7b1e0bbd4","type":"ui_group","name":"Status","tab":"55b4bf40cf1e815d","order":2,"disp":true,"width":"8","collapse":false,"className":""},{"id":"55b4bf40cf1e815d","type":"ui_tab","name":"Ambrogios","icon":"android","order":23,"disabled":false,"hidden":false},{"id":"af4caa710bbb0c2a","type":"group","z":"c0e718067b85a8cc","name":"Presenter GPS data i chart","style":{"label":true},"nodes":["8e291ee416e96572","597d06bd03195022","6969dbab26c1048b","51404847151e1696","3f628673e320b6ef"],"x":24,"y":999,"w":742,"h":112},{"id":"8e291ee416e96572","type":"inject","z":"c0e718067b85a8cc","g":"af4caa710bbb0c2a","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":true,"onceDelay":"10","topic":"","payload":"","payloadType":"date","x":140,"y":1050,"wires":[["3f628673e320b6ef"]]},{"id":"597d06bd03195022","type":"function","z":"c0e718067b85a8cc","g":"af4caa710bbb0c2a","name":"Read temp positions & parse","func":"//let poss = flow.get(\"temp\");\nlet poss = flow.get(\"Robertino\") || []\nvar data = []\nvar data0 = []\nvar data1 = []\nvar data2 = []\nvar data3 = []\nlet j = 0;\n//for (let i in poss.data[0].attributes.positions){\n// data0.push({x: poss.data[0].attributes.positions[i].longitude,y:poss.data[0].attributes.positions[i].latitude});\nfor (let i in poss){\n if (poss[i].lat > 59 && poss[i].lon > 5) data0.push({x: poss[i].lon,y:poss[i].lat});\n// node.warn(poss.data[0].attributes.positions[i].longitude);\nj = i;\n}\n// Ta vare på siste pos for oransje markering plott (nåværende pos)\n//data2.push({x: poss.data[0].attributes.positions[0].longitude,y:poss.data[0].attributes.positions[0].latitude});\n//data2.push({x: poss.data[0].attributes.positions[1].longitude,y:poss.data[0].attributes.positions[1].latitude});\ndata2.push({x: poss[j-3].lon,y:poss[j-3].lat});\ndata2.push({x: poss[j-2].lon,y:poss[j-2].lat});\ndata2.push({x: poss[j-1].lon,y:poss[j-1].lat});\ndata2.push({x: poss[j].lon,y:poss[j].lat});\n\n// Omriss av plenen\ndata1 = flow.get(\"plen\");\n// Omriss av elendom\ndata3 = flow.get(\"eiendom\");\n\n\ndata[1] = data1; // Lawnlimits\ndata[3] = data3; // Lawnlimits\ndata[2] = data0; // Track\ndata[0] = data2; // Last track\n//node.warn(data[2]);\n\nmsg.payload = [{\n \"series\": [\"A\",\"B\",\"C\",\"D\"],\n \"xAxisID\": 'custom-x-axis',\n \"yAxisID\": 'custom-y-axis',\n \"data\": data,\n \"labels\": [\"\"]\n}]\n\nreturn msg;\n","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":450,"y":1040,"wires":[["51404847151e1696"]]},{"id":"6969dbab26c1048b","type":"function","z":"c0e718067b85a8cc","g":"af4caa710bbb0c2a","name":"modify chart options","func":"/*let centX = 5.1372;//2285;\nlet xW = 0.0005;\nlet xH = 0.0005;\nlet centY = 59.2355;//3924;\nlet xMax = centX + xW;\nlet xMin = centX - xW;\nlet yMax = centY + xH;\nlet yMin = centY - xH;\n*/\nlet xMax = 5.229248;\nlet xMin = 5.228394;\nlet yMax = 59.392793;\nlet yMin = 59.392350;\n\n\nlet gridcolors = 'rgba(255, 160, 0, 0.3)'\nmsg.ui_control = {\n options: {\n legend: {\n display: false\n },\n tooltips: {\n enabled: false\n },\n scales: {\n xAxes: [{\n type: 'linear',\n id: 'custom-x-axis',\n position:'bottom',\n padding:100,\n gridLines:{\n color:gridcolors,\n zeroLineColor:'rgba(123, 113, 113, 0.75)',\n tickMarkLength:7,\n drawTicks:false\n },\n ticks: {\n fontColor:\"#ccc\",\n max: xMax,\n min: xMin,\n stepSize: 0.0001\n \n }\n }],\n yAxes: [{\n id: 'custom-y-axis',\n \n gridLines:{\n color:gridcolors,\n zeroLineColor:'red',\n tickMarkLength:5,\n drawTicks:false\n },\n ticks: {\n fontColor:\"#ccc\",\n max: yMax,\n min: yMin,\n stepSize: 0.0001\n }\n }]\n }\n }\n}\ndelete msg.payload\nreturn msg;","outputs":1,"timeout":"","noerr":0,"initialize":"","finalize":"","libs":[],"x":430,"y":1070,"wires":[["51404847151e1696"]]},{"id":"51404847151e1696","type":"ui_chart","z":"c0e718067b85a8cc","g":"af4caa710bbb0c2a","name":"Plen","group":"7ab0161dbb92ab3f","order":3,"width":"30","height":"20","label":"","chartType":"line","legend":"false","xformat":"auto","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":"1","removeOlderPoints":"","removeOlderUnit":"3600","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#ff7f00","#00ff00","#8585fa","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"className":"","x":690,"y":1040,"wires":[[]]},{"id":"3f628673e320b6ef","type":"junction","z":"c0e718067b85a8cc","g":"af4caa710bbb0c2a","x":280,"y":1050,"wires":[["597d06bd03195022","6969dbab26c1048b"]]},{"id":"7ab0161dbb92ab3f","type":"ui_group","name":"Map","tab":"55b4bf40cf1e815d","order":3,"disp":true,"width":"32","collapse":false,"className":""},{"id":"f51cf63d67a5a2e5","type":"group","z":"c0e718067b85a8cc","name":"Les geojson fil og lagre koordinater i flow.plen","style":{"label":true},"nodes":["7a8aba7d1b2233c3","c3ac6155687bd8b2","7a3a31186dd532c5","65861ab97117862e"],"x":24,"y":1139,"w":1012,"h":82},{"id":"7a8aba7d1b2233c3","type":"json","z":"c0e718067b85a8cc","g":"f51cf63d67a5a2e5","name":"","property":"payload","action":"","pretty":false,"x":670,"y":1180,"wires":[["c3ac6155687bd8b2"]]},{"id":"c3ac6155687bd8b2","type":"function","z":"c0e718067b85a8cc","g":"f51cf63d67a5a2e5","name":"Plukk ut pos fra fil og lagre i flow","func":"var plen = []\nvar eiendom = []\n\nfor (var i in msg.payload.features[0].geometry.coordinates){\n let tempobj = {x: msg.payload.features[0].geometry.coordinates[i][0] ,y: msg.payload.features[0].geometry.coordinates[i][1]};\n plen.push(tempobj);\n}\n//payload.features[1].geometry.coordinates[0][0]\n//payload.features[1].geometry.coordinates[0][9]\n//payload.features[1].geometry.coordinates[0][9][0]\n//payload.features[1].geometry.coordinates[0][9][1]\nfor (var i in msg.payload.features[1].geometry.coordinates[0]) {\n let tempobj = { x: msg.payload.features[1].geometry.coordinates[0][i][0], y: msg.payload.features[1].geometry.coordinates[0][i][1] };\n eiendom.push(tempobj);\n}\n//node.warn(plen);\nflow.set(\"plen\", plen);\nflow.set(\"eiendom\", eiendom);\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":880,"y":1180,"wires":[["3f628673e320b6ef"]]},{"id":"7a3a31186dd532c5","type":"file in","z":"c0e718067b85a8cc","g":"f51cf63d67a5a2e5","name":"","filename":"/home/nodered/PlenV4Eiendom.geojson","filenameType":"str","format":"utf8","chunk":false,"sendError":false,"encoding":"none","allProps":false,"x":390,"y":1180,"wires":[["7a8aba7d1b2233c3"]]},{"id":"65861ab97117862e","type":"inject","z":"c0e718067b85a8cc","g":"f51cf63d67a5a2e5","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":130,"y":1180,"wires":[["7a3a31186dd532c5"]]}] uPython programmet: import ubinascii import machine from umqtt.simple import MQTTClient from machine import UART import network, utime, machine import os import uasyncio import json uart = UART(2, 9600) SSID = "WLAN-SSID" SSID_PASSWORD = "WLAN-PWD" filenum = 0 SERVER = "172.16.0.94" CLIENT_ID = ubinascii.hexlify(machine.unique_id()) TOPIC = "Ambrogio/Robertino/pos" gps_target = "$GPGGA" gps_target = gps_target.encode('ASCII') async def readAndSend(): global filenum while True: await uasyncio.sleep_ms(1000 * 30) #Run every 30 sec sta_if = network.WLAN(network.STA_IF) if not sta_if.isconnected(): print('connecting to network...') sta_if.active(True) sta_if.connect(SSID, SSID_PASSWORD) while not sta_if.isconnected(): print("Attempting to connect....") await uasyncio.sleep_ms(1000) print('Connected! Network config:', sta_if.ifconfig()) mqttClient = MQTTClient(CLIENT_ID, SERVER, keepalive=60) mqttClient.connect() print(f"Connected to MQTT Broker: {SERVER}") locfilenum = filenum # Store current filenumber filenum = filenum + 1 # New filenumber for logging filename = 'data'+str(locfilenum)+'.txt' if filename in os.listdir(): print('Found '+ filename) f = open(filename, 'r') line = f.readline() while line != "": print(filename+", MQTT:"+line.strip()) mqttClient.publish(TOPIC, str(line)) await uasyncio.sleep_ms(500) line = f.readline() print("file finished") print("Removing ", filename) os.remove(filename) mqttClient.disconnect() print("Disconnect from wlan") sta_if.disconnect() def left(s, amount): return s[:amount] async def main(): global filenum print("Cleanup old files...") # Delete all existing data files on startup for f in os.listdir(): if left(f, 4) == "data": print("Deleting: ", f) os.remove(f) print("All data files deleted.") while True: if uart.any() > 0: await uasyncio.sleep_ms(100) gps_msg = uart.readline() if len(gps_msg) >= 60: gps_type = left(gps_msg, 6) if gps_type == gps_target: utc = gps_msg[7:13] lat = gps_msg[17:27] lon = gps_msg[30:41] newmsg = {} newmsg['utc'] = utc newmsg['lat'] = lat newmsg['lon'] = lon jmsg = json.dumps(newmsg) # Create JSON object for datafile #if lat >= '5923' and lat <= '5924' and lon >= '513' and lon <= '514': filename = 'data'+str(filenum)+'.txt' print(filename+", GPS:"+jmsg) f = open(filename, 'a') f.write(jmsg) f.write("\r\n") f.close() await uasyncio.sleep_ms(200) # Start hele sulamitten event_loop = uasyncio.get_event_loop() event_loop.create_task(main()) event_loop.create_task(readAndSend()) event_loop.run_forever() ESP32 forsynes pt via USB fra en batteribank og GPS forsynes fra Vin og GND pinnene på ESP32. GPS-TX går til ESP-RX2, GPS-RX til ESP-TX2. Har sett i minst ett eksempel på nett at NEO6 GPSen forsynes fra 3.3V men spec sier at NEO6 skal ha 3.7-5V. Prøvde først med 3.3V og det virket men fikk en del mangelfulle setninger fra GPS så med 5V gikk det myyyyye bedre... Så langt ha jeg brukt en 10Ah batteribank og den holder liv i greiene i mange døgn men skal hacke meg inn på strømforsyningen i klipperen etterhvert...5 poeng
-
Hei! Det jobbes kontinuerlig med oppdateringer for komfyrvakt. Komfyrvakten følger også Zigbee standard så langt det lar seg gjøre. Da komfyrvakt ikke har noen egen standard i Zigbee 3.0 må det dessverre noen egne tilpasninger til for å få dette så nært optimalt som mulig. Når det er sagt så er det hovedsakelig rapportering som er fokus for produktet (sensortemperatur, strømforbruk, alarm og relé status). Kontroll av selve reléet er begrenset til kun å kunne slå dette av via Zigbee protokollen (krav for sertifisering - Vi har også vurdert å fjerne dette i fremtidig oppdatering og kun ha rapportering om status). Det jobbes med en firmware oppdatering for produktet som skal rette kWt oppdateringen (Rapporteres kun 1 gang pr døgn via Zigbee) samt generelle stabilitetsendringer. Vi jobber også med en OTA oppdateringsløsning via BT for de plattformer som ikke har OTA via Zigbee innebygget som gjør det enklere å få de nyeste oppdateringene på produktet. Vi har tidligere vært i dialog med Nabucasa direkte for en "Works with Home Assistant" sertifisering uten at vi kom i mål den gangen. Det er en del praktiske ting samt kostnadsspørsmål som må på plass. Når det er sagt så tar jeg dette absolutt med videre. Hva er deres foretrukne løsning for integrasjon i HA? Z2M eller ZHA?5 poeng
-
Høstens første frost krever alltid litt ekstra arbeid så det er greit å få et varsel noen dager i forkant. Hjul på bil må skiftes, vannslange må innendørs, utekrane må sjekkes at den er tom for vann og campingvogn sine vannbeholdere må tømmes. Så da er et varsel i HA laget slik som dette Det er kun et lett synlig bilde som har en betingelse for synlighet. Først laget jeg en sensor som viser laveste temperatur meldt de nærmeste dagene. - template: - trigger: - trigger: state entity_id: weather.orstad_utsyn action: - action: weather.get_forecasts data: type: daily target: entity_id: weather.orstad_utsyn response_variable: wd sensor: - unique_id: laveste_temperatur_framover name: "Laveste temperatur framover" unit_of_measurement: "°C" state: "{{ [state_attr('weather.orstad_utsyn', 'temperature')|float(0), (wd['weather.orstad_utsyn'].forecast | rejectattr('templow', 'undefined') | map(attribute='templow')|list|min)]|min|round(1) }}" Deretter en binær sensor som bruker laveste temperatur sammen med måned. Jeg trenger ikke varsel om høstens første frost i desember til mai. -template: - binary_sensor: - unique_id: bbb82639-7432-4f3f-8950-a5c860a6ede0 name: frostvarsel state: "{{ states('sensor.laveste_temperatur_framover')|float < 2 and (now().month == 9 or now().month == 10 or now().month == 11) }}" Selve kortet er lagd som dette5 poeng
-
Vi åpner nå tre nye forum for direkte kommunikasjon med smarthus leverandørene! Vi har snakket med tre av de store smarthus leverandørene og signalisert et behov for enkelt å kunne kontakte kompetente personer hos dem for å få svar på mer kompliserte tekniske spørsmål. Det viste seg at de også hadde et ønske om å kunne få ryddet opp i en del feilinformasjon og myter som flyter rundt i sosiale fora. Dette er organisert rundt et eget forum for hver leverandør der det som vanlig er oss forumdeltakere som spør og svarer på det vi kan, men i tillegg vil det være representanter for leverandøren der med egne brukere som kan gi fasit eller korreksjoner. Leverandørenes brukere vil være klart merket så det vil ikke være tvil om hvem du får svar fra. Hvert forum vil ha en underkategori for spørsmål og svar og en for generell diskusjon og kommunikasjon. Forumene finner du her: https://www.hjemmeautomasjon.no/forums/forum/110-leverandører/ Vis full oppføring5 poeng
-
Det er ihvertfall mer enn dere har fått til på de 6 årene integrasjonen har eksistert 🙂5 poeng
-
https://rc.home-assistant.io/blog/2024/03/27/release-20244/ Det er ikke så mye mer å si enn JUHU!!!! Endelig muligheter for å kategorisere automasjoner og så flesker de til med å kunne kategorisere og merke hva som helst annet. Jeg tenkte på min egen PID regulering som holder huset i rette effekttrinn på nettleie. Her er listen over gulvvarme og andre varmekilder hardkodet i et skript for å få rett prioritering. Men det kunne vært løst mer elegant med å sette en merkelapp på hver varmekilde som angir prioritering. Da kan skriptet lages universelt og blir lettere å dele.5 poeng
-
Jeg har laget min første Home Assistant-integrasjon - Google pollen! Jeg kan egentlig ikke Python, men kan programmere i andre språk. Så jeg klarer å lese og forstå Python, men ikke å «skrive det fra bunn». Ble ganske imponert over Github Copilot, som ganske kjapt og enkelt lagde en fungerende kode som jeg kunne bruke som utgangspunkt! Koden ligger her: https://github.com/svenove/home-assistant-google-pollen4 poeng
-
Ok nå har jeg lekt ganske mye. Laget meg en template sensor som bruker Nordpool input, og så har jeg satt opp en gjeng med hjelpere for å ha data om nettpriser for dag/natt, moms, strømselskap osv osv. Alt kan nå konfigureres via GUI, eneste som blir litt massivt er selve template sensoren men den setter man jo opp bare en gang. Synes det ble ganske bra! Nå skal jeg bare se over litt tid om det fungerer stabilt.4 poeng
-
"Feilen" ligger i betingelsene dine: Når sikringen har gått vil garasjelyset aldri kunne bli "OFF". Dermed sørger denne linja: ... for å trigge eventet hvert eneste sekund. "For at least XX" er skummelt å bruke som første betingelse. Bruk heller "for exactly 10 m", så slipper du problemet 🙂 Som en ekstra betingelse går det som oftest utmerket å bruke "for at least". Se FAQ nederst i HS skolen del 7:4 poeng
-
Vi åpner nå tre nye forum for direkte kommunikasjon med smarthus leverandørene! Vi har snakket med tre av de store smarthus leverandørene og signalisert et behov for enkelt å kunne kontakte kompetente personer hos dem for å få svar på mer kompliserte tekniske spørsmål. Det viste seg at de også hadde et ønske om å kunne få ryddet opp i en del feilinformasjon og myter som flyter rundt i sosiale fora. Dette er organisert rundt et eget forum for hver leverandør der det som vanlig er oss forumdeltakere som spør og svarer på det vi kan, men i tillegg vil det være representanter for leverandøren der med egne brukere som kan gi fasit eller korreksjoner. Leverandørenes brukere vil være klart merket så det vil ikke være tvil om hvem du får svar fra. Hvert forum vil ha en underkategori for spørsmål og svar og en for generell diskusjon og kommunikasjon. Forumene finner du her: https://www.hjemmeautomasjon.no/forums/forum/110-leverandører/4 poeng
-
4 poeng
-
Da er jeg i boks med fjernstyring av Alde 3000 vannbåren varme og fjernstyring av stigetrinn i bobilen. Kabler var greie å komme til. I boksen er en RPi 3B+ og 2x4 rele som styres av Node-RED med Node-RED Dashboard som brukergrensesnitt. Som en bonus fikk jeg også med meg zigbee2mqtt, Mosquitto og en G-sensor som forteller meg om bilen står beint. Det hele plassert i custom designet 3D printet boks:4 poeng
-
I går dukket MMU3 (MultiMediaUnit gen 3)opp på døra. Et par timers bygging og jeg har 5-farge print. En kjapp prøveoppstilling ser slik ut: ...og de første prøveprintene: Ser standardinnstillignene for fargeskift må justeres litt da rødfargen i sauen smitter over i ullen... Enkel sak... Har så langt fungert helt 100%... Så da fikk 3D printeren plutselig et helt annet bruksområde i tillegg...4 poeng
-
4 poeng
-
Jeg liker å få varsel på telefon når noe skjer i HA som jeg bør gjøre noe med. Dette har jeg forsåvidt fint fått til i pyscript, men jeg synes det har vært litt dillete å sette opp fordi det ikke alltid er like lett å vite hva triggere inneholder av data. Nå som jeg har gått over til automasjoner i HA er det mye som er langt lettere å få til med en, etter min mening, god visuell editor. Her er et eksempel. I den visuelle editoren ser det slik ut: Koden for dette er vist nederst. Det som skjer er at når stråleovn på terrasse har stått på i 33 minutter og 10 sekunder så sendes et varsel til mobiltelefon Så venter automasjonen i opp til 6 timer på svar. Hvis ovn slås av før dette så forsvinner melding på telefon. Den forsvinner også hvis 6 timer går uten svar. Trykker jeg på "Nei" så slås ovn av. Tidligere hadde jeg dette i flere funksjoner i pyscript. Når jeg flyttet det over til HA automasjon så ble det laget flere automasjoner, en for å sende melding og en annen som ventet på svar fra telefon. I dag fant jeg ut jeg ville samle dette til en enkel automasjon som både sender melding og som venter på svar. Fordelen er å samle dette. Bakdelen er at en vent-operasjon ikke overlever en omstart av HA. Det klarer jeg å leve med på akkurat denne for stråleovnen, men i andre sammenhenger er det jo litt dumt. - id: '1712999347947' alias: Spør om terrassevarmer skal slås av description: '' trigger: - platform: state entity_id: - switch.terrassevarmer from: 'off' to: 'on' for: hours: 0 minutes: 33 seconds: 10 condition: [] action: - service: notify.mobile_app_pixel_7 metadata: {} data: message: Skal den fortsatt stå på? title: Terrassevarmer data: tag: terrassevarmer actions: - action: NO_ACTION_TERRASSEVARMER title: Ja - action: SWITCH_OFF_TERRASSEVARMER title: Nei - wait_for_trigger: - platform: event event_type: mobile_app_notification_action event_data: action: SWITCH_OFF_TERRASSEVARMER - platform: event event_type: mobile_app_notification_action event_data: action: NO_ACTION_TERRASSEVARMER - platform: state entity_id: - switch.terrassevarmer from: 'on' to: 'off' continue_on_timeout: true timeout: hours: 6 minutes: 0 seconds: 0 milliseconds: 0 - choose: - conditions: - condition: template value_template: >- {{ wait.trigger == None or (wait.trigger.platform == 'state' and wait.trigger.to_state.state == 'off')}} sequence: - service: notify.mobile_app_pixel_7 metadata: {} data: message: clear_notification data: tag: terrassevarmer - conditions: - condition: template value_template: >- {{ wait.trigger.platform == 'event' and wait.trigger.event.data.action == 'SWITCH_OFF_TERRASSEVARMER' }} sequence: - service: switch.turn_off metadata: {} data: {} target: entity_id: switch.terrassevarmer mode: restart4 poeng
-
Ny 3D printer i huset: Prusa MK4. Skrevet litt om det her: https://www.sveinha.com/j3/index.php/hobby/3d-printing/165-ny-printer-prusa-mk44 poeng
-
Her er kode for å lese DS18B20: Bibliotekene er: Dalles DS18B20 ser ut som en transistor men er egentlig en IC. Den finnes i TO-92 (som en liten transistor) pakning men også bygget inn i en vanntett rustfri probe med lang kabel: Den er superenkel å bruke til å lese temperaturer med og koster lite. Det eneste den trenger er en pull-up resistor på 4,7k (Mellom + og Data) Spenningen kan være mellom 3 og 5,5V (Altså kan du bruke 3,3V spenningen fra ESP32en om det trengs. Mange sensorer Du kan koble opptil 32 stk DS18B20 etter hverandre på samme kabelen (Kun 1 pullup resistor) Du kan spørre etter antallet slik: deviceCount = sensors.getDeviceCount(); Og du leser dem slik: Temp1=sensors.getTempCByIndex(0); Temp2=sensors.getTempCByIndex(1); Alarmer Biblioteket inneholder også kode for alarmer om du ikke vil kode dem selv. Da må du også finne adressen til sensoren: DeviceAddress Temp1Addr; sensors.getAddress(Temp1Addr, 0); så kan du sette alarmtemperaturene: sensors.setHighAlarmTemp(Temp1Addr, 26.5); sensors.setLowAlarmTemp(Temp1Addr, 19); Og teste om alarmen er aktiv: if (sensors.hasAlarm(Temp1Addr)) { OBS Den trigger både på høy og lav så du må lese temp for å finne ut hvem. Leseintervaller Når du skal bruke den med MQTT må du bestemme deg for NÅR den skal rappportere temperaturen. Hver gang temperaturen endrer seg (mer en x grader)? Fast hvert x sekund Hver gang du ber om det. For den har passert over/under en granse (Alarm) De to første kan hardkodes eller de kan ha en default verdi og så kan de endres med MQTT kommandoer. Interupt Om du skal lese dem hvert x sekund kan du bruke et interupt. (Om du bruker en delay kan jo ikke ESP32 gjøre noe annet fornuftig mens den venter) Et interupt avbryter prosessoren med det den driver med og kjører en rutine, når rutinen er ferdig fortsetter prosessoren der den slapp. Rutinen som skal kjøres merkes med IRAM_ATTR slik at compileren legger den i instruksjons RAM for at den skal kunne kjøres raskt: void IRAM_ATTR onTimer(){ itsTimeNow=1; } En slik rutine bør gjøre så lite som mulig for ikke å forstyrre prosessoren for mye. Det enkelste er å bare sette en variabel. Denne bør deklareres med voilatile for at compileren skal holde den i RAM (og ikke i et register) slik at hovedprogrammet kan lese den correct: volatile int itsTimeNow = 0; I hoved loop'en kan vi nå teste på denne slik: if (itsTimeNow==1 ) { read_temp(); MQTTclient.publish("TempTestClient/Temp1", String(Temp1)); itsTimeNow=0; // Reset } Timer ESP32 har flere (2-4) harware timere som vi kan bruke til å kalle på interuptet. Du deklarerer den slik: hw_timer_t *My_timer = NULL; og setter den til å telle slik: My_timer = timerBegin(0, 8000, true); Fordi disse timerne teller VELDIG fort har jeg her brukt en "prescaler" på 8000 som gjør at jeg kan be om et interupt hver gang den når 10000 og det vil utgjøre et sekund: timerAttachInterrupt(My_timer, &onTimer, true); // Kobler interupt rutinen til timeren timerAlarmWrite(My_timer, 100000, true); //10000 = 1 Sek Altså hvert 10sek her timerAlarmEnable(My_timer); //start Her er et forslag til MQTT kode som poster temp fra 2 sensorer på forskjellige vis:4 poeng
-
Jeg hadde lyst å ha en temperaturføler på kontor/arbeidsplass som rapporterte måleverdier til min egen Home Assistant. Her er et innlegg om hvordan det ble løst. Jeg bestemte meg for å bruke en esp32 sammen med en BME280 sensor. På esp32 har jeg brukt esphome. På arbeidsplass er det et gjestenettverk som denne kan bruke. I esphome settes wifi opp slik som vist nedenfor. Hvis den ikke kommer på nett innen 1 minutt, vil den opprette et lokalt wifi nett som en kan koble seg til med mobil og deretter legge inn hvilket wifi nett sammen med passord som esp32 skal bruke. Esphome kaller det et "Fallback hotspot". Dette er en engangs-konfigurasjon. wifi: ssid: "hjemmenett" password: !secret heime_wifi domain: .lan power_save_mode: none ap: ssid: "Kontordings Fallback Hotspot" password: "et eller annet passord" Og så har jeg tatt vekk api: i fra yaml-filen fordi jeg ikke vil at esp32 skal prøve å sende data til en Home Assistant som ikke er der via standard api. Deretter laget jeg en time komponent der en hvert 15. minutt sender temperatur, fuktighet og trykk via en https post til en webhook. time: - platform: sntp id: sntp_time timezone: Europe/Oslo servers: - 0.pool.ntp.org - 1.pool.ntp.org - 2.pool.ntp.org on_time: - seconds: 0 minutes: /15 then: - http_request.post: url: https://hooks.nabu.casa/en_eller_annen_url.......... verify_ssl: false headers: Content-Type: application/json json: |- root["kontortemperatur"] = id(temp).state; root["kontorfuktighet"] = id(hum).state; root["kontortrykk"] = id(pres).state; Så gjenstår bittelitt konfigurasjon i HA En lager en ny automasjon som har en webhook trigger. Data som esp32 sender, kan en hente ved hjelp av {{ trigger.json.navnpåsensor | float(0) }} Webhook ID som automasjonen foreslå, lar en være uforandret. Trykk på tannhjulet bak webhook ID og ta vekk avkrysningen på "kun tilgjengelig fra det lokale nettverket" Så må en inn på oppsett for Home Assistant Cloud. Nederst der er det en seksjon for Webhook'er. Her trykker en "Administrer" på den webhook som automasjonen har opprettet og kopierer url som står der. Denne url skal en bruke i sin helhet i esp32. Så det var egentlig det hele. Dataene tikker inn hver 15. minutt. Har en ikke Nabu Casa sin skytjeneste så er det andre måter å sette opp denne url'en på, men har en først gått denne veien så har en vel kontroll på hvordan en får aksess til sin HA utenfra via en webhook. Oppsettet for BME280 er her, men ikke så veldig relevant for dette med webhooks. Den er standard esphome.... sensor: - platform: bme280_i2c temperature: name: "${devicename} Temperature" id: temp oversampling: 16x filters: - offset: -3.3 pressure: name: "${devicename} Pressure" id: pres filters: - offset: 7.0 humidity: name: "${devicename} Humidity" id: hum address: 0x76 iir_filter: 16x update_interval: 60s4 poeng
-
3 poeng
-
Vi jobber nå sammen med leverandøren om en oppdatert Zigbee driver på produktet. Så vi håper vi kan ha en løsning for de kundene som opplever Zigbee drop. Firmware vil da være mulig å laste opp via OTA. Pål3 poeng
-
Jeg tror det baserer seg på dårlige erfaringer med annet utstyr. Mine zigbee enheter varer i mange år på et batteri. Mange er på det sjette året. Enig at det er null stress. Fordelen er at det gir en total frihet i å plassere brytere og sensorer akkurat der de gjør mest nytte. Tradisjonelle brytere og dimmere er etter min mening bare en selvpålagt begrensing. Smarte pærer / belysning gir en full kontroll på hvordan lyssettingen skal være. Ser at det også brukes argumenter om at en må ha tradisjonelle brytere fordi det kan hende at en ny eier ikke liker smarthus. For min del kunne jeg ikke brydd meg mindre om hva en fremtidig ny eier synes om det 🙂3 poeng
-
Hei! 03/22 = V1 Firmware 04/22 = V1 Firmware 09/22= V2 Firmware 07/24= V2 Firmware Forskjell på V1 vs V2. Korrigert kompensasjonstabell = Det vil si at den ønskede temperaturen harmonerer med målt temperatur. Alle modeller skal ha repeater funksjon på Zigbee. (V1 hadde en "aggressiv" kompensasjonstabell innebygget på linje med alle "dumme" panelovner, men dumme ovner rapporterer ikke målt temperatur og derfor opplever man ikke denne forskjellen) V1 modeller kan oppdateres til V2 firmware om man har en kontroller som støtter dette. Firmware ligger på nettsiden til Elektroimportøren, eller kontakt kundesenter for å få oversendt disse. Mvh Pål, Namron3 poeng
-
Har i noen måneder brukt uike verktøy til å enkelt generere yaml kode kun ved å beskrive behovene mine. Blir bare mer og mer imponert over utviklingen og hva det er mulig å få til - dersom spørsmålene stilles riktig - med høyst begrensede programmeringskunnskaper. Et eksempel er denne som fargekoder timene basert på rangering av strømprisen: type: custom:apexcharts-card series: - entity: sensor.nordpool_kwh_oslo_nok_3_10_0 name: Pris type: column float_precision: 4 data_generator: > const today = entity.attributes.raw_today; const tomorrow = entity.attributes.raw_tomorrow; const allData = today.concat(tomorrow); const categorizeHours = (data) => { const sorted = [...data].sort((a, b) => a.value - b.value); const categories = { lowestFour: sorted.slice(0, 4).map(p => p.start), nextFour: sorted.slice(4, 8).map(p => p.start), middle: sorted.slice(8, 16).map(p => p.start), nextHighestFour: sorted.slice(16, 20).map(p => p.start), highestFour: sorted.slice(20).map(p => p.start) }; return categories; }; const todayCategories = categorizeHours(today); const tomorrowCategories = categorizeHours(tomorrow); const getColor = (start) => { for (const day of [todayCategories, tomorrowCategories]) { if (day.lowestFour.includes(start)) return '#006400'; // Dark Green if (day.nextFour.includes(start)) return '#90EE90'; // Light Green if (day.middle.includes(start)) return '#1E90FF'; // Blue if (day.nextHighestFour.includes(start)) return '#FFA500'; // Orange if (day.highestFour.includes(start)) return '#FF0000'; // Red } return '#808080'; // Default Gray (shouldn't occur) }; return allData.map(p => ({ x: new Date(p.start).getTime(), y: p.value, fillColor: getColor(p.start) })); now: show: true label: Nå graph_span: 2d span: start: day locale: nb apex_config: chart: height: 300px zoom: enabled: true toolbar: show: true tools: zoom: true zoomin: false zoomout: false pan: false reset: true legend: show: false dataLabels: enabled: false xaxis: type: datetime labels: datetimeFormatter: month: ddd day: ddd yaxis: forceNiceScale: false min: 0 plotOptions: bar: columnWidth: '95%' På den måten kan jeg se når f.eks. varmekabler på bad og VVB er aktvert (som begge er aktivert på døgnets 8 billigste timer, altså mørkegrønne og lysegrønne farger). Etter nærmere ettertanke kan VVB og varmekabler uansett være aktivert om prisen er under 0.2 kroner. Gir derfor AI-assistenten følgende beskjed: can you modify the code and make all bars dark green if the value is bellow 0.2? og jeg får dette resultatet: Answer Certainly! I'll modify the code to make all bars dark green if their value is below 0.2, while keeping the color categorization for the rest. Here's the updated version: type: custom:apexcharts-card series: - entity: sensor.nordpool_kwh_oslo_nok_3_10_0 name: Pris type: column float_precision: 4 data_generator: > const today = entity.attributes.raw_today; const tomorrow = entity.attributes.raw_tomorrow; const allData = today.concat(tomorrow); const categorizeHours = (data) => { const sorted = [...data].sort((a, b) => b.value - a.value); // Sort descending const categories = { highestFour: sorted.slice(0, 4).map(p => p.start), nextHighestFour: sorted.slice(4, 8).map(p => p.start), middle: sorted.slice(8, 16).map(p => p.start), nextLowestFour: sorted.slice(16, 20).map(p => p.start), lowestFour: sorted.slice(20).map(p => p.start) }; return categories; }; const todayCategories = categorizeHours(today); const tomorrowCategories = categorizeHours(tomorrow); const getColor = (start, value) => { if (value < 0.2) return '#006400'; // Dark Green for values below 0.2 for (const day of [todayCategories, tomorrowCategories]) { if (day.highestFour.includes(start)) return '#FF0000'; // Red if (day.nextHighestFour.includes(start)) return '#FFA500'; // Orange if (day.middle.includes(start)) return '#1E90FF'; // Blue if (day.nextLowestFour.includes(start)) return '#90EE90'; // Light Green if (day.lowestFour.includes(start)) return '#00FF00'; // Green } return '#808080'; // Default Gray (shouldn't occur) }; return allData.map(p => ({ x: new Date(p.start).getTime(), y: p.value, fillColor: getColor(p.start, p.value) })); now: show: true label: Nå graph_span: 2d span: start: day locale: nb apex_config: chart: height: 300px zoom: enabled: true toolbar: show: true tools: zoom: true zoomin: false zoomout: false pan: false reset: true legend: show: false dataLabels: enabled: false xaxis: type: datetime labels: datetimeFormatter: month: ddd day: ddd yaxis: forceNiceScale: false min: 0 plotOptions: bar: columnWidth: '95%' Som gir meg denne: ...så kan jeg lage automasjonene tilsvarende. Andre som har fått tilsvarende hjelp?3 poeng
-
Jeg har kjøpt et par "Arida 160RE" ventilatorer med varmeveksler. De kan kommunisere som master/slave via kabel. "Klimair 160RE" og "Südwind Ambientika" ser ut til å være samme ventilator. "Südwind Ambientika Wireless+" har trådløs kommunikasjon på 868MHz, og jeg ville lage noe tilsvarende til Arida 160RE. Da slipper jeg å banke opp CAT5 -kabel 🙂 Kontroller-kortet er av bra kvalitet. Bestykket med Texas MSP430TM microkontroller og Texas SN75176B differential bus tranceiver. Ut fra hva jeg målte, og så på skopet, måtte vifta ganske sikkert kjøre Modbus/RS485. Kjøpte et par Eletechsup RT18A01 RS485 868MHz tranceivers. Alternativt RT4AE01. 240 kroner 'ish for 2stk i den store butikken. Litt utfordring å finne dokumentasjon. De er klare til bruk, men konfig kan endres med AT-kommandoer via et USB/RS485 interface. Tranceiverne passet perfekt i innbyggingsbokser (#89041) fra Kjell&Co: Testet tranceiverne på viftene. Den ene vifta satt opp som slave + motsatt luftstrøm av master. Våget ikke å "stjele" 5V fra vifte-kontrollerne. Tranceiverne får strøm fra noen gamle mobilladere. Virket!! Før permanent montering, har jeg endret ID + satt ned effekten på tranceiverne et par hakk. Bare 9m avstand og nærmest fri sikt mellom dem. Det gikk greit å endre konfig med AT-kommandoer via GTKTerm eller CoolTerm i Linux. I stedet for fjernkontrollen, kan jeg styre master-vifta på IR fra Home Assistant via en Broadlink RM4 Mini. Har brukt "python-broadlink" for å hente kodene fra fjernkontrollen. Et annet alternativ er å ha en RS485 tranceiver #3 med USB interface som master, sette begge viftene som slaver og styre de fra PC. Men ikke i dag. Nå prater viftene sammen - trådløst. Og det var målet3 poeng
-
Vet nå ikke om jeg bare er gammeldags men tenker at dimmere varer "evig" og det gjør ikke lyspærer samme hvor mye LED de er... Ikke dimbar... Det er ofte ulempen med billige lamper/pærer.3 poeng
-
Nå vet ikke jeg helt hva jeg så av Proxmox sist jeg tok en kikk men enten har jeg kikket feil eller mye har skjedd siden dengang så nå er ESXI historie og Proxmox er oppe og går på flere NUCer og det har fungert supert i noen uker... Ble litt overrasket over mine innlegg i denne tråden men konverteringen er jo beskrevet langt bedre i en annen tråd...3 poeng
-
Jeg ville isolert kobberrøret for varmt vann som går opp langs veggen3 poeng
-
Har hatt min yale doorman samt magnetsensorer og røykvarslere koblet mot en eldre "Yale Smart Alarm" i lengre tid. Dette har irritert meg sykt at boksen har webinterface som vi som sluttbrukere ikke får tilgang til. Så tenkte å få ordnet dette en gang for alle. Etter å ha kikket på kretskortet så fant jeg to flash brikker, loddet av disse og dumpet innholdet. Den ene innehold alle innstillinger i klartekst, inkludert til webinterfacet. Webinterface lar deg gjør alt du kan gjøre via den elendige yale appen, og den lar deg fjerne koblingen mot Yale UK, så nå helt skyfritt. Ser også ut som man kan legge inn post av events til en url eller mailadresse, så det blir neste å teste. Vet jo ikke om alle enheter har samme passord eller om det er unikt per enhet, men hvis noen andre sitter på samme boks og vil prøve så send meg en melding. Legger ved ett par bilder av interfacet om interresant (status viser ikke på enhetene da den nå ligger på labben min og ikke har dekning).3 poeng
-
Det må vi klare å få til! Sant, @iblis 🙂 Det har ikke høyest prioritet sånn på tampen av juli, men i løpet av neste måned burde vi ha det på plass. 👍3 poeng
-
Jeg så nettopp gjennom denne Youtube videoen og har basert på hans tips om bruk av Trigger ID slått sammen det som var seks adskilte automasjoner til 1! I stuen vår bruker vi Ikea Somrig til å styre lysene når vi sitter i sofakroken. Denne fjernkontrollen har 2 knapper, hver med 3 funksjoner (enkelttrykk, dobbetltrykk og hold). Dette bruker vi til å skru av/på (toggle), dimme opp og dimme ned spotter på hhv den ene og andre siden av rommet. Nå er disse seks funksjonene pakket inn i en automasjon. Og når jeg vil ta i bruk en fjernkontroll til, dedikert til godstolen, så kan jeg kopiere denne ene automasjonen og legge inn fjernkontroll nr 2 på samme måte. Det er sikkert andre måter dette kan ordnes på, men denne skal i alle fall jeg bruke videre. 🙂 Det blir ellers nok automasjoner å holde oversikt over.3 poeng
-
Og status i juni er at dette har gått veldig bra. Jeg synes jeg har langt bedre kontroll med automasjoner enn med skript. Når jeg flyttet over skript for brytertrykk, så brukte jeg pyscript sine definisjoner av mqtt payload direkte i automasjonen. Dette ble gjort uten at jeg tenkte så mye på dette, men i ettertid så innser jeg at det er fryktelig tungvint når en skal sette opp nye brytere. En må da bruke et eller annet verktøy og analysere mqtt pakkene som kommer i fra zigbee2mqtt. Det må vel være enklere måter å gjøre det på? Og det er det. Zigbee2mqtt anbefaler å bruke device trigger i HA istedenfor mqtt triggere. Når en bruker device trigger, er egentlig det meste automatisk ferdiganalysert av HA. Det er bare å velge i fra en liste hvilken aksjon en skal trigge på. For bryter kan det feks være knapp 2 og "press" eller "release". Skal en bruke hvilken knapp en trykket på videre i automasjonen så er det bare å definere en trigger ID på den spesifikke knappen og bruke trigger ID til å teste på. Da slipper en å teste på en spesifikk payload i mqtt pakken. Så konklusjon er at brytere er veldig lett å sette opp i HA sin automasjon i forhold til fikling med mqtt pakker i pyscript. I HA sin automasjon trenger en ikke vite noe som helst om at dette kommer via mqtt.3 poeng
-
Vet at mange har vært entusiastiske lenge når det gjelder esphome. Jeg må innrømme at jeg ikke helt har sett poenget. Men nylig testet jeg ut Blåtann (egentlig BLE) proxy-funksjonen, og den er jo konge! Kjører greit på knøttsmå og billige ESP32C3 moduler. Delt Wifi og Blåtann skal riktignok ikke være så lurt. Har ikke hatt kjempeproblemer utover at det var greit å vente med BLE scanning til nettet var ferdig konfigurert. Men jeg liker kablet nett og jeg liker PoE. Spesielt hvis vi ser for oss en BLE proxy plassert på steder der det ikke er strøm fra før. En slik virket perfekt (men pass på å velge "Color: ETH01-EVO with POE"): https://www.aliexpress.com/item/1005006528549724.html ...bortsett fra at ethernet-modulen ikke var støttet i esphome, da. Optimist som jeg er så bestilte jeg likevel. Det ligger en driver i esp32-idf, som er mer eller mindre obligatorisk uansett med ESP32C3 om jeg har forstått det riktig. Så hvor vanskelig kan det være å legg til i esphome? Ikke vanskelig i det hele tatt, viste det seg. Det var dagens prosjekt: https://github.com/esphome/esphome/pull/6861 Så da gjelder det bare å finne et sted den kan gjøre nytte for seg.3 poeng
-
Du har en unik mulighet til å få et velfungerende og samtidig smart hus når alt elektrisk skal byttes ut. Det er forskjellige meninger om dette, du kan lese noe av det i denne tråden: Ut fra min egen erfaring kan jeg gi følende råd: Velg komponenter som støtter åpne standarder for smarthus (Zwave/Zigbee/Thread&Matter) fremfor Wifi. Wifi i seg selv er helt fint og er rett valg for kameraer og andre løsninger som krever mye data, men brytere/dimmere og sensorer uten kamera trenger ikke den bånbredden. Ulempen med wifi er at slike produkter i mange tilfeller er avhengig av skytjenester og da risikerer du både at tjenesten blir lagt ned eller ilagt en kostnad per måned som kan økes. Zigbee/Zwave/Thread er lokale radioprotokoller som bygger egne mesh nettverk (alle enheter fast tilkoblet strøm er en router i nettverket) og fungerer lokalt mellom en koordinator (som din Conbee II stick) som igjen knyttes til en smarthussentral. Derfor er svaret mitt når du spør om elektrikerens anbefaling av utstyr at Bluetooth er bedre enn Wifi men ikke like bra som Zigbee (Bluetooth bygger ikke mesh). Valg av smarthussentral/systme er neste valg. Her må du dessverre velge mellom å ha stort åpenhet i valg av utstyr kombinert med høyere krav til egeninnsats og kometanse eller et meg begrenset valg av utstyr om du ønsker et enklere (og kanksje? mer driftsikkert) system. Selv har jeg erfaring med Home Assistant og Homey Pro. HA er mest krevende men støtter også mest utstyr (trolig av alle systemer som finnes!), mens Homey er enklere å komme i gang med samtidig som det har avanserte muligheter og rimelig bred støtte for utstyr. Futurehome har jeg kun lest om, men forstår at det er vesentlig mer begrenset i valg av utstyr men også enklere å bruke. Hvis du har anlednign til å velge smarte brytere/dimmere/kontakt og annet som elektriker skal montere som støttes av Futurehome så har du muligheten til å bytte til dette senere om du finner ut at Home Assistant blir for krevende. Men siden du allerede har det støtter jeg tanken om å prøve det videre, det har blitt vesentlig enklere de siste årene og hvis du primært bruker de offisielle integrasjonene i HA (og lite fra HACS - Home Assistant Community Store) så er stabiliteten nå svært god. Lykke til med smarthus - for mange av oss er dette en interessant hobby! 🙂3 poeng
-
Jeg har solceller på taket, og ønsker selvfølgelig å utnytte disse maksimalt. For å klare dette har jeg laget en styrings-rutine som jeg gjerne mottar kommentarer på. Kanskje har du en bedre metode, eller kanskje kan du få inspirasjon til å gjøre noe tilsvarende selv? Jeg bruker Homeseer, men det er sikkert mulig å lage tilsvarende med andre systemer. Her er min oppskrift, steg for steg: 1: Systemet starter på kvelden med å finne ut hva som er teoretisk produksjon neste dag, under optimale forhold. Dette gjøres ved å se på statistikk fra tilsvarende måned. 2: Deretter sjekkes værvarselet, for å finne ut hvor mye reduksjon i effekten jeg kan vente meg. Systemet sjekke skyer og regn, og finner ut hvor mye som blir tapt, sånn ca. 3: Deretter regner systemet ut sannsynlig forbruk. dette gjøres på bakgrunn av temperatur, vind, termostater og antall personer hjemme. 4: På dette punktet vet systemet om det vil være kraftoverskudd. Nå må avgjørelsen tas om strømmen skal brukes eller selges. Dersom strømmen er dyr så lønner det seg å selge, og heller kjøpe med strømstøtte til eget forbruk. Denne avgjørelsen vises ved hjelp av et tall, som indikerer hvor lurt det er å bruke selv opp i mot å selge. 5. Ved hjelp av tallet fra punkt 4 så styres oppvarming av vann og et lite basseng. Dersom det blir lav strømproduksjon dagen etter så varmes vannet om natten, da nettleien er rimeligere. Dersom det er ventet bra produksjon så utsettes oppvarmingen av vannet til solcellene har begynt å levere overskudd. Mange spør meg om det er mye å spare på dette, og faktisk så ble total besparelse i 2023 på over 3000 kr! Dermed er det vel ingen tvil om at det lønner seg å automatisere! Er det andre som har gjort noe tilsvarende, eller kanskje noe som er enda bedre? I så fall så håper jeg du legger igjen en kommentar. Regnestykke for sist natt: Dersom jeg ikke hadde styrt noe som helst, så ville vannet blitt varmet på natten, i timene etter bruk. Det hadde kostet Kr 1,27 pr KWH, altså totalt kr 51 i strøm. På dagtid ville da solstrømmen blitt solgt i stedet, noe som ville gitt meg kr 29. Totalt har det varme vannet da kostet meg Kr 22,- Dersom jeg i stedet varmer vannet med solstrøm så koster det meg ingenting. forskjellen her blir altså på 22 pr natt. Ja, jeg er klar over at den egenproduserte strømmen ikke er gratis. Men siden denne prisen er konstant uansett så har jeg valgt å trekke den ut i fra regnestykket.3 poeng
-
Hei! Da er endelig FW på plass med korrekt rapportert FW versjon. Hvit: 4512750 Sort: 4512751 Forskjell på FW er kun at du får rapportert korrekt produkt nr. 4512750-Firmware.zip 4512751-Firmware.zip2 poeng
-
Teknologivalg blir smak og behag. Men du kan ikke basere deg på hva som er mest hensiktsmessig for elektrikeren. For dem er det er fordel at systemet er lukket og begrenset til én leverandør. Det gir færre variable å ta hensyn til. Mye enklere å levere og sannsynligvis mindre support. Evt lock-in er bare en bonus som øker sannsynligheten for at du kommer tilbake og kjøper mer av samme. De trenger heller ikke bekymre seg for evt total utskifting av hele systemet på et senere tidspunkt hvis du finner ut at Plejd ikke var tingen likevel, eller skytjenestene skulle forsvinne. Den risikoen tar du alene. For dem vil det bare være en ny sjanse til å få et stort oppdrag. Jeg forstår det slik at alle tredjeparts-løsninger for Plejd er basert på at det finnes en fungerende Plejd skytjeneste der produktene registrers og man kan hente ut nøkler. Det ville ihvertfall ikke jeg tatt sjansen på for faste installasjoner som skal leve i 10+ år.2 poeng
-
Fikk installert Proxmox på en Lenovo L480 jeg hadde liggende Ganske enkelt å installere HA med dette skriptet: https://community-scripts.github.io/ProxmoxVE/scripts?id=haos-vm Det er og et skript man kjører rett etter installasjon av Proxmox for å skru av subscription nag osv: https://community-scripts.github.io/ProxmoxVE/scripts?id=post-pve-install2 poeng
-
Å ikke ha varsling på rottefellen på loftet. Skulle opp på loftet og hente ned julepynt, der har jeg en rottefelle som har stått i 2 sesonger med en baconbit. Har tenkt lenge på at jeg skulle hatt en varsling på om fellen var klappet eller stod fortsatt klar. Men siden jeg ikke var nevneverdig plaget med rotter så har jo den bare stått klar i 2 år. Har ikke vært der siden september hvertfall så når jeg kom opp idag lå det rester av rotte i fellen, rimelig flat, altså tørket ut. Og litt av en lukt. Så nå må den vaskes og gjøres klar igjen. Denne gangen med varsling 😆2 poeng
-
Jeg tenkte motsatt: Behold det du har og heller gjør en liten programmeringsjobb.2 poeng
-
@kris10an Gen3m har en modulær top del som kan byttes ut og oppgraderes etterhvert når det kommer nye generasjoner slikt at du slipper å kjøpe ny ovn. Om du skal kjøpe ovner, vent med å kjøpe....det kommer en ny batch med ovner mot slutten av oktober som fortsatt heter gen3m. Men disse har en silent upgrade , det vil si oppgradert wifi brikke som er ESP32 C6 som vil få Matter og Zigbee støtte senere i 2024 via en OTA. Du vil merke at ovnen har en klistremerke på lokket som heter generasjon 3m. Prikken på slutten indikerer at det er den med ESP32 C6 . Tillegg har den en oppdatert touch chip, som gjør at display er veldig motstandsdyktig mot støy på strømnettet. Denne oppgraderen vil rulles ut til hele panel ovn serien i 2025, da kommer alle disse ovnene med Matter og Zigbee 3.0 og de om har en gen3m med disse brikkene får en OTA som åpner opp for Matter og Zigbee. @landsverk Opplever ellers et par merkelige ting; 1) Kan ikke legge inn effekt på enhet med mindre den er satt til control device individually. -> Du kan endre på effekt om du navigere til enheten og velger avansert, lenger nede så finner du effekt som du kan endre på. 2) Socket har ikke mulighet for å legge inn effekt, så da er jo strengt tatt statistikk ikke mye verdt 😅 -> Her så trenger du ikke å endre på effekt eller legge til effekt, strømmåler brikken auto kalibrerer seg selv avhengig av hva du plugger inn på den. Så derfor er det ikke noe behov for å legge til effekt info :) Finnes det noen workaround ift API limit? Denne grensen er nå satt til 5000 API kall pr time pr konto , noe vi mener er veldig generøst. Trenger man mere en 120 000 API kall i døgnet(24 timer)? Når det gjelder webinterface så er det mye vi kan få til der men jeg blir dratt i mange retninger som tar mye av tiden så det har ikke vært en hovedfokus. Men jeg skal sette dette på agendaen igjen veldig snart. Så for å oppsummere det som er på ønske listen for web interface : 1 : FW upgrade mulighet, veldig enkelt å få til og tar en par timer å implementere 2: Koble til Mill Skyen, vil dukke opp som en avhengig enhet i appen med standard navn og noen tall 3: Mulighet til koble ovnene til skyen igjen på auto via REST API eller web @landsverk Send meg en PM så sender jeg deg en ny Mill Sense i posten + en socket som plaster på såret. Mill Sense er nok død/bricked pga FW som hadde en feil som fort ble fjernet når det ble oppdaget. I PM send meg: 1: Fult navn 2: Adresse 3: Telefon nummer for pakkesporing Så fikser jeg dette imorgen2 poeng
-
Merker meg i videosnutten over at der er tydelig "klippelyd" men den er tilnærmet lydløs i praksis. En ser jo også i videoen at gresset er både høyt og vått så det kan være det som ga litt ekstra lyd. Så langt har L15 gjort en god jobb men jeg ser at den blir litt snau for min 750m2 og ganske kompliserte plen så der er en brukt 2018 modell Ambrogio L250 Elite på vei i posten. Denne er specet til 3200m2 så det skal holde...: L15 fikk firmware oppgradering (fra ver 44xx til ver 70xx) i går og det ga en merkbart mer pålitelig klipping. Det er lett å undervurdere L15 siden den er så knøtttliten men den er spesifisert for 600m2 og selv om den ble litt snau for min plen så står den ikke langt tilbake for Husqvarna 315x som er specet til 1600m2. Hadde en stopp i noen dager på Husqvarnaen i sommer og det gjorde at gresset vokste litt i overkant mye. Da den var i gang igjen la den etter seg en masse striper med klippet gress som etterhvert ble gult. Den brukte over en mnd før dette var borte igjen. Ambrogio driver med kompostklipping og det er svært uvanlig at den legger igjen synlige spor etter høyt gress. Har måttet jobbe en del med kantledning, litt fordi Ambrogio og Husqvarna forholder seg litt forskjellig til kantledningen og litt fordi hagen er blitt ganske overgrodd utenfor ledningen samt at jeg har hatt ønske om å optimalisere klippingen flere steder men har sett at 315x ikke vil klare å kjøre de stedene jeg vil. En litt fancy sak med Ambrogio er at en kan "programmere" klipperens oppførsel med kantledningen: Ved å legge en loop ut fra kantledningen i en lengde av 1-2 meter med 5 cm avstand 90 grader ut fra kantldn. vil det gi klipperen beskjed om å følge kantledningen slavisk de neste ca 10 metrene dersom den er i "følg kantledning"-modus. Dette er nyttig når den skal gjennom trange passasjer og også i sammenheng med neste "program". Legg kantledningen i en trekant der kortsidene er 40cm og langsiden er 50cm så vil det få klipperen til å dreie 90 grader, kjøre rett fram til den treffer kantledningen på andre siden og på den måten kjøre forbi "unødvendige" deler av plenen når den er på vei til ladestasjonen. Har tegnet inn noen slike "programmer" her: I utgangspunktet går alltid klipperen med klokken langs kantledningen for å finne ladestasjon. Denne programmeringen vil kunne spare mye unødvendig kjøretid. Ellers har jeg helt sluttet med å legge kantledning oppå plenen og feste med teltplugger. Nå skjærer jeg en fure med 5" vinkelsliper og dytter ledningen nedi med dette lille verktøyet jeg fant på printables.com:2 poeng
Vinnerlisten er satt til Oslo/GMT+01:00