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

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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. (gelöst) Zwei Fragen zu VIS und Javascript (JS Job stopt ./. Parameter von VIS an JS übergeben)

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

(gelöst) Zwei Fragen zu VIS und Javascript (JS Job stopt ./. Parameter von VIS an JS übergeben)

Geplant Angeheftet Gesperrt Verschoben Visualisierung
10 Beiträge 6 Kommentatoren 3.4k Aufrufe
  • Ä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.
  • R Offline
    R Offline
    rayman
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,

    ich spiele (sofern meine Kinder und meine Frau mir Zeit lässt) seit kurzer Zeit mit dem ioBroker und bin richtig zufrieden mit der Lösung!

    In den letzten Tagen habe ich nun mit der automatisierten Bearbeitung des Anwesenheitsstatus im Haus beschäftigt.

    In einem Eigenen Objekt pro Familienmitglied wird ein Logikwert (true | false) gespeichert

    eigene-objekte.0.status.anwesenheit.anwesend_familie
    eigene-objekte.0.status.anwesenheit.anwesend_philipp
    eigene-objekte.0.status.anwesenheit.anwesend_
    

    Die Werte möchte ich über mehrere Wege manipulieren. Ich möchte über einen Button jedem Mitglied die einfache Möglichkeit geben beim Verlassen des Hauses seinen Zustand zu ändern.

    Dafür habe ich mir (ersta mal für jedes Familienmitglied ein JS gebaut - Ich weiß noch nicht wie ich parameter an JS übergeben kann)

    /* 
    Setzten den Wert eines Objekts um so dass dieser später interpretiert werden kann.
    
    Invertiert den Wert einfach auf true oder false
    
    Version 0.0.1
    */
    
    var logging = true;
    var person =  'philipp';
    
    state = getState('eigene-objekte.0.status.anwesenheit.anwesend_' +person).val;
    
    if (logging) log('Aktueller Zustand: ' + state);
    
    if (state) {
        setstate = false
        setState('eigene-objekte.0.status.anwesenheit.anwesend_' + person, setstate);
        if (logging) log('Zustand geändert auf : ' + setstate);
    }
    if (!state) {
        setstate = true
        setState('eigene-objekte.0.status.anwesenheit.anwesend_' + person, setstate);
        if (logging) log('Zustand geändert auf : ' + setstate);
    }
    
    

    Das script läuft einwandfrei wenn ich es manuell "aktualisiere" etc.

    Nun habe ich mir im VIS einen Button gebaut und diesen auf das JS verlinkt (siehe unten rechts):
    3490_check_anonym.png

    Der Status wird auch abgefragt und das entsprechende Symbol angezeigt.

    Klicke ich nun auf einen der vier Buttons wird das JS gestoppt.

    javascript.0	2017-09-22 13:32:39.994	info	Stop script script.js.Eigene-Scripte.Anwesenheit.anw_philipp
    
    

    Beendet:

    ~~![](</s><URL url=)https://img2.picload.org/image/dgaorcdw/script.png" />

    Manuell macht er es 1A

    ~~![](</s><URL url=)https://img3.picload.org/image/dgaorcol/script2.png" />

    Geändert zum zweiten Mal:

    ~~![](</s><URL url=)https://img2.picload.org/image/dgaorcll/script3.png" />

    Frage 1) Was mache ich falsch

    Frage 2) Wie kann ich über den Button einen Wert an das JS übergeben? Aktuell habe ich vier Scripte (für Jedes Familienmitglied eines). Gerne würde ich aber den Namen an das Script übergeben udn diesen später dann verwenden. Halt eben in einem script.

    LG

    Philipp

    Hier noch mein Widget vom Button

    [{"tpl":"tplJquiButtonState","data":{"oid":"javascript.0.scriptEnabled.Eigene-Scripte.Anwesenheit.anw_luise","g_fixed":true,"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":true,"visibility-cond":"==",
    "visibility-val":1,"visibility-groups-action":"hide","buttontext":"","signals-cond-0":"==",
    "signals-val-0":true,"signals-icon-0":"/vis.0/Meine_Images/control_all_green.png",
    "signals-icon-size-0":"67","signals-blink-0":false,"signals-horz-0":0,"signals-vert-0":0,
    "signals-hide-edit-0":false,"signals-cond-1":"==","signals-val-1":"false",
    "signals-icon-1":"/vis.0/Meine_Images/control_all_red.png","signals-icon-size-1":"67",
    "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,"html_append":"","name":"Anzeige_Anwesenheit_Status_Luise",
    "signals-oid-0":"eigene-objekte.0.status.anwesenheit.anwesend_luise",
    "signals-oid-1":"eigene-objekte.0.status.anwesenheit.anwesend_luise"},
    "style":{"left":"798px","top":"862px","width":"67px","height":"67px"},
    "widgetSet":"jqui"}]
    ````~~~~~~
    1 Antwort Letzte Antwort
    0
    • R Offline
      R Offline
      rayman
      schrieb am zuletzt editiert von
      #2

      oh man, ganz einfach das mit dem js script das stoppt.

      wenn man dem button kein value mitgibt, dann beendet er anscheinend das script..

      als value gebe ich nun true mit.

      und tata es geht =)

      Bleibt noch die Frage wie ich über den VIS Button einen Parameter übergeben bekomme.

      Mein Kopf glüht.

      ![](</s><URL url=)https://img3.picload.org/image/dgaodgow/jawohl.png" />

      1 Antwort Letzte Antwort
      0
      • AlCalzoneA Offline
        AlCalzoneA Offline
        AlCalzone
        Developer
        schrieb am zuletzt editiert von
        #3

        @rayman:

        ![](</s><URL url=)https://img3.picload.org/image/dgaodgow/jawohl.png" /> ` ~~Wofür brauchst du eigentlich die Skripte? Kannst doch in VIS direkt in den jeweiligen Anwesenheits-Datenpunkt schreiben anstatt scriptEnabled.

        So kannst du auch in Abhängigkeit vom Wert des Datenpunkts die Anwesenheit visualisieren. Frag mich jetzt aber nicht wie, ich benutze VIS nicht.

        Parameter an Skripte übergeben ist so nicht gedacht. Das Skript ist ein in sich geschlossenes Programm, das jedoch auf Änderungen an Datenpunkten reagieren kann.~~

        Warum `sudo` böse ist: https://forum.iobroker.net/post/17109

        1 Antwort Letzte Antwort
        0
        • P Offline
          P Offline
          pix
          schrieb am zuletzt editiert von
          #4

          Hallo.

          genau so ist es. Eigentlich wird ein Skript nicht bei Bedarf gestartet. Es sollte immer laufen. Es überwacht die gelisteten Objekte auf Änderung/Aktualisierung und reagiert dann. Oder es führt Aktionen nach Zeitsteuerungen aus.

          AlCalzone hat den richtigen Weg gewiesen. Schreibe in VIS direkt in die Datenpunkte oder nutze ein Boolean-Toggle Widget (zB Metro-Toggle).

          Dann brauchst du für die Ausführung der Aktionen (also der Logs, Mitteilungen etc.) noch einen Trigger. Das ist die on-Funktion. Ohne diese Subscription werden die Werte nur bei Skriptstart eingelesen. Sie sollen aber immer bei Änderung oder Änderung eingelesen und verarbeitet werden:

          /* 
          Setzten den Wert eines Objekts um so dass dieser später interpretiert werden kann.
          
          Invertiert den Wert einfach auf true oder false
          
          Version 0.0.1
          */
          
          var logging = true;
          var person =  'philipp';
          
          // ich bennene state in idState um.
          idState = getState('eigene-objekte.0.status.anwesenheit.anwesend_' +person).val;
          
          on(idState, function (obj) {
              var status; // variable anlegen, name status ist besser als setstate
              if (logging) log('Aktueller Zustand: ' + obj.state.val);
              if (obj.state.val) { // wenn true
                  status = false;
                  setState(idState, status);
              }
              if (!obj.state.val) { // wenn false, man könnte auch else nehmen
                  status = true;
                  setState(idState, status);
              }
              if (logging) log('Zustand geändert auf : ' + status); // einmal am Ende reicht
          }
          
          

          Es geht noch kürzer, aber ich will nicht zu viele Änderungen auf einmal vornehmen…

          Gruß

          Pix

          ioBroker auf Ubuntu in Proxmox (früher Mac mini (bis OS X 10.12.6 Sierra), VIS via iOS; angeschlossen: Homematic CCU2, Homepilot 1, ConBee II, einige Wemos, Sonos, Unifi CK+Protect, Homekit, Homebridge; KEIN blockly! Github-Profil

          1 Antwort Letzte Antwort
          0
          • R Offline
            R Offline
            rayman
            schrieb am zuletzt editiert von
            #5

            Hallo zusammen,

            danke für das Feedback. Entschuldigt bitte die späte Rückmeldung. Ich wurde gestern kurz nach dem Post sehr ungemütlich von der Familie entführt :-) und komme erst jetzt wieder an den PC.

            Ich schaue mir das mal an mit der "Vereinfachung" das hört sich logisch an.

            > . Schreibe in VIS direkt in die Datenpunkte oder nutze ein Boolean-Toggle Widget (zB Metro-Toggle).

            Das werde ich probieren und eine Rückmeldung geben.

            Gruß

            1 Antwort Letzte Antwort
            0
            • BluefoxB Offline
              BluefoxB Offline
              Bluefox
              schrieb am zuletzt editiert von
              #6

              @rayman:

              Hallo zusammen,

              ich spiele (sofern meine Kinder und meine Frau mir Zeit lässt) seit kurzer Zeit mit dem ioBroker und bin richtig zufrieden mit der Lösung!

              In den letzten Tagen habe ich nun mit der automatisierten Bearbeitung des Anwesenheitsstatus im Haus beschäftigt.

              In einem Eigenen Objekt pro Familienmitglied wird ein Logikwert (true | false) gespeichert

              eigene-objekte.0.status.anwesenheit.anwesend_familie
              eigene-objekte.0.status.anwesenheit.anwesend_philipp
              eigene-objekte.0.status.anwesenheit.anwesend_
              

              Die Werte möchte ich über mehrere Wege manipulieren. Ich möchte über einen Button jedem Mitglied die einfache Möglichkeit geben beim Verlassen des Hauses seinen Zustand zu ändern.

              Dafür habe ich mir (ersta mal für jedes Familienmitglied ein JS gebaut - Ich weiß noch nicht wie ich parameter an JS übergeben kann) `
              Ich finde deine View klasse!

              Darf ich die Publishen (z.B. Facebook)? Unter welchen Bedienungen?

              1 Antwort Letzte Antwort
              0
              • T Offline
                T Offline
                tempestas
                schrieb am zuletzt editiert von
                #7

                gibt es einen Grund für das Script?

                Du kannst auch einfach so die States anlegen (meinetwegen via Skript) und dann einfach nur z.B. metro tile toggle nutzen um hin und her zu schalten. Dafür braucht es kein Skript.

                Edit: sorry, habe vor lauter Bildern nicht gesehe, dass schon lange geantwortet wurde

                <size="85">ioBroker | 21 Adapter | Ubuntu Server | intel NUC | Homematic CCU2 | Hue | Osram Lightify| Sonos | 2x Instar Cam | Samsung Tab A 2016 im Holzrahmen| 3x Echo dot | 1x Echo | Neato Botvac D5</size>

                1 Antwort Letzte Antwort
                0
                • R Offline
                  R Offline
                  rayman
                  schrieb am zuletzt editiert von
                  #8

                  @Bluefox:

                  Ich finde deine View klasse!

                  Darf ich die Publishen (z.B. Facebook)? Unter welchen Bedienungen? `

                  Hi,

                  Kannst du gerne verwenden. Ich bin noch in den Feinarbeiten und somit wird es alle paar Tage etwas anders aussehen. Aber vom Prinzip her ist das Layout fertig.

                  Ich stelle keine Bedingungen.

                  1 Antwort Letzte Antwort
                  0
                  • R Offline
                    R Offline
                    rayman
                    schrieb am zuletzt editiert von
                    #9

                    @tempestas:

                    gibt es einen Grund für das Script?

                    Du kannst auch einfach so die States anlegen (meinetwegen via Skript) und dann einfach nur z.B. metro tile toggle nutzen um hin und her zu schalten. Dafür braucht es kein Skript.

                    Edit: sorry, habe vor lauter Bildern nicht gesehe, dass schon lange geantwortet wurde `

                    Hi,

                    ich habe es mir tatsächlich sehr umständlich gemacht.

                    Für das ganze VIS brauche ich mehr Zeit. Woher nehmen wenn nicht vorhanden :D

                    1 Antwort Letzte Antwort
                    0
                    • A Offline
                      A Offline
                      AingTii
                      schrieb am zuletzt editiert von
                      #10

                      Hallo Zusammen,

                      da hätte ich mal noch ne Frage zu.

                      Zum einen, gibt es einen VIS Button mit 3 Stati senkrecht?

                      zum anderen gibt es oder am besten kann ich dem Button auch eigene Zustände anheften?

                      also nicht True, False etc. sondern so dass ein Skript dann auch Auf, Zu, Stop, Warten etc.

                      erfassen kann?

                      Dann die Frage, wenn ich nun 10 Rolläden steuern möchte, müsste ich für jeden Rollladen ein eigenes Skript

                      anlegen oder könnte ich den einen Datenpunkt mit z.B 30 verschiedenn Stati berschreiben

                      und das Skript nimtm den Status udn schreibt ihn ins Log oder sendet ihn?

                      Beispiel:

                      Rollladen1Up

                      Rollladen1Stop

                      Rollladen1Down

                      Rollladen2Up

                      ….

                      Danke

                      Gruß jens

                      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

                      547

                      Online

                      32.7k

                      Benutzer

                      82.4k

                      Themen

                      1.3m

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

                      • Du hast noch kein Konto? Registrieren

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