Edullinen sälekaihtimien kääntö kotiautomaation radiotaajuuksilla tms?

xp9

Jäsen
Miten olet seurannut kuumenemista? Alkaako laite esim. käyttäytymään eritavoin?
Oon aika laiska seurailemaan. Totesin asennellessa, että kuumenee toisin kuin toiset.
Powerissa tuskin on ongelmaa. Kahden ikkunan sählöt tulee samasta powerista ja toinen on toiminut 100%.

Tilasin noita hieman kalliimpia 270 asteen servoja 4kpl. Olisi pitänyt tilata 2+2, koska nyt ne jäi tulliin ja piti maksella 24% ALVit päälle.
 

xp9

Jäsen
Hiljaista on ollut täällä. Vaihdoin kaikkiin kaihtimiin (6kpl) nuo hieman hintavammat 270 asteen servot. Kalliiksi en niitä vielä haukkuisi.
Sen jälkeen ei ole ollut moitittavaa. Poistin myös komennoista 9000 ohjauksen, joka siis vapauttasi servot. Se aiheutti osassa servoissa ylimääräistä kääntymistä.
Nyt kaihtimiin on ajastettu siten, että ne ensin raottuvat ja vasta myöhemmin aukeavat kokonaan. Sama takaperin iltaisin.
Aiemmin vierashuoneessa resettiä vaatinut piiri korjaantui sekin servoa vaihtamalla. En ehtinyt piiriä vaihtaa, eikä näytä tarvitsevankaan.Screenshot 2019-09-03 at 19.53.11.png
 

Nautilus

Jäsen
Hyvältä kuulostaa! Servot eivät ilmeisesti surise vaikka 9000-komento on poissa? Mikä firmisversio käytössä?

Ja saisiko muutaman asennuskuvan inspiraatioksi...:)
 

xp9

Jäsen
Hyvältä kuulostaa! Servot eivät ilmeisesti surise vaikka 9000-komento on poissa? Mikä firmisversio käytössä?

Ja saisiko muutaman asennuskuvan inspiraatioksi...:)
Firmis: ESP_Easy_mega-20190216_normal_ESP8266_4096.bin

Pari asennuskuvaa liitteenä. Ne on nyt tuolla kiskon tyhmässä päässä, jossa eivät haittaa kaihtimien ylös veivausta.
Servo001.jpgServo002.jpgServo003.jpg
Asennus001.jpg
 

sh1

Aktiivinen jäsen
On se kumma ettei näitä etäohjattavia säleverhonkääntimiä löydy mistään järkihinnalla. Vai löytyykö? Tätä ketjua olen seuraillut ja aina silloin tällöin netistä googlaillut, mutta löytyy vain jotain järeitä ja/tai kalliita ratkaisuja.
Itse tekemällä saa tietty tehtyä, kuten tässäkin ketjussa on kuvattu, mutta mullakin olisi vähintään 4 ikkunaa mihin tuo etäohjaus tarttis tehdä ja niiden pitäisi olla varsin hellasärönkestäviä. Joten tarttis saada valmiina...

Jo ammoin Clas Ohlsonin juuri rantauduttua Suomeen ostin sieltä kokeeksi yhden säleverhonkääntelijän. Nyrkinkokoinen valkoinen muovilaatikko mikä kytkettiin siihen säleverhon kääntötangon päähä, siis siihen mitä normaalisti pyöritetään käsin. Laitteessa oli 4 ajastuspaikkaa ja servoasentoa ohjelmoitavissa ja AA-paristot, eikä hintaa ollut muutamaa kymppiä enempää. Tuon kun saisi 433 / Zwave etäohjauksella niin avot. Sittemmin tuo tuote katosi myyntilistoilta ja valmistaja on konkassa.
Onko näille "suomalaistyylisille" sälekaihtimille (parisenttiset kevyet vaakasäleet) mitään tarkkaa englanninvastinetta? Venetian blinds tms tuottaa kaikenlaista hakutulosta.
 

Ismo67

Vakionaama
Joku tällä kyseli edullisia sälekaihtimien moottoreita, joilla saa rullattua sälekaihtimet ylös ja alas. Tässä nyt olisi semmoiset ja vielä suoraan Tuya/Smart Life Kotiautomaatioon yhteesopivana eli mobiiliäpillä taikka keskitetysti vaikka yhdellä kytkimellä kaikki menee kiinni ja auki taikka halutulla valoisuudella, lämpötilalla jne. Tässä vielä aurinkokenno, joka lataa tuon moottorin akkua. Minulla on joka huoneessa saman valmistajan Electroniset Wifi termostaatit, jotka myös Tuya /Smart Life yhteensopivia ja ovat toimineet tähän mennessä pomminvarmasti.
 
Viimeksi muokattu:

xp9

Jäsen
Herätellään tätä taas, vaikka taitaa mennä enempi kotiautomaation puolelle.
Ostelin philips hue valoja (ku halvalla sai) ja lisäsin ne google homeen, siis softaan. Hienosti voi komennella valoja ja philips huen sai näkyviin myös domoticziin.
Tästä mietinkin, että josko tilaisi google home laitteen, mutta ennen sitä olisi kiva saada kaihtimet myös toimimaan huutelemalla ja zigbeellä.
Onko ajatuksia miten tuo onnistuisi?
 

HeTi

Aktiivinen jäsen
Herätellään tätä taas, vaikka taitaa mennä enempi kotiautomaation puolelle.
Ostelin philips hue valoja (ku halvalla sai) ja lisäsin ne google homeen, siis softaan. Hienosti voi komennella valoja ja philips huen sai näkyviin myös domoticziin.
Tästä mietinkin, että josko tilaisi google home laitteen, mutta ennen sitä olisi kiva saada kaihtimet myös toimimaan huutelemalla ja zigbeellä.
Onko ajatuksia miten tuo onnistuisi?
Jos saat kaihtimet toimimaan Domoticzilla, voi ne tehdä puheohjattaviksi Controllicz pilvipalvelulla. Maksullinen (20 puntaa vuosi) mutta periaattessa kaikki domotizin laitteet toimii sitten puheohjauksella. (Alexa tai Google Home) https://www.controlicz.com/#intro
 

xp9

Jäsen
https://www.domoticz.com/forum/viewtopic.php?t=27588
Tuommoinen vaihtoehto controlicz:lle. Kokeilin eilen pikaisesti, ja tuntuisi toimivan kuten mainostetaan. Täytyy lisäillä enemmän laitteita kun kerkiää.
google home löytää nuo laitteet heti kun aktivoi yhden noista node-red palikoista tokenilla.
Kiitos, tutkailen. Mikä tuo nora red mahtaa olla? Mitäköhän kautta kaikki ohjaukset menevät eli minne luovutan google tunnarit?
 

lassiko

Jäsen
https://discourse.nodered.org/t/node-red-google-home-integration/4829
tuolla lisää aiheesta. Kehittäjä tuolla kirjoittaa että saataa muuttua jossain kohtaa maksulliseksi, jos käyttäjiä ilmaantuu paljon. Näitä vastaavia löytyy muitakin, muutamaa kokeillut. Tällä hetkellä ääniohjailen node-red, ifttt, webhookrelay virityksen kautta domon laitteita. Sekin toimii ihan hyvin, varsinkin kun ei ole tarvetta kaikkia kymmeniä laitteita ohjailla äänellä, vain muutamia tiettyjä juttuja.
 

xp9

Jäsen
Todettakoon vielä että Domoticziin voi näköjään tehdä oman ilmaisen Alexa (Amazon echo) skill ominaisuuden.
https://www.domoticz.com/forum/viewtopic.php?t=25946
Ehkä kotiautomaation puheohjauksille voisi tehdä oman aloituksen.
Amazon echoa mietin myös. Jostakin luin että google hanskaa paremmin ei natiivi englannin.
Nyt pitäisi jostakin löytää vielä aikaa perehtymiseen. Oma keskustelu voisi tosiaan olla paikallaan, jos muillakin on kiinnostusta.
 

lassiko

Jäsen
Alexa ei ymmärrä ainakaan suomea. Käsittääkseni google homekaan ei vielä suomea juttele. Google assistant kylläkin.
Siri on poikkeus.
Assistant kyllä tosiaan ymmärtää suomea, eli jos esim puhelimen kieleksi asettaa suomen, pystyy hakuja tekemään suomeksi. Tuo ei kuitenkaan toimi kuten assistant toimii englanniksi. Ei pysty esim komentamaan suomeksi että "valot päälle" (esim. IFTTT testin kun tein, missä tuo "valot päälle" on asetettuna tunnistettavana komentona assistantista). Komento vain hakee googlesta osumia valot päälle haulla.

Sen sijaan kun vaihtaa kieleksi englannin, komento "lights on" kytkee valot päälle kotona.
Englannin kielisenä myös aukeaa eri assistant näkymä puhelimeen kuin suomenkielisenä.

Ymmärtääkseni täysin toimiva assistant suomeksi esiteltiin jossain googlen tilaisuudessa viime vuonna, sen jälkeen ei ole asiasta paljon kuulunut lisää, joten odotellaan josko se sieltä joskus tulisi.
 

xp9

Jäsen
Problem solved. Sain tuolla gbridgellä kaihtimet lisättyä google homeen.
Free planillä saa neljä laitetta lisättyä ja se piisaa toistaiseksi. 1€/kk saisi rajattoman määrän laitteita.

Hienosti toimii ja myös nopeasti. Voi komentaa huone kerrallaan tai sitten komentaa kaikia käyttäen "all the curtains" komentoa.

GoogleHomeShot.jpg
 
Viimeksi muokattu:

Ismo67

Vakionaama
No, niin tänä viikonloppuna on "uuteen" kämppään laitettu seitsämään ikkunaan sälekaihtimien ohjaus. Vielä pariin ikkunaan tarvii laittaa, mutta kardaanit ja servot ja Wemos D1 Pro:t loppu kesken. Meinaan laittaa yhteen wemosiin myös DTH22 lämpötila ja kosteusmittauksen, josko myös sillä ikkunan välin lämpötilan ja huonelämpötilamittauksella voisi vaikka ohjata haluttaessa kaihtimet kiinni. Siististi pelaa nuo 270 asteiset, servot, joista ei ollut minulla aikaisempaa kokemusta. Johtokouru, joka näkyy kuvissa on Puuilosta hankittua pienintä johtokourua, joka on Famatelin valmistamaa. Virtapiuhana on valkoista Biltemasta hankittua valkoista 2x0.75mm2 kalustejohtoa, johon on päähän juotettu USB A liitin. Wemosit on kiinnitetty kouruun suorana kahdella päällekkäin olevalla kirkkaalla, läpinäkyvällä ja joustavalla Bilteman asennusteipin pätkällä (Punainen väri on poistettava suojamuovi teippirullassa).
Kaihtimien aamuraotusohjaus tarvii vielä tehdä erillisillä Domoticz virtuaalilaitteilla ja puheohjaus varmaan Controliczilla, jolla ohjaus oli aikaisemmassakin kämpässä. Kaukosäädintä en tiedä millä se tehdään kun ei ole Rflinkkiä tässä kämpässä ja tarkoitus olisi että ei tulekkaan eikä jostain syystä Xiaomi hubi näy Domoticziin(Hub näkyy logissa onnistuneesti, mutta ei tule Zigbee laitteet näkyviin Devices lehdykälle).

EDIT: Tilasin Zigate: ja RFlinkin katsotaan saanko pelaamaan cubee:n, jotta saa Domoticziin "kakeohjauksen" kaihtimille myöskin.
EDIT2: Cube ohjaus lähti pelaamaan "Xiaomi Gateway modilla" ja nyt kaihtimet tarvittaessa sulkeutuu ja avautuu olohuoneen pöydän Xiaomi Cube -ohjaimella ja Xiaomi Agara patteri seinäkytkimellä raottuu, sulkeutuu ja avautuu.
 

Liitteet

Viimeksi muokattu:

Pretor

Jäsen
Onko vieläkään kukaan saanut tätä toimimaan HomeAssistantin kautta?
Innostuin nimittäin itsekin tilaamaan osia tähän projektiin.
Mulla on kyllä Domoticzin perässä 1w ja modbus-sähkömittari loggailemassa, mutta kotiautomaatiota (valaistusta, lämpömittareita) on taas erikseen toisella raspilla HA:n alla.
 

Prässi

Jäsen
Onko vieläkään kukaan saanut tätä toimimaan HomeAssistantin kautta?
Innostuin nimittäin itsekin tilaamaan osia tähän projektiin.
Mulla on kyllä Domoticzin perässä 1w ja modbus-sähkömittari loggailemassa, mutta kotiautomaatiota (valaistusta, lämpömittareita) on taas erikseen toisella raspilla HA:n alla.
Tässä vielä video:
wemos ohjaa molempia ikkunoita.

nappulana xiaomin langaton seinäkatkaisija
 

Ismo67

Vakionaama
Problem solved. Sain tuolla gbridgellä kaihtimet lisättyä google homeen.
Free planillä saa neljä laitetta lisättyä ja se piisaa toistaiseksi. 1€/kk saisi rajattoman määrän laitteita.

Hienosti toimii ja myös nopeasti. Voi komentaa huone kerrallaan tai sitten komentaa kaikia käyttäen "all the curtains" komentoa.

katso liitettä 61631
Onkos löytynyt vastaavia saitteja Google Home puheohjausta varten, joka ei vaadi omaa domain osoitetta?
En ole laittanut domoticzia oman domainin taakse, joten Controlicz ohjaus ei toimi ilman sitä.
Tuo Gbridge palvelu on loppunut...
 

xp9

Jäsen
Onkos löytynyt vastaavia saitteja Google Home puheohjausta varten, joka ei vaadi omaa domain osoitetta?
En ole laittanut domoticzia oman domainin taakse, joten Controlicz ohjaus ei toimi ilman sitä.
Tuo Gbridge palvelu on loppunut...
Jahas... kiitos varoituksesta. 15.3. vissiin loppuu. Controlliczia varmaan koitan, jos en ilmaista löydä.
Täytyy alkaa tutkimaan vaihtoehtoja sitten kun vaan ehtii.
Domainin saat kyllä helposti jollakin Dynamic DNS virityksellä. Mulla on ollut pitkään (yli 10v) käytössä dyndns.dk.
 

kuumitta

Jäsen
jonkun takaisinpäin tasaisena pysyvän nimen saa tosiaan helposti. Itse käytän duckdns.org palvelua. En vain muista mille koneelle kyseisen palvelun päivitysskripti on piiloutunut. Toimii siis ihan hyvin.

Ja sitten ihan toinen juttu. Jos tarkoitus on tulla sisäänpäin niin jotkut lähinnä puhelinliittymät ovat niin monen NATin takana, että et pääse kolkuttaan omaa porttiasi.
 

pjr

Aktiivinen jäsen
Itsellä dy.fi käytössä ja openwrt-firmiksellä varustettu reititin hoitaa osoitteen päivittämisen.
 
Hienoa kun löytyi aiheeseen valveutunut ketju.
Aikomuksena toteuttaa sälekaihtimien motorisointi. Erona Teidän muiden toteutuksiin on se, että minulla on Smartthings hubina pohjalla.

Tilasin servoiksi: DS3218MG. Ovat 270asteisia, joten pitäisi kyetä kääntämään näitä skandikaihtimia toisesta ääripäästä toiseen ääripäähän.
Arduinoiksi valitsin: Lolin D1 mini pro v2.0.0 (ESP8266).
Tilasin lisäksi tarvikkeet servon kiinnittämiseksi suoraan sälekaihtimen keskiakseliin.

Onko täällä ketään Smartthings harrastajia ja löytyykö jopa onnistuneita toteutuksia tuolla kombinaatiolla?
Smartthingsiin valveutunut sälekaihdinketju löytyy täältä: https://community.smartthings.com/t/release-esp8266-arduino-servo-controlled-smart-blinds/75998

Ovat tuolla käyttäneet erillistä 3d-tulostettavaa ratasboksia, joka muuttaa välityksiä ja servon kääntökapasiteettia. Nyt kun servo kiinnitetään suoraan akseliin, ei Smartthingsissa käytettävä kikkare sellaisenaan toimi koska välissä ei ole tuota välityksiä muuttavaa boksia ja siihen liittyviä arduinokoodauksia.

Yritän ymmärtää, että kuinka isoa palaa olen tässä haukkaamassa. Arduinosta ei ole aiempia kokemuksia, joten tämä on yleensäkin hyppy tuntemattomaan.
 

Pretor

Jäsen
Moro,

mulla toiminnassa homeassistantin kanssa. Flässäsin wemosiin esphomen, joka on yhteensopiva suoraan home assistantin kanssa.

löytyy auki ja kiinni nappulat sekä myös slideri, jolla saa mihin asteeseen haluaa.
Onko jotain pikaohjetta, ennen kuin alkaa itse hakkaamaan päätä seinään HomeAssistantin kanssa?
Wemosit on jo flashatty, eli lähinnä et kuinka helposti saa automaatiot kohdilleen.
Vihdoinkin on servot saapunut maahan, joten pääsee kohta rakentelemaan.
 

xp9

Jäsen
Viikko aikaa korvata gBridge. Toki ne kaihtimet kääntyy senkin jälkeen, mutta ei puheella.
Olikos tästä kokemuksia? Taidan koittaa viritellä jossakin välissä.

Helpoin vaihtoehto lienee controlicz, mutta 20£/vuosi on toki ihan liikaa :)

gBridgestä löytyy myös paketit, jolla sitä voisi ajaa omalla serverillä, mutta ei oikein löydy ohjeita siihen.
 

Pretor

Jäsen
Joo kyllä tää on pään hakkaamista seinään HomeAssistantin kanssa :help:
En vaan millään saa Ha+EspHomen kanssa mitään elämää servoon.

Sen sijaan Domoticzin kautta ja EspEasy Mega flashattyna wemosiin ei mitään ongelmaa noilla @Ismo67 ohjeilla... joten samalla metodilla sitten HAn kimppuun.
Eli jätetään wemosiin EspEasy Mega sisään ja unohdetaan EspHome. Luodaan HomeAssistantiin virtuaalikytkin, jota ohjataan url-osoitteella.
Lisätään siis seuraava pätkä configuration.yaml -tiedostoon:
Koodi:
switch:
  platform: command_line
  switches:
    vswitch1:
      command_on: curl "http://192.168.xx.xx/control?cmd=Servo,1,5,160"
      command_off: curl "http://192.168.xx.xx/control?cmd=Servo,1,5,0"
      friendly_name: Olohuone sälekaihtimet
oh-kohde.jpg

Tähän asti kaikki ok. Ainut "ongelma", ettei virtuaalikytkin tottele toggle-komentoa. Mulla on aqaran buttoneita ja olisi saanut samalla buttonilla ohjattua kahden eri ikkunan (tai huoneen) sälekaihtimia käyttämällä single- ja tuplapainalluksia.
Nyt pitää ohjata avaamista yhdellä painalluksella (switch-on) ja sulkemista kahdella painalluksella (switch-off).
oh-automation.jpg


Kahden ikkunan servojen ohjaaminen samalla wemosilla:
Koodi:
switch:
  platform: command_line
  switches:
    vswitch1:
      command_on: curl "http://192.168.xx.xx/control?cmd=Servo,1,5,160"
      command_off: curl "http://192.168.xx.xx/control?cmd=Servo,1,5,0"
      friendly_name: Olohuone sälekaihtimet1
    vswitch2:
      command_on: curl "http://192.168.xx.xx/control?cmd=Servo,2,4,160"
      command_off: curl "http://192.168.xx.xx/control?cmd=Servo,2,4,0"
      friendly_name: Olohuone sälekaihtimet2
Servo1 on siis juotettu Wemosin pinniin D1 (eli GPIO5) ja Servo2 on juotettu Wemosin pinniin D2 (eli GPIO4).
Kokeilin ensin laittaa molemmat servot saman virtuaalikytkimen alle omina command_on/command_off curleineen, mutta silloin Servo1 kääntyy ensin ja vasta sen jälkeen Servo2. Omina virtuaalikytkiminä ne kääntyvät samaan aikaan.

Mielellään näkisin @Prässi yaml-konfiguraatiot, jotta saisi EspHomen kanssa toimimaan sliderin kanssa.
 
Viimeksi muokattu:

xp9

Jäsen
Sain toimimaan noilla ohjeilla:

Nyt kaikki domoticz laitteen ovat komennettavissa homen kautta. gBridgen kautta open/close ei toiminut,
vaan piti sanoa turn on/off. Nyt toimii esim "hi google, open guest room blinds"... tosin se sulkee kaihtimet, joten pientä viilausta.
Tuntuu, että olisi nopeampi kuin gBridgen kautta, mutta en ole tuosta varma.

Meni hieman ylimääräistä aikaa, kun piti himaserveriin laittaa tarjolle https ja sitä myöden siis sertifikaatti.
Sen sain tuolta: https://letsencrypt.org/

Ehkä asteen nörtteilyksi meni, joten ihan kaikille ei ehkä toimiva ratkaisu, mutta ei mitään ylivoimaista virittelyä.
Bonuksena se, että ei ole nyt 3rd party palvelinta välissä, joka voisi lopettaa toimintansa. Google toki :)
 

Pretor

Jäsen
Kyllähän nää työpöydällä toimii, mut sit ku aletaan asentelemaan, ni tuleekin mutkia matkaan :D
Ei siinä, homma paketissa kahden ikkunan osalta, eli yksi wemos ohjaa kahta ikkunaa.
IMG_20200308_103311.jpg
IMG_20200308_103901.jpg
 

Pretor

Jäsen
Tuli laitettua testiksi keittiöön kahteen ikkunaan tämmöisiä miniservoja:
Nuo mahtuu kivasti suoraan kiskon sisään, mutta ovat muovisia, joten saa nähdä kauan kestää kaihtimien pyörittelyä.
IMG_20200311_153451.jpg
Peltisaksilla kiskoon viilto ja taittaa servon asennuksen ajaksi kiskon pellin sivuun. Servo paikalleen ja taittaa kiskon pellin takaisin, niin jää Servo sopivasti kiskon sisään.
Huomattavasti helpompi homma, ku noiden kunnollisten isojen servojen kanssa.
 
Viimeksi muokattu:

xp9

Jäsen
Huomattavasti helpompi homma, ku noiden kunnollisten isojen servojen kanssa.
Lienee tosiaan parempi vaihtoehto kuin kalheta lovi ikkunankarmiin. Mulla yhteen tuuletusikkunaan ei mahtunut servo kiskon sisään,
joten asensin sen vaijerin päähän karmin sisälle. Hyvin toimii sieltäkin. Paistaa tosin vähän enempi ulos, mutta tein siitä valkoisen niin eipä sitä sieltä ole kukaan vielä huomannut.

Domotics Google Assistant toimii kun buick. Se ei tajunnut blinds inverted, joten piti pistää normiksi että open/close toimii oikein päin.
 
No nyt on laitteet hankittu. Kyseessä lolin wemos d1 mini pro. Ekaa kertaa elämässäni ajoin sketchin sisään ja sehän meni ihan ok, mutta wlaniin en laitetta jostain syystä saa.
Error jonka saan wlanin debuggauksesta, on tämän näköinen:

Connecting to Kotiwlan
⸮J1㖈⸮D⸮⸮⸮Blind Startup Sequence

Connecting to Kotiwlan
⸮⸮FH⸮.⸮⸮⸮⸮⸮Blind Startup Sequence

Connecting to Kotiwlan
⸮L1R⸮⸮:⸮⸮⸮⸮⸮Blind Startup Sequence

Connecting to Kotiwlan
/⸮_L⸮⸮⸮Dt)?Blind Startup Sequence

Connecting to Kotiwlan
H⸮⸮⸮⸮L)B⸮

...ja jatkuu jatkuu jatkuu. Ehkä siis wlaniin yrittään yhdistää, mutta ei vaan onnistu.

Ohessa sketchiä jos joku haluaa mielenkiinnosta vilkaista. Olisko mitään vinkkiä?

/*
* Contains code from:
* http://randomnerdtutorials.com/esp8266-remote-controlled-sockets/
* http://www.bruhautomation.com/p/cheapest-wifi-automated-blinds.html
* https://www.arduino.cc/en/Tutorial/Sweep
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
* in compliance with the License. You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License
* for the specific language governing permissions and limitations under the License.
*/
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <Servo.h>
#define WLAN_SSID "YOUR WIFI SSID" //change to your Wifi SSID
#define WLAN_PASS "YOUR WIFI PASSWORD" //change to your Wifi Password
MDNSResponder mdns;
ESP8266WebServer server(80);
int servoPin = 0; //Servo on GPIO0 or NODEMCU pin D3
const int buttonPin = 12; //manual button on GPIO12 or NODEMCU pin D6
int buttonState = 0;
int direction = 0;
int setting = 0; //Startup with blinds closed
int position = 90;
Servo servoA;
String webPage = "";
void setup(void) {
WiFi.mode(WIFI_STA);
webPage += "<h1>ESP8266 Web Server</h1><p>Blinds<br>";
webPage += "<a href=\"0\"><button>0</button></a><br>";
webPage += "<a href=\"10\"><button>10</button></a><br>";
webPage += "<a href=\"20\"><button>20</button></a><br>";
webPage += "<a href=\"30\"><button>30</button></a><br>";
webPage += "<a href=\"40\"><button>40</button></a><br>";
webPage += "<a href=\"50\"><button>50</button></a><br>";
webPage += "<a href=\"60\"><button>60</button></a><br>";
webPage += "<a href=\"70\"><button>70</button></a><br>";
webPage += "<a href=\"80\"><button>80</button></a><br>";
webPage += "<a href=\"90\"><button>90</button></a><br>";
webPage += "<a href=\"100\"><button>100</button></a><br>";
delay(1000);
pinMode(buttonPin, INPUT_PULLUP);
Serial.begin(9600);
delay(500);
Serial.println("Blind Startup Sequence");
delay(500);
Serial.println();
Serial.print("Connecting to ");
Serial.println(WLAN_SSID);
WiFi.begin(WLAN_SSID, WLAN_PASS);
// Set a static IP (optional)
//IPAddress ip(10,0,1,50);
//IPAddress gateway(10,0,1,1);
//IPAddress subnet(255, 255, 255, 0);
//WiFi.config(ip, gateway, subnet);
// End of set a static IP (optional)
delay(500);
int i = 0;
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
ESP.wdtFeed();
if (i > 40) // Try 40 times to connect to Wifi
Serial.print("Restarting Wifi"); ESP.reset(); // Reset Wifi stack if more than 40 trys
i++;
WiFi.begin(WLAN_SSID, WLAN_PASS);
// Set a static IP retry (optional)
//IPAddress ip(10,0,1,50);
//IPAddress gateway(10,0,1,1);
//IPAddress subnet(255, 255, 255, 0);
//WiFi.config(ip, gateway, subnet);
// End of set a static IP retry (optional)
}
Serial.println();
Serial.println("WiFi connected");
Serial.println("IP address: "); Serial.println(WiFi.localIP());
if (mdns.begin("esp8266", WiFi.localIP())) {
Serial.println("MDNS responder started");
}
server.on("/", []() { server.send(200, "text/html", webPage); });
server.on("/100", []() { server.send(200, "text/html", webPage); setting = 180; });
server.on("/99", []() { server.send(200, "text/html", webPage); setting = 180; });
server.on("/98", []() { server.send(200, "text/html", webPage); setting = 180; });
server.on("/97", []() { server.send(200, "text/html", webPage); setting = 171; });
server.on("/96", []() { server.send(200, "text/html", webPage); setting = 171; });
server.on("/95", []() { server.send(200, "text/html", webPage); setting = 171; });
server.on("/94", []() { server.send(200, "text/html", webPage); setting = 171; });
server.on("/93", []() { server.send(200, "text/html", webPage); setting = 171; });
server.on("/92", []() { server.send(200, "text/html", webPage); setting = 162; });
server.on("/91", []() { server.send(200, "text/html", webPage); setting = 162; });
server.on("/90", []() { server.send(200, "text/html", webPage); setting = 162; });
server.on("/89", []() { server.send(200, "text/html", webPage); setting = 162; });
server.on("/88", []() { server.send(200, "text/html", webPage); setting = 162; });
server.on("/87", []() { server.send(200, "text/html", webPage); setting = 153; });
server.on("/86", []() { server.send(200, "text/html", webPage); setting = 153; });
server.on("/85", []() { server.send(200, "text/html", webPage); setting = 153; });
server.on("/84", []() { server.send(200, "text/html", webPage); setting = 153; });
server.on("/83", []() { server.send(200, "text/html", webPage); setting = 153; });
server.on("/82", []() { server.send(200, "text/html", webPage); setting = 144; });
server.on("/81", []() { server.send(200, "text/html", webPage); setting = 144; });
server.on("/80", []() { server.send(200, "text/html", webPage); setting = 144; });
server.on("/79", []() { server.send(200, "text/html", webPage); setting = 144; });
server.on("/78", []() { server.send(200, "text/html", webPage); setting = 144; });
server.on("/77", []() { server.send(200, "text/html", webPage); setting = 135; });
server.on("/76", []() { server.send(200, "text/html", webPage); setting = 135; });
server.on("/75", []() { server.send(200, "text/html", webPage); setting = 135; });
server.on("/74", []() { server.send(200, "text/html", webPage); setting = 135; });
server.on("/73", []() { server.send(200, "text/html", webPage); setting = 135; });
server.on("/72", []() { server.send(200, "text/html", webPage); setting = 126; });
server.on("/71", []() { server.send(200, "text/html", webPage); setting = 126; });
server.on("/70", []() { server.send(200, "text/html", webPage); setting = 126; });
server.on("/69", []() { server.send(200, "text/html", webPage); setting = 126; });
server.on("/68", []() { server.send(200, "text/html", webPage); setting = 126; });
server.on("/67", []() { server.send(200, "text/html", webPage); setting = 117; });
server.on("/66", []() { server.send(200, "text/html", webPage); setting = 117; });
server.on("/65", []() { server.send(200, "text/html", webPage); setting = 117; });
server.on("/64", []() { server.send(200, "text/html", webPage); setting = 117; });
server.on("/63", []() { server.send(200, "text/html", webPage); setting = 117; });
server.on("/62", []() { server.send(200, "text/html", webPage); setting = 108; });
server.on("/61", []() { server.send(200, "text/html", webPage); setting = 108; });
server.on("/60", []() { server.send(200, "text/html", webPage); setting = 108; });
server.on("/59", []() { server.send(200, "text/html", webPage); setting = 108; });
server.on("/58", []() { server.send(200, "text/html", webPage); setting = 108; });
server.on("/57", []() { server.send(200, "text/html", webPage); setting = 99; });
server.on("/56", []() { server.send(200, "text/html", webPage); setting = 99; });
server.on("/55", []() { server.send(200, "text/html", webPage); setting = 99; });
server.on("/54", []() { server.send(200, "text/html", webPage); setting = 99; });
server.on("/53", []() { server.send(200, "text/html", webPage); setting = 99; });
server.on("/52", []() { server.send(200, "text/html", webPage); setting = 90; });
server.on("/51", []() { server.send(200, "text/html", webPage); setting = 90; });
server.on("/50", []() { server.send(200, "text/html", webPage); setting = 90; });
server.on("/49", []() { server.send(200, "text/html", webPage); setting = 90; });
server.on("/48", []() { server.send(200, "text/html", webPage); setting = 90; });
server.on("/47", []() { server.send(200, "text/html", webPage); setting = 81; });
server.on("/46", []() { server.send(200, "text/html", webPage); setting = 81; });
server.on("/45", []() { server.send(200, "text/html", webPage); setting = 81; });
server.on("/44", []() { server.send(200, "text/html", webPage); setting = 81; });
server.on("/43", []() { server.send(200, "text/html", webPage); setting = 81; });
server.on("/42", []() { server.send(200, "text/html", webPage); setting = 72; });
server.on("/41", []() { server.send(200, "text/html", webPage); setting = 72; });
server.on("/40", []() { server.send(200, "text/html", webPage); setting = 72; });
server.on("/39", []() { server.send(200, "text/html", webPage); setting = 72; });
server.on("/38", []() { server.send(200, "text/html", webPage); setting = 72; });
server.on("/37", []() { server.send(200, "text/html", webPage); setting = 63; });
server.on("/36", []() { server.send(200, "text/html", webPage); setting = 63; });
server.on("/35", []() { server.send(200, "text/html", webPage); setting = 63; });
server.on("/34", []() { server.send(200, "text/html", webPage); setting = 63; });
server.on("/33", []() { server.send(200, "text/html", webPage); setting = 63; });
server.on("/32", []() { server.send(200, "text/html", webPage); setting = 54; });
server.on("/31", []() { server.send(200, "text/html", webPage); setting = 54; });
server.on("/30", []() { server.send(200, "text/html", webPage); setting = 54; });
server.on("/29", []() { server.send(200, "text/html", webPage); setting = 54; });
server.on("/28", []() { server.send(200, "text/html", webPage); setting = 54; });
server.on("/27", []() { server.send(200, "text/html", webPage); setting = 45; });
server.on("/26", []() { server.send(200, "text/html", webPage); setting = 45; });
server.on("/25", []() { server.send(200, "text/html", webPage); setting = 45; });
server.on("/24", []() { server.send(200, "text/html", webPage); setting = 45; });
server.on("/23", []() { server.send(200, "text/html", webPage); setting = 45; });
server.on("/22", []() { server.send(200, "text/html", webPage); setting = 36; });
server.on("/21", []() { server.send(200, "text/html", webPage); setting = 36; });
server.on("/20", []() { server.send(200, "text/html", webPage); setting = 36; });
server.on("/19", []() { server.send(200, "text/html", webPage); setting = 36; });
server.on("/18", []() { server.send(200, "text/html", webPage); setting = 36; });
server.on("/17", []() { server.send(200, "text/html", webPage); setting = 27; });
server.on("/16", []() { server.send(200, "text/html", webPage); setting = 27; });
server.on("/15", []() { server.send(200, "text/html", webPage); setting = 27; });
server.on("/14", []() { server.send(200, "text/html", webPage); setting = 27; });
server.on("/13", []() { server.send(200, "text/html", webPage); setting = 27; });
server.on("/12", []() { server.send(200, "text/html", webPage); setting = 18; });
server.on("/11", []() { server.send(200, "text/html", webPage); setting = 18; });
server.on("/10", []() { server.send(200, "text/html", webPage); setting = 18; });
server.on("/9", []() { server.send(200, "text/html", webPage); setting = 18; });
server.on("/8", []() { server.send(200, "text/html", webPage); setting = 18; });
server.on("/7", []() { server.send(200, "text/html", webPage); setting = 9; });
server.on("/6", []() { server.send(200, "text/html", webPage); setting = 9; });
server.on("/5", []() { server.send(200, "text/html", webPage); setting = 9; });
server.on("/4", []() { server.send(200, "text/html", webPage); setting = 9; });
server.on("/3", []() { server.send(200, "text/html", webPage); setting = 9; });
server.on("/2", []() { server.send(200, "text/html", webPage); setting = 0; });
server.on("/1", []() { server.send(200, "text/html", webPage); setting = 0; });
server.on("/0", []() { server.send(200, "text/html", webPage); setting = 0; });
server.begin();
Serial.println("HTTP server started");
}
void loop() {
buttonState = digitalRead(buttonPin);
if(buttonState == LOW && setting <= 180 && direction == 0){
setting++;
delay(0);
if(setting == 180){
direction = 1;
}
}
if(buttonState == LOW && setting >= 0 && direction == 1){
setting--;
delay(0);
if(setting == 0){
direction = 0;
}
}
if(position < setting){
servoA.attach(servoPin);
servoA.write(position++);
delay(5);
Serial.print("Setting: ");
Serial.println(setting);
Serial.print("Position: ");
Serial.println(position);
}
if(position > setting){
servoA.attach(servoPin);
servoA.write(position--);
delay(5);
Serial.print("Setting: ");
Serial.println(setting);
Serial.print("Position: ");
Serial.println(position);
}
if(position == setting){
servoA.detach();
}
server.handleClient();
}
 

kuumitta

Jäsen
Jos tuo tulostus on todella noin, kuten tuo teksti näkyy niin tekninen termi ohjelman suoritukselle on "lähti kuuta kiertävälle radalle."

Itse peruuttaisin hieman. Lähtisin siitä Hello worldista, mistä tuo on rakennettu ja testaisin sen toimivan ja yhdistyvän.
En tiedä ajaako tuo automaattisesti DHCP:n kun linkkikerros on valmis, mutta kaiketi koska staattiset kamat ovat kommentoitu valinnaisiksi.

Kun yhteys toimii lisäisin tuon servon ohjauksen siihen. Jos se saa laitteen sekoamaan, vika on todennäköisesti riittämätön käyttöjännite tai huono maa.

Jos ohjelma toimii edelleen, lisäisin sitten hiljaksilleen webbiserverille tavaraa. Jostain tuolta sen ongelman pitäisi löytyä. Joku muu varmaan enemmän Aduino C++ osaava varmaan kertoo heti.
 
Juu hassulta kieltämättä näyttää. Ongelma on tosiaan tuolla koodin syövereissä, koska tällä rimpsulla laite yhdistyy wlaniin:

#include <ESP8266WiFi.h>

void setup()
{
Serial.begin(115200);
Serial.println();

WiFi.begin("network-name", "pass-to-network");

Serial.print("Connecting");
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println();

Serial.print("Connected, IP address: ");
Serial.println(WiFi.localIP());
}

void loop() {}

Eli nyt pitäisi varmaan seuraavaksi ymmärtää mitä vikaa tuossa sälekaihdinkoodissa on, ja voiko tästä toimivasti korvata jotakin.
 
Omat kuviot etenevät. Sain laitteen verkkoon kiinni ja servokin kääntyy. Osaisko joku viisas kertoa, että miten tuollainen 270asteen servo, tai servo yleensäkin käyttäytyy kun sille lähetetään käskyjä pyörittää. Jos servo on äärilaidassa ja laitan applikaatiosta servon kääntymään vielä 40astetta, niin polttaako se servon vai mitä tapahtuu?
Omassa sketchissa haasteena on seuraavaksi se, että servon komennot on tehty erilliselle rataslaatikolle jolloin välityssuhteet ovat ihan erilaiset suoraan 270asteen servolle kerrottuna kuin rataslaatikolle.
 

xp9

Jäsen
Osaisko joku viisas kertoa, että miten tuollainen 270asteen servo, tai servo yleensäkin käyttäytyy kun sille lähetetään käskyjä pyörittää. Jos servo on äärilaidassa ja laitan applikaatiosta servon kääntymään vielä 40astetta, niin polttaako se servon vai mitä tapahtuu?
Joku viisas voi kertoa myös, mutta käsittääkseni et pysty servoa polttamaan ajamalla sitä äärilaitaa vasten. Servolle kerrotaan toivottu asteluku, se tapahtuu pulssin pituudella. Servon sisäinen piiri ohjaa moottoria ja potentiometri sitten kertoo että koska ollaan perillä.
Tuossa jotain tietoa https://www.jameco.com/jameco/workshop/howitworks/how-servo-motors-work.html
Tilasin innoissani 360 asteisia servoja joskus alussa vain todetakseni että ne pyörii niin kauan kunnes pyytää erikseen lopettamaan pyörimisen. Tämä siksi että niissä ei ole potikkaa ollenkaan.

Jos esim se kaihdin on äärilaidassa ennen servoa niin silloin voi servo jäädä huristeleen ja voinee palaakin.
 
Ylös Bottom