Neueste Beiträge

Seiten: [1] 2 3 ... 10
1
Im Anhang befindet sich die von mir veränderte HTTPMOD Version (entspricht ansonsten der aktuellsten Version). Bei mir ist damit der steigende Speicherverbrauch komplett weg, wie man auf dem anderen Bild sehen kann.

Getestet mit dem von Hardlife hier geposteten TV_Programme Device:
https://forum.fhem.de/index.php/topic,84372.msg981483.html#msg981483

Ich würde mich freuen, wenn Hardlife und parabacus das mal testen könnten.
2
Wenn der Parameter p55 in der Anlage auf 288 eingestellt wird, wird er auch im FHEM so angezeigt
3
Anfängerfragen / LightScene Sonnenuntergang mit reading Wert
« Letzter Beitrag von Eistee am Heute um 00:11:12 »
Hallo,

ich habe ein LightScene Device definiert in dem es eine scene Sonnenuntergang gibt. Damit steuere ich meine HUE Lampen an und zwar so das diese langsam auf die gewünschte Helligkeit hoch dimmen. Bisher hatte ich hier einen festen Wert in Sekunden eingegeben was soweit auch funktioniert.

Meine Idee war nun im twilight device die Dauer des Sonnenuntergangs zu berechnen. Dies habe ich über userReadings realisiert in dem nun die Dauer des Sonnnenuntergangs in Sekunden steht. Dieses Reading mit den Sekunden möchte ich nun in der LightScene verwenden.

Wenn ich es als [xx.Twilight:ss_duration] angebe scheint FHEM beim speichern allerdings nicht das so zu speichern sondern es ersetzt [xx.Twilight:ss_duration] durch die Zahl.

Weiß evtl. jemand wie ich das so machen kann das FHEM das userReadings beim aktivieren der scene ausließt?

LG Alina
4
Ich dachte der Eintrag in sFirmware kommt aus der Anlage, wie kann ich das sonst ermitteln?
5
SVG/Plots/logProxy / Antw:0 und 1 im GPLOT richtig darstellen
« Letzter Beitrag von amenomade am Gestern um 23:47:07 »
Type "steps" benutzen.

6
readingsGroup/readingsHistory / Antw:Valueicon mit if und devstateicon
« Letzter Beitrag von amenomade am Gestern um 23:35:40 »
Zeig bitte ein vollständiges "list" vom readingsGroup
7
Ich gehe davon aus, dass die "utf8-Loesung" nur in bestimmten Faellen hilft, weil einmy $i=0;
while(1) { $i++; "bla" =~ /$i/ }
kein Speicher verliert.

Das Problem tritt immer nur auf, wenn Daten von außen ins Modul kommen und Zeichen jenseits von Zahlen und Buchstaben enthält. Außen bedeutet in diesem Fall: Usereingaben. Wie und durch welche Mechanismen das genau passiert entzieht sich meiner Kenntnis. Meines Erachtens ist das Problem zweistufig. Irgendwoher kommt ein falsch encodierter String rein und dieser String verursacht in Stufe 2 Memory Leaks in Perl. Das Problem tritt auch nicht bei jedem Anwender auf, sondern hängt unter anderen mit der Locale Einstellung zusammen, vielleicht auch noch mit anderen Faktoren. Das blöde daran ist, das man das nicht gleich sieht. In meinem Kalendermodul hatten auch nur einige Personen Probleme z.B. mit Umlauten. Das lag dort ebenfalls am Encoding und wurde durch utf8 behoben. Das Fehlerbild passt exakt zu dem was wir hier die ganze Zeit beobachten, nämlich das einige das Problem massiv haben und andere es einfach nicht nachvollziehen können.
Ich kann aber gern mal die HTTPMOD Version zur Verfügung stellen, bin aber eigentlich nicht der Entwickler des Moduls. In diesem Thread gab es bereits mind. 2 Leute die ebenfalls Probleme damit hatten. Vielleicht können sie das Ergebnis im Fall von HTTPMOD verifizieren.

Meine locale Einstellungen sehen auf dem Debian Buster Pi so aus:
LANG=de_DE.UTF-8
LANGUAGE=
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=
8
Sonstiges / [fhem.pl patch] Update cmds help text
« Letzter Beitrag von Nestor am Gestern um 23:19:38 »
I noticed that the info displayed with help was missing some command flags (ex. list & sleep). Attached is patch that syncs the command options between help & help cmd. I just copy/pasted them.

--- - 2019-10-23 23:11:00.000000000 +0200
+++ fhem.pl 2019-10-23 23:08:12.000000000 +0200
@@ -402,33 +402,33 @@
 %cmds = (
   "?"       => { ReplacedBy => "help" },
   "attr"    => { Fn=>"CommandAttr",
-           Hlp=>"<devspec> <attrname> [<attrval>],set attribute for <devspec>"},
+           Hlp=>"[-a|-r] <devspec> <attrname> [<value>],set attribute for <devspec>"},
   "cancel"  => { Fn=>"CommandCancel",
            Hlp=>"[<id> [quiet]],list sleepers, cancel sleeper with <id>" },
   "createlog"=> { ModuleName => "autocreate" },
   "define"  => { Fn=>"CommandDefine",
-           Hlp=>"<name> <type> <options>,define a device" },
+           Hlp=>"[option] <name> <type> <type-specific>,define a device" },
   "defmod"  => { Fn=>"CommandDefMod",
-           Hlp=>"<name> <type> <options>,define or modify a device" },
+           Hlp=>"[-temporary] <name> <type> <type-specific>,define or modify a device" },
   "deleteattr" => { Fn=>"CommandDeleteAttr",
            Hlp=>"<devspec> [<attrname>],delete attribute for <devspec>" },
   "deletereading" => { Fn=>"CommandDeleteReading",
-            Hlp=>"<devspec> [<attrname>],delete user defined reading for ".
+            Hlp=>"<devspec> [<readingname>],delete user defined reading for ".
                  "<devspec>" },
   "delete"  => { Fn=>"CommandDelete",
             Hlp=>"<devspec>,delete the corresponding definition(s)"},
   "displayattr"=> { Fn=>"CommandDisplayAttr",
             Hlp=>"<devspec> [attrname],display attributes" },
   "get"     => { Fn=>"CommandGet",
-            Hlp=>"<devspec> <type dependent>,request data from <devspec>" },
+            Hlp=>"<devspec> <type-specific>,request data from <devspec>" },
   "include" => { Fn=>"CommandInclude",
-            Hlp=>"<filename>,read the commands from <filenname>" },
+            Hlp=>"<filename>,read the commands from <filename>" },
   "iowrite" => { Fn=>"CommandIOWrite",
             Hlp=>"<iodev> <data>,write raw data with iodev" },
   "list"    => { Fn=>"CommandList",
-            Hlp=>"[-r] [devspec],list definitions and status info" },
+            Hlp=>"[devspec] [value ...] or list {-r|-R},list definitions and status info" },
   "modify"  => { Fn=>"CommandModify",
-            Hlp=>"device <options>,modify the definition (e.g. at, notify)" },
+            Hlp=>"<name> <type-dependent-options>,modify the definition (e.g. at, notify)" },
   "quit"    => { Fn=>"CommandQuit",
             ClientFilter => "telnet",
             Hlp=>",end the client session" },
@@ -436,7 +436,7 @@
             ClientFilter => "telnet",
             Hlp=>",end the client session" },
   "reload"  => { Fn=>"CommandReload",
-            Hlp=>"<module-name>,reload the given module (e.g. 99_PRIV)" },
+            Hlp=>"<module>,reload the given module (e.g. 99_PRIV)" },
   "rename"  => { Fn=>"CommandRename",
             Hlp=>"<old> <new>,rename a definition" },
   "rereadcfg"  => { Fn=>"CommandRereadCfg",
@@ -446,22 +446,22 @@
   "save"    => { Fn=>"CommandSave",
             Hlp=>"[configfile],write the configfile and the statefile" },
   "set"     => { Fn=>"CommandSet",
-            Hlp=>"<devspec> <type dependent>,transmit code for <devspec>" },
+            Hlp=>"<devspec> <type-specific>,transmit code for <devspec>" },
   "setreading" => { Fn=>"CommandSetReading",
             Hlp=>"<devspec> <reading> <value>,set reading for <devspec>" },
   "setstate"=> { Fn=>"CommandSetstate",
-            Hlp=>"<devspec> <state>,set the state shown in the command list" },
+            Hlp=>"<devspec> <value>,set the state shown in the command list" },
   "setuuid" => { Fn=>"CommandSetuuid", Hlp=>"" },
   "setdefaultattr" => { Fn=>"CommandDefaultAttr",
-            Hlp=>"<attrname> <attrvalue>,set attr for following definitions" },
+            Hlp=>"[<attrname> [<value>]],set attr for following definitions" },
   "shutdown"=> { Fn=>"CommandShutdown",
             Hlp=>"[restart|exitValue],terminate the server" },
   "sleep"  => { Fn=>"CommandSleep",
-            Hlp=>"<sec> [<id>] [quiet],sleep for sec, 3 decimal places" },
+            Hlp=>"<sec|timespec|regex> [<id>] [quiet],sleep for sec, 3 decimal places" },
   "trigger" => { Fn=>"CommandTrigger",
             Hlp=>"<devspec> <state>,trigger notify command" },
   "update" => {
-            Hlp => "[<fileName>|all|check|force] ".
+            Hlp => "[<fileName>|all|check|checktime|force] ".
                                       "[http://.../controlfile],update FHEM" },
   "updatefhem" => { ReplacedBy => "update" },
   "usb"     => { ModuleName => "autocreate" },
9
TabletUI / Antw:Raum-Klimamesser
« Letzter Beitrag von Waldmensch am Gestern um 23:15:44 »
Teste mal den Widget code unten, der tut es bei mir ganz gut. Nur das SVG kriege ich nicht richtig in die Gridster Zelle. Bin da aber jetzt auch zu müde. Irgendwie feuert ein "setreading" in einem Dummy kein Event an FTUI.

Definition:  <object data="hygro.svg" type="image/svg+xml" id="hygrosvg" class="" style=""></object>
  <div data-type="hygrometer"
data-get-temperature="test_temperature:temp"
data-get-humidity="test_humidity:hum"
data-show-devpoint="0"
data-svg-id="hygrosvg"
style="visibility: hidden;"
class=""></div>

Widget:
var Modul_hygrometer = function () {

    var svgobj;

    // raw values, needed for deviationpoint calculation
    var temperature, humidity;

    // values with included offsets to move the pointers
    var oldTemp = 92, newTemp = 0;
    var oldHum = 268, newHum = 0;

    var pointerspeed;

    function init() {

        me.elements = $('div[data-type="' + me.widgetname + '"]', me.area);
        me.elements.each(function (index) {

            var elem = $(this);
           
            // init temperature and humidity
            elem.initData('get-temperature', '0.00');
            elem.initData('get-humidity', '0.00');
           
            // svg id - only set on init
            elem.initData('svg-id', 'none');
            svgobj = document.getElementById(elem.data('svg-id')).getSVGDocument();
           
            // show or hide Deviation point - only set on init
            elem.initData('show-devpoint', '0');
            var val = parseInt(elem.getReading('show-devpoint').val);
            showDevpoint(val);

            // speed of pointers - only set on init
            elem.initData('pointer-speed', '20');
            pointerspeed = parseInt(elem.getReading('pointer-speed').val);

            // Device reading for temperature
            if (elem.isDeviceReading('get-temperature')) {
                me.addReading(elem, 'get-temperature');
            }

            // Device reading for humidity
            if (elem.isDeviceReading('get-humidity')) {
                me.addReading(elem, 'get-humidity');
            }
        });
    }

    function update(device, reading) {

        me.elements.each(function (index) {
            var elem = $(this);

            // we see an update in temperature reading
            if (elem.matchDeviceReading('get-temperature', device, reading)) {
                temperature = parseFloat(elem.getReading('get-temperature').val);

                // set Deviation point
                setDevpoint();

                // stop intervall if already run from last update
                clearInterval(a);

                // set target for pointer move
                newTemp = (temperature * 1.5) + 92;
                newTemp = Math.round(newTemp * 100)/100;
                var PO1 = svgobj.getElementById("PO1a");

                // starting smooth move
                var a = setInterval(function(){
                    if(oldTemp < newTemp){
                        oldTemp = Math.round((oldTemp + 0.01) * 100)/100; // move forward
                        PO1.setAttribute("transform", "rotate(" + oldTemp + ",650,600)");
                    } else if ( oldTemp > newTemp) {
                        oldTemp = Math.round((oldTemp - 0.01) * 100)/100; // move backward
                        PO1.setAttribute("transform", "rotate(" + oldTemp + ",650,600)");
                    } else if ( oldTemp == newTemp) {
                        clearInterval(a); // gotcha - kill move
                    }
                }, pointerspeed);
            }

            if (elem.matchDeviceReading('get-humidity', device, reading)) {
                humidity = parseFloat(elem.getReading('get-humidity').val);
                setDevpoint();

                clearInterval(b);
                newHum = 268 - (humidity / 2);
                newHum = Math.round(newHum * 100)/100;
                var PO2 = svgobj.getElementById("PO2a");
                var b = setInterval(function(){
                    if(oldHum < newHum){
                        oldHum = Math.round((oldHum + 0.01) * 100)/100;
                        PO2.setAttribute("transform", "rotate(" + oldHum + ",350,600)");
                    } else if ( oldHum > newHum) {
                        oldHum = Math.round((oldHum - 0.01) * 100)/100;
                        PO2.setAttribute("transform", "rotate(" + oldHum + ",350,600)");
                    } else if ( oldHum == newHum) {
                        clearInterval(b);
                    }
                }, pointerspeed);
            }
        });
    }

    function showDevpoint(show){ //true or false, 0 or 1
var devpoint = svgobj.getElementById("devpoint");
devpoint.setAttribute("display", show ? "show" : "none");
    }
   
function setDevpoint() {
var txtdevpoint = svgobj.getElementById("txtdevpoint");
txtdevpoint.textContent='Taupunkt ' + getDevpoint(temperature, humidity) + '°C'
    }
   
function getDevpoint(Temperature, Humidity) {
var a = Temperature >= 0 ? 7.5 : 7.6;
var b = Temperature >= 0 ? 237.3 : 240.7;
var sdd = 6.1078 * Math.exp(((a*Temperature)/(b+Temperature))/Math.LOG10E);
var dd = Humidity/100 * sdd;
var c = Math.log(dd/6.1078) * Math.LOG10E;
var Devpoint = (b * c) / (a - c);
n = Math.pow(10, 1);
x = Math.round(Devpoint*n);
return x/n;
}

    var me = $.extend(new Modul_widget(), {
        widgetname: 'hygrometer',
        init: init,
        update: update,
    });

    return me;
};
10
Homematic / Antw:Fehlerhafte CC1101 Module
« Letzter Beitrag von tndx am Gestern um 23:14:02 »
Guten Abend,

ich habe hier mittlerweile ein 2. Exemplar von einem CC1101, was sich zwar komisch verhält, aber anders komisch, als die bereits bekannten CC1101 mit einer Frequenzverschiebung. Das Funkmodul sendet auf der vorgesehenen Frequenz und wird ohne Probleme von meinem FHEM empfangen, "hört" aber nicht die Antworten. So ist z.B. kein Pairing möglich, senden der Zustände funktioniert dagegen problemlos. Ich habe testhalber den Frequenztest-Scetch laufen lassen:
AskSin++ V4.1.1 (Oct 23 2019 22:53:10)
                                                          CC init1
                                                                  CC Version: 04
                                                                                - ready
       Start searching ...
                          Freq 0x21656A:   0/0
                                              Freq 0x2165BA:   0/0
                                                                  Freq 0x21651A:   0/0
      Freq 0x21660A:   0/0
                          Freq 0x2164CA:   0/0
                                              Freq 0x21665A:   0/0
                                                                  Freq 0x21647A:   0/0
      Freq 0x2166AA:   0/0
                          Freq 0x21642A:   0/0
                                              Freq 0x2166FA:   0/0
                                                                  Freq 0x2163DA:   0/0
      Freq 0x21674A:   0/0
                          Freq 0x21638A:   0/0
                                              Freq 0x21679A:   0/0
                                                                  Freq 0x21633A:   0/0
      Freq 0x2167EA:   0/0
                          Freq 0x2162EA:   0/0
                                              Freq 0x21683A:   0/0
                                                                  Freq 0x21629A:   0/0
      Freq 0x21688A:   0/0
                          Freq 0x21624A:   0/0
                                              Freq 0x2168DA:
                                                             Done: 0x21656A - 0x21656A
      Could not receive any message  0/0

                                        Done: 0x21656A - 0x21656A
                                                                 Could not receive any message

Mein FHEM bekam dagegen viele, wenn nicht alle dieser Anfragen mit, ich habe die entsprechenden Ausgaben im Event-Monitor gesehen.

Ich schließe zwar nicht aus, dass irgendwas an meinem Hardware-Aufbau nicht stimmt, aber ich hatte schon mal ein ähnliches Problem mit einem Funkmodul aus der gleichen Lieferung, das habe ich damals nicht weiter verfolgt. Kann sich jemand einen Reim drauf machen?
Seiten: [1] 2 3 ... 10