+ Antworten
Seite 1 von 9 1 2 3 ... LetzteLetzte
Ergebnis 1 bis 10 von 89
  1. #1
    Registriert seit
    Dec 2010
    Beiträge
    48

    Question MQTT Anbindung / oder externe Daten per Push in Symcon bekommen

    Hallo,

    Ich hab schon gesucht ob es vielleicht eine MQTT Anbindung fuer Symcon gibt, aber das scheint nicht der Fall zu zein. Waere durchaus insteressant als zukuenftiges Modul einen MQTT Client als Modul zu inkludieren, der auf gewisse topics subscriben kann und dann die Inhalte direkt in Variablen uebernimmt. Dies scheint derzeit aber gar nicht moeglich zu sein.

    Ich hab eine Menge an Daten von Selbstbau-Arduino-Funksensoren die ich nun gerne in Symcon bringen wuerde, allerdings hab ich keine sinnvolle Methode gefunden externe Daten per Push in Symcon reinzubringen. Da es keine direkte MQTT Anbindung gibt war meine erste Idee die Daten per python script als mqtt client subscriber ueber das IP Gateway an KNX zu senden; wodurch die dann auch in Symcon ankommen wuerden; allerdings stellt das auch eine nicht zu unterschaetzende Belastung des (ja doch sehr langsamen) KNX Bus dar.

    Eine naechste, sehr holprige, Idee war ein User-PHP Script in Symcon aufzurufen, und dort die Variablen und Werte als GET Parameter zu uebergeben. Das waere relativ einfach umzusetzen, aber ist doch eher unschoen.

    Es gibt sicher irgendeine elegantere Moeglichkeit externe Daten per Push (kein Polling durch Symcon) nach Symcon zu bekommen -- freue mich ueber alle anderen Loesungsvorschlaege!

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

    MQTT kenne ich zwar nicht, aber die Frage wie man Daten nach IPS bekommt; wurde die letzten Tage häufiger gestellt.
    Native gibt es JSON-RPC und SOAP (veraltet); sowie noch min. zwei andere Wege (ohne jetzt jeden I/O-Socket in IPS zu zählen).
    Doku zu JSON-RPC und SOAP:
    Datenaustausch — IP-Symcon :: Automatisierungssoftware

    Hier mal ein Auszug aus dem Forum:
    JSON-RPC über Python
    Befehl über LAN an IPS senden

    Oder ganz banal mit einem ServerSocket, RegisterVariable und PHP-Script in IPS, welches ankommen Daten auf Port XYZ empfängt, zerlegt und in Variablen schreibt.
    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

  3. #3
    Registriert seit
    Jun 2014
    Ort
    Ostwürttemberg / Ostalb
    Beiträge
    22

    Hallo,

    Danke erst mal an Obstler42 für die Eröffnung dieses Threads.

    Aus meiner Sicht ist MQTT in jedem Fall interessant da es in vielen Beiträgen als das Protokoll des Internet of Things genannt wird.

    Gibt es bei den Machern von IP Symcon hier entsprechende Überlegungen?


    Grüße

  4. #4
    Registriert seit
    Dec 2010
    Beiträge
    48

    Ich hab inzwischen mal an Anlehnung an das oben verlinkte Python script etwas selbst gebastelt per JSON-RPC SetValue Interface, und in mqttwarn integriert. Es funktioniert, allerdings sehr muehsam da man jede einzelne IPS Variable per id hardcoded hinzufuegen muss.

    Aus meiner Sicht perfekt waere ein MQTT Interface in Symcon, wo man wie bei anderen Interfaces auch direkt topics <-> variablen hinzufuegen kann. Der Listener waere im Prinzip einfach ein mqtt subscriber fuer die relevanten topics, der das dann direkt in die entsprechende Variable schreibt -- analog zu den bestehenden interfaces.

    Erweiterbar waere das natuerlich auch noch in die andere Richtung per publishing, aber ein wirklich wichtiger, erster grosser Schritt waere ein Listener/Subscriber interface.

    Open Source Beispiels-code zu dem Thema gibt es genug, zB auch beim mqtt interface von OpenHAB.

    Ich wuerde mir hier wirklich eine zukuenftige direkte Integration in IPS wuenschen, und stehe auch zur Verfuegung fuer weitergehende Detaildiskussionen oder auch RealWorld tests, da bei mir mqtt sehr aktiv im Einsatz ist (fuer eine Vielzahl an arduino based funksensoren).

  5. #5
    Registriert seit
    Dec 2010
    Beiträge
    48

    Zitat Zitat von ansgar75 Beitrag anzeigen
    Hallo,
    Aus meiner Sicht ist MQTT in jedem Fall interessant da es in vielen Beiträgen als das Protokoll des Internet of Things genannt wird.

    Gibt es bei den Machern von IP Symcon hier entsprechende Überlegungen?


    Grüße
    Gibt es vielleicht irgendwelche Updates zu dem Thema MQTT Integration bei Symcon?

  6. #6
    Registriert seit
    Sep 2005
    Ort
    Stade
    Beiträge
    6,609

    Du kannst ja in deinem Script unbekannte Variablen direkt anlegen lassen statt sie hartcodiert zu hinterlegen. Das wäre dann so eine Art Automatismus, der dir vorschwebt. Ist nur doof für Leite mit einer kleinen Lizenz

    IPS_VariableExists — IP-Symcon :: Automatisierungssoftware
    IPS_CreateVariable — IP-Symcon :: Automatisierungssoftware


    Gruß,

    Toni
    Geändert von Tonic1024 (14.04.15 um 11:34 Uhr)

  7. #7
    Registriert seit
    Dec 2010
    Beiträge
    48

    Zitat Zitat von Tonic1024 Beitrag anzeigen
    Du kannst ja in deinem Script unbekannte Variablen direkt anlegen lassen statt sie hartcodiert zu hinterlegen. Das wäre dann so eine Art Automatismus, der dir vorschwebt. Ist nur doof für Leite mit einer kleinen Lizenz
    ja ich hab auch schon eine hackloesung ueber json/rpc api, aber da ist halt immer an mehreren Seiten Bastelarbeit notwendig.

    Ein MQTT Listener/Configurator in Symcon waere die perfekte Anbindung fuer beliebige externe Devicedaten, und koennte dann einfach in Symcon die Adressen konfigurieren.

  8. #8
    Registriert seit
    Sep 2005
    Ort
    Stade
    Beiträge
    6,609

    Es gibt eine API. Du darfst dich gern austoben. Alles was das Team damit programmiert kannst du auch damit programmieren. die JSON Schnittstelle ist ein guter Ansatz. Verwende ich auch am liebsten.

    Toni

  9. #9
    Registriert seit
    Aug 2013
    Ort
    Meerane
    Beiträge
    11

    Standard SYMCON + phpMQTT + mosquitto MQTT broker

    Hallo zusammen,
    hab phpMQTT (bluerhinos/phpMQTT · GitHub) als publisher/subscriber und mosquitto MQTT (An Open Source MQTT v3.1 Broker) broker laufen.

    Hier wird von einem 1-wire (DS18B20) die Temperatur "published", Nachrichtenformat Base64 encoded JSON:

    PHP-Code:
    <?
    require("\..\webfront\user\phpMQTT\phpMQTT.php");
    define("MYSQL_DATE_FORMAT","Y-m-d H:i:s");

    //test, soll noch weiter automatisiert werden
    $arr['ts'] = date(MYSQL_DATE_FORMAT);
    $arr['uuid'] = "44000005BFB92228"// 1-wire device id, // todo: assign automatically by script/function
    $arr['value'] = GetValue(15966);
    $arr['unit'] = "degree celsius";
    MQTTHelper::sendMQTTMessage("devices/onewire/tmex/".$arr['uuid'], json_encode($arr));

    class 
    MQTTHelper {
        
    /**
         * -----------------------------------------------------------------------------
         */
        
    public static function sendMQTTMessage($topic$message) {
            
    $mqtt = new phpMQTT("whz-aiis-work"1883"SYMCON01"); //Change client name to something unique
           
    if ($mqtt->connect()) {
                
    //$mqtt->publish($topic, base64_encode($message),0); // QoS 0
                
    $mqtt->publish($topic$message,0);
                
    $mqtt->close();
            }
        }
    }
    ?>

    Und hier das Abonnement eines Topic:


    PHP-Code:
    <?
    /**
     * IPS MQTT SUBSCRIBER
     */
    require("\..\webfront\user\phpMQTT\phpMQTT.php");

    ini_set('max_execution_time'0); // in seconds, 0 ... infinite

    subscribeMQTT('IPS/');


    function 
    subscribeMQTT($topic) {

        echo 
    "Connecting to";
        
    $mqtt = new phpMQTT("whz-aiis-work"1883"phpMQTTSymconClient"); //Change client name to something unique
        
    if(!$mqtt->connect()){
            exit(
    1);
        }
        
    $topics[$topic] = array("qos"=>0"function"=>"procmsg");
        
    $mqtt->subscribe($topics,0);
        echo 
    "Subscribed to ";
        while(
    $mqtt->proc()){
        }
        
    $mqtt->close();
    }

    /**
     * --------------------------------------------------------------------------
     *
     * --------------------------------------------------------------------------
     */
    function procmsg($topic ,$msg){
        echo 
    "[MQTTHelper] Msg Recieved: ".date("r")."\nTopic:{$topic}\n$msg\n";
        
    SetValue(26366 /*[MQTT\topic]*/$topic);
        
    SetValue(15655 /*[MQTT\message]*/$msg);
        if(
    strcmp($topic,"IPS/")) {
            
    //handleIPSCMD($msg);
        
    }
    }
    ?>
    Nachteil dieser Lösung ist, dass mittels ini_set('max_execution_time', 0); für das Script die Laufzeitbeschränkung aufgehoben werden muss, damit es stets im Hintergrund seine Arbeit verrichtet. Alternativ könnte das Script periodisch gestartet werden, um bspw. Retained Messages oder QoS>0 empfangen zu können, dann kann die max_execution_time > 0 gesetzt bzw. beim Standardwert belassen werden.
    Vielleicht hat noch jemand eine bessere Lösung!?

    VG,
    Marek :-)
    Geändert von marekre (25.06.15 um 14:45 Uhr)

  10. #10
    Registriert seit
    Aug 2011
    Beiträge
    970

    Hallo Marek,

    arbeite mich gerade in MQTT vor.
    Hab aber noch meine Probleme.

    Versuchsweise nutze ich diesen public Borker.
    Mit dem (zu Versuchszwecken) ausgedünnten Script von Dir kann ich Massages einwandfrei verschicken.
    PHP-Code:
    <?
    require("phpMQTT.php");

    $topic="test1234/ersteMsg";
    $msg="Hallo Welt!";

    MQTTHelper::sendMQTTMessage($topic$msg); 

    class 
    MQTTHelper {
        public static function 
    sendMQTTMessage($topic$message) {
            
    $mqtt = new phpMQTT("broker.mqttdashboard.com"1883"IPS"); 
           if (
    $mqtt->connect()) {
                
    $mqtt->publish($topic$message,0);
                
    $mqtt->close();
            }
        }
    }
    ?>
    Im Dashboard von dem public Broker werden sie auch korrekt angezeigt.
    Name:  MQTT_msg1.JPG
Hits: 2530
Größe:  39.9 KB
    Mit dem Empfangen (subscribe) tue ich mich schwer und finde den Fehler nicht.
    Auch hier dein (vereinfachtes) Script:
    PHP-Code:
    <?
    require("phpMQTT.php");

    ini_set('max_execution_time'30); // in seconds, 0 ... infinite

    subscribeMQTT('test1234/ersteMsg');

    function 
    subscribeMQTT($topic) {

        echo 
    "Connecting to";
        
    $mqtt = new phpMQTT("broker.mqttdashboard.com"1883"IPS"); 
        if(!
    $mqtt->connect()){
            exit(
    1);
        }
        
    $topics[$topic] = array("qos"=>0"function"=>"procmsg");
        
    $mqtt->subscribe($topics,0);
        echo 
    "Subscribed to ";
        while(
    $mqtt->proc()){
        }
        
    $mqtt->close();
    }

    function 
    procmsg($topic ,$msg){
        echo 
    "[MQTTHelper] Msg Recieved: ".date("r")."\nTopic:{$topic}\n$msg\n";
          
    SetValue(59715 /*[Kann theoretisch weg\phpMQTT subscribe\topic]*/$topic);
          
    SetValue(11622 /*[Kann theoretisch weg\phpMQTT subscribe\msg]*/$msg);
        if(
    strcmp($topic,"BestimmtesEreignis")) {
            
    //handleIPSCMD($msg);
        
    }
    }
    ?>
    Entweder verschickt der public broker meine Message nicht weiter oder es liegt irgendwie an dem codieren des topic? Wenn ich als abonierte Topics z.B. alle zulasse (#) oder z.b. so was triviales "test" empfängt er diverse von fremden versendern.
    Wenn ich eine Massage über die publish-Funktion geannten Brokers verschicke geht es auch richtig. Sehe ich den Wald vor lauter Bäumen nicht?


    Gruß
    hardlog
    IPS 5.0unlim, 3x W&T WebIO12, diverse 1wire (LAN), FritzOS 7, z-Wave, DMX/ArtNet-Node, M-Bus, ESP8266 via MQTT

    "Prognosen sind schwierig, besonders wenn sie die Zukunft betreffen" N. Bohr

Ähnliche Themen

  1. iPhone Push Notification von IP-Symcon
    Von xxxchris im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 99
    Letzter Beitrag: 24.10.12, 20:19
  2. W-LAN : externe Antenne oder Repeater ?
    Von roadsterhh im Forum Alles rund um den PC
    Antworten: 46
    Letzter Beitrag: 22.05.12, 08:41
  3. externe Log-Daten importieren
    Von Raketenschnecke im Forum Skripte, PHP, SQL
    Antworten: 20
    Letzter Beitrag: 22.10.11, 12:28
  4. DUG Tool - externe Daten hínzufügen
    Von stevih im Forum Skripte, PHP, SQL
    Antworten: 0
    Letzter Beitrag: 14.12.09, 22:21