Timereinstellungen für eine Kamera

Begonnen von Syon, 17 Januar 2022, 15:35:38

Vorheriges Thema - Nächstes Thema

Syon

Hallo,
ich versuche eine Kamera in die TabletUI einzubinden, die als kleines Vorschaubild nur alle 10 sec das Bild aktualisiert aber bei einem Klick als Popup vergößert wird und den Intervall auf 2 Sekunden verkürzt. Alle 10 sec. klappt auch schon. Ich denke, dass liegt an dem default 00:00:10.
Allerdings kann ich das nicht auf 2 sec. umstellen.

define CAMpool IPCAM 192.168.1.23:80
setuuid CAMpool 61e56ff0-f33f-9de3-61ac-2e3f1cce671fb5b8
attr CAMpool basicauth user:pass
attr CAMpool path Streaming/channels/1/picture?snapShotImageType=JPEG
attr CAMpool room Cams
attr CAMpool storage /opt/fhem/www/tablet/snapshots/

define CAMpoolSnap at +*{ReadingsVal("CAMpoolSnapDauer","set","00:00:10")} get CAMpool image
attr CAMpoolSnap room Cams


define CAMpoolSnapDauer dummy
setuuid CAMpoolSnapDauer 61e56ff0-f33f-9de3-d82d-3ae15b94273fe384
attr CAMpoolSnapDauer room Cams
attr CAMpoolSnapDauer set timespec 


Die zugehörige Zelle sieht dann so aus:

<header>Cams</header>
                <div class="sheet">
                    <div class="row">
                        <div class="cell" data-type="popup" data-height="640px" data-width="800px" data-return-time="30" >
                                <div data-type="image" data-device="CAMpool" data-get="image" data-opacity="1" data-refresh="10" data-url="snapshots/CAMpool_snapshot.jpg" data-size="300px" class="nocache">Pool</div>
                        <div class="cell">
                        </div>
                                <div class="dialog">
                                <header>POOL Cam</header>
                                 <div data-type="image" data-device="CAMpool" data-get="image" data-opacity="1" data-refresh="2" data-url="snapshots/CAMpool_snapshot.jpg" data-opacity="1" class="nocache"></> </div >
                        </div>
                    </div>


Kann mir dabei jemand helfen?

Syon

Ich habe jetzt auch mal das hier probiert... Allerdings auch ohne Erfolg.

define CAMpoolSnap DOIF ([CAMpoolSnapDauer] eq "on") ( at +*00:00:02 get [CAMpool] image) DOELSEIF ([CAMpoolSnapDauer] eq "off") ( at +*00:00:10 get [CAMpool] image)
attr CAMpoolSnap room Cams


define CAMpoolSnapDauer dummy
attr CAMpoolSnapDauer room Cams
attr CAMpoolSnapDauer webCmd on:off


Fehler:
error

at +*00:00:02 get Defined image: Please define +*00:00:02 first

MadMax-FHEM

Zitat von: Syon am 26 Januar 2022, 08:47:30
Ich habe jetzt auch mal das hier probiert... Allerdings auch ohne Erfolg.

define CAMpoolSnap DOIF ([CAMpoolSnapDauer] eq "on") ( at +*00:00:02 get [CAMpool] image) DOELSEIF ([CAMpoolSnapDauer] eq "off") ( at +*00:00:10 get [CAMpool] image)
attr CAMpoolSnap room Cams


define CAMpoolSnapDauer dummy
attr CAMpoolSnapDauer room Cams
attr CAMpoolSnapDauer webCmd on:off


Fehler:
error

at +*00:00:02 get Defined image: Please define +*00:00:02 first


Bei DOIF gibt es doch das wait Attribut (für "sowas")...

Und wenn schon ein at (in einem DOIF) genommen wird/werden soll, dann muss es (verm.) auch richtig definiert werden:


define atName at +00:00:02 Befehl(e)


bzw.

defmod atName at +00:00:02 Befehl(e)


Wichtig auch: ein at mit +* ist "relativ" und (durch den Stren) wiederholend!! (also nicht wie [verm.] gedacht "einmalig")
https://wiki.fhem.de/wiki/At

Inwiefern man "sowas" dann in einem DOIF "ausführen" lässt: keine Ahnung -> commandref/Wiki zu DOIF lesen...

Und "sowas" könnte man auch ganz einfach mit einem sleep lösen, sofern (und das ist wichtig!) nach dem sleep ein fhem-Befehl folgt.

Aber wie geschrieben: bei DOIF gibt es wait -> siehe commandref/Wiki/...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Syon

Hallo Joachim,

vielen Dank für die Erklärungen.
Mein Ziel ist es ja, von der Cam im "Normalzustand" alle 10 Sekunden ein Bild abzuholen und zu speichern, aufdass ich das dann in der TabletUI anzeigen kann. Wenn man nun aber das Bild klickt, soll von der Cam alle 2 Sekunden ein Bild geholt werden. Entweder bis das große Bild verlassen wird, oder nach Timer. Das ist erstmal egal. Aber ich scheitere schon an diesen Vorarbeiten.

Mit define CAMpoolSnap at +*00:00:10 get CAMpool image klappt es alles. Allerdings halt nur alle 10sec. Darum mein herumgebastel.


Damian

Zitat von: Syon am 26 Januar 2022, 09:50:50
Hallo Joachim,

vielen Dank für die Erklärungen.
Mein Ziel ist es ja, von der Cam im "Normalzustand" alle 10 Sekunden ein Bild abzuholen und zu speichern, aufdass ich das dann in der TabletUI anzeigen kann. Wenn man nun aber das Bild klickt, soll von der Cam alle 2 Sekunden ein Bild geholt werden. Entweder bis das große Bild verlassen wird, oder nach Timer. Das ist erstmal egal. Aber ich scheitere schon an diesen Vorarbeiten.

Mit define CAMpoolSnap at +*00:00:10 get CAMpool image klappt es alles. Allerdings halt nur alle 10sec. Darum mein herumgebastel.

Wenn du mit DOIF hantierst, dann solltest du dir mal die Attribute des Moduls anschauen, hier z. B. repeatcmd.

Es macht selten Sinn im DOIF at zu verwenden, da die Funktionalität von at in DOIF bereits drin steckt.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Syon

Super,Danke.
Damit habe ich zumindestens das schon mal hinbekommen.
define CAMpoolSnap_2 DOIF ([CAMpoolSnapDauer] eq "on") (get CAMpool image) 
attr CAMpoolSnap_2 repeatcmd 2
define CAMpoolSnap_10 DOIF ([CAMpoolSnapDauer] eq "off") (get CAMpool image) 
attr CAMpoolSnap_10 repeatcmd 10


Allerdings muss nach einem Neustart immer erst einmal der Zustand geändert werden bevor das repeatcmd aktiv wird.

Syon

So, meine Lösung sieht nun folgendermaßen aus:

define CAMpoolSnap_2 DOIF ([CAMpoolSnapDauer] eq "on") (get CAMpool image) 
attr CAMpoolSnap_2 repeatcmd 2

define CAMpoolSnap_10 DOIF ([CAMpoolSnapDauer] eq "off") (get CAMpool image) 
attr CAMpoolSnap_10 repeatcmd 10

define CAMpoolSnapDauer dummy
attr CAMpoolSnapDauer room Cams
attr CAMpoolSnapDauer setList on off
attr CAMpoolSnapDauer useSetExtensions 1



In der TabletUI:
<div class="cell" data-type="popup" data-height="640px" data-width="800px" data-return-time="30" >
                                <div data-type="image" data-fhem-cmd="set CAMpoolSnapDauer on-for-timer 30" data-device="CAMpool" data-get="image" data-opacity="1" data- refresh="10" data-url="snapshots/CAMpool_snapshot.jpg" data-size="300px" class="nocache">Pool</div>
                        <div class="cell">
                        </div>
                                <div class="dialog">
                                <header>POOL Cam</header>
                                <div data-type="image" data-device="CAMpool" data-get="image" data-opacity="1" data-refresh="2" data-url="snapshots/CAMpool_snapshot.jpg" data-opacity="1" class="nocache"></></div>
                        </div>


Also die useSetExtensions 1 in Verbindung mit data-fhem-cmd="set CAMpoolSnapDauer on-for-timer 30"
Ich weiß nicht, ob das so eine gute Lösung ist, aber sie scheint zu funktionieren. Spricht was dagegen?

Damian

Zitat von: Syon am 26 Januar 2022, 13:44:53
So, meine Lösung sieht nun folgendermaßen aus:

define CAMpoolSnap_2 DOIF ([CAMpoolSnapDauer] eq "on") (get CAMpool image) 
attr CAMpoolSnap_2 repeatcmd 2

define CAMpoolSnap_10 DOIF ([CAMpoolSnapDauer] eq "off") (get CAMpool image) 
attr CAMpoolSnap_10 repeatcmd 10

define CAMpoolSnapDauer dummy
attr CAMpoolSnapDauer room Cams
attr CAMpoolSnapDauer setList on off
attr CAMpoolSnapDauer useSetExtensions 1



In der TabletUI:
<div class="cell" data-type="popup" data-height="640px" data-width="800px" data-return-time="30" >
                                <div data-type="image" data-fhem-cmd="set CAMpoolSnapDauer on-for-timer 30" data-device="CAMpool" data-get="image" data-opacity="1" data- refresh="10" data-url="snapshots/CAMpool_snapshot.jpg" data-size="300px" class="nocache">Pool</div>
                        <div class="cell">
                        </div>
                                <div class="dialog">
                                <header>POOL Cam</header>
                                <div data-type="image" data-device="CAMpool" data-get="image" data-opacity="1" data-refresh="2" data-url="snapshots/CAMpool_snapshot.jpg" data-opacity="1" class="nocache"></></div>
                        </div>


Also die useSetExtensions 1 in Verbindung mit data-fhem-cmd="set CAMpoolSnapDauer on-for-timer 30"
Ich weiß nicht, ob das so eine gute Lösung ist, aber sie scheint zu funktionieren. Spricht was dagegen?

Etwas im Sekundentakt zu wiederholen, schluckt bestimmt schon etwas Performance.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Syon

Ja, das dachte ich auch. Deshalb  wollte ich ja nicht 24/7 im 2 Sekundentakt abholen.