Create complex (Python) rules to interact with People and API's.
Nebri easy handles the flow of information between your customers and staff. As new information arrives, your rules decide what the proper course of action will be. Complex workflows can be elegantly coordinated to keep your staff sane and up to date.
Want absolute power within your action? You got it. When a rule triggers a Nebri Action, the freedom of pure Python kicks into gear. Using custom python, built-in Nebri helper functions, and whatever Python packages you PIP Install, you are open to create sophisticated automation to handle any task you need.
Rules give you the most power over the internet of things with the least amount of code. Any device with internet connectivity and an API is available to Nebri. Think FitBit, Hue, Nest, Sense Mother, SmartThings and more.
Developed as a BPM alternative, a rule engine offers powerful workflows for humans. You can control a sales or project process, or orchestrate a software release process. Connect to Github and Trello to add even more insight.
Control your smart home with true home automation. No smart phones needed to turn on your lights now. That can be done with simple rules that might correspond to certain times, away statuses, or even remote buttons and sensors.
Here you see a button remotely turning off lights. You can tie in other events to the same button, or even have an rule that reacts to the light being off.
class kitchen_buttons(NebriOS): listens_to = ['kitchen_buttons'] def check(self): return self.kitchen_button == 4 # no.4 is a night time scene def action(self): wink.lights("kitchen_lights", "off")
This rule waits until midnight and then checks if the room is empty. If that is the case, the lights go off. Schedules and Drips offer a powerful mechanism for checking your system, and injecting data at specified times.
class kitchen_buttons(NebriOS): schedule = "0 0 * * *" # standard cron syntax for every night def check(self): return self.kitchen_occupancy == False def action(self): wink.lights("kitchen_lights", "off")
Loading more logic into the check() is a great way to make sure quite a few things are done before launching the next phase of the process. In this case managers and QA team need to approve the release, along with the build bot, before the release process is initiated.
class software_release(NebriOS): listens_to = ['buildbot_pass','managers_approved_release'] def check(self): if self.testers_approved_release == True and \ self.buildbot_pass == True and \ self.managers_approved_release == True and \ self.warning_flags == False: return True def action(self): self.release_latest_candiate = True #this initiates the full release process