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

  1. ioBroker Community Home
  2. Deutsch
  3. Praktische Anwendungen (Showcase)
  4. View Adapter Status

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.4k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.0k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.5k

View Adapter Status

Geplant Angeheftet Gesperrt Verschoben Praktische Anwendungen (Showcase)
view adapterview
212 Beiträge 31 Kommentatoren 37.1k Aufrufe 52 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.
  • ub.privatU ub.privat

    @sigi234

    keine Zustandsdarstellung, leider...
    02b4d991-2d0e-4c06-aa30-05d6f89a06e3-grafik.png

    NegaleinN Offline
    NegaleinN Offline
    Negalein
    Global Moderator
    schrieb am zuletzt editiert von
    #61

    @ub-privat sagte in View Adapter Status:

    keine Zustandsdarstellung, leider...

    probier mal dies.
    Ist jetzt nur das Admin-Icon und der Hintergrund.

    Musst die ID noch anpassen.

    [{"tpl":"tplValueListHtml8","data":{"oid":"system.adapter.admin.0.connected","count":"1","value0":"","value1":"","style1":"background-color: #02c908","style0":"background-color: #ff0000","value2":"333","style2":"background-color: orange","test_list":"0","gestures-offsetX":0,"gestures-offsetY":0,"signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis.0/VIS/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis.0/VIS/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis.0/VIS/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"name":"Admin_Hintergrund","g_visibility":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide"},"style":{"left":"30px","top":"97px","color":"white","text-align":"left","font-family":"Arial, Helvetica, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"large","width":"54px","height":"54px","z-index":"10","overflow-x":"","border-radius":"12px","box-shadow":"2px 2px 3px rgba(20, 20, 20, 50)"},"widgetSet":"basic"},{"tpl":"tplImage","data":{"g_fixed":true,"g_visibility":false,"g_css_font_text":true,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":true,"g_gestures":false,"g_signals":false,"g_last_change":false,"refreshInterval":"0","lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"src":"/vis.0/VIS/Meine_Icons/Adapter_Icons/admin.png","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"name":"Admin_Bild","visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide"},"style":{"left":"32px","top":"99px","width":"46px","height":"46px","background":"#424242","border-radius":"10px","background-color":"#424242","border-style":"solid","border-width":"2px","z-index":"10","border-color":"#424242"},"widgetSet":"basic"}]
    

    ° Node.js: 20.17.0 NPM: 10.8.2
    ° Proxmox, Ubuntu 22.04.3 LTS
    ° Fixer ---> iob fix

    ub.privatU 1 Antwort Letzte Antwort
    1
    • NegaleinN Negalein

      @ub-privat sagte in View Adapter Status:

      keine Zustandsdarstellung, leider...

      probier mal dies.
      Ist jetzt nur das Admin-Icon und der Hintergrund.

      Musst die ID noch anpassen.

      [{"tpl":"tplValueListHtml8","data":{"oid":"system.adapter.admin.0.connected","count":"1","value0":"","value1":"","style1":"background-color: #02c908","style0":"background-color: #ff0000","value2":"333","style2":"background-color: orange","test_list":"0","gestures-offsetX":0,"gestures-offsetY":0,"signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis.0/VIS/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis.0/VIS/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis.0/VIS/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"name":"Admin_Hintergrund","g_visibility":false,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide"},"style":{"left":"30px","top":"97px","color":"white","text-align":"left","font-family":"Arial, Helvetica, sans-serif","font-style":"normal","font-variant":"normal","font-weight":"bold","font-size":"large","width":"54px","height":"54px","z-index":"10","overflow-x":"","border-radius":"12px","box-shadow":"2px 2px 3px rgba(20, 20, 20, 50)"},"widgetSet":"basic"},{"tpl":"tplImage","data":{"g_fixed":true,"g_visibility":false,"g_css_font_text":true,"g_css_background":true,"g_css_shadow_padding":false,"g_css_border":true,"g_gestures":false,"g_signals":false,"g_last_change":false,"refreshInterval":"0","lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"src":"/vis.0/VIS/Meine_Icons/Adapter_Icons/admin.png","signals-cond-0":"==","signals-val-0":true,"signals-icon-0":"/vis/signals/lowbattery.png","signals-icon-size-0":0,"signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,"signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":true,"signals-icon-1":"/vis/signals/lowbattery.png","signals-icon-size-1":0,"signals-blink-1":false,"signals-horz-1":0,"signals-vert-1":0,"signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":true,"signals-icon-2":"/vis/signals/lowbattery.png","signals-icon-size-2":0,"signals-blink-2":false,"signals-horz-2":0,"signals-vert-2":0,"signals-hide-edit-2":false,"name":"Admin_Bild","visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide"},"style":{"left":"32px","top":"99px","width":"46px","height":"46px","background":"#424242","border-radius":"10px","background-color":"#424242","border-style":"solid","border-width":"2px","z-index":"10","border-color":"#424242"},"widgetSet":"basic"}]
      
      ub.privatU Offline
      ub.privatU Offline
      ub.privat
      schrieb am zuletzt editiert von
      #62

      @Negalein & @sigi234

      perfekt! Jetzt klappt's!!!! Jippi... GROSSES DANKESCHÖN:+1: :+1:
      311e2fad-b7ce-43d6-a151-2e4e00650b9e-grafik.png

      Aber nun interessiert mich brennend, wo der Fehler steckt...
      Wenn ich die Einstellungen durchschaue, kann ich nicht wirklich einen Fehler entdecken!?

      sigi234S 1 Antwort Letzte Antwort
      0
      • ub.privatU ub.privat

        @Negalein & @sigi234

        perfekt! Jetzt klappt's!!!! Jippi... GROSSES DANKESCHÖN:+1: :+1:
        311e2fad-b7ce-43d6-a151-2e4e00650b9e-grafik.png

        Aber nun interessiert mich brennend, wo der Fehler steckt...
        Wenn ich die Einstellungen durchschaue, kann ich nicht wirklich einen Fehler entdecken!?

        sigi234S Online
        sigi234S Online
        sigi234
        Forum Testing Most Active
        schrieb am zuletzt editiert von
        #63

        @ub-privat sagte in View Adapter Status:

        Aber nun interessiert mich brennend, wo der Fehler steckt...
        Wenn ich die Einstellungen durchschaue, kann ich nicht wirklich einen Fehler entdecken!?

        Entscheidend ist der z-index und die Größe vom Bild und es darf der Border Rahmen nicht aktiviert werden.

        Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
        Immer Daten sichern!

        ub.privatU 1 Antwort Letzte Antwort
        1
        • sigi234S sigi234

          @ub-privat sagte in View Adapter Status:

          Aber nun interessiert mich brennend, wo der Fehler steckt...
          Wenn ich die Einstellungen durchschaue, kann ich nicht wirklich einen Fehler entdecken!?

          Entscheidend ist der z-index und die Größe vom Bild und es darf der Border Rahmen nicht aktiviert werden.

          ub.privatU Offline
          ub.privatU Offline
          ub.privat
          schrieb am zuletzt editiert von
          #64

          @sigi234

          ok, werde demnoch mal die gesamt VIS durchforsten... Das beste daran, wieder etwas gelernt! DANKE

          1 Antwort Letzte Antwort
          0
          • K Kuddel

            @Oli ich habe mir deinen View kopiert und passe den gerade an.

            Leider wird das Bild nicht korrekt angezeigt.

            Im Datenobjekt selber, sind die Werte aber korrekt eingetragen:

            546e6a0a-8941-4dba-83dc-4b7bbcab3101-grafik.png

            EDIT: Das Bild wird doch korrekt angezeigt.

            Kann ich es auch unter "Signalbilder" verwenen, damit das Bild blinkt, wenn der Adapter nicht connected ist ?

            EDIT2: Funktioniert. Im VIS Editor werden die BIlder nur nicht angezeigt, in der letzlichen VIS schon

            O Offline
            O Offline
            Oli
            schrieb am zuletzt editiert von Oli
            #65

            @Kuddel

            freut mich, dass es funktioniert und ich dir auch mal was zur Verfügung stellen konnte :-)

            Verbesserungsvorschläge nehme ich immer gerne entgegen.

            Gruß
            Oliver

            K 1 Antwort Letzte Antwort
            0
            • G Offline
              G Offline
              G4l4h4d
              schrieb am zuletzt editiert von G4l4h4d
              #66

              Ich habe auch das Problem das der Status sich nicht ändert, allerdings ändert sich der Zustand in den Objekten auch nicht.
              Habe meine hue und meine NAS mal Stromlos geschaltet aber in den Objekten ändert sich der Status nicht. Er zeigt immer noch true an und auch die restlichen DP aktualiseren sich nicht.

              hue_1.png

              Woran könnte das liegen?

              1 Antwort Letzte Antwort
              0
              • O Oli

                @Kuddel

                freut mich, dass es funktioniert und ich dir auch mal was zur Verfügung stellen konnte :-)

                Verbesserungsvorschläge nehme ich immer gerne entgegen.

                K Offline
                K Offline
                Kuddel
                schrieb am zuletzt editiert von Kuddel
                #67

                @Oli ich habe meine Übersicht jetzt soweit auf dein Skript angepasst.

                Ich habe einen zusätzliche DP (Alive) erstellt, um den Adapter per VIS zu deaktivieren.

                Leider setzt der Schalter in der VIS die jweilige Instanz nicht auf false.

                Hast du eine Idee dazu ?

                31ad5f4e-c3f4-49ab-ba18-221467511dfa-grafik.png

                Schalter für den Adapter Alexa2

                [{"tpl":"tplHqButton","data":{"oid":"javascript.0.Adapter.Adapter2.Alive","min":"false","max":"true","timeAsInterval":"true","infoLeftFontSize":"12","infoFontRightSize":"12","gestures-offsetX":0,"gestures-offsetY":0,"signals-cond-0":"==","signals-val-0":"0","signals-icon-0":"{javascript.0.Adapter.Adapter2.Bild}","signals-icon-size-0":"40","signals-blink-0":true,"signals-horz-0":"10","signals-vert-0":"10","signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":"1","signals-icon-1":"{javascript.0.Adapter.Adapter2.Bild}","signals-icon-size-1":"40","signals-blink-1":false,"signals-horz-1":"10","signals-vert-1":"10","signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":"2","signals-icon-2":"{javascript.0.Adapter.Adapter2.Bild}","signals-icon-size-2":"40","signals-blink-2":true,"signals-horz-2":"10","signals-vert-2":"10","signals-hide-edit-2":false,"pushButton":false,"usejQueryStyle":false,"g_visibility":false,"styleActive":"hq-button-no-background","name":"Bild","infoLeftPaddingLeft":"15","infoLeftPaddingRight":"50","infoRightPaddingRight":"15","gestures-swipeLeft-limit":"-1","gestures-rotateLeft-limit":"2","styleNormal":"hq-button-no-background","testActive":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"descriptionLeft":"Side brush lifetime reset","descriptionLeftDisabled":true,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-oid-0":"javascript.0.Adapter.Adapter2.Connected","signals-oid-1":"javascript.0.Adapter.Adapter2.Connected","g_center":true,"iconName":"","btIconWidth":"56","offsetAuto":"true","leftOffset":"15","topOffset":"55","signals-oid-2":"javascript.0.Adapter.Adapter2.Connected"},"style":{"left":"25px","top":"5px","width":"50px","height":"50px","border-width":"","border-style":"","border-color":"","border-radius":"10px","z-index":"20","text-align":"center","font-size":"small","box-shadow":"","background":"#212121","background-color":"#212121"},"widgetSet":"hqwidgets"}]
                

                O 1 Antwort Letzte Antwort
                0
                • K Kuddel

                  @Oli ich habe meine Übersicht jetzt soweit auf dein Skript angepasst.

                  Ich habe einen zusätzliche DP (Alive) erstellt, um den Adapter per VIS zu deaktivieren.

                  Leider setzt der Schalter in der VIS die jweilige Instanz nicht auf false.

                  Hast du eine Idee dazu ?

                  31ad5f4e-c3f4-49ab-ba18-221467511dfa-grafik.png

                  Schalter für den Adapter Alexa2

                  [{"tpl":"tplHqButton","data":{"oid":"javascript.0.Adapter.Adapter2.Alive","min":"false","max":"true","timeAsInterval":"true","infoLeftFontSize":"12","infoFontRightSize":"12","gestures-offsetX":0,"gestures-offsetY":0,"signals-cond-0":"==","signals-val-0":"0","signals-icon-0":"{javascript.0.Adapter.Adapter2.Bild}","signals-icon-size-0":"40","signals-blink-0":true,"signals-horz-0":"10","signals-vert-0":"10","signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":"1","signals-icon-1":"{javascript.0.Adapter.Adapter2.Bild}","signals-icon-size-1":"40","signals-blink-1":false,"signals-horz-1":"10","signals-vert-1":"10","signals-hide-edit-1":false,"signals-cond-2":"==","signals-val-2":"2","signals-icon-2":"{javascript.0.Adapter.Adapter2.Bild}","signals-icon-size-2":"40","signals-blink-2":true,"signals-horz-2":"10","signals-vert-2":"10","signals-hide-edit-2":false,"pushButton":false,"usejQueryStyle":false,"g_visibility":false,"styleActive":"hq-button-no-background","name":"Bild","infoLeftPaddingLeft":"15","infoLeftPaddingRight":"50","infoRightPaddingRight":"15","gestures-swipeLeft-limit":"-1","gestures-rotateLeft-limit":"2","styleNormal":"hq-button-no-background","testActive":false,"lc-type":"last-change","lc-is-interval":true,"lc-is-moment":false,"lc-format":"","lc-position-vert":"top","lc-position-horz":"right","lc-offset-vert":0,"lc-offset-horz":0,"lc-font-size":"12px","lc-font-family":"","lc-font-style":"","lc-bkg-color":"","lc-color":"","lc-border-width":"0","lc-border-style":"","lc-border-color":"","lc-border-radius":10,"lc-zindex":0,"descriptionLeft":"Side brush lifetime reset","descriptionLeftDisabled":true,"visibility-cond":"==","visibility-val":1,"visibility-groups-action":"hide","signals-oid-0":"javascript.0.Adapter.Adapter2.Connected","signals-oid-1":"javascript.0.Adapter.Adapter2.Connected","g_center":true,"iconName":"","btIconWidth":"56","offsetAuto":"true","leftOffset":"15","topOffset":"55","signals-oid-2":"javascript.0.Adapter.Adapter2.Connected"},"style":{"left":"25px","top":"5px","width":"50px","height":"50px","border-width":"","border-style":"","border-color":"","border-radius":"10px","z-index":"20","text-align":"center","font-size":"small","box-shadow":"","background":"#212121","background-color":"#212121"},"widgetSet":"hqwidgets"}]
                  

                  O Offline
                  O Offline
                  Oli
                  schrieb am zuletzt editiert von
                  #68

                  @Kuddel

                  das wollte ich eigentlich mit dem Connected Datenpunkt so machen, hat auch nicht funktioniert.

                  Hast du schon mal versucht mit dem Schalter ein zusätzliches Script auszuführen?

                  Ich würde mir noch einen Datenpunkt anlegen, nur für den Schalter, sobald sich dieser ändert, dass zusätzliche Script starten.

                  Kann ich aber erst heute Abend testen, wenn ich zu Hause bin.

                  Gruß
                  Oliver

                  K 1 Antwort Letzte Antwort
                  0
                  • O Oli

                    @Kuddel

                    das wollte ich eigentlich mit dem Connected Datenpunkt so machen, hat auch nicht funktioniert.

                    Hast du schon mal versucht mit dem Schalter ein zusätzliches Script auszuführen?

                    Ich würde mir noch einen Datenpunkt anlegen, nur für den Schalter, sobald sich dieser ändert, dass zusätzliche Script starten.

                    Kann ich aber erst heute Abend testen, wenn ich zu Hause bin.

                    K Offline
                    K Offline
                    Kuddel
                    schrieb am zuletzt editiert von
                    #69

                    @Oli den Schalter sleber habe ich mir aus meiner VIS kopiert, wo der Alive DP fest hinterlegt war.

                    In der Konfiguration kann man die Instanz dann auch deaktivieren.

                    O 1 Antwort Letzte Antwort
                    0
                    • K Kuddel

                      @Oli den Schalter sleber habe ich mir aus meiner VIS kopiert, wo der Alive DP fest hinterlegt war.

                      In der Konfiguration kann man die Instanz dann auch deaktivieren.

                      O Offline
                      O Offline
                      Oli
                      schrieb am zuletzt editiert von Oli
                      #70

                      @Kuddel

                      versuche mal im Wiget die oid in Schweifklammern zu setzen

                      Edit:
                      Habe es getestet funktioniert bei mir mit den Klammern.

                      Gruß
                      Oliver

                      K 1 Antwort Letzte Antwort
                      0
                      • O Oli

                        @Kuddel

                        versuche mal im Wiget die oid in Schweifklammern zu setzen

                        Edit:
                        Habe es getestet funktioniert bei mir mit den Klammern.

                        K Offline
                        K Offline
                        Kuddel
                        schrieb am zuletzt editiert von
                        #71

                        @Oli echt ? Bei mir geht es nicht.

                        Magst du vllt. deinen Schalter exportieren und zur Verfügung stellen?

                        O 1 Antwort Letzte Antwort
                        0
                        • K Kuddel

                          @Oli echt ? Bei mir geht es nicht.

                          Magst du vllt. deinen Schalter exportieren und zur Verfügung stellen?

                          O Offline
                          O Offline
                          Oli
                          schrieb am zuletzt editiert von
                          #72

                          @Kuddel

                          ich hab den von dir genommen :-)

                          ich habe das beim Bing Adapter ausprobiert, dieser ging allerdings nach kurzer Zeit von sich aus wieder auf true, woran das liegt kann ich dir nicht sagen.

                          Habe noch einen kleinen Fehler im Script gefunden

                          if(connect == false){
                                          var con = 0;    
                                      } else {                
                                          var con = 1;
                                          var strStatePath = devicenameName + ".info.connection";
                                          if (isState(strStatePath, true)) {
                                              var connectS = getState(devicenameName + ".info.connection").val;
                                              if (connectS == false) {
                                                  con = 2;
                                              }                                                                        
                                          } 
                                      }
                                                            
                                  }
                          

                          Steht bei mir im Script ab Zeile 33.

                          Gruß
                          Oliver

                          1 Antwort Letzte Antwort
                          0
                          • sigi234S sigi234

                            @Bachmann77 sagte in View Adapter Status:

                            @sigi234
                            hät ja gern mal gesehen wie deine komplette vis aussieht :)

                            Ja ist nur ein Ausschnitt davon.

                            Ich baue gerade meine komplette Vis auf vis-materialdesign von @Scrounger um. Hier einige Beispiele:

                            Screenshot (542).png

                            Screenshot (540).png

                            Screenshot (538).png

                            Screenshot (536).png

                            Screenshot (534).png

                            Screenshot (532).png

                            Screenshot (530).png

                            Screenshot (528).png

                            Das Menü lässt sich natürlich ausblenden.

                            S Offline
                            S Offline
                            saeft_2003
                            Most Active
                            schrieb am zuletzt editiert von
                            #73

                            @sigi234 sagte in View Adapter Status:

                            @Bachmann77 sagte in View Adapter Status:

                            @sigi234
                            hät ja gern mal gesehen wie deine komplette vis aussieht :)

                            Ja ist nur ein Ausschnitt davon.

                            Ich baue gerade meine komplette Vis auf vis-materialdesign von @Scrounger um. Hier einige Beispiele:

                            Screenshot (540).png

                            Würdest du mir die widgets mit denen du den Füllstand des Toners anzeigen lässt zu Verfügung stellen?

                            sigi234S 1 Antwort Letzte Antwort
                            0
                            • S saeft_2003

                              @sigi234 sagte in View Adapter Status:

                              @Bachmann77 sagte in View Adapter Status:

                              @sigi234
                              hät ja gern mal gesehen wie deine komplette vis aussieht :)

                              Ja ist nur ein Ausschnitt davon.

                              Ich baue gerade meine komplette Vis auf vis-materialdesign von @Scrounger um. Hier einige Beispiele:

                              Screenshot (540).png

                              Würdest du mir die widgets mit denen du den Füllstand des Toners anzeigen lässt zu Verfügung stellen?

                              sigi234S Online
                              sigi234S Online
                              sigi234
                              Forum Testing Most Active
                              schrieb am zuletzt editiert von
                              #74

                              @saeft_2003 sagte in View Adapter Status:

                              Würdest du mir die widgets mit denen du den Füllstand des Toners anzeigen lässt zu Verfügung stellen?

                              Widget_Toner.txt

                              Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                              Immer Daten sichern!

                              M 1 Antwort Letzte Antwort
                              1
                              • S Offline
                                S Offline
                                saeft_2003
                                Most Active
                                schrieb am zuletzt editiert von
                                #75

                                Danke :-) :+1:

                                1 Antwort Letzte Antwort
                                0
                                • ScroungerS Offline
                                  ScroungerS Offline
                                  Scrounger
                                  Developer
                                  schrieb am zuletzt editiert von Scrounger
                                  #76

                                  @sigi234 vielen Dank für die Inspiration für den Adapter Status.

                                  Da ich aber ein fauler Mensch bin ;) und keine Lust habe jedes Mal das Widget anpassen zu müssen, wenn ich einen neuen Adapter hinzufüge oder entferne, habe ich das ganze mit nem Skript und meinem IconList Widget dynamisch erzeugt. (Adapter Version v0.2.59 - demnächst im latest !!!)
                                  Vorteil des Widget ist, dass es responsiv ist (ein layout für Handy, Tablet, Desktop) und man auch noch die Adapter starten bzw. neustarten kann :sunglasses:

                                  iconList_adapterStatus.gif

                                  View zum importieren

                                  {
                                    "settings": {
                                      "style": {
                                        "background_class": ""
                                      },
                                      "theme": "redmond",
                                      "sizex": "",
                                      "sizey": "",
                                      "gridSize": "",
                                      "snapType": null
                                    },
                                    "widgets": {
                                      "e00001": {
                                        "tpl": "tplVis-materialdesign-Icon-List",
                                        "data": {
                                          "g_fixed": false,
                                          "g_visibility": false,
                                          "g_css_font_text": false,
                                          "g_css_background": false,
                                          "g_css_shadow_padding": false,
                                          "g_css_border": false,
                                          "g_gestures": false,
                                          "g_signals": false,
                                          "g_last_change": false,
                                          "visibility-cond": "==",
                                          "visibility-val": 1,
                                          "visibility-groups-action": "hide",
                                          "wrapItems": "true",
                                          "listItemDataMethod": "jsonStringObject",
                                          "countListItems": "1",
                                          "vibrateOnMobilDevices": "50",
                                          "listLayout": "card",
                                          "itemLayout": "horizontal",
                                          "listType0": "text",
                                          "showValueLabel0": "true",
                                          "listType1": "text",
                                          "showValueLabel1": "true",
                                          "signals-cond-0": "==",
                                          "signals-val-0": true,
                                          "signals-icon-0": "/vis/signals/lowbattery.png",
                                          "signals-icon-size-0": 0,
                                          "signals-blink-0": false,
                                          "signals-horz-0": 0,
                                          "signals-vert-0": 0,
                                          "signals-hide-edit-0": false,
                                          "signals-cond-1": "==",
                                          "signals-val-1": true,
                                          "signals-icon-1": "/vis/signals/lowbattery.png",
                                          "signals-icon-size-1": 0,
                                          "signals-blink-1": false,
                                          "signals-horz-1": 0,
                                          "signals-vert-1": 0,
                                          "signals-hide-edit-1": false,
                                          "signals-cond-2": "==",
                                          "signals-val-2": true,
                                          "signals-icon-2": "/vis/signals/lowbattery.png",
                                          "signals-icon-size-2": 0,
                                          "signals-blink-2": false,
                                          "signals-horz-2": 0,
                                          "signals-vert-2": 0,
                                          "signals-hide-edit-2": false,
                                          "lc-type": "last-change",
                                          "lc-is-interval": true,
                                          "lc-is-moment": false,
                                          "lc-format": "",
                                          "lc-position-vert": "top",
                                          "lc-position-horz": "right",
                                          "lc-offset-vert": 0,
                                          "lc-offset-horz": 0,
                                          "lc-font-size": "12px",
                                          "lc-font-family": "",
                                          "lc-font-style": "",
                                          "lc-bkg-color": "",
                                          "lc-color": "",
                                          "lc-border-width": "0",
                                          "lc-border-style": "",
                                          "lc-border-color": "",
                                          "lc-border-radius": 10,
                                          "lc-zindex": 0,
                                          "jsonStringObject": "{0_userdata.0.vis.AdapterStatus.jsonList}",
                                          "maxItemsperRow": "6",
                                          "iconHeight": "60",
                                          "verticalIconContainerWidth": "100",
                                          "labelFontSize": "20",
                                          "labelFontFamily": "RobotoCondensed-Regular",
                                          "iconItemMinWidth": "290",
                                          "labelFontColor": "",
                                          "valueFontFamily": "",
                                          "subLabelFontFamily": "RobotoCondensed-Regular",
                                          "subLabelFontSize": "14",
                                          "subLabelFontColor": "#000000",
                                          "oid": "0_userdata.0.AdapterStatus.jsonList",
                                          "label0": ""
                                        },
                                        "style": {
                                          "left": "0px",
                                          "top": "0px",
                                          "width": "100%",
                                          "height": "100%",
                                          "overflow-y": "auto"
                                        },
                                        "widgetSet": "materialdesign"
                                      }
                                    },
                                    "name": "AdapterStatus",
                                    "filterList": []
                                  }
                                  

                                  Skript, Datenpunkte müsst ihr entsprechend erstellen und anpassen - siehe Kommentare im skript!
                                  Achtung wenn ich Bindings verwende geht meine vis in die Knie, deshalb wird das skript zyklisch aufgerufen.

                                  // Imports
                                  const moment = require("moment");
                                  const momentDurationFormatSetup = require("moment-duration-format");
                                  moment.locale("de");
                                  
                                  // Fomate für moment Lib
                                  let durationFormat = "dd[T] hh[h] mm[m]";
                                  
                                  let adapterSelector = `[id=system.adapter.*.alive]`;
                                  let adapterAliveList = $(adapterSelector);
                                  
                                  // Datenpunkt für IconList Widget
                                  let dpList = '0_userdata.0.vis.AdapterStatus.jsonList';
                                  
                                  // Datenpunkt für Adapter restart
                                  let dpAdapterRestart = '0_userdata.0.vis.AdapterStatus.restartTrigger';
                                  
                                  // interval die adapterStatus Funktion augerufen wird (in Sekunden)
                                  const checkInterval = 30;
                                  
                                  // Fehlermeldung ausgeben, wenn selector kein result liefert
                                  if (adapterAliveList.length === 0) {
                                      console.error(`no result for selector '${adapterSelector}'`)
                                  }
                                  
                                  adapterAliveList.on(adapterStatus);                                             // listener nur für Änderung bei alive
                                  
                                  // Funktion adapterStatus alle x Sekunden ausführen
                                  schedule('*/'+ checkInterval + ' * * * * *', adapterStatus);
                                  
                                  function adapterStatus() {
                                      let adapterList = [];
                                  
                                      try {
                                          for (var i = 0; i <= adapterAliveList.length - 1; i++) {
                                              let id = adapterAliveList[i].replace('.alive', '');
                                              let obj = getObject(adapterAliveList[i].replace('.alive', ''));
                                  
                                              let nameArray = id.replace('system.adapter.', '').split(".");
                                  
                                              let name = nameArray[0];
                                              name = name.charAt(0).toUpperCase() + name.slice(1);
                                  
                                              let nameWithInstance = name;
                                              let adapterInstance = nameArray[1];
                                              if (adapterInstance > 0) {
                                                  nameWithInstance = name + '.' + adapterInstance;
                                              }
                                  
                                              let uptime = `{d:${id + '.uptime'};Math.floor( ((d)/60/60/24) )}T {h:${id + '.uptime'};Math.floor( ((h)/60/60) % 24 )}h 
                                              {m:${id + '.uptime'};Math.floor( ((m)/60) % 60 )}m`
                                  
                                              let text = `<div style="display: flex; flex-direction: row; line-height: 1.5; padding-right: 8px; align-items: center;">
                                                              <div style="flex: 1">${nameWithInstance}</div>
                                                              <div style="color: grey; font-size: 12px; font-family: RobotoCondensed-LightItalic;">v${obj.common.version}</div>
                                                          </div>`
                                  
                                              let subText = `<div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                  <div style="flex: 1">CPU</div>
                                                                  <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${getState(id + '.cpu').val} % %</div>
                                                              </div>
                                                              <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                  <div style="flex: 1">RAM total</div>
                                                                  <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${getState(id + '.memHeapTotal').val} MB</div>
                                                              </div>
                                                              <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                  <div style="flex: 1">RAM verwendet</div>
                                                                  <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${getState(id + '.memHeapUsed').val} MB</div>
                                                              </div>
                                                              <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                  <div style="flex: 1">RAM reserviert</div>
                                                                  <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${getState(id + '.memRss').val} MB</div>
                                                              </div>
                                                              <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                  <div style="flex: 1">Betriebszeit</div>
                                                                  <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${moment.duration(getState(id + '.uptime').val, 'seconds').format(durationFormat, 0)}</div>
                                                              </div>`
                                  
                                              adapterList.push({
                                                  text: text,
                                                  subText: subText,
                                                  image: `/${nameArray[0]}.admin/${obj.common.icon}`,
                                                  listType: "buttonState",
                                                  objectId: dpAdapterRestart,
                                                  buttonStateValue: id,
                                                  statusBarColor: getStatusColor(),
                                                  showValueLabel: false
                                              })
                                  
                                              function getStatusColor() {
                                                  let statusBarColor = 'FireBrick';
                                                  if (getState(adapterAliveList[i]).val === true) {
                                                      statusBarColor = 'green';
                                                  }
                                      
                                                  if (obj.common.enabled === false) {
                                                      // Adapter ist deaktiviert
                                                      statusBarColor = 'darkgrey';
                                                  }
                                      
                                                  if (obj.common.mode === 'schedule') {
                                                      // Adapter ist zeitgesteuert
                                                      statusBarColor = 'orange';
                                                  }
                                      
                                                  return statusBarColor;
                                              }
                                          }
                                  
                                      } catch (err) {
                                          console.error(`[adapterStatus] error: ${err.message}, stack: ${err.stack}`);
                                      }
                                  
                                      let result = JSON.stringify(adapterList);
                                      if (getState(dpList) !== result) {
                                          setState(dpList, result, true);
                                      }
                                  }
                                  
                                  adapterStatus();
                                  
                                  // Funktion um Adapter zu starten / neu starten
                                  on({ id: dpAdapterRestart }, function (obj) {
                                      var adapter = getObject(obj.state.val.toString());
                                  
                                      if (adapter.common.enabled === false) {
                                          // Adapter deaktiviert -> starten
                                          adapter.common.enabled = true;
                                      }
                                  
                                      setObject(obj.state.val, adapter);
                                      console.log(`${obj.state.val.replace('system.adapter.', '')} neugestartet`);
                                  });
                                  

                                  Javascript Adapter muss folgende libraries importieren und setObject aktiviert sein!
                                  c5bd712d-c6a9-4d5a-8245-b1e405a229be-grafik.png

                                  Weiß jemand noch wie wo man den Status abgreifen kann das ein Update für den Adapter zur Verfügung steht? Dann könnte ich noch ein Badget einfügen.

                                  <a href="https://github.com/Scrounger/ioBroker.linkeddevices">LinkedDevices Adapter</a>

                                  <a href="https://github.com/Scrounger/ioBroker.vis-materialdesign">Material Design Widgets</a>

                                  NegaleinN sigi234S 3 Antworten Letzte Antwort
                                  2
                                  • ScroungerS Scrounger

                                    @sigi234 vielen Dank für die Inspiration für den Adapter Status.

                                    Da ich aber ein fauler Mensch bin ;) und keine Lust habe jedes Mal das Widget anpassen zu müssen, wenn ich einen neuen Adapter hinzufüge oder entferne, habe ich das ganze mit nem Skript und meinem IconList Widget dynamisch erzeugt. (Adapter Version v0.2.59 - demnächst im latest !!!)
                                    Vorteil des Widget ist, dass es responsiv ist (ein layout für Handy, Tablet, Desktop) und man auch noch die Adapter starten bzw. neustarten kann :sunglasses:

                                    iconList_adapterStatus.gif

                                    View zum importieren

                                    {
                                      "settings": {
                                        "style": {
                                          "background_class": ""
                                        },
                                        "theme": "redmond",
                                        "sizex": "",
                                        "sizey": "",
                                        "gridSize": "",
                                        "snapType": null
                                      },
                                      "widgets": {
                                        "e00001": {
                                          "tpl": "tplVis-materialdesign-Icon-List",
                                          "data": {
                                            "g_fixed": false,
                                            "g_visibility": false,
                                            "g_css_font_text": false,
                                            "g_css_background": false,
                                            "g_css_shadow_padding": false,
                                            "g_css_border": false,
                                            "g_gestures": false,
                                            "g_signals": false,
                                            "g_last_change": false,
                                            "visibility-cond": "==",
                                            "visibility-val": 1,
                                            "visibility-groups-action": "hide",
                                            "wrapItems": "true",
                                            "listItemDataMethod": "jsonStringObject",
                                            "countListItems": "1",
                                            "vibrateOnMobilDevices": "50",
                                            "listLayout": "card",
                                            "itemLayout": "horizontal",
                                            "listType0": "text",
                                            "showValueLabel0": "true",
                                            "listType1": "text",
                                            "showValueLabel1": "true",
                                            "signals-cond-0": "==",
                                            "signals-val-0": true,
                                            "signals-icon-0": "/vis/signals/lowbattery.png",
                                            "signals-icon-size-0": 0,
                                            "signals-blink-0": false,
                                            "signals-horz-0": 0,
                                            "signals-vert-0": 0,
                                            "signals-hide-edit-0": false,
                                            "signals-cond-1": "==",
                                            "signals-val-1": true,
                                            "signals-icon-1": "/vis/signals/lowbattery.png",
                                            "signals-icon-size-1": 0,
                                            "signals-blink-1": false,
                                            "signals-horz-1": 0,
                                            "signals-vert-1": 0,
                                            "signals-hide-edit-1": false,
                                            "signals-cond-2": "==",
                                            "signals-val-2": true,
                                            "signals-icon-2": "/vis/signals/lowbattery.png",
                                            "signals-icon-size-2": 0,
                                            "signals-blink-2": false,
                                            "signals-horz-2": 0,
                                            "signals-vert-2": 0,
                                            "signals-hide-edit-2": false,
                                            "lc-type": "last-change",
                                            "lc-is-interval": true,
                                            "lc-is-moment": false,
                                            "lc-format": "",
                                            "lc-position-vert": "top",
                                            "lc-position-horz": "right",
                                            "lc-offset-vert": 0,
                                            "lc-offset-horz": 0,
                                            "lc-font-size": "12px",
                                            "lc-font-family": "",
                                            "lc-font-style": "",
                                            "lc-bkg-color": "",
                                            "lc-color": "",
                                            "lc-border-width": "0",
                                            "lc-border-style": "",
                                            "lc-border-color": "",
                                            "lc-border-radius": 10,
                                            "lc-zindex": 0,
                                            "jsonStringObject": "{0_userdata.0.vis.AdapterStatus.jsonList}",
                                            "maxItemsperRow": "6",
                                            "iconHeight": "60",
                                            "verticalIconContainerWidth": "100",
                                            "labelFontSize": "20",
                                            "labelFontFamily": "RobotoCondensed-Regular",
                                            "iconItemMinWidth": "290",
                                            "labelFontColor": "",
                                            "valueFontFamily": "",
                                            "subLabelFontFamily": "RobotoCondensed-Regular",
                                            "subLabelFontSize": "14",
                                            "subLabelFontColor": "#000000",
                                            "oid": "0_userdata.0.AdapterStatus.jsonList",
                                            "label0": ""
                                          },
                                          "style": {
                                            "left": "0px",
                                            "top": "0px",
                                            "width": "100%",
                                            "height": "100%",
                                            "overflow-y": "auto"
                                          },
                                          "widgetSet": "materialdesign"
                                        }
                                      },
                                      "name": "AdapterStatus",
                                      "filterList": []
                                    }
                                    

                                    Skript, Datenpunkte müsst ihr entsprechend erstellen und anpassen - siehe Kommentare im skript!
                                    Achtung wenn ich Bindings verwende geht meine vis in die Knie, deshalb wird das skript zyklisch aufgerufen.

                                    // Imports
                                    const moment = require("moment");
                                    const momentDurationFormatSetup = require("moment-duration-format");
                                    moment.locale("de");
                                    
                                    // Fomate für moment Lib
                                    let durationFormat = "dd[T] hh[h] mm[m]";
                                    
                                    let adapterSelector = `[id=system.adapter.*.alive]`;
                                    let adapterAliveList = $(adapterSelector);
                                    
                                    // Datenpunkt für IconList Widget
                                    let dpList = '0_userdata.0.vis.AdapterStatus.jsonList';
                                    
                                    // Datenpunkt für Adapter restart
                                    let dpAdapterRestart = '0_userdata.0.vis.AdapterStatus.restartTrigger';
                                    
                                    // interval die adapterStatus Funktion augerufen wird (in Sekunden)
                                    const checkInterval = 30;
                                    
                                    // Fehlermeldung ausgeben, wenn selector kein result liefert
                                    if (adapterAliveList.length === 0) {
                                        console.error(`no result for selector '${adapterSelector}'`)
                                    }
                                    
                                    adapterAliveList.on(adapterStatus);                                             // listener nur für Änderung bei alive
                                    
                                    // Funktion adapterStatus alle x Sekunden ausführen
                                    schedule('*/'+ checkInterval + ' * * * * *', adapterStatus);
                                    
                                    function adapterStatus() {
                                        let adapterList = [];
                                    
                                        try {
                                            for (var i = 0; i <= adapterAliveList.length - 1; i++) {
                                                let id = adapterAliveList[i].replace('.alive', '');
                                                let obj = getObject(adapterAliveList[i].replace('.alive', ''));
                                    
                                                let nameArray = id.replace('system.adapter.', '').split(".");
                                    
                                                let name = nameArray[0];
                                                name = name.charAt(0).toUpperCase() + name.slice(1);
                                    
                                                let nameWithInstance = name;
                                                let adapterInstance = nameArray[1];
                                                if (adapterInstance > 0) {
                                                    nameWithInstance = name + '.' + adapterInstance;
                                                }
                                    
                                                let uptime = `{d:${id + '.uptime'};Math.floor( ((d)/60/60/24) )}T {h:${id + '.uptime'};Math.floor( ((h)/60/60) % 24 )}h 
                                                {m:${id + '.uptime'};Math.floor( ((m)/60) % 60 )}m`
                                    
                                                let text = `<div style="display: flex; flex-direction: row; line-height: 1.5; padding-right: 8px; align-items: center;">
                                                                <div style="flex: 1">${nameWithInstance}</div>
                                                                <div style="color: grey; font-size: 12px; font-family: RobotoCondensed-LightItalic;">v${obj.common.version}</div>
                                                            </div>`
                                    
                                                let subText = `<div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                    <div style="flex: 1">CPU</div>
                                                                    <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${getState(id + '.cpu').val} % %</div>
                                                                </div>
                                                                <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                    <div style="flex: 1">RAM total</div>
                                                                    <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${getState(id + '.memHeapTotal').val} MB</div>
                                                                </div>
                                                                <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                    <div style="flex: 1">RAM verwendet</div>
                                                                    <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${getState(id + '.memHeapUsed').val} MB</div>
                                                                </div>
                                                                <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                    <div style="flex: 1">RAM reserviert</div>
                                                                    <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${getState(id + '.memRss').val} MB</div>
                                                                </div>
                                                                <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                    <div style="flex: 1">Betriebszeit</div>
                                                                    <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${moment.duration(getState(id + '.uptime').val, 'seconds').format(durationFormat, 0)}</div>
                                                                </div>`
                                    
                                                adapterList.push({
                                                    text: text,
                                                    subText: subText,
                                                    image: `/${nameArray[0]}.admin/${obj.common.icon}`,
                                                    listType: "buttonState",
                                                    objectId: dpAdapterRestart,
                                                    buttonStateValue: id,
                                                    statusBarColor: getStatusColor(),
                                                    showValueLabel: false
                                                })
                                    
                                                function getStatusColor() {
                                                    let statusBarColor = 'FireBrick';
                                                    if (getState(adapterAliveList[i]).val === true) {
                                                        statusBarColor = 'green';
                                                    }
                                        
                                                    if (obj.common.enabled === false) {
                                                        // Adapter ist deaktiviert
                                                        statusBarColor = 'darkgrey';
                                                    }
                                        
                                                    if (obj.common.mode === 'schedule') {
                                                        // Adapter ist zeitgesteuert
                                                        statusBarColor = 'orange';
                                                    }
                                        
                                                    return statusBarColor;
                                                }
                                            }
                                    
                                        } catch (err) {
                                            console.error(`[adapterStatus] error: ${err.message}, stack: ${err.stack}`);
                                        }
                                    
                                        let result = JSON.stringify(adapterList);
                                        if (getState(dpList) !== result) {
                                            setState(dpList, result, true);
                                        }
                                    }
                                    
                                    adapterStatus();
                                    
                                    // Funktion um Adapter zu starten / neu starten
                                    on({ id: dpAdapterRestart }, function (obj) {
                                        var adapter = getObject(obj.state.val.toString());
                                    
                                        if (adapter.common.enabled === false) {
                                            // Adapter deaktiviert -> starten
                                            adapter.common.enabled = true;
                                        }
                                    
                                        setObject(obj.state.val, adapter);
                                        console.log(`${obj.state.val.replace('system.adapter.', '')} neugestartet`);
                                    });
                                    

                                    Javascript Adapter muss folgende libraries importieren und setObject aktiviert sein!
                                    c5bd712d-c6a9-4d5a-8245-b1e405a229be-grafik.png

                                    Weiß jemand noch wie wo man den Status abgreifen kann das ein Update für den Adapter zur Verfügung steht? Dann könnte ich noch ein Badget einfügen.

                                    NegaleinN Offline
                                    NegaleinN Offline
                                    Negalein
                                    Global Moderator
                                    schrieb am zuletzt editiert von
                                    #77

                                    @Scrounger sagte in View Adapter Status:

                                    Datenpunkte müsst ihr entsprechend erstellen und anpassen

                                    Als was müssen die DP angelegt werden (Zeichenkette, Werteliste, ...)

                                    Danke

                                    ° Node.js: 20.17.0 NPM: 10.8.2
                                    ° Proxmox, Ubuntu 22.04.3 LTS
                                    ° Fixer ---> iob fix

                                    ScroungerS 1 Antwort Letzte Antwort
                                    0
                                    • NegaleinN Negalein

                                      @Scrounger sagte in View Adapter Status:

                                      Datenpunkte müsst ihr entsprechend erstellen und anpassen

                                      Als was müssen die DP angelegt werden (Zeichenkette, Werteliste, ...)

                                      Danke

                                      ScroungerS Offline
                                      ScroungerS Offline
                                      Scrounger
                                      Developer
                                      schrieb am zuletzt editiert von
                                      #78

                                      @Negalein
                                      Zeichenkette

                                      <a href="https://github.com/Scrounger/ioBroker.linkeddevices">LinkedDevices Adapter</a>

                                      <a href="https://github.com/Scrounger/ioBroker.vis-materialdesign">Material Design Widgets</a>

                                      1 Antwort Letzte Antwort
                                      1
                                      • ScroungerS Scrounger

                                        @sigi234 vielen Dank für die Inspiration für den Adapter Status.

                                        Da ich aber ein fauler Mensch bin ;) und keine Lust habe jedes Mal das Widget anpassen zu müssen, wenn ich einen neuen Adapter hinzufüge oder entferne, habe ich das ganze mit nem Skript und meinem IconList Widget dynamisch erzeugt. (Adapter Version v0.2.59 - demnächst im latest !!!)
                                        Vorteil des Widget ist, dass es responsiv ist (ein layout für Handy, Tablet, Desktop) und man auch noch die Adapter starten bzw. neustarten kann :sunglasses:

                                        iconList_adapterStatus.gif

                                        View zum importieren

                                        {
                                          "settings": {
                                            "style": {
                                              "background_class": ""
                                            },
                                            "theme": "redmond",
                                            "sizex": "",
                                            "sizey": "",
                                            "gridSize": "",
                                            "snapType": null
                                          },
                                          "widgets": {
                                            "e00001": {
                                              "tpl": "tplVis-materialdesign-Icon-List",
                                              "data": {
                                                "g_fixed": false,
                                                "g_visibility": false,
                                                "g_css_font_text": false,
                                                "g_css_background": false,
                                                "g_css_shadow_padding": false,
                                                "g_css_border": false,
                                                "g_gestures": false,
                                                "g_signals": false,
                                                "g_last_change": false,
                                                "visibility-cond": "==",
                                                "visibility-val": 1,
                                                "visibility-groups-action": "hide",
                                                "wrapItems": "true",
                                                "listItemDataMethod": "jsonStringObject",
                                                "countListItems": "1",
                                                "vibrateOnMobilDevices": "50",
                                                "listLayout": "card",
                                                "itemLayout": "horizontal",
                                                "listType0": "text",
                                                "showValueLabel0": "true",
                                                "listType1": "text",
                                                "showValueLabel1": "true",
                                                "signals-cond-0": "==",
                                                "signals-val-0": true,
                                                "signals-icon-0": "/vis/signals/lowbattery.png",
                                                "signals-icon-size-0": 0,
                                                "signals-blink-0": false,
                                                "signals-horz-0": 0,
                                                "signals-vert-0": 0,
                                                "signals-hide-edit-0": false,
                                                "signals-cond-1": "==",
                                                "signals-val-1": true,
                                                "signals-icon-1": "/vis/signals/lowbattery.png",
                                                "signals-icon-size-1": 0,
                                                "signals-blink-1": false,
                                                "signals-horz-1": 0,
                                                "signals-vert-1": 0,
                                                "signals-hide-edit-1": false,
                                                "signals-cond-2": "==",
                                                "signals-val-2": true,
                                                "signals-icon-2": "/vis/signals/lowbattery.png",
                                                "signals-icon-size-2": 0,
                                                "signals-blink-2": false,
                                                "signals-horz-2": 0,
                                                "signals-vert-2": 0,
                                                "signals-hide-edit-2": false,
                                                "lc-type": "last-change",
                                                "lc-is-interval": true,
                                                "lc-is-moment": false,
                                                "lc-format": "",
                                                "lc-position-vert": "top",
                                                "lc-position-horz": "right",
                                                "lc-offset-vert": 0,
                                                "lc-offset-horz": 0,
                                                "lc-font-size": "12px",
                                                "lc-font-family": "",
                                                "lc-font-style": "",
                                                "lc-bkg-color": "",
                                                "lc-color": "",
                                                "lc-border-width": "0",
                                                "lc-border-style": "",
                                                "lc-border-color": "",
                                                "lc-border-radius": 10,
                                                "lc-zindex": 0,
                                                "jsonStringObject": "{0_userdata.0.vis.AdapterStatus.jsonList}",
                                                "maxItemsperRow": "6",
                                                "iconHeight": "60",
                                                "verticalIconContainerWidth": "100",
                                                "labelFontSize": "20",
                                                "labelFontFamily": "RobotoCondensed-Regular",
                                                "iconItemMinWidth": "290",
                                                "labelFontColor": "",
                                                "valueFontFamily": "",
                                                "subLabelFontFamily": "RobotoCondensed-Regular",
                                                "subLabelFontSize": "14",
                                                "subLabelFontColor": "#000000",
                                                "oid": "0_userdata.0.AdapterStatus.jsonList",
                                                "label0": ""
                                              },
                                              "style": {
                                                "left": "0px",
                                                "top": "0px",
                                                "width": "100%",
                                                "height": "100%",
                                                "overflow-y": "auto"
                                              },
                                              "widgetSet": "materialdesign"
                                            }
                                          },
                                          "name": "AdapterStatus",
                                          "filterList": []
                                        }
                                        

                                        Skript, Datenpunkte müsst ihr entsprechend erstellen und anpassen - siehe Kommentare im skript!
                                        Achtung wenn ich Bindings verwende geht meine vis in die Knie, deshalb wird das skript zyklisch aufgerufen.

                                        // Imports
                                        const moment = require("moment");
                                        const momentDurationFormatSetup = require("moment-duration-format");
                                        moment.locale("de");
                                        
                                        // Fomate für moment Lib
                                        let durationFormat = "dd[T] hh[h] mm[m]";
                                        
                                        let adapterSelector = `[id=system.adapter.*.alive]`;
                                        let adapterAliveList = $(adapterSelector);
                                        
                                        // Datenpunkt für IconList Widget
                                        let dpList = '0_userdata.0.vis.AdapterStatus.jsonList';
                                        
                                        // Datenpunkt für Adapter restart
                                        let dpAdapterRestart = '0_userdata.0.vis.AdapterStatus.restartTrigger';
                                        
                                        // interval die adapterStatus Funktion augerufen wird (in Sekunden)
                                        const checkInterval = 30;
                                        
                                        // Fehlermeldung ausgeben, wenn selector kein result liefert
                                        if (adapterAliveList.length === 0) {
                                            console.error(`no result for selector '${adapterSelector}'`)
                                        }
                                        
                                        adapterAliveList.on(adapterStatus);                                             // listener nur für Änderung bei alive
                                        
                                        // Funktion adapterStatus alle x Sekunden ausführen
                                        schedule('*/'+ checkInterval + ' * * * * *', adapterStatus);
                                        
                                        function adapterStatus() {
                                            let adapterList = [];
                                        
                                            try {
                                                for (var i = 0; i <= adapterAliveList.length - 1; i++) {
                                                    let id = adapterAliveList[i].replace('.alive', '');
                                                    let obj = getObject(adapterAliveList[i].replace('.alive', ''));
                                        
                                                    let nameArray = id.replace('system.adapter.', '').split(".");
                                        
                                                    let name = nameArray[0];
                                                    name = name.charAt(0).toUpperCase() + name.slice(1);
                                        
                                                    let nameWithInstance = name;
                                                    let adapterInstance = nameArray[1];
                                                    if (adapterInstance > 0) {
                                                        nameWithInstance = name + '.' + adapterInstance;
                                                    }
                                        
                                                    let uptime = `{d:${id + '.uptime'};Math.floor( ((d)/60/60/24) )}T {h:${id + '.uptime'};Math.floor( ((h)/60/60) % 24 )}h 
                                                    {m:${id + '.uptime'};Math.floor( ((m)/60) % 60 )}m`
                                        
                                                    let text = `<div style="display: flex; flex-direction: row; line-height: 1.5; padding-right: 8px; align-items: center;">
                                                                    <div style="flex: 1">${nameWithInstance}</div>
                                                                    <div style="color: grey; font-size: 12px; font-family: RobotoCondensed-LightItalic;">v${obj.common.version}</div>
                                                                </div>`
                                        
                                                    let subText = `<div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                        <div style="flex: 1">CPU</div>
                                                                        <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${getState(id + '.cpu').val} % %</div>
                                                                    </div>
                                                                    <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                        <div style="flex: 1">RAM total</div>
                                                                        <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${getState(id + '.memHeapTotal').val} MB</div>
                                                                    </div>
                                                                    <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                        <div style="flex: 1">RAM verwendet</div>
                                                                        <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${getState(id + '.memHeapUsed').val} MB</div>
                                                                    </div>
                                                                    <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                        <div style="flex: 1">RAM reserviert</div>
                                                                        <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${getState(id + '.memRss').val} MB</div>
                                                                    </div>
                                                                    <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                        <div style="flex: 1">Betriebszeit</div>
                                                                        <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${moment.duration(getState(id + '.uptime').val, 'seconds').format(durationFormat, 0)}</div>
                                                                    </div>`
                                        
                                                    adapterList.push({
                                                        text: text,
                                                        subText: subText,
                                                        image: `/${nameArray[0]}.admin/${obj.common.icon}`,
                                                        listType: "buttonState",
                                                        objectId: dpAdapterRestart,
                                                        buttonStateValue: id,
                                                        statusBarColor: getStatusColor(),
                                                        showValueLabel: false
                                                    })
                                        
                                                    function getStatusColor() {
                                                        let statusBarColor = 'FireBrick';
                                                        if (getState(adapterAliveList[i]).val === true) {
                                                            statusBarColor = 'green';
                                                        }
                                            
                                                        if (obj.common.enabled === false) {
                                                            // Adapter ist deaktiviert
                                                            statusBarColor = 'darkgrey';
                                                        }
                                            
                                                        if (obj.common.mode === 'schedule') {
                                                            // Adapter ist zeitgesteuert
                                                            statusBarColor = 'orange';
                                                        }
                                            
                                                        return statusBarColor;
                                                    }
                                                }
                                        
                                            } catch (err) {
                                                console.error(`[adapterStatus] error: ${err.message}, stack: ${err.stack}`);
                                            }
                                        
                                            let result = JSON.stringify(adapterList);
                                            if (getState(dpList) !== result) {
                                                setState(dpList, result, true);
                                            }
                                        }
                                        
                                        adapterStatus();
                                        
                                        // Funktion um Adapter zu starten / neu starten
                                        on({ id: dpAdapterRestart }, function (obj) {
                                            var adapter = getObject(obj.state.val.toString());
                                        
                                            if (adapter.common.enabled === false) {
                                                // Adapter deaktiviert -> starten
                                                adapter.common.enabled = true;
                                            }
                                        
                                            setObject(obj.state.val, adapter);
                                            console.log(`${obj.state.val.replace('system.adapter.', '')} neugestartet`);
                                        });
                                        

                                        Javascript Adapter muss folgende libraries importieren und setObject aktiviert sein!
                                        c5bd712d-c6a9-4d5a-8245-b1e405a229be-grafik.png

                                        Weiß jemand noch wie wo man den Status abgreifen kann das ein Update für den Adapter zur Verfügung steht? Dann könnte ich noch ein Badget einfügen.

                                        sigi234S Online
                                        sigi234S Online
                                        sigi234
                                        Forum Testing Most Active
                                        schrieb am zuletzt editiert von
                                        #79

                                        @Scrounger sagte in View Adapter Status:

                                        Weiß jemand noch wie wo man den Status abgreifen kann das ein Update für den Adapter zur Verfügung steht? Dann könnte ich noch ein Badget einfügen.

                                        //  Adapter Update Notification Script
                                        /*
                                        *   @author Moritz Heusinger <moritz.heusinger@gmail.com>
                                        *   The scripts checks for adapter upgrades, everyday at 06:00 p.m., if there 
                                        *   are upgrades available it will send an E-Mail to the configured receiverMail.
                                        *
                                        *   Requirement: Running instance of the E-Mail adapter; Admin >= 3.6
                                        *
                                        *   logging:        if true, information will be logged
                                        *   senderMail:     mail address of the sender
                                        *   receiverMail:   target mail address
                                        */
                                        
                                        const logging = true;
                                        
                                        const senderMail = 'xxxxxxxxxxt';
                                        const receiverMail = 'xxxxxxxxxxxt';
                                        
                                        on({id: 'admin.0.info.updatesJson', ack: true, change: 'ne'}, (obj) => {
                                            if(!getState('admin.0.info.newUpdates').val) return;
                                            if (logging) log('New adapter updates are available', 'info');
                                            let upgradeable = JSON.parse(obj.state.val);
                                            let text = 'Die folgenden Adapter sind aktualisierbar:\n';
                                            for (let adapter in upgradeable) {
                                                text += 'Adapter ' + JSON.stringify(adapter) + ' kann von ' + 
                                                    upgradeable[adapter].installedVersion + ' auf ' + 
                                                    upgradeable[adapter].availableVersion + ' aktualisiert werden.\n';
                                            } // endFor
                                            sendTo('email', {
                                                    from:    senderMail,
                                                    to:      receiverMail,
                                                    subject: 'Es sind neue Adapter Updates für deinen ioBroker verfügbar',
                                                    text:    text
                                            });
                                        });
                                        

                                        Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                                        Immer Daten sichern!

                                        ScroungerS 1 Antwort Letzte Antwort
                                        1
                                        • ScroungerS Scrounger

                                          @sigi234 vielen Dank für die Inspiration für den Adapter Status.

                                          Da ich aber ein fauler Mensch bin ;) und keine Lust habe jedes Mal das Widget anpassen zu müssen, wenn ich einen neuen Adapter hinzufüge oder entferne, habe ich das ganze mit nem Skript und meinem IconList Widget dynamisch erzeugt. (Adapter Version v0.2.59 - demnächst im latest !!!)
                                          Vorteil des Widget ist, dass es responsiv ist (ein layout für Handy, Tablet, Desktop) und man auch noch die Adapter starten bzw. neustarten kann :sunglasses:

                                          iconList_adapterStatus.gif

                                          View zum importieren

                                          {
                                            "settings": {
                                              "style": {
                                                "background_class": ""
                                              },
                                              "theme": "redmond",
                                              "sizex": "",
                                              "sizey": "",
                                              "gridSize": "",
                                              "snapType": null
                                            },
                                            "widgets": {
                                              "e00001": {
                                                "tpl": "tplVis-materialdesign-Icon-List",
                                                "data": {
                                                  "g_fixed": false,
                                                  "g_visibility": false,
                                                  "g_css_font_text": false,
                                                  "g_css_background": false,
                                                  "g_css_shadow_padding": false,
                                                  "g_css_border": false,
                                                  "g_gestures": false,
                                                  "g_signals": false,
                                                  "g_last_change": false,
                                                  "visibility-cond": "==",
                                                  "visibility-val": 1,
                                                  "visibility-groups-action": "hide",
                                                  "wrapItems": "true",
                                                  "listItemDataMethod": "jsonStringObject",
                                                  "countListItems": "1",
                                                  "vibrateOnMobilDevices": "50",
                                                  "listLayout": "card",
                                                  "itemLayout": "horizontal",
                                                  "listType0": "text",
                                                  "showValueLabel0": "true",
                                                  "listType1": "text",
                                                  "showValueLabel1": "true",
                                                  "signals-cond-0": "==",
                                                  "signals-val-0": true,
                                                  "signals-icon-0": "/vis/signals/lowbattery.png",
                                                  "signals-icon-size-0": 0,
                                                  "signals-blink-0": false,
                                                  "signals-horz-0": 0,
                                                  "signals-vert-0": 0,
                                                  "signals-hide-edit-0": false,
                                                  "signals-cond-1": "==",
                                                  "signals-val-1": true,
                                                  "signals-icon-1": "/vis/signals/lowbattery.png",
                                                  "signals-icon-size-1": 0,
                                                  "signals-blink-1": false,
                                                  "signals-horz-1": 0,
                                                  "signals-vert-1": 0,
                                                  "signals-hide-edit-1": false,
                                                  "signals-cond-2": "==",
                                                  "signals-val-2": true,
                                                  "signals-icon-2": "/vis/signals/lowbattery.png",
                                                  "signals-icon-size-2": 0,
                                                  "signals-blink-2": false,
                                                  "signals-horz-2": 0,
                                                  "signals-vert-2": 0,
                                                  "signals-hide-edit-2": false,
                                                  "lc-type": "last-change",
                                                  "lc-is-interval": true,
                                                  "lc-is-moment": false,
                                                  "lc-format": "",
                                                  "lc-position-vert": "top",
                                                  "lc-position-horz": "right",
                                                  "lc-offset-vert": 0,
                                                  "lc-offset-horz": 0,
                                                  "lc-font-size": "12px",
                                                  "lc-font-family": "",
                                                  "lc-font-style": "",
                                                  "lc-bkg-color": "",
                                                  "lc-color": "",
                                                  "lc-border-width": "0",
                                                  "lc-border-style": "",
                                                  "lc-border-color": "",
                                                  "lc-border-radius": 10,
                                                  "lc-zindex": 0,
                                                  "jsonStringObject": "{0_userdata.0.vis.AdapterStatus.jsonList}",
                                                  "maxItemsperRow": "6",
                                                  "iconHeight": "60",
                                                  "verticalIconContainerWidth": "100",
                                                  "labelFontSize": "20",
                                                  "labelFontFamily": "RobotoCondensed-Regular",
                                                  "iconItemMinWidth": "290",
                                                  "labelFontColor": "",
                                                  "valueFontFamily": "",
                                                  "subLabelFontFamily": "RobotoCondensed-Regular",
                                                  "subLabelFontSize": "14",
                                                  "subLabelFontColor": "#000000",
                                                  "oid": "0_userdata.0.AdapterStatus.jsonList",
                                                  "label0": ""
                                                },
                                                "style": {
                                                  "left": "0px",
                                                  "top": "0px",
                                                  "width": "100%",
                                                  "height": "100%",
                                                  "overflow-y": "auto"
                                                },
                                                "widgetSet": "materialdesign"
                                              }
                                            },
                                            "name": "AdapterStatus",
                                            "filterList": []
                                          }
                                          

                                          Skript, Datenpunkte müsst ihr entsprechend erstellen und anpassen - siehe Kommentare im skript!
                                          Achtung wenn ich Bindings verwende geht meine vis in die Knie, deshalb wird das skript zyklisch aufgerufen.

                                          // Imports
                                          const moment = require("moment");
                                          const momentDurationFormatSetup = require("moment-duration-format");
                                          moment.locale("de");
                                          
                                          // Fomate für moment Lib
                                          let durationFormat = "dd[T] hh[h] mm[m]";
                                          
                                          let adapterSelector = `[id=system.adapter.*.alive]`;
                                          let adapterAliveList = $(adapterSelector);
                                          
                                          // Datenpunkt für IconList Widget
                                          let dpList = '0_userdata.0.vis.AdapterStatus.jsonList';
                                          
                                          // Datenpunkt für Adapter restart
                                          let dpAdapterRestart = '0_userdata.0.vis.AdapterStatus.restartTrigger';
                                          
                                          // interval die adapterStatus Funktion augerufen wird (in Sekunden)
                                          const checkInterval = 30;
                                          
                                          // Fehlermeldung ausgeben, wenn selector kein result liefert
                                          if (adapterAliveList.length === 0) {
                                              console.error(`no result for selector '${adapterSelector}'`)
                                          }
                                          
                                          adapterAliveList.on(adapterStatus);                                             // listener nur für Änderung bei alive
                                          
                                          // Funktion adapterStatus alle x Sekunden ausführen
                                          schedule('*/'+ checkInterval + ' * * * * *', adapterStatus);
                                          
                                          function adapterStatus() {
                                              let adapterList = [];
                                          
                                              try {
                                                  for (var i = 0; i <= adapterAliveList.length - 1; i++) {
                                                      let id = adapterAliveList[i].replace('.alive', '');
                                                      let obj = getObject(adapterAliveList[i].replace('.alive', ''));
                                          
                                                      let nameArray = id.replace('system.adapter.', '').split(".");
                                          
                                                      let name = nameArray[0];
                                                      name = name.charAt(0).toUpperCase() + name.slice(1);
                                          
                                                      let nameWithInstance = name;
                                                      let adapterInstance = nameArray[1];
                                                      if (adapterInstance > 0) {
                                                          nameWithInstance = name + '.' + adapterInstance;
                                                      }
                                          
                                                      let uptime = `{d:${id + '.uptime'};Math.floor( ((d)/60/60/24) )}T {h:${id + '.uptime'};Math.floor( ((h)/60/60) % 24 )}h 
                                                      {m:${id + '.uptime'};Math.floor( ((m)/60) % 60 )}m`
                                          
                                                      let text = `<div style="display: flex; flex-direction: row; line-height: 1.5; padding-right: 8px; align-items: center;">
                                                                      <div style="flex: 1">${nameWithInstance}</div>
                                                                      <div style="color: grey; font-size: 12px; font-family: RobotoCondensed-LightItalic;">v${obj.common.version}</div>
                                                                  </div>`
                                          
                                                      let subText = `<div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                          <div style="flex: 1">CPU</div>
                                                                          <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${getState(id + '.cpu').val} % %</div>
                                                                      </div>
                                                                      <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                          <div style="flex: 1">RAM total</div>
                                                                          <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${getState(id + '.memHeapTotal').val} MB</div>
                                                                      </div>
                                                                      <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                          <div style="flex: 1">RAM verwendet</div>
                                                                          <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${getState(id + '.memHeapUsed').val} MB</div>
                                                                      </div>
                                                                      <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                          <div style="flex: 1">RAM reserviert</div>
                                                                          <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${getState(id + '.memRss').val} MB</div>
                                                                      </div>
                                                                      <div style="display: flex; flex-direction: row; line-height: 1.3; padding-left: 1px; padding-right: 8px; align-items: center;">
                                                                          <div style="flex: 1">Betriebszeit</div>
                                                                          <div style="color: grey; font-size: 14px; font-family: RobotoCondensed-LightItalic;">${moment.duration(getState(id + '.uptime').val, 'seconds').format(durationFormat, 0)}</div>
                                                                      </div>`
                                          
                                                      adapterList.push({
                                                          text: text,
                                                          subText: subText,
                                                          image: `/${nameArray[0]}.admin/${obj.common.icon}`,
                                                          listType: "buttonState",
                                                          objectId: dpAdapterRestart,
                                                          buttonStateValue: id,
                                                          statusBarColor: getStatusColor(),
                                                          showValueLabel: false
                                                      })
                                          
                                                      function getStatusColor() {
                                                          let statusBarColor = 'FireBrick';
                                                          if (getState(adapterAliveList[i]).val === true) {
                                                              statusBarColor = 'green';
                                                          }
                                              
                                                          if (obj.common.enabled === false) {
                                                              // Adapter ist deaktiviert
                                                              statusBarColor = 'darkgrey';
                                                          }
                                              
                                                          if (obj.common.mode === 'schedule') {
                                                              // Adapter ist zeitgesteuert
                                                              statusBarColor = 'orange';
                                                          }
                                              
                                                          return statusBarColor;
                                                      }
                                                  }
                                          
                                              } catch (err) {
                                                  console.error(`[adapterStatus] error: ${err.message}, stack: ${err.stack}`);
                                              }
                                          
                                              let result = JSON.stringify(adapterList);
                                              if (getState(dpList) !== result) {
                                                  setState(dpList, result, true);
                                              }
                                          }
                                          
                                          adapterStatus();
                                          
                                          // Funktion um Adapter zu starten / neu starten
                                          on({ id: dpAdapterRestart }, function (obj) {
                                              var adapter = getObject(obj.state.val.toString());
                                          
                                              if (adapter.common.enabled === false) {
                                                  // Adapter deaktiviert -> starten
                                                  adapter.common.enabled = true;
                                              }
                                          
                                              setObject(obj.state.val, adapter);
                                              console.log(`${obj.state.val.replace('system.adapter.', '')} neugestartet`);
                                          });
                                          

                                          Javascript Adapter muss folgende libraries importieren und setObject aktiviert sein!
                                          c5bd712d-c6a9-4d5a-8245-b1e405a229be-grafik.png

                                          Weiß jemand noch wie wo man den Status abgreifen kann das ein Update für den Adapter zur Verfügung steht? Dann könnte ich noch ein Badget einfügen.

                                          sigi234S Online
                                          sigi234S Online
                                          sigi234
                                          Forum Testing Most Active
                                          schrieb am zuletzt editiert von sigi234
                                          #80

                                          @Scrounger

                                          13:02:30.106	warn	javascript.0 (8000) at getStatusColor (script.js.Sigi.Adapter_Abfrage:93:21)
                                          13:02:30.106	warn	javascript.0 (8000) at Object.adapterStatus (script.js.Sigi.Adapter_Abfrage:87:33)
                                          

                                          Screenshot (1768).png

                                          Screenshot (1770).png

                                          Bitte benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                                          Immer Daten sichern!

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


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          365

                                          Online

                                          32.4k

                                          Benutzer

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