Ankündigung

Einklappen

PLUGINS

Bitte im Titel immer zuerst den Namen des Plugin hinschreiben
Mehr anzeigen
Weniger anzeigen

Miele-MQTT => Loxberry MQTT

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

  • #91
    also, ich seh hier nicht wirklich was in der Config, das mir dazu helfen sollte.

    Inhalt der "miele-config2.php"
    Code:
    <?php
    return array(
    'access_token'=> 'CH_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxb',
    'refresh_token'=> 'CH_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx9',
    'email'=> 'xxx@gmail.com',
    'client_id'=> 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    'client_secret'=> 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    'code'=> 'CH_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx9',
    'country'=> 'de-CH',
    'mosquitto_host'=> 'localhost',
    'mosquitto_user'=> 'loxberry',
    'mosquitto_pass'=> 'xxxx',
    'topicbase'=> '/miele/'
    );
    ?>

    Kommentar


    • #92
      der 2er ist mir aufgefallen im Dateinamen der Config und eventuell greift dann das File gar nicht
      Grüße Alex

      Kommentar


      • #93
        Macht’s mal einen Issue beim Script-Autor bei GitHub, vielleicht ist das mit dem Duplizieren des Topics einfach ein Bug.
        LoxBerry/Plugin Support: Wenn du einen Begriff in meiner Antwort nicht auf Anhieb verstehst, bitte nicht gleich rückfragen, sondern erst die Suche im LoxWiki und bei Google bemühen.
        PN/PM: Ich bevorzuge die Beantwortung von Fragen in öffentlichen Threads, wo andere mithelfen und mitprofitieren können. Herzlichen Dank!

        Kommentar


        • pedror
          pedror kommentierte
          Kommentar bearbeiten
          Wie von dir vermutet, handelt es sich um einen Fehler im Script. Issue wurde bereits umgesetzt und eine neue Version ist verfügbar, die den Fehler nicht mehr aufzeigt. Thx für den Tipp, auf den ich ja auch selber hätte kommen können...

      • #94
        so, der Entwickler hat auch gleich den anderen Fehler gefixt mit dem Aufruf der Bluerhinos Library...

        Und jetzt noch was...

        Ich habe versucht, einen Cronjob zu erstellen, aber ich scheitere wohl daran, dass ich nicht ganz verstehe, warum es nicht geht...

        Code:
        #!/bin/php
        
        # This is a sample cron file. According to it's name it will go to
        # ~/system/cron/cron.hourly. You may also let your Pluginscript create a
        # symbolic link dynamically in ~/system/cron/cron.10min which links to your
        # cron-script instead (which is prefered). Use NAME from
        # /data/system/plugindatabase.dat in that case as scriptname! Otherwise the
        # cron script will not be uninstalled cleanly.
        
        # Will be executed as user "loxberry".
        
        
        /opt/loxberry/webfrontend/legacy/miele/miele-MQTT.php
        was mach ich falsch?

        Kommentar


        • Christian Fenzl
          Christian Fenzl kommentierte
          Kommentar bearbeiten
          Du machst einen Bash-Call, hast aber einen PHP-Shebang.

        • svethi
          svethi kommentierte
          Kommentar bearbeiten
          Stimmt, das ist außerdem falsch.

      • #95
        Dann zeig doch erstmal was Du gemacht hast. Erst dann können wir Dir sagen was Du falsch gemacht hast. Dein Datei printout bringt uns da nichts.
        Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

        Kommentar


        • #96
          ich steh grad auf dem schlauch...

          Ich möchte, dass ein Cronjob bei jedem Restart des Loxberries (oder halt jede Stunde) die PHP-Seite startet, damit die Abruffunktion sauber im Miniserver angezeigt wird.

          Also dachte ich, schau dir die anderen Cronjobs an, und les dich ein wenig ein... und dann habe ich damit einen neuen Cronjob im "Restart" hinterlegt, mit dem obenstehenden Inhalt.

          Führe ich die php via Putty aus läuft das script so lange, bis ich Putty beende (aber das script soll ja immer laufen)

          Kommentar


          • #97
            Wo hast Du was eingetragen und das Script darf natürlich nicht immer laufen. Das darf nur kurz laufen. Warum es so lange läuft liegt wohl eher daran, dass das Script falsch ist. Wie Christian schon sagte, ist Shebang falsch. Du hast im Script einen Bash Aufruf und sagst aber dass das mit PHP aufgerufen werden soll. Die Shebang müsste allein schon mal #!/bin/bash lauten. Und dann kommt es darauf an, was Du in der PHP Datei stehen hast. Wenn da die PHP-Shebang drin steht, dann kannst Du das so lassen, wenn aber nicht, dass muss der Aufruf php -f <und dann dein Pfad zur Datei>
            Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

            Kommentar


            • #98
              sooo,

              Mit deiner Hilfe hab ich das Plugin jetzt mal in den Cronjob hinzugenommen...

              Code:
              #!/bin/bash
              # This is a sample cron file. According to it's name it will go to
              # ~/system/cron/cron.hourly. You may also let your Pluginscript create a
              # symbolic link dynamically in ~/system/cron/cron.10min which links to your
              # cron-script instead (which is prefered). Use NAME from
              # /data/system/plugindatabase.dat in that case as scriptname! Otherwise the
              # cron script will not be uninstalled cleanly.
              
              # Will be executed as user "loxberry".
              
              
              php -f /opt/loxberry/webfrontend/legacy/miele/miele-MQTT.php
              Das läuft jetzt schön, wie es soll.

              Wenn ich jedoch deine Antwort richtig verstanden habe, sollte ich schauen, dass ich das Script halt manuell beende und danach wieder aufrufe?

              Kommentar


              • #99
                Das Script wird doch von Cron ständig wieder gestartet, deshalb nutzt man ja cron. Dein Script sollte seine Arbeit tun und dann fertig sein und beenden. Cron startet dass dann im entsprechenden Turnus neu. Wenn Dein Script nicht beendet, dann wird zu jedem Turnus ein neuer Prozess gestartet. Das bedeutet, dass es immer mehr werden und Dein System irgendwann zum Erliegen kommt. Des Weiteren wird es zu einem Durcheinander kommen, wenn mehrere das Gleiche tun wollen.
                Miniserver; KNX; Vitogate; EnOcean (EnOceanPi); Loxone Air; Caldav-Kalenderanbindung; RaspberryPi und für keine Frickellösung zu schade :-)

                Kommentar


                • Das neue Miele-MQTT (https://github.com/oklona/Miele-MQTT) läuft jetzt als Daemon, dh es muss nur einmal gestartet werden und läuft weiter.

                  Ab LB2.0.1 haben wir in cron einen reboot-Ordner, der einmalig beim Boot ausgeführt wird.

                  Hänge beim Start-Aufruf hinten ein & an (Leerzeichen &), damit das Script im Hintergrund weiterläuft. (Näheres, wenn du „run Script as daemon“ googelst).

                  Für Cronjobs am LB haben wir auch einen Artikel: https://www.loxwiki.eu/plugins/servl.../view/48137110

                  lg, Christian

                  LoxBerry/Plugin Support: Wenn du einen Begriff in meiner Antwort nicht auf Anhieb verstehst, bitte nicht gleich rückfragen, sondern erst die Suche im LoxWiki und bei Google bemühen.
                  PN/PM: Ich bevorzuge die Beantwortung von Fragen in öffentlichen Threads, wo andere mithelfen und mitprofitieren können. Herzlichen Dank!

                  Kommentar


                  • Hallo Christian,

                    danke. Ich habe mir nun das Script in den croon.reboot Ordner verschoben

                    Damit das Teil auch sauber anläuft, habe ich noch einen Sleep 600 mit rein gemacht. Ansonsten startet das natürlich zu früh und es funktioniert dann nicht.

                    Code:
                    #!/bin/bash
                    # This is a sample cron file. According to it's name it will go to
                    # ~/system/cron/cron.hourly. You may also let your Pluginscript create a
                    # symbolic link dynamically in ~/system/cron/cron.10min which links to your
                    # cron-script instead (which is prefered). Use NAME from
                    # /data/system/plugindatabase.dat in that case as scriptname! Otherwise the
                    # cron script will not be uninstalled cleanly.
                    
                    # Will be executed as user "loxberry".
                    
                    
                    sleep 600
                    php -f /opt/loxberry/webfrontend/legacy/miele/miele-MQTT.php &
                    Zuletzt geändert von pedror; 15.Apr.2020, 11:55. Grund: $ durch & ersetzt

                    Kommentar


                    • Christian Fenzl
                      Christian Fenzl kommentierte
                      Kommentar bearbeiten
                      Das sieht aber nach einem $ aus, nicht nach einem &

                    • pedror
                      pedror kommentierte
                      Kommentar bearbeiten
                      da hast du natürlich recht...

                      Ist ersetzt

                  • I have a question on the Node-Red version of Miele-MQTT. I am seeing an error occur in the Node-Red debug panel -

                    "TypeError: Cannot read property 'hasOwnProperty' of undefined"

                    I have tried a fresh copy of the JSON install from here -

                    https://flows.nodered.org/flow/32ab5...86fd40bfa0835a

                    It is possibly a problem of my local instance of Node-Red/Miele, or Miele has changed the API again. Curious to know if anyone is having similar issues?
                    Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

                    Kommentar


                    • AlexAn
                      AlexAn kommentierte
                      Kommentar bearbeiten
                      Miele hat die API umgestellt!

                  • Ahh...again. I had a look at the sub-flow but it doesn't make much sense to me. The are two formula blocks in the sub-flows that reference 'hasOwnProperty'.

                    Code:
                    let bearer = env.get("bearer");
                    if (bearer === "" && msg.bearer ==="") node.send({payload:"bearer missing"});
                    if(msg.hasOwnProperty('bearer')) bearer=msg.bearer;
                    let lang = env.get("lang");
                    if (lang === "" && msg.lang ==="") node.send({payload:"language missing"});
                    if(msg.hasOwnProperty('lang')) lang=msg.lang;
                    let device = env.get("device");
                    if (device === "" && msg.device ==="") node.send({payload:"device missing"});
                    if(msg.hasOwnProperty('device')) device=msg.device;
                    var msg2;
                    msg2={payload: "curl -X GET \"https://api.mcs3.miele.com/v1/devices/"+device+"?language=" + lang +"\" -H \"accept: application/json; charset=utf-8\" -H \"Authorization: Bearer " + bearer + "\""};
                    msg1=null;
                    return [[msg1],[msg2]];

                    and
                    Code:
                    var msg1={topic:msg.topic, payload: msg.payload};
                    var msg2;
                    if(msg.payload.status.hasOwnProperty("value_raw")) msg2={payload:{fill:"green",shape:"dot",text:"OK"} };
                    
                    return [[msg1],[msg2]];

                    I should have studied coding in high school...
                    Ich spreche kein Deutsch. Gib Google Translate die Schuld, wenn ich unverständlich bin.

                    Kommentar


                    • Tico
                      Tico kommentierte
                      Kommentar bearbeiten
                      Repariert! Ich habe die Miele-App auf meinem iOS-Gerät aktualisiert und dann meinen Geschirrspüler wieder zum Miele-Konto hinzugefügt. Jetzt funktioniert er einwandfrei.

                    • AlexAn
                      AlexAn kommentierte
                      Kommentar bearbeiten
                      Na das war ja einfach👌

                  • Bin irgendwie zu Blöd eine Verbindung aufzubauen:

                    PHP-Code:
                    loxberry@loxberry:~/webfrontend/legacy/miele php miele-MQTT.php
                    Error
                    :Connection failed! (Error0x20 0x05
                    Die config sieht so aus:
                    PHP-Code:
                    <?php
                    return array(
                    'access_token'=> 'CH_ecfc863192b8_____________________',
                    'refresh_token'=> 'CH_315699de35e_____________________',
                    'email'=> '____.______@___________.ch',
                    'client_id'=> 'af0a4ec6-3006-____-____-__________',
                    'client_secret'=> '_______________',
                    'code'=> 'CH_3e60e5f4c___________________',
                    'country'=> 'de-ch',
                    'mosquitto_host'=> 'localhost',
                    'mosquitto_user'=> 'loxberry',
                    'mosquitto_pass'=> '___________________',
                    'topicbase'=> '/miele/'
                    );
                    ?>
                    Welches passwort und login muss ich bei mosquitto_xxx eingeben? den Konsolen-login oder den standard Login für den loxberry?
                    Das passwort stimmt 100%ig. wenn ich noch den Port anfüge (wie früher angemerkt) kommt eine andere fehlermeldung und er hängt den Port zweimal an. daran sollts also nicht liegen

                    Danach wird zwar nicht mehr (wie im Loxwiki erwähnt) gefragt, aber ich find das file: mosquitto_pub nirgends auf meinem Loxberry?
                    Zuletzt geändert von Homer_smart; 02.Jul.2020, 07:19.

                    Kommentar


                    • Du musst bei mosquitto_pass das Passwort verwenden, das im MQTT Gateway angezeigt wird.
                      LoxBerry/Plugin Support: Wenn du einen Begriff in meiner Antwort nicht auf Anhieb verstehst, bitte nicht gleich rückfragen, sondern erst die Suche im LoxWiki und bei Google bemühen.
                      PN/PM: Ich bevorzuge die Beantwortung von Fragen in öffentlichen Threads, wo andere mithelfen und mitprofitieren können. Herzlichen Dank!

                      Kommentar

                      Lädt...
                      X