<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://dlizcano.github.io//feed.xml" rel="self" type="application/atom+xml" /><link href="https://dlizcano.github.io//" rel="alternate" type="text/html" /><updated>2026-04-21T17:30:30+00:00</updated><id>https://dlizcano.github.io//feed.xml</id><title type="html">Diego J. Lizcano</title><subtitle>Diego J. Lizcano personal website.</subtitle><author><name>Diego J. Lizcano</name></author><entry><title type="html">Curso Monitoreo de Biodiversidad con Trampas Cámara y Modelos de Ocupación</title><link href="https://dlizcano.github.io//spanish/Biodiversity-monitoring_course/" rel="alternate" type="text/html" title="Curso Monitoreo de Biodiversidad con Trampas Cámara y Modelos de Ocupación" /><published>2026-03-15T00:00:00+00:00</published><updated>2026-03-15T05:24:36+00:00</updated><id>https://dlizcano.github.io//spanish/Biodiversity-monitoring_course</id><content type="html" xml:base="https://dlizcano.github.io//spanish/Biodiversity-monitoring_course/"><![CDATA[<h1 id="curso-version-2026">Curso version 2026!</h1>

<p>El viernes 13 de marzo del 2026 hicimos algo que nos gusta mucho desde la <a href="https://redfototrampeo.netlify.app/">Red Colombiana de Fototrampeo</a> y la <a href="https://www.mamiferoscolombia.org">Sociedad Colombiana de Mastozoología</a>, y es abrir las puertas para compartir nuestra experiencia en un curso de Monitoreo de Biodiversidad con Trampas Cámara y Modelos de Ocupación con R, hubo una sesión teórica y dos practicas con mucho código, datos, modelos y mapas apareciendo en pantalla en tiempo real. Nos acompañaron personas de multiples organizaciones provinientes de Bogotá, Bucaramanga y Pereira.</p>

<p><img src="/images/curso_2026/foto1.jpg" alt="Curso 2026" /></p>

<h1 id="lo-que-hemos-hecho">Lo que hemos hecho</h1>

<p>Laín Pardo sentó las bases mostrando el aspecto histórico y la importancia de la pregunta de investigación en el fototrampeo. Mauricio Vela nos contó sobre el paso siguiente al modelado de la ocupación y es entender el movimiento de los animales y la importancia del rango de hogar para diseñar un buen muestreo en los modelos de ocupación. Angélica Díaz ilustró el uso de wildlife insights y como esta herramienta ahorra tiempo valioso y facilita la colaboración. Luego vino una inmersión al aspecto histórico de los modelos de ocupación y la importancia de los muestreos repetidos para solucionar el problema de la detección imperfecta.</p>

<p>El segundo y tercer día fueron totalmente en la práctica con código en R.</p>

<figure class="half ">
  
    
      <a href="/images/curso_2026/Foto8.jpg" title="Lain Pardo">
          <img src="/images/curso_2026/Foto8.jpg" alt="Lain Pardo" />
      </a>
    
  
    
      <a href="/images/curso_2026/Foto4.jpg" title="Mauricio Vela">
          <img src="/images/curso_2026/Foto4.jpg" alt="Mauricio Vela" />
      </a>
    
  
    
      <a href="/images/curso_2026/foto3.jpg" title="Diego Lizcano">
          <img src="/images/curso_2026/foto3.jpg" alt="Diego Lizcano" />
      </a>
    
  
    
      <a href="/images/curso_2026/Foto7.jpg" title="Angelica Diaz y el grupo en foto de Cámara Trampa">
          <img src="/images/curso_2026/Foto7.jpg" alt="Angelica Diaz y el grupo" />
      </a>
    
  
  
    <figcaption>Fotos del dia 1 y 2
</figcaption>
  
</figure>

<p>La dinámica fue completamente en vivo: con código real, datos reales de la Cordillera Central de Colombia, y modelos y mapas construyéndose en tiempo real. Eso es lo que más valoramos en este tipo de experiencias!</p>

<p>📅 <a href="https://docs.google.com/document/d/1oH39QQ-kgN45nixe6l3QZWr3eueLbROC/edit?usp=sharing&amp;ouid=113509074802217952757&amp;rtpof=true&amp;sd=true">Ver el programa completo</a></p>

<h2 id="el-material-del-segundo-dia-esta-disponible">El material del segundo dia esta disponible</h2>

<p>Si no pudiste asistir al curso en vivo, o si estuviste y quieres repasar un poco, acá está el recurso del segundo dia:</p>

<p>👉🏻 <a href="https://dlizcano.github.io/cameratrap/posts/2026-01-01-wildlifeinsights-to-detections/">Codigo y Tutorial</a></p>

<h1 id="como-seguir-o-profundizar-más">¿Como seguir o profundizar más?</h1>

<p>Si quieres repasar, aprender más o profundizar tus habilidades con R</p>

<p>👉🏻 <a href="https://dlizcano.github.io/IntroR/">Acá un tutorial</a></p>

<p>Si quieres profundizar en la importancia de las simulaciones y el concepto ecológico y matemático del modelo de ocupación mas básico.</p>

<p>👉🏻 <a href="https://dlizcano.github.io/IntroOccuBook/">Acá otro tutorial</a></p>

<h1 id="la-sede-del-curso">La sede del curso</h1>

<p>Este curso fue posible gracias a la colaboración de múltiples organizaciones y al trabajo de <strong>Yeimy Castillo</strong> y <strong>Mauro</strong> quienes desde el Parque Jaime Duque empujaron para que todo saliera de la mejor forma.</p>

<p><img src="/images/curso_2026/Foto5.jpg" alt="El grupo en la mano del Parque Jaime Duque" /></p>

<p>Foto del grupo en la mano del Parque Jaime Duque.</p>

<blockquote>
  <p>Por primera vez tuve la oportunidad de dar clase en el Taj Mahal… jejejeje…</p>
</blockquote>

<p>
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.
</p>]]></content><author><name>Diego J. Lizcano</name></author><category term="[&quot;Spanish&quot;]" /><category term="R" /><category term="Occupancy" /><category term="Camera" /><summary type="html"><![CDATA[Curso version 2026!]]></summary></entry><entry><title type="html">My first R package is on CRAN!</title><link href="https://dlizcano.github.io//english/mammalcol-is-on-CRAN/" rel="alternate" type="text/html" title="My first R package is on CRAN!" /><published>2025-10-30T00:00:00+00:00</published><updated>2025-10-30T05:24:36+00:00</updated><id>https://dlizcano.github.io//english/mammalcol-is-on-CRAN</id><content type="html" xml:base="https://dlizcano.github.io//english/mammalcol-is-on-CRAN/"><![CDATA[<h1 id="mammalcol-is-on-cran">mammalcol is on CRAN!</h1>

<p>I woke up this morning to an email I wasn’t quite expecting — <code class="language-plaintext highlighter-rouge">mammalcol</code>, my R package for exploring the mammals of Colombia, had been accepted to CRAN. I sat there for a moment, coffee in hand, feeling a mix of relief and quiet pride. It’s been quite a journey to get here.</p>

<p><a href="https://dlizcano.github.io/mammalcol/"><img src="/images/mammalcol/logo_mammalcol.png" alt="BirdNET-GO Dashboard" /></a></p>

<h2 id="it-started-with-a-messy-camera-trap-dataset">It started with a messy camera trap dataset</h2>

<p>Like most things I build, <code class="language-plaintext highlighter-rouge">mammalcol</code> wasn’t planned. It grew out of necessity. I was working through a large camera trap dataset, trying to put proper species names and details to hundreds of detections. I kept writing the same kinds of helper functions over and over — little snippets to look up species info, check taxonomy, pull distributions. Eventually those snippets became functions, and the functions found a home in a personal package that lived only on my computer, tangled up with a bunch of other stuff that was probably only useful to me.</p>

<p>When a manuscript started taking shape from that analysis, I hit a wall. My analysis code loaded my personal package, which meant no one else could realistically reproduce my work. I needed a better solution.</p>

<h2 id="pulling-it-apart-and-making-it-shareable">Pulling it apart and making it shareable</h2>

<p>The answer came from looking at what others had done in similar situations. I should separate out the useful bits, clean them up, and publish them properly. So that’s what I did — I pulled the relevant functions into their own standalone package, invited some other people who care about Colombian mammals and R to join in, and <code class="language-plaintext highlighter-rouge">mammalcol</code> started to take shape as something meant for the world, not just for me.</p>

<p>That process of going from “functions on my computer” to “package on CRAN” was honestly more painful than I imagined. I’d heard it was tricky, but I underestimated just how much attention to detail CRAN submission requires. Several rounds of submissions. Notes coming back about small things — a period missing here, a line too long there, a word in the description that CRAN didn’t like. Each time I’d fix the notes and resubmit, half expecting another round of feedback.</p>

<p>A few things that helped keep me sane through the process:</p>

<ul>
  <li><strong><code class="language-plaintext highlighter-rouge">usethis</code></strong> — an incredible package that automates so much of the scaffolding involved in building and maintaining an R package. I leaned on it constantly.</li>
  <li><strong>The R Packages book by Hadley Wickham</strong> — I followed it closely to get the first draft off the ground. A genuinely great guideline.</li>
  <li><strong><code class="language-plaintext highlighter-rouge">testthat</code></strong> — writing tests felt like extra work at first, but it saved me from breaking things more times than I can count.</li>
</ul>

<h2 id="and-then-the-email">And then, the email</h2>

<p>After all of that, the acceptance email felt almost anticlimactic in the best possible way. A small, quiet moment at the start of an ordinary morning. But I know how much effort went into it — from me and from the collaborators who joined the project and helped shape it into something more than I could have built alone.</p>

<p>The package isn’t flashy. It does a humble but useful job: giving researchers quick, reliable access to the list of mammal species of Colombia, with tools to search, map, and validate occurrence data. Colombia is one of the world leaders in mammal diversity, and I hope <code class="language-plaintext highlighter-rouge">mammalcol</code> makes it a little easier for people to explore that.</p>

<p>A manuscript is still in the works, which is what started all of this in the first place. But for now, I’m just glad the package is out there.</p>

<p>If you want to try it:</p>

<div class="language-r highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">install.packages</span><span class="p">(</span><span class="s2">"mammalcol"</span><span class="p">)</span><span class="w">
</span></code></pre></div></div>

<blockquote class="notice--warning">
  <p>And if you find a bug, have a suggestion, or spot a species in a new departamento — I’d love to hear from you. The <a href="https://github.com/dlizcano/mammalcol">GitHub repo</a> is the best place to reach out.</p>
</blockquote>

<p>
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.
</p>]]></content><author><name>Diego J. Lizcano</name></author><category term="[&quot;English&quot;]" /><category term="R" /><category term="Package" /><category term="Mammal" /><summary type="html"><![CDATA[mammalcol is on CRAN!]]></summary></entry><entry><title type="html">Graph of Sound Level Data from BirdNET-GO</title><link href="https://dlizcano.github.io//english/Graph-of-soundlevel-data-from-BirdNET-GO/" rel="alternate" type="text/html" title="Graph of Sound Level Data from BirdNET-GO" /><published>2025-10-20T00:00:00+00:00</published><updated>2025-10-20T05:24:36+00:00</updated><id>https://dlizcano.github.io//english/Graph-of-soundlevel-data-from-BirdNET-GO</id><content type="html" xml:base="https://dlizcano.github.io//english/Graph-of-soundlevel-data-from-BirdNET-GO/"><![CDATA[<h1 id="sound-level-from-birdnet-go">Sound level from BirdNET-GO.</h1>

<p>BirdNET-Go includes a powerful feature called <a href="https://github.com/tphakala/birdnet-go/blob/main/doc/wiki/guide.md#sound-level-monitoring"><strong>Sound Level Monitoring</strong></a>. This is crucial for understanding the <em>acoustic context</em> of the environment, which helps in filtering unwanted noise and provides invaluable sounscape data for researchers.</p>

<p>The system registers sound levels in <a href="https://www.engineeringtoolbox.com/octave-bands-frequency-limits-d_1602.html"><strong>1/3 octave bands</strong></a>, following the ISO 266 standard, providing a detailed frequency breakdown of the soundscape.  The data is recorded as frequently as every ten seconds, offering continuous, advanced audio monitoring that gives a far richer picture of the overall soundscape than just a list of bird names. But I selected to get data each 30 seconds to have just two sound levels samples per minute.</p>

<h2 id="getting-the-data">Getting the data</h2>

<p>In the past post, I explain more details about the 
<a href="https://dlizcano.github.io/english/Soundlevel-data-from-BirdNET-GO/">sound levels and my custom solution</a>.</p>

<p>At the end I have a CSV file that grows as fast as a Mega per day.</p>

<h2 id="plotting-the-data">Plotting the data</h2>

<p>To plot the sound levels I wrote the following R code:</p>

<div class="language-R highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">library</span><span class="p">(</span><span class="n">readr</span><span class="p">)</span><span class="w">
</span><span class="n">library</span><span class="p">(</span><span class="n">tidyverse</span><span class="p">)</span><span class="w">
</span><span class="n">library</span><span class="p">(</span><span class="n">ggExtra</span><span class="p">)</span><span class="w">
</span><span class="n">library</span><span class="p">(</span><span class="n">viridis</span><span class="p">)</span><span class="w">
</span><span class="n">library</span><span class="p">(</span><span class="n">hms</span><span class="p">)</span><span class="w">

</span><span class="n">soundlevel_data</span><span class="w"> </span><span class="o">&lt;-</span><span class="w"> </span><span class="n">read_csv</span><span class="p">(</span><span class="s2">"C:/Users/usuario/Downloads/soundlevel_data.csv"</span><span class="p">,</span><span class="w"> </span><span class="n">col_types</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">cols</span><span class="p">(</span><span class="n">timestamp</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">col_character</span><span class="p">()))</span><span class="w">

</span><span class="n">soundlevel_data</span><span class="o">$</span><span class="n">datetime</span><span class="w"> </span><span class="o">&lt;-</span><span class="w"> </span><span class="n">ymd_hms</span><span class="p">(</span><span class="n">soundlevel_data</span><span class="o">$</span><span class="n">timestamp</span><span class="p">)</span><span class="w">
</span><span class="n">soundlevel_data</span><span class="o">$</span><span class="n">dia</span><span class="w"> </span><span class="o">&lt;-</span><span class="w"> </span><span class="n">date</span><span class="p">(</span><span class="n">soundlevel_data</span><span class="o">$</span><span class="n">timestamp</span><span class="p">)</span><span class="w">
</span><span class="c1"># Using lubridate to extract individual components and make hour</span><span class="w">
</span><span class="n">time_string</span><span class="w"> </span><span class="o">&lt;-</span><span class="w"> </span><span class="n">as_hms</span><span class="p">(</span><span class="n">paste</span><span class="p">(</span><span class="n">hour</span><span class="p">(</span><span class="n">soundlevel_data</span><span class="o">$</span><span class="n">datetime</span><span class="p">),</span><span class="w">
                          </span><span class="n">minute</span><span class="p">(</span><span class="n">soundlevel_data</span><span class="o">$</span><span class="n">datetime</span><span class="p">),</span><span class="w">
                          </span><span class="n">second</span><span class="p">(</span><span class="n">soundlevel_data</span><span class="o">$</span><span class="n">datetime</span><span class="p">),</span><span class="w"> </span><span class="n">sep</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">":"</span><span class="p">))</span><span class="w">

</span><span class="n">soundlevel_data</span><span class="w"> </span><span class="o">|&gt;</span><span class="w"> </span><span class="c1">#filter(day(datetime)==c(22,23)) |&gt; # filter one day</span><span class="w">
 </span><span class="n">ggplot</span><span class="p">(</span><span class="n">aes</span><span class="p">(</span><span class="n">x</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">time_string</span><span class="p">,</span><span class="w"> </span><span class="n">y</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">frequency</span><span class="p">,</span><span class="w"> </span><span class="n">fill</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">noise</span><span class="p">))</span><span class="w"> </span><span class="o">+</span><span class="w">
      </span><span class="n">geom_tile</span><span class="p">(</span><span class="n">height</span><span class="o">=</span><span class="m">.11</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="c1"># trick to remove white line</span><span class="w">
      </span><span class="c1"># scale_fill_gradient(low = "yellow", high = "red") +</span><span class="w">
      </span><span class="n">scale_fill_viridis</span><span class="p">(</span><span class="n">option</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"H"</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w">
      </span><span class="n">scale_y_log10</span><span class="p">()</span><span class="w"> </span><span class="o">+</span><span class="w">
      </span><span class="n">scale_x_time</span><span class="p">(</span><span class="n">date_breaks</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"1 hour"</span><span class="p">,</span><span class="w"> </span><span class="n">date_labels</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"%H"</span><span class="p">)</span><span class="o">+</span><span class="w">
      </span><span class="n">facet_grid</span><span class="p">(</span><span class="n">rows</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">vars</span><span class="p">(</span><span class="n">dia</span><span class="p">))</span><span class="w"> </span><span class="o">+</span><span class="w">
      </span><span class="n">xlab</span><span class="p">(</span><span class="s2">"Hour"</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w">
      </span><span class="n">ylab</span><span class="p">(</span><span class="s2">"Frequency (Hz)"</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w">
        </span><span class="n">labs</span><span class="p">(</span><span class="n">fill</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"Noise (dB)"</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w">
   </span><span class="n">removeGrid</span><span class="p">()</span><span class="w"> </span><span class="c1"># + #ggExtra </span><span class="w">
  </span><span class="c1"># theme_classic() </span><span class="w">

</span></code></pre></div></div>

<h3 id="here-the-graph">Here the graph</h3>

<p><img src="/images/birdnetgo/soundlevels.png" alt="Sound Levels" /></p>

<p>I tried to match the time with some acoustic events…</p>

<h4 id="why-the-sound-levels-are-in-negative-scale">Why the sound levels are in negative scale?</h4>

<p>In my BirdNET-GO data, the reference (0 dB) is set to the maximum possible level of the microphone (without distortion) that I use to capture the sound. In my case I am using a cheap <a href="https://www.amazon.com/Microphone-MAONO-Omnidirectional-Microphone-Recording-Broadcasting/dp/B074BLM973?th=1">MAONO USB Lavalier Microphone</a>. It says is capable of recording at 192KHZ/24BIT and has an audio sensitivity of 30 Decibels. So -80 dB in the graph mean it is very quiet and 0 is very noisy, not real decibels. Perhaps I need to do some type of calibration here.</p>

<p>My readings range from about -45 dB to -89 dB, this suggests a relatively quiet environment (birds, ambient noise, and low noise). The higher frequencies (10-20 kHz) are much quieter (-80 to -89), which is normal for rural or natural soundscapes.</p>

<h4 id="why-this-scale-is-useful">Why this scale is useful:</h4>
<p>The logarithmic nature of the data matches how our ears perceive sound - a change of 10 dB is roughly perceived as “twice as loud.” So it also makes it easier to handle the huge range of sound intensities we encounter in the environment.</p>

<blockquote class="notice--warning">
  <p>My sound level data is totally normal! The negative values just mean everything is related to the mic’s maximum capacity, which is good… or perhaps I need a much better mic?.</p>
</blockquote>

<p>
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.
</p>]]></content><author><name>Diego J. Lizcano</name></author><category term="[&quot;English&quot;]" /><category term="Phython" /><category term="Home Assistant" /><category term="Birds" /><category term="aves" /><category term="acustica" /><category term="BirdNET-Pi" /><summary type="html"><![CDATA[Sound level from BirdNET-GO.]]></summary></entry><entry><title type="html">Saving Sound Level Data from BirdNET-GO to a CSV file</title><link href="https://dlizcano.github.io//english/Soundlevel-data-from-BirdNET-GO/" rel="alternate" type="text/html" title="Saving Sound Level Data from BirdNET-GO to a CSV file" /><published>2025-10-10T00:00:00+00:00</published><updated>2025-10-10T05:24:36+00:00</updated><id>https://dlizcano.github.io//english/Soundlevel-data-from-BirdNET-GO</id><content type="html" xml:base="https://dlizcano.github.io//english/Soundlevel-data-from-BirdNET-GO/"><![CDATA[<h1 id="birdnet-go-is-a-newer-birdnet-based-project">BirdNET-GO is a newer BirdNET-based project.</h1>

<p>Recently I have adquired a Raspberry pi 4 and decided to upgrade my <a href="https://app.birdweather.com/data/K9kBtRztpJHkdiXSnfWyi3nr">BirdNet-Pi station Entrelomas</a> to  BirdNET-Go <a href="https://app.birdweather.com/stations/18147">in the same location</a>.</p>

<h1 id="real-time-soundscape-analysis-exploring-birdnet-go-and-custom-data-logging">Real-Time Soundscape Analysis: Exploring BirdNET-Go and Custom Data Logging</h1>

<p>I want to start with a massive shout-out to the developers who made this all possible. My deepest thanks go to <a href="https://github.com/tphakala"><strong>Tomi P. Hakala</strong></a>, who built <a href="https://github.com/tphakala/birdnet-go">BirdNET-Go</a> on top of the core <a href="https://birdnet.cornell.edu/">BirdNET project</a>, and to <a href="https://github.com/mcguirepr89"><strong>mcguirepr89</strong></a> for his foundational work on the original <a href="https://github.com/Nachtzuster/BirdNET-Pi">BirdNET-Pi</a> project, now directed by <a href="https://github.com/Nachtzuster"><strong>Nachtzuster</strong></a> on which I’ve relied on extensively.</p>

<p>Without the tireless efforts of these two incredible developers and all the many project contributors! my journey into birding and biodiversity monitoring as a citizen scientist simply wouldn’t have been possible.</p>

<h2 id="introducing-birdnet-go-a-high-performance-acoustic-monitoring-tool">Introducing BirdNET-Go: A High-Performance Acoustic Monitoring Tool</h2>

<p><strong>BirdNET-Go</strong> is a high-performance, continuous classification tool written in Go that acts as a real-time soundscape analyzer for avian vocalizations. Leveraging Artificial Intelligence, it’s designed for efficiency and built on the powerful academic work of the BirdNET project, while drawing architectural inspiration from BirdNET-Pi, which I used extensively <a href="https://dlizcano.github.io/spanish/Monitoreando-aves-con-Birdnet/">as in this post</a>.</p>

<h3 id="sleek-interface-and-critical-integrations">Sleek Interface and Critical Integrations</h3>

<p>BirdNET-Go provides a clean, modern web interface where users can easily view detected birds, analyze their frequencies, and play back captured recordings.</p>

<p><img src="/images/birdnetgo/BirdNET-GO_dashboard.png" alt="BirdNET-GO Dashboard" /></p>

<p>It also includes a streamlined, resource-light analytics dashboard, compared with the one in BirdNET-Pi that takes much longer to load. I also love the posibility to export the data as a csv file.</p>

<p><img src="/images/birdnetgo/BirdNET-GO_Analytics.jpg" alt="BirdNET-GO Dashboard" /></p>

<p>However, the most interesting feature, especially for home users, is its seamless integration with <strong>Home Assistant</strong> via MQTT. It supports audio streams directly via <strong>RTSP</strong>, which is the standard protocol for streaming video and audio from common IP cameras. This allows users to turn existing security hardware into a powerful, real-time acoustic monitoring station.</p>

<h3 id="the-game-changer-soundscape-context">The Game-Changer: Soundscape Context</h3>

<p>Beyond simple species identification, BirdNET-Go includes a powerful feature called <a href="https://github.com/tphakala/birdnet-go/blob/main/doc/wiki/guide.md#sound-level-monitoring"><strong>Sound Level Monitoring</strong></a>. This is crucial for understanding the <em>acoustic context</em> of the environment, which helps in filtering unwanted noise and provides invaluable sounscape data for researchers.</p>

<p>The system registers sound levels in <a href="https://www.engineeringtoolbox.com/octave-bands-frequency-limits-d_1602.html"><strong>1/3 octave bands</strong></a>, following the ISO 266 standard, providing a detailed frequency breakdown of the soundscape. This data can be useful to <a href="https://www.engineeringtoolbox.com/nc-noise-criterion-d_725.html">calculate the Noise Criterion (NC) - level</a>.  The data is recorded as frequently as every ten seconds, offering continuous, advanced audio monitoring that gives a far richer picture of the overall soundscape than just a list of bird names.</p>

<p><img src="/images/birdnetgo/BirdNET-GO_Audio_setting.jpg" alt="BirdNET-GO_Audio_setting" /></p>

<p>Notice I selected to get data each 30 seconds and not each 10 as default.</p>

<h3 id="the-data-challenge-optimizing-for-a-home-server">The Data Challenge: Optimizing for a Home Server</h3>

<p>While this <strong>Sound Level</strong> data is incredibly valuable, accessing it required a solution tailored to my home lab server, which is an old Dell laptop running Home Assistant in a virtual machine of Proxmox. By the way <a href="https://www.youtube.com/watch?v=wX75Z-4MEoM">here I got the inspiration to build it</a>.</p>

<p>Sound level data from BirdNET-GO can be published via <strong>MQTT</strong> or accessed through a <strong>Prometheus-compatible endpoint</strong>, and it’s typically consumed by databases such as <a href="https://www.influxdata.com/"><strong>InfluxDB</strong></a> for high-resolution time series, and for its visualization is common to use tools like <a href="https://grafana.com/grafana/?plcmt=products-nav">Grafana</a>.</p>

<p>But dedicating that much processing power and space to a separate database in InfluxDB and for Grafana to visualize wasn’t a viable option for my Raspberry-Pi 4 or my old laptop as home server. To keep the resource load minimal, I decided on a low-tech, simple and diferent approach:</p>

<p>I leveraged BirdNET-Go’s tight integration with Home Assistant and created a simple <strong>automation</strong> to capture the necessary sound level attributes and write them directly to a local <strong>CSV file</strong>. This file now serves as my lightweight data repository, ready for deeper analysis and visualization using <strong>R</strong>.</p>

<p>The inspiration to integrate Home Assistant with BirdNET-GO came from <a href="https://www.kyleniewiada.org/blog/2025/05/backyard-bird-tracking-with-ai/">Kyle Niewiada</a>.</p>

<h3 id="this-is-what-you-need">This is what you need:</h3>

<h4 id="1-setup">1. Setup:</h4>

<p>Save this Python script to: <code class="language-plaintext highlighter-rouge">/config/scripts/save_audio_data.py</code>.</p>

<p>This script reads the JSON data embeeded in the MQTT, extracting the time, frequency, noise, mean and maximum data, and save it as a new row in the soundlevel_data.csv file.  Notice the file path at <code class="language-plaintext highlighter-rouge">/config/www/</code>.</p>

<script src="https://gist.github.com/dlizcano/be069b6feea3f742a6a2f0a37a51d05c.js"></script>

<h4 id="2-add-this-to-configurationyaml-in-home-assistant">2. Add this to <code class="language-plaintext highlighter-rouge">configuration.yaml</code> in Home Assistant</h4>

<script src="https://gist.github.com/dlizcano/06ef4578975b240503c83fa41239bef8.js"></script>

<h4 id="3-add-this-automation-in-home-assistant">3. Add this automation in Home Assistant.</h4>

<p>For that go to: Settings → Automations → Create Automation → Edit in YAML, then paste the automation code.</p>

<script src="https://gist.github.com/dlizcano/8bd69131664d7cce10b7956c6703468f.js"></script>

<p>Notice the <code class="language-plaintext highlighter-rouge">topic: birdnet-go/soundlevel</code> should be the same topic you configure in BirdNET-GO.  Also notice the last line includes inside the “” the word <code class="language-plaintext highlighter-rouge">trigger.payload</code> surrounded by double bracket <strong>{}</strong>. For some reason GitHub prevent to visualize it properly.</p>

<p><img src="/images/birdnetgo/triger.jpg" alt="trigger.payload" /></p>

<h4 id="4-restart-home-assistant">4. Restart Home Assistant</h4>

<blockquote class="notice--warning">
  <p>Voila!!! you have a csv file that grows by twenty rows each minute storing sound levels.</p>
</blockquote>

<h3 id="to-download-the-csv-data">To download the csv data</h3>

<p>I use <a href="https://winscp.net/">WinSCP</a> to make the file trasnsfer from and to my home server.</p>

<p><img src="/images/birdnetgo/window_WinSCP.PNG" alt="BirdNET-GO_Audio_setting" /></p>

<p>Of course BirdNET-GO is still a work on progress and its down side is that if you use an older, or diferent browser to Chrome, the visualization can freeze.</p>

<p>
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.
</p>]]></content><author><name>Diego J. Lizcano</name></author><category term="[&quot;English&quot;]" /><category term="Phython" /><category term="Home Assistant" /><category term="Birds" /><category term="aves" /><category term="acustica" /><category term="BirdNET-Pi" /><summary type="html"><![CDATA[BirdNET-GO is a newer BirdNET-based project.]]></summary></entry><entry><title type="html">Animating Deforestation in Los Katios National Park</title><link href="https://dlizcano.github.io//english/Animating-Deforestation/" rel="alternate" type="text/html" title="Animating Deforestation in Los Katios National Park" /><published>2025-09-09T00:00:00+00:00</published><updated>2025-09-09T05:24:36+00:00</updated><id>https://dlizcano.github.io//english/Animating-Deforestation</id><content type="html" xml:base="https://dlizcano.github.io//english/Animating-Deforestation/"><![CDATA[<h2 id="deforestation-data">Deforestation Data</h2>

<p>The University of Maryland’s Global Land Analysis and Discovery (GLAD) laboratory, in collaboration with Global Forest Watch (GFW), has released its latest global forest loss data. This annually updated dataset, which you can <a href="https://storage.googleapis.com/earthenginepartners-hansen/GFC-2024-v1.12/download.html">download here</a>, provides a unique look at how forests are disappearing around the world.</p>

<p>Using Landsat satellite imagery, the data reveals detailed spatiotemporal trends—showing not just where and when forest loss is happening, but also the rate at which it’s occurring. This helps researchers, policymakers, and the public understand the dynamics of global deforestation and its impact on our planet.</p>

<p><img src="/images/Katios/GFC.jpg" alt="Global Forest Change" /></p>

<p>Although this is a global dataset, I wanted to apply it to a specific area of interest: Los Katíos National Park in Colombia. This is a site where our team is actively working, <a href="https://dlizcano.github.io/cameratrap/posts/2024-07-17-stackmodel/index.html">installing camera traps</a> to monitor wildlife. We’ve observed a recent increase in deforestation here, making it a perfect case study.</p>

<p>My goal was to use this deforestation data as a covariate in an occupancy analysis. This approach allows us to investigate the relationship between forest loss and the presence or absence of wildlife species, providing a more robust understanding of how habitat changes impact local ecosystems.</p>

<p>This also provided the perfect opportunity to test the new animation features of the <a href="https://r-tmap.github.io/tmap/">tmap package</a>.</p>

<p>Below is R the code I used to download the boundaries of a national park using the <a href="https://prioritizr.github.io/wdpar/reference/wdpar.html">wdpar package</a>. This park boundary is then used as the area of interest (AOI) for the deforestation analysis with the <a href="https://github.com/azvoleff/gfcanalysis">gfcanalysis package</a>.</p>

<h2 id="get-the-data-and-make-the-analysis">Get the Data and Make the Analysis</h2>

<p>This part download the park limit and makes the deforestation analysis.</p>

<div class="language-r highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">library</span><span class="w"> </span><span class="p">(</span><span class="n">gfcanalysis</span><span class="p">)</span><span class="w"> </span><span class="c1"># get Hansen data</span><span class="w">
</span><span class="n">library</span><span class="w"> </span><span class="p">(</span><span class="n">sf</span><span class="p">)</span><span class="w"> </span><span class="c1"># make sf maps in R</span><span class="w">
</span><span class="n">library</span><span class="w"> </span><span class="p">(</span><span class="n">wdpar</span><span class="p">)</span><span class="w"> </span><span class="c1"># get data from World Database on Protected Areas (WDPA) </span><span class="w">
</span><span class="n">library</span><span class="w"> </span><span class="p">(</span><span class="n">tidyverse</span><span class="p">)</span><span class="w"> 

</span><span class="c1"># directory to download Hansen Files</span><span class="w">
</span><span class="n">data_folder</span><span class="w"> </span><span class="o">&lt;-</span><span class="w"> </span><span class="s1">'C:/tmp/Hansen_downloads/Katios'</span><span class="w">

</span><span class="c1"># get all protected areas in Colombia</span><span class="w">
</span><span class="n">col_raw_pa_data</span><span class="w"> </span><span class="o">&lt;-</span><span class="w"> </span><span class="n">wdpa_fetch</span><span class="p">(</span><span class="w">
  </span><span class="s2">"COL"</span><span class="p">,</span><span class="w"> </span><span class="n">wait</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="kc">TRUE</span><span class="p">,</span><span class="w"> </span><span class="n">download_dir</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">data_folder</span><span class="w">
</span><span class="p">)</span><span class="w">

</span><span class="c1"># clean Colombia data</span><span class="w">
</span><span class="c1"># be patient... takes some time...</span><span class="w">
</span><span class="n">col_pa_data</span><span class="w"> </span><span class="o">&lt;-</span><span class="w"> </span><span class="n">wdpa_clean</span><span class="p">(</span><span class="n">col_raw_pa_data</span><span class="p">)</span><span class="w">
</span><span class="c1"># filter Katios National Park</span><span class="w">
</span><span class="n">Katios_NP</span><span class="w"> </span><span class="o">&lt;-</span><span class="w"> </span><span class="n">col_pa_data</span><span class="w"> </span><span class="o">%&gt;%</span><span class="w"> </span><span class="n">filter</span><span class="p">(</span><span class="n">NAME</span><span class="w"> </span><span class="o">==</span><span class="w"> </span><span class="s2">"Los Katíos"</span><span class="p">)</span><span class="w">

</span><span class="c1"># add a buffer around to get a better context</span><span class="w">
</span><span class="n">buffered_Katios_NP</span><span class="w"> </span><span class="o">&lt;-</span><span class="w"> </span><span class="n">st_buffer</span><span class="p">(</span><span class="n">Katios_NP</span><span class="p">,</span><span class="w"> </span><span class="n">dist</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">15000</span><span class="p">)</span><span class="w"> </span><span class="c1"># Buffer by 15 km </span><span class="w">

</span><span class="c1"># Area of interest --- Katios National Park sf file</span><span class="w">
</span><span class="n">aoi</span><span class="w"> </span><span class="o">&lt;-</span><span class="w"> </span><span class="n">buffered_Katios_NP</span><span class="w">

</span><span class="c1"># Calculate the google server URLs for the tiles needed to cover the AOI</span><span class="w">
</span><span class="n">tiles</span><span class="w"> </span><span class="o">&lt;-</span><span class="w"> </span><span class="n">calc_gfc_tiles</span><span class="p">(</span><span class="n">aoi</span><span class="p">)</span><span class="w">

</span><span class="c1"># Check to see if these tiles are already present locally, and download them if </span><span class="w">
</span><span class="c1"># they are not.</span><span class="w">
</span><span class="n">download_tiles</span><span class="p">(</span><span class="n">tiles</span><span class="p">,</span><span class="w"> </span><span class="n">data_folder</span><span class="p">)</span><span class="w">

</span><span class="c1"># Extract the GFC data for this AOI from the downloaded GFC tiles, mosaicing </span><span class="w">
</span><span class="c1"># multiple tiles as necessary (if needed to cover the AOI), and saving  the </span><span class="w">
</span><span class="c1"># output data to a GeoTIFF (can also save in ENVI format, Erdas format, etc.).</span><span class="w">
</span><span class="n">gfc_data</span><span class="w"> </span><span class="o">&lt;-</span><span class="w"> </span><span class="n">extract_gfc</span><span class="p">(</span><span class="n">aoi</span><span class="p">,</span><span class="w"> </span><span class="n">data_folder</span><span class="p">,</span><span class="w"> 
                        </span><span class="n">filename</span><span class="o">=</span><span class="s2">"C:/tmp/Hansen_downloads/Katios/Katios_extract.tif"</span><span class="p">,</span><span class="w">
                        </span><span class="n">overwrite</span><span class="o">=</span><span class="kc">TRUE</span><span class="p">)</span><span class="w">

</span><span class="c1">###############################################################################</span><span class="w">
</span><span class="c1"># Performing thresholding and calculate basic statistics</span><span class="w">
</span><span class="c1">###############################################################################</span><span class="w">

</span><span class="c1"># Calculate and save a thresholded version of the GFC product</span><span class="w">
</span><span class="n">gfc_thresholded</span><span class="w"> </span><span class="o">&lt;-</span><span class="w"> </span><span class="n">threshold_gfc</span><span class="p">(</span><span class="n">gfc_data</span><span class="p">,</span><span class="w"> 
                                 </span><span class="n">forest_threshold</span><span class="o">=</span><span class="m">90</span><span class="p">,</span><span class="w"> 
                                 </span><span class="n">filename</span><span class="o">=</span><span class="s2">"C:/tmp/Hansen_downloads/Katios/Katios_extract_thresholded.tif"</span><span class="p">,</span><span class="w">
                                 </span><span class="n">overwrite</span><span class="o">=</span><span class="kc">TRUE</span><span class="p">)</span><span class="w">

</span><span class="c1"># annualized layer stack of forest change</span><span class="w">
</span><span class="n">Katios_annual_stack</span><span class="w"> </span><span class="o">&lt;-</span><span class="w"> </span><span class="n">annual_stack</span><span class="p">(</span><span class="n">gfc_thresholded</span><span class="p">)</span><span class="w">

</span></code></pre></div></div>

<p>Katios_annual_stack is a raster brick from the old raster package. So in the next part we convert that object to a SpatRaster object using the <a href="https://rspatial.github.io/terra/">terra package</a> and use that SpatRaster “stack” as input for the animation.</p>

<h2 id="make-the-animation">Make the Animation</h2>

<div class="language-r highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">library</span><span class="p">(</span><span class="n">tmap</span><span class="p">)</span><span class="w">
</span><span class="n">library</span><span class="p">(</span><span class="n">tmaptools</span><span class="p">)</span><span class="w">

</span><span class="c1"># convert rasterbrick to terra</span><span class="w">
</span><span class="n">Katios_annual_stack_t</span><span class="w"> </span><span class="o">&lt;-</span><span class="w">  </span><span class="n">terra</span><span class="o">::</span><span class="n">rast</span><span class="p">(</span><span class="n">Katios_annual_stack</span><span class="p">)</span><span class="w">

</span><span class="c1"># make the map and animate</span><span class="w">
</span><span class="n">Katios_deforest</span><span class="w"> </span><span class="o">&lt;-</span><span class="w"> </span><span class="n">tm_shape</span><span class="p">(</span><span class="n">Katios_annual_stack_t</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"> 
  </span><span class="n">tm_raster</span><span class="p">(</span><span class="n">palette</span><span class="w">  </span><span class="o">=</span><span class="w"> </span><span class="nf">c</span><span class="p">(</span><span class="s2">"#008000"</span><span class="p">,</span><span class="w"> </span><span class="s2">"#ffa500"</span><span class="p">,</span><span class="w"> </span><span class="s2">"#ff0000"</span><span class="p">,</span><span class="w"> 
                    </span><span class="s2">"#0000ff"</span><span class="p">,</span><span class="w"> </span><span class="s2">"#ff00ff"</span><span class="p">,</span><span class="w"> </span><span class="s2">"#c0c0c0"</span><span class="p">,</span><span class="w"> </span><span class="s2">"#101010"</span><span class="p">),</span><span class="w">
            </span><span class="n">style</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"cat"</span><span class="p">,</span><span class="w">
            </span><span class="n">labels</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nf">c</span><span class="p">(</span><span class="s2">"Forest"</span><span class="p">,</span><span class="w"> </span><span class="s2">"Non-forest"</span><span class="p">,</span><span class="w"> 
                       </span><span class="s2">"Forest loss"</span><span class="p">,</span><span class="w"> </span><span class="s2">"Forest gain"</span><span class="p">,</span><span class="w"> </span><span class="s2">"Loss and gain"</span><span class="p">,</span><span class="w"> </span><span class="s2">"Water"</span><span class="p">,</span><span class="w"> 
                       </span><span class="s2">"No data"</span><span class="p">))</span><span class="w"> </span><span class="o">+</span><span class="w">
  </span><span class="n">tm_animate</span><span class="p">(</span><span class="n">fps</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">1</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w">
  </span><span class="n">tm_shape</span><span class="p">(</span><span class="n">Katios_NP</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w">
  </span><span class="n">tm_lines</span><span class="p">(</span><span class="w">
    </span><span class="c1">#lwd = "strokelwd", </span><span class="w">
    </span><span class="n">lwd.scale</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">tm_scale_asis</span><span class="p">(</span><span class="n">values.scale</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="m">.5</span><span class="p">),</span><span class="w">
    </span><span class="n">col</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"black"</span><span class="p">)</span><span class="w"> 

</span><span class="c1"># save animation</span><span class="w">
</span><span class="n">tmap_animation</span><span class="p">(</span><span class="n">Katios_deforest</span><span class="p">,</span><span class="w"> </span><span class="s2">"C:/tmp/Hansen_downloads/Katios/Katios_deforest_1fps.mp4"</span><span class="p">)</span><span class="w">

</span></code></pre></div></div>
<p>We can save the animation as .gif as well.</p>

<h2 id="here-the-animation-as-a-video">Here the Animation as a Video</h2>

<!-- Courtesy of embedresponsively.com -->

<div class="responsive-video-container">
    <iframe src="https://player.vimeo.com/video/1117592797?dnt=true" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>
  </div>

<blockquote class="notice--warning">
  <p>It’s disheartening to see the rapid rise in deforestation since 2015, especially the dramatic explosion of forest loss within Los Katios National Park in 2021. This trend is a clear and alarming threat to the park’s biodiversity and ecological integrity.</p>
</blockquote>

<p>
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.
</p>]]></content><author><name>Diego J. Lizcano</name></author><category term="[&quot;English&quot;]" /><category term="R" /><category term="map" /><category term="Colombia" /><category term="Deforestation" /><summary type="html"><![CDATA[Deforestation Data]]></summary></entry><entry><title type="html">Monitoreando aves con BirdNET-Pi</title><link href="https://dlizcano.github.io//spanish/Monitoreando-aves-con-Birdnet/" rel="alternate" type="text/html" title="Monitoreando aves con BirdNET-Pi" /><published>2025-06-15T00:00:00+00:00</published><updated>2025-06-15T18:05:25+00:00</updated><id>https://dlizcano.github.io//spanish/Monitoreando-aves-con-Birdnet</id><content type="html" xml:base="https://dlizcano.github.io//spanish/Monitoreando-aves-con-Birdnet/"><![CDATA[<h2 id="monitoreo-acústico-de-aves">Monitoreo acústico de aves</h2>

<p>Al final de la pandemia en 2023, y como parte de mi entusiasmo del proceso de aprendizaje en métodos de monitoreo acústico que surgió con el proyecto <a href="https://monitoreo-acustico.netlify.app/es/">Monitoreo de Biodiversidad en destinos de turismo de naturaleza</a> de <a href="https://www.awake.travel/">Awake Travel</a>, me embarque en el proyecto de construir mi propio sistema de monitoreo acústico de aves con un BirdNET-Pi, siguiendo el tutorial de Core Electronics.</p>

<!-- Courtesy of embedresponsively.com -->

<div class="responsive-video-container">
    <iframe src="https://www.youtube-nocookie.com/embed/IM-F4sJ-5rc" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>
  </div>

<h2 id="el-aparato">El aparato</h2>

<p>Aprovechando una de las promociones de sigma electronica, adquiri un <a href="https://www.sigmaelectronica.net/producto/rpi3-a/">Raspberry Pi 3 Modelo A+</a> a muy buen precio, junto con un <a href="https://www.sigmaelectronica.net/producto/adafr-3367/">microfono USB</a>.</p>

<p>Siguiendo el tutorial, el montaje y la instalación del BirdNET-Pi fue muy sencilla!</p>

<p><img src="https://dlizcano.github.io/images/birdnetpi/BirdNetPi_setup.jpg" alt="image" /></p>

<p>En un comienzo lo instale en la ventana de mi apartamento, pero muy pronto me di cuenta que solo estaba registrando a la gente, los perros y los carros, ya que la ventana daba a la parte interna y el parqueadero de los edificios. Así que decidí moverlo a la ventana del apartamento de mis suegros, que da hacia la parte exterior de los mismos edificios en Cajica, donde hay algunos potreros con vacas y cercas de pinos. Con esta nueva localización el dispositivo quedo registrado como la <a href="https://t.co/vKG0YMxY6K">estación 754 en birdweather</a> que recientemente movi a una nuevo sitio cercano registrado como la <a href="https://app.birdweather.com/stations/18147">estación 18147 en birdweather</a>.</p>

<p>Junto con la instalación inicial del BirdNET-Pi me di a la tarea de crear una cuenta en twitter llamada <a href="https://x.com/BirdNetPi_Cajic">BirdNET Pi Cajica</a>, para registrar las detecciones de forma automática, pero desafortunadamente, con la compra de twitter y su conversión a X, las políticas de las API para crear cuentas automatizadas cambiaron y la cuenta quedo desactivada luego de unos pocos meses de creada.</p>

<p>Teniendo en cuenta que los datos habían sido almacenados por birdweather me di a la tarea de recuperarlos usando las <a href="https://app.birdweather.com/api/">API de birdweather</a>. Con esto he aprendido un poco sobre APIs y he logrado recuper los registros más comunes con un código muy sencillo. Acá se muestran los registros de las 15 especies más comunes con su nombre en español.</p>

<div class="language-r highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="c1">### R API to birdweather</span><span class="w">
</span><span class="n">library</span><span class="p">(</span><span class="n">httr</span><span class="p">)</span><span class="w">
</span><span class="n">library</span><span class="p">(</span><span class="n">jsonlite</span><span class="p">)</span><span class="w">
</span><span class="n">library</span><span class="p">(</span><span class="n">tidyverse</span><span class="p">)</span><span class="w">
</span><span class="n">library</span><span class="p">(</span><span class="n">kableExtra</span><span class="p">)</span><span class="w">

</span><span class="c1"># 1st request. Ask who is</span><span class="w">
</span><span class="n">res</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">GET</span><span class="p">(</span><span class="s2">"https://app.birdweather.com/api/v1/stations/{API-KEYword-del-dispositivo}/species?period=all&amp;locale=es"</span><span class="p">)</span><span class="w">
</span><span class="n">res</span><span class="w"> </span><span class="c1"># to see 200 is success </span><span class="w">

</span><span class="c1"># from Jsaon convert to list</span><span class="w">
</span><span class="n">data</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fromJSON</span><span class="p">(</span><span class="n">rawToChar</span><span class="p">(</span><span class="n">res</span><span class="o">$</span><span class="n">content</span><span class="p">))</span><span class="w">
</span><span class="nf">names</span><span class="p">(</span><span class="n">data</span><span class="p">)</span><span class="w">

</span><span class="n">View</span><span class="p">(</span><span class="n">data</span><span class="o">$</span><span class="n">species</span><span class="p">)</span><span class="w">
</span><span class="n">names</span><span class="w"> </span><span class="p">(</span><span class="n">data</span><span class="o">$</span><span class="n">species</span><span class="p">)</span><span class="w">

</span><span class="c1"># make table with thumb</span><span class="w">
</span><span class="n">tbl_img</span><span class="w"> </span><span class="o">&lt;-</span><span class="w"> </span><span class="n">data.frame</span><span class="p">(</span><span class="w">
  </span><span class="n">Common_name</span><span class="w"> </span><span class="o">=</span><span class="nf">c</span><span class="p">(</span><span class="n">data</span><span class="o">$</span><span class="n">species</span><span class="o">$</span><span class="n">commonName</span><span class="p">[</span><span class="m">1</span><span class="o">:</span><span class="m">15</span><span class="p">]),</span><span class="w">
  </span><span class="n">Scientific_name</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nf">c</span><span class="p">(</span><span class="n">data</span><span class="o">$</span><span class="n">species</span><span class="o">$</span><span class="n">scientificName</span><span class="p">[</span><span class="m">1</span><span class="o">:</span><span class="m">15</span><span class="p">]),</span><span class="w">
  </span><span class="n">Image</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">""</span><span class="w">
</span><span class="p">)</span><span class="w">

</span><span class="c1"># make a table</span><span class="w">
</span><span class="n">tbl_img</span><span class="w">  </span><span class="o">%&gt;%</span><span class="w"> </span><span class="n">kbl</span><span class="p">(</span><span class="n">booktabs</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">T</span><span class="p">)</span><span class="w"> </span><span class="o">%&gt;%</span><span class="w">
  </span><span class="n">kable_paper</span><span class="p">(</span><span class="n">full_width</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nb">F</span><span class="p">)</span><span class="w"> </span><span class="o">%&gt;%</span><span class="w">
  </span><span class="n">column_spec</span><span class="p">(</span><span class="m">1</span><span class="p">,</span><span class="w"> </span><span class="n">color</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"white"</span><span class="p">,</span><span class="n">bold</span><span class="o">=</span><span class="nb">T</span><span class="p">,</span><span class="w">
              </span><span class="n">background</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nf">c</span><span class="p">(</span><span class="n">data</span><span class="o">$</span><span class="n">species</span><span class="o">$</span><span class="n">color</span><span class="p">[</span><span class="m">1</span><span class="o">:</span><span class="m">15</span><span class="p">]))</span><span class="w"> </span><span class="o">%&gt;%</span><span class="w"> 
  </span><span class="n">column_spec</span><span class="p">(</span><span class="m">2</span><span class="p">,</span><span class="w"> </span><span class="c1">#color = "white",</span><span class="w">
              </span><span class="n">italic</span><span class="w"> </span><span class="o">=</span><span class="nb">T</span><span class="p">,</span><span class="w">
              </span><span class="n">link</span><span class="o">=</span><span class="n">data</span><span class="o">$</span><span class="n">species</span><span class="o">$</span><span class="n">imageUrl</span><span class="p">[</span><span class="m">1</span><span class="o">:</span><span class="m">15</span><span class="p">])</span><span class="w"> </span><span class="o">%&gt;%</span><span class="w"> 
  </span><span class="n">column_spec</span><span class="p">(</span><span class="m">3</span><span class="p">,</span><span class="w"> </span><span class="n">image</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">spec_image</span><span class="p">(</span><span class="w">
    </span><span class="nf">c</span><span class="p">(</span><span class="n">data</span><span class="o">$</span><span class="n">species</span><span class="o">$</span><span class="n">thumbnailUrl</span><span class="p">[</span><span class="m">1</span><span class="o">:</span><span class="m">15</span><span class="p">]),</span><span class="w"> </span><span class="m">100</span><span class="p">,</span><span class="w"> </span><span class="m">100</span><span class="p">))</span><span class="w"> 


</span></code></pre></div></div>

<iframe id="inlineFrameExample" title="Inline Frame Example" width="500" height="400" src="/content/BirdNetPi_Cajic.html">
</iframe>

<h3 id="extrayendo-mas-detalles-de-una-especie">Extrayendo mas detalles de una especie</h3>

<p>Para obtener más datos de una especie se puede usar el <a href="https://app.birdweather.com/api/v1/index.html#detections-detection-get">Get detections</a> que acoplado a los paquetes de R httr y jsonlite, hacen que el manejo de la API dsde R sea muy fácil.</p>

<p>Para este ejemplo extraeremos las detecciones del mes de Marzo del 2023 y usando la magia del paquete camtrapR vamos a obtener una gráfica del patrón de actividad de ese mes.</p>

<div class="language-r highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="n">library</span><span class="p">(</span><span class="n">httr</span><span class="p">)</span><span class="w">
</span><span class="n">library</span><span class="p">(</span><span class="n">jsonlite</span><span class="p">)</span><span class="w">
</span><span class="n">library</span><span class="p">(</span><span class="n">tidyverse</span><span class="p">)</span><span class="w">
</span><span class="n">library</span><span class="p">(</span><span class="n">camtrapR</span><span class="p">)</span><span class="w">

</span><span class="c1">#  get turdus detections and select a few columns</span><span class="w">
</span><span class="n">turdus_mar</span><span class="w"> </span><span class="o">&lt;-</span><span class="w"> </span><span class="n">GET</span><span class="p">(</span><span class="s2">"https://app.birdweather.com/api/v1/stations/{API-KEYword-del-dispositivo}/detections?from=2023-03-01&amp;to=2023-03-31&amp;speciesId=422&amp;locale=es"</span><span class="p">)</span><span class="w">
</span><span class="n">turdus_mar_data</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">fromJSON</span><span class="p">(</span><span class="n">rawToChar</span><span class="p">(</span><span class="n">turdus_mar</span><span class="o">$</span><span class="n">content</span><span class="p">))</span><span class="w">
</span><span class="n">turdus_mar_detections</span><span class="w"> </span><span class="o">&lt;-</span><span class="w"> </span><span class="n">as.data.frame</span><span class="p">(</span><span class="n">turdus_mar_data</span><span class="o">$</span><span class="n">detections</span><span class="p">)</span><span class="o">|&gt;</span><span class="w"> 
  </span><span class="n">dplyr</span><span class="o">::</span><span class="n">select</span><span class="p">(</span><span class="nf">c</span><span class="p">(</span><span class="n">id</span><span class="p">,</span><span class="w"> </span><span class="n">timestamp</span><span class="p">,</span><span class="w"> </span><span class="n">confidence</span><span class="p">,</span><span class="w"> </span><span class="n">probability</span><span class="p">,</span><span class="w"> </span><span class="n">score</span><span class="p">,</span><span class="w"> </span><span class="n">certainty</span><span class="p">))</span><span class="w"> </span><span class="o">|&gt;</span><span class="w"> 
   </span><span class="n">mutate</span><span class="p">(</span><span class="n">Species</span><span class="o">=</span><span class="s2">"Turdus fuscater"</span><span class="p">)</span><span class="w">

</span><span class="c1"># fix datetime stamp</span><span class="w">
</span><span class="n">turdus_mar_detections</span><span class="o">$</span><span class="n">DateTime</span><span class="w"> </span><span class="o">&lt;-</span><span class="w"> </span><span class="n">str_replace</span><span class="p">(</span><span class="n">turdus_mar_detections</span><span class="o">$</span><span class="n">timestamp</span><span class="p">,</span><span class="w"> </span><span class="s2">"T"</span><span class="p">,</span><span class="w"> </span><span class="s2">" "</span><span class="p">)</span><span class="w"> </span><span class="o">|&gt;</span><span class="w"> 
  </span><span class="n">str_sub</span><span class="p">(</span><span class="n">start</span><span class="o">=</span><span class="m">1</span><span class="p">,</span><span class="n">end</span><span class="o">=</span><span class="m">19</span><span class="p">)</span><span class="w"> </span><span class="o">|&gt;</span><span class="w"> </span><span class="n">strptime</span><span class="w"> </span><span class="p">(</span><span class="s2">"%Y-%m-%d %H:%M:%S"</span><span class="p">)</span><span class="w">

</span><span class="c1">########### Activity Plot</span><span class="w">
</span><span class="n">activityDensity</span><span class="w"> </span><span class="p">(</span><span class="n">recordTable</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">turdus_mar_detections</span><span class="p">,</span><span class="w">
                 </span><span class="n">species</span><span class="w">     </span><span class="o">=</span><span class="w"> </span><span class="s2">"Turdus fuscater"</span><span class="p">,</span><span class="w">
                 </span><span class="n">recordDateTimeCol</span><span class="o">=</span><span class="s2">"DateTime"</span><span class="p">)</span><span class="w"> 
</span><span class="n">rect</span><span class="p">(</span><span class="m">0</span><span class="p">,</span><span class="w"> </span><span class="m">0</span><span class="p">,</span><span class="w"> </span><span class="m">6</span><span class="p">,</span><span class="w"> </span><span class="m">0.9</span><span class="p">,</span><span class="w"> </span><span class="n">col</span><span class="o">=</span><span class="w"> </span><span class="n">rgb</span><span class="p">(</span><span class="m">0.211</span><span class="p">,</span><span class="m">0.211</span><span class="p">,</span><span class="m">0.211</span><span class="p">,</span><span class="w"> </span><span class="n">alpha</span><span class="o">=</span><span class="m">0.2</span><span class="p">),</span><span class="w"> </span><span class="n">border</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"transparent"</span><span class="p">)</span><span class="w">
</span><span class="n">rect</span><span class="p">(</span><span class="m">18</span><span class="p">,</span><span class="w"> </span><span class="m">0</span><span class="p">,</span><span class="w"> </span><span class="m">24</span><span class="p">,</span><span class="w"> </span><span class="m">0.9</span><span class="p">,</span><span class="w"> </span><span class="n">col</span><span class="o">=</span><span class="w"> </span><span class="n">rgb</span><span class="p">(</span><span class="m">0.211</span><span class="p">,</span><span class="m">0.211</span><span class="p">,</span><span class="m">0.211</span><span class="p">,</span><span class="w"> </span><span class="n">alpha</span><span class="o">=</span><span class="m">0.2</span><span class="p">),</span><span class="w"> </span><span class="n">border</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s2">"transparent"</span><span class="p">)</span><span class="w">

</span></code></pre></div></div>

<p><img src="https://dlizcano.github.io/images/birdnetpi/TurdusActivity.png" alt="Patrón de Actividad de Turdus fuscater" /></p>

<p>Es una lástima que las detecciones tengan un límite de 100 registros. Tal vez para hacerlo más detallado habría que bajar los datos diariamente.</p>

<p>El entusiasmo con el monitoreo acústico no ha parado. Recientemente instale un <a href="https://app.birdweather.com/stations/2595">dispositivo igualito en la casa de mis padres en Cúcuta</a>. Pero esta vez usando el nuevo <a href="https://github.com/tphakala/birdnet-go">código de BirdNet implementado en GO</a>. Si bien tiene menos “features” y no viene con apraise, me parece que funciona bastante bien, siendo ligero y eficiente.</p>

<p><a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p>]]></content><author><name>Diego J. Lizcano</name></author><category term="Spanish" /><category term="acustica" /><category term="BirdNET-Pi" /><category term="aves" /><category term="monitoreo" /><category term="R" /><summary type="html"><![CDATA[Monitoreo acústico de aves]]></summary></entry><entry><title type="html">Starting a New Camera Trap Blog</title><link href="https://dlizcano.github.io//english/Starting-a-camera-trap-blog/" rel="alternate" type="text/html" title="Starting a New Camera Trap Blog" /><published>2024-08-15T00:00:00+00:00</published><updated>2024-08-15T18:05:25+00:00</updated><id>https://dlizcano.github.io//english/Starting-a-camera-trap-blog</id><content type="html" xml:base="https://dlizcano.github.io//english/Starting-a-camera-trap-blog/"><![CDATA[<h2 id="a-blog-for-the-camera-trapper-data-analyst">A Blog for the camera trapper data analyst</h2>

<p>Using the power of Quarto and R <a href="https://quarto.org/">Quarto and R</a>, I’ve embarked on a new project: a blog for the Diego of the future (and anyone else!) exploring the exciting possibilities of camera trap data analysis.</p>

<p><a href="https://dlizcano.github.io/cameratrap/"><img src="https://dlizcano.github.io/images/cameratrapblog/cameratrapblog.jpg" alt="Image name" class="full" /></a></p>

<h2 id="content">Content</h2>

<p>This blog will help extract insights from camera trap data and provide additional resources for researchers and enthusiasts alike.</p>

<p><img src="https://dlizcano.github.io/images/cameratrapblog/cameratrap.jpg" alt="image" /></p>

<ul>
  <li>I will give you some tips to improve data organization and accessibility, as well as guides for analyzing camera trap data.</li>
  <li>I will discuss techniques for removing errors, inconsistencies, or duplicates, emphasize the importance of metadata for understanding data context and provenance.</li>
  <li>Also discuss techniques for predicting species distribution based on environmental factors, discussions and tutorials on how to analyze diurnal or seasonal activity patterns.</li>
  <li>Introduce various R packages, and statistical models for analyzing camera trap data.</li>
  <li>I will try to discuss common challenges encountered in camera trap data analysis and potential solutions.</li>
</ul>

<div class="feature__wrapper">

  
    <div class="feature__item">
      <div class="archive__item">
        
          <div class="archive__item-teaser">
            <img src="https://dlizcano.github.io/images/cameratrapblog/people.jpg" alt="" />
            
          </div>
        

        <div class="archive__item-body">
          

          

          
        </div>
      </div>
    </div>
  
    <div class="feature__item">
      <div class="archive__item">
        
          <div class="archive__item-teaser">
            <img src="https://dlizcano.github.io/images/cameratrapblog/kids.jpg" alt="" />
            
          </div>
        

        <div class="archive__item-body">
          

          

          
        </div>
      </div>
    </div>
  
    <div class="feature__item">
      <div class="archive__item">
        
          <div class="archive__item-teaser">
            <img src="https://dlizcano.github.io/images/cameratrapblog/puma.JPG" alt="" />
            
          </div>
        

        <div class="archive__item-body">
          

          

          
        </div>
      </div>
    </div>
  

</div>

<h2 id="why-quarto-and-r">Why Quarto and R?</h2>

<p><a href="https://quarto.org/">Quarto and R</a> are amazing tools for content creation, and both fit very well in my most recent workflow. Thi new blog is organized with thematic posts giving a small introduction and providing a step-by-step code in R.</p>

<h2 id="language">Language</h2>

<p>The new blog is in English, however using the magic of google chrome you can <a href="https://www.youtube.com/watch?app=desktop&amp;v=0ppXHz2pk3A">translate it to Spanish</a> or to any other language.</p>

<h2 id="next-steps">Next steps</h2>

<p>This new blog is the first step in a planned evolution for my web content creation. I’m excited to explore the new possibilities that Quarto and R offer for web creation. I hope you enjoy the new content and please stay tuned for more exciting developments in the near future.</p>

<p><a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p>]]></content><author><name>Diego J. Lizcano</name></author><category term="English" /><category term="post" /><category term="blog" /><category term="github" /><category term="cameratrap" /><summary type="html"><![CDATA[A Blog for the camera trapper data analyst]]></summary></entry><entry><title type="html">10 years posting in my blog</title><link href="https://dlizcano.github.io//english/Ten-years-in-github/" rel="alternate" type="text/html" title="10 years posting in my blog" /><published>2024-05-16T00:00:00+00:00</published><updated>2024-05-16T18:05:25+00:00</updated><id>https://dlizcano.github.io//english/Ten-years-in-github</id><content type="html" xml:base="https://dlizcano.github.io//english/Ten-years-in-github/"><![CDATA[<h2 id="not-so-new-in-github">Not so new in GitHub</h2>

<p><a href="https://github.com/dlizcano">GitHub</a> has become my central platform for everything code-related. From development and sharing to version control and archiving, it’s my go-to tool. It even extends to web development and report management. Recently, I hit a milestone – over 100 repositories! While many are forks or clones of others’ work, it showcases the collaborative power of the open-source community that GitHub fosters. I’m incredibly grateful for this platform after a decade of using it!</p>

<p><img src="https://dlizcano.github.io/images/github.jpg" alt="image" /></p>

<h2 id="weppage-update">Weppage update</h2>

<p>After a whirlwind ten years, I’ve finally given my webpage a much-needed makeover! While I initially considered making a significant leap to <a href="https://quarto.org/">Quarto and R</a> for content creation, I ultimately decided to stay true to the platform that’s served me so well: the user-friendly (more less) <a href="https://github.com/mmistakes/minimal-mistakes">Minimal Mistakes</a> framework. Its familiarity and ease of use won me over once again.</p>

<h3 id="the-big-change">The big change</h3>

<p>The update involved a major shift in the comment section. I’ve transitioned from Disqus to Facebook for comments. This allows for a more streamlined and potentially more engaging user experience. However, there’s a trade-off: any comments previously made on the pages themselves are no longer visible. Thankfully, they’re not entirely lost – you can still access them on the <a href="https://disqus.com/by/dlizcano/">Disqus platform</a> if you wish. I am going to miss the coments to the <a href="https://disqus.com/home/discussion/dlizcano/mammal_collection_in_colombia/">Mammals of Colombia post</a> and The <a href="https://disqus.com/home/discussion/dlizcano/visibilidad_de_la_investigacion_en_la_uleam_ecuador/">ULEAM post</a>. This decision wasn’t easy, but the recent changes to Disqus’s icons and reactions just weren’t aligning with the overall aesthetic I envisioned for the website. Perhaps in the future I can return to Disqus. Let see what will happen using facebook.</p>

<h2 id="next-steps">Next steps</h2>

<p>This update is just the first step in a planned evolution for my web content creation. I’m excited to explore the new possibilities that Quarto and R offer for web creation in the near future. Perhaps in the next iteration, I can marry the user-friendliness of Minimal Mistakes with the power of these data science tools. In the meantime, I hope you enjoy the fresh look and feel of the site! Stay tuned for more exciting developments in the near future.</p>

<p><a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p>]]></content><author><name>Diego J. Lizcano</name></author><category term="English" /><category term="update" /><category term="post" /><category term="blog" /><category term="github" /><summary type="html"><![CDATA[Not so new in GitHub]]></summary></entry><entry><title type="html">Resumen del 2023</title><link href="https://dlizcano.github.io//spanish/Resumen-2023/" rel="alternate" type="text/html" title="Resumen del 2023" /><published>2023-11-15T00:00:00+00:00</published><updated>2023-11-15T05:24:36+00:00</updated><id>https://dlizcano.github.io//spanish/Resumen-2023</id><content type="html" xml:base="https://dlizcano.github.io//spanish/Resumen-2023/"><![CDATA[<h2 id="un-resumen-del-año-en-pocas-palabras">Un resumen del año en pocas palabras</h2>

<h3 id="cursos">Cursos</h3>

<p>El curso de modelos de ocupación, en su version corta, se movio a la universidad de los Andes en Bogota gracias a la amable invitacion de la profesora Aida Otalora-Ardila <a href="https://dlizcano.github.io/Uniandes/">https://dlizcano.github.io/Uniandes/</a>.</p>

<h3 id="monitoreo-de-biodiversidad-y-turismo-de-naturaleza">Monitoreo de biodiversidad y turismo de naturaleza</h3>

<p>En el 2023 se cerró el proyecto de monitoreo de biodiversidad con Awake en el cual tuve la oportunidad de viajar a lugares increíbles en Putumayo, Cauca, Choco y Casanare para hacer monitoreo acústico de biodiversidad y fototrampeo.</p>

<!-- Courtesy of embedresponsively.com -->

<div class="responsive-video-container">
    <iframe src="https://www.youtube-nocookie.com/embed/0RfGS_qwgWc" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>
  </div>

<p>Posteriormente tuve la uportunidad de vincularme al programa de <a href="https://sway.cloud.microsoft/kJyJEvSgf2eaLIjC?">Destino Naturaleza de USAID</a> en el cual pude aprender más de la realidad del turismo de naturaleza en Colombia y su fuerte conexion con la conservación de la biodiversidad. Conoci personas maravillosas, hubo muy buenos viajes y fue una estupenda experiencia.</p>

<h3 id="por-otra-parte">Por otra parte</h3>

<p>Gracias a la invitacion de Audubon Panama tuve la oportunidad de explorar con mucha profundidad mas aspectos del monitoreo acustico usando inteligencia artificial, esta vez en los <a href="https://acousticpanama.netlify.app/about/">manglares de la bahía de Parita en Panama</a>.  Pronto codigo, analisis y resultados…</p>

<figure>
  <a href="/images/ParitaPanama.jpg"><img src="/images/ParitaPanama.jpg" /></a>
</figure>

<p>   <br />
<br />
</p>

<p><a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p>]]></content><author><name>Diego J. Lizcano</name></author><category term="Spanish" /><category term="work" /><category term="blog" /><summary type="html"><![CDATA[Un resumen del año en pocas palabras]]></summary></entry><entry><title type="html">Luces, camara acción II</title><link href="https://dlizcano.github.io//spanish/Trampas-Camara/" rel="alternate" type="text/html" title="Luces, camara acción II" /><published>2022-11-15T00:00:00+00:00</published><updated>2022-10-15T05:24:36+00:00</updated><id>https://dlizcano.github.io//spanish/Trampas-Camara</id><content type="html" xml:base="https://dlizcano.github.io//spanish/Trampas-Camara/"><![CDATA[<h2 id="videos-de-awakeu-fototrampeo">Videos de AwakeU (fototrampeo)</h2>

<h3 id="trampas-camara">Trampas Camara</h3>

<p>Como parte de mi trabajo en Awake Travel realizamos una serie de videos sobre trampas camara que hacen parte del curso de fototrampeo la plataforma de <a href="https://u.awake.travel/">AwakeU</a>.</p>

<p>Fototrampeo para turismo de naturaleza</p>

<!-- Courtesy of embedresponsively.com -->

<div class="responsive-video-container">
    <iframe src="https://player.vimeo.com/video/812273146?dnt=true" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>
  </div>

<p>Cuantas camaras debo usar?</p>

<!-- Courtesy of embedresponsively.com -->

<div class="responsive-video-container">
    <iframe src="https://player.vimeo.com/video/812273208?dnt=true" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>
  </div>

<p>Como instalar las Camaras?</p>

<!-- Courtesy of embedresponsively.com -->

<div class="responsive-video-container">
    <iframe src="https://player.vimeo.com/video/812273465?dnt=true" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>
  </div>

<p>Cuanto tiempo debo dejar las camaras activas?</p>

<!-- Courtesy of embedresponsively.com -->

<div class="responsive-video-container">
    <iframe src="https://player.vimeo.com/video/812273329?dnt=true" frameborder="0" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen=""></iframe>
  </div>

<blockquote>
  <p>Que gran diferencia entre el primer video de la serie de acústica y el ultimo de la de fototrampeo!</p>
</blockquote>

<p>   <br />
<br />
</p>

<p><a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.</p>]]></content><author><name>Diego J. Lizcano</name></author><category term="Spanish" /><category term="blog" /><category term="curso" /><category term="video" /><category term="Cameratrap" /><summary type="html"><![CDATA[Videos de AwakeU (fototrampeo)]]></summary></entry></feed>