[ASC] - ACHTUNG!!! Tester gesucht, @Reinhard. M, @marvin78 und @sukram und ALLE!

Begonnen von CoolTux, 26 Oktober 2021, 08:49:07

Vorheriges Thema - Nächstes Thema

Beta-User

Zitat von: Reinhard.M am 26 Oktober 2021, 12:48:04
Ich werde es heute Abend testen :)
Dann viel Spaß!

Zitat von: Beta-User am 26 Oktober 2021, 10:01:16
@CoolTux:
Einen Ergänzungs-Vorschlag hätte ich noch: könnten wir evtl. den Fahrtgrund noch mit übergeben? Dann hätte der User wirklich alle Infos, die er braucht, um selbst was anzuflanschen. (Ich hatte mir das nicht intensiver angesehen, und wollte erst mal einen funktionierenden Vorschlag für die drei genannten Problemkreise liefern; also: falls es eine einfache Möglichkeit gibt, das mitzugeben...?).
Habe mal versucht, das im Code nachzuvollziehen. An sich würde es genügen, %specials zu erweitern, oder greift man damit auf die falsche Stelle zu?
my %specials = (
             '$name'        => $shuttersDev,
             '$level'       => $posValue,
             '$slatLevel'   => $slatPos,
             '$reason'      => $shutters->getLastDrive
        );
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

CoolTux

Zitat von: Beta-User am 26 Oktober 2021, 13:01:46
Habe mal versucht, das im Code nachzuvollziehen. An sich würde es genügen, %specials zu erweitern, oder greift man damit auf die falsche Stelle zu?
my %specials = (
             '$name'        => $shuttersDev,
             '$level'       => $posValue,
             '$slatLevel'   => $slatPos,
             '$reason'      => $shutters->getLastDrive
        );


Da würde ich jetzt nicht so ganz verstehen was Du damit machen möchtest. Der Grund der Fahrt wird ja immer durch die jeweilige Routine gesetzt. Also Fenster oder externer Trigger oder Beschattung. Was genau soll der User jetzt machen können mit der Erweiterung?
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Beta-User

Er kann dann den Fahrgrund erfahren, indem er die Variable $reason auswertet (das ist ja kein Muss, nur eine Option).

Falls er also weitere Fallunterscheidungen (z.B. in myUtils-Code) machen will, hat er die Info direkt aus ASC und muss nicht irgendein anderes externes Hilfsmittel verwenden (also z.B. die Zahlenwerte wieder rückwärts mappen oä.).

Nochmal: Es geht darum, dem User generisch die Verantwortung zu übergeben für das, was ASC sonst intern tun würde. Dazu gehört es m.E. einfach, alle relevanten Infos bereitzustellen, egal, ob der User die dann nutzen will oder nicht. Wie hatte es Rudi neulich sinngemäß gesagt: Der User entscheidet, was mit dem Code des Programmierers passiert, und das kann auch was ganz anderes sein wie das, was sich der Programmierer gedacht hatte... Zur vollständigen Info gehört halt vor meinem inneren Auge auch der Fahrgrund, kann schon sein, dass das eher weitgehend ist ::) .

Andererseits: Es schadet doch auch nicht, oder muss das geheim bleiben?

EDIT:
_Könnte_ sein, dass es z.B. bei folgender Frage (weiter-) hilft:
ZitatBei der neuen Testversion mit CmdTemplate fehlt mir eine Option: Wie wird bei ExternalTrigger die Slatposition übergeben? Ich vermute, da gibt es noch keine Lösung, richtig?
Da wäre immerhin zu erfahren, dass ExternalTrigger stattgefunden hat?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

CoolTux

Zitat von: Beta-User am 26 Oktober 2021, 13:24:42
Er kann dann den Fahrgrund erfahren, indem er die Variable $reason auswertet (das ist ja kein Muss, nur eine Option).

Falls er also weitere Fallunterscheidungen (z.B. in myUtils-Code) machen will, hat er die Info direkt aus ASC und muss nicht irgendein anderes externes Hilfsmittel verwenden (also z.B. die Zahlenwerte wieder rückwärts mappen oä.).

Nochmal: Es geht darum, dem User generisch die Verantwortung zu übergeben für das, was ASC sonst intern tun würde. Dazu gehört es m.E. einfach, alle relevanten Infos bereitzustellen, egal, ob der User die dann nutzen will oder nicht. Wie hatte es Rudi neulich sinngemäß gesagt: Der User entscheidet, was mit dem Code des Programmierers passiert, und das kann auch was ganz anderes sein wie das, was sich der Programmierer gedacht hatte... Zur vollständigen Info gehört halt vor meinem inneren Auge auch der Fahrgrund, kann schon sein, dass das eher weitgehend ist ::) .

Andererseits: Es schadet doch auch nicht, oder muss das geheim bleiben?

EDIT:
_Könnte_ sein, dass es z.B. bei folgender Frage (weiter-) hilft:Da wäre immerhin zu erfahren, dass ExternalTrigger stattgefunden hat?
Ah verstehe. Nee alles gut, wenn Du es Dir so gedacht hast dann passt die Änderung. Ich baue das gleich mal ein.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

marvin78

Sowohl gestern Abend, als auch heute Morgen sind alle Jalousien gefahren, wie sie sollten. Auch eine simulierte Beschattung hat funktioniert.

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Beta-User

Danke auch nochmal von meiner Seite für die positive Rückmeldung.

Wie an anderer Stelle angekündigt, habe ich über meine evtl. vorschnelle Benennung der Variablen nochmal nachgedacht und finde zwischenzeitlich $pos, $slatPos und $cause besser, da die ersten beiden eher in Übereinstimmung sind mit den Attributbenennungen und $cause evtl. auch allgemeinverständlicher...

Hier die entsprechend überarbeiteten commandref-Schnipsel - gleich unter Einschluss des myUtils-Aufrufs:

            <a id="AutoShuttersControl-attr-ASC_CommandTemplate"></a>
            <li><strong>ASC_CommandTemplate</strong> - <strong>FHEM or Perl command</strong> (Perl in braces as usual needs escaping semicolons etc.).<br>
            This optional attribute will override the internally determined command to drive this shutter. Setting it, is only recommended in <strong>some rare and special cases,</strong>, in most cases there's <strong>no need</strong> to set this attribute!
            The parameters <i>$name</i> (name of the shutter device), <i>$pos</i> (target position for the respective drive command), <i>$slatPos</i> (target position for the (turnable) lammellas in venetion blinds) and <i>$cause</i> (internal label for the cause of the driving command) will be replaced by the appropirate values. You may have to take care to avoid unneeded driving commands.
            Examples:
            <ul>
            <li><i>attr ROLLO ASC_CommandTemplate set $name $pos</i> - Address the position command directly to the main switch of the device</li>
            <li><i>attr ROLLO ASC_CommandTemplate set $name pct $pos</i> - Address the setter <i>pct</i> for positioning commands</li>
            <li><i>attr ROLLO ASC_CommandTemplate set $name datapoint 4.LEVEL_2 $slatPos 4.LEVEL $pos</i> - combined positioning command, e.g. appropriate for HM-IP-venetian blind type actors</li>
            <li><i>attr ROLLO ASC_CommandTemplate { fhem("set $name ".($pos+1024)).";set $name 0")}</i> - positioning command with Perl calculation and additional "execute" command, e.g. for an SPS type blind</li>
            <li><i>attr ROLLO ASC_CommandTemplate { myPerlFn("$name",$pos,$slatPos,"$cause")}</i> - call own Perl function (e.g. from 99_myUtils.pm)</li>
            </ul>
            </li>


           
            <a id="AutoShuttersControl-attr-ASC_CommandTemplate"></a>
            <li><strong>ASC_CommandTemplate</strong> - <strong>FHEM-Kommando(s) oder Perl-Anweisung</strong> (in geschweiften Klammern unter Beachtung der üblichen Regeln für das escapen von Semicolons etc.).<br>
            Dieses Attribut übersteuert das sonst intern ermittelte Fahrkommando und ist <strong>für seltene und spezielle Fälle</strong> gedacht. In der Regel ist es nicht erforderlich, dieses Attribut zu setzen!<br>
            Die Variablen <i>$name</i> (der Name des Rollladen-Devices), <i>$pos</i> (die Zielposition des Fahrbefehls), <i>$slatPos</i> (die Zielposition des Fahrbefehls für eventuelle Lamellen) und <i>$cause</i> (die interne Benennung des Fahranlasses) werden durch die ermittelten Werte ersetzt, es muss selbst dafür gesorgt werden, dass eventuell unnötige Fahrbefehle aussortiert werden.
            Beispiele:
            <ul>
            <li><i>attr ROLLO ASC_CommandTemplate set $name $pos</i> - Positionsbefehl direkt an Gerät
            setzen</li>
            <li><i>attr ROLLO ASC_CommandTemplate set $name pct $pos</i> - Positionsbefehl auf den setter <i>pct</i> absetzen</li>
            <li><i>attr ROLLO ASC_CommandTemplate set $name datapoint 4.LEVEL_2 $slatPos 4.LEVEL $pos</i> - Positionsbefehl und Lamellen-Ansteuerung für HM-IP-Jalousieaktoren</li>
            <li><i>attr ROLLO ASC_CommandTemplate { fhem("set $name ".($pos+1024)).";set $name 0")}</i> - Positionsbefehl für eine SPS in Perl umrechnen</li>
            <li><i>attr ROLLO ASC_CommandTemplate { myPerlFn("$name",$pos,$slatPos,"$cause")}</i> - eigene Perl-Funktion (z.B. in 99_myUtils.pm) aufrufen</li>
            </ul>
            </li>
        </ul>




Bzgl. des Problems von @sukram bin ich zwischenzeitlich eher unsicher, ob man den zentralen Fahrbefehl nicht doch von CommandSet() auf AnalyzeCommand() umstellen sollte (damit das aliasing funktioniert). Nebenwirkungen auf existierende Installationen sind zwar nicht auszuschließen, aber nach meinem Bauchgefühl eher sehr unwahrscheinlich. Der dadurch verursachte Overhead ist eher marginal.

Just my2ct.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

marvin78

Gibst du Bescheid, wenn das in das Release kommt? Ich müsste dann ja auch noch die Bezeichnungen ändern.

Beta-User

Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net


Reinhard.M

Zitat von: Reinhard.M am 26 Oktober 2021, 12:48:04
Ich werde es heute Abend testen :)

Das muss ich leider noch ein wenig schieben da ich ansonsten wieder Probleme mit meinem ExternalTrigger bekomme. Aber bei Marvin funktioniert es ja schon, bei mir wird es dann ja (hoffentlich) nicht anders sein :)

Gruß Reinhard

CoolTux

Zitat von: Reinhard.M am 27 Oktober 2021, 15:42:20
Das muss ich leider noch ein wenig schieben da ich ansonsten wieder Probleme mit meinem ExternalTrigger bekomme. Aber bei Marvin funktioniert es ja schon, bei mir wird es dann ja (hoffentlich) nicht anders sein :)

Gruß Reinhard

Dein external Trigger Problem sollte eigentlich gefixt sein.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net