Beiträge von Noexpand

    Ein vernünftiger Rauchmelder macht im Normalfall keinen Fehlalarm.
    Es sei denn, man ist zu geizig und kauft sich im Discounter welche für 1.99€

    Nein, leider nicht. 30-40€ pro Stück von Abus. Alle haben Fehlalarme produziert.

    Das können auch nicht alles Montagsgeräte gewesen sein, weil ich die in insgesamt 3 Chargen über 2 Jahre gekauft habe.

    Nachdem ich dann auf Rauchmelder mit 10 Jahre Batterie umgerüstet habe (die meiner Meinung nach hochwertiger und auch teurer waren als die Vorgänger), habe ich nicht einen einzigen Fehlalarm gehabt und Ruhe.

    Teuer muss leider nix heißen. Ich dachte auch, dass es besser ist zu hochwertigeren mit 10-Jahres-Batterie zu greifen. Ich hatte insgesamt 7 Stück von Abus. Nach und nach habe ich die alle wieder rausgeschmissen, weil sie ständig Fehlalarme produzierten. Jetzt habe ich welche von Ei Electronics. Die funktionieren bislang besser ...

    Man kann Home Assistant mittels Image installieren, dann wird ein ganzes Betriebssystem (auf Home Assistant zugeschnitten) installiert. Darauf zusätzlich Pi Hole zu installieren ist mit viel Handarbeit und Gefummel vermutlich möglich aber nicht zu empfehlen.

    Man kann Home Assistant aber auch "zu Fuß" ganz normal auf Rasbian installieren (https://www.home-assistant.io/installation/r…-assistant-core), das geht mit den 4er Rapsis aber mit dem 3B auch. Da Pi Hole so ungefähr keine Ressourcen benötigt, ist die zusätzliche Belastung auf dem Raspi vermutlich zu vernachlässigen. Allerdings bin ich mir nicht sicher, ob Home Assistant auf Dauer auf einem 3B Spaß macht. Je nach Nutzung es ist bestimmt möglich, den 3B ziemlich in die Knie zu zwingen. Aber wie gesagt kommt das stark darauf an, was du mit Home Assistant auf Dauer vorhast.

    Edit: Tschuldigung, ich hatte nicht genau genug gelesen und "3A" überlesen. Ich nehme alles zurück und verweise auf die Kollegen unten.

    Ich kenne mich mit Node Red nicht aus. Aber wenn das http spricht, dann ist es entweder selbst ein Webserver oder es bringt einen mit. Wie man den auf Port 80 lauschen lässt, das weiß ich leider nicht, aber ich bin mir sicher, dass es irgendwie möglich ist.

    Aber gut: du kannst auch einen Apache installieren (apt install apache2). Der lauscht standardmäßig auf Port 80 und legt unter /var/www eine Test-Site an. In die Index.html dort kommt die dann die obige Zeile. Das müsste es eigentlich sein.

    Dann lass den Webserver doch zusätzlich auch auf Port 80 lauschen und lege eine Index.html an, in der im Header unter anderem steht: <meta http-equiv="Refresh" content="0; url='http://info.text:1880/hallo'" />

    Dadurch wird der Browser angehalten, ein anderes Ziel aufzurufen.

    Man kann das auch ohne Webseite alleine in der Konfiguration des Webservers machen, aber wie genau, da bin ich überfragt.

    Noexpand : tja, das befürchte ich, wäre ja zu schön und einfach gewesen, weil ein umleiten auf "nur" eine URL geht, z.B. fritz.box auf 192.168.1.1 und smart.home auf 192.168.1.222
    und da ich den pi hole in betrieb habe und alle url anfragen dort durch müssen, wäre es halt schon praktisch....

    Äh, nein. Dir ist die Funktionsweise von DNS nicht ganz klar. Auf Telefonie übertragen vermischt du sozusagen ein Telefonbuch mit Rufumleitung.

    Wenn du jemanden anrufen möchtest, aber die Telefonnummer nicht kennst, schaust du ins Telefonbuch. Das bedeutet aber nicht, dass dein Anruf "durch" das Telefonbuch geht.

    Ähnlich ist es mit DNS. Das ist nur ein Verzeichnis. Der Browser fragt dieses Verzeichnis nach "info.text" an. Das findet aber statt, bevor der Aufruf des URL abgesetzt wird: der Aufruf geht nicht "durch" PiHole. PiHole/DNS leitet auch nichts um. Es werden nur Anfragen beantwortet. Und: wenn der Browser "info.text" einmal aufgelöst bekommen hat, muss er das bei weiteren Anfragen auch nicht mehr machen. Er kennt ja das Ergebnis schon.

    Hallo
    Ich möchte in meinem Pi hole nutzen um im LAN eine URL , z.B. <info.text> auf die Adresse http://192.168.1.232:1880/hallo umleiten. Leider will das Pi hole nur IP Adressen ohne Port Angabe. Mache ich hier was falsch?

    Ja, du benutzt das falsche Tool.

    PiHole ist ein DNS-Resolver. Er kümmert sich nur und ausschließlich nur um den "192.168.1.232"-Teil. Keine Ports keine Pfade.

    Es ist auch leicht einzusehen, dass PiHole nur so funktionieren kann: was soll denn beispielsweise passieren, wenn PiHole nicht "info.text" auflösen soll, sondern vielleicht "https://info.text:4711/byebye.php"?

    Warum muss es ein zentraler Verstärker sein? Ist es nicht sinnvoller, die Verstärkung jeweils "vor Ort" an den Lautsprechern zu machen? Also sozusagen aktive Boxen zu verwenden? Sie können ja trotzdem das (unverstärkte) Signal aus einer zentralen Quelle bekommen.

    Ein Signal erst zu verstärken um es dann stellenweise mühsam wieder herunter zu regeln (also in Wärme umzuwandeln) erscheint mir kompliziert und widersinnig.

    Aber ich habe von (Audio-)Elektronik keine Ahnung ...

    Nein, das stimmt nicht. ssh kommt nicht von OpenBSD. OpenSSH (basiert auf ssh) kommt von OpenBSD und ist eine SSH-Implementierung in OpenBSD, die anscheinend so gut war/ist, dass sie auch von anderen BSD-OSs bzw. von Linux-Distributionen übernommen worden ist.

    Ich hatte OpenSSH immer als "das Original" wahrgenommen (was bei dem Fokus von OpenBSD auf Security auch plausibel war), aber du hast Recht: das stimmt gar nicht!

    OpenSSH ist ein Fork der letzten freien Version vom "originalen" SSH, nachdem das proprietärer Code geworden war.

    Danke für die Richtigstellung. Wieder was gelernt!

    Ups :huh: 8|

    Man soll eben nicht alles glauben, was man im Netz liest.

    Hatte mehrmals gelesen das die Anzahl der Kerne die Threads bestimmt.

    Jein.

    Die Anzahl der Kerne bestimmt die Zahl der Threads, die gleichzeitig verarbeitet werden können. Generell ist es aber nicht unüblich, deutlich mehr Threads einzusetzen, als der Prozessor Kerne hat. Das kannst du auch selbst gut sehen, wenn du auf deinen Raspi einmal "ps -aux" aufrufst. All diese aufgelisteten Prozesse bestehen jeweils aus mindestens einem Thread.

    In der Regel (so auch bei dir, siehe das sleep(1)) wartet ein einzelner Thread nämlich ständig auf irgendwelche Dinge1 und in der Zeit könnte ein anderer Thread eben schnell auf dem Prozessor was rechnen.

    1 Das können die unterschiedlichsten Sachen sein:

    • Daten von der Netzwerkschnittstelle empfangen oder senden
    • Daten von der Festplatte lesen oder schreiben
    • Daten aus dem Hauptspeicher lesen oder schreiben
    • Auf ein bestimmtes Ereignis warten (Tastendruck, Mausbewegung, Bereitstellung eines Messwertes, Eintritt einer bestimmten Uhrzeit, Ablauf einer bestimmten Wartezeit)

    Der Vorteil von RAID (sowohl Hardware-RAID als auch Software-RAID) ist, dass du immer eine Kopie der Daten hast. Die kann man miteinander vergleichen und so Fehler schneller finden.

    So weit so gut.

    Das Problem fängt aber an, wenn ein Unterschied zwischen den beiden Kopien gefunden wird. Welche der beiden (unterschiedlichen) Versionen ist dann die Richtige? Es gibt für das System keine Möglichkeit diese Frage zu beantworten!

    Darum möchte ich nochmal hinweisen auf das, was @DeaD_EyE oben gesagt hat: BTRFS oder ZFS.

    Diese beiden Filesysteme arbeiten (auf Wunsch) auch mit zwei Kopien von allen Daten, legen aber zusätzlich noch Prüfsummen für jedes Datenschnipsel an. Damit können sie (sogar bei nur einer Kopie) über die Daten gehen und nachschauen, ob noch alles richtig ist. Und wenn man zwei Kopien der Daten hat, können sie die dabei festgestellten Fehler automatisch korrigieren, weil sie anhand der Prüfsumme in der Lage sind, festzustellen, welche Version die richtige ist und welche die fehlerhafte.

    Darum liegen meine wichtigen Daten auf zwei Platten in einem ZFS.

    wenn ich die globalen Variablen außerhalb der Funktion definiere, bekomme ich folgenden error:

    UnboundLocalError: local variable 'can_data' referenced before assignment

    Wenn du sie außerhalb definierst: an welcher Stelle genau hast du das probiert?

    Ich würde globale Variablen direkt am Anfang, also bspw. nach den Imports definieren. Aber wie gesagt: ich kenne mich mit Python überhaupt nicht aus. Das sagt mir nur meine Erfahrung mit anderen Programmiersprachen ...

    Meinst du, dass die if's eine so große Rolle für die Performance spielen?

    Die if's selbst vermutlich nicht. Aber vielleicht dass, was in den then- und else-Zweigen steht. Manchmal verbirgt sich hinter einem einfachen, unverdächtigen Kommando ein Seiteneffekt, den man nicht auf dem Schirm hat. Ein Speicherloch oder nichtlineare Rechenzeit oder so. Wenn man den Code Schritt für Schritt immer weiter reduziert, kommt man in der Regel an den Punkt, an dem der Fehler plötzlich nicht mehr auftritt. Dann hat man das schuldige Kommando gefunden :)

    Aber zugegeben: dann ist die Arbeit noch nicht erledigt. Dann muss man nämlich einen Weg finden, das gewünschte Verhalten auf einem anderen Weg zu erreichen ...

    Ich kenne mich mit Python wirklich gar nicht aus, darum das folgende mit Vorsicht genießen.

    Wenn ich den Aufbau richtig verstehe, baust du ein Fenster, dass in seiner mainloop sich jeweils neue Daten zieht (Funktion "get_new_data") und diese dann anzeigt, richtig?

    Solltest du dann nicht die Variable "can_data" (analog: "is_paused") außerhalb von get_new_data definieren? Sonst wird sie doch bei jedem Aufruf von "get_new_data" neu definiert. Entweder sie ist global oder innerhalb einer Funktion definiert. Oder macht man das in Python so?

    Genereller Tipp zum Debugging:

    Mache die eine Kopie der Datei und schmeiß so viel wie möglich raus, ohne den Fehler oder die Grundfunktionalität (Anzeige von Werten) dabei zu verlieren. Stichwort "Minimalbeispiel". Reduziere bspw. das Fenster auf ein einziges Feld, vereinfache oder eliminiere die if's ...

    Meistens findet man bei diesem Prozess die Ursache.