Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Entwicklung
  4. Text2command ts und lc abfragen

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    3.4k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.1k

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

Text2command ts und lc abfragen

Geplant Angeheftet Gesperrt Verschoben Entwicklung
questiontext2command
18 Beiträge 3 Kommentatoren 1.8k Aufrufe 5 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • D Offline
    D Offline
    dirkhe
    Developer
    schrieb am zuletzt editiert von Jey Cee
    #1

    Ich habe mich mal ein bisschen mit diesem super Adapter beschäftigt. Dabei ist mir zum einen aufgefallen, dass man nur Werte abfragen kann, aber nicht der ts oder lc. Ich brauchte das aber, weil ich in der Antwort so etwas stehen habe:

    Die Waschmaschine {Keller.0.Waschmaschine.Status;array(ist aus,ist an,läuft)} seit {lc:Keller.0.Waschmaschine.Status.lc;Math.round((new Date().getTime()-lc)/60000)} min

    Das Ergebnis ist dann halt sowas, wie "Die Waschmaschine läuft seit 16 min".

    Daraufhin habe ich mir den code angeschaut und mal einen Patch gemacht (siehe https://github.com/ioBroker/ioBroker.te … /issues/33). Da habe ich das so erweitert, dass man .val,.ts,.lc und .ack nutzen kann. Auch die date ->formatDate und value->formatValue funktionieren jetzt. Bei der Abarbeitung von mehreren States könnte es zu einer "race condition" kommen, da hier mit callbacks gearbeitet, die ja eine gewisse Asynchronität herbeiführen. Ich habe da mal erst alle States aufgelöst und wenn alle abegearbeitet wurden, wird es mit dem zusammenbasteln der Antwort weitergemacht.

    Ich habe da jetzt nicht was wirklich neues reingebaut, das haben die Entwickler hier schon gemacht. Ich habe nur angedachte Funktionen zu Ende geführt.

    @Bluefox

    Ich hoffe, du hast kein Problem damit, wenn ich deinen code ändere und hier weitergebe?

    gruss

    Dirk

    1 Antwort Letzte Antwort
    0
    • apollon77A Offline
      apollon77A Offline
      apollon77
      schrieb am zuletzt editiert von
      #2

      Am besten mach direkt einen PR anstelle einem Patch. Dann geht die Übernahme solcher Änderungen schneller. Und es steht schneller allen zur Vergütung.

      Gesendet vom Handy …

      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
      1 Antwort Letzte Antwort
      0
      • D Offline
        D Offline
        dirkhe
        Developer
        schrieb am zuletzt editiert von
        #3

        Alles klar, ist erstellt. Und wer schon mal testen möchte, kann diese Datei hier https://github.com/dirkhe/ioBroker.text … Control.js austauschen.

        1 Antwort Letzte Antwort
        0
        • DiginixD Offline
          DiginixD Offline
          Diginix
          schrieb am zuletzt editiert von
          #4

          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.

          ..:: So long! Tom ::..

          NUC7i3 (Ubuntu Proxmox VM) | Echo Dots 2+3. Gen | Xiaomi Sensoren | Mi Robot 1S | Yeelight | Sonoff | Shelly | H801 RGB | Gosund SP1 | NodeMCU+ESP32 | Kostal Plenticore PV+BYD | openWB

          1 Antwort Letzte Antwort
          0
          • D Offline
            D Offline
            dirkhe
            Developer
            schrieb am zuletzt editiert von
            #5

            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 Antwort Letzte Antwort
            0
            • apollon77A Offline
              apollon77A Offline
              apollon77
              schrieb am zuletzt editiert von
              #6

              Mach doch mal ein GitHub issue auf oder einen pr

              Gesendet von iPad mit Tapatalk Pro

              Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

              • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
              • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
              1 Antwort Letzte Antwort
              0
              • D Offline
                D Offline
                dirkhe
                Developer
                schrieb am zuletzt editiert von
                #7

                @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 Antwort Letzte Antwort
                0
                • apollon77A Offline
                  apollon77A Offline
                  apollon77
                  schrieb am zuletzt editiert von
                  #8

                  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.

                  Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                  • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                  • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                  1 Antwort Letzte Antwort
                  0
                  • D Offline
                    D Offline
                    dirkhe
                    Developer
                    schrieb am zuletzt editiert von
                    #9

                    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 Antwort Letzte Antwort
                    0
                    • DiginixD Offline
                      DiginixD Offline
                      Diginix
                      schrieb am zuletzt editiert von
                      #10

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

                      ..:: So long! Tom ::..

                      NUC7i3 (Ubuntu Proxmox VM) | Echo Dots 2+3. Gen | Xiaomi Sensoren | Mi Robot 1S | Yeelight | Sonoff | Shelly | H801 RGB | Gosund SP1 | NodeMCU+ESP32 | Kostal Plenticore PV+BYD | openWB

                      1 Antwort Letzte Antwort
                      0
                      • D Offline
                        D Offline
                        dirkhe
                        Developer
                        schrieb am zuletzt editiert von
                        #11

                        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 Antwort Letzte Antwort
                        0
                        • apollon77A Offline
                          apollon77A Offline
                          apollon77
                          schrieb am zuletzt editiert von
                          #12

                          @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 …

                          Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                          • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                          • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                          1 Antwort Letzte Antwort
                          0
                          • DiginixD Offline
                            DiginixD Offline
                            Diginix
                            schrieb am zuletzt editiert von
                            #13

                            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?

                            ..:: So long! Tom ::..

                            NUC7i3 (Ubuntu Proxmox VM) | Echo Dots 2+3. Gen | Xiaomi Sensoren | Mi Robot 1S | Yeelight | Sonoff | Shelly | H801 RGB | Gosund SP1 | NodeMCU+ESP32 | Kostal Plenticore PV+BYD | openWB

                            1 Antwort Letzte Antwort
                            0
                            • D Offline
                              D Offline
                              dirkhe
                              Developer
                              schrieb am zuletzt editiert von
                              #14

                              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…

                              DiginixD 1 Antwort Letzte Antwort
                              0
                              • apollon77A Offline
                                apollon77A Offline
                                apollon77
                                schrieb am zuletzt editiert von
                                #15

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

                                Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                                • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                                • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                                1 Antwort Letzte Antwort
                                0
                                • D dirkhe

                                  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…

                                  DiginixD Offline
                                  DiginixD Offline
                                  Diginix
                                  schrieb am zuletzt editiert von
                                  #16

                                  @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.

                                  ..:: So long! Tom ::..

                                  NUC7i3 (Ubuntu Proxmox VM) | Echo Dots 2+3. Gen | Xiaomi Sensoren | Mi Robot 1S | Yeelight | Sonoff | Shelly | H801 RGB | Gosund SP1 | NodeMCU+ESP32 | Kostal Plenticore PV+BYD | openWB

                                  1 Antwort Letzte Antwort
                                  1
                                  • D Offline
                                    D Offline
                                    dirkhe
                                    Developer
                                    schrieb am zuletzt editiert von
                                    #17

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

                                    1 Antwort Letzte Antwort
                                    1
                                    • DiginixD Offline
                                      DiginixD Offline
                                      Diginix
                                      schrieb am zuletzt editiert von
                                      #18

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

                                      ..:: So long! Tom ::..

                                      NUC7i3 (Ubuntu Proxmox VM) | Echo Dots 2+3. Gen | Xiaomi Sensoren | Mi Robot 1S | Yeelight | Sonoff | Shelly | H801 RGB | Gosund SP1 | NodeMCU+ESP32 | Kostal Plenticore PV+BYD | openWB

                                      1 Antwort Letzte Antwort
                                      1
                                      Antworten
                                      • In einem neuen Thema antworten
                                      Anmelden zum Antworten
                                      • Älteste zuerst
                                      • Neuste zuerst
                                      • Meiste Stimmen


                                      Support us

                                      ioBroker
                                      Community Adapters
                                      Donate

                                      647

                                      Online

                                      32.7k

                                      Benutzer

                                      82.4k

                                      Themen

                                      1.3m

                                      Beiträge
                                      Community
                                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                      ioBroker Community 2014-2025
                                      logo
                                      • Anmelden

                                      • Du hast noch kein Konto? Registrieren

                                      • Anmelden oder registrieren, um zu suchen
                                      • Erster Beitrag
                                        Letzter Beitrag
                                      0
                                      • Home
                                      • Aktuell
                                      • Tags
                                      • Ungelesen 0
                                      • Kategorien
                                      • Unreplied
                                      • Beliebt
                                      • GitHub
                                      • Docu
                                      • Hilfe