+ Antworten
Seite 1 von 5 1 2 3 ... LetzteLetzte
Ergebnis 1 bis 10 von 42
  1. #1
    Registriert seit
    Feb 2005
    Ort
    Lübeck
    Beiträge
    21,262

    Smile Neue Funktion zum generischen Schalten: RequestAction

    Auf Grundlage von diesem Thema (IP-Symcon Community Forum) und dieser Ausführung (IP-Symcon Community Forum) möchten wir zu IP-Symcon 5.0 noch eine neue Funktion einführen die maßgeblich das Schreiben von Skripte beeinflussen wird.

    Seit IP-Symcon 1.0 gibt es für jedes schaltbare Gerät eine oder mehrere Funktionen, die es erlauben einen Schaltbefehl (=Aktion) auszuführen. Dieser Befehl wurde dokumentiert und jeder Nutzer musste diesen nachschlagen/lernen. Mit Version 3.0 kam das WebFront. Dort war es möglich direkt an der Variable eine Aktion aufzurufen. Technisch ist dies möglich, da intern eine Zuordnung zwischen dem Ident der Variable und der Funktion zum Schaltbefehl besteht. Dies findet sich in den PHP Modulen auch unter der Modul-Funktion "RequestAction" wieder. Für alle nativen Instanzen konnte dies lange über die undokumentierte und etwas komplexe Funktion IPS_RequestAction aufgerufen werden, welche mittlerweile viele PHP Module (z.B. Alexa, Assistant, HomeKit) verwenden.

    Noch einmal einen Schritt zurück. In der Theorie haben wir in der Vergangenheit versucht immer Geräte (=Instanzen) als Ziel auszuwählen. Prominente Module waren dabei das (alte) Shutter Control / Heating Control. Mittlerweile geht der Trend dazu über die Ziel-Variable auszuwählen, da dadurch eine viel einfachere Verknüpfung erstellt werden kann. Bisher gab es jedoch keine Funktion die dies einfach für alle Anwender/Modul-Entwickler zur Verfügung gestellt hat.

    Dies möchten wir mit der RequestAction Funktion ändern. Die Funktion erlaubt es die (Variablen-)Aktion auf einer beliebige Variable auszuführen. Sofern dort eine Aktion definiert ist, wird diese ausgeführt - unabhängig davon, welches echte physikalische Gerät dahinter versteckt ist.

    Auf lange Sicht bedeutet dies, dass wir uns nach und nach von den hardwarespezifischen Funktionen (wie z.B. EIB_Switch) verabschieden können und fast immer die RequestAction Funktion nutzen können. Als Grundsatz würde dann gelten: Alles was du im WebFront schalten kannst, kannst du auch mit RequestAction schalten. Und man muss sich nur noch spezielle Funktionen merken, wenn man wirklich spezielle Dinge schalten möchte. (z.B. Dimmen mit benutzerdefinierter Rampe)

    Man könnte sich nun die Frage stellen, warum wir nicht einfach SetValue dafür nehmen. Die Antwort ist einfach: SetValue setzt weiterhin den Wert einer Variable. Wir wollen jedoch das Gerät schalten, die dann wiederum (sofern erfolgreich) den Wert der Variable aktualisiert.

    Ein paar offene Fragen zu der Funktion gibt es noch:
    • Sollte die Funktion intelligent das Prozent-Suffix auswerten, sodass dann 0-100% angegeben werden kann?
    • Sollte die Funktion den eingegebenen Wert anhand vom Profil validieren? z.B. sollte bei Schrittweite 0,5 nur diese Schrittweite erlaubt werden?



    Ich freue mich auf euer Feedback, zumal es für die nächsten Jahre einiges ändern/vereinfachen wird.

    Beispiel zum Schalten von HomeMatic:
    PHP-Code:
    //Vorher
    HM_WriteValueBoolean(12345"STATE"true); //12345 ist die Instanz

    //Jetzt
    RequestAction(23456true); //23456 ist die STATE Variable 
    paresy

    PS: Für euch Entwickler gibt es auch noch RequestActionEx, welche den Sender in der Systemvariable beeinflussen kann.
    Geändert von paresy (10.07.18 um 15:02 Uhr)

  2. #2
    Registriert seit
    Apr 2011
    Beiträge
    2,060

    Sollte die Funktion intelligent das Prozent-Suffix auswerten, sodass dann 0-100% angegeben werden kann?
    Kannst du das noch mal kurz erläutern, da steh ich gerade aufm Schlauch...

    Sollte die Funktion den eingegebenen Wert anhand vom Profil validieren? z.B. sollte bei Schrittweite 0,5 nur diese Schrittweite erlaubt werden?
    Definitiv ja, vor allem auch Grenzwerte müssen überprüft werden


    Und als insgesamt-Feedback: Sehr guter Schritt in die richtige Richtung für die Entwickler. Wenn wir jetzt die harte Verknüpfung von Object-ID und physischer Instanz weg bekommen würden, wäre mir auch an anderer Stelle geholfen.
    Geändert von Hagbard235 (10.07.18 um 15:28 Uhr)
    HM-Funk, HM-Wired, EnOcean, Eltako, Z-Wave, Zigbee, 1-Wire, Harmony, Hue, IP-Cams, Modbus, Pluggit, Rasp-Pi's und Eigenbauten

  3. #3
    Registriert seit
    Feb 2005
    Ort
    Lübeck
    Beiträge
    21,262

    Bei den Prozenten geht es darum, ob wir den echten Wert angeben oder eben einen Prozentwert, sofern das Profil es unterstützt. Ein Prozent als Suffix zeigt im WebFront immer einen Slider von 0-100% an. Somit könnte auch die RequestAction Funktion dies abbilden und somit die Nutzung vereinfachen.

    Beispiel:

    PHP-Code:
    //RequestAction ohne Prozentfunktion. Profil = Intensity.255
    RequestAction(12345255); //100%

    //RequestAction mit Prozentfunktion. Profil = Intensity.255
    RequestAction(12345100); //100% 
    paresy

  4. #4
    Registriert seit
    Apr 2011
    Beiträge
    2,060

    Wie unterscheidest du dann ob er den echten Wert oder den Prozentwert angegeben hat? Ausschließlich den Prozentwert halte ich für nicht gut
    HM-Funk, HM-Wired, EnOcean, Eltako, Z-Wave, Zigbee, 1-Wire, Harmony, Hue, IP-Cams, Modbus, Pluggit, Rasp-Pi's und Eigenbauten

  5. #5
    Registriert seit
    Aug 2016
    Beiträge
    2,683

    Hallo paresy,

    ah finde ich Klasse, als ich damals beim HomeBridge Modul gefragt habe, wie ich das realisieren kann, wurde mir die undokumentierte Funktion von euch erklärt, mit Hinweis darauf, dass diese jederzeit entfallen kann. Aber nun wird sie zum Standard, gefällt mir.

    Sollte die Funktion den eingegebenen Wert anhand vom Profil validieren? z.B. sollte bei Schrittweite 0,5 nur diese Schrittweite erlaubt werden?
    Ich glaube, ich würde es so vorziehen.

    Grüße,
    Kai
    Geändert von KaiS (10.07.18 um 15:51 Uhr)
    IPS 5.2, auf Tinkerboard und RPI, piVCCU, Homematic & Homematic IP, diverse Tasmota Geräte, Shelly, GHoma, LG HomBot, Sonos, Tvheadend, HomeKit, AppleTV

  6. #6
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    9,042

    Nur ganz kurz von unterwegs.
    Bitte ohne Berücksichtigung der Profile!
    Sobald ein User das Profil der Variable ändert, stimmten die Daten dann nicht mehr.
    Grundsätzlich sehe ich jede weitere Konvertierung oder Prüfung der Daten als Aufgabe des Moduls. Die Funktion sollte also die angeforderten Rohdaten liefern.
    Beispiel sind auch Variablen wo sich die Wertgrenzen dynamisch Bewegen können, also muß eine Prüfung so oder so im Modul stattfinden.

    Zumal es ja ein breaking change wäre; bei IPS_RequestAction.
    Dann müssen alle ab sofort, um bei Dimmern zu bleiben, immer mit 0-100 eingangsseitig arbeiten und ausgangsseitig passend skalieren.
    Damit gibt es weitere Rundungsfehler und Unschärfe bei Werten.
    Man könnte von 255 Stufen des Dimmers somit nur noch 100 ansprechen.
    Michael
    on Win7VM (ESXi): I5, 24GB RAM, HW-RAID5, 3xSat | HW: CCU + 123 Geräte (506ch), EM1000, CUL, 1Wire, XBee, ELRO 433MHz, FritzBox Cable, Android Phone + Tablet, Samsung C-Serie TV +SamyGo-Ext, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, Rising AV, Piwik, RoundCube, Wordpress, WinLIRC, WHS2011, MediaPortal, XBMC

  7. #7
    Registriert seit
    Oct 2010
    Ort
    Paderborn
    Beiträge
    2,180

    Super Vorschlag!

    Bei den Fragen schließe ich mich den Antworten und Argumenten von Nall-Chan an:

    - keine Berücksichtigung der Profile

    Gruß

    Burkhard
    HM per RaspberryMatic | EKM-868 | LGS-868 | 1 Wire | Fibaro Motion Sensor & Aeon Labs Z-Stick S2 | SONOS | Denon AVR 3312 | Vu+ Ultimo 4K | Sony KD-75XE9405 | Fritzbox 6360 | Koubachi | AXIS 1344-E | Echo Dot + Show | Intel NUC i3 | IPS V5.1 Beta

  8. #8
    Registriert seit
    Aug 2009
    Ort
    Lippe
    Beiträge
    1,956

    - keine Berücksichtigung der Profile
    Hm, da muss ich noch drüber nachdenken.
    Am Beispiel LCN haben alte Module 50 Dimmschritte, die auf 100% aufgelost sind, also immer 2% mehr oder weniger, bei neuen LCN Modulen sind es 200 Dimmschritte, bei 0-100% immer 0,5%.
    Dann noch andere Module mit 0-255 Dimmschritten oder 0-100 Dimmschritten.
    .
    Wenn ich das im Profil abbilden kann, würde ich es so machen.(unsicher...)
    lg Thomas
    IPS Raspberry Pi2(3) mit LCN, HM, Sonoff+Shelly per MQTT, SONOS und viel Eigenbau + Pi2(3) mit Heizungssteuerung über GPIO per IPS

  9. #9
    Registriert seit
    Apr 2011
    Beiträge
    2,060

    Ohne Profil geht gar nicht finde ich. Die Aktion ist jetzt "Universal", das ist super, aber mindestens für Grenzwertprüfungen etc. muss es eine "individuelle Instanz" geben. Die Module hat man ja nicht "im Griff" , ein ungültiger Wert kann ja auch mal ungewollt destruktive Folgen haben... irgendwie will ich das begrenzen können.... alles andere wäre ein "wird ja schon klappen"....
    An Profilen könnten man ja z.b. auch die gültigen Werte abfragen... wo soll ich sowas sonst machen?
    HM-Funk, HM-Wired, EnOcean, Eltako, Z-Wave, Zigbee, 1-Wire, Harmony, Hue, IP-Cams, Modbus, Pluggit, Rasp-Pi's und Eigenbauten

  10. #10
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    9,042

    Zitat Zitat von Hagbard235 Beitrag anzeigen
    Ohne Profil geht gar nicht finde ich. Die Aktion ist jetzt "Universal", das ist super, aber mindestens für Grenzwertprüfungen etc. muss es eine "individuelle Instanz" geben. Die Module hat man ja nicht "im Griff" , ein ungültiger Wert kann ja auch mal ungewollt destruktive Folgen haben... irgendwie will ich das begrenzen können.... alles andere wäre ein "wird ja schon klappen"....
    An Profilen könnten man ja z.b. auch die gültigen Werte abfragen... wo soll ich sowas sonst machen?
    Worauf bezieht sich deine Frage?
    Auf die IPS Module oder die PHP-Module?
    Wenn letzteres destruktive Folgen hat, oder keine Werteprüfung, hau es dem Autor um die Ohren.

    Was ist mit den Usern, welche sich spezielle Assoziationen bauen um z.b. in einer Zeile Status, Aktion und Wert darzustellen? Das funktioniert dann auch nicht mehr.
    Die Idee durch IPS eine Aktion auf die Variable zu triggern ist gut, aber der Nutzer muss dennoch wissen ob nun true Licht an oder false Licht an ist
    Zusätzlich müssen dann auch die .Reversed Profile berücksichtigt werden.
    Das wird dann chaotisch, wenn es sich um zwiespältig bool-Vars handelt. Wie 'Alarm ausgeschaltet'. Und was ist nun bei True? An oder aus?
    Michael
    on Win7VM (ESXi): I5, 24GB RAM, HW-RAID5, 3xSat | HW: CCU + 123 Geräte (506ch), EM1000, CUL, 1Wire, XBee, ELRO 433MHz, FritzBox Cable, Android Phone + Tablet, Samsung C-Serie TV +SamyGo-Ext, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, Rising AV, Piwik, RoundCube, Wordpress, WinLIRC, WHS2011, MediaPortal, XBMC

Ähnliche Themen

  1. Neue Rauchmelder - Überwachung der Funktion
    Von Markus Arndt im Forum HomeMatic
    Antworten: 13
    Letzter Beitrag: 28.10.17, 18:07
  2. Funktion zum Auflisten der Symcon Icons?
    Von hirschbrat im Forum Skripte, PHP, SQL
    Antworten: 4
    Letzter Beitrag: 30.11.16, 08:50
  3. Funktion zum (um)skalieren von Werten.
    Von Schablone im Forum Anleitungen / Nützliche PHP Skripte
    Antworten: 5
    Letzter Beitrag: 11.08.16, 08:39
  4. Neue Funktion: Module
    Von JPaeper im Forum Entwicklung mit PHP-SDK/Delphi-SDK
    Antworten: 63
    Letzter Beitrag: 17.09.15, 12:37