[Custom Integration] Rental Control - for AirBnB, VRBO, etc

Could be, I don’t use it, but it’s very possible it broke something. After you uninstalled it, did you restart your HA instance?

Yeah I’ve fully hardware rebooted, do I need to install Let’s Encrypt maybe?

No LE should not be coming into play here. Your issue looks like you’ve got some sort of man-in-the-middle causing issues on your system. This is completely outside of anything that I can help you specifically troubleshoot as it isn’t with the RC integration itself, but something more fundamental to your HA system.

Okay, still thank you so much for all your help! I think I know more about where to begin tackling this

Hi Andrew! I managed to fix it - turns out it was a content blocker from my ISP. I am running 114 devices with Rental Control! If you could have some kind of donation link, I’d love to appreciate your hard work on this :slight_smile:

I have come across a bit of a strange bug however. I have someone who booked one night and then decided to book another night the next night. They both seem to be fighting over the same Keymaster code, and it keeps flipping between the two, and it’s resulting in the code being added and removed in perpetuity. How is this best fixed?

I’ve had this issue, I had to extend the date of the original reservation, then manually change the code of the second reservation.

Unfortunately with my channel manager I can’t edit bookings made from other platforms, but yes that’s what I would do too

Umm… wow. That’s all I can say to that! As to a donation link, just support Nabu Casa. That’s my ask. RC is a pet project of mine mostly because I have 7 Airbnb listings and needed something myself :wink:

On this booking issue, are the two bookings overlapping for check-in / check-out?

I’ve had a few guests do similar things, though more like they decided to change rooms at my house where I have 4 guest rooms and what I’ve always done in that case is set the expiring booking to end 1 minute before the next one begins and there is a 1 minute gap where their code doesn’t work anywhere.

1 Like

Thinking about this a little more. Given the way the code generation works, this is likely to only happen if you’re doing the last 4 digits of the phone number. You could forcibly override one of the codes to be a different one. RC will honor an overridden door code.

Ah okay, I’m subscribed to five instances of Nabu Casa Cloud because yes I also do want to support them! Home Assistant is so awesome, smart homes were just so useless before I discovered HA.

The two bookings do not have to overlap for checkin, as I said they are actually trying to take control of the same slot, so changing the code doesn’t make a difference, as it will be overwritten by the other booking, and it will alternate.

I guess there must be some kind of bug where the identifier is the guest name, and therefore they get assigned to the same slot?

I can only assume that this isn’t an Airbnb if the identifier is coming back non-unique. In cases where the event subject is the exact same, I could definitely see this being a potential issue. Not something I’ve seen before.

Two different guests, same event identifier?

Yup, this is using Host Tools. The same guest, booked same place again the next day, somehow same identifier but has different checkin checkout dates

Yes, that’s going to happen if the event identifier can’t be fully differentiated. It’s a failing in how the integration is built. Adding in some sort of disambiguation would be possible just hasn’t been anything I thought I likely needed.

I’ve created this issue related to this problem. I don’t know when I’ll get a chance to dig on this particular problem though. In the mean time, you might consider a manual slot (you saved some for that right?) and assign a different keycode that what RC is trying to generate to it and hand that to the guest.

Hello, great job to start with! You’ve saved me a lot of research and effort. Thank you, you should be proud of your work!

I noticed you started a translation folder, but it doesn’t seem to be used anywhere in your open-source GitHub code, or maybe I didn’t search thoroughly enough. Do you plan to add a language system to the code? I’ve taken the time to translate it into French in JSON format, but it’s currently unusable.

I’d also like to know if it’s possible to retrieve information from entities. If so, which ones, and how can I complete the code? For me, it’s partially working, but not fully complete. Do you have a Trello board or something similar?

Raise issues and PRs on GitHub. There is a project board on the repository.

As for the translations, it’s sorta required for an integration to work properly. That being said. I’m only fluent in English. I speak a few other languages (very poorly) but can’t read or write them so any help on translations would be appreciated!

What sort of information are you trying to retrieve. The integration currently does the following:

Read in an ICS calendar from a URL
Filter out useless entries (old ones or non-standard events)
Create a calendar entity from this data
Create N event sensors which are the first N valid events in the calendar.
Each event sensor extracts out what information it can from the event record.

All of the data being extracted can be seen in the attributes on the event sensors.

On top of all of that, it will, if configured to do so, drive a Keymaster managed lock with the generated door codes.

1 Like

Thank you for your response,

The problem comes from Booking.com and how the calendar is managed… I can’t retrieve the clients’ names and other information, but there is no problem with your script.

Everything is retrieved from the calendar, so there is no way to modify that?

You should create a dashboard for your add-on so that users can customize it according to their needs and preferences.

Voici la traduction FR

{
  "config": {
    "error": {
      "bad_code_length": "La longueur du code de verrouillage doit être paire et >= 4",
      "bad_ics": "L'URL n'a pas fourni un calendrier valide",
      "bad_minimum": "La valeur doit être de 1 ou plus",
      "bad_refresh": "Le rafraîchissement doit être compris entre 0 et 1440.",
      "bad_time": "L'heure d'arrivée/départ est invalide. Utilisez le format 24 heures",
      "invalid_path": "Le chemin doit être un chemin relatif, non absolu",
      "invalid_url": "Seules les URLs en https sont prises en charge",
      "same_name": "Nom déjà utilisé",
      "unknown": "Erreur inattendue, vérifiez les journaux pour plus de détails"
    },
    "step": {
      "user": {
        "data": {
          "checkin": "Heure d'arrivée par défaut",
          "checkout": "Heure de départ par défaut",
          "code_generation": "Générateur de code de porte",
          "code_length": "Longueur du code de porte (>= 4 et un nombre pair)",
          "days": "Nombre maximum de jours à l'avance à récupérer",
          "event_prefix": "Préfixe pour tous les événements (utile si vous liez plus d'une location)",
          "ignore_non_reserved": "Ignorer les événements qui ne sont pas des réservations standard",
          "keymaster_entry_id": "Configuration du Keymaster à gérer",
          "max_events": "Nombre de capteurs d'événements à créer",
          "name": "Nom du calendrier",
          "refresh_frequency": "Rafraîchir le calendrier en minutes. 0 - 1440",
          "start_slot": "Slot de départ pour la gestion",
          "timezone": "Fuseau horaire du calendrier",
          "url": "URL du calendrier",
          "verify_ssl": "Vérifier les certificats SSL"
        }
      }
    }
  },
  "options": {
    "error": {
      "bad_code_length": "La longueur du code de verrouillage doit être paire et >= 4",
      "bad_ics": "L'URL n'a pas fourni un calendrier valide",
      "bad_minimum": "La valeur doit être de 1 ou plus",
      "bad_refresh": "Le rafraîchissement doit être compris entre 0 et 1440.",
      "bad_time": "L'heure d'arrivée/départ est invalide. Utilisez le format 24 heures",
      "invalid_path": "Le chemin doit être un chemin relatif, non absolu",
      "invalid_url": "Seules les URLs en https sont prises en charge",
      "same_name": "Nom déjà utilisé",
      "unknown": "Erreur inattendue, vérifiez les journaux pour plus de détails"
    },
    "step": {
      "init": {
        "data": {
          "checkin": "Heure d'arrivée par défaut",
          "checkout": "Heure de départ par défaut",
          "code_generation": "Générateur de code de porte",
          "code_length": "Longueur du code de porte (>= 4 et un nombre pair)",
          "days": "Nombre maximum de jours à l'avance à récupérer",
          "event_prefix": "Préfixe pour tous les événements (utile si vous liez plus d'une location)",
          "ignore_non_reserved": "Ignorer les événements qui ne sont pas des réservations standard",
          "keymaster_entry_id": "Configuration du Keymaster à gérer",
          "max_events": "Nombre de capteurs d'événements à créer",
          "name": "Nom du calendrier",
          "refresh_frequency": "Rafraîchir le calendrier en minutes. 0 - 1440",
          "start_slot": "Slot de départ pour la gestion",
          "timezone": "Fuseau horaire du calendrier",
          "url": "URL du calendrier",
          "verify_ssl": "Vérifier les certificats SSL"
        }
      }
    }
  }
}

v1.0.2 has just been released with the translations you provided added.

On you’re statement about a dashboard, this isn’t an add-on it’s an integration. As such I’m not following what it is you’re asking for. Configuring of a specific integration installation is done just like other integrations Open your Home Assistant instance and show an integration.

1 Like

Just found this integration – pretty awesome. Does anyone have experience with Operto (Operto Integrations | Operto Guest Technologies) and how the HA/Rental Control solution compares?

v1.1.0 was just released. This brings with it the ability to have short events that are honored by RC. The best way to do this is with a custom Google calendar (or similar) and add the private calendar URL to an RC configuration. This one should be configured to manage slots that are different than your rental calendar.

Calendar entries that have actual start and end times will follow those times instead of forcing the default check-in / check-out (+1 day) times onto the event.

1 Like