Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. Text2command ts und lc abfragen

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    Text2command ts und lc abfragen

    This topic has been deleted. Only users with topic management privileges can see it.
    • Diginix
      Diginix last edited by

      Vor 7 Tagen noch bei Facebook danach gefragt und schon hat es Dirk umgesetzt!

      Für true/false (Xiaomi) Fenstersensoren wäre das ein Quittungstext:
      > Das Fenster ist seit {lc:mihome.0.devices.magnet_158d0001******.state.lc;Math.round((new Date().getTime()-lc)/60000)} min {mihome.0.devices.magnet_158d0001******.state;array(geschlossen,offen)}

      Genial wäre noch wenn die Zeit abhängig von der Größenordnung in Tage, Stunden, Minuten, Sekunden ausgegeben würde.

      Aber auch so ist es für mein Szenario schon perfekt.

      1 Reply Last reply Reply Quote 0
      • D
        dirkhe Developer last edited by

        Die Funktion formatInterval gibt es so im vis Adapter, ich hatte da auch erst nach gesucht.

        @apollon77, Bluefox

        Macht es evtl Sinn, die Funktion formatInterval aus dem vis adapter in den allgemeinen javascript adapter zu verschieben. Ich denke, dass der vis Adapter auch auf diesen zugreift, oder?

        Man sollte die Funktion meiner Meinung nach nicht redundant kopieren.

        Wenn diese Funktion dann im allgemeinen Adapter vorhanden wäre, ist so etwas wie {mihome.0.devices.magnet_158d0001******.state.lc;timeinterval()} kein Thema

        1 Reply Last reply Reply Quote 0
        • apollon77
          apollon77 last edited by

          Mach doch mal ein GitHub issue auf oder einen pr

          Gesendet von iPad mit Tapatalk Pro

          1 Reply Last reply Reply Quote 0
          • D
            dirkhe Developer last edited by

            @apollon77,

            will ich wohl gerne machen, aber ich denke dass sind größere Umbauarbeiten, die ich nicht einfach so machen will. Es macht auch keinen Sinn das anzufangen und hinter sagt ihr, das geht gar nicht.

            Ich habe mir das mal angeschaut (komme so langsam in den code rein, aber dauert halt immer nen bisschen)

            Mein Vorschlag wäre folgender:

            <u>js-controller:</u>

            neue Datei format.js mit den 4 funktionen:

            • formatValue
            scheint unkritisch zu sein, da die auf den ersten Blick simple aussehen 
            
            • formatDate
            unterscheiden sich in der js-controller und in der vis/www/widgets/basic.htm -> müsste man mal schauen, welcher code da besser ist. Ich vermute mal, dass der output und die formatoptionen wahrscheinlich gleich sein sollten 
            
            • formatIntervalHelper
            existiert bisher nur in vis, daher unkritisch 
            
            • formatInterval
            existiert bisher nur in vis, daher unkritisch 
            

            Im adapter.js that.formatValue und that.formatDate auf require('format').formatXX zeigen lassen

            <u>vis:</u>

            In vis/www/widgets/entweder die Datei format.js per scriptaufruf einbinden oder in der main.js/writeFile funktion eine Art include bauen, der die functionen aus js-controller/format.js reinkopiert und dann die 4 Funktionen entsprechend wrapped.

            Das Wrappen durch die alten Funktionen könnte man ja noch im log mit einem depricated ausgeben, das man dann besser direkt auf includierten funktionsaufrue geht, aber man wäre abwärtskompatibel.

            Wie gesagt, ich könnt mir schon vorstellen das Umzusetzen, aber dazu würde ich zumindest mal eure Meinung hören. Denn ich kenne nur die handvoll Adapter, die ich installiert habe. Den Grossteil kenne ich nicht.

            Das einbinden in text2command wäre danach nur noch eine KLeinigkeit..

            gruss

            Dirk

            1 Reply Last reply Reply Quote 0
            • apollon77
              apollon77 last edited by

              Ich denke ein "paralleler" Prozess macht sinn.

              Erst einmal da direkt einbauen wo es geht, also ggf. in text2command direkt als "kopie" der Lib Datei. Ich denke auch die Binding Logik ist eher aus Vis kopiert 🙂 ALso mach gern einen PR dazu.

              Das ganze auf einer neuen Version des js-controller aufzubauen ist langwierig (die 1.5 ist feature complete und im finalen Bugfixing, dann käme die 2.0 die aber noch etwas braucht und das kommt erstmal ins latest, dann ins stable). Und dann muss sich das noch verbreiten. Also wenn man ein Feature will dann ist es denke erstmal direkt drin und kann später umgestellt werden wenn der controller verbreitet sind oder so. Also die Backward-compatibility ist das interessante hier weil es ggf beides können muss (alt und neu). Das ist der tricky part.

              Ggf mal ein Issue im js.controler anlegen mit der "Umbauidee" und den "wie backward compatibility herstellen" sodass man es dort diskutieren kann.

              1 Reply Last reply Reply Quote 0
              • D
                dirkhe Developer last edited by

                Alles klar, ich habe mal eine Version umgesetzt und die mit in den PR reingepackt.

                Dazu habe ich unter lib eine Datei formatProvider.js angelegt. Das könnte dann die Grundlage sein, die man später in den js-controller verschieben könnte.

                Das werde ich dann aber mal issue dort anlegen, wie du geschrieben hast.

                Allerdings sollten wir vlt. erstmal den PR mergen und unters Volk bringen?

                BTW: Ich habe festgestellt, dass im vis->formatInterval ein Fehler ist, denn da kommt ggf. 'vor einer Tag' raus…. Diesen Code hatte ich mir als Kopiervorlage genommen. Ich habe den code aber jetzt kpl. überarbeitet.

                Man kann jetzt sowas machen, wie

                Die Waschmaschine {Keller.0.Waschmaschine.Status;array(ist aus,ist an,läuft)} seit {Keller.0.Waschmaschine.Status.lc;dateinterval}
                

                oder

                 Der Status der Waschmaschine hat sich geändert {Keller.0.Waschmaschine.Status.lc;dateinterval(true)}
                

                gruss

                Dirk

                1 Reply Last reply Reply Quote 0
                • Diginix
                  Diginix last edited by

                  Kann ich das bei mir auch schon irgendwie testen durch eine komplette text2command Version von dir bzw. allen geänderten und neuen Dateien?

                  1 Reply Last reply Reply Quote 0
                  • D
                    dirkhe Developer last edited by

                    Klar,

                    Du kannst einfach die Version hier nehmen

                    https://github.com/dirkhe/ioBroker.text2command/

                    Im Prinzip ist die lib/formatprovider.js neu und die simplecontroll verändert

                    Gruss

                    Dirk

                    1 Reply Last reply Reply Quote 0
                    • apollon77
                      apollon77 last edited by

                      @dirkhe:

                      Alles klar, ich habe mal eine Version umgesetzt und die mit in den PR reingepackt.

                      Dazu habe ich unter lib eine Datei formatProvider.js angelegt. Das könnte dann die Grundlage sein, die man später in den js-controller verschieben könnte.

                      Das werde ich dann aber mal issue dort anlegen, wie du geschrieben hast.

                      Allerdings sollten wir vlt. erstmal den PR mergen und unters Volk bringen?

                      BTW: Ich habe festgestellt, dass im vis->formatInterval ein Fehler ist, denn da kommt ggf. 'vor einer Tag' raus…. Diesen Code hatte ich mir als Kopiervorlage genommen. Ich habe den code aber jetzt kpl. überarbeitet.

                      Man kann jetzt sowas machen, wie

                      Die Waschmaschine {Keller.0.Waschmaschine.Status;array(ist aus,ist an,läuft)} seit {Keller.0.Waschmaschine.Status.lc;dateinterval}
                      

                      oder

                       Der Status der Waschmaschine hat sich geändert {Keller.0.Waschmaschine.Status.lc;dateinterval(true)}
                      

                      gruss

                      Dirk `
                      Für vis mach am besten ein issue auf und beschreibe den fix. PRs sind da etwas schwieriger wegen der Lizenz.

                      Gesendet vom Handy …

                      1 Reply Last reply Reply Quote 0
                      • Diginix
                        Diginix last edited by

                        Funktioniert perfekt!

                        Gibt es eigentlich eine Möglichkeit aus Blockly heraus einen text2command Eintrag zu triggern?

                        Ich habe ein Skript welches mir über Alexa sagt welche Fenster/Türen offen sind.

                        Wenn es nun nur eines ist, wäre es cool den Eintrag dafür aus text2command zu triggern, dann bekäme ich als Antwort nicht nur "Das Schlafzimmerfenster ist offen" sondern "Das Schlafzimmerfenster ist seit 20 Minuten offen".

                        Klar kann ich in Blockly selbst die Zeit berechnen, aber dann müsste ich auch je nach Größenordnung das ganze in Stunden usw. umrechnen.

                        Mit dem text2command ist die Antwort jetzt ja sofort perfekt aufgebaut. Oder kann ich in Blockly auf diese formatValue bzw. dateinterval zugreifen?

                        1 Reply Last reply Reply Quote 0
                        • D
                          dirkhe Developer last edited by

                          Das allgemein zur Verfügung stellen, ist ja meine Grundidee, aber wie apollon77 schon geschrieben hat, ist das nicht so einfach.

                          Per blocky kann ich für nicht sagen, das ist mir zu kompliziert, ich nutze direkt JavaScript. Dort sollte es über require gehen, so wie es in der simplecontroll steht. Das habe ich aber noch nicht ausprobiert…

                          Diginix 1 Reply Last reply Reply Quote 0
                          • apollon77
                            apollon77 last edited by

                            https://github.com/ioBroker/ioBroker.te … javascript

                            1 Reply Last reply Reply Quote 0
                            • Diginix
                              Diginix @dirkhe last edited by

                              @dirkhe
                              Es gibt nun eine neue Version (1.2.5) vom text2command, vermutlich aber ohne deine genialen Anpassungen. Kannst du die Neuerung in deinen Fork mergen?
                              Sonst müsste ich mir mal ein diff von deiner 1.2.4 zur originalen machen und das dann in die offizielle 1.2.5 versuchen zu übernehmen.

                              1 Reply Last reply Reply Quote 1
                              • D
                                dirkhe Developer last edited by

                                Die Änderungen sind aber drin. Ich habe ja einen PR gemacht und der wurde integriert.

                                1 Reply Last reply Reply Quote 1
                                • Diginix
                                  Diginix last edited by

                                  Ah, cool. Im Changelog steht nichts davon, daher hatte ich das Update bisher nicht gemacht.
                                  Aber ja, stimmt, nach dem Update funktioniert alles weiterhin.

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

                                  Support us

                                  ioBroker
                                  Community Adapters
                                  Donate

                                  616
                                  Online

                                  31.6k
                                  Users

                                  79.4k
                                  Topics

                                  1.3m
                                  Posts

                                  question text2command
                                  3
                                  18
                                  1135
                                  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