Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Praktische Anwendungen (Showcase)
    4. Einen PI3 durch ioBroker herunterfahren?

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Einen PI3 durch ioBroker herunterfahren?

    This topic has been deleted. Only users with topic management privileges can see it.
    • mickym
      mickym Most Active @Kusi last edited by mickym

      @Kusi Klar gerne - Du kannst zwar auch mit PN schreiben - aber ein eigener Thread ist besser - da man im PN System Code - Screenshots etc. nicht so richtig posten kann. Und auch wenn ich mich hier vielleicht dumm anstelle und mich wie gesagt herantaste, da ich kein JAVA Mensch bin sondern meine Logik mit Node-RED mache.

      Du kannst ja die Warnmeldungen posten - aber da werde ich wahrscheinlich nicht helfen können.

      Na den letzten schon:

      javascript.0 2020-09-07 23:40:00.272 warn (6635) You are assigning a string to the state "javascript.0.Eigene_Datenpunkte.Plex_Dienst" which expects a number. Please fix your code to use a number or change the state type to string. This warn
      

      Mach mal den von Dir erstellten Datenpunkt zum Typ Zeichenkette anstelle von Zahl.

      Bei den anderen Warnungen - wie gesagt müssen hier die Java-Gurus ran. Vielleicht kann @paul53 helfen - der ist hier glaub ich bei Javascript Fragen der Guru.

      Vielleicht darf man keine Pipes | nutzen - dann kann man den Befehl ggf. in eine sh- Datei stecken, aber wie gesagt ich kenne mich mit den Warnungen bei javascript nicht aus. Ansonsten nutze auch NodeRED - da ist das einfacher. 😉

      K 1 Reply Last reply Reply Quote 0
      • mickym
        mickym Most Active @Kusi last edited by

        @Kusi said in Einen PI3 durch ioBroker herunterfahren?:

        mickym Auf diese Art und Weise kann also von anderen Gerät im Netzwerk dessen Status usw. abgefragt werden? Zum Beispiel freie Speichergrösse von Festplatten, usw.?

        Grundsätzlich ja - aber da gibt es sicher auch Adapter die sowas machen. Ich habe da aber auch noch Probleme und nutze im Moment noch Funktionen von FHEM bei der Analyse von entfernten Linux Systemen

        1 Reply Last reply Reply Quote 0
        • K
          Kusi @mickym last edited by

          @mickym sagte in Einen PI3 durch ioBroker herunterfahren?:

          Mach mal den von Dir erstellten Datenpunkt zum Typ Zeichenkette anstelle von Zahl.

          Warnmeldungen sind alle weg.

          Vielleicht kannst du mir noch bei einer anderen Meldung helfen...
          Es hat immer funktioniert und seit ein paar Wochen bekomme ich folgende Info:
          (6635) script.js.Test.test_Kopieren: undefined

          var Uhrzeit, letzte_aenderung, Test;
          
          schedule("*/5 * * * *", function () {
            if ((function () {var v = getDateObject(getState("deconz.0.Sensors.10.lastupdated").lc); return v.getHours() * 60 + v.getMinutes();})() < (function () {var v = new Date(); return v.getHours() * 60 + v.getMinutes();})() - 300) {
              letzte_aenderung = 'Aquara: letzte Änderung war  ' + String(getState("deconz.0.Sensors.10.lastupdated").lc);
            }
            console.log(letzte_aenderung);
          });
          

          b17daf3e-e117-4f58-b509-80ce16d10ae5-image.png

          Hier geht es darum, wenn die letzte Änderung länger als 300 Minuten her ist, dann erscheint ein Debug. Dieser ist aber Undefined, siehe oben.

          mickym 1 Reply Last reply Reply Quote 0
          • mickym
            mickym Most Active @Kusi last edited by mickym

            @Kusi Oh je - Du machst mich ja nun doch noch zum Java Mensch.

            Aber ich sag es mal so:

            In dem Fall, ist die letzte_aenderung ja NUR dann definiert, wenn die if Funktion WAHR ist, anderenfalls ist die Variable deshalb nicht definiert = undefined. 😉

            Insofern würde ich einfach am Anfang die Variable initialisieren!

            letzte_aenderung="Keine Änderung seit mehr als 300 Minuten";
            

            also so:

             var Uhrzeit, letzte_aenderung, Test;
            letzte_aenderung="Keine Änderung seit mehr als 300 Minuten";
             
             schedule("*/5 * * * *", function () {
             if ((function () {var v = getDateObject(getState("deconz.0.Sensors.10.lastupdated").lc); return v.getHours() * 60 + v.getMinutes();})() < (function () {var v = new Date(); return v.getHours() * 60 + v.getMinutes();})() - 300) {
                 letzte_aenderung = 'Aquara: letzte Änderung war  ' + String(getState("deconz.0.Sensors.10.lastupdated").lc);
             }
               console.log(letzte_aenderung);
             });
            

            alternativ kannst natürlich auch einen ELSE Zweig definieren- Ich weiß aber nicht wie das im Blockly heißt - sonst oder anderenfalls.

            K 1 Reply Last reply Reply Quote 0
            • K
              Kusi @mickym last edited by Kusi

              @mickym Oder den Debug Output nur machen, falls die Variable definiert ist, so wäre es ja auch geplant gewesen... So funktioniert es nämlich einwandfrei. Ich will dies dann später in eine schöne Nachricht einfügen, damit ich sehe wenn ggfs. die Batterie so schwach ist, dass der Sensor gar keine Änderung mehr senden kann.

              0655019b-2b44-4357-8c1c-ec42de766649-image.png

              Weist du zufällig wie man bei einem Datenpunkt einstellen kann, dass anstelle der Zahl z.B. bei
              0 = Dienst ausgeschaltet
              1 = Dienst wird gestartet
              2 = Dienst eingeschaltet

              angezeigt wird? Ich bin der Meinung dies mal irgendwo gelesen zu haben, dass man dies direkt im Datenpunkt ändern kann...
              Natürlich könnte ich dies ganz simpel mit einem Blockly machen, aber dann müsste ich die Zahl entweder in eine Variable schreiben, oder ich hätte 2 Datenpunkte.

              mickym 2 Replies Last reply Reply Quote 0
              • mickym
                mickym Most Active @Kusi last edited by

                @Kusi Genau - so geht es natürlich auch. So kann es ja nie vorkommen, dass Du auf eine nicht initialisierte Variable zugreift.

                1 Reply Last reply Reply Quote 0
                • mickym
                  mickym Most Active @Kusi last edited by mickym

                  @Kusi Das musst Du meines Wissens in vis selbst machen. Du kannst meines Wissens diese internen Bindings verwenden.

                  Dann kann man anscheinend - musst aber bissi mit spielen wohl mit Arrays arbeiten:

                  array(element1,element2[,element3,element4]) - returns the element of index. e.g.: {id.ack;array(ack is false,ack is true)}

                  Das heißt Du definierst die 3 Zustände ähnlich und durch die Zahlen 0,1,2 greifst Du darauf zu.

                  Also interne Bindung:

                  {javascript.0.Eigene_Datenpunkte.Plex_Dienst;array('Dienst ausgeschaltet','Dienst wird gestartet','Dienst eingeschaltet')}

                  aber da musst probieren. Da gibts aber wirklich Leute die da mehr Erfahrung haben 😉

                  Ich hab das mal hier mit der Anzeige und rechnen hier ausprobiert - da musst halt mal bissi spielen. 😉 Sieht man übrigens nur in Runtime - als nicht im Entwurf-Modus.

                  Eventuell musst Du den stdout doch in Zahl umwandeln und den Datenpunkt auch.

                  Dann würde der Befehl halt so lauten:

                  exec ("ssh admin@192.168.1.10 ps -ef | grep plex | wc -l", function (error, stdout, stderr) { setState('javascript.0.Eigene_Datenpunkte.Plex_Dienst',Number(stdout)); });
                  
                  K 1 Reply Last reply Reply Quote 0
                  • K
                    Kusi @mickym last edited by

                    @mickym Danke. Mit einem HTML-Widget habe ich schon diverse solche Anzeigen erstellt. Ich bin aber der Meinung dass mna bereits den Wert eines Objekts so anpassen kann, dass z.B. anstelle "true" der Wert "ein" angezeigt wird.

                    Vielleicht finde ich morgen was und werde es dich wissen lassen.

                    Wünsche dir eine Gute Nacht und vielen Dank nochmals.

                    mickym 1 Reply Last reply Reply Quote 0
                    • mickym
                      mickym Most Active @Kusi last edited by

                      @Kusi Dann meinst vielleicht die Umwandlung mit Alias oder es geht auch im vis direkt.

                      K 1 Reply Last reply Reply Quote 0
                      • K
                        Kusi @mickym last edited by Kusi

                        @mickym Alias ist meinerswissens etwas anderes (Adapter).
                        Ich möchte bereits dass der Wert anders benannt wird, und nicht erst auf der vis.

                        mickym 2 Replies Last reply Reply Quote 0
                        • mickym
                          mickym Most Active @Kusi last edited by

                          @Kusi Vielleicht ist es die Werteliste

                          1 Reply Last reply Reply Quote 0
                          • mickym
                            mickym Most Active @Kusi last edited by

                            @Kusi Vielleicht funktioniert auch das: 😉

                            exec ("ssh admin@192.168.1.10 ps -ef | grep plex | wc -l", function (error, stdout, stderr) { 
                            var status= ['Dienst ausgeschaltet','Dienst wird gestartet','Dienst eingeschaltet'];
                            setState('javascript.0.Eigene_Datenpunkte.Plex_Dienst',status[Number(stdout)]); });
                            
                            K 1 Reply Last reply Reply Quote 0
                            • K
                              Kusi @mickym last edited by

                              @mickym Funktioniert einwandfrei!!!

                              mickym 1 Reply Last reply Reply Quote 0
                              • mickym
                                mickym Most Active @Kusi last edited by mickym

                                @Kusi Es gibt noch eine Möglichkeit, dann wird der Text nur unter Objekten angezeigt, aber der Wert bleibt eine Zahl - also weiterhin 0,1,2 und Du musst das dann im vis noch übersetzen.

                                Das Objekt selbst definiert man als Zahl und unter states gibt man die Auswahl ein:

                                {
                                  "_id": "0_userdata.0.example_state",
                                  "type": "state",
                                  "common": {
                                    "name": "Example state",
                                    "role": "command",
                                    "type": "number",
                                    "states": "0:Dienst ausgeschaltet;1:Dienst wird gestartet;2:Dienst eingeschaltet;",
                                    "def": 0
                                  },
                                  "acl": {
                                    "object": 1604,
                                    "owner": "system.user.admin",
                                    "ownerGroup": "system.group.administrator",
                                    "state": 1638
                                  },
                                  "from": "system.host.server.cli",
                                  "ts": 1574005416136,
                                  "user": "system.user.admin",
                                  "native": {}
                                }
                                

                                Unter den Objekten findest Du aber dann eine Werteliste und wenn Du den Wert mit 1 beschreibst dann bleibt es eine 1 angezeigt wird aber der Text:

                                screen.png

                                Die Hochkommas braucht es nicht.

                                Wenn der Wert gesetzt ist - als Zahl dann schaut das unter den Objekten so aus:

                                screen.png

                                K 1 Reply Last reply Reply Quote 0
                                • K
                                  Kusi @mickym last edited by Kusi

                                  @mickym Habe einen neuen Datenpunkt mit Datenpunkttyp "Werteliste" erstellt. Nach dem Erstellen des Datenpunktes habe ich noch das Wort gesehen, dann nach dem Aktualisieren aber nicht mehr sondern nur noch die Zahl.

                                  1 Reply Last reply Reply Quote 0
                                  • First post
                                    Last post

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  553
                                  Online

                                  31.7k
                                  Users

                                  79.9k
                                  Topics

                                  1.3m
                                  Posts

                                  10
                                  87
                                  4974
                                  Loading More Posts
                                  • Oldest to Newest
                                  • Newest to Oldest
                                  • Most Votes
                                  Reply
                                  • Reply as topic
                                  Log in to reply
                                  Community
                                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                  The ioBroker Community 2014-2023
                                  logo