Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. My Project
  3. PhoneyTV for Vera is Here!

PhoneyTV for Vera is Here!

Scheduled Pinned Locked Moved My Project
34 Posts 6 Posters 27.2k Views 3 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • 5546dug5 Offline
    5546dug5 Offline
    5546dug
    wrote on last edited by
    #20

    @BulldogLowell , In a perfect world I would like to control Phoney TV over vera/my sensors.
    right now I can use RST to drop the lights for a few secs only, but that is a physical action .

    I did look at phoney tv 2.0 and see the pin was changed to pinbutton and declared as an output?
    There was a relay in this sketch, or is the vera switch node to be therelay ? I see when you push button it changes the state of the lights but I think not the power to the nano.

    I guessing my guesses are wrong.

    Enough guessing from an old guy!

    BulldogLowellB 1 Reply Last reply
    0
    • 5546dug5 5546dug

      @BulldogLowell , In a perfect world I would like to control Phoney TV over vera/my sensors.
      right now I can use RST to drop the lights for a few secs only, but that is a physical action .

      I did look at phoney tv 2.0 and see the pin was changed to pinbutton and declared as an output?
      There was a relay in this sketch, or is the vera switch node to be therelay ? I see when you push button it changes the state of the lights but I think not the power to the nano.

      I guessing my guesses are wrong.

      Enough guessing from an old guy!

      BulldogLowellB Offline
      BulldogLowellB Offline
      BulldogLowell
      Contest Winner
      wrote on last edited by
      #21

      @5546dug

      Actually, the arduino never turns "off." Rather, cycling the "power" merely stops the output to the blinking/fading LEDs.

      I'm not clear on your question... are you trying to use PhoneyTV without a controller at all?

      anyways, you want the latest version above: PhoneyTV_V3.1_MySensors_V1.4.1.ino, i think

      1 Reply Last reply
      0
      • 5546dug5 Offline
        5546dug5 Offline
        5546dug
        wrote on last edited by
        #22

        @BulldogLowell yes I have v3.1 So I was wrong -at least consistent!
        I have Vera controller and at the moment My Sensors serial GW is connected ,

        The vera dashboard shows node for light on and off and that is really what I want. To start the lights remotely , I think using the reset locally (d2 to gnd?) may work but only if we are there

        BulldogLowellB 1 Reply Last reply
        0
        • 5546dug5 Offline
          5546dug5 Offline
          5546dug
          wrote on last edited by
          #23

          Should also tell you I use ui5 in my veras case it makes a difference and I can toggle the switch off and on in my Device page but no Phoney TV changes.

          1 Reply Last reply
          0
          • 5546dug5 5546dug

            @BulldogLowell yes I have v3.1 So I was wrong -at least consistent!
            I have Vera controller and at the moment My Sensors serial GW is connected ,

            The vera dashboard shows node for light on and off and that is really what I want. To start the lights remotely , I think using the reset locally (d2 to gnd?) may work but only if we are there

            BulldogLowellB Offline
            BulldogLowellB Offline
            BulldogLowell
            Contest Winner
            wrote on last edited by
            #24

            @5546dug said:

            The vera dashboard shows node for light on and off and that is really what I want.

            then you are there...

            is it working?

            1 Reply Last reply
            0
            • 5546dug5 Offline
              5546dug5 Offline
              5546dug
              wrote on last edited by
              #25

              no it is not

              1 Reply Last reply
              0
              • 5546dug5 Offline
                5546dug5 Offline
                5546dug
                wrote on last edited by
                #26

                @BulldogLowell I see in v3.1 pin d2 is called ' button pin' and is an' input' and 'pullup'
                (understand it is for the pushbutton use but even then it is only for a few sec. in my setup.)
                Also there is d13 defined as for the relay and used with the radio could that be an issue?

                How is the controller/GW telling the Phoney TV to change states? Do I need to run a wire from d2 (?) to gnd/vcc to create an interupt?
                I don't really need the button, but I will leave it there

                1 Reply Last reply
                0
                • 5546dug5 Offline
                  5546dug5 Offline
                  5546dug
                  wrote on last edited by
                  #27

                  @BulldogLowell Just noticed your post is v3.1 lib 1.4.1 and I have lib 1.4

                  That might be why I can't control from Vera ....then there is that d2 interrupt connection.

                  BulldogLowellB 1 Reply Last reply
                  0
                  • 5546dug5 5546dug

                    @BulldogLowell Just noticed your post is v3.1 lib 1.4.1 and I have lib 1.4

                    That might be why I can't control from Vera ....then there is that d2 interrupt connection.

                    BulldogLowellB Offline
                    BulldogLowellB Offline
                    BulldogLowell
                    Contest Winner
                    wrote on last edited by
                    #28

                    @5546dug

                    hmmm, looking at the code I posted I see why you have a problem.

                    Try this:

                    /*
                     * PhoneyTV v3.1.1
                     *
                     * This Sketch illuminates 6 sets of LED's in a random fashion as to mimic the
                     * light eminating from a television.  It is intended to make an empty home,
                     * or an empty section of a home, appear to be occupied by someone watching
                     * TV.  As an alternative to a real television left on, this uses less than 1%
                     * of the electrical energy.
                     *
                     * With the use of the MySensors plugin and gateway, PhoneyTV is intended to
                     * be used with a controller (e.g. Vera or Raspberry PI).
                     *
                     * Sketch does not use any delays to create the random blinking as a way to
                     * assure that communication back to the gateway is as unaffected as possible.
                     *
                     * You can adjust the length of the blink interval and its "twitchyness" by
                     * modifying the random number generators, if you prefer more/less 'motion' in
                     * in your unit.  The lines are highlighted in the code, play around to create the
                     * random effect you like.
                     *
                     * Sketch takes advantage of available PWM on pins 3, 5 & 6 using the white/blue LEDs
                     * to allow fluctuations in the intensity of the light, enhancing the PhoneyTV's
                     * realistic light effects.
                     *
                     * Created 12-APR-2014
                     * Free for distrubution
                     * Credit should be given to MySensors.org for their base code for relay control
                     * and for the radio configuration.  Thanks Guys.
                     *
                     * 29-May-2014
                     * Version 2:  Simplified the code, removing all redundant relay setup from original
                     * code.  Added an on/off momentary pushputton option to be set up on pin 2.  Inproved
                     * the dark dips for longer duration (can be configured) at intervals.
                     *
                     * 6-Jun-2015
                     * Version 3.1
                     * Updated for MySensors V1.4.1
                     * Contributed by Jim (BulldogLowell@gmail.com) Inspired by Josh >> Deltanu1142@gmail.com
                     */
                    //
                    #include <MySensor.h>
                    #include <SPI.h>
                    #include <Bounce2.h>
                    //
                    #define SKETCH_NAME "PhoneyTV"
                    #define SKETCH_VERSION "3.1.1"
                    //
                    #define RADIO_RESET_DELAY_TIME 20
                    //
                    #define BUTTON_PIN  2  // Arduino Digital I/O pin number for button 
                    #define CHILD_ID 1   // 
                    #define RADIO_ID 5  //AUTO
                    //
                    #define DEBUG_ON
                    //
                    #ifdef DEBUG_ON
                    #define DEBUG_PRINT(x)   Serial.print(x)
                    #define DEBUG_PRINTLN(x) Serial.println(x)
                    #define SERIAL_START(x)  Serial.begin(x)
                    #else
                    #define DEBUG_PRINT(x)
                    #define DEBUG_PRINTLN(x)
                    #define SERIAL_START(x)
                    #endif
                    //
                    MySensor gw;
                    MyMessage msg(CHILD_ID, V_LIGHT);
                    //
                    byte ledPin3 =  3;      // White using PWM
                    byte ledPin4 =  4;      // Red
                    byte ledPin5 =  5;      // Blue using PWM
                    byte ledPin6 =  6;      // Blue using PWM
                    byte ledPin7 =  7;      // Green
                    byte ledPin8 =  8;      // White (No PWM)
                    //
                    Bounce debouncer = Bounce();
                    byte oldValue = 0;
                    boolean state = false;
                    boolean oldState = false;
                    int dipInterval = 10;
                    int darkTime = 250;
                    unsigned long currentDipTime;
                    unsigned long dipStartTime;
                    unsigned long currentMillis;
                    byte ledState = LOW;
                    unsigned long previousMillis = 0UL;
                    byte led = 5;
                    unsigned long interval = 2000UL;
                    int twitch = 50;
                    int dipCount = 0;
                    int analogLevel = 100;
                    boolean timeToDip = false;
                    boolean gotAck=false;
                    //
                    void setup()
                    {
                      SERIAL_START(115200);
                      pinMode(ledPin3, OUTPUT);
                      pinMode(ledPin4, OUTPUT);
                      pinMode(ledPin5, OUTPUT);
                      pinMode(ledPin6, OUTPUT);
                      pinMode(ledPin7, OUTPUT);
                      pinMode(ledPin8, OUTPUT);
                      pinMode(BUTTON_PIN, INPUT_PULLUP);
                      //
                      debouncer.attach(BUTTON_PIN);
                      debouncer.interval(50);
                      //
                      gw.begin(incomingMessage, RADIO_ID, true, 0);  // configured as a repeating node!!
                      gw.sendSketchInfo(SKETCH_NAME, SKETCH_VERSION);
                      gw.wait(RADIO_RESET_DELAY_TIME);
                      gw.present(CHILD_ID, S_LIGHT);
                      gw.wait(RADIO_RESET_DELAY_TIME);
                      while(!gw.send(msg.set(state), false))
                      {
                        gw.wait(RADIO_RESET_DELAY_TIME);
                      }
                      gw.wait(RADIO_RESET_DELAY_TIME);
                      DEBUG_PRINTLN(F("Sensor Presentation Complete"));
                    }
                    //
                    void loop()
                    {
                      gw.process();
                      debouncer.update();
                      byte value = debouncer.read();
                      if (value != oldValue && value == 0)
                      {
                        state = !state;
                        while(!gotAck)
                        {
                          gw.send(msg.set(state), true);
                          gw.wait(RADIO_RESET_DELAY_TIME);
                        }
                        gotAck = false;
                        DEBUG_PRINT(F("State Changed to:"));
                        DEBUG_PRINTLN(state? F("PhoneyTV ON") : F("PhoneyTV OFF"));
                      }
                      oldValue = value;
                      if (state)
                      {
                        if (timeToDip == false)
                        {
                          currentMillis = millis();
                          if (currentMillis - previousMillis > interval)
                          {
                            previousMillis = currentMillis;
                            interval = random(750, 4001); //Adjusts the interval for more/less frequent random light changes
                            twitch = random(40, 100); // Twitch provides motion effect but can be a bit much if too high
                            dipCount = dipCount++;
                          }
                          if (currentMillis - previousMillis < twitch)
                          {
                            led = random(3, 9);
                            analogLevel = random(50, 255); // set the range of the 3 pwm leds
                            ledState = !ledState;
                            switch (led) //for the three PWM pins
                            {
                              case 3:
                                pwmWrite();
                                break;
                              case 5:
                                pwmWrite();
                                break;
                              case 6:
                                pwmWrite();
                                break;
                              default:
                                digitalWrite(led, ledState);
                            }
                            if (dipCount > dipInterval)
                            {
                              timeToDip = true;
                              dipCount = 0;
                              dipStartTime = millis();
                              darkTime = random(50, 150);
                              dipInterval = random(5, 250); // cycles of flicker
                            }
                          }
                        }
                        else
                        {
                          DEBUG_PRINTLN(F("Dip Time"));
                          currentDipTime = millis();
                          if (currentDipTime - dipStartTime < darkTime)
                          {
                            for (int i = 3; i < 9; i++)
                            {
                              digitalWrite(i, LOW);
                            }
                          }
                          else
                          {
                            timeToDip = false;
                          }
                        }
                      }
                      else
                      {
                        if (state != oldState)
                        {
                          for (int i = 3; i < 9; i++)
                          {
                            digitalWrite(i, LOW);
                          }
                        }
                      }
                      oldState = state;
                    }
                    //
                    void incomingMessage(const MyMessage &message)
                    {
                      if (message.isAck())
                      {
                        DEBUG_PRINTLN(F("This is an ack from gateway"));
                        gotAck = true;
                      }
                      if (message.type == V_LIGHT)
                      {
                        state = message.getBool();
                        DEBUG_PRINT(F("Incoming change for sensor... New State = "));
                        DEBUG_PRINTLN(state? F("ON") : F("OFF"));
                      }
                    }
                    //
                    void pwmWrite()
                    {
                      if (ledState == HIGH) 
                      {
                        analogWrite(led, analogLevel);
                      }
                      else 
                      {
                        digitalWrite(led, LOW);
                      }
                    }
                    
                    1 Reply Last reply
                    0
                    • 5546dug5 Offline
                      5546dug5 Offline
                      5546dug
                      wrote on last edited by
                      #29

                      @BulldogLowell Thanks
                      I will try. 3.1.1 when I get home

                      1 Reply Last reply
                      0
                      • 5546dug5 Offline
                        5546dug5 Offline
                        5546dug
                        wrote on last edited by
                        #30

                        @BulldogLowell
                        here is screen shot of error codeArduino: 1.6.5 (Windows 8.1), Board: "Arduino Nano, ATmega328"

                        Using library MySensors in folder: C:\Users\Carolyn & Doug\Documents\Arduino\libraries\MySensors (legacy)

                        Using library SPI in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI

                        Using library Bounce2 in folder: C:\Users\Carolyn & Doug\Documents\Arduino\libraries\Bounce2 (legacy)

                        C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs -IC:\Users\Carolyn & Doug\Documents\Arduino\libraries\MySensors -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI -IC:\Users\Carolyn & Doug\Documents\Arduino\libraries\Bounce2 C:\Users\CAROLY~1\AppData\Local\Temp\build5063782765207672318.tmp\phoney_tv_july_20_3.1.1.cpp -o C:\Users\CAROLY~1\AppData\Local\Temp\build5063782765207672318.tmp\phoney_tv_july_20_3.1.1.cpp.o

                        phoney_tv_july_20_3.1.1.ino: In function 'void setup()':
                        phoney_tv_july_20_3.1.1.ino:111:6: error: 'class MySensor' has no member named 'wait'
                        phoney_tv_july_20_3.1.1.ino:113:6: error: 'class MySensor' has no member named 'wait'
                        phoney_tv_july_20_3.1.1.ino:116:8: error: 'class MySensor' has no member named 'wait'
                        phoney_tv_july_20_3.1.1.ino:118:6: error: 'class MySensor' has no member named 'wait'
                        phoney_tv_july_20_3.1.1.ino: In function 'void loop()':
                        phoney_tv_july_20_3.1.1.ino:133:10: error: 'class MySensor' has no member named 'wait'
                        'class MySensor' has no member named 'wait'

                        BulldogLowellB 1 Reply Last reply
                        0
                        • 5546dug5 5546dug

                          @BulldogLowell
                          here is screen shot of error codeArduino: 1.6.5 (Windows 8.1), Board: "Arduino Nano, ATmega328"

                          Using library MySensors in folder: C:\Users\Carolyn & Doug\Documents\Arduino\libraries\MySensors (legacy)

                          Using library SPI in folder: C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI

                          Using library Bounce2 in folder: C:\Users\Carolyn & Doug\Documents\Arduino\libraries\Bounce2 (legacy)

                          C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\cores\arduino -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\variants\eightanaloginputs -IC:\Users\Carolyn & Doug\Documents\Arduino\libraries\MySensors -IC:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\SPI -IC:\Users\Carolyn & Doug\Documents\Arduino\libraries\Bounce2 C:\Users\CAROLY~1\AppData\Local\Temp\build5063782765207672318.tmp\phoney_tv_july_20_3.1.1.cpp -o C:\Users\CAROLY~1\AppData\Local\Temp\build5063782765207672318.tmp\phoney_tv_july_20_3.1.1.cpp.o

                          phoney_tv_july_20_3.1.1.ino: In function 'void setup()':
                          phoney_tv_july_20_3.1.1.ino:111:6: error: 'class MySensor' has no member named 'wait'
                          phoney_tv_july_20_3.1.1.ino:113:6: error: 'class MySensor' has no member named 'wait'
                          phoney_tv_july_20_3.1.1.ino:116:8: error: 'class MySensor' has no member named 'wait'
                          phoney_tv_july_20_3.1.1.ino:118:6: error: 'class MySensor' has no member named 'wait'
                          phoney_tv_july_20_3.1.1.ino: In function 'void loop()':
                          phoney_tv_july_20_3.1.1.ino:133:10: error: 'class MySensor' has no member named 'wait'
                          'class MySensor' has no member named 'wait'

                          BulldogLowellB Offline
                          BulldogLowellB Offline
                          BulldogLowell
                          Contest Winner
                          wrote on last edited by
                          #31

                          @5546dug

                          I think you need to update your MySensors IDE.

                          1 Reply Last reply
                          0
                          • 5546dug5 Offline
                            5546dug5 Offline
                            5546dug
                            wrote on last edited by
                            #32

                            Ok I will try that also
                            Thanks

                            1 Reply Last reply
                            0
                            • 5546dug5 Offline
                              5546dug5 Offline
                              5546dug
                              wrote on last edited by
                              #33

                              @BulldogLowell I downloaded lib 1.4.1 and just like that your code worked 100% THANKS.

                              It is something I could not have done.

                              Just a question, when in your code 3.1.1 you have a few scattered lines through out the declaration code with only // on these lines does it mean anything in particular ?
                              I couldn't find anything wrote up like the notations of /* and */ for writing comments and paragraphs .

                              BulldogLowellB 1 Reply Last reply
                              0
                              • 5546dug5 5546dug

                                @BulldogLowell I downloaded lib 1.4.1 and just like that your code worked 100% THANKS.

                                It is something I could not have done.

                                Just a question, when in your code 3.1.1 you have a few scattered lines through out the declaration code with only // on these lines does it mean anything in particular ?
                                I couldn't find anything wrote up like the notations of /* and */ for writing comments and paragraphs .

                                BulldogLowellB Offline
                                BulldogLowellB Offline
                                BulldogLowell
                                Contest Winner
                                wrote on last edited by
                                #34

                                @5546dug said:

                                Just a question, when in your code 3.1.1 you have a few scattered lines through out the declaration code with only // on these lines does it mean anything in particular ?

                                Adding the "//" is only a personal preference of mine to use the comment marks rather than leaving a blank line. for me, with a certain text editor that I use, it is easier to edit and not inadvertently delete some curly brace and screw up my code!

                                @5546dug said:

                                your code worked 100% THANKS.

                                happy to hear you are going now, sorry about the mixup.

                                1 Reply Last reply
                                0
                                Reply
                                • Reply as topic
                                Log in to reply
                                • Oldest to Newest
                                • Newest to Oldest
                                • Most Votes


                                15

                                Online

                                11.7k

                                Users

                                11.2k

                                Topics

                                113.1k

                                Posts


                                Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                                • Login

                                • Don't have an account? Register

                                • Login or register to search.
                                • First post
                                  Last post
                                0
                                • MySensors
                                • OpenHardware.io
                                • Categories
                                • Recent
                                • Tags
                                • Popular