+ Antworten
Seite 1 von 7 1 2 3 ... LetzteLetzte
Ergebnis 1 bis 10 von 63
  1. #1
    Registriert seit
    Jan 2010
    Ort
    Raum Bonn
    Beiträge
    263

    Standard ZigBee Lights / Tradfri oder Hue per RaspBEE von Dresden Elektronik ansteuern!

    Hallo zusammen, auf der Suche nach eine schönen Integrierbarkeit von Ikea Tradfri Lampen und anderen Funk Komponenten bin ich auf das RaspBee Gateway von Dresden Elektronik gestoßen.

    Dieses verfügt über einen Websocket und eine REST-API und ich versuche mich gerade mal da an der Ansteuerung.

    An dieser Stelle würde ich mich über Hilfe freuen.


    Was ich bisher habe:

    Daten -> IPS

    IPS Verbindet sich per Websocket Client mit dem Raspbee und empfängt in einer Registervariable fleißig die Daten wenn sich im Funknetz irgendwas tut.

    Ein bislang ganz simples Verarbeitungs Script nimmt die Daten und trägt sie in IPS Variablen ein. Damit sehe ich schonmal ob eine Lampe aktuell AN oder AUS ist und ihre Helligkeit.

    Script:
    PHP-Code:
    <?

     
    // wenn das Skript von einer RegisterVariable-Instanz aus aufgerufen worden ist
    if ($_IPS['SENDER'] == "RegisterVariable")
    {
        
    // bereits im Puffer der Instanz vorhandene Daten in $data kopieren
        
    $data  RegVar_GetBuffer($_IPS['INSTANCE']);
        
    $json=json_decode($_IPS['VALUE']);
        
        if (( 
    $json->== "lights" ) && ( $json->== "changed" )) {
            if ( isset(
    $json->state->on)) { 
                        if (
    $json->state->on == 1  ) {                                                    
                            if ( 
    $json->id == "1") { SetValue(30319 /*[MakiHome\Erdgeschoss\Wohnzimmer\Tradfri Lampe\Schalten]*/,true); } 
                            } else 
                            { if ( 
    $json->id == "1") { SetValue(30319 /*[MakiHome\Erdgeschoss\Wohnzimmer\Tradfri Lampe\Schalten]*/,false); } 
                        }
            }
            if ( isset(
    $json->state->bri)) {
                 if ( 
    $json->id == "1") { SetValue(22239 /*[MakiHome\Erdgeschoss\Wohnzimmer\Tradfri Lampe\Helligkeit]*/,$json->state->bri); } 
            }

            if ( isset(
    $json->state->x)) { echo "FARBE-X: ".$json->state->x."\n"; }
            if ( isset(
    $json->state->y)) { echo "FARBE-Y: ".$json->state->y."\n"; }
        }








        
    /*
        if ( $json->r == "lights" ) {
            if ( $json->state->on ) {    
                //echo "Lampe mit ID: ".$json->id." wurde eingeschaltet\n";
            } else {
                //echo "Lampe mit ID: ".$json->id." wurde ausgeschaltet\n";
            }        
        
            if ( $json->state->bri ) {    
                //echo "Lampe mit ID: ".$json->id." Helligkeit: ".$json->state->bri."\n";
            }    
        }
        */
       /*
           echo $json->t;        //Type Of Message
        echo "\n";
        echo $json->e;        //Type of Event
        echo "\n";
        echo $json->r;        //Type of Resource
        echo "\n";
        echo $json->id;        //ID
        echo "\n";
        echo $json->state->on;        //ID
        echo "\n";
        echo $json->state->bri;        //ID
        echo "\n";
        echo $json->state->x;        //ID
        echo "\n";
        echo $json->state->y;        //ID
        echo "\n";
        */  
     
      
    // Inhalt von $data im Puffer der RegisterVariable-Instanz speichern
    RegVar_SetBuffer($_IPS['INSTANCE'], $data);
    }
    ?>

    IPS -> RaspBee

    Ich kann über ein einfaches Script die änderung einer IPS Variable an den Raspbee senden warauf hin er z.B. das passende Licht AN oder Aus macht. Dieses Script kann einfach als Aktionsscript an eine Variable mit ~Switch Profil gehängt werden.

    PHP-Code:
    <?
            
            
            SetValue
    ((int)$IPS_VARIABLE,!GetValue((int)$IPS_VARIABLE));
            
            
    $currentstate=GetValue((int)$IPS_VARIABLE);
            
            if ( 
    $currentstate == "false" ) { $data='{"on": true}'; } else { $data='{"on": false}'; }

            
    $curl curl_init();

            
    curl_setopt_array($curl, array(
                  
    CURLOPT_URL => "http://192.168.1.49/api/MEINAPIKEY/lights/1/state",
                  
    CURLOPT_RETURNTRANSFER => true,
                  
    CURLOPT_ENCODING => "",
                  
    CURLOPT_MAXREDIRS => 10,
                
    CURLOPT_TIMEOUT => 30,
                  
    CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                  
    CURLOPT_CUSTOMREQUEST => "PUT",
                  
    CURLOPT_POSTFIELDS => $data,
                  
    CURLOPT_HTTPHEADER => array(
                    
    "cache-control: no-cache",
                    
    "content-type: application/json",
                    
    "x-api-key: MEINAPIKEY"
                  
    ),
            ));
            

            
    $response curl_exec($curl);
            
    $err curl_error($curl);

            
    curl_close($curl);

            if (
    $err) {
                  echo 
    "cURL Error #:" $err;
            } else {
                  
    //echo $response;
            
    }

    ?>

    Aktuell stellt sich mir die folgenden Fragen:

    1)
    Wie erstelle ich ein "Geräteobjekt" (Instanz) für IPS das im Prinzip die Eigenschaften einer Ikea Birne abbildert.
    In der Instanz müsste die ID (Adresse der Lampe auf dem ZigBee Netz) eingetragen werden können und sie sollte folgende Eigenschaften als Statusvariablen haben: (Status (AN/AUS), Helligkeit 0-100%(intensity 255), Farbton, Sättigung) Die Farben am besten als Color Picker.

    Die Lampen wollen ihre Farbangabe per CIE x,y Daten haben.


    2)
    Wie bekomme ich in IPS ein Mapping der eingehenden Daten in denen ja nur die ID der Lampe enthalten ist auf eine Instanz ID oder Variablen ID hin.


    Vielleicht kann mir ja hier jemand weiter helfen oder ist sogar fähig / interessiert dazu ein Modul oder sowas zu Bauen.

    PHP mäßg reichts bei mir leider nur fürs nötigste.

    lG Martin
    Ipsymcon Unlimited -> IP Schnittstelle -> KNX BUS
    8 Schalt 8K / 6 Bin-Eingänge 8K / 1 8Fach Rolladenr / 17 Tast 8fach / 6 Tempsens / 1 Helligkeit / Rauchmelder mit KNX / 5 Präsenz / 4 IP Kameras / 1 Nabaztag / 640mA EIB PSU / Wallmount 19" Touch / Freebus User / Homematik / FS20

  2. #2
    Registriert seit
    May 2015
    Beiträge
    34

    Hi,

    ich beschäftige mich schon seit ca. 2 Jahren mit dem raspbee Gateway. Habe ca. 30 Geräte eingebunden (Lampen, Plugs, Bewegungsmelder, Fernbedienung etc. von verschiedenen Herstellern) Insofern kenne ich alle Eigenheiten und die Schnittstelle sehr gut.
    Die Vorteile vom raspbee (auch als Stick unter Windows lauffähig) sind einfach die weitestgehende Herstellerunabhängigkeit (muss halt nur zigbee Protokoll sein), die websockets (kein pull notwendig) und die laufende Weiterentwicklung (open source) durch den Hersteller und die community.
    Die Ansteuerung mache ich allerdings von ausserhalb, weil auch ich noch kein eigenes Modul schreiben kann. Im Prinzip habe ich eine Konfigurationsdatei, die die unique id eines Gerätes ( wichtig...nicht die Nummer des Gerätes nehmen, da die sich ändern kann wenn man das zb. gateway neu aufsetzt) mit den entsprechenden Objektnummern in ips verbindet. Funktioniert sehr gut, aber es ist immer manuelle Arbeit beim Hinzufügen eines neuen Gerätes notwendig. Allerdings sind dann die Funktionen, die die Geräte schalten, in einer Klasse zusammengefügt, sodass hier keine Arbeit mehr entsteht bei einem neuen Gerät.
    Ich wäre sehr daran interessiert an einem Modul mitzuarbeiten...vielleicht lerne ich dann ja auch einmal ein eigenes Modul zuschreiben.

  3. #3
    Registriert seit
    Jan 2010
    Ort
    Raum Bonn
    Beiträge
    263

    Hi, danke für deine Antwort. Zwei kurze Fragen dazu.....

    1. Kann mann über den Wegsacket auch Befehle an die Lampe loswerden? Alle Versuche von mir in dieser Richtung sind leider ohne erfolg gewesen. Aber vielleicht mach ich auch was falsch.

    2. Diese Unique ID wird aber vom Wegsacket nicht übermittelt oder sehe ich sie nur nicht? Ich bekomme nur die ID meiner ersten Lampe ID=1 meiner zweiten Lampe ID=2 usw,

    Gruß Martin
    Ipsymcon Unlimited -> IP Schnittstelle -> KNX BUS
    8 Schalt 8K / 6 Bin-Eingänge 8K / 1 8Fach Rolladenr / 17 Tast 8fach / 6 Tempsens / 1 Helligkeit / Rauchmelder mit KNX / 5 Präsenz / 4 IP Kameras / 1 Nabaztag / 640mA EIB PSU / Wallmount 19" Touch / Freebus User / Homematik / FS20

  4. #4
    Registriert seit
    May 2015
    Beiträge
    34

    zu 1) Nein, da geht nur "GET".
    "PUT","POST","DELETE" wie in Deinem Beispiel mit curl.

    zu 2) Wenn Du in deinem Browser zb. eingibst: "http://192.168.178.40:8080/MEINAPIKEY/lights/3/" kommt auch die unique id. Den Link kannst Du ja mit IPS Mitteln aufrufen.

    Ergebnis des Aufrufs:
    {"ctmax":454,"ctmin":153,"etag":"d38551217532bca45 34ba77bb680ab6b","hascolor":true,"manufacturername ":"Philips","modelid":"LTW001","name":"light_2","s tate":{"alert":"none","bri":48,"colormode":"ct","c t":366,"on":true,"reachable":true},"swversion":"5. 50.1.16698","type":"Color temperature light","uniqueid":"00:17:88:01:02:37:70:47-0b"}

    Gruss

  5. #5
    Registriert seit
    Nov 2017
    Ort
    Nähe Lübeck
    Beiträge
    113

    Hallo,

    ich habe seit gestern auch das RaspBEE Modul bzw. den Stick davon.

    Ich bin leider auch noch nicht bewandert, was Module an geht, würde mich aber mal dran versuchen - vielleicht klappt es ja. Wie habt Ihr Euch denn beim Websocket registriert, so dass Ihr die Änderungen mitgeteilt bekommt?

    Vielleicht schaffen wir das ja gemeinsam...

  6. #6
    Registriert seit
    Jan 2010
    Ort
    Raum Bonn
    Beiträge
    263

    Nun als erstes Installierst du dir im IPS das Wesocket Modul von Nall Chan

    IPSNetwork/WebSocketServer at master · Nall-chan/IPSNetwork · GitHub

    Danach erstellst du dir unter Splitter Instanzen eine Websocket Client Instanz. Diese wird dann auch einen ClientSocket erstellen.

    In der Websocket Instanz sind folgende Dinge einzustellen:

    URL: ws://IP-DES-RASPBEE:443

    Port 443 war für meinen der Richtige.

    Protokoll Version 13

    Alles weitere bleibt wie es ist.

    Der Client Socket verbindet sich dann halt auf die IP und Port 443

    Nun brauchst du noch eine REGISTER VARIABLE die du mit dem Websocket Client verbindest und der du ein Auswerte Script zuweist.


    Einen Anfang eines solchen Scripts habe ich ja am begin des Beitrags gepostet.

    Viel Erfolg!

    Gruß Martin
    Ipsymcon Unlimited -> IP Schnittstelle -> KNX BUS
    8 Schalt 8K / 6 Bin-Eingänge 8K / 1 8Fach Rolladenr / 17 Tast 8fach / 6 Tempsens / 1 Helligkeit / Rauchmelder mit KNX / 5 Präsenz / 4 IP Kameras / 1 Nabaztag / 640mA EIB PSU / Wallmount 19" Touch / Freebus User / Homematik / FS20

  7. #7
    Registriert seit
    Nov 2017
    Ort
    Nähe Lübeck
    Beiträge
    113

    Hi,

    ich bin glaub ich einfach zu doof zu - ich habe jetzt jede Menge gelesen und gedacht, die Basics verstanden zu haben, scheitere aber dann doch wieder schon am Anfang... :-(

    Ich habe folgenden kurzen Testcode als Aktionsskript zur Register-Variable:

    PHP-Code:
     // wenn das Skript von einer RegisterVariable-Instanz aus aufgerufen worden ist
    if ($_IPS['SENDER'] == "RegisterVariable")
    {
        
    // bereits im Puffer der Instanz vorhandene Daten in $data kopieren
        
    $data  RegVar_GetBuffer($_IPS['INSTANCE']);
        
    $json json_decode($_IPS['VALUE']);
        
    var_dump(json_decode($json));
    var_dump(json_decode($jsontrue));
        
        
    // Inhalt von $data im Puffer der RegisterVariable-Instanz speichern
    RegVar_SetBuffer($_IPS['INSTANCE'], $data);

    Allerdings geben mir beide var_dumps "NULL" aus, was ich einfach nicht verstehe.

    Ich habe zum Test einmal im Firefox einen WebSocket Client installiert und erhalte dort saubere json Nachrichten...

    Hast Du hier noch eine Idee für mich?

  8. #8
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    9,341

    Warum zweimal decode?
    Einmal reicht doch.
    PHP-Code:
    $json json_decode($_IPS['VALUE']);

    var_dump($json); 
    Michael
    on Win7VM (ESXi): I5, 24GB RAM, HW-RAID5, 3xSat | HW: CCU + 123 Geräte (506ch), EM1000, CUL, 1Wire, XBee, ELRO 433MHz, FritzBox Cable, Android Phone + Tablet, Samsung C-Serie TV +SamyGo-Ext, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, Rising AV, Piwik, RoundCube, Wordpress, WinLIRC, WHS2011, MediaPortal, XBMC

  9. #9
    Registriert seit
    Nov 2017
    Ort
    Nähe Lübeck
    Beiträge
    113

    Hallo,

    vielen Dank - aber irgendwie bin ich zu doof zu :-(

    ein

    PHP-Code:
    echo $_IPS['VALUE']; 
    bringt mir

    PHP-Code:
    27.09.201818:14:10 Register Variable |  k{"e":"changed","id":"3","r":"sensors","state":{"lastupdated":"2018-09-27T16:14:10","power":40},"t":"event"
    ein

    PHP-Code:
    $json json_decode($_IPS['VALUE']);

    var_dump($json); 
    führt zu

    PHP-Code:
    27.09.201818:15:41 Register Variable |  NULL 
    Das ist doch zum Mäusemelken.

    Ein Websocketclient unter Firefox bringt mir:

    PHP-Code:
    {
      
    "e""changed",
      
    "id""3",
      
    "r""sensors",
      
    "state": {
        
    "lastupdated""2018-09-27T16:16:47",
        
    "power"40
      
    },
      
    "t""event"

    Hast Du noch einen Tip für mich?

    Grüße
    Dominic

  10. #10
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    9,341

    Deine RegisterVariable hängt wohl am ClientSocket und nicht am WebSocket-Client.
    Michael
    on Win7VM (ESXi): I5, 24GB RAM, HW-RAID5, 3xSat | HW: CCU + 123 Geräte (506ch), EM1000, CUL, 1Wire, XBee, ELRO 433MHz, FritzBox Cable, Android Phone + Tablet, Samsung C-Serie TV +SamyGo-Ext, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, Rising AV, Piwik, RoundCube, Wordpress, WinLIRC, WHS2011, MediaPortal, XBMC

Ähnliche Themen

  1. Trådfri an Hue - Fernbedienung weiter nutzen?
    Von Titus im Forum Schaufenster
    Antworten: 2
    Letzter Beitrag: 07.11.17, 19:39
  2. IKEA Trådfri / Zigbee Lampen
    Von Fonzo im Forum Schaufenster
    Antworten: 0
    Letzter Beitrag: 28.03.17, 08:24
  3. Philips Hue mit RGB Slider ansteuern
    Von axelp im Forum Haustechnik
    Antworten: 5
    Letzter Beitrag: 20.04.13, 21:28
  4. lights & building
    Von UVoigi im Forum Off Topic
    Antworten: 5
    Letzter Beitrag: 28.03.10, 01:25

Stichworte