RPi-Cam-Web-Interface

Bonjour,

Je voulais partager ma découverte du week-end avec vous. A savoir RPi-Cam-Web-Interface.

Comme son nom l'indique c'est une interface web qui permet de contrôler la Pi Cam d'un RaspberryPi. Vous pouvez l'utiliser pour faire de la télésurveillance. Que ce soit votre habitation, votre imprimante 3D, les allées et venues de votre chat,  ou même  bébé qui dort dans sa chambre avec une PiCam infra rouge les utilisations sont nombreuses et variées.

Ce n'est pas le 1er que je test, j'ai déja exploré MotionPie, c'est beau mais c'est lent !  Avec RPi-Cam-Web-Interface on passe à la vitesse supérieur.

L'installation :

J'ai installé RCWI sur une raspbian toute fraîche, une Jessie LITE monté sur ma RPI 1b.

Avant de commencer, la petite mise à jour comme toujours.

sudo apt-get update
sudo apt-get dist-upgrade

Pour la Jessie LITE ->  sudo apt-get install git

et ensuite

git clone https://github.com/silvanmelchior/RPi_Cam_Web_Interface.git
cd RPi_Cam_Web_Interface
chmod u+x *.sh
./install.sh

YES à toutes les questions et en quelques minutes c'est installé et fonctionnel.

L'utilisation :

Pour avoir accès à l'interface vous tapez l'IP de la RPI dans votre navigateur et oh miracle ça marche.

Je vous avais prévenu, c'est basique comme interface mais très efficace !

Ca n'empêche pas d'avoir accès à tous les réglages possible ... accrochez vous il y en a vraiment beaucoups mais avec les réglages pas défaut ça marche très bien chez moi.

Le streaming est fluide, le timelaps est facile à mettre en place. Je n'ai pas encore testé le motion detection mais je suppose que c'est pas plus compliqué que le reste.

Une belle petite découverte qui devrait me rendre beaucoup de services et à vous aussi !

Fred

Néopixel + Domoticz + MySensors V1.5 & V2

Hello tout le monde,

Celà fait un moment que je me disait que ça serait bien de pouvoir controler des néopixels avec domoticz.

J'ai donc fais quelques recherche et je suis tombé sur un exemple assez intérressant , je l'ai donc testé.

Au niveau hardware, il faut un maitre mysensors connecter à la raspberry, voir ici pour le tutoriel.

Pour la partie esclave , une arduino, un module radio NRF24L01+, des leds neopixels.

Voilà pour les premiers tests, j’espère que cela vous plaira.

J’approfondirai le sujet plus tard.

Mickaël

Liens :https://www.domoticz.com/forum/viewtopic.php?t=8039

// Example sketch showing how to control an RGB Led Strip.
// This example will not remember the last rgb color set after power failure.

#include <MySensor.h>
#include <SPI.h>

#include "Adafruit_NeoPixel.h"

#define NUMPIXELS 4   // Number of connected pixels on a single datapin
#define PIN 4         // Digital output pin

#define node 254  //254 for testing purpose
#define CHILD_ID 0


Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
long RGB_values[3] = {0,0,0};

MySensor gw;

void setup()
{
    gw.begin(incomingMessage, node, true);
    gw.sendSketchInfo("RGB Node", "1.0");
    gw.present(CHILD_ID, S_RGB_LIGHT);
    strip.begin();
    strip.show(); // Update the strip, to start they are all 'off'
}


void loop()
{
    gw.process();
}

void incomingMessage(const MyMessage &message) {
    if (message.type==V_RGB) {
  // starting to process the hex code
        String hexstring = message.getString(); //here goes the hex color code coming from through MySensors (like FF9A00)
        long number = (long) strtol( &hexstring[0], NULL, 16);
        RGB_values[0] = number >> 16;
        RGB_values[1] = number >> 8 & 0xFF;
        RGB_values[2] = number & 0xFF;

        colorWipe(Color(RGB_values[0],RGB_values[1],RGB_values[2]), 60);
     }
     
    if (message.type==V_DIMMER) {
      strip.setBrightness(round((2.55*message.getInt())));
      strip.show();
      }
     
    if (message.type==V_LIGHT) {
       if (message.getInt() == 0) {
        strip.clear();
        strip.show();
       }
    }
 }
 
void colorWipe(uint32_t c, uint8_t wait) {
  int i;
 
  for (i=0; i < strip.numPixels(); i++) {
      strip.setPixelColor(i, c);
      strip.show();
      delay(wait);
  }
}

    /* Helper functions */

// Create a 15 bit color value from R,G,B
uint32_t Color(byte r, byte g, byte b)
{
  uint32_t c;
  c = r;
  c <<= 8;
  c |= g;
  c <<= 8;
  c |= b;
  return c;
}

 

Code utilisé

 

EDIT 07/02/2017

Si vous utilisez la V2 de Mysensors le code ci dessus ne fonctionnera pas.

Voici la version adaptée

Fred

// Code Neopixel pour Mysensors V2

#define MY_DEBUG
#define MY_RADIO_NRF24
#include <MySensors.h>
#include <SPI.h>

#include "Adafruit_NeoPixel.h"

#define NUMPIXELS 50    // Number of connected pixels on a single datapin
#define PIN 4         // Digital output pin

#define node 10  
#define CHILD_ID 0

Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
long RGB_values[3] = {0,0,0};

void presentation()
{
   // gw.begin(incomingMessage, node, true);
    sendSketchInfo("RGB Node", "1.1");
    present(CHILD_ID, S_RGB_LIGHT);
    strip.begin();
    strip.show(); // Update the strip, to start they are all 'off'
}

void loop()
{

}

void receive(const MyMessage &message) {
    if (message.type==V_RGB) {
  // starting to process the hex code
        String hexstring = message.getString(); //here goes the hex color code coming from through MySensors (like FF9A00)
        long number = (long) strtol( &hexstring[0], NULL, 16);
        RGB_values[0] = number >> 16;
        RGB_values[1] = number >> 8 & 0xFF;
        RGB_values[2] = number & 0xFF;

        colorWipe(Color(RGB_values[0],RGB_values[1],RGB_values[2]));
     }

    if (message.type==V_PERCENTAGE) {
      strip.setBrightness(round((2.55*message.getInt())));
      strip.show();
      }

    if (message.type==V_STATUS) {
       if (message.getInt() == 0) {
        strip.clear();
        strip.show();
       }
    }
 }

void colorWipe(uint32_t c) {
  int i;

  for (i=0; i < strip.numPixels(); i++) {
      strip.setPixelColor(i, c);
  }
  strip.show();  
}

    /* Helper functions */

// Create a 15 bit color value from R,G,B
uint32_t Color(byte r, byte g, byte b)
{
  uint32_t c;
  c = r;
  c <<= 8;
  c |= g;
  c <<= 8;
  c |= b;
  return c;
}