MQTT Protokoll Integrieren?

Hallo,

mit 4.3 RC5 kommt das MQTT-Modul nicht mehr zurecht:

Fatal error: Call to a member function receive() on null in /var/lib/symcon/modules/IPS_MQTT/MQTT_clienet/module.php on line 247

Die Schnittestelle wurde ständig geöffnet und geschlossen, lies sich nicht deaktivieren. IPS war bei 30 Threads an der Grenze (sonst ist dort ‚himmlische‘ Ruhe). Befehle an pchk kamen da nicht mehr durch. Es half aber, das Modul erst mal zu löschen.
Im nächsten Schritt werde ich das Modul erneut laden und mir mal die Datei ansehen.

Grüße, Gerhard

Seit der Version 4.3 bekomme ich immer folgende Fehlermeldung:

IPS-Err-PHP  2017-07-30 21:30:19.828  Warning: Cannot auto-convert value for parameter VariableValue
   Error in Script /var/lib/symcon/scripts/15643.ips.php on Line 55

An was könnte das liegen?

Gruß Tobias

Und was steht in Zeile 55 des Skripts?

Bei dem Script handelt es sich um „MQTT Handler“

<?

$type_arr = array(
    'power' => array( 'vartype' => 0, 'on' => 1, 'off' => 0 ),
    'power1' => array( 'vartype' => 0, 'on' => 1, 'off' => 0 ),
    'power2' => array( 'vartype' => 0, 'on' => 1, 'off' => 0 ),
    'power3' => array( 'vartype' => 0, 'on' => 1, 'off' => 0 ),
    'power4' => array( 'vartype' => 0, 'on' => 1, 'off' => 0 ),
    'result' => array( 'vartype' => 3 ),
    'state' => array( 'vartype' => 3 ),
	'sensors' => array( 'vartype' => 3 ), 
);

    IPS_LogMessage(IPS_GetName($_IPS['SELF'])." ".$_IPS['SELF'],print_r($_IPS,true));
if( $_IPS['SENDER']=='MQTT_GET_PAYLOAD' ) {
    $msg = $_IPS['MSG'];
    $topic = explode( "/", $_IPS['TOPIC'] );
    $id_parent = 0;
    $last = count($topic) - 1;
    $type = strtolower( $topic[$last] );
    
    if( array_key_exists( $type , $type_arr )) {
        $msg_lower = strtolower( $msg );
        IPS_LogMessage(IPS_GetName($_IPS['SELF'])." ".$_IPS['SELF'],print_r($type,true));
        IPS_LogMessage(IPS_GetName($_IPS['SELF'])." ".$_IPS['SELF'],print_r($type_arr[$type],true));
        if( array_key_exists( $msg_lower, $type_arr[$type] )) {
            $msg = $type_arr[$type][$msg_lower];
        }
        $type = $type_arr[$type]['vartype'];
    }
    
    switch( $type ) {
        case '0':
        case '1':
        case '2':
        case '3':
            foreach($topic as $i => $vname) {
                $id = @IPS_GetObjectIDByName($vname, $id_parent);
                if( $id === false ) {
                    //if($last == $i) {
                       //    $id = $id_parent;
                    //} elseif( $last-1 == $i ) {
                    if( $i == $last ) {
                        $id = IPS_CreateVariable($type);      
                        IPS_SetName($id, $vname); 
                        IPS_SetParent($id, $id_parent);
                    } else {
                        $id = IPS_CreateCategory();      
                        IPS_SetName($id, $vname); 
                        IPS_SetParent($id, $id_parent);
                    }
                }
                $id_parent = $id;
            }
            SetValue( $id, $msg ); 
            break;
        default:
            IPS_LogMessage(IPS_GetName($_IPS['SELF'])." ".$_IPS['SELF'],"Topic '".$_IPS['TOPIC']. "' endhält keine Typinfo");        
    }
}

if($_IPS['SENDER']=='MQTT_CONNECT') {
    $topic = "#";                                                        
    MQTT_Subscribe(31016 /*[MQTT Client]*/, $topic, 0);      // ID Anpassen !!!
}

?>

Zeile 55 ist

 SetValue( $id, $msg ); 

Und was ist $msg für ein Typ?


var_dump($msg);

Und in welchen Variablentyp in IP-Symcon soll dann geschrieben werden?

Hallo,

ich wollte nur berichten, dass die MQTT Integration mit dem Modul von Thomas und der dort hinterlegen handler.php auch iim Zusammenspiel mit ESPEasy funktioniert.

Bei ESEasy habe ich als MQTT Protokoll openhab gewählt. Mann muss da allerdings des String anpassen, das kein vorangestellter „/“ erscheint. Sonst werden die Variablen immer neu angelegt.

Vielen Dank für das Modul. Auf der Basis lassen sich wohl auch die S20 Sonoff Steckdosen einbinden, auch mit funktionierendem Taster. Das steht mir aber noch bevor.

Gruß
Christian

Hallo,

das MQTT-Modul von Thomas funktioniert auch in Verbindung mit einem einfachen esp-01. Daran hängt (bisher) ein 1-wire Sensor DS18s20. Dessen Werte liefert ein installierter Publisher über Mosquito an IPS:

esp-dallas.JPG

Grüße, Gerhard

Hallo,

wenn mein kleiner ESP-01 keinen Strom mehr bekommt (Stecker gezogen), spielt der MQTT-Client verrückt - möchte wohl Daten abfragen und da ist niemand. Die Client Schnittstelle wird auch ständig geöffnet und geschlossen - IPS reagiert nur schlecht auf Eingaben. 30 Threads sind dann noch zu wenig - sonst haben die wenig zu tun.
Ich habe MQTT eigentlich so verstanden, dass die Temperatur über den esp01 an den Broker (Mosquitto) gesendet wird. Der verteilt dann an die Subscriber (MQTT-Client). Wenn der Broker nichts liefert, hat der Subscriber nichts zu tun. Ein System (bis zum Absturz) lahmlegen sollte da eigentlich nicht vorkommen.

Grüße, Gerhard

Hallo,

Nachtrag zu den Ds18s20:
kann inzwischen 7 Sensoren abfragen.
esp-dallas-7.JPG
Die ID wird mit ins Topic übernommen. So kann ich jeden Sensor gezielt ansprechen.
esp-01-arduino.JPG
Abschalten: Client Socket, MQTT Client, Esp01. Dann kommen keine Abstürze. Ist aber noch nicht die Lösung. Der MQTT Client muss da noch toleranter werden.

Den MQTT von Kai habe ich nicht getestet, der legt mir zu viel selbst an…
Grüße, Gerhard

Ich kann nur sehr empfehlen es mal mit Node-Red zu probieren. Wer sich mit IOT beschäftigt sollte es allen Vorurteilen gegenüber graphischen Programmierumgebungen zum trotz, definitiv ausprobieren.

It´s that simple:

Unbenannt.PNG

Bei mir läuft es auch bei anderen Dingen und großen Skripten super stabil. Dieses Tool spart bei simplen Dingen einfach so unglaublich viel Zeit, die man dann besser in komplexe IPS Steuerungen stecken kann :wink:

Es ist einfach unglaublich wieviele Module es auf NpmJs gibt und das hat mir so manches Mal einiges an Arbeit erspart. Wem das nicht reicht, der programmiert dann einfach seine eigenen Module :slight_smile:

Hoffe es hilft :wink:

Wie hast Du das am besten verknüpft bzw. wie greifst Du auf die Node-Red Oberfläche zu, in einer HTMLBox und rufst Du das extern auf? Wie holst Du Dir die Variablen von IP-Symcon nach Nod-Red?

Ja ich hoffe auch das Symcon endlich MQTT tauglich wird. Und zwar so das alle Werte auch zum MQTT gepushed wird und nicht nur gelesen!

Aktuell nutze bei ein paar Sachen schon Node-Blue von Homegear. Da ist die Latenz noch etwas besser als bei Node-Red weil es komplett integriert und und Grundwerte nicht erst durch den MQTT müssen.

Ich habe es so gelöst:

https://www.lxccu.com/manuals:symcon:mqtt-integration#symcon

Funktioniert sehr gut, ich würde nur verschiedene Dienste einzeln abwickelt mit jeweils eigenem Antwortscript…

Naja das betrifft ja nur die Homematic Geräte. Mir geht es aber um die Ganzen SymconExtensions. Wenn es mit nur um de Homematic Geräte geht, dann habe ich auch eine Lösung -> Homegear. Imho viel besser als LXCCU oder YAHM.

? wie kommst du drauf das es in der Anleitung um Homematic Geräten geht ?

Die Anleitung beschreibt, wie man MQTT Abos in IPS verarbeiten kann…

Hallo,

auch ich würde mir eine Native MQTT Unterstützung in Symcon wünschen.

Grüße
xamino

Hallo,

ich arbeite in der Automobilindustrie und wir wurden mal gefragt, welchen namhaften Kutschenhersteller kennt ihr …:o

Jetzt zu Symcon: welcher namhafte Systemintegrator kennt man in der Fachpresse?

Ich provoziere bewußt. Ich will was bewegen. Konkret in Richtung MQTT- Integration in Symcon.

Über eine Stellungname zu MQTT seitens Symcon würde ich mich freuen.:rolleyes:

Gruß Joachim

Hallo,

wir würden uns auch über MQTT freuen. Auch der zukünftige Standart Industrie 4.0 - OPC UA wäre toll zu haben.
Ansonsten sind wir mit Symcon sehr zufrieden :loveips:

Gruß Peri

+1 für eine native MQTT Integration in IP-Symcon

Sent from my iPhone using Tapatalk

Nachdem hier ( Was macht ihr mit MQTT und wie habt ihr’s integriert? ) ja so wahnsinnig viel tolle und professionelle Hardware aufgezählt wurde, welche MQTT nutzt, ist es bestimmt unglaublich wirtschaftlich für ein Unternehmen dieses Protokoll zu unterstützen.

Michael
Edit: Achtung Ironie! Dieser Beitrag wurde geschrieben nachdem es zwei Tage lang überhaupt keine Reaktion auf den oben verlinken Thema gab.