Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

Fermate

Administrator
  • Innlegg

    1 943
  • Ble med

  • Besøkte siden sist

  • Dager vunnet

    162

Alt skrevet av Fermate

  1. Fermate

    ESP32 Adresserbare LED (9)

    Her er kode for å styre addresserbare LEDS Bibliotekene er: Litt om LED Å slå på en LED er vanligvis noe av det aller første en gjør når en starter med å leke med ESP32. ESP32 har til og med en onboard LED på pinne 2 som en kan bruke til testing uten eksterne komponenter. En LED har ingen (stor) indre motstand som en lyspære og må ha en ekstern motstand for å begrense strømmen slik at den ikke brenner opp. Max støm på LEDen finner du i spesifiksjonen på den, der finner du også spenningsfallet over selve LEDen (Forward Voltage). Om den site ikke er oppgitt kan du slå den opp (typisk) i en tabell. Her er en kalkulator for motstand: https://www.digikey.com/en/resources/conversion-calculators/conversion-calculator-led-series-resistor Husk at ESP32 pinnen selv ikke tåler mer enn typisk 20mA. (Noen sier 40mA) Det lange beinet skal til +: Skal du ha 3 LEDs (Feks Rød, gul og Grønn) må du bruke 3 pinner på ESP32en og en egen motstand for hver LED. RGB Led Men det finnes LED som har alle 3 fargene bygget inn i samme LED, -en RGB LED. Her er alle mins koblet sammen og ført ut på den lengste pinnen: OBS De finnes både i "common Anode" og "Common Catode", husk å sjekke hva du kjøper. Her må du fremdeles ha en motstand for hver farge og bruke 3 pinner. RGB LED Strips De første LED stripene som kom var koblet slik at alle LEDene hadde sin egen motstand og fargene var ført ut på hver sin tilkobling: Disse oppfører seg altså litt som en RBG LED men drar veldig mye strøm på grunn av alle LEDene. Du kan altså ikke koble disse direkte til pinner på ESP32en men må sette en driver-boks i mellom eller en havlvleder som feks en MOS-Fet. (Det kommer en egen guid senere om MOS-Fet) For å få hvitt lys skal en slå på både Rød, grønn og Blå samtidig. Dette blir ikke helt hvitt så derfor ble det laget striper med en egen hvit LED i tillegg: RGBW. Til interiør belysning var det ønskelig med en varmere hvit og derfor kom RGBWW som har enda en ekstra LED som er warm-white. Adresserbare LED MEN fordi LEDstrips ble så poppulære bygget man etterhvert inn en egen liten IC på hver eneste LED på stripen slik at disse kunne styres med et signal fra ESP32en. Dette gjorde også at en kunne styre hver enkelt LED på stripen helt separat og ikke alle de RØD samtidig slik som på RGB stripene. Senere ble disse ICene integrert i selve LEDen. Disse LED stippene har altså bare 3 tilkoblinger: + - og data og hver IC sender dataene videre til nestemann. De trenger ingen motstander eller MOS-Fet og har egen strøm strømforskyning som kan være 24V for å kunne ha lange striper uten spenningsfall. Adresseringen er "relativ" slik at førstemann på stripa er nr 0 og nestemann er nr 1 osv. Dette skjer ved at ICen "teller opp" adressen med 1 og sender videre. Du kan altså klippe og skjøte hvor du vil og adressene er fremdeles fortløpende fra den første som får data og videre bortover. OBS Det betyr osgå at stripene har en rettning som du må følge når du kobler. Blir det brudd i datastrømmen slukker hele resten av rekka. De har derfor begynt å produsere striper med en esktra backup datakanal (merket BO - BI) Enkelt Adresserbare LED Det finnes også enkelt LED som er adresserbare. Jeg er veldig glad i slike for å la ESP32en kommunisere statuser med omverdenen. Her trenger jeg bare en pinne på ESP32en og en motstand (330 ohm) mellom ESP32en og LEDen og så kan jeg koble meg videre med så mange ekstra LED jeg bare trenger uten å bruke flere pinner eller motstander 🙂 Kode Koden for å jobbe med Adresserbare LED er super enkel. Alt skjer i biblioteket FastLED: #include "FastLED.h" #define NUM_LEDS 264 \\ Antall LED på stripa CRGB leds[NUM_LEDS]; \\ Et "array" led LEDene #define PIN 4 \\ Pinnen der datakabelen på stripen er tilkoblet void setup() { FastLED.addLeds<WS2812, PIN, RGB>(leds, NUM_LEDS).setCorrection( TypicalLEDStrip ); } WS2812 er typen IC på LED stripen. Så er det bare å skru på en og en LED slik: leds[Pixel].r = red; leds[Pixel].g = green; leds[Pixel].b = blue; der Pixel er adressen til LEDen, og første LED er 0. og red, green, blue er verdier fra 0 til 255 for styrken på lyset. Eller slik om du foretrekker det: leds[Pixel] = CRGB(Red, Green, Blue); eller slik leds[Pixel] = CHSV(Hue, Saturation, Value); Når du har satt alle veridene på alle LEDene du ønsker, sender du det til stripe med denne kommandoen: FastLED.show(); Du lager ganske fort en par forenklings rutiner som feks disse: void setPixel(int Pixel, byte red, byte green, byte blue) { leds[Pixel].r = red; leds[Pixel].g = green; leds[Pixel].b = blue; } void setAll(byte red, byte green, byte blue) { for(int i = 0; i < NUM_LEDS; i++ ) { setPixel(i, red, green, blue); } showStrip(); } Jeg har ikke noe MQTT kode her for det klarer dere selv, men jeg har en liten kodesnutt som kjøres dersom barnebarna roper "Alexa show me rainbow" som dere kan få:
  2. Jeg kjøpte ved en feiltakelse en haug med DS1820 fra Ali. Dette er en eldre modell som ikke er kompatibel! Om noen har kode for ESP32 for disse hadde det vært kult om dere deler den. DS1820 og DS18B20 skal kunne kobles med "parasite power". Dvs at IC'en henter power fra selve datalinjen og at en derfor kan klare seg med 2 ledere isteden for 3. Om noen har konkret erfaring og testede løsninger for dette (linker klarer jeg å google selv 🙂 ) hadde det være fin å høre fra dere.
  3. 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. Takk for rast svar men må bare pressisere litt: Alexa -Jeg ønsker IKKE å skrive min egen Alexa skill 🙂 - Jeg må ikke bare ha mulighet til å styre ting med Alexa men også å stille spørsmål og få svar. (Ikke bare status fra en Device men kunne sette sammen svar selv) Touch interface til iPad Jeg snakker ikke om å lage en egen app til iPad her altså, men å kunne konfigurere grafikk og data og laste det opp til en ferdig app. (HSTouch har en designer app (ligner på Visual Studio) der du limer inn grafikk og kobler den til funksjonalitet. Den genererer en XML fil som du laster opp til en ferdig app (HSTouch) på iPad ) eller missforstod jeg deg når du sa: ?
  5. Velger å poste her pga tittelen på tråden 🙂 Jeg har kjørt HomeSeer siden tidenes morgen men jar begynt å tenke litt på HA. Før jeg tenker mer må jeg ha klarhet i en veldig viktig ting: Har HA noen tilsvarende funksjonalitet som -Jon00s Alexa helper Som gjør det mulig å spørre Alexa om ting i smarthuset og få svar -HSTouch Mulighet til å enkelt designe touch interface til en iPad (eller tilsvarende)
  6. Interessant. Han du noen tanker om denne kontra SONOFF (bortsett fra nettporten) ?
  7. Kul idé! Jeg legger "deep sleep" på list mi over ESP32/MQTT-lego 🙂 (Har ikke hat tid til å legge ut nye "klosser" på en stund men det kommer 🙂 )
  8. men etter å ha tenkt meg om litt: Jeg Trenger jo ikke å gå via Voice Monkey for å trigge den WEB HOOKen i IFTTT ! Det er jo en vanlig link jeg kan fyre opp fra HomeSeer direkte https://maker.ifttt.com/trigger/startcoffee/json/with/key/xxxxx Å starte ting i HS fra Alexa gjør jeg jo allerede..
  9. Har lest litt på Voice Monkey sine sider i dag og satt opp en WEBHOOK i IFTTT som jeg kan kalle fra en FLOW i Voice Monkey. Denne kan jeg i sin tur kalle fra en ROUTINE i Alexa. Så da var kanalen åpnet for å lage kaffe fra senga igjen 🙂 Er litt usikker på hvordan jeg best kan styre antall kopper og slikt på en effektiv måte. Det logiske er en dialog med Alexa: Meg: Alexa, make coffee Alexa: OK, how many cups? Meg: 6 Alexa: at what strength Meg: Medium Alexa: Ok shall I start making 6 cups of medium strength coffe? Meg: yes MEN: Jeg vet at kona hater lange dialoger med Alexa så antakelig vis blir det bare: Alexa, Make 6 cups of coffee Jeg gleder meg til å se på mulighetene til å la Alexa snakke til meg trigget fra en Event i HS uten at jeg har snakket til henne først. Kommer muligens tilbake med en guide om tiden strekker til...
  10. Jeg har mange kaffetraktere fra Smarter. Gen 1 var lett å hacke og dermed lett å styre men gen 2 har kun ett API: IFTTT 😞 For å koke kaffe fra senga før jeg hadde stått opp ble det laget masse IFTTT triggere og startet dem fra Alexa: Alexa, trigger Make two cups of coffee Alexa, trigger Make four cups of coffee osv. Når IFTTT begynte å ta betalt for triggere over 2 stk ble dette gjort om til en start av den forhånds innstillte trakteren med en "Alexa turn on coffee" da dette merkelig nok var en av/på SWITCH som ALexa hadde detektert. Men så sluttet hele greia å virke; Alexa fant ingen switch lengre og så bestemte Amazon seg for å droppe support av IFTTT helt. I og med at IFTTT er den ENESTE måten jeg kjenner til som jeg kan starte kaffetrakteren på begynte jeg å lete etter omveier. (Kaffe laget fra senga slik at den er ferig når vi kommer ned om morgenen har VELDIG høy WAF.) Først trodde jeg at jeg måtte ha full IFTTT abonnement og bet i gresset og tegnet det. Og jada nå kan jeg styre kaffetrakteren fra IFTTT. Men hvordan få trigget IFTTT fra Alexa? Hm IFTTT har HomeSeer som en trigger... teste teste... NEI Det funker IKKE, dvs noen ganger funker det... noen ganger med en forsinkelse på 2 timer (ja du leste riktig).. men vanligvis ikke i det heletatt. Jeg har alltid ønsket meg at HomeSeer skulle kunne snakke til meg gjennom ALexa og gi meg beskjeder UTEN at jeg hadde snakket til Alexa først. "Nå er posten kommet" eller "Det har slått om til mildvær, ønsker du å skru på varmekabelen i takrenna?" Så da Voice Monkey kom, kastet jeg meg over det. Men igjen.. da det ble en betalt tjeneste sluttet den interessen. (Jeg brure jo skrive min egen skill ti Alexa men det blir liksom ikke noe av.... 😉 ) Men nå ser jeg altså at Voice monkey tilbyr å trigge en IFTTT teneste (så vidt jeg forstår?) så nå har jeg tegnet et fullt abonnement og forsøker å sette det opp. Men jeg finner bare andre veien? (Trigge ALexa fra IFTTT via Voice Monkey) Jeg trenger å trigge IFTTT fra Voice Monkey! HJELP!
  11. Her er kode for å lese NTP (OBS Uten noen WiFi som selvfølgelig trengs) Med NTP (Network Time Protocol) kan vi lese eksakt tid fra Internet. Da trenger vi selvfølgelig en Internet forbindelse. Det enklese er å bruke WiFiManager men siden dette er en guideserie primært for MQTT bruker vi like godt den isteden. Det er liten vits i å kalle NTP bibliokeket før vi har fått WiFi forbindelse så jeg bruker if (MQTTclient.isWifiConnected()) { for å sjekke dette. NTP Biblioteket kaller selv opp NTP serveren hvert 60 minutt og i starten kan det ta litt tid før vi får første tidsavlesning. Før tid er klar vil biblioteket returnere tid = 0 som er 00:00:00 1/1-1970 Året som returneres er år - 1900. (Du skal altså legge til 1900 på det tallet du får) For å få riktig tidssone og sommer/vintertid sier vi ifra om dette til biblioteket. Kodene er hentet herfra: https://ftp.fau.de/aminet/util/time/tzinfo.txt Her er komplett kode med MQTT som leser klokka og skriver den til Serial Monitor: Jeg bruker onboard LED til å vise om jeg har WiFi connect.
  12. Takk for tips @SveinHa og @ZF- ! Er alle Shelly'ene MQTT? Er disse to det? https://www.elektroimportoren.no/shelly-dimmer-2/94366/Product.html https://www.elektroimportoren.no/shelly-plus-plug-s/94452/Product.html De fungerer da UTEN Shelly sin cloud?
  13. Jeg har lekt med svakstrøm siden 1974 og alltid vært fasinert av hva en kan lage selv for en billig penge. Dersom du er helt ny på feltet kan kanskje noen av disse tipsene være til hjelp. Breadbord og Dupont kabler Om du skal leke med ESP32 og elektronikk er det enkleste å skaffe seg et "Solderless Breadbord" med en gang. Dette er små plater med fjærbelastede kontakter under små hull som du kan stikke ledninger ned i, og slik koble dem sammen uten å lodde. Diise finnes i små versjoner også men det er like greit å kjøpe en stor med en gang. Ali har noen helt greie til en billig penge. https://www.aliexpress.com/item/1005005891244166.html Du kan bruke vanlig stiv koblings-tråd også men noen ordentlige Dupont kabler med farger er mye bedre Disse finnes i forskjellige lengder og som han-han, han-hun og hun-hun De kommer sammenkoblet i lange lakrisbånd og så kan du dra dem av en og en eller i grupper på to eller fler. Her er noen riktig billige jeg fant: https://www.aliexpress.com/item/1005002592440431.html Motstander Du kommer ikke langt før du trenger en motstand eller to og det er like greit å kjøpe et sett med det samme. Du klarer deg fint med 5% nøyaktighet men nå koster 1% nesten det samme. Det holder også med E-12 serien (og ikke E-24) så blir det ikke så mye å holde styr på. Kjell har et fint sett https://www.kjell.com/no/produkter/elektro-og-verktoy/elektronikk/komponentsett/playknowlogy-motstandssortiment-1460-pk.-p90435 Motsander er fargekodet på denne måten. Men det kan også være greit å kunne sjekke dem med et mulitimeter, og det må du ha uansett. Multimeter Jeg synes dette fra Kjell er veldig hendig og enkelt å bruke. https://www.kjell.com/no/varemerker/uni-t/elektro-og-verktoy/verktoy/maleinstrumenter/multimetere/uni-t-ut125c-multimeter-p48874 Strømforskyning For meg er det stas å ha en ordentlig lab-strømforskyning, og de kan du få ned til noen hundrelapper fra Ali også. Velg en med 30V og minst 3A som har instilling av Spenning og Strøm og display. Men du kan også klare deg med en vanlig batterieliminator på ca 12V og en stillbar spenningsregulator som du setter ned på breadboardet. Best med display så du vet at du ikke svir av noe du kobler til. Andre komponenter Når du har dette på plass er du godt rustet til å teste ut motorer, steppere, servoer eller andre ting du vil ha i prosjektet ditt. Men når du er godt i gang kan det være litt surt å plutselig mangle noe standard greier og måtte vente på å få det i posten eller måtte kjøpe det til blodpris her i Norge fordi du er utolmodig. Jeg har et sett med kondensatorer liggende: Husk å dobbelt sjekke polariteten på elektrolytt kondensatorer. Kobler du dem feil vei så smeller de 😞 Og en boks med assorterte små transistorer er alltid kjekkt å ha Skulle det være noe mer beredskaps greier nå så måtte det være noen dioder, LED og noen potensiometere kankje Lodding Alt dette er greit for å sette ting opp og se at det virker, men om du kan ta dette ibruk kan det jo ikke sitte på et breadboard med en haug med spaketti-kabler. For å få det solid må det loddes. Kjøp deg en ordentlig loddebolt med en gang så slipper du ihvertfall frustrasjon med at verktøyet ikke er bra. Denne er jeg veldig begeistret for: Mulig jeg kjøpte den hos Kjell: https://www.kjell.com/no/produkter/elektro-og-verktoy/verktoy/lodding/loddebolter/luxorparts-pro-60-w-loddestasjon-p40570 Eksprimentkort med kobberstriper eller 3 eller 5 hull sammen er greie til små ting. Jeg kommer kanskje med en egen miniguide om lodding senere om det er stemning for det. Spennings regulatorer Det kommer en egen guide om spenningsregulatoerer men imens vil jeg bare si at de små step-down regulatorne her er veldig greie å ha liggende: Jeg handler slike i sett på 10 om gangen 🙂
  14. Egentlig lurer jeg på hvorfor jeg ikke kan kjøre WiFi på alt utstyr som ikke har batteridrift... Kanskje det å bytte ut det som er enkelt av Zwave nettet først og så se om det er en av de nodene som støyer? Det må jo da bli Plugin switcher og plugin dimmere. Finnes det noen WiFi Plugin switcher (10A) og dimmere på WiFi som er OK sammen med HomeSeer?
  15. 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 🙂
  16. Fermate

    ESP32/MQTT Viftestyring (4)

    Nei jeg har ikke gjort dette selv så jeg bare nevnte det på slutten. (Jeg trengte ikke dette da jeg hadde prosjektet på gang) Jeg har en følelse av at noen vifter sender disse pulsene som 12V og at de må ha en motstand eller to for å ta spenningen ned til 3,3V for ikke å svi av ESP32en. Har en vag følelse av at jeg målte 12V med et multimeter. Men andre steder står det at pulsene kommer som kobling mot ground og at de trenger en pullup resistor. Det siste er jo unødvendig siden sensor pinnen kan defineres med pinMode( X, INPUT_PULLUP ); Si gjerne ifra om du finner ut noe så oppdaterer jeg guiden. Du trenger jo ikke MQTT for dette da. Bruk et Potensiometer sammen med ESP32en for å regulere hastigheten. Goggle så finner du eksempler på dette.
  17. Har testet nå og det ser bra ut!
  18. Hva med å bruke samme som status og la LWT overskrive den? --- MQTTclient.enableLastWillMessage("OTATestClient/status","OffLine"); --- void onConnectionEstablished() { Serial.println("onConnectionEstablished"); MQTTclient.publish("OTATestClient/status", "OnLIne"); }
  19. Fermate

    ESP32/MQTT Servostyring (5)

    Her er basis kode for å styre en Servo, med den innebyggede PWM funksjonaliteten: Det er gøy å få ting til å bevege seg og servoer er enkle å jobbe med. En servo er en motor med girkasse og en tilbakekobling for å kunne sjekke sin egen posisjon. Når den får beskjed om å flytte seg til en ny posisjon starter den motoren og stopper når sensoren sier den er kommet dit. Små billige servoer styres med pulser der bredden på pulsen styrer posisjonen. Den kobles til med 3 ledninger: Pluss, minus og Puls-Signal. Her er noen vanlige fargekodinger: Det finnes noen Servo biblioteker en kan bruke men noen av den fungerer ikke med ESP32. Fordi ESP32 har innebygget funksjonalitet for å styre LED med pulsbredde bruker jeg like godt dette istedet. (Som dere ser ligner koden på viftestyringen i forrige guide) Forskjellige servoer har forskjellige reaksjoner på pulsbredden. Noen lar motoren gå kontinuerlig på bestemte verdier og mange har bare små puls områder der de reagerer. Kanskje fra 10 til 30. Jeg anbefaler å eksprimentere med den enkelte servo for å finne endeverdiene. Om du skal mappe disse til et smarthus system som går fra 0 til 100 % (Som en dimmer) kan du gjøre dette med denne kommandoen: iPos= map(iPos,0,100,MIN_SERVO_POS,MAX_SERVO_POS); Så kan du sette de endeverdiene du fant inn i konstanter slik: #define MIN_SERVO_POS 12 #define MAX_SERVO_POS 30 Jeg preier likegodt å eksponere både den mappede og den rå posisjonen over MQTT interfacet. (Det koster jo så lite) Så blir testingen (og evnt. rejustering) enklere. Her er kode for å styre 2 servoer over MQTT med både rå og mappede verdier:
  20. @SveinHa Her er et eksempel som virker: Jeg trodde meldingen skulle komme 60 sek ( setKeepAlive(60); ) etter at power forsvant men det er visst ikke helt sånn. Noen steder står det KeepAliveTime * 1,5 men jeg målte 30 sek noen ganger også. Si ifra om du finner ut logikken. Har testet både med og uten retain = true. Fra MQTT Esplorer:
  21. Må ikke retain flagget være TRUE?
  22. @Hr Kotelett bare si ifra om du trenger hjelp
  23. Finnes det en enkel måte å sjekk det på? (i HomeSeer)
  24. @Fred-Stian Åssen gikk det? Trenger du mere tips?
  25. Ja det er det. Skal se om jeg kan grave det fram om litt Bra spørsmål. Når det gjelder meg personlig; se mitt svar under artikkel "0" 🙂
×
×
  • 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.