Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Loredo

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Profile
    • Following 0
    • Followers 1
    • Topics 7
    • Posts 57
    • Best 13
    • Groups 2

    Loredo

    @Loredo

    Developer

    22
    Reputation
    35
    Profile views
    57
    Posts
    1
    Followers
    0
    Following
    Joined Last Online
    Location München

    Loredo Follow
    Developer Starter

    Best posts made by Loredo

    • Test Adapter Residents (Bewohner) v0.1.x Latest (Beta)
      Aktuelle Test Version 0.1.0-beta.2
      Veröffentlichungsdatum 27.02.2023
      NPM Die aktuelle Version ist über NPM abrufbar. Die Aufnahme ins Latest-Repo ist angefragt.
      Adapter Beschreibung aus io-package.json Dieser Adapter hilft dabei, den Anwesenheits- und Aktivitätsstatus der einzelnen Mitbewohner abzubilden. Daraus wird ein logischer Gesamtstatus über alle Mitbewohner und deren Anwesenheit bzw. momentane Aktivität zu Hause gebildet.
      Implementierte Features Anwesenheit Bewohner / Gäste / Haustiere, Geplante Übernachtung/Abwesenheit / kürzere+längere Abwesenheit, Nachhauseweg Routine, Nicht-Stören-Modus, Schlafenzeit Routine, Aufwach Routine, Nachts aufwachen Routine, Bewohner Laune, Homekit Einrichtungshilfe, Trigger aus Drittmodulen für Anwesenheit und Nachhauseweg (z.B. Geofency), Automatisches Synchronisieren des Anwesenheitsstatus zwischen zwei Residents Geräten (Presence Following)
      Offene Features Timer für Weckruf; Nachrichten Routing Funktion

      21007df2-d343-4589-8c62-9896d55902f0-Monosnap objects - iobroker 2023-03-05 12-42-06.jpg
      8d9ab661-cb80-408e-a6a5-6f899dbd1858-Ohne Titel 2022-12-13 16-50-58.jpg

      Erste Nutzer & Tester gesucht
      Der Alpha-Test von hier ist beendet. Die aktuelle Version kann als Beta-Version betrachtet werden und darf nun auch von etwas weniger abenteuerlustigen Personen ausprobiert oder genutzt werden 🙂 .

      Adapter Beschreibung

      Ich habe die Logik für die Abbildung der Bewohner (m)eines Zuhauses in einen Adapter namens Residents überführt.

      Für ein einfaches Verständnis: Aus der An-/Abwesenheit sowie der aktuellen Aktivität aller Bewohner wird ein Gesamtstatus ermittelt, welcher diese Werte haben kann:

            "states": {
              "0": "Disabled", // zum Beispiel, wenn man verreist ist --> Heizung stärker absenken etc.
              "1": "Away", // zum Beispiel, wenn man zur Arbeit ist, einkaufen, etc --> Heizung nicht ganz so stark absenken etc.
              "2": "Pet Home", // zum Beispiel, wenn man zur Arbeit ist und der Hund zuhause bleibt --> Licht nicht komplett ausschalten etc.
              "3": "Way Home", // zum Beispiel, wenn man auf der Arbeit losgefahren ist und auf dem Heimweg ist --> Heizung schonmal wieder höher drehen etc.
              "4": "Home", // normaler Betrieb während der Anwesenheit
              "5": "Do Not Disturb", // zum Beispiel, wenn automatische Sprachdurchsagen nicht stattfinden sollen
              "6": "Wind Down", // zum Beispiel, wenn man einige Zeit vor dem Zubettgehen schonmal das Licht weiter dimmen will oder ähnliches
              "7": "Bedtime", // wenn man sich schlaffertig macht und z.B. Zähneputzen geht --> weitestgehend alles ausschalten, nur Lichter an auf dem Weg zum Bad und von dort zum Schlafzimmer, etc.
              "8": "Got Up", // wenn man morgens gerade aufgestanden ist
              "9": "Night Walk", // wenn man während der Nacht mal kurz raus muss
              "10": "Wake Up", // wenn gerade ein Weckprogramm läuft
              "11": "Night" // während alle schlafen
            }
      

      Die Anzahl der außerdem generierten Datenpunkte ist groß, um die beste Flexibilität für die eigene Automatisierung zu ermöglichen (oder auch der Darstellung in VIS etc).

      Die Integration der einzelnen Bewohner in Homekit mittels des Yahka Adapters wird unterstützt und erleichtert die Einrichtung, so dass man auch von dort aus den Anwesenheitsstatus manuell prüfen oder setzen kann.


      Mit der Materialize Admin Oberfläche habe ich so meine Schwierigkeiten das so umzusetzen, wie ich das gerne hätte. Falls sich hier jemand berufen fühlt mir dabei zu helfen, dass die Admin Oberfläche möglichst aufgeräumt ist und idealerweise auch die Eingaben prüft oder Listen zur Auswahl bietet — bitte gerne melden 🙂

      Viele Grüße
      —Julian

      posted in Tester
      Loredo
      Loredo
    • Installation Proxmox + Fedora CoreOS (Docker) + Portainer

      Hallo Folks,

      ich wollte hier einmal grob festhalten, wie ich mein neues ioBroker Setup vom Grundsatz her aufgebaut habe.
      Da ich damit sehr zufrieden bin und glaube, dass es auch für andere nützlich ist, die vor ähnlichen Fragen stehen, hier ein kleiner Exkurs von mir dazu. Ich gehe nicht auf jedes Detail ein, das "Drumherum" im heimischen Netzwerk (DHCP, DNS, IPv6, etc.) muss jeder selbst hinbekommen.

      0. Voraussetzungen

      1. Proxmox installieren:
        Ich gehe davon aus, dass Proxmox bereits auf einem x86_64 System installiert ist. Das geht so leicht und es gibt so viele Hilfen dazu im Netz, dass ich dazu nicht viel schreiben möchte.
        Für mich war wichtig, dass ich beim Setup auf ZFS im RAID1 Modus als Dateisystem setzen kann. Das geht auch "zu Fuß", aber der Peace of Mind ist höher, wenn man dazu einfach zwei SSD Platten derselben Größe (deshalb idealerweise auch vom gleichen Hersteller und Typ) im System hat. Der Proxmox Installer kümmert sich dann um alles und man kann später den Speicherplatz wesentlich flexibler nutzen, weil man die virtuellen Festplatten großzügig anlegen kann, ohne dass der Speicherplatz blockiert ist oder man später Aufwand hat zu klein geratene Dateisysteme zu vergrößern. RAID1 ist für mich dabei ein netter Nebeneffekt, war aber keine spezielle Anforderung von mir.
        Solch ein System läuft bei mir schon seit fast 10 Jahren, der Intel NUC ist Anno 2013 und schnurrt noch immer gut. Die SSDs habe ich einige Male getauscht, aber die Substanz ist super. Angesichts der hohen Preise für Embedded Systeme habe ich nun zum dritten Mal beide SSDs ersetzt und den NUC auch in ein lüfterloses Gehäuse umgebaut, anstatt den defekten CPU-Lüfter zu tauschen. Vielleicht noch etwas Inspiration am Rande auch für andere als Alternative zu einem überteuerten Raspberry Pi 4. Selbst dieser alte Intel NUC zieht bei mir nur zwischen 3 und 4 Watt, damit kann ich gut leben.
      2. Lokales Docker:
        Du brauchst auf deiner Workstation zur Generierung der Initialisierungsdatei für Fedora CoreOS ein lokales Docker. Damit wird es am einfachsten aus der Butane YAML Konfigurationsdatei die für CoreOS eigentlich notwendige Ignition JSON Datei zu generieren. Damit konfiguriert sich CoreOS beim ersten Start selbst und kann auch während automatischer Updates sicherstellen, dass der gewünschte Zustand danach wieder zur Verfügung steht.
      3. Python 3:
        Damit wir während der Installation die Konfigurationsdatei laden können, muss sie auf einem Webserver bereitgelegt werden. Ich starte dafür einfach einen über Python 3 auf meinem Mac. Für Windows gibt es sicher auch Methoden, einfach mal selbst googlen. Es kann natürlich auch dein eigener Webserver oder ein Hostingpaket im Internet sein, wir brauchen den nur kurz.

      1. Fedora CoreOS Ignition Datei generieren
      Lege eine Textdatei mit dem Namen coreos.bu an und kopiere den folgenden Inhalt als Basis:

      variant: fcos
      version: 1.4.0
      passwd:
        users:
          - name: core
            ssh_authorized_keys:
              - ssh-ed25519 AAAAC3..... me@example.tld
      storage:
        files:
          - path: /etc/hostname
            mode: 0644
            contents:
              inline: |
                iobroker-dockerhost
          - path: /etc/profile.d/systemd-pager.sh
            mode: 0644
            contents:
              inline: |
                # Tell systemd to not use a pager when printing information
                export SYSTEMD_PAGER=cat
          - path: /etc/sysctl.d/20-silence-audit.conf
            mode: 0644
            contents:
              inline: |
                # Raise console message logging level from DEBUG (7) to WARNING (4)
                # to hide audit messages from the interactive console
                kernel.printk=4
          - path: /etc/NetworkManager/system-connections/${interface}.nmconnection
            mode: 0600
            contents:
              inline: |
                [connection]
                id=ens18
                type=ethernet
                interface-name=ens18
                [ipv4]
                address1=192.168.178.10/24,192.168.178.1
                dhcp-hostname=demucvmkp01con
                dns=192.168.178.1;
                dns-search=home.arpa
                may-fail=false
                method=manual
          - path: /etc/systemd/journald.conf
            mode: 0644
            overwrite: true
            contents:
              inline: |
                [Journal]
                SystemMaxUse=200M
                SystemMaxFileSize=20M
          - path: /etc/zincati/config.d/55-updates-strategy.toml
            contents:
              inline: |
                [updates]
                strategy="periodic"
                [[updates.periodic.window]]
                days=[ "Sat", "Sun" ]
                start_time="22:30"
                length_minutes=60
        disks:
        - device: /dev/sdb
          wipe_table: false
          partitions:
          - size_mib: 0
            start_mib: 0
            label: docker-volumes
        filesystems:
          - path: /var/lib/docker/volumes
            device: /dev/disk/by-partlabel/docker-volumes
            format: xfs
            with_mount_unit: true
            mount_options:
                  - noatime
      system:
        units:
          - name: serial-getty@ttyS0.service
            dropins:
            - name: autologin-core.conf
              contents: |
                [Service]
                # Override Execstart in main unit
                ExecStart=
                # Add new Execstart with `-` prefix to ignore failure`
                ExecStart=-/usr/sbin/agetty --autologin core --noclear %I $TERM
          - name: rpm-ostree-install.qemu-guest-agent.service
            enabled: true
            contents: |-
              [Unit]
              Description=Layer qemu-guest-agent with rpm-ostree
              Wants=network-online.target
              After=network-online.target
              # We run before `zincati.service` to avoid conflicting rpm-ostree
              # transactions.
              Before=zincati.service
              ConditionPathExists=!/var/lib/%N.stamp
      
              [Service]
              Type=oneshot
              RemainAfterExit=yes
              # `--allow-inactive` ensures that rpm-ostree does not return an error
              # if the package is already installed. This is useful if the package is
              # added to the root image in a future Fedora CoreOS release as it will
              # prevent the service from failing.
              ExecStart=/usr/bin/rpm-ostree install --apply-live --allow-inactive qemu-guest-agent
              ExecStart=/bin/touch /var/lib/%N.stamp
      
              [Install]
              WantedBy=multi-user.target
          - name: docker.autoheal.service
            enabled: true
            contents: |-
              [Unit]
              Description=Docker Autoheal Container
              After=docker. Service
              Requires=docker.service network.target network-online.target
      
              [Service]
              Type=oneshot
              RemainAfterExit=yes
              TimeoutStartSec=0
              ExecStartPre=-/usr/bin/docker stop %n
              ExecStartPre=-/usr/bin/docker rm %n
              ExecStartPre=-/usr/bin/docker pull willfarrell/autoheal
              # Privileged mode is required for binding to local socket to work due to SELinux
              ExecStart=/usr/bin/docker run --label portainer.hidden="true" --privileged=true -d --name %n --restart always -v /var/run/docker.sock:/var/run/docker.sock --network none willfarrell/autoheal
              ExecStop=/usr/bin/docker stop -t 15 %n
      
              [Install]
              WantedBy=multi-user.target
          - name: docker.portainer-agent.service
            enabled: true
            contents: |-
              [Unit]
              Description=Portainer Agent Container
              After=docker.service
              Requires=docker.service network.target network-online.target
      
              [Service]
              Type=oneshot
              RemainAfterExit=yes
              TimeoutStartSec=0
              ExecStartPre=-/usr/bin/docker network create portainer_agent_network --attachable --internal
              ExecStartPre=-/usr/bin/docker stop %n
              ExecStartPre=-/usr/bin/docker rm %n
              ExecStartPre=-/usr/bin/docker pull portainer/agent
              # Privileged mode is required for binding to local socket to work due to SELinux
              ExecStart=/usr/bin/docker run --label portainer.hidden="true" --privileged=true -d --network portainer_agent_network --name %n --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/docker/volumes:/var/lib/docker/volumes portainer/agent
              ExecStop=/usr/bin/docker stop -t 15 %n
      
              [Install]
              WantedBy=multi-user.target
          # - name: docker.portainer.service
          #   enabled: true
          #   contents: |-
          #     [Unit]
          #     Description=Portainer Community Edition Container
          #     Requires=docker.portainer-agent.service docker.service network.target network-online.target
          #
          #     [Service]
          #     Type=oneshot
          #     RemainAfterExit=yes
          #     TimeoutStartSec=0
          #     ExecStartPre=-/usr/bin/docker stop %n
          #     ExecStartPre=-/usr/bin/docker rm %n
          #     ExecStartPre=-/usr/bin/docker pull portainer/portainer-ce
          #     ExecStartPre=/usr/bin/docker volume create portainer_data
          #     ExecStart=/usr/bin/docker run --label portainer.hidden="true" -d -p 8800:8000 -p 9443:9443 --name %n --restart always -v portainer_data:/data portainer/portainer-ce
          #     ExecStartPost=-/usr/bin/docker network connect portainer_agent_network %n
          #     ExecStop=/usr/bin/docker stop -t 15 %n
          #
          #     [Install]
          #     WantedBy=multi-user.target
          - name: docker.portainer.service
            enabled: true
            contents: |-
              [Unit]
              Description=Portainer Business Edition Container
              Requires=docker.portainer-agent.service docker.service network.target network-online.target
      
              [Service]
              Type=oneshot
              RemainAfterExit=yes
              TimeoutStartSec=0
              ExecStartPre=-/usr/bin/docker stop %n
              ExecStartPre=-/usr/bin/docker rm %n
              ExecStartPre=-/usr/bin/docker pull portainer/portainer-ee
              ExecStartPre=/usr/bin/docker volume create portainer_data
              ExecStart=/usr/bin/docker run --label portainer.hidden="true" -d -p 8800:8000 -p 9443:9443 --name %n --restart always -v portainer_data:/data portainer/portainer-ee
              ExecStartPost=-/usr/bin/docker network connect portainer_agent_network %n
              ExecStop=/usr/bin/docker stop -t 15 %n
      
              [Install]
              WantedBy=multi-user.target
          - name: docker.builder-prune.service
            enabled: true
            contents: |-
              [Unit]
              Description=Docker Builder Prune
      
              [Service]
              Type=oneshot
              ExecStart=/usr/bin/docker builder prune --all --force --keep-storage 5G
          - name: docker.builder-prune.timer
            enabled: true
            contents: |-
              [Unit]
              Description=Run Docker Builder Prune
      
              [Timer]
              OnCalendar=20:30 Europe/Berlin
      
              [Install]
              WantedBy=multi-user.target
          - name: docker.image-prune.service
            enabled: true
            contents: |-
              [Unit]
              Description=Docker Image Prune
      
              [Service]
              Type=oneshot
              ExecStart=/usr/bin/docker image prune --all --force
          - name: docker.image-prune.timer
            enabled: true
            contents: |-
              [Unit]
              Description=Run Docker Image Prune
      
              [Timer]
              OnCalendar=20:45 Europe/Berlin
      
              [Install]
              WantedBy=multi-user.target
      

      Ich empfehle dir als Editor Visual Studio Code. Dort kannst du manuell auch das Syntax Highlighting für YAML einstellen, so dass die Datei für dich besser les- und editierbar wird.
      Damit du dich später als Benutzer core in der virtuellen Maschine per SSH einloggen kannst, musst du ganz oben zunächst den Public Key deines SSH Schlüssels hinterlegen.
      Auch die Netzwerkeinstellungen wie Hostname, statische IP-Adresse, Gateway, DNS-Search etc. solltest du deinen lokalen Gegebenheiten nach anpassen.

      In der Mitte etwa sind drei systemd-Dienste definiert.

      Der erste Dienst startet einen Docker Autoheal Container, der alle unhealthy Container automatisch neu startet, die das Label autoheal=true tragen.

      Die anderen beiden Dienste sorgen für die Bereitstellung von Portainer als Frontend. Der auskommentierte Dienst ist für die Community Edition. Solltest du diese benutzen wollen, dann musst du diesen Teil wieder einkommentieren und dafür den Dienst für die Enterprise Edition wieder auskommentieren! Ich benutze hier die Enterprise Edition, bei der man problemlos eine kostenfreie Lizenz für bis zu 5 Nodes anfordern kann. Das reicht für mich und ich kann die Komfortfunktion, Images automatisch zu pullen, wieder benutzen, die vor einiger Zeit wohl aus der Community Edition entfernt wurde.

      Portainer wird hier nach draußen über die Ports 8800 statt 8000, 9900 statt 9000 und 9443 erreichbar gemacht. Außerdem wird auch der Portainer Agent installiert, welcher anstelle des Ports 9001 den Port 9901 benutzt. Damit haben wir später keine Kollision mit dem ioBroker und können dort ohne viel Aufwand die Standardeinstellung beibehalten.

      Wenn du die Datei fertig hast, dann öffne ein Terminalfenster und wechsle in das Verzeichnis, wo du die Datei gespeichert hast.
      Dort generierst du dann die Fedora CoreOS Ignition JSON Datei coreos.ign mit dem folgenden Befehl:

      docker run -i --rm quay.io/coreos/butane:release < coreos.bu > coreos.ign
      

      Nun starten wir noch einen temporären Webserver über Python auf meiner Workstation:

      python3 -m http.server
      

      Alternativ kannst du die coreos.ign auch irgendwo anders hochladen. Wir müssen sie später nur über cURL irgendwo runterladen können.

      3. Fedora CoreOS installieren

      1. ISO Image laden:
        Lade das aktuelle Stable Image von Fedora CoreOS auf den Proxmox Server. Das geht inzwischen auch über die GUI auf dem Local Storage unter ISO Images --> Download from URL.
        a73ba2a6-ce25-4d75-b030-ce0b493a7f5b-image.png
        CoreOS ist eine hervorragende Basis, um Docker auf Proxmox zu ergänzen. Es ist sehr wartungsarm, denn es ist dafür gebaut ein Unterbau für Container zu sein und sich selbstständig aktuell zu halten. Die Installation ist etwas umständlich, aber dafür erhalten wir hier auch echte Infrastructure-as-Code, wie man neudeutsch so schön sagt. Das fügt sich super in das Konzept von Docker mit ein, wo Images über das Festtackern an bestimmte Versionen bzw. Tags auch eine verlässliche Reproduzierbarkeit erreicht wird.

      2. Virtuelle Maschine erstellen:
        Auch das Erstellen einer virtuellen Maschine ist wohl kaum der Rede wert. Es gibt nur wenige Punkte zu beachten:

        • Weise der VM 2 Festplatten zu. Bei der ersten Festplatte stellst du ein, dass sie vom Backup ausgenommen ist. Dort liegt später nur das System bzw. die Docker Container und die werden im Falle eines kompletten Restore sehr einfach von Grund auf wiederhergestellt. Du kannst das anders handhaben, aber ich mache das momentan so.
        • Lass den QEMU Guest Agent noch deaktiviert.
        • Gib das Fedora CoreOS ISO Image für die Installationsquelle an.
      3. Fedora Core OS auf die Festplatte kopieren:
        Starte jetzt die VM und Fedora CoreOS wird als Live-Umgebung direkt aus dem ISO Image heraus gestartet. Passe den folgenden Befehl an deine Umgebung an, um die zuvor generierte Fedora CoreOS Ignition Datei zu laden:

        curl -O 192.168.178.100:8000/coreos.ign
        

        Du kannst noch prüfen, ob die Datei auch erfolgreich geladen wurde, indem du kurz hineinschaust:

        cat coreos.ign
        

        Ist alles in Ordnung, dann installierst du CoreOS nun auf der ersten Festplatte /dev/sda und schaltest das System anschließend aus:

        sudo coreos-installer install /dev/sda --ignition-file coreos.ign
        sudo poweroff
        

      Füge nun einen Serial Port zur VM hinzu, entferne das ISO Image aus dem virtuellen CD-Laufwerk der VM in Proxmox, und starte die VM wieder. Wenn du dich jetzt mit der Proxmox Console über xterm.js statt noVNC verbindest, wirst du über den seriellen Port statt über die emulierte Grafikkarte verbunden und direkt als Benutzer core eingeloggt. Mit sudo kannst du lokale Docker befehle ausführen. Das ist eine praktische Alternative zum SSH Login.

      Läuft alles gut, dann sollte auch nach kurzer Zeit auf der von dir eingestellten IP-Adresse und Port 9443 der Portainer zur weiteren Konfiguration erreichbar sein. Unter Environments kannst du dabei auch statt der lokalen Docker Verbindung den Portainer Agent Dienst angeben. Nutze dafür einfach die IP-Adresse deines CoreOS Host und den Port 9901. Damit stehen weitere Funktionen in Portainer zur Verfügung, beispielsweise kannst du auf die Inhalte der Docker Volumes über den Browser zugreifen.

      CoreOS hat auch automatisch die zweite Festplatte eingebunden und dort werden nun die Docker Volumes abgelegt, die wir auch wie oben beschrieben über Proxmox backupen können. Beim ersten Start wird auch der QEMU Guest Agent nachinstalliert, so dass du ihn dann in Proxmox aktivieren kannst. Dafür musst du die Maschine nochmals komplett ausschalten, die Einstellung in Proxmox ändern, und die VM wieder starten.

      Glückwunsch! Wir haben jetzt ein sauberes Docker Basissystem, was sich selbst aktuell hält und wartet, so dass wir uns nun vollkommen auf die eigentlichen Dienste konzentrieren können.

      4. Docker Stack hochladen und starten
      Es gibt bereits unzählige Beschreibungen, wie man seine Docker Umgebung aufbaut. Über Portainer kannst du unter dem Menüpunkt Stacks eine Docker Compose Datei hochladen bzw. dort definieren. Ein Beispiel, wie das im kleinen Ausbaustil aussehen könnte, möchte ich abschließend noch kurz zeigen:

      version: '3.8'
      
      services:
      
        influxdb:
          image: influxdb:2.2-alpine
          restart: always
          container_name: influxdb
          ports:
            - 8086:8086
          environment:
            DOCKER_INFLUXDB_INIT_ADMIN_TOKEN: mySecretInfluxAdminToken
            DOCKER_INFLUXDB_INIT_BUCKET: iobroker
            DOCKER_INFLUXDB_INIT_CLI_CONFIG_NAME: default
            DOCKER_INFLUXDB_INIT_MODE: setup
            DOCKER_INFLUXDB_INIT_ORG: MyHome
            DOCKER_INFLUXDB_INIT_PASSWORD: myEvenMoreSecretInfluxAdminPassword
            DOCKER_INFLUXDB_INIT_RETENTION: 52w
            DOCKER_INFLUXDB_INIT_USERNAME: admin
          volumes:
            - influxdb:/var/lib/influxdb2
            - influxdb_conf:/etc/influxdb2
      
        iobroker:
          image: buanet/iobroker:latest-v7
          restart: always
          container_name: iobroker
          hostname: iobroker
          network_mode: host
          environment:
            AVAHI: "true"
            PACKAGES: avahi-daemon libpam0g-dev
          volumes:
            - iobroker:/opt/iobroker
          labels:
            autoheal: true
      
      volumes:
        influxdb:
        influxdb_conf:
        iobroker:
      

      Ich lasse ioBroker hier im Netzerk Host-Modus laufen, damit es keine Probleme bei den Adaptern Yahka und Sonos gibt. Kann aber auch anders aussehen, wer hätte das gedacht 🙃

      Viel Spaß beim nachkochen!

      —Julian

      posted in Praktische Anwendungen (Showcase)
      Loredo
      Loredo
    • RE: Admin 6.0 - neu als Beta

      Zunächst einmal meinen "herzlichen Glückwunsch"!

      Habe ioBroker seit einigen Jahren nicht benutzt und wollte hier mal loswerden, wie begeistert ich von der Entwicklung sowohl des js-controller als auch des Admin Adapters v5 und jetzt v6 bin. Ich erkenne so viele Themen wieder, mit denen ich beim F-Projekt mit 4 Buchstaben über Jahre ins Leere gelaufen bin. Wirklich super. Auch die Balance alte Zöpfe abzuschneiden und nicht Jahrzehnte mitzuschleppen, finde ich gelungen. Geht natürlich nur, weil die Basis es auch zulässt eine anständige Kommunikation dazu nicht tief vergraben in irgendeinem Forum anzustellen. Die ganze Versionierung drum herum, die Nutzung der ganzen GitHub Funktionalitäten sich auch über Bots bei der Pflege der Abhängigkeiten helfen zu lassen, die Standardisierung von Repos mit Hilfe des Adapter Creator – Wahnsinn.

      Ich bin sehr angetan und überlege, wie ich die Lernkurve von Perl zu JS hinbekomme, um einige meiner (teils nie fertigen, weil unzureichende Basis) Module in ioBroker Adapter zu gießen. Kommt Zeit, kommt …

      posted in ioBroker Allgemein
      Loredo
      Loredo
    • Test Adapter Residents v0.0.x GitHub (Alpha)
      Aktuelle Test Version 0.0.1
      Veröffentlichungsdatum 12.12.2022
      Github Link https://github.com/jpawlowski/ioBroker.residents
      Adapter Beschreibung aus io-package.json Dieser Adapter hilft dabei, den Anwesenheits- und Aktivitätsstatus der einzelnen Mitbewohner abzubilden. Daraus wird ein logischer Gesamtstatus über alle Mitbewohner und deren Anwesenheit bzw. momentane Aktivität zu Hause gebildet. Mehrere Bewohner-Instanzen können dabei miteinander kombiniert werden, so dass beispielsweise Erwachsene und Kinder in ihrer eigenen Instanz abgebeldet sind und beide Instanzen in einer dritten Instanz den übergeordneten Status für alle Mitbewohner insgesamt bilden.

      c9bdad7e-d7cd-4b56-ae65-e3a2cceabb30-objects - iobroker 2022-12-13 16-23-06.jpg
      8d9ab661-cb80-408e-a6a5-6f899dbd1858-Ohne Titel 2022-12-13 16-50-58.jpg

      Tester gesucht
      Freiwillige Tester sind gesucht und aufgefordert hier Feedback zu geben. 🙂

      Adapter Beschreibung
      Ich habe die Logik für die Abbildung der Bewohner (m)eines Zuhauses in einen Adapter namens Residents überführt.

      Die Basisfunktionen für Anwesend/Abwesend funktionieren selbstverständlich bereits, drum herum sind allerdings noch eine ganze Reihe weiterer Ideen und Prozessabläufen geplant, die insbesondere neben der puren An-/Abwesenheit auf die jeweilige Aktivität jeder einzelnen Person abzielt. Also beispielsweise "auf dem Nachhauseweg" oder "wird heute übernachten und deshalb auch wieder heute zurückkehren".
      Auch eine Unterscheidung zwischen Mitbewohnern, Gästen, und Haustieren (insbesondere Hunden) gibt es bereits.

      Die Anzahl der generierten Status-Objekte ist relativ groß, um die beste Flexibilität für die eigene Automatisierung zu ermöglichen (oder auch der Darstellung in VIS etc). Nicht alle davon werden bereits gefüllt oder sind bedienbar, geben aber schonmal einen Indikator darüber, wofür sie mal gedacht sind (entsprechende Benamung und oft auch Description ist immer dabei).

      Die Integration der einzelnen Bewohner in Homekit mittels des Yahka Adapters wird auch schon unterstützt und erleichtert die Einrichtung, so dass man auch von dort aus den Anwesenheitsstatus manuell prüfen oder setzen kann. Gedacht ist es allerdings bisher so, dass man den Anwesenheitsstatus beispielsweise über den Geofency Adapter automatisch setzt. Momentan braucht es dafür noch ein Blockly Script, aber die Verknüpfung im Residents Adapter soll auch noch direkt implementiert werden.

      Mit der Materialize Admin Oberfläche habe ich so meine Schwierigkeiten das so umzusetzen, wie ich das gerne hätte. Falls sich hier jemand berufen fühlt mir dabei zu helfen, dass die Admin Oberfläche möglichst aufgeräumt ist und idealerweise auch die Eingaben prüft oder Listen zur Auswahl bietet — bitte gerne melden 🙂

      Viele Grüße
      —Julian

      posted in Tester
      Loredo
      Loredo
    • RE: Test Adapter Residents (Bewohner) v0.1.x Latest (Beta)

      @negalein sagte in Test Adapter Residents (Bewohner) v0.0.x Latest (Beta):

      Wird es hier Auswahlfelder geben?
      4e5f8cd0-69fb-40c7-aff7-2e6a8bc08f46-image.png

      Hätte ich gerne, aber wie ich oben schon betont habe, komme ich mit Materialize nicht klar. Es sollten auch mehrere Datenpunkte auswählbar sein, die dann mit "und" oder "oder" Verknüpfung gemeinsam gelten können. Auch hätte ich gerne ein Popup Fenster pro Bewohner, auf dem die Einstellungen dargestellt werden, weil die Tabellenzeile dafür nicht ausreichend ist.

      Mein Problem beginnt schon dabei, dass ich nicht sicher bin, ob die index_m.js überhaupt so richtig vom Aufbau her ist. ESLint weiß beispielsweise wohl nichts vom umherliegenden Framework und wirft im Editor deshalb jede Menge Fehler.
      Anleitungen von materializecss.com funktionieren nicht, weil JavaScript oder JQuery Code nicht zu funktionieren scheint.

      Last but not least das Thema der Übersetzung, wo ich auch unsicher bin, wie man das korrekt angeht. Lohnt aber auch erst drüber nachzudenken, wenn die gerade beschriebenen Probleme gelöst sind.

      @negalein sagte in Test Adapter Residents (Bewohner) v0.0.x Latest (Beta):

      hier steht 0, obwohl 3 von 5 online sind.
      b2454422-f6ce-4e24-8203-5aaa6d6098d5-image.png

      Kann ich hier nicht nachvollziehen. Grundsätzlich ändern sich die Werte nur, wenn auch ein Event dazu führt, dass der Status neu berechnet wird.

      @negalein sagte in Test Adapter Residents (Bewohner) v0.0.x Latest (Beta):

      wie wird das zB ausgewertet?
      residents.0.info.presence.nightList

      Du meinst zB im JavaScript Adapter in einem Blockly? Du kannst dort den Wert von residents.0.info.presence.nightList oder anderen Listen als JSON parsen und dann über eine Schleife auf die jeweiligen Werte in der Liste zugreifen und diese verarbeiten.

      @arteck sagte in Test Adapter Residents (Bewohner) v0.0.x Latest (Beta):

      Bewohner Laune ???????

      Ich nehme an, auch 7 Fragezeichen bedeuten eine Frage? 😄
      Diese Spielerei kann z.B. dazu verwendet werden, um andere Farben bei Lampen zu setzen oder auf diesem Wert andere Szenen zu benutzen. Das Haus könnte so sensibel auf einzelne oder auch alle anwesenden Bewohner reagieren und auf den jeweiligen (Gesamt)Gemütszustand eingehen. Man kann den Zustand auch als Sternchen auf einem Display neben der Kinderzimmertür oder ähnlichem anzeigen lassen als Indikator dafür, ob das Kind / der/die Jugendliche gerade freundlich gestimmt ist oder nicht (geht einher mit dem "Nicht Stören" Modus, den man natürlich zusätzlich anzeigen lassen könnte als Alternative zu den klassischen Aufklebern an der Tür "Draußen bleiben!!!". 🤡

      @sigi234 sagte in Test Adapter Residents (Bewohner) v0.0.x Latest (Beta):

      @loredo sagte in Test Adapter Residents (Bewohner) v0.0.x Latest (Beta):

      Nicht notwendigerweise. Welche zwei Datenpunkte genau meinst du denn mit "sind auf true"?

      Screenshot (5183).jpg

      Und diese 2 DP sind auch in deinen Adapter eingetragen.

      Screenshot (5184).jpg

      Ich habe etwas drüber nachgedacht und vermute stark, dass du die Erwartung hattest, dass der derzeitige Status sofort übernommen wird, ohne dass dies durch ein Kommen/Gehen Event passiert? Grundsätzlich ist ja alles Event gesteuert, deshalb musst du dich für eine Änderung auch tatsächlich aus dem Haus bewegen oder dem Fritzbox Presence Modul das entsprechend anders simulieren lassen.

      @sigi234 sagte in Test Adapter Residents (Bewohner) v0.0.x Latest (Beta):

      Eventuell liegt es auch an control? Da ist bei mir alles auf true?

      Screenshot (5182).png

      Nein. Die Control Datenpunkte sind alle vom Typ "Button" und kennen als solche auch nur den einen Status true. Du hast aktuell die Ansicht auf den Expertenmodus gestellt, weshalb dir die Werte nicht als Icons dargestellt werden, sondern als reine Daten. Wenn du den Expertenmodus wieder ausschaltest, siehst du auch wieder die Button-Icons bei den Control Datenpunkten und es sollte dir wieder einfallen, dass dort nur der Wert true Sinn macht 😉

      Ich habe gerade eine neue Version hochgeladen, bei der die bestehenden Werte auch bereits beim Start der Adapterinstanz übernommen werden. Das sollte deiner Erwartung etwas entgegen kommen 🙃

      posted in Tester
      Loredo
      Loredo
    • RE: Test Adapter Residents v0.0.x GitHub (Alpha)

      @sigi234 Habe ich jetzt so eingebaut, dass man jeden Datenpunkt nehmen kann, der entweder true/false oder 0/1 benutzt. Auch einen Datenpunkt mit einem JSON kann man angeben, worin nach den Properties entry/presence/present gesucht wird. Damit sollte ein sehr flexible Synchronisierung mit anderen Presence-Quellen (und eben auch Geofency) möglich sein.

      posted in Tester
      Loredo
      Loredo
    • RE: Test Adapter Residents (Bewohner) v0.1.x Latest (Beta)

      @sigi234 nicht wirklich. Die Installation sollte über NPM erfolgen, dafür braucht man keinen Link mehr.
      Sobald der Pull Request für das Latest Repo durch ist, geht dann aber auch eine ganz normale Installation.

      posted in Tester
      Loredo
      Loredo
    • RE: Test Adapter Residents (Bewohner) v0.1.x Latest (Beta)

      @sigi234 sagte in Test Adapter Residents (Bewohner) v0.0.x Latest (Beta):

      Was sind Resident groups ?

      Du kannst mehrere Residents Instanzen in einer Kette verknüpfen, so dass der Gesamtstatus aus allen Instanzen gemeinsam berechnet wird. Dafür gibt es dann neue Datenpunkte unter residents.<instance>.group.

      @sigi234 sagte in Test Adapter Residents (Bewohner) v0.0.x Latest (Beta):

      Wünsche:

      • Pets deaktivierbar

      • Foreign Way Home Datapoints deaktivierbar

      Solange du keine Haustiere anlegst, kannst du die Datenpunkte auch einfach ignorieren.
      Gleiches gilt für die wayhome Datenpunkte. Sie sind halt da, ob sie benutzt werden, oder nicht. Stör dich nicht an ein paar mehr Bytes im Arbeitsspeicher. 😉
      Das extra rauszunehmen macht den Adapter nur komplexer und schlechter zu warten.

      posted in Tester
      Loredo
      Loredo
    • RE: Test Adapter Residents (Bewohner) v0.1.x Latest (Beta)

      @negalein sagte in Test Adapter Residents (Bewohner) v0.0.x Latest (Beta):

      Ah, ok. Da hatte ich dann falsche Erwartungen. Schade
      Dachte er ist ähnlich dem FB-Checkpresence.

      Geofency, Tasker & Co. funktionieren nicht, da zu ungenau.
      Muss dann wieder die Blocklys reaktivieren.

      Woher bekommen denn deine Blockys einen genaueren Wert?

      Der Residents Adapter ist vergleichbar zu FB-Checkpresence, mit dem Unterschied, dass man nicht auf eine Fritzbox beschränkt ist. Der Residents Adapter ist generisch und kann mit jedem anderen Adapter als Datenlieferant benutzt werden. Den Status schaltet man entweder über eigene Blocky Scripte oder man gibt in den Residents Einstellungen für den jeweiligen Bewohner an, welcher Datenpunkt beobachtet werden soll, um keine extra Blockly Scripte zu brauchen.

      Mit dem Residents Adapter kann man außerdem auch den Bewohnerstatus separat manuell steuern, was beim FB-Checkpresence Adapter nicht geht. Deshalb ist es trotzdem sinnvoll Residents und FB-Checkpresence (oder Geofency etc) zusammen zu benutzen. Dadurch kann man auch weitere Aktivitäten neben der reinen An-/Abwesenheit einbeziehen. Das beste Beispiel ist natürlich, ob man gerade schläft oder nicht, ob man gerade auf dem Weg ins Bett ist, ob man gerade aufgewacht ist und nachts mal kurz raus ist, ob der Wecker gerade weckt, ob man den Wecker weggedrückt hat, ob man gerade aufgestanden ist, etc. ... Dabei hilft der Adapter das je Person abzubilden und bildet über alle anwesenden Bewohner einen sinnvollen Gesamtstatus, der sowohl die Anwesenheit als auch die aktuelle Aktivität mit einbezieht.

      Last but not least... der Residents Adapter unterscheidet zwischen kurzfristiger Abwesenheit während des Tages und längerer Abwesenheit über mehrere Tage. Daraufhin kann man seine Hausautomation unterschiedlich gestalten und beispielsweise die Heizungstemperatur bei längerer Abwesenheit stärker absenken als wenn erwartet wird, dass mindestens ein Bewohner heute noch wieder zurückkehren und übernachten wird.

      Zum einfachen Gesamtverständnis:

      Der Residents Adapter ist ein Logik-Adapter, er bietet eine Logikschicht an und wird sinnvollerweise mit anderen Adaptern gemeinsam benutzt. Die Adapter für Geofency oder FB-Checkpresence sind Geräte-Adapter. Letzterer mischt streng genommen Logik und Gerätestatus und liefert mehr, als man (ich) von so einem Datenlieferanten erwarten würde.

      [Datenlieferant Adapter] (z.B. Geofency, FB-Checkpresence, Unifi,...) ----> [Residents Gerät] <---- [eigene Automationen, die den Bewohnerstatus benutzen] (z.B. Blockly Scripte)

      posted in Tester
      Loredo
      Loredo
    • RE: Test Adapter Residents (Bewohner) v0.1.x Latest (Beta)

      @da_woody sagte in Test Adapter Residents (Bewohner) v0.0.x Latest (Beta):

      über den ping-adapter weis ich ob wer von uns zu hause ist.

      Das genügt mir persönlich eben nicht. Allein schon, weil ich bei einem Ping-Fehler nicht so leicht manuell eingreifen kann und dafür wieder mit Blockly-Scripten und eigenen Datenpunkten was zwischenpuffern muss. Auch ist es schwierig, wenn man mehrere/unterschiedliche Anwesenheitstrigger benutzen will oder gar eine Kombination aus mehreren.
      Genau das mache ich lieber mit meinem Residents Adapter. Das Funktionsprinzip dahinter habe ich schon seit 10 Jahren erfolgreich im Einsatz (damals habe ich das gleichnamige Residents Modul für FHEM dafür entwickelt).

      Ich möchte zum Beispiel auch dynamisch Gäste in die Anwesenheit hinzufügen und entfernen. Ich möchte gerne wissen, ob jemand nur kurz abwesend ist und heute noch zurückkehrt oder ob derjenige länger als 1 Tag abwesend ist, um beispielsweise die Heizung noch weiter herunterzuregeln. Ich möchte wissen, wenn sich jemand auf dem Heimweg befindet und ggf. schonmal Vorbereitungen für die Ankunft treffen (z.B. Heizung früher hochregeln). Ich möchte wissen, an wen ich Benachrichtungen schicken kann. Ich möchte die Person namentlich begrüßen können, die zuletzt nach Hause gekommen ist. Ich möchte die Anwesenheit in Apple Homekit sehen und steuern. Die Liste ist lang – sehr lang.

      Dafür brauche ich jede Menge Informationen, die mir der einfache Ping-Adapter nicht liefert. Wohl aber brauche ich (in deinem Fall) den Ping Adapter als Eingangsgröße für die Events. Aber die Logik-Verarbeitung für den tatsächlichen Anwesenheitsstatus überlasse ich lieber meiner ausgeklügelten Logik dazu. Das zu generalisieren, anstatt es in duzenden Blockly-Scripts zu pflegen, macht mir Spaß und es gibt mir gleichzeitig die Möglichkeit, die Logik mit weniger Aufwand auf mehreren Systemen zu pflegen und synchron zu halten (ich besitze mehrere Anwesen und Ferienhäuser, auch mit Pferdestall natürlich, aber auch Hühner).

      Falls jemand ähnliche Anforderungen hat oder einen Mehrwert darin erkennt, die Anwesenheitssteuerung speziell auszulagern und zu zentralisieren, dann kann er meinen Residents Adapter auch dafür benutzen. Aber niemand MUSS ihn benutzen, denke aber das ist klar 😉

      posted in Tester
      Loredo
      Loredo

    Latest posts made by Loredo

    • RE: js-controller 5.0.x jetzt in der BETA

      posted in ioBroker Allgemein
      Loredo
      Loredo
    • RE: TypeScript declarations für ioBroker

      @alcalzone werden die Declarations noch irgendwie verwendet, wenn ich meinen Adapter über create-adapter erstellt habe?

      Die StateQuality Values scheinen wohl nicht aktuell zu sein und ich habe bei der Google Suche nichts anderes gefunden, als die Deklaration in https://github.com/AlCalzone/virtual-tsc/blob/master/test/ioBroker.d.ts .

      Daher bin ich nicht sicher, wie/wo man die Deklaration anpassen muss, damit keine Fehler mehr bei der Zuweisung von neueren Weren für state.q generiert werden.

      Ich habe dazu ein Issue auf GitHub aufgemacht:
      https://github.com/AlCalzone/virtual-tsc/issues/16

      jpawlowski created this issue in AlCalzone/virtual-tsc

      closed Update StateQuality #16

      posted in Entwicklung
      Loredo
      Loredo
    • RE: Test Adapter Residents (Bewohner) v0.1.x Latest (Beta)

      Nachdem hier keinerlei Fehlermeldungen/Rückmeldungen gepostet wurden, habe ich die erste stable Version 0.1.0 für das Stable Repository erstellt und dort eingereicht:
      https://github.com/ioBroker/ioBroker.repositories/pull/2398

      Kann sich nur um <Hier-Zeitraum-einfügen> handeln. 🙃

      Damit wäre diese Beta-Phase hier abgeschlossen. Da der Adapter noch nicht "Feature complete" ist, ist es noch eine 0er Version. Das bedeutet allerdings nicht, dass man ihn nicht schon benutzen könnte. Ja, Doku fehlt bisher, allerdings ist der Adapter so gestaltet, dass er sich eigentlich auch selbst erklärt, wenn man des Lesens mächtig ist und die Beschreibungen, die für jedes Objekt angezeigt und auch übersetzt sind, liest.

      Last but not least finde ich es auch schwierig etwas zu dokumentieren und darin (viel) Arbeit reinzustecken, ohne zuvor Feedback zu den Funktionen erhalten zu haben. Momentan weiß ich nicht, ob die Funktionen so bleiben können, weil mir niemand sagt, ob sie außer mir jemand so verwenden kann. Dass ich für mich selbst keine ausführliche Dokumentation brauche, leuchtet sicher ein ...

      jpawlowski created this issue in ioBroker/ioBroker.repositories

      closed Add ioBroker.residents to stable repo #2398

      posted in Tester
      Loredo
      Loredo
    • RE: Test Adapter Residents (Bewohner) v0.1.x Latest (Beta)

      Der Residents Adapter ist nun auch über das offizielle Beta Repository verfügbar.
      Für die Aufnahme ins Stable Repo gibt es noch keinen konkreten Termin.

      Mehr Leute können den Adapter nun also ausprobieren und auch Feedback geben 🙂

      posted in Tester
      Loredo
      Loredo
    • RE: Meeting für ioBroker Core/Dev/Admin 15.03.23 20:30

      Mich würden die weiteten Pläne zur iOS und Android App interessieren.

      Dabei würde ich gerne abwägen, ob geplant ist, dass die App auch Events der Geräte an ioBroker über den Cloud Adapter weiterleiten soll.
      Ich habe mit einer eigenen iOS App für den Residents Adapter begonnen (da geht es um das Thema Anwesenheit und Aktivität von Bewohnern, siehe Test Forum). IMHO gibt es sowohl Pro als auch Contra Argumente sowas in einer App zusammen zu haben oder eben separat.

      Wäre das etwas, was man besser in so einem Meeting F2F mal erörtern würde?

      posted in Entwickler-Meetings
      Loredo
      Loredo
    • RE: Test Adapter Residents (Bewohner) v0.1.x Latest (Beta)

      @arni_h sagte in Test Adapter Residents (Bewohner) v0.0.x Latest (Beta):

      @loredo said in Test Adapter Residents (Bewohner) v0.0.x Latest (Beta):

      Siri Shortcuts wäre dann auch eine mögliche (flexiblere) Alternative zur Nutzung von Geofency.

      Müsste ich mit einer SIRI Automation 'Wenn ich nach Hause komme' oder 'Wenn ich das Zuhause verlasse' und einem zusätzlichen yahka-schalter nicht Geofency überflüssig machen können - allein mit dem AppleTV als Homekit-Zentrale und ohne zusätzliche VPN bzw. API Lösungen..

      Nicht wirklich komfortabel. Apple erlaubt es bisher nicht, dass du ohne Bestätigung die standortbasierten Trigger in Shortcuts oder in den Home App Automations benutzt. Wenn du jedes Mal eine Notification bekommen und bevor sie wieder weg ist den Anwesenheitswechsel bestätigen willst, kannst du das machen. Für mich kommt das nicht in Frage. Die Integration in den Yahka Adapter ist für mich rein für die manuelle Steuerung der einzelnen Bewohneranwesenheiten im Bedarfsfall (und natürlich zur Anzeige, wer gerade da ist).

      posted in Tester
      Loredo
      Loredo
    • RE: Test Adapter Residents (Bewohner) v0.1.x Latest (Beta)

      @blade-of-fire sagte in Test Adapter Residents (Bewohner) v0.0.x Latest (Beta):

      @loredo said in Test Adapter Residents (Bewohner) v0.0.x Latest (Beta):

      Automatisches Synchronisieren des Anwesenheitsstatus zwischen zwei Residents Geräten (Presence Following)

      Das steht ja oben bei "offene Features". Ich nehme an, dass dies noch nicht komplett implementiert ist, richtig?
      Hab da ein bisschen rumprobiert, allerdings ohne Erfolg.

      Ja das ist (war) korrekt. Ist in der gerade veröffentlichten Version 0.1.0-beta.1 nun enthalten.

      Gibt es ein Best Practice zur Verwendung der verschiedenen DP? Also wie geht man am besten vor, wenn man zum Beispiel zu Bett geht. Es gibt sehr viele Möglichkeiten, den Status abzubilden, was gut ist, es aber auch etwas komplex macht. Einige DPs stehen ja in Wechselwirkung zueinander.

      Ein einfacher, typischer Status Lifecycle sieht so in etwa aus (kann aber unterschiedlich stark ausgeprägt sein):

      1. presence.state wird auf zu Hause gesetzt. --> man kommt z.B. von der Arbeit nach Hause und macht dann dort "sein Ding" (die Fokus Modes lasse ich jetzt mal weg).
      2. activity.bedtime wird auf Entspannen: Auf Schlaf einstellen gesetzt. --> Man kommt "runter", englisch "calm down", man stellt sich mental darauf ein bald schlafen zu gehen.
      3. activity.bedtime wird auf Schlafenszeit: Bettfertig machen gesetzt. --> Nun geht man Zähneputzen, zieht den Schlafanzug an, etc.
      4. activity.bedtime wird auf Nacht: Im Bett gesetzt. --> Nun geht man tatsächlich ins Bett oder liegt bereits darin. Man ist aber noch wach, hat noch die Nachttischlampe an, liest ein Buch, was auch immer.
      5. presence.night wird auf Nacht gesetzt. --> Nun legt man sich tatsächlich schlafen, macht das Licht aus und die Augen zu... Man kann Punkt 2-4 auch auslassen (oder auch erst bei 3 oder gar 4 einsteigen) und nur mit der Night Presence für das Schlafengehen arbeiten, um sich "direkt" schlafen zu schalten.
      6. activity.awake kann während der Nacht zwischen false und true wechseln. --> Das bedeutet, man ist kurz wach, wird aber anschließend wieder ins Bett gehen. z.B. ins Bad, nach dem Kind gucken, etc. Ist man mindestens einmal in der Nacht aufgestanden, obwohl man eigentlich schlafen sollte, dann wird das entsprechend auch in activity.state angezeigt. Während mindestens eine Person wach ist, wechselt auch der Residential state auf Nachtwanderung.
      7. activity.wakeup wird auf true gesetzt. --> Der Wecker klingelt das erste Mal, activity.state wird entsprechend auf Nacht: Weckalarm" gesetzt.
      8. activity.wakeupSnooze auf auf true gesetzt. --> Dem Wecker wird auf'n Kopf gehauen, um noch weiter zu dösen. activity.state wechselt entsprechend auf Aufwecken: Schlummern und zählt auch einige Male mit, wie of man auf Snooze drückt.
      9. presence.state wird auf zu Hause gesetzt. --> Jetzt wird aufgestanden, man ist noch am Wachwerden. activity.awake steht nun automatisch auf true, wodurch der Residential State auf Aufgestanden wechselt, sobald die erste Person wach ist. activity.state steht nun ebenfalls auf Aufgestanden: Aufwachen.
      10. activity.awake wird auf false gesetzt. --> Man bezeichnet sich jetzt als "wach" und ansprechbar, Morgenmuffeligkeit sollte vorbei sein ;-). Alle Status wechseln jetzt auf den normalen Anwesenheitsstatus für den Tag.
      11. presence.state wird auf Abwesend gesetzt. --> Ich verlasse das Haus, fahre z.B. zur Arbeit. Falls ich eine längere Abwesenheit voraussehen kann (z.B. weil ich in den Urlaub fahre), dann kann ich activity.overnight nun auf false setzen. Damit wird beim Verlassen des Hauses mein Benutzer sofort deaktiviert anstatt erst am nächsten Morgen. Dies würde ansonsten auch passieren, sofern ich morgens um 04:59 Uhr (Standardeinstellung) nicht im Status zu Hause oder Nacht bin. Dann wird angenommen, dass ich verreist bin. Wenn das für alle Bewohner zugleich der Fall ist, könnte die Heizungssteuerung beispielsweise spätestens nun entsprechend das Haus nicht mehr so stark auf Temperatur halten, weil ich ja nicht absehbar zeitnah wieder zuhause sein werde.
      12. activity.wayhome wird auf true gesetzt. --> Ich kann absehen, dass ich bald zuhause sein werde und befindet mich auf dem Weg.
      13. Zyklus komplett, wieder bei Punkt 1 beginnen.
      posted in Tester
      Loredo
      Loredo
    • RE: `getForeignStateAsync()` liefert nur `ack: false`

      Ich denke, wenn Marty56 sich hier vertan hat, dann können wir das für den Moment auch zu den Akten legen. Den genauen Fall kriege ich nach so vielen Tagen nicht mehr ad-hoc rekonstruiert. Da hätte ich mir eine direktere Rückmeldung gewünscht 😉

      Aber trotzdem danke an alle, die jetzt noch reagiert und auch mit zeitlichem Aufwand getestet haben!

      posted in Entwicklung
      Loredo
      Loredo
    • RE: Bestätigt/Acknowledged-Flag Bedeutung - ein Mysterium ;-)

      @paul53 sagte in Bestätigt/Acknowledged-Flag Bedeutung - ein Mysterium 😉:

      @loredo sagte: Ist-Zustand zu jeder möglichen Zeit richtig anzuzeigen, nicht den Soll-Zustand.

      Dann muss aber auch der Wert mit dem Ist-Wert überschrieben werden - nicht nur das Ack-Flag.

      Hatte ich ja oben auch so geschrieben, dass ich oldState mit ack=true ergänzt von z.B. q=0x40 zurückschreibe 😉
      oldState muss sich halt der laufende Adapter selbst organisieren, weshalb es auch unschön ist, wenn Änderungen an Objekten passieren, während der Adapter nicht läuft. der JS-Controller wäre besser dafür geeignet, oldState (also nur die States mit ack=true) für alle Adapter bereitzuhalten, aber sowas gibts wohl bisher nicht.

      By the way, da fällt mir gerade wieder der Bug ein, der mir bei der Entwicklung begegnet ist:
      getForeignStateAsync() liefert nur ack: false

      Dadurch muss man beim zurückschreiben (je nachdem, wie lange der Adapter schon läuft) trotzdem nochmal explizit ack=true setzen. Das aber nur am Rande erwähnt, weil es auch was mit der Nutzung der ack Werte zu tun hat. Das macht es leider derzeit auch schwierig den ack-Wert außerhalb von Events abzuprüfen, weil der Wert eben immer false ist und nie true </OffTopic>

      posted in ioBroker Allgemein
      Loredo
      Loredo
    • RE: Bestätigt/Acknowledged-Flag Bedeutung - ein Mysterium ;-)

      @paul53 Korrekt. Nein das ist nicht neu für mich, sondern an vielen Stellen sehr offensichtlich (was nicht schlimm ist). Ich kenne ioBroker auch schon seit etlichen Jahren, auch wenn ich ihn noch nicht so lange aktiv nutze.
      Das ist für mich aber deshalb nicht dauerhaft in Stein gemeißelt, sondern kann sich weiterentwickeln 😉
      Ich habe für meinen Adapter entschieden, dass ich das Verhalten so sinnvoller finde. Vor allem auch deshalb, weil eine Darstellung der tatsächlich korrekten Werte über eine externe GUI möglich sein soll. Da stört es, wenn in der GUI dann plötzlich aber Werte angezeigt werden, die gar nicht dem Ist-Zustand entsprechen. Meine oberste Priorität ist immer, den Ist-Zustand zu jeder möglichen Zeit richtig anzuzeigen, nicht den Soll-Zustand.

      posted in ioBroker Allgemein
      Loredo
      Loredo
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo