Frage

Ich bin auf der Suche nach einer Regel-Engine in C oder Python, aber wenn Sie eine Regel-Engine kennen, die in einer anderen Sprache implementiert Ich würde mich freuen, darüber zu wissen.

Der Motor wird als Art und Weise verwendet werden, um ein Haus zu automatisieren, wie das Licht ausschalten, wenn jemand Blätter ein Zimmer etc. Also kein „Büro“ Regeln gibt (aka keine Regeln, die Sie in Excel oder so).

Ich habe in Jess sah und geifert, die in Java sind und machen einen perfekten Job. Ich möchte von anderen kennen und möglicherweise mit weniger Speicher als Java tut. Ich habe von RuleCore in Python gehört, konnte aber nicht wirklich eine Dokumentation über sie (Version 1.0 ist bei Source zur Verfügung, aber es sieht aus wie sie v verkaufen. 2.0).

Bearbeiten . Durch Regeln Motor (Inferenzmaschine), dann meine ich eine Implementierung von RETE oder gleichwertig

War es hilfreich?

Lösung

Bei der Suche nach RETE basierten Rules Engine in Python entweder Pyke oder

Andere Tipps

könnten Sie schauen auf CLIPS wie bereits vorgeschlagen, oder, wenn Sie zahlen Geld wollen oder brauchen < a href = "http://www.pst.com/rete2.htm" rel = "nofollow noreferrer"> Rete2 . Ich habe CLIP in der Vergangenheit unter Unix verwendet und erfolgreich in andere Anwendungen eingebettet.

Hope, das hilft.

In der Tat, Python ist eine Regel-Engine.

„Der Motor wird als Art und Weise verwendet werden, um ein Haus zu automatisieren, wie das Licht ausschalten, wenn jemand Blätter ein Zimmer etc.“

Sie benötigen Sensoren und Steuerungen. Sie schreiben Ihre „Regeln“ wie gewöhnliche Python-Objekte.

Ihr Haupt „Programm“ sammelt Ereignisse von Ihren Sensoren und sendet Ereignisse an Ihren Controller.

Wenn Sie von Ihren Sensoren über gewöhnliche USB lesen können, das ist noch besser. Die Marineindustrie verwendet ein Paar von eng verwandten Standards wie NMEA 0183 und NMEA 2000 für den Verkehr auf dem Bus vom Sensor zur Steuerung angeben.

Sie brauchen nicht noch eine weitere Regelsprache. Sie haben Python.

Rulecore ist in der Tat zum Teil in Python geschrieben. Aber es ist nicht wirklich wichtig. Sie als Benutzer würde sowieso nicht jeder dieser Implementierungsdetails sehen.

Die Regeln sind rein deklarative und definierten XML. Die XML wird in ruleCore CEP Server als Ereignisse schickt einen Web-Service oder JMS oder andere Protokolle verwenden.

Hier ist eine Liste von 13 Open-Source-Regeln Motoren in Java ist, geifert ist möglicherweise der beste von ihnen. http://java-sources.org/open-source/rule-engines

Ich weiß, ruleCore hat einige Teile in Python geschrieben. Aber die API nutzt XML und ActiveMQ oder WebServices, so dass es auf einer höheren Abstraktionsebene ist.

Nebri ist der einfachste Weg, um Schreibregeln für die Heimautomatisierung und andere Software / Maschinen. Hier ist ein Beispiel, das Licht Abschaltung zu erreichen:

class high_temp_shutdown(NebriOS):
    listens_to == ['shared.pebble_location'] 


    def check(self):
        # if pebble dongle is out or room, return true
        return shared.pebble_location > 3 # in meters

    def action(self):
        smartthings.lights(2,"off")

Es ist ein perfektes Werkzeug Ihr Hauses für die Automatisierung, da Sie in Ihrem Skript installieren vorhandene Bibliotheken für die Verwendung pip können. Nest, SmartThings, Sen.se und so weiter. Es ist nur Python!

Für eine vollständigere Erklärung, warum Python ist kein Motor Regeln selbst finden Sie unter dieser Artikel . Nur weil Python selbst Regeln ausführen können, müssen Sie keine Regel-Engine an den Händen. Es ist eine große architektonische Verschiebung in der Tat.

Ich schreibe eine einfache Regel-Engine in Python. Sie können Ihre Regeln in json oder yaml String speichern und verwenden diese Regel-Engine die Regel mit dem Kontext anzupassen.

https://github.com/tclh123/rule

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top