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

cogliostrio

Medlemmer
  • Innlegg

    113
  • Ble med

  • Dager vunnet

    7

Innlegg skrevet av cogliostrio

  1. Tror jeg skjønner, du ønsker å ha en vridimmer der du nå har strøm fra før, men styre en lampe som er koblet i feks stikk en annen plass i rommet? Dette kan man løse med både z-wave og zigbee. Du ha da ha en bryter/dimmer med z-wave/zigbee på veggen. Og så må du har en innstikksmodul til lampen (forutsatt at du har en lampe med stikk du ønsker å styre). Feks denne modulen https://www.elektroimportoren.no/namron-z-wave-veggplugg/4512717/Product.html?Path=2000000&Event=pathlist

    Da assosierer du bryter/dimmer med innstikksmodul, slik at disse får en trådløs sammenkobling og virker som en enhet.

     

    Det at z-wave generelt ikke fungerer uten hub stemmer ikke. Man kan assosiere enheter direkte mot hverandre, og dette fungerer uavhengig av hub siden denne informasjon lagres i z-wave nettwerket. Det at namron ikke virker uten hub vil isåfall være en grunn til å styre unna den, ikke z-wave generelt. Og så må jeg jo si at det kan være varierende med kunnskap angående smarthus produkter, selv der slikt selges.

     

    Ville jo nesten tro at det er flere som her inne som har denne typen vridimmer. Kunne absolutt vært interessant med tilbakemelding fra noen som faktisk har den i bruk.

    • Like 1
  2. Dr.S skrev (2 timer siden):

    Problemet her er at alt ikke er kablet, og om jeg skjønner det rett så vil da feks z-wave fungere dårlig.

    Hva er det som ikke er kablet? Ellers så vil jo alle z-wave brytere virke uavhengig av hub. Det er jo som nevnt over kun automasjon styrt av hub som vil slutte å virke mot de respektive enhetene.

     

    Når det gjelder røykvarsler, så er dette en såpass kritisk funksjon at jeg ville jeg i utgangspunktet sett etter et uavhengig system. Om det så er mulig å i tillegg integrere dette i et system, ville jeg heller sett på det som en bonus.

  3. Det ble straks bedre :) 

    Får logga på AP, men kommer litt feilmeldinger. 

    Spoiler

    Web server is ready for config at http://192.168.4.1/
    [E][WebServer.cpp:633] _handleRequest(): request handler not found
    [E][Parsing.cpp:283] _parseArguments(): arg missing value: 0
    [E][WebServer.cpp:633] _handleRequest(): request handler not found
    [E][Parsing.cpp:283] _parseArguments(): arg missing value: 0
    [E][WebServer.cpp:633] _handleRequest(): request handler not found
    [E][Parsing.cpp:283] _parseArguments(): arg missing value: 0
    [E][WebServer.cpp:633] _handleRequest(): request handler not found
    [E][Parsing.cpp:283] _parseArguments(): arg missing value: 0
    [E][WebServer.cpp:633] _handleRequest(): request handler not found
    [E][Parsing.cpp:283] _parseArguments(): arg missing value: 0
    [E][WebServer.cpp:633] _handleRequest(): request handler not found
    [E][Parsing.cpp:283] _parseArguments(): arg missing value: 0
    [E][WebServer.cpp:633] _handleRequest(): request handler not found
    [DEBUG] Serving /index.html over http...

     

     

    Antar det er noe kodegjennbruk her. Under hostname får jeg ikke valgt annet navn enn med "ams-" foran. Kunne dette vært løsnet litt på, eller hatt mulighet til et mer relevant navn?

    image.png.c468baa414236270e524ebac34aec5ac.png

     

     

    Fikk ikke kobla opp mot broker (mosquitto) ved bruk av brukernavn/passord. Vet du om det er noen restriksjoner på bruk av spesialtegn e.l. i passord?

    Satt opp en test broker uten brukernavn/passord, da fikk jeg koblet til uten problemer.

     

    image.png.0ded87bccb523fe54cc6ec92ec9ddcd3.png

     

    Så har jeg noen spørsmål til hvordan du kobler dette samme.

    Hvilken pin bruker du på espen?

    Kobler du deg rett på kretskortet på villaventen, eller går du via inngang på toppen?

     

     

  4. Denne så jo veldig fin ut, så jeg tenkte jeg skulle teste den på 300 boksen min, men får ikke lastet websiden etter å ha koblet til VillaVentBridge. Testet på en Lolin D32 via VSC. Noen forslag til hva som kan være galt?

     

    [INFO] Booting
    [INFO] Adding registers
    [WARNING] No config, booting AP
    [INFO] Swapping to AP mode     
    [INFO] Setting up web server
    Web server is ready for config at http://192.168.4.1/

     

  5. Bruker disse reed-switchene. De er litt store, så de vil nok bli byttet ut med noen mindre, men det var det eneste jeg fant som var hvite. Har så bare hekta på en magnet på strammeskrua for tråden (bruker også skinne fra jysk). Trekking av kabel til brytere gjorde jeg enkelt ved å henge en liten kabelkanal på siden mot veggen, da er det mer eller mindre usynlig. 

     

    Jeg testa også en del med å telle steps og tid for å stoppe i hver ende, men jeg syns det ble for stor variasjon. Så jeg syns fordelene med endestopp og kabling utveier ulempene mtp kompleksitet og driftsikkerhet. Feks ved strømbrudd, så er det enkelt å selv-kalibrere posisjon. Det var hvertfall det jeg landet på den gang, men det kan jo ha litt å gjøre med programmerings kunnskapen min.😄

     

    Følger spent med på hvordan du velger å løse dette 🙂

    • Like 1
  6. Har gått for en litt annen tilnærming, der alt er integrert i/på skinna. Ulempen er jo at det ikke går ann å åpne/lukke uten strøm. For endestopp inn/ut av lameller brukers reed-switcher. Åpen/lukket (vridning) er en integrert hjemmesnekra løsning. Dette prosjektet har ligget brakk ei stund så den er ikke montert, men skal over et skråvindu. Ved testing så har det ikke vært noe problem å dra lamellene. Styres via mysensors. Har en del forskjellige versjoner av koden, så det er ikke sikkert denne er helt 100...

     

    Bruker stepper motorer, og tråden er strammet for hånd og skrudd fast. Vurdere å bygge en versjon med servo motor, for å gjøre det litt enklere. Må bare få tid 😄

    image.thumb.png.3713301b645700669c22a61b06ef200e.png

     

    Switch for rotasjon.

    20210415_093239.thumb.jpg.02344545f1dc6363700cdcd5a4087305.jpg

     

    image.thumb.png.c9e2869298f4f2b461ba41bbc433d0ce.png

     

     

    Spoiler
    
    /*
    **  .:A4988 Poulo Stepper Driver:.
    **  MS1 MS2 MS3 Microstep resolution
    **  L   L   L   Full step
    **  H   L   L   Half step
    **  L   H   L   Quarter step
    **  H   H   L   Eighth step
    **  H   H   H   Sixteenth step
    */
    
    // version: twist motor with end stops
    
    //#define MY_TRANSPORT_WAIT_READY_MS 1
    
    #define MY_DEBUG
    #define MY_RADIO_RF24
    #define MY_NODE_ID 3
    #define MY_REPEATER_FEATURE
    
    #include <MySensors.h>
    #include <SPI.h>
    #include <Stepper.h>
    
    #define SN "Lameller"
    #define SV "1.3"
    #define CHILD_CURTAIN 1
    
    boolean pinCurtainOpenState ;
    boolean pinCurtainShutState ;
    boolean pinTwistOpenState ;
    boolean pinTwistShutState ;
    
    // defines pins numbers for sliding
    const int dirPin = 14;                  // analog pin 0
    const int stepPin = 15;                 // analog pin 1
    const int enablePin = 16;               // analog pin 2
    const int halfSpeed = 19;               // analog pin 5
    
    // define pin numbers for twisting motor (28BYJ-48)
    const int in1Pin = 3;
    const int in2Pin = 4;
    const int in3Pin = 5;
    const int in4Pin = 6;
    
    // curtain open or closed
    #define pinCurtainShut 17               // analog pin 3
    #define pinCurtainOpen 18               // analog pin 4
    #define pinTwistOpen 8                  // D8
    #define pinTwistShut 7                  // D7
    
    #define stepsPerRevolution 768          // steps for one revolution. 768
    int motorSpeed = 40;                    // RPM. 40
    Stepper myStepper(stepsPerRevolution, in1Pin, in2Pin, in3Pin, in4Pin);
    
    MyMessage curtainState(CHILD_CURTAIN, S_COVER);
    
    void setup()
    {
      Serial.begin(115200);
      Serial.print("");
      Serial.print("curtainState.type: ");
      Serial.println(curtainState.type);
    
      //initalize sliding motor (A4988)
      Serial.println("initalize sliding motor (A4988)");
      pinMode(stepPin, OUTPUT);
      pinMode(dirPin, OUTPUT);
      pinMode(halfSpeed, OUTPUT);
      pinMode(enablePin, OUTPUT);
      digitalWrite(halfSpeed, HIGH);               // set A4988 to run at half speed
      digitalWrite(enablePin, HIGH);               // A4988 disable
    
      //initalize twisting motor (Stepper.h)
      Serial.println("initalize twisting motor (Stepper.h)");
      pinMode(in1Pin, OUTPUT);
      pinMode(in2Pin, OUTPUT);
      pinMode(in3Pin, OUTPUT);
      pinMode(in4Pin, OUTPUT);
      myStepper.setSpeed(motorSpeed);              // set the stepper speed
      powerOffTwistmotor();                        // power off twisting motor
    
      //initalize curtain status
      Serial.println("initalize curtain status");
      pinMode(pinCurtainOpen, INPUT_PULLUP);       // curtain not covering window
      pinMode(pinCurtainShut, INPUT_PULLUP);       // curtain covering window
      pinMode(pinTwistOpen, INPUT_PULLUP);         // twist to open position
      pinMode(pinTwistShut, INPUT_PULLUP);         // twist to closed position
    
      pinCurtainOpenState = digitalRead(pinCurtainOpen);
      pinCurtainShutState = digitalRead(pinCurtainShut);
      pinTwistOpenState = digitalRead(pinTwistOpen);
      pinTwistShutState = digitalRead(pinTwistShut);
      Serial.print("pinCurtainOpenState :");
      Serial.println(pinCurtainOpenState);
      Serial.print("pinCurtainShutState :");
      Serial.println(pinCurtainShutState);
      Serial.print("pinTwistOpenState: ");
      Serial.println(pinTwistOpenState);
      Serial.print("pinTwistShutState: ");
      Serial.println(pinTwistShutState);
      Serial.println("");
    
      Serial.println("calibrate curtain to open position after power loss");
      Serial.println("Running openSequence(), to set curtain open");
      openSequence();                              // calibrate curtain to open position after power loss
    
      request(CHILD_CURTAIN, S_COVER);             //request last state
    }
    
    void presentation()
    {
      sendSketchInfo(SN, SV);                      // Sending sketch name and version
      present(CHILD_CURTAIN, S_COVER);             // Window cover sub-type, commands V_UP, V_DOWN
    }
    
    void loop()
    {
    }
    
    /************************************
       Change state of curtain
       when signal received.
     ***********************************/
    void receive(const MyMessage &curtainState)
    {
      Serial.print("curtainState.type: ");
      Serial.println(curtainState.type);
      if (curtainState.type == V_DOWN)             // curtain is open, this starts the closing sequence
      {
        Serial.print("V_DOWN: ");
        Serial.println(V_DOWN);
        Serial.print("pinCurtainShut value above: ");
        Serial.println(pinCurtainShutState);
        if ((pinCurtainShutState = (digitalRead(pinCurtainShut)) == true))
        {
          Serial.print("pinCurtainShut value: ");
          Serial.println(pinCurtainShutState);
          Serial.println("---------------");
          Serial.println("");
          shutSequence();
          Serial.print("pinCurtainShutState value after open sequence done: ");
          Serial.print(pinCurtainShutState);
        }
      }
    
      if (curtainState.type == V_UP)               // curtain is closed, this starts the opening sequence
      {
        Serial.print("V_UP: ");
        Serial.println(V_UP);
        Serial.print("pinCurtainOpen value above: ");
        Serial.println(pinCurtainOpenState);
        if ((pinCurtainOpenState = (digitalRead(pinCurtainOpen)) == true))
        {
          Serial.print("pinCurtainOpenState value: ");
          Serial.println(pinCurtainOpenState);
          Serial.println("---------------");
          Serial.println("");
          openSequence();
          Serial.print("pinCurtainOpenState value after open sequence done: ");
          Serial.println(pinCurtainOpenState);
          Serial.println("");
        }
      }
    }
    
    /************************************
       sequence to twist open,
       then slide curtain open.
     ***********************************/
    void openSequence()
    {
      Serial.println("open sequence started");
    
      Serial.println("twist open started");
      powerOnTwistmotor();                         //Run twist motor until pinTwistOpen is true, then stop motor.
      Serial.print("pinTwistOpenState: ");
      Serial.println(pinTwistOpenState);
      while (digitalRead(pinTwistOpen))
      {
        myStepper.step(1);
      }
      powerOffTwistmotor();
      Serial.println("twist open completed");
    
      Serial.println("sliding to open position started");
      digitalWrite(enablePin, LOW);                // A4988 enable
      Serial.println("digitalWrite(enablePin, LOW)");
      delay(1000);
      while (digitalRead(pinCurtainOpen))          // Run until sliding motor until pinCurtainOpen is activated
      {
        digitalWrite(dirPin, LOW);                 // LOW => UP. (HIGH = anti-clockwise / LOW = clockwise)
        digitalWrite(stepPin, HIGH);               // Makes pulses for ratation
        delayMicroseconds(500);
        digitalWrite(stepPin, LOW);
        delayMicroseconds(500);
      }
      digitalWrite(enablePin, HIGH);               // A4988 disable
      Serial.println("sliding to open position completed");
      Serial.println("---------------");
      Serial.println("");
      delay(1000);
    }
    
    /************************************
       sequence to slide curtain shut,
       then twist shut.
     ***********************************/
    void shutSequence()
    {
      Serial.println("shut sequence started");
      Serial.println("sliding to shut position started");
      digitalWrite(enablePin, LOW);                // A4988 enable
      delay(100);
      while (digitalRead(pinCurtainShut))          // Run sliding motor until pinCurtainShut is activated
      {
        digitalWrite(dirPin, HIGH);                // HIGH => DOWN. (HIGH = anti-clockwise / LOW = clockwise)
        digitalWrite(stepPin, HIGH);               // Makes pulses for rotation
        delayMicroseconds(500);
        digitalWrite(stepPin, LOW);
        delayMicroseconds(500);
      }
      Serial.println("sliding to shut position completed");
    
      digitalWrite(enablePin, HIGH);               // A4988 disable
      Serial.println("sliding to shut position completed");
      Serial.println("---------------");
      Serial.println("");
      delay(1000);
    
      Serial.println("twisting shut started");
      powerOnTwistmotor();                           //Run twist motor until pinTwistOpen is closed, then stop motor.
      while (digitalRead(pinTwistShut))
      {
        myStepper.step(-1);
      }
      powerOffTwistmotor();
      Serial.println("twist shut completed");
    }
    
    /************************************
       enable all outputs on twisting motor.
     ***********************************/
    void powerOnTwistmotor()
    {
      digitalWrite(in1Pin, HIGH);
      digitalWrite(in2Pin, HIGH);
      digitalWrite(in3Pin, HIGH);
      digitalWrite(in4Pin, HIGH);
    }
    
    /************************************
       disable all outputs on twisting motor.
     ***********************************/
    void powerOffTwistmotor()
    {
      digitalWrite(in1Pin, LOW);
      digitalWrite(in2Pin, LOW);
      digitalWrite(in3Pin, LOW);
      digitalWrite(in4Pin, LOW);
    }

     

     

    • Like 3
  7. 30 minutter siden, Moskus skrev:

    Sorry, skulle skrevet det inn i artikkelen, men det gikk litt fort (jeg skulle ut på søndagstur... ;) ) 

    Passet jo bra, så fikk jeg også bidratt litt 😄

     

     

    Da er jo det store spørsmålet, hva finnes av alternativer?

  8.  

    21 hours ago, Gjelsvik said:
    On 09/08/2018 at 13:52, cogliostrio said:

    Har fått satt opp en prototype av lamell styring. Styres av to stepper motorer via mysensors. Legg merke til profesjonell montering vha binders ?

     

     

     

    Hvordan har dette fungert?

     

    Bytter ut persienner i 70talls stue med mange store vinduer. Blir lamellgardiner og har lyst til å automatisere de

     

    Har fungert ganske greit, men det er litt fiklete å bygge om til å feste 2 motorer. Min versjon er basert på Mysensors, og bruker arduino nano med 2 stepper motorer. Slik at den kan både dra lamellene og vri dem. Den har også autokalibrering ved strømbrudd (kjører til åpen posisjon).  Laget et kretskort design for en god stund siden, men det har stoppet litt opp for nå, men er vel på tide å grave frem igjen inne prosjektene nå på vinteren.

     

    Ellers så har vel @xibriz(?) også en versjon som gjør det samme.

  9. Etter å ha kikka i manualen, vil jeg si nei, det ser ikke ut som den benytter rammer. Når det er sagt, så kan du jo montere termostat separat. Mine står på 140 eller 150 over gulvet. Altså over lysbrytere, noe som gjør de mye enklere å lese av.

×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.