Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [gelöst] WOL als Magicpaket an NAS per Blockly-Script

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    [gelöst] WOL als Magicpaket an NAS per Blockly-Script

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

      Hallo in die Runde,

      da ich so gar keinen Plan von Javascript habe und im Forum auch noch nichts in die Richtung gefunden habe,das mir weitergeholfen hätte, hier meine Frage:

      Ich habe ein Buffalo Linkstation LS-WXL 848 : LinkStation Duo (NAS) als zentrales 'Medienarchiv' für Filme und Serien.

      Sobald mein PC läuft, sendet dieser über das laufende Programm NAS-Navigator laufend WOL-Pakete an das NAS, so dass dieses, sobald die Pakete eintreffen, hochfährt und 'wach bleibt'. Wenn der PC runterfährt und somit die Pakete ausbleiben, fährt das NAS auch runter.

      Problem: Nicht immer, wenn ich am TV ne Serie schauen will, möchte ich den PC als 'Wachhalter' laufen lassen.

      Ich denke, folgende Idee ist umsetzbar - nur fehlen mir die Programmierkenntnisse in Blockly oder Javascript 😞

      Was ich bräuchte, wäre ein Script, dass permanent läuft in in gewissen Intervallen (z.B. 30 Sekunden) den Status eines Objektes (z.B. Philips-Hue-Raumstatus) ausliest und wenn dieser auf 'true' (also eingeschaltet) ist, das WOL-Paket sendet.

      Hat jemand ne Idee? Mac-Adresse und statische IP-Adresse hab ich zur Hand - brauche ich auf meinem Raspberry3 dafür noch ne Software, die ich (dann per Script) ansteuere oder kann das iobroker?

      LG

      Markus

      1 Reply Last reply Reply Quote 0
      • Jey Cee
        Jey Cee Developer last edited by

        Schau mal hier: http://www.iobroker.info/forum/viewtopi … =20&t=4587

        Und statt ständig WOL packete zu schicken würde ich das NAS per remote Befehl herunterfahren. Da gibts bestimmt ne Möglichkeit.

        Gesendet von meinem HTC 10 mit Tapatalk

        1 Reply Last reply Reply Quote 0
        • S
          Sirius_77 last edited by

          Hallo und guten morgen!

          Erstmal vielen Dank für die Info - nur hänge ich da auch 😞

          Ich hab den Code mal übernommen und mit 'meiner' MAC-Adresse ergänzt und mit meinem 'Auslöser'

          Beim Speichern bekomme ich die Fehlermeldung

          07:50:30.669 [error] javascript.0 script.js.Nas-Live compile failed: SyntaxError: missing ) after argument list

          Hab ich nen Denkfehler?

          Außerdem: das Wachhalten mittels regelmäßigen WOL-Paketen muss und soll so sein - der TV ist ja nicht der einziger 'Nutzer' des NAS - und von den PCs aus ist das mittels Software kein Problem.
          3768_screenshot-2017-10-16_iobroker_admin.jpg

          1 Reply Last reply Reply Quote 0
          • arteck
            arteck Developer Most Active last edited by

            pack die MAC zwischen "" dann wird es gehen..

            1 Reply Last reply Reply Quote 0
            • S
              Sirius_77 last edited by

              @arteck

              Vielen Dank für den Tipp!

              @ Dutchman:

              Ich hatte das anfangs gepostete genommen.

              mit den " um die MAC-Adresse und dem Entfernen der geschweiften Klammer entschwinden die Fehlermeldungen. 🙂

              Nur das NAS fährt trotzdem nicht hoch.

              Das im letzten Schnipsel mi dem Datenpunkt - da versteh ich nur Bahnhof - da hab ich nicht ge-copy-und-pastet

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

                Was hast du denn für ein NAS?

                Hast du nicht die Möglichkeit einen Energiesparmodus direkt auf dem NAS einzurichten?

                Mein NAS ist zum Beispiel so konfiguriert, dass nach 2 Stunden ohne Zugriff die Festplatten abgeschaltet werden und das System in Standby geht - und sobald jemand auf irgend eine Datei zugreifen will werden die Festplatten wieder eingeschaltet. Da brauche ich kein WOL und keiner braucht sich um irgendwas Gedanken zu machen. Einfach auf einen Ordner zugreifen und das NAS startet automatisch.

                So etwas gibt es doch bestimmt auch auf deinem NAS?

                Oder hat es einen bestimmten Grund dass du unbedingt mit WOL Arbeiten willst? 🙂

                Gruß

                1 Reply Last reply Reply Quote 0
                • S
                  Sirius_77 last edited by

                  @BuZZy:

                  Was hast du denn für ein NAS?

                  Hast du nicht die Möglichkeit einen Energiesparmodus direkt auf dem NAS einzurichten?

                  Mein NAS ist zum Beispiel so konfiguriert, dass nach 2 Stunden ohne Zugriff die Festplatten abgeschaltet werden und das System in Standby geht - und sobald jemand auf irgend eine Datei zugreifen will werden die Festplatten wieder eingeschaltet. Da brauche ich kein WOL und keiner braucht sich um irgendwas Gedanken zu machen. Einfach auf einen Ordner zugreifen und das NAS startet automatisch.

                  So etwas gibt es doch bestimmt auch auf deinem NAS?

                  Oder hat es einen bestimmten Grund dass du unbedingt mit WOL Arbeiten willst? 🙂

                  Gruß `

                  Hallo,

                  es handelt sich um eine Buffalo Linkstation LS-WXL 848 : LinkStation Duo (NAS)

                  Ich finde es persönlich ganz charmant - und wüsste auch nicht, wo ich was umkonfigurieren sollte - ich meine, über den Fernseher greife ich ja nicht auf eine bestimmte Datei oder einen Ordner zu, sondern der Fernseher sucht den DNLA-Server, der auf dem NAS aktiv ist.

                  Ich dachte, das wäre keine große Sache, regelmäßige WOL-Pakete zu senden, aber wenn doch, dann mach ich nen Haken dran.

                  Ich hab auf nem 2. Rasapberry Openelec / Kodi laufen, da konnte man das relativ einfach hinterlegen (mit dem Add-On :Advanced Wake On Lan)…

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

                    Also so war das nun nicht gemeint. Ich dachte bloß es wäre ja einfacher einfach das NAS entsprechend zu konfigurieren. Bei mir ist der DLNA Server trotz Ruhezustand erreichbar. Wie gesagt, das NAS schaltet sich erst ein wenn es wirklich gebraucht wird.. Mit Buffalo NAS kenne ich mich allerdings nicht aus.. 😄 …

                    Natürlich ist es mit ioBroker möglich alle 30 Sekunden ein WOL Paket zu senden.

                    Wie weit bist du denn jetzt? Hab ich es richtig verstanden, dass du es noch nicht hinbekommen hast dein NAS mit dem Script aufzuwecken? Oder bist du da schon weiter gekommen und brauchst nur noch Hilfe wie du alle 30 Sekunden das WOL Paket senden kannst?

                    Zeig mal bitte dein Script wie es bis jetzt aussieht. 🙂

                    Gruß

                    1 Reply Last reply Reply Quote 0
                    • S
                      Sirius_77 last edited by

                      Vielen Dank für die Antwort

                      Ich hab es immerhin hinbekommen, dass das NAS einmalig hochfährt, wenn ich die Hue-Lampe anschalte.

                      Mein Problem war, dass der pi nicht per Netzwerkkabel, sondern nur per WLAN verbunden war 😉

                      Was mir fehlt, ist die regelmäßige Überprüfung, ob die Lampe noch auf True steht und wenn ja, dann die Funktion, die das Paket sendet.
                      3768_ae774572-ad89-4ce5-a95a-bd1f4e84e55d.jpeg

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

                        Es ist einfacher wenn du dein Script hier rein kopierst, anstatt ein Screenshot zu machen.

                        .. Sonst müssen wir immer so viel abtippen.. 😛

                        Gruß

                        1 Reply Last reply Reply Quote 0
                        • S
                          Sirius_77 last edited by

                          O. k., mache ich später. Bin gerade nur mit dem Handy online. Da ließ es sich nicht rauskopieren 😞

                          Aber schon mal vielen Dank.

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

                            Kein Problem, war in deinem Fall jetzt nicht so viel Code..

                            Hier mal mein Vorschlag:

                            var wol = require('wake_on_lan');
                            var Zeitplan = null;
                            function WOLSenden() {
                            	if (getState('hue.0.Philips_hue.Lichtbox.on').val === true) {
                            		wol.wake("4C:...:48");
                            	} else {
                            		clearSchedule(Zeitplan);
                            		log('Lichtbox aus. Zeitplan gelöscht - warte wieder auf Lichtbox an.');
                            	}
                            }
                            
                            on({id: "hue.0.Philips_hue.Lichtbox.on", val: true}, function (obj) {
                            	log('Lichtbox an. Sende alle 60 Sekunden WOL Paket.');
                            	Zeitplan = schedule("* * * * *", WOLSenden);
                            });
                            

                            Musst deine MAC Adresse noch in Zeile 5 eintragen. ("4C:…:48") habe ich jetzt mal als Platzhalter eingetragen.

                            Gruß

                            D3ltoroxp 1 Reply Last reply Reply Quote 0
                            • S
                              Sirius_77 last edited by

                              @BuZZy und alle die sich an der Diskussion beteiligt haben:

                              Vielen Dank! Nun läuft das Script genauso, wie ich mir das vorgestellt habe!

                              In diesem Sinne: Gute Nacht 🙂

                              1 Reply Last reply Reply Quote 0
                              • D3ltoroxp
                                D3ltoroxp @BuZZy last edited by

                                @BuZZy said in [gelöst] WOL als Magicpaket an NAS per Blockly-Script:

                                Kein Problem, war in deinem Fall jetzt nicht so viel Code..

                                Hier mal mein Vorschlag:

                                var wol = require('wake_on_lan');
                                var Zeitplan = null;
                                function WOLSenden() {
                                	if (getState('hue.0.Philips_hue.Lichtbox.on').val === true) {
                                		wol.wake("4C:...:48");
                                	} else {
                                		clearSchedule(Zeitplan);
                                		log('Lichtbox aus. Zeitplan gelöscht - warte wieder auf Lichtbox an.');
                                	}
                                }
                                
                                on({id: "hue.0.Philips_hue.Lichtbox.on", val: true}, function (obj) {
                                	log('Lichtbox an. Sende alle 60 Sekunden WOL Paket.');
                                	Zeitplan = schedule("* * * * *", WOLSenden);
                                });
                                

                                Musst deine MAC Adresse noch in Zeile 5 eintragen. ("4C:…:48") habe ich jetzt mal als Platzhalter eingetragen.

                                Gruß

                                Ich versuche mich hier mal. Vllt wird es ja noch gelesen.

                                Ich habe ihn mal so abgeändert. Will per Cron zu bestimmten Zeiten den Server wecken, das würde ich mit nem Blockly realisieren.

                                var wol = require('wake_on_lan');
                                function WOLSenden() {
                                	if (getState('0_userdata.0.Keller.Medienserver_aufwecken').val === true) {
                                		wol.wake("a8:a1:59:02:f1:34");
                                		log("WOL Paket an Medienserver gesendet", "info");
                                	}
                                }
                                );
                                

                                Leider stimmt hier die Syntax noch nicht ganz. Kann mir da einer helfen ? Irgendwo muss noch ein ( hin.

                                I 1 Reply Last reply Reply Quote 0
                                • I
                                  iobroker_Alex @D3ltoroxp last edited by

                                  @D3ltoroxp
                                  Du willst das so umbauen, dass es nur per Trigger Zeit funktioniert.
                                  Dann so (Blockly Import):

                                  <xml xmlns="https://developers.google.com/blockly/xml">
                                    <block type="procedures_defcustomnoreturn" id="~?-s4u{p:Gmy-!.0S;v)" x="113" y="113">
                                      <mutation statements="false"></mutation>
                                      <field name="NAME">WOL</field>
                                      <field name="SCRIPT">dmFyIHdvbCA9IHJlcXVpcmUoJ3dha2Vfb25fbGFuJyk7DQpmdW5jdGlvbiBXT0xTZW5kZW4oKSB7DQogICAgd29sLndha2UoIjJjOmY0OjMyOjY4OmU4OmU4Iik7DQogICAgbG9nKCJXT0wgUGFrZXQgUHJveG1veCBCYWNrdXAgZ2VzZW5kZXQiLCAiaW5mbyIpOw0KfQ0KV09MU2VuZGVuKCk7</field>
                                      <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                    </block>
                                    <block type="schedule" id="Q|dM3{{#86o0,!{@[s=O" x="63" y="212">
                                      <field name="SCHEDULE">55 1 * * *</field>
                                      <statement name="STATEMENT">
                                        <block type="procedures_callcustomnoreturn" id="Yye~VU]8!L{l#{yWjgZy">
                                          <mutation name="WOL"></mutation>
                                        </block>
                                      </statement>
                                    </block>
                                  </xml>
                                  <xml xmlns="https://developers.google.com/blockly/xml">
                                    <block type="procedures_defcustomnoreturn" id="~?-s4u{p:Gmy-!.0S;v)" x="113" y="113">
                                      <mutation statements="false"></mutation>
                                      <field name="NAME">WOL</field>
                                      <field name="SCRIPT">dmFyIHdvbCA9IHJlcXVpcmUoJ3dha2Vfb25fbGFuJyk7DQpmdW5jdGlvbiBXT0xTZW5kZW4oKSB7DQogICAgd29sLndha2UoIjJjOmY0OjMyOjY4OmU4OmU4Iik7DQogICAgbG9nKCJXT0wgUGFrZXQgUHJveG1veCBCYWNrdXAgZ2VzZW5kZXQiLCAiaW5mbyIpOw0KfQ0KV09MU2VuZGVuKCk7</field>
                                      <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                    </block>
                                    <block type="schedule" id="Q|dM3{{#86o0,!{@[s=O" x="63" y="212">
                                      <field name="SCHEDULE">55 1 * * *</field>
                                      <statement name="STATEMENT">
                                        <block type="procedures_callcustomnoreturn" id="Yye~VU]8!L{l#{yWjgZy">
                                          <mutation name="WOL"></mutation>
                                        </block>
                                      </statement>
                                    </block>
                                  </xml>
                                  

                                  Alternativ nimm statt des Cron-Triggers deinen Datenpunkt '0_userdata.0.Keller.Medienserver_aufwecken'

                                  B 1 Reply Last reply Reply Quote 1
                                  • B
                                    bishop @iobroker_Alex last edited by

                                    @iobroker_alex

                                    mach ich etwas falsch! ich bekomme eine riesen Fehlermeldung wenn ich das blockly importieren möchte?

                                    I 1 Reply Last reply Reply Quote 0
                                    • I
                                      iobroker_Alex @bishop last edited by

                                      @bishop hey, ja das stimmt ich kann es auch nicht mehr importieren. Habe es gerade versucht nochmal ähnlich nachzustellen. Denke das hilft dir schon: Versuch das mal zu importieren (meine IP hinter der MAC die ich wecken möchte ist 10.4.4.12):

                                      <xml xmlns="https://developers.google.com/blockly/xml">
                                        <block type="procedures_defcustomnoreturn" id="l9BOg[,wM.v6?aXF.)}%" x="138" y="162">
                                          <mutation statements="false"></mutation>
                                          <field name="NAME">WOL 10.4.4.12</field>
                                          <field name="SCRIPT">dmFyIHdvbCA9IHJlcXVpcmUoJ3dha2Vfb25fbGFuJyk7DQpmdW5jdGlvbiBXT0xTZW5kZW4oKSB7DQogICAgd29sLndha2UoIjcwOjg1OmMyOjdkOjg2OmI4Iik7DQogICAgbG9nKCJXT0wgUGFrZXQgUHJveG1veCAxMC40LjQuMTIgZ2VzZW5kZXQiLCAiaW5mbyIpOw0KfQ0KV09MU2VuZGVuKCk7</field>
                                          <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                        </block>
                                        <block type="schedule" id="c|=|72$oDp1Mr+3%l/_[" x="88" y="238">
                                          <field name="SCHEDULE">50 23 * * *</field>
                                          <statement name="STATEMENT">
                                            <block type="procedures_callcustomnoreturn" id="LPggi$$EH{^Q[60P+vG/">
                                              <mutation name="WOL 10.4.4.12"></mutation>
                                            </block>
                                          </statement>
                                        </block>
                                      </xml>
                                      
                                      B 1 Reply Last reply Reply Quote 0
                                      • B
                                        bishop @iobroker_Alex last edited by

                                        @iobroker_alex
                                        ok, dass funktioniert mal!
                                        Ich muss noch das installieren oder?

                                        B 1 Reply Last reply Reply Quote 0
                                        • B
                                          bishop @bishop last edited by bishop

                                          Müsste das nicht auch mit

                                          https://github.com/iobroker-community-adapters/ioBroker.tr-064#command--commandresult-state
                                          

                                          zu machen sein?

                                          edit:
                                          vieleicht kann es jemand brauchen!
                                          Im tr-064 adapter unter states DP command das einfügen mit abgeänderter Mac natürlich.

                                          {"service": "urn:dslforum-org:service:Hosts:1","action": "X_AVM-DE_WakeOnLANByMACAddress", "params": { "NewMACAddress": "00:00:00:00:00:00"}} 
                                          
                                          frana120500 1 Reply Last reply Reply Quote 0
                                          • frana120500
                                            frana120500 @bishop last edited by frana120500

                                            mit diesem Script (Blockly) hier funktioniert es bei meinem QNAP NAS (MAC Adresse ist entsprechend anzupassen:

                                            <block xmlns="https://developers.google.com/blockly/xml" type="procedures_defcustomnoreturn" id="=pqc2E7{zZ+Ut(cA0hJ0" x="588" y="138">
                                              <mutation statements="false"></mutation>
                                              <field name="NAME">WOL NAS</field>
                                              <field name="SCRIPT">dmFyIHdvbCA9IHJlcXVpcmUoJ3dha2Vfb25fbGFuJyk7DQoNCndvbC53YWtlKCcwMDowMDowMDowMDowMDowMCcpOw0KDQp3b2wud2FrZSgnMDA6MDA6MDA6MDA6MDA6MDAnLCBmdW5jdGlvbihlcnJvcikgew0KICBpZiAoZXJyb3IpIHsNCiAgICAvLyBoYW5kbGUgZXJyb3INCiAgfSBlbHNlIHsNCiAgICAvLyBkb25lIHNlbmRpbmcgcGFja2V0cw0KICB9DQp9KTsNCg0KdmFyIG1hZ2ljX3BhY2tldCA9IHdvbC5jcmVhdGVNYWdpY1BhY2tldCgnMDA6MDA6MDA6MDA6MDA6MDAnKTsNCg0K</field>
                                              <comment pinned="false" h="80" w="160">Beschreibe diese Funktion …</comment>
                                            </block>
                                            
                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            853
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

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