könnte man nicht ein Webcam Bild benutzen, den Durchschnitt der Helligkeit der einzelnen Pixel bestimmen und den Wert in einer Variable speichern.
Währe das nicht eine Möglichkeit die Helligkeit zu bestimmen?
Ich habe leider nicht genügend Programmierkenntnisse, aber vielleicht will will es mal jemand Probieren.
Ich kann auch nur Vermutungen anstellen, aber regulieren die meisten (wenn nicht alle) Treiber (oder die cams hardwareseitig selbst) de Helligkeit?
Vielleicht kann man das irgendwo abgreifen!?
Kann man ziemlich sicher nicht abgreifen. Die Kameras versuchen in der Regel intern ein optimales Bild zu generieren. Einige schalten sogar selbstständig IR-LEDs zu.
Dennoch ist das Bild bei guter Ausleuchtung deutlich heller als bei Schummerlicht. Für ne einfache Helligkeitsmessung könnte es reichen. Kommt natürlich stark auf die Kamera an.
Deine Fehlermeldung deutet darauf hin, dass Du die entsprechend Grafik Bibliothek nicht eingebunden hast. Du brauchst fuer PHP noch die GD Bibliothek - suche mal hier nach php_gd2.dll.
also, ich hab da schon mal ein fast fertiges Script im Netz gefunden, da muss ich nur noch ein paar Zahlen Zusammen rechnen und habe meinen Helligkeitswert. PHP: imagecolorat - Manual
Da ich bei meiner Kamera die Belichtung auf manuell einstellen kann funktioniert es auch ganz gut, mal sehen wann ich mal eine Grafik habe, im Moment spiele ich noch zu viel mit den Einstellungen und Kamera Positionen herum.
Erst hatte ich sie an einen Fenster mit direkter Sonneneinstrahlung, aber direkte ist so hell das die indirekte Sonneneinstrahlung nicht vernünftig gemessen wurde. Jetzt probiere ich es gerade an einen anderen Fenster.
es gibt auch eine Möglichkeit ein DigiCam per Webcam Software auszulösen und die Bilder einzulesen, da könnte man dann aus den Bilder die Daten auslesen, damit könnte man den gesamten Dynamikbereich abdecken.
so, nun die ersten Ergebnisse, hat eine weile gedauert bis ich die passende Formel für die Berechnung gefunden hatte, aber jetzt bin ich doch ganz zufrieden mit dem Ergebniss.
Hier das Script:
<?php
$timestamp = time(); // Uhrzeitholen nur für den Log
$datum = date("d.m.Y",$timestamp); // Datum entschluesseln nur für den Log
$uhrzeit = date("H:i",$timestamp); // Uhrzeit entschluesseln nur für den Log
$img = IPS_GetKernelDir()."\\html\\bild.png"; // Verzeichniss mit dem Webcambild
$imgHand = @ImageCreateFromPNG($img);
$imgSize = GetImageSize($img); // Array mit den Bilddaten fuellen
$imgWidth = $imgSize[0]; // Bildbreite aus dem Array lesen
$imgHeight = $imgSize[1]; // Bildhoehe aus dem Arry lesen
for ($l = 0; $l < $imgHeight; $l++) { // schleife Bildhoehe
for ($c = 0; $c < $imgWidth; $c++) { // schleife Bildbreite
$pxlCor = ImageColorAt($imgHand,$c,$l);
$pxlCorArr = ImageColorsForIndex($imgHand, $pxlCor); //Array mit Pixel Farbe in RGB
$farbe = $pxlCorArr["red"] + $pxlCorArr["green"] + $pxlCorArr["blue"]; // Summe der Pixelhelligkeit max 765
$farbe_r = $pxlCorArr["red"]; // rot Wert 0 - 255
$farbe_g = $pxlCorArr["green"]; // gruen Wert 0 - 255
$farbe_b = $pxlCorArr["blue"]; // blau Wert 0 - 255
$farbe_sum = $farbe_sum + $farbe; // Summe der Pixelfarben
$farbe_sum_r = $farbe_sum_r + $farbe_r; // Summe rot
$farbe_sum_g = $farbe_sum_g + $farbe_g; // Summe gruen
$farbe_sum_b = $farbe_sum_b + $farbe_b; // Summe blau
}
}
$farbe_d_r = $farbe_sum_r / 76800; // Durchschnitt rot Pixel ermitteln
$farbe_d_g = $farbe_sum_g / 76800; // Durchschnitt gruen Pixel ermitteln
$farbe_d_b = $farbe_sum_b / 76800; // Durchschnitt blau Pixel ermitteln
$farbe_d = $farbe_sum / 76800; // Durchschnitt der Summe aus RGB 0 - 765
$farbe_rgb = $farbe_d / 3; // Durchschnittliche helligkeit alles pixel und farben
$helligkeit = floor($farbe_d); // Abrunden
$helligkeit_pro = floor($helligkeit * 100 / 753); // Helligkeit auf ein 100% Skala umrechnen
settype($helligkeit_pro,"Integer");
SetValue(39310 /*[Sonne\Helligkeit\RGB\helligkeit_rot]*/ , (int)$farbe_d_r);
SetValue(47558 /*[Sonne\Helligkeit\RGB\helligkeit_gruen]*/ , (int)$farbe_d_g);
SetValue(16678 /*[Sonne\Helligkeit\RGB\helligkeit_blau]*/ , (int) $farbe_d_b);
SetValue(43711 /*[Sonne\Helligkeit\RGB\gesamt\helligkeit_rgb]*/ , (int) $farbe_rgb);
SetValue(43072 /*[Sonne\Helligkeit\helligkeit]*/ , $helligkeit);
SetValue(45007 /*[Sonne\Helligkeit\helligkeit_prozent]*/ , $helligkeit_pro);
$datei = fopen("R:\ip-symcon-log\licht.log","a"); // Logfile oeffnen
fwrite($datei, "$datum $uhrzeit $helligkeit $helligkeit_pro $helligkeit2 $helligkeit_pro2
"); // Logfile schreiben
fclose($datei); // Logfile schliessen
?>
Echt geile sache
Mich würde mal interessieren ab die einbrüche in deinem grafen von wolken kommen oder ob das der moment ist wo die cam selbst nachregelt.
MFG Ken
sorry hab ganz vergessen mal zu erwähnen was ich für eine Kamera benutze, es ist eine Logitech Pro 9000, die kann man auf manuell einstellen, mit einer Kamera die selber regelt funktioniert es nicht. Ich hab es nur mal ein paar Stunden im Automatik probiert und gleich als ich gesehen hab es gibt nur eine Flatline wieder abgebrochen.
Zu den Spitzen, es handelt sich um Wolken, an Sonnentagen gibt es eine glatte Linie.
Heute ist ja wieder ein sonnen tag, das sieht es so aus wie im Anhang.
so, leider hab ich heute mein Webcam Helligkeitssensor Projekt beendet.
Jedesmal nach einen Bootvorgang musste die Webcam neu kalibriert werden, wodurch die Vergleichbarkeit der Tage nicht mehr gegeben war.
Ich konzentriere mich jetzt auf das Solarzelle als Helligkeitssensor Projekt. http://www.ip-symcon.de/forum/f24/ds2438-helligkeitssensor-solarzelle-7182/
also der Logitech Support ist nicht sehr hilfreich, vom Schreibstyle her würde ich mal sagen die Anfragen gehen irgendwo nach Indien zu einen Ausgelagerten Support oder die haben eine gute KI die Automatisch antwortet:mad:.
Ich hab zwar schon die Einstellungen in der Registrierung gefunden, dort kann man erstens nur lesen, schreiben wird nicht übernommen und zweitens stehen alle Parameter so wie vor dem Bootvorgang und das Bild ist nur noch halb so hell.
Ich nehme mal stark an, du muss dazu an die WinAPI dran. So kommst du direkt ans DirectX Interface und bekommst von beliebigen Videoquellen ein Bild. Über den selben Weg kann man auch Settings hinterlegen. Ich hab damit experimentiert meine USB-Kameras mit IPS zu verwenden. Das ist deutlich billiger als überall ne Webcam zu installieren und oft muss/will man ja garnicht zig Meter Netzwerkkabel dazwischen hängen.