NEWS
[Gelöst] Monitor per Scriptbefehl aufwecken. (Linux / Raspian)
-
Hallo,
wenn keine besonderen Ereignisse anstehen kann der Monitor in den Energiesparmodus gehen, wenn ein Ereigniss kommt soll der Monitor aufwachen. Hat jemand eine Idee wie man das machen könnte?
Schöne Grüße
ThomasD
-
Hallo,
Eine Möglichkeit die ich gefunden habe ist das "xdotool".
Damit eine Mausbewegung gesendet und der Monitor geht an.
Schöne Grüße
ThomasD
-
Hallo,
das commando an sich funktioniert, nur hab ich ein Problem das Kommando nicht ausführt.
Als Test habe ich dann das Beispiel aus der Javascipt Beschreibung genommen und erhalte auch dort einen Fehler:
` > javascript.0 2017-12-01 22:45:00.111 error at Object. (script.js.STH_Test:2:1)javascript.0 2017-12-01 22:45:00.111 error Error in callback: ReferenceError: sendToHost is not defined `
Hier das Script:
schedule("* * * * *", function (obj) { sendToHost('iobroker3', cmdExec, 'ls /', function (res) { console.log('List of files: ' + res.data); }); });
Wo ran kann das liegen?
IOBroker und System hab ich schon mal auf den neusten Update Stand gebracht.
Schöne Grüße
ThomasD
-
Hallo,
und noch ein Update, der Verwarungsort latest ist auch nicht ganz aktuell und ich hab den Javascript Adapter direkt über Git installiert, nun mit der Version 3.5.0 gibt es die Funktion sendToHost, aber leider nicht das "cmdExec", Fehlermeldung:
` > javascript.0 2017-12-01 23:48:00.131 error at Object. (script.js.STH_Test:2:25)javascript.0 2017-12-01 23:48:00.130 error Error in callback: ReferenceError: cmdExec is not defined `
Wenn ich Git nach cmdExec durchsuche finde ich auch nichts zu cmdExec gefunden ausser die Beschreibung das cmdExec Funktionieren soll.
Schöne Grüße
ThomasD
-
Hallo,
im Moment bringt es wohl nichts hier weiter zu machen, ist ein Fehler beseitigt kommt ein anderer oder neuer Fehler hinzu.
In der Javescript instanz gibt es probleme mit der Instanz Zuordnung, zum einen geht die Liste mit den Instanzen extrem schnell wieder zu und hat man eine Instanz ausgewählt, springt sie beim speichern des Scriptes wieder zurück auf die vorige.
Schöne Grüße
ThomasD
-
Du hast nirgendwo geschrieben ob iobroker auf dem pi läuft oder wo anders.
Und ohne die information kann man ein ganzes Buch für eine Lösung verfassen und trotzdem ist nicht die Lösung dabei die du brauchst.
Das sendToHost nur funktioniert wenn du eine Multihost Umgebung hast ist dir klar?
Und setObject hast du in den Einstellungen deiner JS Instanz aktiviert?
Möglicherweise ist die sendToHost Implementierung noch nicht fertiggestellt.
Gesendet von Unterwegs
-
Hallo,
ja, es handelt sich um einen Multihost.
SetObjekt ist Aktiviert, ebendso SendToHost und Exec.
Schöne Grüße
ThomasD
-
Wenn das so nicht geht könntest du noch versuchen eine JS instanz auf dem slave zu installieren und mit exec deinen Aufruf machen.
Gesendet von Unterwegs
-
@Jey Cee:Wenn das so nicht geht könntest du noch versuchen eine JS instanz auf dem slave zu installieren und mit exec deinen Aufruf machen.
Gesendet von Unterwegs `
So würde ich es auch machen, bei mir läufts genau auf diese Art und Weise seit Monaten ohne Probleme
–-----------------------
Send from mobile device
-
Hallo,
so wollte ich es dann auch machen, aber irgend wie bekomme ich den exec() string nicht hin, egal wie ich es drehe und wende, schicke ich den Befehl vom IOBroker aus funktioniert es nicht.
Der String sieht so aus:
export DISPLAY=":0" xdotool mousemove 10 20
Versuch 1, direkt exec('xdotool mousemove 10 20') kein Erfolg.
Um Leerzeichen und Sonderzeichen zu umgehen hab ich das dann in eine Batchdatei gepackt.
Über SSH eingelogt und ausgeführt funktioniert, mit exec('/opt/iobroker/wakeup.sh') kein Erfolg.
Zur Sicherheit noch einen Befehl eingefügt der mir zeigt das die Datei ausgeführt wird.
Dann per Remote Befehl mit ssh pi@rechnername 'xdotool mousemove 10 20' oder ssh pi@rechnername '/opt/iobroker/wakeup.sh', direkt funktioniert es mit exec('ssh pi@rechnername '/opt/iobroker/wakeup.sh'') oder exec('ssh pi@rechnername '/opt/iobroker/wakeup.sh'') funktioniert wieder nicht. Und zur Sicherheit das es nicht an einen fehlenden Consolenfenster liegt das ganze zum Test als cron Job angelegt, funktioniert auch.
Schöne Grüße
ThomasD
-
Poste Mal dein komplettes Script
–-----------------------
Send from mobile device
-
Hallo,
so, ich denke ich hab es.
Hier aber trotzdem nach meine Skripte:
Javascript Adapter auf dem slave wo auch der Webbrowser läuft:
schedule("* * * * *", function (obj) { var wakeup = '/opt/iobroker/wakeup.sh'; exec(wakeup); });
Da ioBroker als root läuft, braucht man den ersten Schritt nicht:
> setfacl -m u:the-user:r ~/.Xauthority
Hier dann das shell Skript:
#!/bin/bash DISPLAY=:0 XAUTHORITY=~pi/.Xauthority xdotool mousemove 10 20
Danke und Schöne Grüße
ThomasD