Posts by RP4Test

    Moin,

    ja mit raspistill war das noch ganz einfach:

    $ raspistill -o $f -t 1 --annotate 12 --annotate-text "$(date +'%d.%m.%Y %H:%M')"

    Aber das geht nun mit rpicam-still nicht mehr so einfach bzw. nur wenn eine Version mit OpenCV support gebaut wurde.
    Ich hatte auch überlegt welche Lösung ich nun machen soll. Eine php Variante hatte ich in einem anderen Projekt bei dem alle 5 Minuten ein Bild von einer ESP23 Cam geholt wird und mit Timestamp als Dateiname abgespeichert wird: 20250102-1613.jpg. Der ESP32 Cam war nur dünn eingerichtet, d.h. ohne Text ins Bild einzubauen, daher wird das im nächsten Schritt mit php gemacht. Aufruf im Terminal (oder script):

    $ php convert.php 20250102-1613.jpg

    Die php Datei sieht so aus:

    convert.php:
    <?php

    if ($argc>0) {
    // Datum aus dem Bildnamen basteln, hier kann man natürlich auch das Systemdatum nehmen o.ä.
    $d=substr($argv[1],6,2).".".substr($argv[1],4,2).".".substr($argv[1],0,4)." ".substr($argv[1],9,2).":".substr($argv[1],11,2);
       
    $img = imagecreatefromjpeg("/home/pi/" . $argv[1]);
    $size = 14; $x = 20; $y = 1180; $angle = 0; $quality = 100;
    $color = imagecolorallocate($img, 200, 200, 200);
    imagettftext($img, $size, $angle, $x, $y, $color, '/home/pi///DejaVuSans.ttf', 'Aufnahme vom: ' . $d);
    imagejpeg($img, $argv[1], $quality);
    }
    ?>

    Bei einem anderen Projekt war auf dem Raspberry (zero 1) kein php installiert und daher wollte ich das mal mit den Paket von ImageMagick probieren.
    Ist auch ganz easy:

    # Bild holen
    rpicam-still -o /home/pi/tmp.jpg
    # Mit dem Programm "convert" von ImageMagick das Datum einbauen und Bild speichern:
    convert /home/pi/tmp.jpg -gravity SouthEast -pointsize 36 -fill "rgba(255,255,255,0.5)" -annotate +20+20 "Aufnahme vom $(date '+%d.%m.%Y %H:%M')" /home/pi/fertig.jpg

    Wünsche ein Frohes Neues Jahr!
    Und viel Spaß und Erfolg mit euren Projekten!

    Moin zusammen,

    ich wollte das shell script aus #5 benutzen aber mit Zugang zur Fritzbox über https.

    Dazu braucht curl den Paramter "-k".

    Merkwürdigerweise ist der nicht bei allen curl Aufrufen angegeben. Aber mit -k klappt es auch über https.

    Ein weiterer Punkt ist, dass die grep Abfrage zum Auslesen der SID nicht funktioniert. Evt. liegt das m Firitz OS 7.50 ?

    Also das funktioniert bei mir nicht (keine Ausgabe):

    SID=$(curl -i -s -k -d "response=${RESPONSE}&username=${USER}" "${FBF}" | grep -Po -m 1 '(?<=sid=)[a-f\d]+')

    aber so klappt es:

    SID=$(curl -i -s -k -d "response=${RESPONSE}&username=${USER}" "${FBF}" | grep -oP '"sid": *"\K[^"]*')

    Alternativ mit wget statt curl:

    SID=$(wget --no-check-certificate -O - --post-data="response=${RESPONSE}&username=${USERNAME}" "${FBF}" | grep -oP '"sid": *"\K[^"]*')

    --------------

    Ich hab hier kein vollwertiges SmartHome im Einsatz aber ich hab diverse Temperatur Sensoren im Einsatz, u.a. Tuya Zigbee, Shelly H&T un dauch FritzBox Comet DECT.
    Ich lese mittels cron job die Temperatur Daten aus und bastel dann eine Grafik mit Google Graph.
    Klappt aus soweit aber trotz shell script aus #5 bekomme ich keien aktuelle Temperatur für meine Comet Teile.
    Müsste das nicht so aussehen?

    ...

    AIN="11959%200531552"

    ...

    TEMPINT=$(curl -s -k ${FBF}'/webservices/homeautoswitch.lua?ain='${AIN}'&switchcmd=gettemperatur&sid='${SID})

    Oder geht das mit den Comet nicht? Ich bekomme einen Fehler "Bad request"

    * Trying 2a01:...

    * Connected to fritz.box (2a01:...) port 443 (#0)

    * ALPN, offering h2

    * ALPN, offering http/1.1

    * successfully set certificate verify locations:

    * CAfile: /etc/ssl/certs/ca-certificates.crt

    * CApath: /etc/ssl/certs

    * TLSv1.3 (OUT), TLS handshake, Client hello (1):

    * TLSv1.3 (IN), TLS handshake, Server hello (2):

    * TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):

    * TLSv1.3 (IN), TLS handshake, Certificate (11):

    * TLSv1.3 (IN), TLS handshake, CERT verify (15):

    * TLSv1.3 (IN), TLS handshake, Finished (20):

    * TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):

    * TLSv1.3 (OUT), TLS handshake, Finished (20):

    * SSL connection using TLSv1.3 / TLS_AES_128_GCM_SHA256

    * ALPN, server did not agree to a protocol

    * Server certificate:

    * subject: CN=dieko.goip.de

    * start date: Jul 25 21:53:11 2022 GMT

    * expire date: Jan 15 21:53:11 2038 GMT

    * issuer: CN=dieko.goip.de

    * SSL certificate verify result: self signed certificate (18), continuing anyway.

    > GET /webservices/homeautoswitch.lua?ain=11959%200531552&switchcmd=gettemperatur&sid=4a8a420fbff647fa HTTP/1.1

    > Host: fritz.box

    > User-Agent: curl/7.74.0

    > Accept: */*

    >

    * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):

    * TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):

    * old SSL session ID is stale, removing

    * Mark bundle as not supporting multiuse

    < HTTP/1.1 400 Bad Request

    < Cache-Control: no-cache

    < Connection: Keep-Alive

    < Content-Length: 0

    < Content-Type: text/plain; charset=utf-8

    < Expires: -1

    < Pragma: no-cache

    < Keep-Alive: timeout=60, max=300

    < X-Frame-Options: SAMEORIGIN

    < X-XSS-Protection: 1; mode=block

    < X-Content-Type-Options: nosniff

    < Content-Security-Policy: default-src 'none'; connect-src 'self'; font-src 'self'; frame-src https://service.avm.de https://fritzhelp.avm.de/help/ https://help.avm.de https://www.avm.de https://avm.de https://assets.avm.de https://clickonce.avm.de http://clickonce.avm.de http://download.avm.de https://download.avm.de 'self'; img-src 'self' https://tv.avm.de https://help.avm.de/images/ http://help.avm.de/images/ data:; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; frame-ancestors 'self'; media-src 'self'

    <

    * Connection #0 to host fritz.box left intact

    Danke für einen Hinweis...