Ankündigung

Einklappen
Keine Ankündigung bisher.

EDOMI-Releases/Updates | Aktuell: Version 2.03

Einklappen
Dieses Thema ist geschlossen.
X
Das ist ein wichtiges Thema.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • gaert
    antwortet
    Ach übrigens... Import/Export ist in Arbeit - allerdings dauert das noch "ein wenig", ist nämlich ziemlich kompliziert im Detail. Den Anfang machen natürlich die Visuelemente - das Problem sind hier z.B. die KOs, denn diese müssen ja ggf. ebenfalls exportiert/importiert werden. Technisch nicht die große Hürde, aber von der "Logik" her etwas sonderbar - Beispiel:

    Ein Visuelement setzt per Befehl die GA 0/0/1 auf einen Wert. Dieses KO wird nun exportiert und (optional) auch importiert. Nur dürften die GAs wohl kaum zwischen den einzelnen Nutzern übereinstimmen... Daher ist deren Export eigentlich Blödsinn, andererseits sind u.U. gerade die KO-Befehle interessant im Kontext eines (komplexeren) Visuelements.

    Meine Lösung sieht bislang in Etwa so aus: Die KOs werden quasi referenziert (z.B. "@1") und im Abschnitt "comobjects" (provisorisch) dann deklariert. Beim Import wird man dann wahrscheinlich wählen können, ob man die KOs 1:1 übernehmen möchte oder entsprechend anpassen muss (grob gesagt).

    Das Format wird wahrscheinlich JSON sein - ich denke dies ist mit entsprechenden Editoren gut zu verarbeiten (schließlich kann man auf diese Weise auch eigene Import-Dateien kreieren, also ohne die EDOMI-GUI). XML ist m.E. irgendwie.... naja... Aber das ist erstmal sekundär.

    Das Ganze wird dann wohl in ein TAR-Archiv verpackt werden, damit auch Bilddateien etc. exportiert werden können.

    Hier mal ein (unvollständiges) Beispiel - nicht gerade selbsterklärend, aber damit könnte die Richtung klar werden:

    Code:
    {
    
        "visuelements": [
    
            {
    
                "db_id": "9",
    
                "type": "27",
    
                "name": "",
    
                "group": "@0",
    
                "caption": "{#} kW",
    
                "x": "352",
    
                "y": "452",
    
                "width": "96",
    
                "height": "96",
    
                "zindex": "0",
    
                "option1": "7",
    
                "option2": "0",
    
                "option3": "0",
    
                "option4": "9.6",
    
                "option5": "4",
    
                "option6": "1",
    
                "option7": "0",
    
                "option8": "30",
    
                "option9": "10",
    
                "option10": "350",
    
                "pagelink": "",
    
                "popupclose": "0",
    
                "design": {
    
                    "###": 1,
    
                    "dy": 2
    
                },
    
                "initonly": "0",
    
                "dyndesigns": [
    
                    {
    
                        "###": 1,
    
                        "dy": 2
    
                    },
    
                    {
    
                        "dx": 1,
    
                        "dy": 2
    
                    }
    
                ],
    
                "commands": [
    
                ],
    
                "comobjects": {
    
                    "1": "@0",
    
                    "2": ""
    
                }
    
            },
    
            {
    
                "db_id": "59",
    
                "type": "27",
    
                "name": "",
    
                "group": "@0",
    
                "caption": "",
    
                "x": "356",
    
                "y": "456",
    
                "width": "88",
    
                "height": "88",
    
                "zindex": "0",
    
                "option1": "7",
    
                "option2": "0",
    
                "option3": "0",
    
                "option4": "3.6",
    
                "option5": "4",
    
                "option6": "1",
    
                "option7": "0",
    
                "option8": "30",
    
                "option9": "10",
    
                "option10": "350",
    
                "pagelink": "",
    
                "popupclose": "0",
    
                "design": {
    
                    "###": 1,
    
                    "dy": 2
    
                },
    
                "initonly": "0",
    
                "dyndesigns": [
    
                    {
    
                        "###": 1,
    
                        "dy": 2
    
                    },
    
                    {
    
                        "dx": 1,
    
                        "dy": 2
    
                    }
    
                ],
    
                "commands": [
    
                ],
    
                "comobjects": {
    
                    "1": "@1",
    
                    "2": ""
    
                }
    
            },
    
            {
    
                "db_id": "60",
    
                "type": "27",
    
                "name": "",
    
                "group": "@0",
    
                "caption": "",
    
                "x": "360",
    
                "y": "460",
    
                "width": "80",
    
                "height": "80",
    
                "zindex": "0",
    
                "option1": "7",
    
                "option2": "0",
    
                "option3": "0",
    
                "option4": "3.6",
    
                "option5": "4",
    
                "option6": "1",
    
                "option7": "0",
    
                "option8": "30",
    
                "option9": "10",
    
                "option10": "350",
    
                "pagelink": "",
    
                "popupclose": "0",
    
                "design": {
    
                    "###": 1,
    
                    "dy": 2
    
                },
    
                "initonly": "0",
    
                "dyndesigns": [
    
                    {
    
                        "###": 1,
    
                        "dy": 2
    
                    },
    
                    {
    
                        "dx": 1,
    
                        "dy": 2
    
                    }
    
                ],
    
                "commands": [
    
                ],
    
                "comobjects": {
    
                    "1": "@2",
    
                    "2": ""
    
                }
    
            },
    
            {
    
                "db_id": "61",
    
                "type": "27",
    
                "name": "",
    
                "group": "@0",
    
                "caption": "",
    
                "x": "364",
    
                "y": "464",
    
                "width": "72",
    
                "height": "72",
    
                "zindex": "0",
    
                "option1": "7",
    
                "option2": "0",
    
                "option3": "0",
    
                "option4": "3.6",
    
                "option5": "4",
    
                "option6": "1",
    
                "option7": "0",
    
                "option8": "30",
    
                "option9": "10",
    
                "option10": "350",
    
                "pagelink": "",
    
                "popupclose": "0",
    
                "design": {
    
                    "###": 1,
    
                    "dy": 2
    
                },
    
                "initonly": "0",
    
                "dyndesigns": [
    
                    {
    
                        "###": 1,
    
                        "dy": 2
    
                    },
    
                    {
    
                        "dx": 1,
    
                        "dy": 2
    
                    }
    
                ],
    
                "commands": [
    
                    {
    
                        "db_id": "13",
    
                        "type": "20",
    
                        "option1": "2",
    
                        "option2": ""
    
                    }
    
                ],
    
                "comobjects": {
    
                    "1": "@3",
    
                    "2": ""
    
                }
    
            },
    
            {
    
                "db_id": "110",
    
                "type": "1",
    
                "name": "",
    
                "group": "@1",
    
                "caption": "Poolpumpe\n\"@'&deg;<nix>",
    
                "x": "252",
    
                "y": "452",
    
                "width": "96",
    
                "height": "48",
    
                "zindex": "0",
    
                "option1": "0",
    
                "option2": "0",
    
                "option3": "",
    
                "option4": "",
    
                "option5": "",
    
                "option6": "",
    
                "option7": "",
    
                "option8": "",
    
                "option9": "",
    
                "option10": "",
    
                "pagelink": "",
    
                "popupclose": "0",
    
                "design": {
    
                    "###": 1,
    
                    "dy": 2
    
                },
    
                "initonly": "0",
    
                "dyndesigns": [
    
                    {
    
                        "###": 1,
    
                        "dy": 2
    
                    },
    
                    {
    
                        "dx": 1,
    
                        "dy": 2
    
                    }
    
                ],
    
                "commands": [
    
                    {
    
                        "db_id": "16",
    
                        "type": "2",
    
                        "option1": "@4",
    
                        "option2": "1"
    
                    }
    
                ],
    
                "comobjects": {
    
                    "1": "",
    
                    "2": ""
    
                }
    
            },
    
            {
    
                "db_id": "111",
    
                "type": "1",
    
                "name": "",
    
                "group": "@1",
    
                "caption": "0",
    
                "x": "252",
    
                "y": "500",
    
                "width": "96",
    
                "height": "48",
    
                "zindex": "0",
    
                "option1": "0",
    
                "option2": "0",
    
                "option3": "",
    
                "option4": "",
    
                "option5": "",
    
                "option6": "",
    
                "option7": "",
    
                "option8": "",
    
                "option9": "",
    
                "option10": "",
    
                "pagelink": "",
    
                "popupclose": "0",
    
                "design": {
    
                    "###": 1,
    
                    "dy": 2
    
                },
    
                "initonly": "0",
    
                "dyndesigns": [
    
                    {
    
                        "###": 1,
    
                        "dy": 2
    
                    },
    
                    {
    
                        "dx": 1,
    
                        "dy": 2
    
                    }
    
                ],
    
                "commands": [
    
                    {
    
                        "db_id": "17",
    
                        "type": "2",
    
                        "option1": "@4",
    
                        "option2": "0"
    
                    }
    
                ],
    
                "comobjects": {
    
                    "1": "",
    
                    "2": ""
    
                }
    
            },
    
            {
    
                "db_id": "112",
    
                "type": "1",
    
                "name": "Leuchtring",
    
                "group": "@1",
    
                "caption": "",
    
                "x": "252",
    
                "y": "452",
    
                "width": "96",
    
                "height": "96",
    
                "zindex": "0",
    
                "option1": "0",
    
                "option2": "0",
    
                "option3": "",
    
                "option4": "",
    
                "option5": "",
    
                "option6": "",
    
                "option7": "",
    
                "option8": "",
    
                "option9": "",
    
                "option10": "",
    
                "pagelink": "",
    
                "popupclose": "0",
    
                "design": {
    
                    "###": 1,
    
                    "dy": 2
    
                },
    
                "initonly": "0",
    
                "dyndesigns": [
    
                    {
    
                        "###": 1,
    
                        "dy": 2
    
                    },
    
                    {
    
                        "dx": 1,
    
                        "dy": 2
    
                    }
    
                ],
    
                "commands": [
    
                ],
    
                "comobjects": {
    
                    "1": "@5",
    
                    "2": ""
    
                }
    
            }
    
        ],
    
        "visuelements.groups": [
    
            {
    
                "db_id": "62",
    
                "id": "@0",
    
                "name": "Energie"
    
            },
    
            {
    
                "db_id": "109",
    
                "id": "@1",
    
                "name": "Poolpumpe"
    
            }
    
        ],
    
        "comobjects": [
    
            {
    
                "db_id": "551",
    
                "id": "@0",
    
                "name": "Gesamtleistung",
    
                "gatyp": "2",
    
                "ga": "551",
    
                "dpt": "0",
    
                "defaultvalue": ""
    
            },
    
            {
    
                "db_id": "398",
    
                "id": "@1",
    
                "name": "Leistung (kW) FI1",
    
                "gatyp": "1",
    
                "ga": "9/2/3",
    
                "dpt": "9",
    
                "defaultvalue": ""
    
            },
    
            {
    
                "db_id": "399",
    
                "id": "@2",
    
                "name": "Leistung (kW) FI2",
    
                "gatyp": "1",
    
                "ga": "9/2/4",
    
                "dpt": "9",
    
                "defaultvalue": ""
    
            },
    
            {
    
                "db_id": "400",
    
                "id": "@3",
    
                "name": "Leistung (kW) FI3",
    
                "gatyp": "1",
    
                "ga": "9/2/5",
    
                "dpt": "9",
    
                "defaultvalue": ""
    
            },
    
            {
    
                "db_id": "441",
    
                "id": "@4",
    
                "name": "Poolpumpe",
    
                "gatyp": "2",
    
                "ga": "441",
    
                "dpt": "0",
    
                "defaultvalue": ""
    
            },
    
            {
    
                "db_id": "201",
    
                "id": "@5",
    
                "name": "GG: Poolpumpe",
    
                "gatyp": "1",
    
                "ga": "0/1/113",
    
                "dpt": "1",
    
                "defaultvalue": ""
    
            }
    
        ]
    
    }
    Und noch ein kürzeres Beispiel:

    Code:
    {
    
        "visuelements": [
    
            {
    
                "db_id": "110",
    
                "type": "1",
    
                "name": "",
    
                "group": "@0",
    
                "caption": "Poolpumpe\n\"@'&deg;<nix>",
    
                "x": "252",
    
                "y": "452",
    
                "width": "96",
    
                "height": "48",
    
                "zindex": "0",
    
                "option1": "0",
    
                "option2": "0",
    
                "option3": "",
    
                "option4": "",
    
                "option5": "",
    
                "option6": "",
    
                "option7": "",
    
                "option8": "",
    
                "option9": "",
    
                "option10": "",
    
                "pagelink": "",
    
                "popupclose": "0",
    
                "design": {
    
                    "###": 1,
    
                    "dy": 2
    
                },
    
                "initonly": "0",
    
                "dyndesigns": [
    
                    {
    
                        "###": 1,
    
                        "dy": 2
    
                    },
    
                    {
    
                        "dx": 1,
    
                        "dy": 2
    
                    }
    
                ],
    
                "commands": [
    
                    {
    
                        "db_id": "16",
    
                        "type": "2",
    
                        "option1": "@0",
    
                        "option2": "1"
    
                    }
    
                ],
    
                "comobjects": {
    
                    "1": "",
    
                    "2": ""
    
                }
    
            }
    
        ],
    
        "visuelements.groups": [
    
            {
    
                "db_id": "109",
    
                "id": "@0",
    
                "name": "Poolpumpe"
    
            }
    
        ],
    
        "comobjects": [
    
            {
    
                "db_id": "441",
    
                "id": "@0",
    
                "folderid": "31",
    
                "name": "Poolpumpe",
    
                "description": "",
    
                "gatyp": "2",
    
                "ga": "441",
    
                "dpt": "0",
    
                "defaultvalue": "",
    
                "initscan": "0",
    
                "initsend": "0",
    
                "requesttype": "0",
    
                "remanent": "0",
    
                "min": "",
    
                "max": "",
    
                "step": "",
    
                "digits": "",
    
                "csvlist": ""
    
            }
    
        ]
    
    }
    Zuletzt geändert von gaert; 23.10.2016, 22:45.

    Einen Kommentar schreiben:


  • gaert
    antwortet
    Um derartige "Mythen" wie "in Version xxx ging's noch" mal aus der Welt zu schaffen: Signifikante Änderungen werden IMMER im Changelog protokolliert. Wenn da also nix steht, wurde auch nix verändert

    Einen Kommentar schreiben:


  • steffen79
    antwortet
    Grm ok ja war ein Fehlalarm. Der Router im WLAN-AP war wohl so durcheinander durch umherschieben von Hardware dass er das Routing vom Edomi-Rechner zur Kamera nicht mehr hinbekommen hat. Reboot hat geholfen... merkwürdig aber danke

    Einen Kommentar schreiben:


  • jonofe
    antwortet
    Zitat von steffen79 Beitrag anzeigen

    Hat noch jmd das Problem?
    Gerade getestet mit meiner Grandstream GXV3610 v2 FHD. Funktioniert!

    Einen Kommentar schreiben:


  • steffen79
    antwortet
    Konfiguration/Kameraeinstellung Vorschau geht bei mir nicht mehr in 1.47 ... 1.45 ging noch.
    Der lädt ewig vor sich hin aber zeigt nichts an.

    Hat noch jmd das Problem?

    Einen Kommentar schreiben:


  • wintermute
    antwortet
    Zitat von saegefisch Beitrag anzeigen
    Danke Christian für die Aussicht auf den 2. Widget-Account. Das wird sicher vielen viel helfen. Mir auf jeden Fall...
    Dem ist nix hinzuzufuegen... ausser vielliecht: "mir auch"

    Einen Kommentar schreiben:


  • saegefisch
    antwortet
    Danke Christian für die Aussicht auf den 2. Widget-Account. Das wird sicher vielen viel helfen. Mir auf jeden Fall...

    Hört sich nach einem guten Kompromiss an - so hatte ich es mir erhofft, da doppelter Login auf der Hand liegt, dass das problematisch sein kann.

    Einen Kommentar schreiben:


  • gaert
    antwortet
    saegefisch
    In der Hilfe (LBS-Quelltext) ist's durchaus erwähnt, wenn auch etwas unauffällig im ersten Abschnitt versteckt (werde ich bei Gelegenheit ohnehin mal überarbeiten):

    Variablen beziehen sich auf genau eine LBS-Instanz, d.h. mehrere LBS gleichen Typs beeinflussen sich nicht hinsichtlich deren Variablen. Die Variablen halten einen Wert solange, bis EDOMI beendet bzw. neu gestartet wird. Variablen und Initialwerte vom Typ String werden genau wie Zahlen ohne(!) Anführungszeichen deklariert (Zeichenketten und Zahlen werden intern nicht unterschieden).

    Einen Kommentar schreiben:


  • gaert
    antwortet
    Schonmal eine kleine Ankündigung:

    Demnächst wird's einen weiteren "Admin-Account" geben - dieser dient dann zum parallelen Einloggen in die Statusseite (und nur diese). Somit kann man z.B. im Logikeditor Live-Werte verändern und zugleich auf der Statusseite entsprechend verfolgen (Widgets).

    Technisch wäre es zwar einfacher auch die Adminseite für den zweiten Account verfügbar zu machen, allerdings ist EDOMI dafür nicht ausgelegt (z.B. darf die Projektaktivierung nicht mehrfach zur gleichen Zeit angestoßen werden, etc.). Daher ist dies m.E. ein ganz guter Kompromiss

    Einen Kommentar schreiben:


  • saegefisch
    antwortet
    Zitat von gaert Beitrag anzeigen
    Das Timer-Beispiel(!) (nicht der LBS "Timer" 16000110) ist bewusst nicht optimiert in Sachen Performance, um die grundsätzliche Funktionsweise zu beschreiben. Schau' Dir mal den Timer-LBS an, dort wird $delay genutzt - dies spart natürlich reichlich Ressourcen, da der LBS dann nicht im MS-Takt aufgerufen wird, sondern erst wenn die Zeit abgelaufen ist.

    usleep() etc. haben im LBS-Abschnitt nichts zu suchen! Denn das würde die gesamte Logik-Engine für die entsprechende Dauer lahmlegen. Im EXEC-Teil hingegen ist's egal.

    Die LBS-Variablen (V#...) leben solange, bis EDOMI beendet/neugestartet wird (Datenbank). PHP-Variablen im LBS-Teil sind nur während des Funktionsaufrufs gültig.
    Super, vielen Dank! Dann habe ich letzte Nacht meine neuen LBS für die Heizungsregelung in die richtige Richtung entwickelt. Das war auch mein Eindruck, denn mit Verwendung nur von $Delay und keiner aktiven Visu bleibe ich meist wieder zwischen 0,8% und <2% CPU. Mit usleep ging's dagegen hoch.

    Die Info zur V#-Variablen ist sehr hilfreich. Habe ich den in der Hilfe überlesen oder lohnt das, bei Gelegenheit aufgenommen zu werden? Vielleicht gleiches zu Delay und usleep. Es gab vor ein paar Tagen ja mal eine Frage zur code-hygiene. Das muss die Community (und die CPU-Anzeige...) lösen, aber ein kurzer Hinweis, dass usleep gut und richtig ist, aber NUR im EXEC-Teil und eben sonst - am besten immer bei statefull - ein überlegtes Delay verwendet werden sollte. Da machen PHP-Neulinge - wie ich - weniger Unfug...

    Einen Kommentar schreiben:


  • gaert
    antwortet
    Keine Sorge, da wird nichts zugemüllt Löschen bedeutet hier tatsächlich Löschen - anders als bei Facebook & Co...

    Einen Kommentar schreiben:


  • eriche
    antwortet
    Wie gesagt war nur eine Idee.
    Ich wollte mir das nachträgliche Löschen der Logik und des Archives sparen.

    Irgendwann bleiben Leichen zurück und "müllen" die DB zu.

    Einen Kommentar schreiben:


  • gaert
    antwortet
    eriche
    Du kannst doch fix ein Datenarchiv anlegen, eine Minimal-Logik (Ausgangsbox) erstellen und ein Diagramm konfigurieren - dürfte in 1 Minute erledigt sein Und wenn Du fertig bist mit den Testmessungen, kannst Du einfach alles wieder löschen (oder ggf. modifizieren).

    Ohne "Umweg" über ein Datenarchiv etc. wird's schwierig bzw. "merkwürdig", denn irgendwo müssen die Daten ja zwischengespeichert werden...

    Einen Kommentar schreiben:


  • gaert
    antwortet
    Das Timer-Beispiel(!) (nicht der LBS "Timer" 16000110) ist bewusst nicht optimiert in Sachen Performance, um die grundsätzliche Funktionsweise zu beschreiben. Schau' Dir mal den Timer-LBS an, dort wird $delay genutzt - dies spart natürlich reichlich Ressourcen, da der LBS dann nicht im MS-Takt aufgerufen wird, sondern erst wenn die Zeit abgelaufen ist.

    usleep() etc. haben im LBS-Abschnitt nichts zu suchen! Denn das würde die gesamte Logik-Engine für die entsprechende Dauer lahmlegen. Im EXEC-Teil hingegen ist's egal.

    Die LBS-Variablen (V#...) leben solange, bis EDOMI beendet/neugestartet wird (Datenbank). PHP-Variablen im LBS-Teil sind nur während des Funktionsaufrufs gültig.

    Einen Kommentar schreiben:


  • eriche
    antwortet
    ich hätte einen Feature Wunsch
    Wäre es möglich ein Diagramm für online Trends zu erstellen?
    Also ein Diagramm, dem man einfach ein KO und ein Zeitintervall übergibt und dieses dann mitloggt - ohne dem Umweg über eine extra Logik und ein Archiv.

    Hintergedanke ist, dass man öfters in der Inbetriebnahme (z.B. Wetterstation) einmal ein Gefühl für die Messwerte bekommen muss um dann Grenzwerte zu setzen.

    Hier will man gar nicht in eine Datenbank die Werte aufzeichnen bzw. behalten - hier würde ein "online Trend" ausreichen.

    Einen Kommentar schreiben:

Lädt...
X