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 30.7k 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
    #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

    B 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

        B Offline
        B 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.

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

                B Offline
                B 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'

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

                      B Offline
                      B 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 .

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

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

                            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                            With your input, this post could be even better 💗

                            Register Login
                            Reply
                            • Reply as topic
                            Log in to reply
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes


                            14

                            Online

                            12.0k

                            Users

                            11.2k

                            Topics

                            113.4k

                            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