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

Vinnerliste

Populært innhold

Viser innholdet med mest poeng siden 27. april 2024 i Oppføringer

  1. 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
  2. Her er basis kode for PWM styring av en PC vifte: Mange PC vifter kan en styre hastigheten på, men ikke alle. Dersom vifta har 4 kabler (og ikke bare 3) kan den styres. Lederne er: 12V Jord PWM (plus bredde modulasjon) styresignal inn Puls informasjon om hvor fort vifta faktisk går (Tach) PC vifter har PWM signal på 25kHz (antakeligvis for at en ikke skal kunne høre den med ørene) og tidligere var det litt klønete å få til med en Arduino, men med en ESP32 går det som en lek. Vi bruker en av de 6-16 (avhengig av ESP32 type) innebyggede PWM kanalene i ESP32'en og styrer dette med noen få linjer kode. Her er koden satt inn for å styre vifta fra MQTT: Det er også mulig å LESE den REELLE hastigheten på vifta ved å telle pulser fra den siste ledningen fra PC vifta men det må bli en annen gang. OBS: Pulsene fra vifta er 12V og vil skade ESP32 om de kobles direkte. Det er ofte 2 eller 4 pulser / rotasjon
    3 poeng
  3. Jeg har jobbet ganske lenge med dette prosjektet men fordi det var på hytta i Danmark og fordi jeg fikk problemer med et dårlig power er det først nå jeg er ferdig nok til å vise det fram. Jeg ser at boksen har et hull for å kunne plugge inn en USB til ESP32en, fordi dette var før jeg visste hvordan en kan bruke OTA for oppgradering isteden 🙂
    2 poeng
  4. 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:
    2 poeng
  5. Med MQTT biblioteket vi har brukt til nå er OTA latterlig enkelt. Bare legg til en (eller begge) av disse linjene: OTA (Over The Air (update)) er muligheten til å laste opp nye programmer til ESP32en over WiFi uten å måtte koble til en kabel. Det kan jo være veldig greit om prosessoren sitter i en boks i garasjen eller på loftet. Jeg har vært litt redd for å gå løs på dette siden jeg regnet med at det var komplisert og mye å lære seg, men i dag satte jeg meg ned for å se på det og oppdaget til min store glede at dette jo er kjempelett med det biblioteket vi har brukt for MQTT i denne guide serien 😄 Det er to måter å gjøre det på, jeg skal beskrive begge: Metode #1 Arduino IDE Legg til denne linjen rett etter setKeepAlive kallet MQTTclient.enableOTA("pwd"); og endre PWD til ditt eget passord. Du kan bruke ditt eget program eller dette programmet for å teste: Koble ESP32en til med kabel som vanlig og kompiler og last opp programmet. Sjekk at programmet virker (testprogrammet blinker). Trekk nå ut USB kabelen av ESP32en og sett den på en strømforskyning (5V mellom VIN og GND) Eller du kan jo bruke en Mobillader og plugge USBen i den. Nå skal vi gjøre en oppdatering og laste den opp OTA: Endre blinkTime=1000; til blinkTime=200; Ettet at ESP32en startet skal du nå ha fått et nytt valg i PORT menyen: Velg denne og ikke bry deg om denne feilmeldingen: Nå kan du trykke på "Upload" knappen og da skal du få opp Passordbildet: (Om det ikke kommer opp, prøv å restarte IDE) Da er det bare å skrive inn passordet du satte i enableOTA kallet (eks. "pwd") og trykke UPLOAD. Nå kan du få noen brannmur advarsler som du svarer OK på og om alt går bra kommer meldingen: Og opplastingen starter: Nå skal lyset blinke mye raskere for å vise at ESPen har fått et oppdatert program 🙂 Metode #2 HTTP Webupdater I denne metoden legger du til denne linjen MQTTclient.enableHTTPWebUpdater("meg","hemmelig"); med et passende brukernavn og passord. Når du har endret programmet og er klar til å laste det opp bruker du dette menyvalget: Den vil da lage en mappe "build\esp32.esp32.esp32" under prosjektmappen og legge BIN filen der. Du kan nå gå i en browser og skrive inn IP adressen til ESP32en som du fant i PORT valget tidligere og få login til Web serveren som nå kjører på ESP32en: Når du har logget på får du denne flotte siden: hvor du kan velge den ".bin" filen vi akkurat produserte og laste den opp med Update: Tada! Ferdig. Det skal finnes løsninger der ESP32en selv går å henter nye filer men det får hellere DERE lære meg. Jeg har altså akkurat funnet ut av dette 🙂 Tanken var å slippe en LEGO klass en gang i uka men dette er så viktig så jeg må bare slippe denne her med en gang 🙂
    1 poeng
Vinnerlisten er satt til Oslo/GMT+02:00
×
×
  • 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.