INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 1 Bewertungen - 5 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Milight Openmili Steuerung
16.11.2015, 22:24 (Dieser Beitrag wurde zuletzt bearbeitet: 16.11.2015 22:28 von gronph.)
Beitrag #1
Milight Openmili Steuerung
Hallo zusammen,

hat von euch schon jemand Erfahrung mit der Steuerung von Milight in Verbindung mit einem nRF24L01+ gemacht?

Hier einige Infos dazu:
https://hackaday.io/project/5888-reverse...r-protocol

oder:
https://github.com/henryk/openmili

oder hier für den Raspberry:
http://torsten-traenkner.de/wissen/smart...ilight.php

Ich bekomme das auf meinem Nano einfach nicht zum laufen.
Damit kann man echt intressante Lichtszenarien bauen, komisch das man im Netzt sogut wie nichts darüber findet.

Hat jemand von euch soch schonmal daran probiert oder Lust das mit mir zu basteln?
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
16.11.2015, 23:00
Beitrag #2
RE: Milight Openmili Steuerung
(16.11.2015 22:55)Lötzinnerhitzer schrieb:  stell doch bitte den Sketch für den Nano hier ein

Code:
#include <SPI.h>
#include <nRF24L01.h>
#include <RF24.h>
#include <printf.h>

#include "PL1167_nRF24.h"
#include "MiLightRadio.h"

#define CE_PIN 9
#define CSN_PIN 10

RF24 radio(CE_PIN, CSN_PIN);
PL1167_nRF24 prf(radio);
MiLightRadio mlr(prf);

void setup()
{
  Serial.begin(115200);
  printf_begin();
  delay(1000);
  Serial.println("# OpenMiLight Receiver/Transmitter starting");
  mlr.begin();
}


static int dupesPrinted = 0;
static bool receiving = false;
static bool escaped = false;
static uint8_t outgoingPacket[7];
static uint8_t outgoingPacketPos = 0;
static uint8_t nibble;
static enum {
  IDLE,
  HAVE_NIBBLE,
  COMPLETE,
} state;

void loop()
{
  if (receiving) {
    if (mlr.available()) {
      printf("\n");
      uint8_t packet[7];
      size_t packet_length = sizeof(packet);
      mlr.read(packet, packet_length);

      for (int i = 0; i < packet_length; i++) {
        printf("%02X ", packet[i]);
      }
    }

    int dupesReceived = mlr.dupesReceived();
    for (; dupesPrinted < dupesReceived; dupesPrinted++) {
      printf(".");
    }
  }

  while (Serial.available()) {
    char inChar = (char)Serial.read();
    uint8_t val = 0;
    bool have_val = true;

    if (inChar >= '0' && inChar <= '9') {
      val = inChar - '0';
    } else if (inChar >= 'a' && inChar <= 'f') {
      val = inChar - 'a' + 10;
    } else if (inChar >= 'A' && inChar <= 'F') {
      val = inChar - 'A' + 10;
    } else {
      have_val = false;
    }

    if (!escaped) {
      if (have_val) {
        switch (state) {
          case IDLE:
            nibble = val;
            state = HAVE_NIBBLE;
            break;
          case HAVE_NIBBLE:
            if (outgoingPacketPos < sizeof(outgoingPacket)) {
              outgoingPacket[outgoingPacketPos++] = (nibble << 4) | (val);
            } else {
              Serial.println("# Error: outgoing packet buffer full/packet too long");
            }
            if (outgoingPacketPos >= sizeof(outgoingPacket)) {
              state = COMPLETE;
            } else {
              state = IDLE;
            }
            break;
          case COMPLETE:
            Serial.println("# Error: outgoing packet complete. Press enter to send.");
            break;
        }
      } else {
        switch (inChar) {
          case ' ':
          case '\n':
          case '\r':
          case '.':
            if (state == COMPLETE) {
              mlr.write(outgoingPacket, sizeof(outgoingPacket));
            }
            if(inChar != ' ') {
              outgoingPacketPos = 0;
              state = IDLE;
            }
            if (inChar == '.') {
              mlr.resend();
              delay(1);
            }
            break;
          case 'x':
            Serial.println("# Escaped to extended commands: r - Toggle receiver; Press enter to return to normal mode.");
            escaped = true;
            break;
        }
      }
    } else {
      switch (inChar) {
        case '\n':
        case '\r':
          outgoingPacketPos = 0;
          state = IDLE;
          escaped = false;
          break;
        case 'r':
          receiving = !receiving;
          if (receiving) {
            Serial.println("# Now receiving");
          } else {
            Serial.println("# Now not receiving");
          }
          break;
      }
    }
  }
}

Hier das Beispiel Sketch, aber irgendwie tut das nichts bei mir...
Verkabelung ist richtg, da ich den nRF24L01 mit einem anden Sketch zum laufen gebracht habe
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.11.2015, 07:11 (Dieser Beitrag wurde zuletzt bearbeitet: 17.11.2015 07:12 von Bitklopfer.)
Beitrag #3
RE: Milight Openmili Steuerung
Moin,
habe deinen Code mal so überflogen und bestimmt nicht alles verstanden, aber in dieser for Schleife:
for (*Anfangswert ???*; dupesPrinted < dupesReceived; dupesPrinted++) {
wird dupesPrinted nicht initialisiert. Das wird gerade einmal beim definieren der Variable gemacht und dann nicht mehr...irgendwie kann das nicht laufen...Wink
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.11.2015, 11:16
Beitrag #4
RE: Milight Openmili Steuerung
(17.11.2015 07:11)Bitklopfer schrieb:  habe deinen Code mal so überflogen und bestimmt nicht alles verstanden, aber in dieser for Schleife:
for (*Anfangswert ???*; dupesPrinted < dupesReceived; dupesPrinted++) {
wird dupesPrinted nicht initialisiert. Das wird gerade einmal beim definieren der Variable gemacht und dann nicht mehr...irgendwie kann das nicht laufen...Wink
Daran kann es IMHO nicht liegen. Ob man sowas schreibt:
Code:
for(int i = 0; i < 5; i++)...

oder sowas:
Code:
int i = 0;
for(; i < 5; i++)...

...ist vollkommen egal.
Gruss,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.11.2015, 13:06
Beitrag #5
RE: Milight Openmili Steuerung
vielen Dank erstmal für eure Antworten.
Das Sketch ansich kompiliert problemlos und lässt sich auch in den Nano einspielen, jedoch scheint es nicht wirklich zu laufen.
Es kommt zwar noch bis zu "OpenMiLight Receiver/Transmitter starting" aber dann scheint irgenwie nichts mehr weiter zu laufen.
Da steh ich rigendwie auf dem Schlauch...
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.11.2015, 15:36 (Dieser Beitrag wurde zuletzt bearbeitet: 17.11.2015 15:40 von Bitklopfer.)
Beitrag #6
RE: Milight Openmili Steuerung
(17.11.2015 11:16)Thorsten Pferdekämper schrieb:  ...
Daran kann es IMHO nicht liegen. Ob man sowas schreibt:
Code:
for(int i = 0; i < 5; i++)...

oder sowas:
Code:
int i = 0;
for(; i < 5; i++)...

...ist vollkommen egal.
Gruss,
Thorsten

Hi Thorsten,
an das hatte ich auch gedacht, nur wann und wo wird dann die Variable "dupesPrinted" wieder aufgefrischt ?....diese Zeile habe ich vergeblich gesucht... und das Setup bzw. die Variablendefinition findet beim Programmstart nur einmal statt...oder hatte ich einfach Tomaties uffe Glubschies...Rolleyes
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.11.2015, 15:45
Beitrag #7
RE: Milight Openmili Steuerung
(17.11.2015 15:36)Bitklopfer schrieb:  an das hatte ich auch gedacht, nur wann und wo wird dann die Variable "dupesPrinted" wieder aufgefrischt ?....diese Zeile habe ich vergeblich gesucht... und das Setup bzw. die Variablendefinition findet beim Programmstart nur einmal statt...oder hatte ich einfach Tomaties uffe Glubschies...Rolleyes
dupesPrinted ist eine lokale nicht-static Variable in loop(). D.h. sie wird jedesmal neu erzeugt, wenn loop() aufgerufen wird.
Gruss,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
17.11.2015, 16:10
Beitrag #8
RE: Milight Openmili Steuerung
(17.11.2015 15:45)Thorsten Pferdekämper schrieb:  
(17.11.2015 15:36)Bitklopfer schrieb:  an das hatte ich auch gedacht, nur wann und wo wird dann die Variable "dupesPrinted" wieder aufgefrischt ?....diese Zeile habe ich vergeblich gesucht... und das Setup bzw. die Variablendefinition findet beim Programmstart nur einmal statt...oder hatte ich einfach Tomaties uffe Glubschies...Rolleyes
dupesPrinted ist eine lokale nicht-static Variable in loop(). D.h. sie wird jedesmal neu erzeugt, wenn loop() aufgerufen wird.
Gruss,
Thorsten

..ähm und warum steht dann diese Zeile:
static int dupesPrinted = 0;
da wo Variablen deklariert werden...zudem als static ?
lgbk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Infrarot zu RS232 für Steuerung DG0JG 46 697 22.10.2016 11:35
Letzter Beitrag: hotsystems
  Slider Steuerung, Programmierung blueblack 21 623 16.10.2016 22:31
Letzter Beitrag: blueblack
  Hilfe: IR Remote Steuerung, MSGEQ7 + RGB-LED Streifen dastob 1 125 14.10.2016 21:40
Letzter Beitrag: hotsystems
  Hilfe bei Servo-steuerung Innocence 7 823 23.02.2016 11:00
Letzter Beitrag: hotsystems
  Steuerung eines Remotekopfes mit Joystick, 2Stck DC Motore und Arduino max123 6 611 30.12.2015 14:56
Letzter Beitrag: max123
  propleme beim programmieren einer steuerung für funksteckdosen purzele06 18 3.684 19.11.2015 11:06
Letzter Beitrag: Phil94
  Steuerung von mehreren Programmabläufen TimF 21 1.437 04.11.2015 23:28
Letzter Beitrag: hotsystems
  Komplexer Kamera Timelaeps Steuerung (Gimbal/Slider Kombination) fknobel 6 823 25.10.2015 14:25
Letzter Beitrag: Klaus(i)
  Pendelbahn (Seilbahn) Steuerung K@mi 34 5.036 30.07.2015 08:15
Letzter Beitrag: fraju
  Modellauto mit Ir-Steuerung und Abstandssensor asd 1 784 09.03.2015 09:18
Letzter Beitrag: marcus

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste