• Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
MagicMirror Forum
  • Recent
  • Tags
  • Unsolved
  • Solved
  • MagicMirror² Repository
  • Documentation
  • 3rd-Party-Modules
  • Donate
  • Discord
  • Register
  • Login
A New Chapter for MagicMirror: The Community Takes the Lead
Read the statement by Michael Teeuw here.

SabreDAV / CalDAV - not showing appointments

Scheduled Pinned Locked Moved Troubleshooting
2 Posts 1 Posters 1.9k Views 1 Watching
Loading More Posts
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • G Offline
    gitcsi
    last edited by gitcsi Jan 11, 2018, 5:25 PM Jan 11, 2018, 5:22 PM

    Hi guys,

    recently started my first MM project- to make it short; it’s working like a charm (even on first try).

    I’m running a private Nextcloud installation (for those who don’t know it; it’s a private cloud solution that’s utilizing Sabre/DAV as CalDAV-server).

    I want to show appointments of a specific (user-)calendar and found this MM-thread. Reading through the comments, I came up with the following URL for config.js (please note that I’m using a calendar that I made public):

    https://[LOCALIP]/remote.php/dav/public-calendars/[PUBLICTOKEN]?export&start=1515687989&componentType=VEVENT

    If I open that URL in a browser (even if I’m not logged in -> public calendar), I get a well-formed .ICS-file.

    Header;
    BEGIN:VCALENDAR
    VERSION:2.0
    CALSCALE:GREGORIAN
    PRODID:-//SabreDAV//SabreDAV//EN

    As this didn’t work I also tried the “private” URL and provided user/pass (= app-token in that specific case) in the config.js!

    Unfortunately both approaches lead to the same result; I can see the calendar module, but it seems it’s stuck in an endless-loop trying to fetch the calendar entris.

    SSH-ing in + [pm2 logs] doesn’t show an error, but an output that a new calendar-fetcher for the specific given URL has been created.

    Many thanks in advance for your time!

    1 Reply Last reply Reply Quote 0
    • G Offline
      gitcsi
      last edited by gitcsi Jan 13, 2018, 2:18 PM Jan 13, 2018, 2:11 PM

      Hi guys,
      I implemented a workaround for this, which I wanted to share (just in case someone else faces the same problems).

      I tried almost everything to get this thing running with the link (the direct link to the calendar didn’t work, but if I put the .ics file to a readable directory everything is fine).

      The interesting thing is; even if I CURL’ that Nextcloud/Owncloud link, it shows me a well-formed calendar structure (so I can safely say that it hasn’t to do anything with user/pass combination, nor the fact that I’m using TFA (that’s why Nextcloud/Owncloud is providing app-PINs).

      So, to get that thing working (as mentioned earlier by using a workaround), you need 2 things; a shell-script and a cronjob.

      1. A shell-script downloads the .ics given by the export-URL of Nextcloud/Owncloud and stores it in a directory which has to be accessible by your MM distribution.

      The timestamp variable inherits the current UNIX timestamp in order to only retrieve calendar entries that are (right now or) in the future to keep the file-size small and MM’s calendar-fetcher performant. Please note that –http-user is defined without [ " ] and –http-password is defined with [ " ] - that’s no typo! If you’re using self-signed certificates, ensure that you’re using –no-check-certificate in order to avoid issues with certificate validation by WGET module.

      • SSH’ in and type cd /usr/local/bin
      • create a new shell-script with your desired editor by nano YOUR_SHELLSCRIPT_NAME.sh
      • save that file after putting below code into it
      • make it executable with chmod +x YOUR_SHELLSCRIPT_NAME.sh
      • if you like, give it a first try :)
      #!/bin/bash
      
      timestamp=$(date +%s)
      
      wget --no-check-certificate --output-document="YOUR_READABLE_DIRECTORY/YOUR_DESIRED_FILENAME.ics" --auth-no-challenge --http-user=YOUR_NEXTCLOUD_USER --http-password="YOUR_APP_PIN" "https://YOUR_NEXTCLOUD_IP/remote.php/dav/calendars/YOUR_NEXTCLOUD_USER/YOUR_NEXTCLOUDCALENDAR_NAME?export&start=$timestamp&componentType=VEVENT"
      
      1. I decided to run that shell-script every 30 minutes so my MM calendar display is updated twice per hour.

      To do so, type crontab -e, add the following at the bottom and save;

      # NEXTCLOUD Calendar Export
      0,30 * * * * /usr/local/bin/YOUR_SHELLSCRIPT_NAME.sh
      

      Of course you can use any cron you like!

      1 Reply Last reply Reply Quote 1
      • 1 / 1
      1 / 1
      • First post
        1/2
        Last post
      Enjoying MagicMirror? Please consider a donation!
      MagicMirror created by Michael Teeuw.
      Forum managed by Sam, technical setup by Karsten.
      This forum is using NodeBB as its core | Contributors
      Contact | Privacy Policy