Beiträge von sschuste

    Docker, das ich selbst nicht nutze, hat viele Vorteile bei solch kleinen Serversystemen, wie wir sie betreiben. Ein Docker-Container enthält oft nur eine Minimalinstallation des Betriebssystems und natürlich die benötigte Software, hier: node plus homebridge plus irgendein Plugin plus anderes benötigtes Zeugs.


    Der Docker-Container braucht Docker, damit er laufen kann. Die Container werden in einer Registry gespeichert. Diese könnte beispielsweise auf einem Mac oder PC laufen. Ein Raspi lädt dann den Container aus dieser Registry und lässt ihn laufen. Wenn man den Container auf einem anderen Raspi laufen lassen will, dann installiert man dort Docker und startet man den Container halt da. Und: wenn man ihn auf einem Mac laufen lassen will, dann installiert man halt Docker auf einem Mac und startet ihn dort. Und wenn man ihn auf einem Windows-PC laufen lassen will, dann installiert Docker auf dem PC und... ich glaube, es ist klar, was ich sagen will. Der Container lässt sich leicht transportieren. Du baust den Container und ich lass ihn laufen und zwar da, wo es mir passt.


    Damit es ganz klar wird: man hat dann einen Haufen dieser Container, und jeder enthält node, homebridge und ein einziges Plugin.


    Man könnte sogar so weit gehen, solche Container auf mehreren Computern zu installieren und einen Loadbalancer davor zu stellen, so dass einer dieser Computer ausfallen könnte, ohne dass der Homebridge-Service irgendwie davon beeinträchtigt würde. Willkommen in der wunderbaren Welt des totalen over engineerings des eigenen Zuhauses ;). Lassen wir das lieber.


    Der Container mit der neusten Version von homebridge läuft nicht richtig? Dann nimm wieder den alten. Bluetooth und noble brauchen node 8, aber du hast node 12 und dir fliegen die Fehlermeldungen um die Ohren? Dann lass in dem einen Container node 8 laufen und in allen anderen node 12.


    Das wirklich Feine aber wäre die Registry auf dem Mac, die per Time Machine gesichert würde. Nie wieder Backup-Probleme mit der Raspi-Installation. Wow. Betriebssystem auf die SD-Card flashen, Docker drauf, Container laden, weiter geht's.


    Man hätte also statt der vielen Instanzen viele von einander getrennte Container, die man verteilen kann, wie man will und die sich nie auch nur irgendwie gegenseitig beeinflussen, und die gar unterschiedlichste Softwarestände erlauben.


    Toll, toll, toll. Das Goldene Zeitalter[TM] hat begonnen. Und warum mache ich das nicht so? Der Lernaufwand erhöht sich natürlich erst einmal. Man muss nicht nur "Linux lernen", sondern auch noch Docker. Wie wird ein Container erstellt? Wie funktioniert die Registry? Wie automatisiert man Installationen? Wie bearbeitet man config.json? Wieso geht das jetzt nicht? Leck mich, noch mehr Software, die aus irgendwelchen Gründen nicht funktioniert, noch mehr Debugging, noch mehr Aufwand. Super, ich bin mit Docker zwar die Speerspitze der technischen Evolution, aber dafür gibt es immer weniger Cracks, die noch meine Fragen beantworten können.


    Ich bin sicher, dass Docker plus homebridge einen hohen Mehrwert bedeutet, aber bislang hatte ich nicht die geringste Lust, mich da so richtig reinzusetzen. Und es würde natürlich in der nächsten fetten Anleitung enden. Ich bin zu alt für diesen modernen Schnickschnack X/.


    Trotzdem: auf Dauer werde ich mich ganz klar damit beschäftigen, aber das ist ein Projekt für 2020. Dann wird herumgedoktertgedockert.


    Stefan

    dass der Arbeitsspeicher nahezu gesamt belegt ist.

    Wenn du tief in dich gehst, wirst du bemerken, dass du den Arbeitsspeicher ja nicht gekauft hast, damit er unbenutzt vor sich hingammelt, oder? Arbeitsspeicher ist dazu da, dass er benutzt wird, ansonsten kann man auch ein Stück davon absägen und in die Tonne werfen.


    Die Frage ist nur: wofür wird der Arbeitsspeicher benutzt? Der Befehl free im Terminal kann einem Auskunft geben:


    free -m


    Code
    pi@redpi:~ $ free -m
                  total        used        free      shared  buff/cache   available
    Mem:            927         337          96          83         493         456
    Swap:            99           0          99

    Das ist mein Raspi 3B+. An Speicher stehen mir insgesamt 927 MB zur Verfügung. Davon sind 337 benutzt und 96 frei. Klingt komisch, nicht wahr? Da fehlt doch was... ah, da werden noch 493 MB für buff/cache verwendet. Das Betriebssystem macht nämlich folgendes: es nimmt den freien Speicher, den die Maschine noch hat und speichert darin alles mögliche, meist alles das, was für einen schnellen Dateizugriff nötig ist und noch irgendeinen anderen Schnickschnack. Warum auch nicht?


    Wenn der Raspi mehr Speicher braucht für laufende Software, dann wird buff/cache wieder freigegeben. Die Rechnung oben lautet also:


    377 MB benutzter Speicher durch laufende Software +

    96 MB völlig unbenutzter Speicher (kann man absägen) +

    493 MB temporär benutzter Speicher =

    926 MB Gesamtspeicher (passt nicht so ganz, ist aber ähnlich zu 927 MB in der Anzeige)


    Der wirklich freie Speicher, den du noch nutzen kannst steht ganz rechts: 456 MB. Dämlicherweise zeigen alle grafischen Oberflächen, Monitorprogramme und sonstwas immer den Wert von free an (96 MB) statt den von available (456 MB). Die 83 MB shared übrigens werden vom Betriebssystem für sich benutzt und die Rechnung lautet am Ende 927 MB total + 83 shared = 1009 MB Gesamtkapazität des Raspis. Die Zahlen sind immer als ungefähr zu betrachten.


    Es wird erst bitter, wenn der Wert unter available immer auf 0 steht und dafür der Wert neben swap auf 99. Dann lagert der Raspi nämlich Daten auf die SD-Card aus und dann braucht man zwingend mehr RAM. Im Swap kann bei dir jetzt ein Wert stehen, der dir aber egal sein kann, solange available genug anzeigt. Manchmal schreibt der Raspi was in den Swap hin, frag mich nicht, was das ist.


    Auf meinem Raspi 4 sieht die Situation völlig trostlos aus:

    Code
    pi@homePi:~ $ free -m
                  total        used        free      shared  buff/cache   available
    Mem:           3906         306        2327          32        1272        3419
    Swap:            99           0          99


    2,327 GB RAM werden überhaupt nicht genutzt, verfügbar sind gar 3,419 GB: rausgeschmissenes Geld, aber es gab leider keinen kleineren Vierer, als ich ihn gekauft habe. Völlig überdimensioniert.


    Stefan

    Hmmm. Bei mir läuft das Plugin auch nicht mehr, schmiert aber mit einer anderen Fehlermeldung ab. Ich habe das nicht mal bemerkt, weil ich so selten drauf schaue. Ich habe nicht mal bemerkt, dass ich nach meinem Umzug von einem Raspi 3 auf einen Raspi 4 sogar vergessen hatte, den chromium-browser überhaupt zu installieren :sleeping:.


    Das habe ich jetzt nachgeholt und prompt geht's nicht mehr. Das muss ich erstmal debuggen. Ich nehme ja an, dass du auch Buster als Betriebssystem einsetzt - möglicherweise liegt es daran. Kann noch nix sagen.


    Stefan

    Hallo, also wenn ich es richtig verstehe sollte man den cmtrigger lieber nehmen?

    Wenn man einen Schalter braucht, der ein Kommando ausführen kann und der sich nach einer gewissen Zeit wieder ausschaltet: ja. Auf das Bluetooth-Geraffel hat das aber keinen Einfluss.


    Fliegt die Bluetooth Verbindung nur ab wenn man auf den Raspberry noch was anders mit Bluetooth laufen hat ?

    Ich bin mir noch nicht so ganz sicher, aber ich habe das Gefühl, dass Bluetooth auf meinem Raspi nicht zuverlässig läuft. Dazu kommt das Desaster mit dem Node-Framework noble. Plugins, die dieses benutzen, um die Bluetooth-Verbindung herzustellen, laufen nicht mehr, wenn man eine Node-Version > 9 verwendet. Ich habe daher noble wieder entfernt und schlage mich mit gatttool herum.


    Stefan

    Ich verwende homebridge-cmdtrigger. Das Plugin führt ein Kommando aus, wie es auch cmdswitch2 macht, aber es stellt den Schalter nach einer konfigurierbaren Zeit wieder aus.


    Das könnte dann so aussehen:

    Das erzeugt einen Schalter namens "Vorheizen", der, nachdem er gedrückt wurde und nun auf on steht, nach 30000 Millisekunden wieder zu off wechselt. Dieser Wechsel zu off könnte durch eine Automation in der Home App abgefragt werden: wenn Schalter Vorheizen auf off schaltet, dann schalte Schalter "Kaffee läuft" an.


    Stefan

    Der Weg ist ja:


    Strom -> Schalter -> Paulmann -> Lampe. Den Paulmann kannst du nicht per Schaltdimmer mit mehr oder weniger Strom versorgen. Den kannst du nur an und ausmachen.


    Bei mir läuft der unter Dauerstrom, und die Steuerung läuft über

    Zigbee -> Hue Bridge -> Homebridge mit homebridge-hue-Plugin -> HomeKit und

    Zigbee -> Hue Bridge -> Alexa mit Hue-Skill


    Ich bin jetzt dabei, meine Schalter auszubauen und mit Hue Dimmschaltern zu ersetzen. Ich kann's bei mir leider nicht anders lösen, weil es die Verkabelung meiner Altbauwohnung nicht erlaubt, einen smarten Schalter direkt in die Wand einzubauen. Ich hätte es nämlich sonst so gemacht.


    Der Paulmann SmartHome Zigbee Cephei Dimm/Schalt Controller, den ich einsetze, ist ein ganz schön fettes Teil. Ich war erstaunt, dass der so groß sein muss. Die Maße sind Höhe: 5,3 cm x Breite: 6 cm x Länge: 16,3 cm.


    Hier sind noch zwei Threads dazu:

    Paulmann Zigbee Cephei Dimm/Schalt Controller

    12V Controller: Paulmann YourLED Switch / Dimm Controller - ZERLEGT-


    Stefan

    Ich würde die Homebridge nicht mit sudo homebridge aufrufen, sondern ohne sudo. Außerdem würde ich ihr den kompletten Pfad zum homebridge-Verzeichnis mitgeben und sie außerdem im insecure-Modus starten. Also so:


    homebridge -I -U /Users/benbuchloh/.homebridge


    Außerdem würde ich im Terminal diese drei Befehle eingeben, um die Dateirechte wieder hübsch zu machen:


    sudo find /Users/benbuchloh/.homebridge -type d -exec chmod 755 {} \;

    sudo find /Users/benbuchloh/.homebridge -type f -exec chmod 644 {} \;

    sudo chmod 755 /Users/benbuchloh/.homebridge


    Dann änderst du für alle Dateien den Besitzer. Es gehören nämlich nicht alle dem Benutzer benbuchloh. Beispielsweise gehört config.json dem Benutzer root. Das sollte nicht so sein, weil benbuchloh darf dann nicht mehr dort hineinschreiben. Also:


    sudo chown -R benbuchloh /Users/benbuchloh/.homebridge

    (Wahrscheinlich löst dieser Befehl allein schon all deine Probleme)


    Ich schätze, dass es dann geht. Das Problem wird erzeugt, wenn man homebridge mit sudo startet, dann werden nämlich die Dateien als mit root-Rechten angelegt.


    Stefan

    Wahrscheinlich weiß ich das 8). Mir fehlt aber weiterer Input zu einer glasklaren, eisenharten Analyse und Fehlerbehebung.


    Hier soll eine Datei geschrieben werden, was aber nicht erlaubt ist:

    Error: EACCES: permission denied, open '/Users/bbuch/.homebridge/persist/AccessoryInfo.CC223DE3CE30.json'


    Soll heißen: im Homeverzeichnis des Users bbuch soll im Unterverzeichnis .homebridge eine Datei im Ordner persist angelegt werden. Das sollte funktionieren, solange es der User bbuch ist, der die Homebridge startet. Input 1: wer startet die Homebridge und wie tut er das? Die Antwort "ich tue das und das möglichst heimlich" ist nicht ausreichend. Ich erwarte so etwas wie "ich bin eingeloggt als User bbuch und tippe im Terminal den Befehl homebridge ein, den ich mit einem beherzten Schlag auf die Entertaste zur Ausführung bringe" oder so.


    Wenn bbuch also die Homebridge startet, dann brauche ich Input 2: wie sehen die Rechte des Ordners .homebridge aus, was du ermitteln kannst mit dem Befehl ls -la /Users/bbuch/.homebridge . Den Output würde ich dann gern hier sehen.


    Weiter unten wird's dann interessanter. Wieder soll eine Datei geschrieben werden, aber nicht die, die oben schon Ärger gemacht hat:

    [9/20/2019, 10:43:43 PM] Error: EACCES: permission denied, open '/Users/benbuchloh/.homebridge/accessories/cachedAccessories'


    Öhm. Hier soll in das Homeverzeichnis des Users benbuchloh geschrieben werden. Verboten. Aber wie kommt es dazu, dass plötzlich ein weiterer User im Spiel ist? Das ist hochgradig unüblich. Da könnte möglicherweise Input 3 helfen: was steht denn in deiner config.json?


    Danke im Voraus für deine kompromisslose Zusammenarbeit ;)


    Stefan

    Aber daran hat mich auch gestört, das die Lautsprecher in den Mute Modus gegangen sind und nicht in die Pause...

    Das hättest du ja einstellen können, indem du die Einstellung "mute": false gewählt hättest. Ich zitiere mal von der homebridge-sonos-Seite: The "mute" parameter is optional. Setting it to true will mute/unmute the speaker instead of a stop/play.


    Stefan

    Ist es denn mal gegangen? Das Log zeigt ziemlich weit oben den Eintrag


    Started Node.js HomeKit Server.


    Und danach läuft das Ding sauber durch. Vor dem Start allerdings sieht man den Rest einer Fehlermeldung, die sich auf das Plugin homebridge-sonos bezieht:


    Sep 16 15:11:09 raspberrypi homebridge[362]: at Request.onRequestError (/usr/local/lib/node_modules/

    homebridge-sonos/node_modules/request/request.js:820:8)


    Was genau passiert, sieht man leider nicht. Und ich nutze dieses Plugin nicht, kann also nichts dazu sagen.


    Stefan

    Wow. Das ist ja ordentlich. Bei mir sind es aktuell 72º und bei Belastung zwischen 78º und 82º, und ich hab ihn einmal sogar mit 88º erwischt. Da weiß ich jetzt, was auf meine Wunschliste kommt.

    ein beliebigen ESP8266 kaufen. Wahlweise einen D1-Mini, oder auch ein ESP-01 welcher für diesen Zweck her vollkommen ausreichen würde + ein Relais natürlich

    So einfach ist es, nicht wahr? Und trotzdem hätte ich immer noch kleinste Problemchen:

    ein beliebigen ESP8266 kaufen: Einen beliebigen what?

    Wahlweise einen D1-Mini, oder auch ein ESP-01: Ähm... das kriege ich gerade noch so hin.

    + ein Relais natürlich: was für ein Relais?


    Mehr Probleme habe ich erstmal nicht. Ganz ehrlich, mit dem Zeugs stelle ich mich so dämlich an, dass es kaum beschreibbar ist. Wahrscheinlich würde ich die Komponenten mit Gaffa-Tape umwickeln, danach unter meinen Türsummer legen und mich dann fragen, was ich schon wieder falsch gemacht habe.


    Ich kann vielleicht mit Software umgehen, aber mit Hardware überhaupt nicht. Mit überhaupt nicht meine ich absolut nada, nullinger, nix. Ich kann sie gelegentlich auf Anhieb erkennen, wenn man mit dem Finger auf sie zeigt, und das war's.


    Schön, das ist nun mal meine Schuld, warum hab ich's nicht gelernt. Was ich aber bräuchte, wäre eine Anleitung, die folgendes besagt: kaufe genau diese Komponenten und dann mache damit genau das. Nein, ich will keinen dieser Schaltpläne, die ich nicht lesen kann. Ich will Fotos und Pfeile und eine Anleitung, die ich kapiere.


    Es ist mir natürlich klar, dass eine solche Kleinkinderattitüde (ich will! ich will!) ein wenig peinlich ist. Und daher erwarte ich auch nicht, dass es eine solche Anleitung geben wird. Da müsste sich ja einer hinsetzen und Zeit investieren, und das auch noch für lau. Kann ich verstehen, dass das nicht unbedingt jedermanns Sache ist. Aber ich würde auch glatt dafür zahlen, wenn's mir jemand zusammen baut. Macht mir jemand ein Angebot? Es ist mir ernst damit.


    Allerdings ist mir auch da die ganze Beschaffung und Programmierung neu.

    Hier ist es ganz einfach:

    kaufe das und dann mache das. Notwendiges spezielles Vorwissen: Beherrschung von copy und paste mit der Maus, Basics in Tastentippen. Ich weiß, das man es billiger haben kann, aber so funktioniert es sofort.


    Stefan

    Verbaut ist er in einem Alu-Gehäuse, das für ausreichend Passiv-Kühlung sorgt:

    Kannst du mir sagen, wie warm der Rechner in diesem Gehäuse wird? Wenn du dafür irgendwo eine Anzeige hast, dann lies die einfach ab. Wenn nicht, dann gib auf der Shell mal das ein:


    vcgencmd measure_temp


    Danke