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 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


                              18

                              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