Ankündigung

Einklappen
Keine Ankündigung bisher.

MQTT API Server und MQTT Clients - LBS19001051 - LBS19001054

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • simonlaessig
    antwortet
    Hab mal eine Frage zum MQTT Publish Client, wenn ich Topic und Payload zu IOBroker schicke schreibt er alles einwandfrei in das "Objekt" aber führt es nicht aus. Es geht nur wenn ich den umweg über z.b. NodeRed gehe und es dort von value in ein Command umwandel und dann ins "Objekt" schreibe. Kann ich irgendwie definieren ob der Publish Client ein Value schickt oder Command?

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Zitat von kordnas Beitrag anzeigen
    Okay, ich wusste nicht, dass das Backup derartig gründlich ist
    Das lag dann nicht am Backup, denn PHP 5.4 ist wohl Standard bei CentOS7.
    Erst das EDOMI Installationsskript macht das Update auf PHP7.2 und installiert das REMI-Repo.
    Und da ist vermutlich was schiefgelaufen. Was weiß ich auch nicht, da auch die Option 2 die notwendigen CentOS7 Pakete installiert (also z.B. PHP7 und Remi-Repo)

    Ich würde auf jeden Fall empfehlen das glatt zu ziehen, dass jetzt EDOMI wirklich mit PHP5.x läuft. Dann sonst wirst du auch mit vielen anderen LBS Probleme bekommen, die nur noch mit PHP7.x laufen.

    Einen Kommentar schreiben:


  • kordnas
    antwortet
    Okay, ich wusste nicht, dass das Backup derartig gründlich ist... Aber selbst da hab ich den richtigen Weg erwischt :-)

    Nach Installation von CentOS hab ich als nächstes das edomi Installationsskript ausgeführt (mit Option zwei, weiß nicht mehr genau wie das hieß, aber irgendwas mit lokal am Ende). Dann hab ich das Backup ins Backupverzeichnis kopiert und dann über die edomi Oberfläche die Wiederherstellung angestoßen

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Hast du denn nach der Installation von CentOS7 auch EDOMI per Installskript installiert oder hast du nur das EDOMI Backup wieder draufgespielt?
    Wenn du letzteres gemacht hast, dann biste auf PHP5.4 gelandet und dadurch fehlt auch das remi-Repo, welches durch die EDOMI Installationsroutine installiert wird.

    Zitat von kordnas Beitrag anzeigen
    Es gab während der Installation nicht viele Stellen, an denen ich hätte (falsch) abbiegen können
    Nicht viele, aber mindestens eine.
    Nur CentOS7 zu installieren und dann ein EDOMI Backup einzuspielen reicht nicht. Das funktioniert bei einer kompletten Neuinstallation vermutlich noch nicht mal mit einem Projekt das vorher auf CentOS7 mit PHP7 lief, da die OS spezifischen Anpassungen, die das EDOMI Installskript macht, nicht ausgeführt werden.

    Einen Kommentar schreiben:


  • kordnas
    antwortet
    Es gab während der Installation nicht viele Stellen, an denen ich hätte (falsch) abbiegen können und keine, wo PHP am Wegweiser stand. CentOS 7 wird wohl auch standardmäßig mit PHP 5.4 ausgeliefert. Ich lasse das jetzt erst mal so und behalte (hoffentlich) im Hinterkopf, dass ich bei LBS dann mal auf PHP 7 gehe.

    Danke dir :-)

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Zitat von kordnas Beitrag anzeigen
    zunächst das Remi Repo hinzugefügt
    Das habe ich mal in der Anleitung ergänzt.

    Den Rest kann ich nicht nachvollziehen, da es sowohl bei mir und offensichtlich auch bei vielen anderen funktioniert.

    Wenn bei dir eine PHP Version 5.x rauskommt, dann ist bei deiner Installation vermutlich was schiefgelaufen:

    So sieht das bei mir aus:

    Code:
    [SIZE=16px][root@edomi-test ~]# php -a
    Interactive shell
    
    php > Print(phpversion());
    [COLOR=#e74c3c][B]7.2.34[/B][/COLOR][/SIZE]

    Einen Kommentar schreiben:


  • kordnas
    antwortet
    Ich bin vorangekommen...

    Ich habe wie unter https://der-linux-admin.de/2015/04/c...-installieren/ beschrieben zunächst das Remi Repo hinzugefügt

    Und dann ging in der Tat
    Code:
    yum -y install php-pecl-mosquitto
    Die Fehler, dass MosquittoClient nicht gefunden wird sind jetzt auch weg. In Modul 19001051 hab ich allerdings noch
    Code:
    Call to undefined method mysqli_result::fetch_all()
    Die Leute auf Stackoverflow behaupten, dass das irgendwie damit zusammenhängt, dass die Extension/Treiber mysqldn nicht installiert ist und das Array auf andere Art und Weise aufzubauen ohnehin viel besser ist.
    https://stackoverflow.com/questions/...valid-function

    Verstanden warum habe ich nicht, aber folgende Änderung funktioniert

    Code:
    // $mKOs = $result->fetch_all(MYSQLI_ASSOC);
    $mKOs = array();
    while($row = $result->fetch_assoc())
        $mKOs[] = $row;
    Zuletzt geändert von kordnas; 21.03.2021, 21:16.

    Einen Kommentar schreiben:


  • kordnas
    antwortet
    Zitat von jonofe Beitrag anzeigen
    Zitat von kordnas Beitrag anzeigen
    inaktiven PHP Konsole.



    Was genau ist das?
    Die inTERaktive PHP Konsole. Kommt man mit
    Code:
    php -a
    rein

    Zitat von jonofe Beitrag anzeigen
    yum -y install php-pecl-mosquitto
    Gleiches Ergebnis
    Code:
    [root@edomi ~]# yum -y install php-pecl-mosquitto
    Geladene Plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    * base: mirror.netcologne.de
    * epel: mirror.netcologne.de
    * extras: centos.mirror.iphh.net
    * updates: mirror.plustech.de
    Kein Paket php-pecl-mosquitto verfügbar.
    Fehler: Nichts zu tun
    Das sind meine yum Repos
    Code:
    [root@edomi ~]# yum repolist
    Geladene Plugins: fastestmirror
    Loading mirror speeds from cached hostfile
    * base: mirror.netcologne.de
    * epel: mirror.netcologne.de
    * extras: centos.mirror.iphh.net
    * updates: mirror.plustech.de
    Repo-ID Repo-Name: Status
    base/7/x86_64 CentOS-7 - Base 10.072
    epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13.560
    extras/7/x86_64 CentOS-7 - Extras 460
    updates/7/x86_64 CentOS-7 - Updates 1.898
    repolist: 25.990

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Zitat von kordnas Beitrag anzeigen
    Falls du das aus der PHP Version gelesen hast
    Ja genau.

    Zitat von kordnas Beitrag anzeigen
    inaktiven PHP Konsole.
    Was genau ist das?

    Mach mal nur ein:

    Code:
    yum -y install php-pecl-mosquitto

    Einen Kommentar schreiben:


  • kordnas
    antwortet
    Ich bin der festen Überzeugung CentOS 7 installiert zu haben, nicht?

    Code:
    centos-release-7-6.1810.2.el7.centos.x86_64
    Falls du das aus der PHP Version gelesen hast, die hab ich aus der inaktiven PHP Konsole.

    Code:
    php -a
    Code:
    Print(phpversion());
    Zuletzt geändert von kordnas; 21.03.2021, 15:09.

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Zitat von kordnas Beitrag anzeigen
    Vorschläge? Danke!! :-)
    Auf CentOS7 updaten, da CentOS6.5 nicht mehr unterstützt wird und auch die Repos nicht mehr offiziell verfügbar sind.

    Einen Kommentar schreiben:


  • kordnas
    antwortet
    Da es meine SSD irgendwie zerlegt hatte, musste ich das System neu installieren. Das Backup von edomi hatte ich natürlich, aber das darunterliegende System ist jetzt also neu. Und jetzt habe ich Probleme mit den Bausteinen, weil der Mosquitto Client nicht gefunden wird, z.B.

    Code:
    Datei: /usr/local/edomi/www/data/liveproject/lbs/EXE19001052.php | Fehlercode: 1 | Zeile: 100 | Class 'Mosquitto\Client' not found FATALERROR
    Bei der letzten Installation Mitte/Ende des letzten Jahres hatte ich das nicht soweit ich mich erinnern kann und es ist die gleiche CentOS Version

    Code:
    centos-release-7-6.1810.2.el7.centos.x86_64
    Die Vorbereitungen, die im LBS 19001051 beschrieben sind habe ich durchgeführt

    Mosquitto an sich ist installiert, obwohl ich gar nicht sicher bin, ob ich das gebraucht hätte, weil der Broker woanders läuft

    Wenn ich die Nachinstallation der PHP Extension manuell von der Kommandozeile aus anstoße
    Code:
    yum -y install php-pecl-mosquitto.x86_64
    bekomme ich die Nachricht, dass das Paket nicht gefunden wurde.

    Die Datei
    Code:
    /usr/local/edomi/www/data/log/CUSTOMLOG_MQTT_Publish_Server-EXEC.log
    gibt es noch nicht, also wohl auch keine Logausgabe vom EXEC Teil. Die Logs der LBS 19001051 und 19001052 enthalten nur Debug Nachrichten

    PHP Version ist 5.4.16
    Edomi Version 2.03 (das Backup war von 2.02)
    Die neuesten Versionen der Bausteine habe ich hochgeladen und das Projekt aktiviert
    Den Server hab ich nach den Nachinstallationen auch mal neugestartet

    Vorschläge? Danke!! :-)

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    zu 1) brauchst du nur, wenn deinen MQTT Broker von außen Zugreifbar machen willst oder wenn du einen Reverse Proxy (z.B. für Alexa, Spotify, Home-Connect) betreibst.

    zu 2) Kann man machen, muss man aber nicht, wenn der MQTT Broker nur intern läuft. Wenn man es macht, dann kann man im Gegensatz zu 1) auch self-signed certificates verwenden. Gibts verschiedene Anleitungen dazu, z.B. HIER

    zu 3) Brauch man für EDOMI nicht. Wenn du andere MQTT Clients (insbesondere im Browser) nutzt, die MQTT via Websockts verwenden, dann kann man das aktivieren. Eine gute Erklärung gibt es hier:

    Einen Kommentar schreiben:


  • lio123
    antwortet
    vento66 Danke! Das hat super und auf Anhieb geklappt!

    Desweiteren bin ich wie hier beschrieben vorgegangen:
    https://www.digitalocean.com/communi...er-on-centos-7
    Dh Benutzername und Passwort habe ich bereits vergeben. Verbindung klappt.

    Wie ist's mit den Sicherheitsmechanismen:
    1) Certbot, Certbot Automatic Renewals

    2) MQTT SSL

    3) MQTT Over Websockets

    Braucht's das?


    Ich bin nun angefixt!!

    Vielen Dank und Grüße,
    Lio

    Einen Kommentar schreiben:


  • vento66
    antwortet
    Bei mit funktioniert es so:


    PHP-Code:
    yum -y install epel-release
    yum 
    -y install mosquitto
    systemctl enable mosquitto
    systemctl start mosquitto 

    Einen Kommentar schreiben:

Lädt...
X