Zeitraffa Script bricht nach einigen Stunden ab

CHDK-Skripte, CHDK-Entwicklung, PC-Zusatzprogramme, Informationen für Tüftler

Zeitraffa Script bricht nach einigen Stunden ab

Beitragvon nativebee2010 » 03.04.2012, 22:45

Hallo zusammen,

ich möchte dieses Jahr die Entwicklung von Wildbienen vom Ei bis zum Verpuppen per Zeitraffa aufnehmen.
Ich verwende dazu eine A530 mit chdk a530-100a-1.0.0-1571
Die Kamera ist an einem Netzteil angeschlossen. Das Netzteil wiederum an einer USV, Stromschwankungen sollten es also nicht sein.

Die Kamera bricht nach mehren Stunden ab beim ersten mal nach 201 das zweite mal nach 314 Bildern.

Die Kamera steht an einen Standort in einer Obstanlage, dort habe ich aber eine Stromversorgung. Nun stehe ich leider nicht die ganze Zeit neben der Kamera um zu sehen mit welchen Fehler abgebrochen wird. Ich kann nur sagen wenn ich einen Tag später vorbeikomme ist die Kamera abgeschaltet und und Objektiv eingefahren. Kamera schaltet also ab. Stromsparmodus ist aus, sowohl bei chdk als auch bei normaler Benutzung.

Ich füge hier das script ein, dass ich mir aus anderen Vorlagen hier zusammengebaut habe.

Vielleicht findet Ihr ja den entscheidenden Punkt und das hüpfende Komma :)

Prinzipiell hoffte ich eigentlich das ich mit diesem Script die Kamera mindestens eine Woche laufen lassen kann, danach die Bilder speichere um Sie für die nächste Woche wieder scharf zu machen.

Falls Ihr aus Eurer Erfahrung gleich sagen könnt, dass solche Laufzeiten ohnehin nicht per scripts zu machen sind, wäre es nett dies zu erwähnen :)

Code: Alles auswählen
--[[
@title Zeitraffa
@param a how many pictures
@default a 3000
@param b intervall in sek
@default b 300
@param c offset in sek
@default c 2
@param d Flash (0=off, 1=on)
@default d 1
@param e Macro (0=off, 1=on)
@default e 1

]]

propcase=require("propcase")


--[[
          util.lua
          utility functions for scripting with lua for CHDK
         
          v. 1.0 2009-01-30
         
          Changelog:
          2009/1/30 mattkime
          created
         
          check_range is copied directly from -
         
          fb-lib.lua
          fbonomi's library of lua functions for CHDK
         
          Copyright 2008 Francesco Bonomi.
          Released under GPL
         
 ]]

util = {}
 
 -- checks that a value is in a range
 -- returns value (corrected if not in range)
 function util.check_range(current, minimum, maximum)
-- print(" minimum:"..minimum.." maximum:"..maximum)
  v=current
 if v<minimum then
  v=minimum
 end
 if v>maximum then
  v=maximum
 end
 return v
end


-- sleeps for a given number of minutes and prints updates
function util.sleepMinutesVerbose(minutes)
   if minutes>0 then
     for remaining=minutes,1,-1 do
       print("Sleeping ", remaining, " minutes")
       sleep(29980)
       sleep(29990)
     end
   end
end

function util.sleepUntilTime(time)
   local secondsFuture = (time.hour * 3600) + (time.minute * 60) + time.second
   local secondsNow = os.date("%S")
   local minutesNow = os.date("%M")
   local hoursNow = os.date("%H")
   local secondsNow = (hoursNow * 3600) + (minutesNow * 60) + secondsNow
   
   --if future time is smaller than current time, add 12hrs.
   if(secondsNow > secondsFuture) then
      secondsFuture = secondsFuture + 43200
   end
   local secondsDelta = secondsFuture - secondsNow
   sleep(secondsDelta * 1000)
end

function util.sleepUntilNextPeriodOfAnHour (periodCount)
      local periodLength = 3600 / periodCount
      local secondsAfterHour = (tonumber(os.date("%M")) * 60) + tonumber(os.date("%S"))
      local currentPeriod = secondsAfterHour / periodLength
      sleep((((currentPeriod + 1) * periodLength) - secondsAfterHour) * 1000)
end

function util.printAndPause(...)
   print(...)
   sleep(2000)
end

--[[
  Functions that return Date/Time strings for use in CHDK Lua scripts.
 
  Authors: 2009/01/27 mattkime: replace get_time with os.date
           2008/10/27 fudgey: datestamp(), datetimestamp()
           2008/08/17 Francesco Bonomi: format_nn(), timestamp()
  Licence: GPL
--]]


date = {}



-- formats a number to two digit string with leading zeroes e.g. 3 to "03"
-- (only works for numbers in range 0 - 99)
function date.format_nn(n)
  local r=tostring(n)
  if n<10 then
    r= "0" .. n
  end
  return r
end


-- return a formatted timestamp (hh:mm:ss)
-- if called without parameters, gets current camera time and formats it
-- if a parameter is passed, formats the passed number
function date.timestamp(t)
  if t==nil then
    return os.date("%X")
  else
    return os.date("%X",t)
  end
end


-- Returns formatted date string from camera clock.
-- Output format example: 2008/09/03
function date.datestamp()
  return os.date("%Y/%m/%d")
end

-- Returns formatted date string from camera clock.
-- Output format example: 2008_09_03
function date.datestamp1()
  return os.date("%Y_%m_%d")
end

--[[
-- Returns formatted time string from camera clock.
-- Output format example: 23:05:59
function timestamp2()
  local H=get_time("h")
  local M=get_time("m")
  local S=get_time("s")
  return format_nn(H) .. ":" .. format_nn(M) .. ":" .. format_nn(S)
end
--]]

-- Returns formatted date + time string from camera clock.
-- Output format example: 2008/09/03 23:05:59
function date.datetimestamp()
  return os.date("%Y/%m/%d %X")
end


function check_timeframe()

repeat
   
   if start_std <= get_time("h") then
      if stop_std > get_time("h") then
         -- display on
         return
      end
   end   
   -- display off
   print( "Out of Timeframe "..start_std.." to "..stop_std.." !" )
   sleep(60000)
until false   

end


--Declare usefull variable names for the parameter variables

function initCamera()
   -- force macro focus (does this work?)
   -- 1=on 0=off
   -- A620 + A530
   --set_prop(11,1)
   if (Macro_==1) then
      set_prop(11,1)
      print("Macro ON")
   else
      set_prop(11,0)
      print("Macro OFF")
   end
   --set_prop(11,1)
   --set_prop(propcase.FOCUS_MODE,3)
   
   -- disable flash (16)
   -- 0=auto 1=on 2=off
   -- A620 + A530
   if (FLASH_==1) then
      set_prop(16,1)
   else
      set_prop(16,2)
   end
   -- set_prop(propcase.FLASH_MODE,2)
   
   -- Bildqualität auf L
   -- 0=L 1=M1 2=M2 3=M3 4=S
   -- A620 + A530
   set_prop(24,0)
   
   -- Bildqualität auf Superfein
   -- 0=S 1=F 2=N
   -- A620
   set_prop(23,1)
   
   -- Kunstlich
   -- set_prop(5,3)
end

function initConfig()
   --input vars need to be altered because they're limited to 255 and need to stretch to 1024
   
   -- setze aktivitätsfenster aufgrund des Monats
   Monat = os.date("%m")
   if Monat == "02" then
      start_std   = 8
      stop_std   = 16
   end
   if Monat == "03" then
      start_std   = 6
      stop_std   = 20
   end
   if Monat == "04" then
      start_std   = 6
      stop_std   = 21
   end
   if Monat == "05" or Monat == "06" or Monat == "07" or Monat == "08" then
      start_std   = 6
      stop_std   = 21
   end
   if Monat == "09" or Monat == "10" then
      start_std   = 7
      stop_std   = 20
   end
   if Monat == "11" then
      start_std   = 8
      stop_std   = 17
   end   
   if Monat == "12" or Monat == "01" then
      start_std   = 1
      stop_std   = 23
   end   
   FLASH_ = util.check_range(d, 0, 1)  -- Blitz on / off
   count     = util.check_range(a, 1, 200)
   intervall = util.check_range(b, 1, 100)
   offset = util.check_range(c, 1, 100)   
   Macro_  = util.check_range(e, 0, 1)   
   Display_  = util.check_range(f, 0, 1)
end







initConfig()
initCamera()



print( "Zeitraffa STARTEN")
print( "Beginne mit der Aufnahme in "..offset.." Sekunden")
sleep(offset*1000)


--click("display")

for i = 1,count do
  check_timeframe()
  print( "Bild "..i.." von "..count )
  --print( "Press SET for stop" )
  local t1=os.time()
  press("shoot_half")
  shoot()
  -- wait for next intervall
   repeat
      sleep( 1000 )
      local t2=os.time()
      local t3=os.difftime (t2, t1)
      print( "next shot in "..intervall-t3.." sek." )
   until t3 >= intervall
    if is_pressed "set" then break end
end



print( "Zeitraffa Aufnahme abgeschlossen")

sleep(2000)

shut_down()




Danke im voraus für Eure Tipps und Hilfe

Norbert
nativebee2010
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 5
Registriert: 03.04.2012, 22:10
Kamera(s): A520 / A530 / A620

Re: Zeitraffa Script bricht nach einigen Stunden ab

Beitragvon rudi » 04.04.2012, 07:47

Hallo nativebee2010,

willkommen im Forum. Da hast du ein interessantes Projekt.

nativebee2010 hat geschrieben:Die Kamera bricht nach mehren Stunden ab beim ersten mal nach 201 das zweite mal nach 314 Bildern.
Ist der Abbruch bei diesen Bildnummern wiederholbar?

press("shoot_half") in Zeile 284 wird von shoot() mit übernommen. Schau auch hier.
Eine Umschaltung in den Makro-Mode per Skript ist derzeit nicht möglich.

Gruß rudi
Benutzeravatar
rudi
CHDK-Spezialist
CHDK-Spezialist
 
Beiträge: 500
Registriert: 11.09.2009, 12:27
Kamera(s): A590IS_101B, SX260_100B

Re: Zeitraffa Script bricht nach einigen Stunden ab

Beitragvon h3px » 04.04.2012, 11:50

Hallo Norbert,

zum Script kann ich mangels Ahnung nix sagen, werde es aber die Tage mal auf meiner A590 laufen lassen...

Intervallaufnahmen über 1 Woche und mehr habe ich schon mehrfach gemacht. --> Link
Ich habe seinerzeit >>Akkurates Intervallometer<< genommen. Das ist problemlos durchgelaufen. In der letzten Zeit nehme ich eher SevenUp(light). Damit hatte ich bisher auch noch nie Probleme...
Dabei ist aber keine Nachtabschaltung zum Einsatz gekommen, da wir da seinerzeit schon mal einen Thread hatten, in dem von Problemen damit berichtet wurde. Finde ich allerdings gerade auf die Schnelle nicht...
Ich habe daher die Fotos aus den Nächten einfach gelöscht.
Das mal so zwischendurch...

Viele Grüße
h3px
Benutzeravatar
h3px
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 365
Bilder: 10
Registriert: 15.01.2009, 21:38
Wohnort: ~ MUC
Kamera(s): S 110 103a - SX 260 101a
Ixus 870 101a - A590 101b

Re: Zeitraffa Script bricht nach einigen Stunden ab

Beitragvon Gnasdfl » 04.04.2012, 12:25

Ich habe just vor zwei Wochen einen 4,5 Tage Zeitraffer mit Seven-up auf einer A560 laufen lassen. Ging problemlos mit Nachtabschaltung. Insgesamt ergaben sich...muss ich nochmal nachgucken, hab ich hier gerade nicht... mehrere tausend Bilder...ich meine ich habe am Ende 3000+x gehabt. Auch sonst macht Seven-up eher das was ich will als nicht. Genauso Seven-up light. Bis jetzt alles problemlos (gilt für diverse CHDK-Versionen und Kameras (A470, A560, Sx120IS)). Welche Funktion, die Seven-up nicht kann brauchst Du denn?

Sind die Kameras eigentlich generell relativ unempfindlich gegenüber Temperaturschwankungen? Ich habe auf den ersten paar 50-60 Bildern am Morgen schon immer eine beschlagene Optik gehabt, das hat sich dann aber gegeben. Vielleicht hast Du eine Kamera die es nicht so kalt mag?

Arne
Gnasdfl
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 32
Bilder: 5
Registriert: 06.01.2011, 13:30
Kamera(s): A560, SX120IS, SX230HS-1.01c

Re: Zeitraffa Script bricht nach einigen Stunden ab

Beitragvon gehtnix » 04.04.2012, 12:38

h3px hat geschrieben:...zum Script kann ich mangels Ahnung nix sagen...
LUA, da habe ich auch keine Ahnung, da sag i nix.
h3px hat geschrieben:...Dabei ist aber keine Nachtabschaltung zum Einsatz gekommen, da wir da seinerzeit schon mal einen Thread hatten, in dem von Problemen damit berichtet wurde...
Hier steht der Thread. Und wenn man nix mehr hört so läuft das jetzt wohl durch. Es lag wohl an der Zeit wann das Skript gestartet wird. Das muss vor 23:00 geschehen!
Einzig störend ist noch eine Aufnahme um 0.00Uhr die bei totaler Nachtruhe "durchrutscht".

Ahh, Gnasdfl hat auch Positives berichtet.

gruß gehtnix
Bild
Benutzeravatar
gehtnix
CHDK-Legende
CHDK-Legende
 
Beiträge: 2406
Bilder: 8
Registriert: 17.04.2008, 13:42
Wohnort: München
Kamera(s): A610 100e+f + IXUS50 101b

Re: Zeitraffa Script bricht nach einigen Stunden ab

Beitragvon msl » 04.04.2012, 12:53

Hallo,

das Lua-Skript hat ein paar kleine Fehler, rudi schrieb es schon. Außerdem sorgen die Funktionen evt. für einen Speicherüberlauf, der dann Grund für den Absturz ist.

Evt. sollte mal darüber nachgedacht werden, ein Skript, dass über mehrere Tage laufen soll, täglich über einen Reboot neu zu initialisieren. Dazu kann man die Skript-Autostart-Funktion sicherlich gut verwenden. So könnten dann auch Speicher-Probleme gemanagt werden.

Gruß msl
■ "Hey you, don't tell me there's no hope at all. Together we stand, divided we fall."CHDK inside FAQCHDK-Neuigkeiten auf Twitter
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4512
Bilder: 271
Registriert: 22.02.2008, 12:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a

Re: Zeitraffa Script bricht nach einigen Stunden ab

Beitragvon nativebee2010 » 04.04.2012, 22:19

rudi hat geschrieben:Eine Umschaltung in den Makro-Mode per Skript ist derzeit nicht möglich.
Gruß rudi


Hi Rudi,

da würde ich aber sagen wollen, dass dies geht. Ich starte die Kamera mit Autoscript, stelle also nicht vorher auf Makromode und die Kamera macht im Makromode gute Bilder.

Danke Norbert

-- 04.04.2012, 22:23 --

msl hat geschrieben:Evt. sollte mal darüber nachgedacht werden, ein Skript, dass über mehrere Tage laufen soll, täglich über einen Reboot neu zu initialisieren. Dazu kann man die Skript-Autostart-Funktion sicherlich gut verwenden. So könnten dann auch Speicher-Probleme gemanagt werden.
Gruß msl

HI msl
Meinst Du jetzt einen manuellen Reboot oder geht das auch per Script. Die Kamera steht leider nicht bei mir im Garten, da komme ich nur am Wochenende hin, würde mir also nur helfen wenn dies per Script zu machen wäre.
bg
Norbert

-- 04.04.2012, 22:34 --

h3px hat geschrieben:Intervallaufnahmen über 1 Woche und mehr habe ich schon mehrfach gemacht. --> Link
Ich habe seinerzeit >>Akkurates Intervallometer<< genommen. Das ist problemlos durchgelaufen. In der letzten Zeit nehme ich eher SevenUp(light). Damit hatte ich bisher auch noch nie Probleme...
h3px

HI h3px,
wollte das Rad nicht neu erfinden, werde mich über Ostern mit SevenUp spiel und ausprobieren, danke für den Tipp. Gib Euch noch bescheid wie es lief.
Danke an alle für Eure Tipps :D
bg
Norbert
nativebee2010
CHDK-Einsteiger
CHDK-Einsteiger
 
Beiträge: 5
Registriert: 03.04.2012, 22:10
Kamera(s): A520 / A530 / A620

Re: Zeitraffa Script bricht nach einigen Stunden ab

Beitragvon h3px » 07.04.2012, 15:12

Hi, ich hatte ja gesagt, ich probier es mal auf meiner A590 aus...
... und bekomme folgende Fehlermeldung:
Code: Alles auswählen
:46: attempt to conpare nil with number

Gruß h3px
Benutzeravatar
h3px
CHDK-Begeisterter
CHDK-Begeisterter
 
Beiträge: 365
Bilder: 10
Registriert: 15.01.2009, 21:38
Wohnort: ~ MUC
Kamera(s): S 110 103a - SX 260 101a
Ixus 870 101a - A590 101b

Re: Zeitraffa Script bricht nach einigen Stunden ab

Beitragvon msl » 08.04.2012, 10:04

Hallo,

wir hatten ja schon geschrieben, dass da einige kleine Fehler drin sind. In Zeile 46 wird mit einer Variable verglichen, die nicht definiert wurde. Scheinbar wurde versäumt, einen entsprechenden Parameter f zu definieren. Da sollte wohl noch die Display-Abschaltung eingebaut werden.

Die Zeile 46 kann man auskommentieren.

Gruß msl
■ "Hey you, don't tell me there's no hope at all. Together we stand, divided we fall."CHDK inside FAQCHDK-Neuigkeiten auf Twitter
Benutzeravatar
msl
Super-Mod
Super-Mod
 
Beiträge: 4512
Bilder: 271
Registriert: 22.02.2008, 12:47
Wohnort: Leipzig
Kamera(s): A720 1.00c
SX220 1.01a


Zurück zu Code-Ecke

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste