Ik liep al een tijdje met de gedachte rond om mijn gordijnen in het huis automatisch open en dicht te kunnen doen. Dit is bijvoorbeeld ook handig als je op vakantie bent. Nu zijn hiervoor kant en klare oplossingen, maar deze zijn schrikbarend duur. Dat moet ik zelf toch ook kunnen maken dacht ik. Ik ben toen eens gaan nadenken en heb het ‘eCurtains’ project bedacht. Met behulp van een Arduino Wifi board en een stappen motor ga ik gordijnen aansturen.
De stappenmotor stuurt een band aan waar ik de gordijnen aan bevestig. Het volgende plaatje maakt dit duidelijker.
De stappenmotor stuur ik tenslotte weer aan met een ‘ULN Stepper Motor Driver’ die aangesloten is op de Arduino ESP8266. Ik kan de ESP8266 draadloos via een Web-Interface en/of API bedienen.
Benodigheden
Je hebt de volgende zaken nodig voor dit project:
1 x Breadboard 400
1 x NodeMcu ESP8266 (CH340/CP2102)
1 x MB102 Breadboard Power Supply Module 3.3V 5V
1 x 28BYJ-48 Stepper Motor + ULN2003 Driver Board Module
1 x Waterproof ABS Plastic Electronic Enclosure Project Box Case Black 125 x 80 x 32 mm
1 x Voltcraft 12V/DC 2250 mA 27W Adapter (Euro 16,50)
1 x GT2 40T 5 mm Timing Pulley
1 x GT2 20T 5 mm Timing Pulley
1 x 10 meter GT2 Timing Belt 6 mm
1 x Silk Satin Ribbon 6 mm
Zoals je ziet heb ik een dure voeding in het lijstje hierboven staan terwijl je op eBay veel goedkopere voedingen vind. Ik heb geen voeding van eBay gekozen daar ik voedingen uit China niet helemaal vertrouw en ik geen brand wil riskeren.
Als je de gordijnen ook nog met een schakelaar (via Pimatic) wilt bedienen dan heb je ook nog nodig:
1 x 433MHz Universal Wireless Remote Control 2 Button
Uiteindelijk ben je ongeveer Euro 35,= kwijt aan materialen per gordijn paar dat je wilt bedienen (waarvan Euro 16,50 voor de voeding).
Update 5 juni 2018:
De 28BYJ-48 stappen motor draait wel langzaam. Met een Nema17 stappen motor gaat het een stuk sneller. Ik heb eCurtains inmiddels voorbereid om ook een Nema17 stappen motor te ondersteunen. In de volgende blog leg ik uit hoe je een Nema17 stappen motor kunt gebruiken en aansluit in eCurtains.
Aansluiten
Het aansluiten is heel eenvoudig als je de pin-aansluitingen van je ESP8266 module weet:
Plaats het 3.3V/5V Breadboard Power Supply Module op het Breadboard en zet de dip-switches op 5V. Plaats nu de ESP8266 hier achter en sluit de 5V van de Power Supply Module aan op de Vin pin van de ESP8266. Doe hetzelfde voor de GND die je op op de GND pin van de ESP8266 aansluit. Sluit IN1, IN2, IN3 en IN4 van de ULN Stepper Motor Driver aan op respectievelijk D1, D2, D5 en D6 van de NodeMCU. Sluit verder de andere 5V en GND van de Breadboard Power Supply Module aan op de ULN Stepper Motor Driver.
Tenslotte moet je nog de stappen motor inpluggen op je ULN Stepper Motor Driver en de Breadboard Power Supply Module op de Power Supply Adapter.
Programmeren
Het aansturen van de stappen motor is niet moeilijk (zie ook het volgende artikel met veel achtergrond informatie). We gebruiken hiervoor de Arduino IDE software die je hier kunt downloaden. Voordat we aan de slag gaan moet we nog wat instellingen in de Arduino IDE veranderen. Vul bij ‘File > Preferences’ voor ‘Additional Boards Manager URLs’ de volgende waarde in:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
Ga naar Open Boards Manager vanaf ‘Tools > Board’. Scroll naar beneden en selecteer ‘esp8266 by ESP8266 Community’. Kies nu ‘install’.
Ga verder naar ‘Sketch > Include Library > Manage Libraries…’ en installeer de ‘AccelStepper’ library van Mike McCauley.
We zijn nu klaar om eindelijk te gaan programmeren. Om de stappenmotor aan te sturen kun je onderstaande code-snippet gebruiken
// For ESP8266 #include // ESP8266 WiFi #include // ESP8266 Web Server #include // EEPROM #include // Serial Peripheral Interrface #include // File system // For Steppermotor #include // Acceleration Stepper Driver // // Steppermotor settings // #define STEPS_PER_REVOLUTION 2048 // Steps per Revolution #define MOTOR_ACCELERATION 100.0 // Acceleration of motor #define MOTOR_MAX_SPEED 250.0 // Maximum speed of motor #define MOTOR_PIN1 D1 // IN1 pin on ULN2003A Driver => GPIO16 #define MOTOR_PIN2 D2 // IN2 pin on ULN2003A Driver => GPIO5 #define MOTOR_PIN3 D5 // IN3 pin on ULN2003A Driver => GPIO14 #define MOTOR_PIN4 D6 // IN4 pin on ULN2003A Driver => GPIO12 // Initialize for using AccelStepper with 28BYJ-48 // Remark: use pin sequence: IN1-IN3-IN2-IN4 when using the AccelStepper with 28BYJ-48 AccelStepper Stepper( AccelStepper::FULL4WIRE, MOTOR_PIN1, MOTOR_PIN3, MOTOR_PIN2, MOTOR_PIN4 ); // ----------------------------------------------------------------------------------------- // setup // Default setup() method called once by Arduino // ----------------------------------------------------------------------------------------- void setup() { // Setup serial port for your Serial Monitor Serial.begin( 115200 ); // Move motor 3 rotations move_motor ( 3.0 ); // Wait 1 second delay (1000); // Move motor 3 rotations back move_motor ( -3.0 ) } void move_motor (float no_rotations) { // Set maximum of motor speed Stepper.setMaxSpeed ( MOTOR_MAX_SPEED ); // Set acceleration8 Stepper.setAcceleration ( MOTOR_ACCELERATION ); // Give stepper instruction to move motor Stepper.move( no_rotations * STEPS_PER_REVOLUTION); }
Verder moet je in je Arduino ‘loop’ functie de ‘run’ methode van de Stepper aanroepen:
// // loop () // Here you find the main code which is run repeatedly // void loop() { // Control movement of motor Stepper.run(); }
Ik ben hiermee verder aan de slag gegaan en heb uitgebreide software geschreven voor mijn ‘eCurtains’ project. De software bestaat uit meer dan 2650 regels source-code en hiermee kun je via een Web-Interface of API de stappen motor aansturen. Om de software op je ESP8266 te krijgen moet je de volgende stappen doorlopen:
- In de Arduino IDE kies je in ‘File > Open’ menu de file ‘eCurtains.ino’ in de directory waar je deze hebt opgeslagen
- Zet in ‘File > Preferences’ je ‘Sketchbook location’ naar de lokatie waar je ‘eCurtains’ hebt opgeslagen
- Kies nu ‘Sketch > Verify/Compile’
- Sluit je ESP8266 board via USB aan op je computer
- Stel je upload poort in bij ‘Tools > Port’ (bijvoorbeeld /dev/ttyUSB0 op Debian of COM4 op Windows)
- Kies ‘Sketch > Upload’
Als je Port niet juist ingesteld krijgt met Windows dan moet je wellicht nog de FTDI USB Drivers installeren op je computer
eCurtains software
Initiëel zal je ESP8266 opstarten als een Access Point (AP Mode). Wacht totdat je ‘eCurtains’ ziet verschijnen bij je draadloze netwerken. Maak verbinding met de SSID ‘eCurtains‘ en vul voor wachtwoord ‘eCurtains’ in. Ga vervolgens met je browser naar 192.168.4.1 en vul de Wifi gegevens van je lokale Wifi netwerk in en druk op [Submit].
Als het goed is gegaan verschijnt er OK op het browser-scherm. Herstart nu de ESP8266 (door reset knopje op ESP8266 te drukken of even de stroom eraf halen). De ESP8266 zal na de herstart automatisch verbinding maken met je Wifi Netwerk. Controleer welk IP adres je ESP8266 heeft gekregen van je DHCP server en ga met je browser naar dit IP-adres. Je krijgt nu een login-scherm te zien.
De standaard gebruikers-naam is ‘admin‘ en hier hoort standaard het wachtwoord ‘notdodo‘ bij. Deze gegevens kun je eventueel later in de Web-Interface van ‘eCurtains’ aanpassen bij [Instellingen]. Na het invullen van deze gegevens verschijnt de web-interface.
Idee achter de ‘eCurtains’ software is dat je eerst je stappen motor gaat calibreren voor je gordijnen. Stel de ‘linkse’ en ‘rechtse’ grens (open en dicht) van je gordijnen in door het bewegen van de stappen motor. stel vervolgens de drempel waarde voor links en rechts in. Op deze manier kan de motor nooit voorbij deze punten komen. Ik denk dat de Web-Interface voor zichzelf spreekt en geen verdere uitleg nodig heeft.
Je kunt met [Instellingen] de taal, hostnaam en motor instellingen veranderen. Let op dat je de maximale snelheid niet te hoog instelt, want dat gaat ten koste van je ’torque’, waardoor de motor gemakkelijker zal ‘slippen’ bij tegenkracht. Je kunt hiermee experimenteren en een goede waarde instellen voor jouw gordijnen (afhankelijk hoe gemakkelijk je deze normaal gesproken kunt bewegen).
Wil je nu de gordijnen open doen dan druk je in de web-interface op de [Helemaal Links] knop. Voor dicht doen druk je op de [Helemaal Rechts] knop. Je kunt de ESP8266 ook via een API besturen. Dat is handig als je dit project in Pimatic wilt integreren. Je kunt bijvoorbeeld in Pimatic een knop definieren en dan een ‘curl’ commando uitvoeren met deze API.
Het formaat van de API actions is als volgt:
http://ip-address/api?action=xxx&value=yyy&api=zzz
De ‘value’ is afhankelijk van de ‘action’ optioneel. De API moet altijd (vanuit veiligheids oogpunt) meegegeven worden. De default API key waarde is ‘27031969’. Je kunt deze eenmalig met ‘set_api’ veranderen. Op dit moment worden de volgende API actions ondersteund:
reboot, value (value=false of true) reset, value (value=false of true) set_api, value (value=nieuwe API key) set_host, value (value=nieuwe host-name) set_language, value (0=Engels, 1=Nederlands) reset_left reset_current reset_right set_left, [value] (indien geen value opgegeven dan huidige positie) move_motor, value set_right, [value] (indien geen value opgegeven dan huidige positie) stop_motor motor_acceleration, value (value=acceleration) motor_max_speed, value (value=maximum speed) move_total_left move_total_right
Om bijvoorbeeld de host-name van je ESP8266 te veranderen gebruik je:
http://ip-address/api?action=set_host&value=my_host&api=your_api
Upgraden eCurtains
Je kunt tenslotte ook nog ‘eCurtains’ via de Web-Interface updaten (dus via Wifi zonder draad). Dat is handig als je alles al ingebouwd hebt. Hiervoor maak je gebruik van de gecompileerde code. Dit doe je door in de Arduino IDE ‘Sketch > Export Compiled Binary’ te kiezen. Er zal dan een ‘bin’ file gegenereerd worden in de directory van je ‘eCurtains.ino’ sketch file. Deze kun je dan uploaden via de volgende verborgen URL van de ‘eCurtains’ Web-Interface:
http://ip-adres/upgradefw
Uit veiligheids oogpunt moet je wel eerst in de web-interface ingelogd zijn wil je deze URL kunnen gebruiken.
Kies de file-naam van je ‘bin’ en druk op de [Upgrade] knop. Na 1 minuutje zal je ESP8266 van nieuwe software zijn voorzien en automatisch worden herstart. Indien de major versie (getal voor de punt) van ‘eCurtains’ is veranderd dan zal de software weer in AP mode opstarten en worden alle instellingen gereset. Je moet dan alles weer opnieuw instellen.
Installeren van de Hardware
Tot nu toe hebben we nog niks met de gordijnen zelf gedaan. We gaan nu de hardware verbinden met de gordijnen. Ik heb hiervoor gebruik gemaakt van een behuizing voor de stappen-motor. Ik heb de volgende STL file opgestuuurd naar 3D Printservice. Binnen een aantal dagen ontvang je deze als 3D print terug:
De ESP8266 met voeding en Motor Driver heb ik ingebouwd in een zwarte 125 x 80 x 32 mm enclosure box. Deze box en de stappenmotor in de 3D print (gebruik M2.2 x 8 schroefjes) plaats ik aan 1 kant van het gordijn.
Om de band op maat te maken heb ik de volgende youtube video gebruikt:
Aan de andere kant van het gordijn heb ik een as met tandwiel bedacht die ik strak zet met een veer. De onderdelen hiervoor heb ik bij de Praxis gehaald.
De gordijnen bevestig ik met een dun ijzerdraadje aan de band. Uiteindelijk ziet het er zo uit in actie:
Pimatic/Domoticz integratie
Aangezien ‘eCurtains’ een API heeft kun je deze heel gemakkelijk in Pimatic of Domoticz integreren. Voor Pimatic maak je een ‘ButtonsDevice’ aan:
{ "id": "curtains-front-buttons", "name": "Voorkant", "class": "ButtonsDevice", "buttons": [ { "id": "curtains-back-open", "text": "Open" }, { "id": "curtains-back-close", "text": "Dicht" }, { "id": "curtains-back-left", "text": " < " }, { "id": "curtains-back-stop", "text": " o " }, { "id": "curtains-back-right", "text": " > " } ] }
Aan elke button hang je dan een “rule” die je API aanstuurt. Zie het onderstaande voorbeeld:
{ "id": "rule-curtains-back-open", "name": "Gordijnen Achter Open", "rule": "when curtains-back-open is pressed then execute \"curl -s http://192.168.1.80/api?action=move_total_left 2> /dev/null\"", "active": true, "logging": true }, { "id": "rule-curtains-back-close", "name": "Gordijnen Achter Dicht", "rule": "when curtains-back-close is pressed then execute \"curl -s http://192.168.1.80/api?action=move_total_right 2> /dev/null\"", "active": true, "logging": true }, { "id": "rule-curtains-back-left", "name": "Gordijnen Achter Links", "rule": "when curtains-back-left is pressed then execute \"curl -s http://192.168.1.80/api?action=move_motor'&'value=-5'&'api=your_api' > /dev/null\"", "active": true, "logging": true }, { "id": "rule-curtains-back-stop", "name": "Gordijnen Achter Stop", "rule": "when curtains-front-stop is pressed then execute \"curl -s http://192.168.1.80/api?action=stop_motor'&'api=27031969 > /dev/null\"", "active": true, "logging": true }, { "id": "rule-curtains-back-right", "name": "Gordijnen Achter Rechts", "rule": "when curtains-back-right is pressed then execute \"curl -s http://192.168.1.80/api?action=move_motor'&'value=5'&'api=your_api' > /dev/null\"", "active": true, "logging": true }
In het bovenstaand voorbeeld wordt bij de betreffende knop ‘curl’ aangeroepen met de juiste syntax.
Voor Domoticz maak je een Dummy Switch aan waaraan je een selector hangt.
Vervolgens maak je een rule aan waarin je reageert op drukken van de selecties:
commandArray = {} -- loop through all the changed devices for deviceName,deviceValue in pairs(devicechanged) do -- Gordijn Achter Links (Open) if (deviceName=='Dummy Gordijn Achter Links') then print("Knop Gordijnen Achter Links gedrukt") os.execute("curl -s http://192.168.1.81/api?action=move_total_left'&'api=your_api 2> /dev/null &") -- Gordijn Achter Stop elseif (deviceName=='Dummy Gordijn Achter Stop') then print("Knop Gordijnen Achter Stop gedrukt") os.execute("curl -s http://192.168.1.81/api?action=stop_motor'&'api=your_api 2> /dev/null &") -- Gordijn Achter Rechts (Close) elseif (deviceName=='Dummy Gordijn Achter Rechts') then print("Knop Gordijnen Achter Rechts gedrukt") os.execute("curl -s http://192.168.1.81/api?action=move_total_right'&'api=your_api 2> /dev/null &") end end return commandArray
Voor de WAF (Wife Acceptance Factor) heb ik ook nog 2 fysieke knoppen toegevoegd. Op eBay vond ik een 433MHz RF Switch (US$ 4,50).
Hiermee kun je een signaal naar Pimatic/Domoticz sturen die dan vervolgens weer de API van ‘eCurtains’ aanstuurt.
Hoe kom ik aan de software?
Ik ben nu bijna 8 jaar met deze blog bezig en heb in die tussentijd alles bij elkaar opgeteld ongeveer 1.000.000 hits gehad en 895.000 bezoekers. In al die tijd hebben tot nu toe 7 mensen de moeite genomen om een kleine bijdrage te leveren omdat de informatie hen geholpen had. Dit terwijl bijvoorbeeld mijn blogs over reparatie van de Humax Receiver, Vaatwas Machine en Combi-Magnetron vele mensen honderden Euro’s hebben bespaard.
Daarom wil ik eens wat anders proberen deze keer. Je kunt de software van dit ‘eCurtains’ project bij mij kopen voor een kleine bijdrage van Euro 5,=. Als je deze wilt hebben moet je dit bedrag overmaken naar mijn bankrekeningnummer NL70RABO0145390640 ten name van H.M.M. Matthijssen onder vermelding van je email-adres en de toevoeging ‘eCurtains’. Ik stuur je dan de source-code toe zodat je zelf de code kunt compileren en/of aanpassen. Ik hoop dat je begrip hebt voor deze actie.
Als alternatief (indien je de software niet wilt kopen) kun je zelf aan de slag gaan. Dit artikel zou genoeg input moeten bevatten om je op weg te helpen.
Complimenten voor deze hele mooie en uitgebreide blog! Als ik hier de tijd voor heb ga ik dit ook thuis proberen.
Hallo, een zeer interresante B-log, en ben ook direct begonnen met exprirementeren, niet dat ik gordijnen wil open/dichtschuiven maar wel andere dingen op hetzelfde principe wil bewegen, ondertussen veel onderdelen aangeschaft en ligt nu op de testbank, echter bij de 1e sketch hierboven gaat het al fout, terwijl ik alles netjes heb opgevolgd en zelfs de identiek genoemde stappenmotor gebruik, geeft hij bij de eerste sketche al de volgende foutmelding ” “accelstepper” does not name a type”.
Ik heb de sketch gekopieerd en geplakt dus zitten er geen typefouten door de overname niet in? wat kan hier mis gegaan zijn?
Groetjes Kees
Ik neem aan dat je de AccelStepper library goed hebt toegevoegd. Zoals in de blog tekst aangegeven zijn dit slechts stukjes code en niet de gehele sketch.
Je zult dus waarschijnlijk de #include naar de AccelStepper library missen. Ik heb deze nu maar even toegevoegd aan mijn voorbeeld. Je hebt in je sketch minimaal de eerste twee code stukjes code nodig.
Succes verder Kees.
dank U voor uw informatie,ik miste inderdaad wat #include…. regels daar was ik al achter maar kreeg ze niet compleet, ik had mijn projecjt alweer opgeruimd, nu toch even ingeladen, zie nog wel een foutmelding ” “D1″was not declared in this scope”,
Ik ga binnenkort nog wel even verder stoeien, alvast bedank foor de info. Gr. Kees.B
Henri,
Super gaaf project, hulde!
Zodra de openstaande klussen in huis gedaan zijn wordt dit mijn volgende project.
Nog steeds tevreden met je auto gordijnen?
Bedankt!
Bedankt Marvin en ja ik ben er nog steeds heel erg tevreden over, Zoals aangegeven in de update gebruik ik nu wel snellere stappenmotoren. Zie mijn ander blog artikel hoe je deze gebruikt.
Dag. Ik zoek een mooie oplossing om mijn twee kipjes sochtends hun hok uit te laten en savonds de deur weer dicht. Zie het als gordijnen open en dicht.
Het lijkt me het makkelijkst om dat met een arduino icm met domoticz te doen. Eventueel icm met een schemerschakelaar. Bouwen is geen probleem maar die code in domoticz….. een simpel script krijg ik daar nog geeneens aan de gang. Ik ben geen leek maar enkele tips zijn welkom.
Hoe zou jij dat aanpakken? En ik snap echt wel dat je er graag iets tegenover wil zien hoor. Complex genoeg en het is me echt wel €20 waard als het lukt.
Je hebt gelijk dat je daar mijn ‘eCurtains’ principe ook voor kunt gebruiken. In principe heb ik alle aanwijzingen daarvoor in mijn artikel gezet. Dit betekent dus de hardware aanschaffen, aansluiten en de Arduino programmeren met mijn code.
Je kunt dan de ‘drempel links’ waarde gebruiken voor luikje dicht en ‘drempel rechts’ voor luikje open.
Verder kun je deze vanuit Domoticz aansturen met een LUA script en/of fysieke knoppen die de API functie van ‘eCurtains’ gebruiken. Op deze manier kun je het automatiseren op bijvoorbeeld vaste tijden.
Als dat te moeilijk voor je is, kun je ook nog altijd ‘eCurtains’ via de web-interface gebruiken om vanaf binnen je luikje open of dicht te doen.
Arduino IDE geeft aan dat het succesvol is geupload. Maar toch verschijnt eCurtains niet bij de WIFI-netwerken. Waar zou dit aan kunnen liggen?
Ik heb extended logging toegevoegd aan eCurtains. Kun je eens met Serial Monitor (in Tools menu van Arduino IDE, 115200 Baud) kijken wat er gelogd wordt. Reset even ESP8266 board en kijk dan naar de output.
Ik had dit ESP8266 board gekocht, in plaats van jouw link. Maar volgens mij is het wel dezelfde: https://www.bitsandparts.nl/ESP8266-NodeMCU-WiFi-dev.-board-WeMos-32Mb-CH340G-p1918863
Uit de extende logging krijg ik:
Volgens de logging staat de ESP8266 in AP mode en biedt netwerk ‘eCurtains’ aan:
Vreemd dat deze niet getoond wordt bij je. Heb je al eens met een smartphone dicht in de buurt van de ESP8266 gekeken of deze aangeboden wordt (wellicht zwak WiFi signaal?).
Het is gelukt. Het lag toch aan mijn Esp8266 board. Ik denk dat deze niet geschikt was om wifi uit te zenden, hoewel het wel een wifi-module heette. Ik vond het al wat vreemd dat hij er iets anders uitzag. Vandaag een goede Esp8266 gekocht en het lukte meteen. De motor werkt naar behoren en de software ook. Nu nog gaan bevestigen aan de gordijnen. Ik wil 4 rolgordijnen en 4 gewone gordijnen sets gaan aansturen. Heb ik voor elk gordijn een losse Esp8266, stepper driver module, 5v power supply en breadboars nodig?
Zoals je in eerst figuur kunt zien is de oplossing voor een paar van gordijnen die opent in het midden. Je calibreert voor elke set met een aparte breadbord / motor / power-supply.
De 28BYJ-48 is wat langzaam en niet zo krachtig als de NEMA17 stappen motor. Ik zou als ik jou was eerst kijken met 1 set of het goed werkt voor je. Vooral de oplossing hoe jij gordijn met stappen motor bevestigd is belangrijk of het goed gaat werken. Dit moet soepel werken.
Dank! We gaan er mee aan de slag.
Valt er wel iets van hardware te combineren met meerdere gordijnen?
Je moet calibratie per set gordijnen doen. Er valt geen hardware te combineren met het huidige design van de software.
De software en hardware werkt.
Maar mijn stappenmotor stopt met draaien als hij ongeveer 1 rondje heeft gehad. Dan moet ik de Arduino resetten door de adapter er uit te halen en opnieuw in te doen.
Hierdoor gaat mij gordijn maar 10 cm opzij voor ik het weer moet resetten.
Enig idee waar dit aan kan liggen?
Heb je wellicht de linker en/of rechter drempel waardes te dicht bij elkaar ingesteld. Reset deze eens met de betreffende knoppen.
Dat bleek niet het probleem te zijn. Ik bewoog mij tussen de drempels.
Ook het resetten maakt geen verschil.
Kun je een screenshot van de web-interface plaatsen, want ik ben toch benieuwd naar de waardes? Met reset bedoel ik trouwens de [Reset Drempel Links] en [Reset Drempel Rechts] knoppen op de web-interface.
Ik had zelf de drempels nog op 1000 gezet, maar na een ‘upgrade’ naar de eerdere versie blijven die wel op 1000 staan. Bij de drempels op 100 gaf hij hetzelfde probleem.
Ik heb geen idee wat er dan aan de hand kan zijn. Het idee van de software is dat je met de knoppen de motor naar een positie beweegt (begin met ‘grote’ stappen en dan ‘kleine’ stappen om precies af te stellen). Vervolgens stel je zo de drempel links en drempel rechts waarden in. Dit is het eenmalige calibratie stuk van de software. Vervolgens kun je met de knoppen onderaan (of via de API) in 1 keer naar de die drempel waarden bewegen (gordijn open of dicht). Dit werkt bij mij altijd perfect.
Het lijkt er op dat het probleem verholpen is. De motor draait nu probleemloos 10 rondjes zonder dat de arduino gereset moet worden. Ik denk dat hij niet voldoende gelijkmatige stroom kreeg. Toen ik ipv via een adapter, voeding via USB gaf deed hij het wel goed. Nu ik daarna mijn adapter nog wat steviger in de plug heb gestoken, doet hij het ook weer via adapter.
Fijn Sietse. Bedankt voor de terugkoppeling.
Ik probeer de gordijnen toe te voegen aan Home Assistant. Tot nu toe lukt het alleen om de verschillende commands (bijv gordijnen volledig open) toe te voegen met links aan een knop. Alleen start hij dan iedere keer de browser op met het bericht ‘OK’ in beeld. Heb je enig idee hoe ik ze zou kunnen toevoegen zonder dat het de browser opstart?
Pimatic werkte niet goed, en wordt inmiddels niet meer ondersteund. Ik wilde een goede open-source oplossing, vandaar Home Assistant.
Voeg aan het einde van je commando het volgende toe: > /dev/null
(ik neem aan dat je curl commando gebruikt). Ik heb verder geen ervaring met Home Assistant.
Door deze toevoeging wordt de output van je commando naar NULL device omgeleid.
Ik heb het zelf overigens altijd met Domoticz gebruikt wat prima werkt.
Ik heb het met curl commando’s geprobeerd maar die werken niet zo gemakkelijk in Home Assistant als ik zou willen. daar krijg ik de foutcode: service not found.
name: Gordijn links dicht
type: button
tap_action:
action: call-service
service: shell_command.linksdicht
shell_command:
linksdicht: curl http://192.168.2.7/api?action=move_total_left&api=27031969 > /dev/null
Dit is de code die wel werkt maar een browser tab opent per knop. dev/null toevoegen veranderde hier niets aan..
name: Gordijn links (dicht)
type: button
tap_action:
action: url
url_path: http://192.168.2.7/api?action=move_total_left&api=27031969
Ik heb geen ervaring met Home Assistant en kan je hiermee dus niet helpen. Het zou mij verbazen als je in HA geen curl commando’s kunt gebruiken. Wellicht eens in een HA forum zoeken?
Dank voor je hulp.
Ik zou via shellcommand wel curl commando’s moeten kunnen gebruiken, maar ergens gaat dit toch niet. Ik heb de hele middag op HA fora gezeten, dus wellicht moet ik dat opgeven en toch naar DomoticZ overgaan
Ik heb de gordijnen werkende in domoticz! Waarvoor ook dank aan jou!
De gordijnen gaan nu fijn open en dicht via de api’s.
Wat nog niet goed werkt is via een api-link een setting wijzigen. Hij verandert de waarde wel in de interface, maar past het niet gelijk toe. Daarvoor moet ik nu nog handmatig op submit drukken op de webinterface. Ik wil hier graag wel flexibel in zijn via een api-command in domoticz. De oplossingen die ik daarvoor bedacht heb zijn:
De eerste heb ik geprobeerd met het toevoegen van {
String header = “HTTP/1.1 301 OK\r\nLocation: /\r\nCache-Control: no-cache\r\n\r\n”;
server.sendContent(header); }
Maar dat ging niet. De tweede weet ik niet hoe te programmeren
Enig idee hoe ik dit kan oplossen?
Ik verwacht dat configuratie een eenmalig actie is en over het algemeen doe je dit via de web-interface. Het kan inderdaad ook met de API interface. Deze zou dan meteen actief moeten zijn aangezien deze opgeslagen worden in de globale structure die de configuratie bevat. De opslag vind plaats met de functie ‘EEPROM.commit();’. Het is mogelijk dat web interface de verandering niet meteen laat zien. De web-interface heeft een automatisch refresh om de 5 seconden.
Het configuratie scherm heeft geen automatisch refresh want dan zouden net ingetypte waarden meteen overschreven kunnen worden met de huidige globale configuratie voordat je deze commit hebt (submit).
Je kunt automatisch refresh toevoegen door de volgende regel toe te voegen bij functie ‘handle_settings_html’
Dit lost het niet op, de settings pagina ververst inderdaad en het getal verandert op de settingspagina, maar de nieuwe setting wordt niet meteen toegepast. Daarvoor moet ik nog steeds handmatig op de submit knop op de settingspagina drukken. Het gaat mij hier om de waarden aan te passen van de versnelling van de motor.
Overigens, bij het aanpassen van de taal via de api verandert hij wel direct de taal in de interface en is submit drukken niet nodig.
Lijkt me toch raar, aangezien de globale waarde in de source-code netjes commit wordt:
Update:
Je kunt het oplossen door nog toe te voegen na de commit de volgende regels:
Ja, dit werkt!
Heb je ook zoiets voor het aanpassen van de driver? Daar heb ik zelf nog een api voor geschreven, die tegen hetzelfde probleem aanloopt.
Bedoel je de ‘Acceleration Stepper Driver’? Die is niet van mij. In principe moet je van deze library gewoon de ‘setAcceleration’ en ‘setMaxSpeed’ methods aanroepen.
Ik bedoel de optie om te wisselen tussen de stappenmotor +drivers (28BYJ-48 vs Nema). Ik heb beide aangesloten op 1 esp8266 en wil graag via een api wisselen tussen beide.
Dat zit er nu niet in en ik heb geen plannen om dat te implementeren. Je kunt dit echter zelf eenvoudig doen.
Maak een nieuwe api om te wisselen en schrijf resultaat weg in ‘g_data.stepper_motor_and_driver’ die je daarna commit (zie eerdere reacties). Vervolgens moet je nog het volgende aanroepen:
Als ik je reacties zo lees kom je daar wel uit 😉 .
Zover was ik inderdaad al. Dit is wat ik heb. Maar hij past het zoals eerder bij motor acceleration niet meteen toe. Ik vrees dat er nog iets achter de commit moet staan, zoals nu bij motor acceleration en speed. Maar wat daar dan moet staan kom ik niet achter.
Zie bovenstaande reactie
Juist dat bedoelde je met aanroepen.
Nu werkt hij helemaal zoals ik wil!
Ik ben helemaal blij, dank!!
Voor nu verwacht ik geen problemen meer.
Bedankt voor de terugkoppeling. Veel succes en plezier ermee.
Oei toch te vroeg gejuicht, ze draaien nu heel traag…
Voeg voor de zekerheid ook nog toe aan je nieuwe API functie:
Dat verandert het nog niet helaas.
Ik zie het al. Je moet ook nog toevoegen:
Nu werk het weer! Yes
Maar sinds de vorige update werkt move_motor niet meer. Wat daar nu mee gebeurt is, is voor mij een raadsel…
Geen idee. Dat zou ongerelateerd moeten zijn aan de wijzigingen die je gemaakt hebt. Misschien heb je per ongeluk ergens iets verkeerd veranderd? Check eens met de versie die ik vanavond met PM naar je gestuurd heb.
Daar doet hij het wel gewoon bij. Ik moet maar geleidelijk mijn wijzigingen daar bij in zetten en kijken wanneer de fout optreedt. Wordt vervolgd…