Beiträge von JoergZ

    Wie gesagt, keine Ahnung von IOB, aber was du sagst, leuchtet ein. Andererseits ist SSH nicht so ein Speicherfresser und recht schlank und es soll schließlich eigentlich "immer" funktionieren, damit man mit dem Host immer noch was machen kann aus der Entfernung und sei es ein Neustart. Aber wenn es mal geht und mal nicht, dann muss man sich mit solchen try and error - Verfahren und Beobachtung von Situationen herantasten, um herauszubekommen, woran es wirklich liegt. Beim Raspi auch immer wieder für Überraschungen gut: schlappe Stromversorgung. Also mal dmesg und journalctl einsetzen und nach undervolting Ereignissen suchen.

    Ok, Mem ist gut voll aber m. E. noch nicht bedrohlich voll. Gegen Überlastung spricht auch Taktfrequenz und Temperatur. Wobei es schon besser wäre, diese Parameter über einen längeren Zeitraum zu beobachten. Wenn möglich Raspi neu booten und nach ca. 5 Minuten die Erreichbarkeit testen. Bis dahin sollten alle Prozesse hochgefahren sein. Mal die oben ermittelten Werte mit den dann aktuellen vergleichen. Vielleicht schaukelt sich da was auf, was man durch gelegentliche Neustarts "einfangen" könnte. Mir ist in den Daten oben nichts wirklich Auffälliges begegnet, außer der relativ hohen Prozess- und Zombiezahl. Aber ich habe keine Ahnung vom IOB und was der alles braucht.

    Wenn die Spannungsversorgung es aushält.... Vielleicht geht es schon, wenn die GRD-Leitungen von externer Spannungsversorgung und vom Dual R2 miteinander verbunden werden. Vielleicht kann einer der Elektrotechniker was dazu sagen. Möglicherweise ist das Quatsch.

    Na ja du hast ja 16 Timer. Wenn ich es richtig verstehe, brauchst du davon nur 4: 2 für das nächtliche aus und morgendliche an wenn du da bist und einen für das wöchentliche einmal, wenn du länger weg bist. Du musst dann nur das erforderliche Timerpaar entsprechend aktivieren bzw. deaktiviere. So, bin jetzt selbst erst einmal eine Woche weg....

    Ein Beitrag von Marc (RE: Bei Druckauftrag Drucker automatisch einschalten u. wieder ausschalten | Idee/Anleitung | Tasmota) zum automatischen Druckerstart unter Linux hat mir keine Ruhe gelassen, sodass ich mich daran gesetzt habe, die Überwachung der Druckerwarteschlange unter Windows 10 zu realisieren. Es ist mir tatsächlich gelungen! Durch die powershell ist mir Windows wieder richtig sympathisch geworden ;-). Und so geht es:

    Voraussetzung: Keine Angst vor der Powershell

    Dabei haben mir natürlich meine Linux-Kenntnisse enorm geholfen.

    Schritt 1:

    Die powershell als Administrator starten. Eingabe:

    Set-ExecutionPolicy Unrestricted <enter>

    Nebenwirkung: Nun werden alle Powershell-Skripte ohne Nachfrage ausgeführt. Wer das nicht will, muss sich mit dem Thema Digitale Zertifikate befassen.

    Nun das powershell (Administrator-) Fenster schließen. Anschließend die powershell als normaler User erneut öffnen und folgenden Befehl abschicken:

    Get-WMIObject -Class Win32_Printer

    Es wir eine Liste aller verfügbaren Drucker und Scanner(!) angezeigt. Achtung: Bei Multifunktionsgeräten, müsst ihr aufpassen das richtige Geräte, also den Drucker zu erwischen. Relevant ist der Name, der hinter Name: steht.


    Zusätzlich die App Editor öffnen und dieses Skript einkopieren:

    In Zeile 2 müsst ihr in der Variablendefinition die IP des Basic oder S20 angeben, an der der Drucker hängt, und in Zeile 3 den Namen der Druckerwarteschlange, die überwacht werden soll. In Zeile 4 definiert ihr (in Sekunden), nach welcher Zeit der Schalter nach dem letzten Druckjob abgeschaltet wird. Falls in der Abschaltzeit - im Skript 5 Minuten - ein neuer Druckjob eintrifft, wird der Sekundenzähler wieder auf 0 zurückgesetzt. Dann wählt ihr Speichern unter, stellt den Dateityp von Textdateien auf Alle Dateien um und vergebt den Namen spoolctl.ps1. (Hinweis zum Debugging: Wenn ihr sehen wollt, was das Skript so veranstaltet, dann müsst ihr das Zeichen # vor den Befehlen Write-Host... entfernen.)


    Vermutlich ist das Skript nun im Ordner Dokumente gelandet. Deshalb geht ihr jetzt zurück in das Fenster der powershell und gebt dort bitte als erstes cd documents <enter> ein. Die powershell verwendet die originalen Ordnernamen nicht die symbolischen deutschen Bezeichnungen des GUI. Mit dir spoolctl.ps1 überprüft ihr, ob das Skript auch tatsächlich hier liegt. Mit folgendem Befehl wird es gestartet: .\spoolctl.ps1<enter>.


    Für den ersten Test wäre es sinnvoll, wenn vor dem Start des Skriptes der Basic oder die S20, an der der Drucker hängt, ausgeschaltet ist. Wenn ihr nun an den angegebenen Drucker z. B. eine Testseite schickt, sollte der Drucker(schalter) eingeschaltet werden und 5 Minuten nach Ende des Druckjobs auch wieder ausgeschaltet werden.

    Abgebrochen wird das Skript durch gleichzeitiges Drücken der beiden Tasten STRG (und) C.


    Hinweise zum Start des Skriptes im Hintergrund

    Von der powershell-Konsole aus gebt ihr folgenden Befehl ein, wenn ihr noch im Ordner documents seid:

    PowerShell.exe -windowstyle hidden { .\spoolctl.ps1 }

    Bei einer frisch gestarteten powershell ist es, weil ihr dann im übergeordneten Ordner seid, so:

    PowerShell.exe -windowstyle hidden { documents\spoolctl.ps1 }


    Um beim Systemstart das Skript zu laden legt ihr mit der App Aufgabenplanung eine neue Aufgabe mit dem Assistenten an:

    Klick auf "Aufgabe erstellen" -> Name und Beschreibung angeben und unten rechts Windows 10 auswählen dann

    Registerkarte Trigger: Neu -> Auswahl: Bei Anmeldung -dann

    Registerkarte Aktionen: Neu -> Auswahl: Programm starten; Eingabefeld Programm/Skript: %windir%\System32\WindowsPowerShell\v1.0\powershell.exe

    Eingabefeld Argumente hinzufügen: -WindowStyle hidden -command "C:\Users\USERNAME\documents\spoolctl.ps1" ->

    und speichern. USERNAME muss natürlich durch den Namen des Benutzers ersetzt werden. Der steht immer am Prompt der powershell-Konsole.


    Nach einem Neustart sollte das Skript automatisch geladen werden.


    Ich hoffe es funktioniert genauso gut wie bei mir:-).


    Noch ein Hinweis: Sollten Druckjobs, aus welchen Gründen auch immer, in der Warteschlange herumhängen, wird der Drucker immer angeschaltet werden. Haltet also eure Druckerwartshlange sauber.

    Wenn man solche großen Druckaufträge hat, kann man die Sleepzeit im Script vergrößern und die Pulstime danach anpassen.

    Schon klar, aber das weiß man meistens vorher nicht. Eine komplexe Plot-Datei braucht schon mal eine gewisse Zeit. Andererseits würde die Verlängerung der Sleepzeit in den meisten Fällen nur die Leerlaufzeit und den Stromverbrauch erhöhen. Das ganze Thema (Sleepzeit) ist ein bisschen akademisch. Wir sollten es wieder einpacken...

    Bisher war die Trefferquote 100%, sprich kein Einschaltvorgang, wo kein Druckauftrag vorlag.

    Das wird auch so bleiben. Da hattest du mit dem Script eine richtig gute Idee! Das einzige Problem, was auftreten könnte, ist wenn du einen sehr großen Druckauftrag hast, der länger als deine Pausenzeit von 870 Sekunden braucht. Es macht übrigens nichts, wenn eine Steckdose, die bereits eingeschaltet ist, nochmals den Einschaltbefehl bekommt.

    Was ist hierbei cmnd/tasmota_277E64/Color -m 1 %prefix%/%topic%?

    Tasmota versteht unter Topic den (MQTT-) Namen des Gerätes also tasmota_277E64, prefix ist eine Information über das, was getan werden soll, bzw. welcher Art die Nachricht ist. cmnd bedeutet es folgt eine Anweisung, ein Befehl. tele steht für die Übertragung von Telemetriedaten, z. B. Sensordaten und stat leitet eine Statusmeldung ein z. B. ob ein Zustand sich geändert hat wie an- oder ausschalten.

    Diese Kommandos funktionieren jetzt alle.

    Die anderen Befehle werden auch funktionieren, weil du nun die richtige Syntax und Struktur für die MQTT-Anweisungen benutzt.


    Jetzt möchte ich alles in Open Hab integrieren.

    Dabei bin ich bis jetzt auch gescheitert.

    Das kann mehrere Ursachen habe. Sieh im entsprechenden Unterforum nach bzw. auf Webseiten und Foren zu Openhab.

    Also zur Klärung:

    Es muss sichergestellt sein, dass ein MQTT-Broker auch tatsächlich läuft. Bei dir sollte es auf dem Rechner mit der IP 192.168.178.22 sein.

    Befehle an den MQTT-Broker sendest du mit dem Clientprogramm mosquitto_pub (pub = publish = absenden). Das Tasmota-Gerät bezieht (subscribe, sub) vom MQTT-Broker Nachrichten, wenn sie in der Syntax %prefix%/%topic% gesendet werden. So ist es im Bild oben dargestellt.


    In deinem Beispielen verwendest du allerdings die Syntax %topic%/%prefix% beim mosquitto_pub. Du solltest es entsprechend in den oben abgebildeten MQTT-Einstellungen ändern (letzte Zeile "full topic")


    Dort scheint mir der Hase im Pfeffer zu liegen. Der MQTT-Befehl müsste nach deinem Bild so aussehen:

    mosquitto_pub -h 192.168.178.22 -t cmnd/tasmota_277E64/Power -m ON.


    Wie du es konfigurierst, ist letztendlich egal. Hauptsache es passt zusammen. Dem MQTT-Broker (mosquitto) ist es egal, er leitet alles einfach nur weiter. Nur wenn der eine Client auf topic/prefix brüllt und der andere auf prefix/topic lauscht, kommen die nie zusammen.

    Meine Erfahrung: Mehr als ein Befehl pro Sekunde wird nicht sicher umgesetzt.

    Ich habs mal Skript gesteuert ausgetestet: Unterhalb von 0,8 Sekunden Pause zwischen den einzelnen (Http- oder MQTT-) Befehlen wird es heikel. Die Befehle stauen sich und dann scheint es auch bald einen Speicherüberlauf zu geben, so dass gar nichts mehr geht, bis man das Gerät vom Strom nimmt und neu startet.

    wäre zu klären ob der Standby Stromverbrauch des Laserdruckers den so viel höher ist als der eines extra angeschafften Raspi's. Wenn nicht würde ich gleich einen Netztwerkfähigen Laser nehmen der dann prinzipiell im Standby läuft.

    Das ist in der Tat absolut zu berücksichtigen, wenn der Raspi nur für diesen Zweck (Druckserver) läuft. Wenn ohnehin bereits andere Serverdienste dort laufen (IOBroker, Videorecorder, etc.) - das Teil also 24/7 im Betrieb ist - dann belastet ihn ein Druckserver und -spooler kaum zusätzlich.


    Wie viel Watt ein Drucker im Standby zieht, ist in der Tat erstaunlich: Mein HP Officejet 6500 (Drucker/Scanner/Fax) zog sich im Standby locker 7 - 9 Watt rein, der Kyocera 4-C Farblaser (+Scanner +Fax) Modell M5521cdn braucht im Standby nur 2 Watt. Ich messe lieber nicht nach, was der Eigenverbrauch der S20 ist, an der er hängt....

    Wenn dieser Drucker als CUPS-Drucker (Common Unix Print System) installiert wird bzw. installiert werden kann, dann geht das, weil das Script nur darauf lauert, ob im Verzeichnis /var/spool/cups/ eine Datei geschrieben wird. Die Datei wird zunächst dort abgelegt und dann zum Drucker gesendet. Es gibt aber auch Drucker, die unter Linux mit proprietären Treibern und Methoden angesteuert werden.


    Sag mal, welchen Drucker du anschaffen willst, dann können wir dir sagen, ob er von CUPS unterstützt wird.

    Forums-Mitglied Marc hatte eine super Idee für das automatisierte Ein- (und Ab-)schalten eines Druckers, wenn etwas gedruckt werden soll.

    Hier der Link zum originalen Beitrag:

    Smarter Druckerschalter


    Auch wenn es zur Zeit nur funktioniert, wenn ein Raspberry Pi oder ein anderes Linux-System als Druckserver läuft, ist das ein sehr guter Hinweis, wie es auch unter Windows funktionieren könnte. Techniken zur Überwachung von Systemvorgängen bzw. zur Überwachung von Verzeichnissen gibt es auch unter Windows. Also, wer sich gut mit Prozessen unter Windows auskennt, ist herzlich eingeladen, sich auf den Weg der Portierung zu machen.

    Also dein Skript funktioniert auf mit anderen Druckern, die über das CUPS-Subsystem installiert sind. Bei mir ist es ein Kyocera Ecosys M5521cdn. Der relevante Vorgang ist ja zu überwachen, ob eine Datei geschrieben wurde.

    Weil du es auf einem Raspberry Pi benutzt, taucht ein "Problem" nicht auf, das es auf "normalen" Linux-Systemen gibt: Auf dem Raspi darf der Benutzer pi Administrationsarbeiten ohne Eingabe des Passworts machen. Das geht auf anderen Systemen nicht, denn dort müsste man das Skript mit sudo ... starten und entsprechend das Admin-Passwort eingeben.

    Folgende Lösung bietet sich an: Das Skript wird automatisch beim Systemstart als Systemd-Dienst gestartet. Zu diesem Zeitpunkt gibt es sowieso nur den Nutzer root. Der Code dafür sieht z. B. so aus:

    Pfade und Dateinamen musst du natürlich entsprechend deinen Gegebenheiten anpassen. Dieses Skript bitte speichern unter Pfad und Namen:

    /etc/systemd/system/smart-printer.service und mit sudo systemctl start smart-printer.service starten und abschließend mit der Eingabe sudo systemctl enable smart-printer.service dafür sorgen, dass es bei jedem Systemstart automatisch geladen wird. Was nun nicht mehr zu sehen ist, sind die Echo-Meldungen. Das macht m. E. aber auch nichts. Wahrscheinlich kann man die Meldungen sowieso unterdrücken (oder in ein Log-File schreiben).

    So läuft es schon auf meinem Linux Produktivsystem (Ubuntu 20.04). Danke für die tolle Idee, die du da hattest! Ich werde schauen, ob ich für Windows 10 portiert bekomme. Wenn das gelingt, dann werden sich viele Smart-Home-Bastler freuen! Kleiner Wermuthstropfen: Manche Drucker wollen lieber heruntergefahren werden und können es (auf Dauer) nicht so gut haben, wenn ihnen einfach der Saft abgedreht wird. Aber das ist ein Sekundärthema...