
R version 4.5.2 (2025-10-31) -- "[Not] Part in a Rumble"
Copyright (C) 2025 The R Foundation for Statistical Computing
Platform: x86_64-pc-linux-gnu

R is free software and comes with ABSOLUTELY NO WARRANTY.
You are welcome to redistribute it under certain conditions.
Type 'license()' or 'licence()' for distribution details.

  Natural language support but running in an English locale

R is a collaborative project with many contributors.
Type 'contributors()' for more information and
'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or
'help.start()' for an HTML browser interface to help.
Type 'q()' to quit R.

> ###################################################################
> # SELECT TIME PERIOD
> # seconds for  2 days
> daystep <- 60*60*24
> step <- daystep*2
> t2 <- Sys.time()
> t1 <- t2 - step
> runningdate <- seq.Date( from=as.Date(t1), to=as.Date(t2), by="day")
> 
> #IDS <- c("2CF7F1C0532000AA","2CF7F1C0532000BD","2CF7F1C0532000AE","2CF7F1C053200110")
> IDS <- c("2CF7F1C0532000AA","2CF7F1C0533002F6","2CF7F1C0533002A5","2CF7F1C053200110")
> 
> ###################################################################
> 
> data <- data.frame(matrix(ncol = 5, nrow = 0))
> 
> # GET FILES FOR SELECTED DAYS
> init <- 1
> for (j in seq_along(IDS)) {
+   ID <- IDS[j]
+ 
+   mondir1 <- substr(runningdate[1], 1, 7)
+   mondir2 <- substr(runningdate[length(runningdate)], 1, 7)
+ 
+   filename1 <- paste(ID,"_",mondir1,".csv",sep="")
+   filename2 <- paste(ID,"_",mondir2,".csv",sep="")
+ 
+     URL=paste("https://saqn.geo.uni-augsburg.de/lorawan/",mondir1,"/",filename1,sep="")
+     message("filename =",URL)
+ 
+    tryCatch(
+     {
+      data1 <- read.table(URL,header=T,sep=",", fill=T)
+      colnames(data1) <- c("date","temp","rhum","batt")
+      data1$id <- ID
+      data <- rbind(data,data1)
+     },
+     error = function(cond) {
+      message(conditionMessage(cond))
+     },
+     warning = function(cond) {
+      message(conditionMessage(cond))
+    },
+     finally = {
+      message("done!")
+     }
+    )
+ 
+    if( mondir1 != mondir2 ){
+ 
+    tryCatch(
+     {
+      # data2 <- read.table(URL,header=F,sep=",", col.names=c("date","temp","rhum","batt"), fill=T, header=T)
+      URL=paste("https://saqn.geo.uni-augsburg.de/lorawan/",mondir2,"/",filename2,sep="")
+      message("filename =",URL)
+      data2 <- read.table(URL,header=T,sep=",", fill=T)
+      colnames(data2) <- c("date","temp","rhum","batt")
+      data2$id <- ID
+      data <- rbind(data,data2)
+     },
+     error = function(cond) {
+      message(conditionMessage(cond))
+     },
+     warning = function(cond) {
+      message(conditionMessage(cond))
+    },
+     finally = {
+      message("done!")
+     }
+    )
+ 
+   }
+ }
filename =https://saqn.geo.uni-augsburg.de/lorawan/2026-03/2CF7F1C0532000AA_2026-03.csv
done!
filename =https://saqn.geo.uni-augsburg.de/lorawan/2026-03/2CF7F1C0533002F6_2026-03.csv
done!
filename =https://saqn.geo.uni-augsburg.de/lorawan/2026-03/2CF7F1C0533002A5_2026-03.csv
done!
filename =https://saqn.geo.uni-augsburg.de/lorawan/2026-03/2CF7F1C053200110_2026-03.csv
done!
> 
> data[data < -9998] <- NA
> #data$time <- as.POSIXct(data$date)
> data$time <- as.POSIXct(data$date,format="%Y-%m-%dT%H:%M:%OSZ")
> 
> #---------------------------------------------------------
> png("hochfeld_wertach_temp_2days.png",width=1900, height=600, units="px", res=300, pointsize=3)
> tempmin <- min(data$temp,na.rm = TRUE) - 1
> tempmin <- min(c(0.0,tempmin))
> tempmax <- max(data$temp,na.rm = TRUE) + 1
> plot(data$time,data$temp,xlab=paste("time UTC"),ylab="air temperature (°C)",
+ xlim=c(as.POSIXct(t1),as.POSIXct(t2)),ylim=c(tempmin,tempmax),type="n",xaxs="i",yaxs="i",xaxt="n",
+ main=paste("Air Temperature (S2101) ",t1," - ",t2," UTC" ))
> ihours <- round( seq( as.POSIXct(t1), as.POSIXct(t2),by=3600) , units="hours")
> axis.POSIXct(1, x=data$time, at = ihours, format = "%a %m-%d %H:%M")
> Axis(x=data$temp,side=4)
> abline(v= as.POSIXct(ihours) ,lwd=0.2,col="gray")
> abline(h=seq(-40,tempmax,by=2),lwd=0.2,col="gray")
> abline(h=0.0,lwd=0.5,col="black")
> SID <- "2CF7F1C0532000AA" # Hochfeld 200cm
> lines(data$time[data$id == SID],data$temp[data$id == SID],col="orange",t="l",lwd=1.0)
> #SID <- "2CF7F1C0532000BD" # Hochfeld 025cm -> defekt -> UNi-Station
> SID <- "2CF7F1C0533002F6" # Hochfeld 025cm
> lines(data$time[data$id == SID],data$temp[data$id == SID],col="red",t="l",lwd=1.0)
> #SID <- "2CF7F1C0532000AE" # Wertach 200cm -> defekt -> UNi-Station
> SID <- "2CF7F1C0533002A5" # Wertach 200cm
> lines(data$time[data$id == SID],data$temp[data$id == SID],col="blueviolet",t="l",lwd=1.0)
> SID <- "2CF7F1C053200110" # Wertach 025cm
> lines(data$time[data$id == SID],data$temp[data$id == SID],col="blue",t="l",lwd=1.0)
> legend("topleft",c("2CF7F1C0532000AA Hochfeld 2m","2CF7F1C0533002F6 Hochfeld 25cm",
+        "2CF7F1C0533002A5 Wertach 2m","2CF7F1C053200110 Wertach 25cm"),
+        col=c("orange","red","blueviolet","blue"),lty=1,lwd=0.5)
> dev.off()
null device 
          1 
> 
> #---------------------------------------------------------
> png("hochfeld_wertach_rhum_2days.png",width=1900, height=600, units="px", res=300, pointsize=3)
> rhummin <- min(data$rhum,na.rm = TRUE) - 2
> rhummax <- max(data$rhum,na.rm = TRUE) + 2
> plot(data$time,data$rhum,xlab=paste("time UTC"),ylab="relative humidity (%)",
+ xlim=c(as.POSIXct(t1),as.POSIXct(t2)),ylim=c(rhummin,rhummax),type="n",xaxs="i",yaxs="i",xaxt="n",
+ main=paste("Relative Humidity (S2101) ",t1," - ",t2," UTC" ))
> ihours <- round( seq( as.POSIXct(t1), as.POSIXct(t2),by=3600) , units="hours")
> axis.POSIXct(1, x=data$time, at = ihours, format = "%a %m-%d %H:%M")
> Axis(x=data$rhum,side=4)
> abline(v= as.POSIXct(ihours) ,lwd=0.2,col="gray")
> abline(h=seq(0,rhummax,by=5),lwd=0.2,col="gray")
> SID <- "2CF7F1C0532000AA" # Hochfeld 200cm
> lines(data$time[data$id == SID],data$rhum[data$id == SID],col="orange",t="l",lwd=1.0)
> #SID <- "2CF7F1C0532000BD" # Hochfeld 025cm
> SID <- "2CF7F1C0533002F6" # Hochfeld 025cm
> lines(data$time[data$id == SID],data$rhum[data$id == SID],col="red",t="l",lwd=1.0)
> #SID <- "2CF7F1C0532000AE" # Wertach 200cm
> SID <- "2CF7F1C0533002A5" # Wertach 200cm
> lines(data$time[data$id == SID],data$rhum[data$id == SID],col="blueviolet",t="l",lwd=1.0)
> SID <- "2CF7F1C053200110" # Wertach 025cm
> lines(data$time[data$id == SID],data$rhum[data$id == SID],col="blue",t="l",lwd=1.0)
> legend("topleft",c("2CF7F1C0532000AA Hochfeld 2m","2CF7F1C0533002F6 Hochfeld 25cm",
+        "2CF7F1C0533002A5 Wertach 2m","2CF7F1C053200110 Wertach 25cm"),
+        col=c("orange","red","blueviolet","blue"),lty=1,lwd=0.5)
> dev.off()
null device 
          1 
> 
> 
> #---------------------------------------------------------
> t3 <- t2 - 60*60*5
> t4 <- t2 - 60*60*1.5
> 
> png("hochfeld_wertach_temp_3hours.png",width=800, height=600, units="px", res=300, pointsize=3)
> tempmin <- min(data$temp[data$time > t3],na.rm = TRUE) - 1
> tempmin <- min(c(tempmin,0.0))
> tempmax <- max(data$temp[data$time > t3],na.rm = TRUE) + 1
> plot(data$time,data$temp,xlab=paste("time UTC"),ylab="air temperature (°C)",
+ xlim=c(as.POSIXct(t3),as.POSIXct(t4)),ylim=c(tempmin,tempmax),type="n",xaxs="i",yaxs="i",xaxt="n",
+ main=paste("Air Temperature (S2101) ",t3," - ",t4," UTC" ))
> ihours <- round( seq( as.POSIXct(t3), as.POSIXct(t4),by=3600) , units="hours")
> axis.POSIXct(1, x=data$time, at = ihours, format = "%a %m-%d %H:%M")
> Axis(x=data$temp,side=4)
> abline(v= as.POSIXct(ihours) ,lwd=0.2,col="gray")
> abline(h=seq(-40,tempmax,by=1),lwd=0.2,col="gray")
> abline(h=0.0,lwd=0.5,col="black")
> 
> SID <- "2CF7F1C0532000AA" # Hochfeld 200cm
> lines(data$time[data$id == SID],data$temp[data$id == SID],col="orange",t="l",lwd=1.0)
> #SID <- "2CF7F1C0532000BD" # Hochfeld 025cm
> SID <- "2CF7F1C0533002F6" # Hochfeld 025cm
> lines(data$time[data$id == SID],data$temp[data$id == SID],col="red",t="l",lwd=1.0)
> #SID <- "2CF7F1C0532000AE" # Wertach 200cm
> SID <- "2CF7F1C0533002A5" # Wertach 200cm
> lines(data$time[data$id == SID],data$temp[data$id == SID],col="blueviolet",t="l",lwd=1.0)
> SID <- "2CF7F1C053200110" # Wertach 025cm
> lines(data$time[data$id == SID],data$temp[data$id == SID],col="blue",t="l",lwd=1.0)
> 
> legend("topleft",c("2CF7F1C0532000AA Hochfeld 2m","2CF7F1C0533002F6 Hochfeld 25cm",
+        "2CF7F1C0533002A5 Wertach 2m","2CF7F1C053200110 Wertach 25cm"),
+        col=c("orange","red","blueviolet","blue"),lty=1,lwd=0.5)
> dev.off()
null device 
          1 
> 
> 
> proc.time()
   user  system elapsed 
  1.073   2.160   0.694 
