Kökstimer

Berätta om dina pågående projekt.
Användarvisningsbild
hanpa
Utsparkad, på semester
Inlägg: 639
Blev medlem: 22 november 2016, 21:54:43
Ort: Hemort

Kökstimer

Inlägg av hanpa »

Detta har funnits i pipen sedan länge men inget har gjorts, dvs projektet är helt nytt och inget återanvänds.

Kökstimer kan tyckas trivialt men då detta är något jag använder varje dag, 1-4 stycken parallellt, så är jag inte nöjd med det som finns på marknaden och jag vill skräddarsy så det blir exakt som jag vill ha det:

Grundfunktion
- 4 separata timers som kan startas och stoppas separat på enkelt sätt men de ska sitta i samma enhet
- Troligen LED-display med stora siffor men det finns andra alternativ, det ska se snyggt ut, kanske olika färger per timer
- Tänker mig primärt rotary encoders med tryckknapp, en per timer
- Inställda tider ska kommas ihåg eftersom jag ofta kör samma tider för vissa saker upprepat
- Displayen ska lätt kunna avläsas på håll, ser inte lika bra som förr. Billiga LCD-timers är svåra att läsa av på håll och displayen blir sämre då den åldras
- Ljudsignaler ska vara tydliga och man ska kunna skilja på vilken/vilka timer(s) det är som löst ut, kanske med ökande ljudnivå

Lullull
- Tänkte lösa det med ESP8266 och vill då koppla det till hemautomationssystemet, främst för att kunna veta om någon timer går men kanske även för att kunna skicka SMS/push eller meddela på annat ställe i huset att en timer löst ut om jag inte hör det, t.ex. i källaren. Kan varnas om detta exempelvis via Apple Watch om larmet inte har "kvitterats" inom en viss tid.
- Aktiveringen kan vara baserat på proximity sensor eller dylikt. Tänkte ha den nätansluten men det finns ingen anledning att visa något på displayen om ingen timer är aktiv och man inte avser att använda den.

Exakt lösning återstår att fundera ut, detta är första skissen på behovet

Principskiss, tänkt att placera den under överskåpet i köket.
Skärmavbild 2017-04-20 kl. 16.53.38.png
Progress
2017-04-20: Projektdefinition med första kravställning och skiss på överordnad design
2017-04-21: Gjorde en mockup för att prova olika storlekar på Adafruits 7-segment LED-displayer med I2C-interface. Beslutade att använda 0.56", 1.2" blir för stor.
2017-04-22: Skal till kod för ESP8266 med stöd för OTA och MQTT. Provat mot NodeMCU ESP-12F som jag har hemma, kör på den tills vidare då Wemos D1 mini har för få pinnar om man inte ska behöva trixa med externa kretsar. Första versionen av modlogik och 4 parallella timers som fungerar OK via simuleringskod.
2017-04-23: Utökade med hantering av uppåträkning då man startar från 0. Var lite småtrixigt men funkar nu enligt nya fall i simuleringskoden.
2017-04-24: Full funktion på MQTT för in/ut-matning från servern mot ESP8266. Provat via skalkommandon men har påbörjat iPhone-app för enklare manövrering.
2017-04-26: Fungerande alternativt användargränssnitt via iPhone i väntan på riktig hårdvara. ESP8266 förmedlar data till linux-servern via MQTT, appen kommunicerar med servern.
2017-04-29: Alla 5 displayerna inkopplade provisoriskt! Lade även till en timvisning då antal sekunder >= 60*60. Blinkar med ":" eller "." då en timer går.
2017-05-06: Kopplade ihop alla displayer via Wago 221 istället för via kopplingsplatta.
2017-05-07: Fortsatt finlir med timerdelen i väntan på hårdvara. Ny designskiss längst ner i inlägget, den ursprungliga finns kvar som jämförelse.
2017-05-14: Kopplat in buzzer och labbat med olika pipmönster, frekvenser och volymer. Funkar över förväntan för $0.39! Klart med pipdelen man kan guldpläteras förstås.
2017-05-16: Drar mig ur tävlingen, lämnar tråden för "arkivering"

Senaste designskiss, den längst upp är den ursprungliga, från vitt papper. Den nya är efter prototyping och nya designval:
Skärmavbild 2017-05-07 kl. 10.26.28.png
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Senast redigerad av hanpa 16 maj 2017, 15:00:25, redigerad totalt 17 gånger.
Användarvisningsbild
13th.Marine
EF Sponsor
Inlägg: 7265
Blev medlem: 31 december 2004, 16:26:37
Ort: Trelleborg

Re: Tävling: EF-projekt: Avancerad kökstimer

Inlägg av 13th.Marine »

Låter som ett spännande projekt, hoppas du ror ihop det så jag kan bygga nått liknande =)
Användarvisningsbild
hanpa
Utsparkad, på semester
Inlägg: 639
Blev medlem: 22 november 2016, 21:54:43
Ort: Hemort

Re: Tävling: EF-projekt: Avancerad kökstimer

Inlägg av hanpa »

Tänkte placera den under överskåpet i köket. Har nu uppdaterat huvudinlägget med principskiss.

Tanken är att den ska finnas där alltid men när man för handen i närheten (eller manövrerar en knapp) så aktiveras den och så är den på tills en viss tid gått efter att sista timern har stannat och ev. kvitterats. Har inte funderat så mycket på kvittering men man kan ju göra så att aktivering av närvarosensorn räknas som kvittering, alternativt att det kan göras via mobil/klocka om det skulle vara av intresse (för att det går...)

Har oftast Apple Watch på mig hemma så jag kan lika gärna skicka info om att timern löst ut, eller kanske att visa status/tid på alla timer via en app på klockan, även detta för att det går och inte för att det är superviktigt. Får se hur mycket jag orkar på lulluldelen men tanken är att åtminstone via MQTT ge möjlighet att styra dubbelriktat mot servern så att funktionen finns om jag vill använda den senare.
Användarvisningsbild
hanpa
Utsparkad, på semester
Inlägg: 639
Blev medlem: 22 november 2016, 21:54:43
Ort: Hemort

Re: Tävling: EF-projekt: Avancerad kökstimer

Inlägg av hanpa »

Jag gillar att jobba strukturerat!

Steg 1: Rafsade ihop kravbilden för att definiera projektet och bli bland de 5 första... 20 minuter på lunchrasten på jobbet.
Steg 2: Ritade en skiss när jag kom hem.
Steg 3: Vadå?

Jag brukar ha svårt för att bestämma mig för komponenter så jag väntar med det. ESP8266:or har jag dock hemma så jag tänkte prova en helt ny grej (för mig).

Steg 3 blir att göra en prototyping-app till iPhone som simulerar displayer, knappar och kanske även ljudsignal och proximitysensorn. Jag bygger sedan upp funktionen gradvis på ESP:n men istället för att koppla in riktig hårdvara (som jag inte har) så får den kommunicera med iPhone-appen så att jag kan prova hur det fungerar med riktig kod på ESP:n.

iPhone-appen:
- Användargränssnitt, inte precis som på riktigt men samma saker ska kunna utföras
- Kommunicerar med linux-servern som i sin tur får kommunicera via MQTT med ESP:n (mest beroende på att jag inte orkat få till MQTT från egen app på iPhone)

ESP:n, ungefär i följande prio byggs funktionen upp:
- Grundskal med stöd för MQTT och OTA-uppdatering (bra att ha sen när den sitter i köket)
- States/modes skapas för att hålla reda på resp. timers status
- Hantering av timers, med inställning av värden, start, stop, nollställ etc. och styrning via appens simulerade "knappar"
- Hantering av "ljudsignaler" (får utföras konkret av appen)
- Fejkad hantering av proximity sensor (triggat av appen)

Detta lär väl ta ett tag men sen återstår ju "bara" att välja riktig hårdvara och interfacea mot, och plus på slutet, något som inte är min grej, att göra någon form av "låda".

Edit: Webbserver på ESP:n med knappar och loggutskrifter mot webbläsare kanske är enklare för prototyping men inte lika roligt. Får se var det tar vägen, jag kan köra MQTT-kommandon via enkla script från linuxburken också...
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4689
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: Tävling: EF-projekt: Avancerad kökstimer

Inlägg av Swech »

Snyggt :)
Swech
Användarvisningsbild
hanpa
Utsparkad, på semester
Inlägg: 639
Blev medlem: 22 november 2016, 21:54:43
Ort: Hemort

Re: Tävling: EF-projekt: Avancerad kökstimer

Inlägg av hanpa »

Huvudkandidater för displayer just nu är Adafruits 7-segment LED med "backpack" och I2C-styrning. Har svårt att välja mellan 0.56" och 1.2".
Skärmavbild 2017-04-21 kl. 07.31.44.png
https://www.adafruit.com/product/881

Någon som känner till något liknande alternativ?

Fördelen med denna och I2C är det går att göra programvaran modulär. Med just denna går det att adressera upp till 8 displayer genom att konfigurera "backpack"-kretskortet med individuell adress och då kan alla nås från samma 2 pinnar från ESP:n. De har även stöd för blinkning, ändring av ljusstyrka etc. som jag har behov av.

0.56"
- Finns i 5 färger men bara 4 går att beställa just nu (inte vit)
- Skulle vara kul att ha 5 stycken, en i varje färg
- Är lite mindre men kanske är lätta att avläsa ändå på håll

1.2"
- Finns bara i 3 färger
- Är kanske lite väl stora, måste ju få plats med dem också

Ska nog prova att göra en "mockup" i form av skiss via copy&paste på bilder på displayerna och utskrift på A3 på färglaser och se hur det kan ta sig ut där jag vill ha den. Eller om jag bygger två enheter, en på varje sida av spisen. Det bör vara en smal sak att skriva progammet för stöd av upp till 8 displayer och så är det en enkel konfigurering i koden vilka man använder och vilka adresser de har. Dock måste jag ju även lösa hanteringen av knapparna på något liknande sätt, om även detta ska vara enkelt att konfigurera. Beror på om jag vill använda många ingångar eller om det kan "muxas" utanför ESP:n. Har ännu inte valt vilken ESP, min favvo Wemos D1 mini kanske har för få pinnar för denna tillämpning, beroende på hur jag gör med knapparna (rotary encoder med tryckknapp).
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
hanpa
Utsparkad, på semester
Inlägg: 639
Blev medlem: 22 november 2016, 21:54:43
Ort: Hemort

Re: Tävling: EF-projekt: Avancerad kökstimer

Inlägg av hanpa »

"Mockup" testad.

1.2" är sjukt stort och tar för mycket plats.
0.56" är helt tillräckligt och kanske drar jag till även med den 5:e färgen som är vit, dock inte i lager hos Adafruit.
Användarvisningsbild
hanpa
Utsparkad, på semester
Inlägg: 639
Blev medlem: 22 november 2016, 21:54:43
Ort: Hemort

Re: Tävling: EF-projekt: Avancerad kökstimer

Inlägg av hanpa »

Grundläggande kod för MQTT och OTA-uppdatering klar, snurrar nu på en NodeMCU ESP-12F.

Första varianten av moder och hantering av 4 parallella timers är funkis. Moderna för timers ser ut så här just nu:

Kod: Markera allt

enum timerStatesType {
  inactive,     // Timer not beeing used for a while, inactive
  ready,        // Timer at set value, ready to start (or restart again from previously set value after acknowledge)
  countingDown, // Timer is counting down, has not yet reached 0
  ended,        // Timer has ended, reached 0, not acknowledged yet
  paused        // Timer has paused from counting down
};
Har provkört timerhanteringen via simuleringskod där användarens input simuleras vid olika tidpunkter. När en timer kommit till noll är det tänkt att den ska kvitteras av användaren, vilket simuleras. Då går man tillbaka till senaste inställda värdet som även är sparat i EEPROM. Om man stoppar innan man kommit ner till noll så hamnar man i pausmod och så kan man fortsätta därifrån igen. Utskrift från loggning via serieporten:

Kod: Markera allt

Booting
......
SYSTEM INIT
 0:00    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 ready  2:00 ] 
 0:01    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 ready  2:00 ] 
 0:02    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 ready  2:00 ] 
 0:03    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 ready  2:00 ] 
 0:04    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 ready  2:00 ] 
 0:05    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 ready  2:00 ] 
 0:06    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 ready  2:00 ] 
 0:07    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 ready  2:00 ] 
 0:08    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 ready  2:00 ] 
 0:09    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 ready  2:00 ] 
 0:10    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 ready  2:00 ] 
 0:11    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 ready  2:00 ] 
 0:12    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 ready  2:00 ] 
 0:13    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 ready  2:00 ] 
 0:14    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 ready  2:00 ] 
USER:                                                                     T4 STARTED
 0:15    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  2:00 ] 
 0:16    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:59 ] 
 0:17    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:58 ] 
 0:18    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:57 ] 
 0:19    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:56 ] 
 0:20    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:55 ] 
 0:21    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:54 ] 
 0:22    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:53 ] 
 0:23    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:52 ] 
 0:24    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:51 ] 
 0:25    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:50 ] 
 0:26    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:49 ] 
 0:27    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:48 ] 
 0:28    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:47 ] 
 0:29    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:46 ] 
USER:     T1 STARTED
 0:30    [ T1 COUNT  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:45 ] 
 0:31    [ T1 COUNT  0:29 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:44 ] 
 0:32    [ T1 COUNT  0:28 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:43 ] 
 0:33    [ T1 COUNT  0:27 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:42 ] 
 0:34    [ T1 COUNT  0:26 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:41 ] 
 0:35    [ T1 COUNT  0:25 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:40 ] 
 0:36    [ T1 COUNT  0:24 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:39 ] 
 0:37    [ T1 COUNT  0:23 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:38 ] 
 0:38    [ T1 COUNT  0:22 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:37 ] 
 0:39    [ T1 COUNT  0:21 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:36 ] 
 0:40    [ T1 COUNT  0:20 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:35 ] 
 0:41    [ T1 COUNT  0:19 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:34 ] 
 0:42    [ T1 COUNT  0:18 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:33 ] 
 0:43    [ T1 COUNT  0:17 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:32 ] 
 0:44    [ T1 COUNT  0:16 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  1:31 ] 
USER:                           T2 STARTED           T3 STARTED
 0:45    [ T1 COUNT  0:15 ]   [ T2 COUNT  1:00 ]   [ T3 COUNT  1:30 ]   [ T4 COUNT  1:30 ] 
 0:46    [ T1 COUNT  0:14 ]   [ T2 COUNT  0:59 ]   [ T3 COUNT  1:29 ]   [ T4 COUNT  1:29 ] 
 0:47    [ T1 COUNT  0:13 ]   [ T2 COUNT  0:58 ]   [ T3 COUNT  1:28 ]   [ T4 COUNT  1:28 ] 
 0:48    [ T1 COUNT  0:12 ]   [ T2 COUNT  0:57 ]   [ T3 COUNT  1:27 ]   [ T4 COUNT  1:27 ] 
 0:49    [ T1 COUNT  0:11 ]   [ T2 COUNT  0:56 ]   [ T3 COUNT  1:26 ]   [ T4 COUNT  1:26 ] 
 0:50    [ T1 COUNT  0:10 ]   [ T2 COUNT  0:55 ]   [ T3 COUNT  1:25 ]   [ T4 COUNT  1:25 ] 
 0:51    [ T1 COUNT  0:09 ]   [ T2 COUNT  0:54 ]   [ T3 COUNT  1:24 ]   [ T4 COUNT  1:24 ] 
 0:52    [ T1 COUNT  0:08 ]   [ T2 COUNT  0:53 ]   [ T3 COUNT  1:23 ]   [ T4 COUNT  1:23 ] 
 0:53    [ T1 COUNT  0:07 ]   [ T2 COUNT  0:52 ]   [ T3 COUNT  1:22 ]   [ T4 COUNT  1:22 ] 
 0:54    [ T1 COUNT  0:06 ]   [ T2 COUNT  0:51 ]   [ T3 COUNT  1:21 ]   [ T4 COUNT  1:21 ] 
 0:55    [ T1 COUNT  0:05 ]   [ T2 COUNT  0:50 ]   [ T3 COUNT  1:20 ]   [ T4 COUNT  1:20 ] 
 0:56    [ T1 COUNT  0:04 ]   [ T2 COUNT  0:49 ]   [ T3 COUNT  1:19 ]   [ T4 COUNT  1:19 ] 
 0:57    [ T1 COUNT  0:03 ]   [ T2 COUNT  0:48 ]   [ T3 COUNT  1:18 ]   [ T4 COUNT  1:18 ] 
 0:58    [ T1 COUNT  0:02 ]   [ T2 COUNT  0:47 ]   [ T3 COUNT  1:17 ]   [ T4 COUNT  1:17 ] 
 0:59    [ T1 COUNT  0:01 ]   [ T2 COUNT  0:46 ]   [ T3 COUNT  1:16 ]   [ T4 COUNT  1:16 ] 
USER:                                                                     T4 PAUSED
 1:00    [ T1 ENDED  0:00 ]   [ T2 COUNT  0:45 ]   [ T3 COUNT  1:15 ]   [ T4 PAUSE  1:15 ] 
 1:01    [ T1 ENDED  0:00 ]   [ T2 COUNT  0:44 ]   [ T3 COUNT  1:14 ]   [ T4 PAUSE  1:15 ] 
 1:02    [ T1 ENDED  0:00 ]   [ T2 COUNT  0:43 ]   [ T3 COUNT  1:13 ]   [ T4 PAUSE  1:15 ] 
 1:03    [ T1 ENDED  0:00 ]   [ T2 COUNT  0:42 ]   [ T3 COUNT  1:12 ]   [ T4 PAUSE  1:15 ] 
 1:04    [ T1 ENDED  0:00 ]   [ T2 COUNT  0:41 ]   [ T3 COUNT  1:11 ]   [ T4 PAUSE  1:15 ] 
USER:      T1 ACKNOWLEDGED
 1:05    [ T1 ready  0:30 ]   [ T2 COUNT  0:40 ]   [ T3 COUNT  1:10 ]   [ T4 PAUSE  1:15 ] 
 1:06    [ T1 ready  0:30 ]   [ T2 COUNT  0:39 ]   [ T3 COUNT  1:09 ]   [ T4 PAUSE  1:15 ] 
 1:07    [ T1 ready  0:30 ]   [ T2 COUNT  0:38 ]   [ T3 COUNT  1:08 ]   [ T4 PAUSE  1:15 ] 
 1:08    [ T1 ready  0:30 ]   [ T2 COUNT  0:37 ]   [ T3 COUNT  1:07 ]   [ T4 PAUSE  1:15 ] 
 1:09    [ T1 ready  0:30 ]   [ T2 COUNT  0:36 ]   [ T3 COUNT  1:06 ]   [ T4 PAUSE  1:15 ] 
 1:10    [ T1 ready  0:30 ]   [ T2 COUNT  0:35 ]   [ T3 COUNT  1:05 ]   [ T4 PAUSE  1:15 ] 
 1:11    [ T1 ready  0:30 ]   [ T2 COUNT  0:34 ]   [ T3 COUNT  1:04 ]   [ T4 PAUSE  1:15 ] 
 1:12    [ T1 ready  0:30 ]   [ T2 COUNT  0:33 ]   [ T3 COUNT  1:03 ]   [ T4 PAUSE  1:15 ] 
 1:13    [ T1 ready  0:30 ]   [ T2 COUNT  0:32 ]   [ T3 COUNT  1:02 ]   [ T4 PAUSE  1:15 ] 
 1:14    [ T1 ready  0:30 ]   [ T2 COUNT  0:31 ]   [ T3 COUNT  1:01 ]   [ T4 PAUSE  1:15 ] 
USER:                                                                     T4 STARTED
 1:15    [ T1 ready  0:30 ]   [ T2 COUNT  0:30 ]   [ T3 COUNT  1:00 ]   [ T4 COUNT  1:15 ] 
 1:16    [ T1 ready  0:30 ]   [ T2 COUNT  0:29 ]   [ T3 COUNT  0:59 ]   [ T4 COUNT  1:14 ] 
 1:17    [ T1 ready  0:30 ]   [ T2 COUNT  0:28 ]   [ T3 COUNT  0:58 ]   [ T4 COUNT  1:13 ] 
 1:18    [ T1 ready  0:30 ]   [ T2 COUNT  0:27 ]   [ T3 COUNT  0:57 ]   [ T4 COUNT  1:12 ] 
 1:19    [ T1 ready  0:30 ]   [ T2 COUNT  0:26 ]   [ T3 COUNT  0:56 ]   [ T4 COUNT  1:11 ] 
 1:20    [ T1 ready  0:30 ]   [ T2 COUNT  0:25 ]   [ T3 COUNT  0:55 ]   [ T4 COUNT  1:10 ] 
 1:21    [ T1 ready  0:30 ]   [ T2 COUNT  0:24 ]   [ T3 COUNT  0:54 ]   [ T4 COUNT  1:09 ] 
 1:22    [ T1 ready  0:30 ]   [ T2 COUNT  0:23 ]   [ T3 COUNT  0:53 ]   [ T4 COUNT  1:08 ] 
 1:23    [ T1 ready  0:30 ]   [ T2 COUNT  0:22 ]   [ T3 COUNT  0:52 ]   [ T4 COUNT  1:07 ] 
 1:24    [ T1 ready  0:30 ]   [ T2 COUNT  0:21 ]   [ T3 COUNT  0:51 ]   [ T4 COUNT  1:06 ] 
 1:25    [ T1 ready  0:30 ]   [ T2 COUNT  0:20 ]   [ T3 COUNT  0:50 ]   [ T4 COUNT  1:05 ] 
 1:26    [ T1 ready  0:30 ]   [ T2 COUNT  0:19 ]   [ T3 COUNT  0:49 ]   [ T4 COUNT  1:04 ] 
 1:27    [ T1 ready  0:30 ]   [ T2 COUNT  0:18 ]   [ T3 COUNT  0:48 ]   [ T4 COUNT  1:03 ] 
 1:28    [ T1 ready  0:30 ]   [ T2 COUNT  0:17 ]   [ T3 COUNT  0:47 ]   [ T4 COUNT  1:02 ] 
 1:29    [ T1 ready  0:30 ]   [ T2 COUNT  0:16 ]   [ T3 COUNT  0:46 ]   [ T4 COUNT  1:01 ] 
 1:30    [ T1 ready  0:30 ]   [ T2 COUNT  0:15 ]   [ T3 COUNT  0:45 ]   [ T4 COUNT  1:00 ] 
 1:31    [ T1 ready  0:30 ]   [ T2 COUNT  0:14 ]   [ T3 COUNT  0:44 ]   [ T4 COUNT  0:59 ] 
 1:32    [ T1 ready  0:30 ]   [ T2 COUNT  0:13 ]   [ T3 COUNT  0:43 ]   [ T4 COUNT  0:58 ] 
 1:33    [ T1 ready  0:30 ]   [ T2 COUNT  0:12 ]   [ T3 COUNT  0:42 ]   [ T4 COUNT  0:57 ] 
 1:34    [ T1 ready  0:30 ]   [ T2 COUNT  0:11 ]   [ T3 COUNT  0:41 ]   [ T4 COUNT  0:56 ] 
 1:35    [ T1 ready  0:30 ]   [ T2 COUNT  0:10 ]   [ T3 COUNT  0:40 ]   [ T4 COUNT  0:55 ] 
 1:36    [ T1 ready  0:30 ]   [ T2 COUNT  0:09 ]   [ T3 COUNT  0:39 ]   [ T4 COUNT  0:54 ] 
 1:37    [ T1 ready  0:30 ]   [ T2 COUNT  0:08 ]   [ T3 COUNT  0:38 ]   [ T4 COUNT  0:53 ] 
 1:38    [ T1 ready  0:30 ]   [ T2 COUNT  0:07 ]   [ T3 COUNT  0:37 ]   [ T4 COUNT  0:52 ] 
 1:39    [ T1 ready  0:30 ]   [ T2 COUNT  0:06 ]   [ T3 COUNT  0:36 ]   [ T4 COUNT  0:51 ] 
 1:40    [ T1 ready  0:30 ]   [ T2 COUNT  0:05 ]   [ T3 COUNT  0:35 ]   [ T4 COUNT  0:50 ] 
 1:41    [ T1 ready  0:30 ]   [ T2 COUNT  0:04 ]   [ T3 COUNT  0:34 ]   [ T4 COUNT  0:49 ] 
 1:42    [ T1 ready  0:30 ]   [ T2 COUNT  0:03 ]   [ T3 COUNT  0:33 ]   [ T4 COUNT  0:48 ] 
 1:43    [ T1 ready  0:30 ]   [ T2 COUNT  0:02 ]   [ T3 COUNT  0:32 ]   [ T4 COUNT  0:47 ] 
 1:44    [ T1 ready  0:30 ]   [ T2 COUNT  0:01 ]   [ T3 COUNT  0:31 ]   [ T4 COUNT  0:46 ] 
 1:45    [ T1 ready  0:30 ]   [ T2 ENDED  0:00 ]   [ T3 COUNT  0:30 ]   [ T4 COUNT  0:45 ] 
 1:46    [ T1 ready  0:30 ]   [ T2 ENDED  0:00 ]   [ T3 COUNT  0:29 ]   [ T4 COUNT  0:44 ] 
 1:47    [ T1 ready  0:30 ]   [ T2 ENDED  0:00 ]   [ T3 COUNT  0:28 ]   [ T4 COUNT  0:43 ] 
 1:48    [ T1 ready  0:30 ]   [ T2 ENDED  0:00 ]   [ T3 COUNT  0:27 ]   [ T4 COUNT  0:42 ] 
 1:49    [ T1 ready  0:30 ]   [ T2 ENDED  0:00 ]   [ T3 COUNT  0:26 ]   [ T4 COUNT  0:41 ] 
USER:                           T2 ACKNOWLEDGED
 1:50    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 COUNT  0:25 ]   [ T4 COUNT  0:40 ] 
 1:51    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 COUNT  0:24 ]   [ T4 COUNT  0:39 ] 
 1:52    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 COUNT  0:23 ]   [ T4 COUNT  0:38 ] 
 1:53    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 COUNT  0:22 ]   [ T4 COUNT  0:37 ] 
 1:54    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 COUNT  0:21 ]   [ T4 COUNT  0:36 ] 
 1:55    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 COUNT  0:20 ]   [ T4 COUNT  0:35 ] 
 1:56    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 COUNT  0:19 ]   [ T4 COUNT  0:34 ] 
 1:57    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 COUNT  0:18 ]   [ T4 COUNT  0:33 ] 
 1:58    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 COUNT  0:17 ]   [ T4 COUNT  0:32 ] 
 1:59    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 COUNT  0:16 ]   [ T4 COUNT  0:31 ] 
 2:00    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 COUNT  0:15 ]   [ T4 COUNT  0:30 ] 
 2:01    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 COUNT  0:14 ]   [ T4 COUNT  0:29 ] 
 2:02    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 COUNT  0:13 ]   [ T4 COUNT  0:28 ] 
 2:03    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 COUNT  0:12 ]   [ T4 COUNT  0:27 ] 
 2:04    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 COUNT  0:11 ]   [ T4 COUNT  0:26 ] 
 2:05    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 COUNT  0:10 ]   [ T4 COUNT  0:25 ] 
 2:06    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 COUNT  0:09 ]   [ T4 COUNT  0:24 ] 
 2:07    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 COUNT  0:08 ]   [ T4 COUNT  0:23 ] 
 2:08    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 COUNT  0:07 ]   [ T4 COUNT  0:22 ] 
 2:09    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 COUNT  0:06 ]   [ T4 COUNT  0:21 ] 
 2:10    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 COUNT  0:05 ]   [ T4 COUNT  0:20 ] 
 2:11    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 COUNT  0:04 ]   [ T4 COUNT  0:19 ] 
 2:12    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 COUNT  0:03 ]   [ T4 COUNT  0:18 ] 
 2:13    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 COUNT  0:02 ]   [ T4 COUNT  0:17 ] 
 2:14    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 COUNT  0:01 ]   [ T4 COUNT  0:16 ] 
 2:15    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ENDED  0:00 ]   [ T4 COUNT  0:15 ] 
 2:16    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ENDED  0:00 ]   [ T4 COUNT  0:14 ] 
 2:17    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ENDED  0:00 ]   [ T4 COUNT  0:13 ] 
 2:18    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ENDED  0:00 ]   [ T4 COUNT  0:12 ] 
 2:19    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ENDED  0:00 ]   [ T4 COUNT  0:11 ] 
USER:                                                T3 ACKNOWLEDGED
 2:20    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  0:10 ] 
 2:21    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  0:09 ] 
 2:22    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  0:08 ] 
 2:23    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  0:07 ] 
 2:24    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  0:06 ] 
 2:25    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  0:05 ] 
 2:26    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  0:04 ] 
 2:27    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  0:03 ] 
 2:28    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  0:02 ] 
 2:29    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 COUNT  0:01 ] 
 2:30    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 ENDED  0:00 ] 
 2:31    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 ENDED  0:00 ] 
 2:32    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 ENDED  0:00 ] 
 2:33    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 ENDED  0:00 ] 
 2:34    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 ENDED  0:00 ] 
USER:                                                                     T4 ACKNOWLEDGED
 2:35    [ T1 ready  0:30 ]   [ T2 ready  1:00 ]   [ T3 ready  1:30 ]   [ T4 ready  2:00 ] 

Har ännu vare sig displayer eller rotary encoders, misstänker att det kräver en hel del finlir innan man får det att funka som man vill ha det.
Användarvisningsbild
hanpa
Utsparkad, på semester
Inlägg: 639
Blev medlem: 22 november 2016, 21:54:43
Ort: Hemort

Re: Tävling: EF-projekt: Avancerad kökstimer

Inlägg av hanpa »

Jag anade att logiken kring dessa timers skulle vara lite trickig att få till men jag har nu en komplett testsvit för den funktion jag har nu så det är lätt att se om det fungerar som det ska. Har kompletterat med att timers kan räkna uppåt också om man startar från 0. Fördelen med att ha flera timers är ju att logiken är "gratis" för timer 2 och framåt. Har en konstant som säger 4 st för att det är så många displayer jag planerar för just nu men det skulle funka lika bra med 100 i koden. Provade med 100 och 1000 timers också för skojs skull och det tuffade på bra men loggutskriften blev aningen bred...

Just nu räknar timers max till 99:59 men det kanske vore smart att byta visningsformat till HH:MM om det är mer än 59 minuter, att man då döljer sekundvisningen. Jag använder i princip aldrig sekunder på vanliga kökstimers, det är ju bara på slutet när timers börjar löpa ut som man kollar på det, kortare tider än 30 sekunder är ovanligt.

Har inte funderat så mycket kring logiken med rotary encoders än men kanske något i stil med följande:

Normal användning
1. Ställ in tid genom att vrida, går åt bägge håll förstås. Då ändras bara minutinställningen i grundläget. (Eller använd sparad inställning för timern)
2. Tryck på knappen för att starta
Ev. tryck igen för att pausa och en gång till för att fortsätta därifrån
När en timer löper ut (går till 0 eller till maxvärdet om den går uppåt) så ska det pipa och blinka tills man kvitterat, ev. att det autokvitterar efter en viss tid.
När kvittering är klar så återgår timern till senaste inställda värdet automatiskt

När ytterligare tid går utan att man använder så går timern ner till inaktivt läge och displayen tonas ner till mycket låg ljusstyrka alternativt släcks helt. Behöver provas ut. Har inte bestämt mig för om proximity sensor är vettigt, misstänker att sådana kan jävlas och inte funka tillräckligt bra. Då detta blir lite som en dekoration så kan alternativet vara att aldrig släcka helt utan bara välja en låg ljusstyrka. Därifrån kan man starta eller ändra tid etc. och då tänds displayen upp igen för den timern.

Nollställning
Om man vill nolla timern helt så håller man inne knappen en viss tid, behöver provas.

Accelererande funktion vid inställning
Kanske inte behövs då det är 20 pulser per varv med de rotary encoders jag tänker mig. Annars kan man ju accelerera upp/ned-räkningen efter en tids ändring.

Ändring med aktiv timer
Man borde kunna vrida upp och ner medan timern är aktiv om man vill ändra tiden.

Sekundinställning
Om detta nu behövs. Kan tänka mig några olika alternativ.
- Trycka ner knappen och vrida samtidigt. Måste provas.
- Dubbeltrycka på knappen och byta mod till sekundinställning, återgår en stund senare till minutmod.
- Dito fast kanske långt tryck, hur långt får jag prova i så fall.

Ytterligare ett alternativ är att normala inställningen görs i steg om 30 sekunder. Kanske blir ännu bättre.

Inställning av långa tider
Tveksamt behov men borde kunna funka så att när man passerar över 59 minuter så ändras visningen från MM.SS till HH:MM, vid nedräkning ändras den sedan automatiskt till MM.SS under 60 minuter. I så fall borde maxtiden vid uppräkning från noll också ändras till 24 timmar eller liknande.

För att se att en timer är aktiv i den moden så tänkte jag att det ska blinka i sekundtakt så att man ser att den lever.
Lyxfunktion skulle vara att den alternerar mellan de olika visningarna varannan sekund.
Användarvisningsbild
hanpa
Utsparkad, på semester
Inlägg: 639
Blev medlem: 22 november 2016, 21:54:43
Ort: Hemort

Re: Tävling: EF-projekt: Avancerad kökstimer

Inlägg av hanpa »

Har provat andra varianter av uppräkning. Tror inte längre på någon speciell sekundinställningsmod utan att man stegar olika mycket beroende på värdet på timern. Typ steg om 5 sekunder upp till 1 minut, steg om 10 sekunder upp till 5 minuter, steg om 30 sekunder upp till en halvtimme etc. Då det är 20 varv på rotary encodern så lär det gå snabbt att ställa in även höga värden. Går ju att lägga på acceleration också så det går ännu snabbare att komma upp till långa tider. Har även "alignment" till närmaste steg, typ stega upp från pausad timer på 1:07 hamnar då på 1:10, nästa 1:20 osv.

Har nu komplett utläsning av värdet på timers via MQTT och styrning från MQTT av fejkade rotary encoders. Har påbörjat app till iPhone som ska kopplas ihop via servern för att enklare kunna hårdtesta. Lär ta flera veckor till innan jag har displayer och rotary encoders så jag kan lika gärna göra klart all timer-logik innan dess.

Appen har visning av timervärden och en enklare fejk av rotary encoders. Tänkte skicka kommandon för mittknappen (som finns på riktig rotary encoder), kort resp. lång tryckning (för reset) och upp/ner-kommando som motsvarar det jag ska koda av mot rotary encoders. Skulle i princip kunna simulera rotary encoder fullt ut med graykod från appen men det känns lite överkurs.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Tävling: EF-projekt: Avancerad kökstimer

Inlägg av Magnus_K »

Vet inte om det framgått riktigt så tänkte fråga; vad använder du så många timers till?
Är lite nyfiken då mat är mitt andra intresse efter elektroniken.

Bygger du denna som just "kökstimer", eller är det bara ett uttryck för att den sen ska användas vid tex labb-bänken?
Användarvisningsbild
hanpa
Utsparkad, på semester
Inlägg: 639
Blev medlem: 22 november 2016, 21:54:43
Ort: Hemort

Re: Tävling: EF-projekt: Avancerad kökstimer

Inlägg av hanpa »

Som namnet. Använder minst en sådan timer varje dag vid spisen men det förekommer att jag har flera tidtagningar på gång parallellt. 4 plattor, kanske deg på jäsning, ugnen etc.

Jag ska ha den i köket och vill då ha den direkt tillgänglig och gärna snygg. Det finns appar eller jag hade kunnat gjort en egen utan ESP8266 men jag ogillar appar som binder upp mobilen/klockan.

Vill kunna se vad som händer en bit ifrån, vid matbordet. Händer inte alltför sällan att jag sätter på något och missade att få på timern och vill lätt se sådant från köksbordet. Eller få påminnelse om jag inte är i närheten och hör pipet. Via Apple Watch etc.

Praktisk och snyggt är målet. Lyx.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Tävling: EF-projekt: Avancerad kökstimer

Inlägg av Magnus_K »

Då förstår jag. Skulle nog behöva något liknande själv, ju mer jag tänker på det :humm:

Lycka till!
Användarvisningsbild
hanpa
Utsparkad, på semester
Inlägg: 639
Blev medlem: 22 november 2016, 21:54:43
Ort: Hemort

Re: Tävling: EF-projekt: Avancerad kökstimer

Inlägg av hanpa »

Har använt olika små timers med LCD-display genom åren men ingen har levt upp till mina "krav". Billiga och dåliga kompromisser.
Användarvisningsbild
Glenn
Inlägg: 33666
Blev medlem: 24 februari 2006, 12:01:56
Ort: Norr om Sthlm
Kontakt:

Re: Tävling: EF-projekt: Avancerad kökstimer

Inlägg av Glenn »

Jag förstår absolut behovet, jag använder microvågsugnens timer oftast, och sen mobilen i andra hand, men ibland behöver man fler än två timers, då får sambons mobil stå till tjä nst, och det har hänt att man behövt en ytterligare.

Så fyra är nog vad man skulle behöva hemma också.
Låst