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

Fermate

Administrator
  • Innlegg

    1 919
  • Ble med

  • Besøkte siden sist

  • Dager vunnet

    149

Fermate vant dagen sist 17. april

Fermate hadde mest likt innhold!

3 følgere

Hjemmeautomasjon

  • System
    HomeSeer

Nylige profilbesøk

13 347 profilvisninger

Fermate sine prestasjoner

Regelrytter

Regelrytter (12/16)

  • Første innlegg
  • Samarbeidspartner
  • Postmaskin Sjeldent
  • Samtalestarter
  • Ett år inn

Nylige merker

1,2k

Nettsamfunnsomdømme

  1. Når HS4 kom med ny ZigBee plugin basert på ZigBee2MQTT ble jeg veldig begeistret. Jeg var lei av JowiHue+DeConz og syntes dette var nye fine greier. Nå driver jeg og tester ut ZigBee devicer men kom opp i et problem med nyinnkjøpte IKEA TRETAKT og IKEA VINDSTYRKA begge står i lista over supporterte https://www.zigbee2mqtt.io/devices/E2204.html https://www.zigbee2mqtt.io/devices/E2112.html men jeg får feil når jeg skal inkludere dem: Har jeg for gammel versjon av ZigBee2MQTT? HVordan oppdaterer jeg?
  2. Hvorfor? Hva er ulempene? Og: Hvor mange kan en koble på samme kabel da.
  3. Har du et koblings sjema?
  4. 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å:
  5. 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.
  6. 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:
  7. 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: ?
  8. 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)
  9. Interessant. Han du noen tanker om denne kontra SONOFF (bortsett fra nettporten) ?
  10. 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 🙂 )
  11. 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..
  12. 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...
  13. 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!
  14. 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 Av en eller annen grunn returnerer den 124 for år nå isteden for 2024. Om noen har tips om å fikse/forklare dette er det fint. 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.
  15. 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?
×
×
  • 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.