Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Off Topic
  4. Lokal Notizen verwalten

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    690

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    5.8k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.5k

Lokal Notizen verwalten

Geplant Angeheftet Gesperrt Verschoben Off Topic
46 Beiträge 5 Kommentatoren 1.6k Aufrufe 8 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • P peterfido

    Guten Morgen,

    sehe ich mir nachher mal an. Können beide nebeneinander installiert werden?

    Ich probiere es mal, indem ich

    INSTALL_DIR="/opt/notiz-tool"
    SERVICE_NAME="notizen.service"
    

    ändere.

    Die Version ohne Datenbank läuft soweit. Da die data.json gelitten hattte, als ich diese per Android-Simulator genutzt hatte, habe ich es mal per VPN probiert. Da dauerte der Seitenaufbau bissel länge, und schnell mehrere Haken bei einer To-Do-Liste ändern brachten die Meldung hervor, dass auf einem anderen Gerät geändert wurde, ein Stream-Abriss konnte ich jedoch nicht provozieren. Liegt evtl. am Simulator.

    David G.D Online
    David G.D Online
    David G.
    schrieb am zuletzt editiert von
    #37

    @peterfido sagte in Lokal Notizen verwalten:

    sehe ich mir nachher mal an. Können beide nebeneinander installiert werden?

    Ich denke schon, hab ich aber nicht getestet An der json Variante arbeite ich aber auch nicht weiter.

    Die SQL Version hat schon einige neue Features bekommen.

    Zb einen Verlauf für Notizen (Die noch nicht gelöscht wurden) oder Backlinks (wenn du mit @ auf eine Notiz verweist hast du in der anderen Notiz einen Hinweis, dass die andere Notiz auf diese verweist)

    Zeigt eure Lovelace-Visualisierung klick
    (Auch ideal um sich Anregungen zu holen)

    Meine Tabellen für eure Visualisierung klick

    1 Antwort Letzte Antwort
    0
    • P Offline
      P Offline
      peterfido
      schrieb am zuletzt editiert von peterfido
      #38

      ich suche gerade:

      peter@debianserver:~$ sudo systemctl status notizen-sql
      × notizen-sql.service - Notizen V2 (SQLite)
           Loaded: loaded (/etc/systemd/system/notizen-sql.service; enabled; preset: enabled)
           Active: failed (Result: exit-code) since Sun 2026-03-01 08:34:56 CET; 13min ago
         Duration: 228ms
       Invocation: 1e633e7866ad4bd4851d90738a5011bc
         Main PID: 835 (code=exited, status=1/FAILURE)
      
      Mär 01 08:34:56 debianserver systemd[1]: notizen-sql.service: Scheduled restart job, restart counter is at 5.
      Mär 01 08:34:56 debianserver systemd[1]: notizen-sql.service: Start request repeated too quickly.
      Mär 01 08:34:56 debianserver systemd[1]: notizen-sql.service: Failed with result 'exit-code'.
      Mär 01 08:34:56 debianserver systemd[1]: Failed to start notizen-sql.service - Notizen V2 (SQLite).
      peter@debianserver:~$ sudo /opt/notiz-tool-sql/app.py
      /opt/notiz-tool-sql/app.py: 1: from: not found
      /opt/notiz-tool-sql/app.py: 2: from: not found
      import: unable to open X server `' @ error/import.c/ImportImageCommand/348.
      import: unable to open X server `' @ error/import.c/ImportImageCommand/348.
      import: unable to open X server `' @ error/import.c/ImportImageCommand/348.
      import: unable to open X server `' @ error/import.c/ImportImageCommand/348.
      import: unable to open X server `' @ error/import.c/ImportImageCommand/348.
      import: unable to open X server `' @ error/import.c/ImportImageCommand/348.
      import: unable to open X server `' @ error/import.c/ImportImageCommand/348.
      import: unable to open X server `' @ error/import.c/ImportImageCommand/348.
      import: unable to open X server `' @ error/import.c/ImportImageCommand/348.
      import: unable to open X server `' @ error/import.c/ImportImageCommand/348.
      import: unable to open X server `' @ error/import.c/ImportImageCommand/348.
      import: unable to open X server `' @ error/import.c/ImportImageCommand/348.
      import: unable to open X server `' @ error/import.c/ImportImageCommand/348.
      /opt/notiz-tool-sql/app.py: 16: from: not found
      /opt/notiz-tool-sql/app.py: 18: Syntax error: "(" unexpected
      peter@debianserver:~$
      
      

      Braucht der x-server?

      Gruß

      Peterfido


      Proxmox auf Intel NUC12WSHi5
      ioBroker: Debian (VM)
      CCU: Debmatic (VM)
      Influx: Debian (VM)
      Grafana: Debian (VM)
      eBus: Debian (VM)
      Zigbee: Debian (VM) mit zigbee2mqtt

      1 Antwort Letzte Antwort
      0
      • P Offline
        P Offline
        peterfido
        schrieb am zuletzt editiert von peterfido
        #39

        Worin unterscheiden sich die beiden?

        image.png

        Edit: Wenn ich es über python3 starte, fehlt flask.

        peter@debianserver:~$ sudo python3 /opt/notiz-tool-sql/app.py
        Traceback (most recent call last):
          File "/opt/notiz-tool-sql/app.py", line 1, in <module>
            from flask import Flask, render_template, request, jsonify, send_from_directory, session, redirect, url_for, send_file
        ModuleNotFoundError: No module named 'flask'
        
        

        edit2:

        die scheinen sich im cron-job zu beißen, da der Name hard-codiert ist:

        rm -f /etc/cron.d/notizen-tool
        

        Gruß

        Peterfido


        Proxmox auf Intel NUC12WSHi5
        ioBroker: Debian (VM)
        CCU: Debmatic (VM)
        Influx: Debian (VM)
        Grafana: Debian (VM)
        eBus: Debian (VM)
        Zigbee: Debian (VM) mit zigbee2mqtt

        1 Antwort Letzte Antwort
        0
        • P Offline
          P Offline
          peterfido
          schrieb am zuletzt editiert von peterfido
          #40

          OK, wenn ich es über die alte Version drüber installiere, läuft es.

          Leider wurden die alten Notizen nicht importiert und können auch nicht aus dem Backup importiert werden.

          a637f38d-8f2f-4f66-aec8-72e8ba98e6aa-image.png

          Ein älteres Backup zum manuellen Extrahieren der Texte lässt sich leider nicht bequem herunterladen.

          Gruß

          Peterfido


          Proxmox auf Intel NUC12WSHi5
          ioBroker: Debian (VM)
          CCU: Debmatic (VM)
          Influx: Debian (VM)
          Grafana: Debian (VM)
          eBus: Debian (VM)
          Zigbee: Debian (VM) mit zigbee2mqtt

          David G.D 2 Antworten Letzte Antwort
          0
          • P peterfido

            OK, wenn ich es über die alte Version drüber installiere, läuft es.

            Leider wurden die alten Notizen nicht importiert und können auch nicht aus dem Backup importiert werden.

            a637f38d-8f2f-4f66-aec8-72e8ba98e6aa-image.png

            Ein älteres Backup zum manuellen Extrahieren der Texte lässt sich leider nicht bequem herunterladen.

            David G.D Online
            David G.D Online
            David G.
            schrieb am zuletzt editiert von
            #41

            @peterfido

            Komisch, bei mir hat er beim Setup der SQL Version alles sauber importiert aus der json.

            Die neue Version lässt auch nur einen restore einer DB zu, da eigentlich die json importiert sein sollte.

            Hast du setup_sql oder setup_sql2 installiert?
            Ersteres hat bei mir den Import gemacht. Auf die 2 bin ich in einem Schritt mit sehr vielen Änderungen gegangen. Evtl ist das da verloren gegangen.

            P. S.
            Gemini meint zu 2 Versionen gleichzeitig:

            Kurz und knapp: Damit sich zwei Instanzen auf demselben Server nicht gegenseitig überschreiben, musst du im Setup-Skript an ein paar Stellen die Namen und Pfade "klonen" (z. B. eine "2" dranhängen).
            
            Hier sind die 5 Dinge, die du im Code anpassen musst:
            
            ### 1. Die Haupt-Variablen (ca. Zeile 28)
            
            Ändere das Installationsverzeichnis und den Namen des Systemdienstes:
            
            * `INSTALL_DIR="/opt/notiz-tool-2"`
            * `SERVICE_NAME="notizen2.service"`
            
            ### 2. Die hardcodierten Pfade in den Hintergrund-Skripten
            
            In der `cleanup.py` (ca. Zeile 606) und in der `backup.sh` (ca. Zeile 641) stehen aktuell noch feste Pfade. Ändere diese auf dein neues Verzeichnis:
            
            * In `cleanup.py`:
            `DB = '/opt/notiz-tool-2/data.db'` und `UPL = '/opt/notiz-tool-2/uploads'`
            * In `backup.sh`:
            `cd /opt/notiz-tool-2`
            
            ### 3. Der Linux-Systembenutzer (ca. ab Zeile 899)
            
            Ersetze im unteren Teil des Skripts (bei den Rechten, im Systemd-Service und beim Cronjob) den Benutzer `notizen` durch z.B. `notizen2`.
            Beispiel: `if ! id -u notizen2 > /dev/null 2>&1; then useradd -r -s /bin/false notizen2` und `chown -R notizen2:notizen2 $INSTALL_DIR`.
            
            ### 4. Der Dateiname für den Cronjob (ca. Zeile 925)
            
            Damit der Cronjob der ersten Instanz nicht gelöscht wird, ändere den Namen der Datei, die in `/etc/cron.d/` abgelegt wird:
            
            * `rm -f /etc/cron.d/notizen-tool-2`
            * Und entsprechend bei den `echo`-Befehlen danach auch `>> /etc/cron.d/notizen-tool-2` schreiben.
            
            ### 5. Der Port
            
            Das passiert nicht im Code, sondern ist selbsterklärend: Wenn das Skript dich am Anfang fragt, gibst du einfach einen anderen Port an (z. B. `8081`).
            
            ---
            
            Wenn du diese Anpassungen machst, laufen beide Tools komplett isoliert voneinander.
            
            Bist du bereit, dir als Nächstes die Swipe-Geste für die Sidebar auf dem Smartphone anzuschauen?
            

            Zeigt eure Lovelace-Visualisierung klick
            (Auch ideal um sich Anregungen zu holen)

            Meine Tabellen für eure Visualisierung klick

            1 Antwort Letzte Antwort
            0
            • P peterfido

              OK, wenn ich es über die alte Version drüber installiere, läuft es.

              Leider wurden die alten Notizen nicht importiert und können auch nicht aus dem Backup importiert werden.

              a637f38d-8f2f-4f66-aec8-72e8ba98e6aa-image.png

              Ein älteres Backup zum manuellen Extrahieren der Texte lässt sich leider nicht bequem herunterladen.

              David G.D Online
              David G.D Online
              David G.
              schrieb am zuletzt editiert von David G.
              #42

              @peterfido

              Ist in meiner v2 wirklich ausgeflogen.

              Hiermit kannst du es importieren. Achtung, überschreibt die DB falls schon was drinnen ist. Json muss im Ordner liegen.

              #!/bin/bash
              
              # Installationsverzeichnis (passe dies an, falls deine 2. Instanz z.B. /opt/notiz-tool-2 heißt)
              INSTALL_DIR="/opt/notiz-tool"
              JSON_FILE="$INSTALL_DIR/data.json"
              DB_FILE="$INSTALL_DIR/data.db"
              TEMP_SCRIPT="$INSTALL_DIR/run_import.py"
              
              echo "--- JSON zu SQLite Import-Tool ---"
              
              # 1. Root-Rechte prüfen
              if [ "$EUID" -ne 0 ]; then
                  echo "FEHLER: Bitte führe dieses Skript als Root (z.B. sudo) aus!"
                  exit 1
              fi
              
              # 2. Prüfen, ob die JSON-Datei existiert
              if [ ! -f "$JSON_FILE" ]; then
                  echo "FEHLER: Die Datei $JSON_FILE wurde nicht gefunden."
                  echo "Bitte lade deine alte data.json zuerst in den Ordner $INSTALL_DIR hoch."
                  exit 1
              fi
              
              # 3. Existierende Datenbank radikal löschen
              echo "Lösche existierende Datenbank..."
              rm -f "$DB_FILE"
              rm -f "$DB_FILE-wal"
              rm -f "$DB_FILE-shm"
              
              echo "Erstelle temporäres Python-Import-Skript..."
              
              # 4. Python-Skript generieren
              cat << 'EOF' > $TEMP_SCRIPT
              import json
              import sqlite3
              import sys
              import os
              
              json_file = sys.argv[1]
              db_file = sys.argv[2]
              
              try:
                  with open(json_file, 'r', encoding='utf-8') as f:
                      data = json.load(f)
              except Exception as e:
                  print(f"Fehler beim Lesen der JSON-Datei: {e}")
                  sys.exit(1)
              
              conn = sqlite3.connect(db_file)
              # Aktiviere Write-Ahead-Logging wie im Hauptprogramm
              conn.execute('PRAGMA journal_mode=WAL')
              cursor = conn.cursor()
              
              # Tabellenstruktur neu anlegen, da die DB frisch ist
              cursor.execute('''
                  CREATE TABLE IF NOT EXISTS settings (
                      key TEXT PRIMARY KEY, 
                      value TEXT
                  )
              ''')
              cursor.execute('''
                  CREATE TABLE IF NOT EXISTS notes (
                      id TEXT PRIMARY KEY,
                      parent_id TEXT,
                      sort_order INTEGER,
                      title TEXT,
                      text TEXT,
                      reminder TEXT,
                      locked_by TEXT,
                      locked_at REAL
                  )
              ''')
              cursor.execute('''
                  CREATE TABLE IF NOT EXISTS note_history (
                      id INTEGER PRIMARY KEY AUTOINCREMENT,
                      note_id TEXT,
                      title TEXT,
                      text TEXT,
                      saved_at REAL
                  )
              ''')
              
              # Standard-Einstellungen schreiben
              cursor.execute("INSERT INTO settings (key, value) VALUES ('theme', 'dark')")
              cursor.execute("INSERT INTO settings (key, value) VALUES ('accent', '#27ae60')")
              cursor.execute("INSERT INTO settings (key, value) VALUES ('password_enabled', 'false')")
              cursor.execute("INSERT INTO settings (key, value) VALUES ('history_enabled', 'true')")
              cursor.execute("INSERT INTO settings (key, value) VALUES ('history_days', '30')")
              cursor.execute("INSERT INTO settings (key, value) VALUES ('tree_last_modified', '0')")
              
              # Rekursive Funktion für den sauberen Baum-Aufbau
              def insert_node(node, parent_id=None, sort_order=0):
                  cursor.execute('''
                      INSERT INTO notes (id, parent_id, sort_order, title, text, reminder)
                      VALUES (?, ?, ?, ?, ?, ?)
                  ''', (
                      node.get('id'),
                      parent_id,
                      sort_order,
                      node.get('title', 'Neu'),
                      node.get('text', ''),
                      node.get('reminder', None)
                  ))
                  
                  # Kinder-Elemente (Unterordner/Notizen) verarbeiten
                  children = node.get('children', [])
                  for index, child in enumerate(children):
                      insert_node(child, node.get('id'), index)
              
              try:
                  if isinstance(data, dict) and 'content' in data:
                      nodes = data['content']
                  elif isinstance(data, list):
                      nodes = data
                  else:
                      print("Fehler: Unbekanntes JSON-Format. Weder Liste noch 'content'-Objekt gefunden.")
                      sys.exit(1)
                      
                  print(f"Gefundene Hauptknoten: {len(nodes)}. Starte Import...")
                  
                  for index, node in enumerate(nodes):
                      insert_node(node, None, index)
                      
                  conn.commit()
                  print("Erfolg! Alle Notizen wurden sauber in die neue SQLite-Datenbank übertragen.")
                  
              except Exception as e:
                  print(f"Datenbank-Fehler während des Imports: {e}")
              finally:
                  conn.close()
              EOF
              
              # 5. Import ausführen
              echo "Starte Datenmigration..."
              python3 $TEMP_SCRIPT "$JSON_FILE" "$DB_FILE"
              
              # 6. Rechte für den Systemdienst korrigieren
              echo "Korrigiere Dateirechte..."
              chown notizen:notizen "$DB_FILE"
              if [ -f "$DB_FILE-wal" ]; then chown notizen:notizen "$DB_FILE-wal"; fi
              if [ -f "$DB_FILE-shm" ]; then chown notizen:notizen "$DB_FILE-shm"; fi
              
              # 7. Aufräumen
              echo "Räume auf..."
              rm -f $TEMP_SCRIPT
              
              # Service neustarten
              systemctl restart notizen.service
              
              echo "--- Import komplett abgeschlossen! ---"
              

              Edit
              https://github.com/ipod86/Notizen/blob/main/json2sql.sh

              Edit 2
              Jab auf git die Versionen jetzt entsprechend umbenannt und die zwischenversion gelöscht.

              EDIT 3
              Hab grad alle Dienste, Ordner etc gelöscht und das Script lief problemlos durch. Auch mein DB Backup lies sich problemlos wiederherstellen.

              Zeigt eure Lovelace-Visualisierung klick
              (Auch ideal um sich Anregungen zu holen)

              Meine Tabellen für eure Visualisierung klick

              1 Antwort Letzte Antwort
              0
              • P Offline
                P Offline
                peterfido
                schrieb am zuletzt editiert von
                #43

                Danke für die Infos.

                Ich bin heute nicht mehr zu gekommen. Aktuell ändere ich die Kommunikation der Eaton Easy E4 von Node-Red-Nodes zu Modbus. Das hat erstmal Priorität, da ab zu vielen Datenpunkten Probleme kommen, die den WAF gefährden. ;)

                Gruß

                Peterfido


                Proxmox auf Intel NUC12WSHi5
                ioBroker: Debian (VM)
                CCU: Debmatic (VM)
                Influx: Debian (VM)
                Grafana: Debian (VM)
                eBus: Debian (VM)
                Zigbee: Debian (VM) mit zigbee2mqtt

                1 Antwort Letzte Antwort
                1
                • P Offline
                  P Offline
                  peterfido
                  schrieb am zuletzt editiert von
                  #44

                  Respekt, Du arbeitest fleißig daran weiter und baust sinnvolle Funktionen ein.
                  Da lohnt es sich für mich, am WE mal die aktuelle Version zu installieren.

                  Aktuell hänge ich im Stand hinterher, da meine Android-App darauf abgestimmt ist. Diese speichert alle Notizen zwischen, so dass ich da unterwegs ohne VPN reinsehen kann.

                  Gruß

                  Peterfido


                  Proxmox auf Intel NUC12WSHi5
                  ioBroker: Debian (VM)
                  CCU: Debmatic (VM)
                  Influx: Debian (VM)
                  Grafana: Debian (VM)
                  eBus: Debian (VM)
                  Zigbee: Debian (VM) mit zigbee2mqtt

                  1 Antwort Letzte Antwort
                  1
                  • David G.D Online
                    David G.D Online
                    David G.
                    schrieb am zuletzt editiert von
                    #45

                    Danke.
                    Gestern ist noch eine Kanban-Ansicht beigekommen.

                    Zeigt eure Lovelace-Visualisierung klick
                    (Auch ideal um sich Anregungen zu holen)

                    Meine Tabellen für eure Visualisierung klick

                    1 Antwort Letzte Antwort
                    0
                    • P Offline
                      P Offline
                      peterfido
                      schrieb am zuletzt editiert von
                      #46

                      Hallo David,

                      eben wollte ich eine URL an das alte Android Tablet senden. - Dachte mir so "Nimm einfach die Notizen" - allerdings läuft das nicht in dem alten Chrome-Browser und Android 8.1.0.

                      Das nur als Info, falls jemand die gleiche Idee hat.

                      Gruß

                      Peterfido


                      Proxmox auf Intel NUC12WSHi5
                      ioBroker: Debian (VM)
                      CCU: Debmatic (VM)
                      Influx: Debian (VM)
                      Grafana: Debian (VM)
                      eBus: Debian (VM)
                      Zigbee: Debian (VM) mit zigbee2mqtt

                      1 Antwort Letzte Antwort
                      0

                      Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

                      Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

                      Mit deinem Input könnte dieser Beitrag noch besser werden 💗

                      Registrieren Anmelden
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      247

                      Online

                      32.7k

                      Benutzer

                      82.6k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe