+ Antworten
Seite 3 von 3 ErsteErste 1 2 3
Ergebnis 21 bis 29 von 29
  1. #21
    Registriert seit
    Jun 2020
    Ort
    Wachau, Österreich
    Beiträge
    289

    Zitat Zitat von uwe Beitrag anzeigen
    Danke für die schnelle Antwort, muss ich die Variable mit der ID selber erstellen? Ich dachte ich lege eine Kategorie an.
    Wie ist eigentlich die Reihenfolge der Abarbeitung der Scripte? Und welche Variablen muss ich händisch eingeben.
    Ja, und die bekommt fix die ID der Kategorie zugewiesen. Ich mag keine fixen Werte in Skripten. Deswegen habe ich es so gemacht.

  2. #22
    Registriert seit
    Nov 2005
    Beiträge
    713

    Das Script läuft jetzt ohne Fehler durch, aber es werden keine Variablen unter der Kategorie angelegt .komm da nicht weiter.
    Gruß Uwe

  3. #23
    Registriert seit
    Jun 2020
    Ort
    Wachau, Österreich
    Beiträge
    289

    Zitat Zitat von uwe Beitrag anzeigen
    Das Script läuft jetzt ohne Fehler durch, aber es werden keine Variablen unter der Kategorie angelegt .komm da nicht weiter.
    Zeig mal her

  4. #24
    Registriert seit
    Nov 2005
    Beiträge
    713

    Hier mal das Script

    PHP-Code:
    <?php

    //Token ermitteln
    include(IPS_GetScriptFile(36661/*Skript für die Ermittlung des Tokens*/));

    $url 'https://eu-wap.tplinkcloud.com?token='.GetValue(25698/*Token*/);
    $devicelist="";
    $InsID=0;
    $VarID=0;
    $root=getvalue(14870);/*ID der Kategorie wo die Instanzen erstellt werden sollen*/
    $GUIDDummy=getvalue(33575/*UID der Dummy Instanz*/);
    $ActionScriptID=getvalue(10141); /*ID des  füs Schalten */
    if ($root>and $GUIDDummy != "bc48270-177-e7-a5b9-358956"/*nur zur Sicherheit, sollten die Werte mal verloren gehen */
    {
        
    $ch curl_init();
        
    curl_setopt($chCURLOPT_URL$url);
        
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
    curl_setopt($chCURLOPT_POSTtrue);
        
    $content = array (
        
    'method' => 'getDeviceList'
        
    );
        
    curl_setopt($chCURLOPT_HTTPHEADER,array("Content-type: application/json"));
        
    curl_setopt($chCURLOPT_POSTFIELDSjson_encode($content));
        
    $result curl_exec($ch);
        
    $devicelist=json_decode($result,true)["result"]["deviceList"];

        foreach (
    $devicelist as $device)
        {
            
    $instanceID=@IPS_GetInstanceIDByName($device["alias"],$root); /*Prüfen ob die Instanz schon vorhanden ist*/
            
    if ($instanceID == false)
            {
                
    //Schalterinstanz
                
    $InsID IPS_CreateInstance($GUIDDummy);
                
    IPS_SetName($InsID$device["alias"]);
                
    IPS_SetParent($InsID$root);

                
    //Schaltervariable
                
    $VarID IPS_CreateVariable(0);
                
    IPS_SetName($VarID,$device["alias"]); 
                
    IPS_SetParent($VarID,$InsID); 
                
    IPS_SetVariableCustomProfile($VarID,"~Switch");
                
    IPS_SetVariableCustomAction($VarID,$ActionScriptID);

                
    //DeviceID Variable
                
    $VarID IPS_CreateVariable(3);
                
    IPS_SetName($VarID,$device["alias"]."ID");
                
    IPS_SetParent($VarID,$InsID); 
                
    setvalue($VarID,$device["deviceId"]);
            }
        }
    }
    Name:  1.png
Hits: 49
Größe:  15.5 KB

    Schau mal Bitte drauf ob da den Fehler findest
    Gruß Uwe

  5. #25
    Registriert seit
    Jun 2020
    Ort
    Wachau, Österreich
    Beiträge
    289

    Du holst dir keinen Token. Bei mir ist das nach dem include
    $token=TPLinkToken();
    oder machst du das in dem Skript vom include?
    entweder
    $GUIDDummy == "bc48270-177-e7-a5b9-358956")
    oder $GUIDDummy != "")
    In deinem Fall geht er nicht in den IF Bereich rein.

  6. #26
    Registriert seit
    Nov 2005
    Beiträge
    713

    Den Token hole ich im Skript vom include. Das klappt auch.

    PHP-Code:
    $GUIDDummy=getvalue(33575/*UID der Dummy Instanz*/);
    $ActionScriptID=getvalue(10141); /*ID des  füs Schalten */
    if ($root>and $GUIDDummy != ""/*nur zur Sicherheit, sollten die Werte mal verloren gehen */
    {
        
    $ch curl_init();
        
    curl_setopt($chCURLOPT_URL$url);
        
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
    curl_setopt($chCURLOPT_POSTtrue);
        
    $content = array (
        
    'method' => 'getDeviceList'
        
    );
        
    curl_setopt($chCURLOPT_HTTPHEADER,array("Content-type: application/json"));
        
    curl_setopt($chCURLOPT_POSTFIELDSjson_encode($content));
        
    $result curl_exec($ch);
        
    $devicelist=json_decode($result,true)["result"]["deviceList"];

        foreach (
    $devicelist as $device)
        {
            
    $instanceID=@IPS_GetInstanceIDByName($device["alias"],$root); /*Prüfen ob die Instanz schon vorhanden ist*/
            
    if ($instanceID == false)
            {
                
    //Schalterinstanz
                
    $InsID IPS_CreateInstance($GUIDDummy);
                
    IPS_SetName($InsID$device["alias"]);
                
    IPS_SetParent($InsID$root);


    Warning:  5245bcd8-8efa-4944-a891161 is not a valid GUID in C:\ProgramData\Symcon\scripts\35513.ips.php on line 33

    Warning
    :  Root kann nicht geändert werden in C:\ProgramData\Symcon\scripts\35513.ips.php on line 35 
    Gruß Uwe

  7. #27
    Registriert seit
    Jun 2020
    Ort
    Wachau, Österreich
    Beiträge
    289

    Dann kommen wir dem Fehler schon näher. Hat was mit der ID der Dummy Instanz zu tun. Mal schauen wie ich das gemacht hab die herauszufinden. Könnte ja sein, dass die bei jeder Installation anders ist.
    Edit: Am einfachsten ist es, du machst die settings.json mit einem Texteditor auf und suchst nach irgemd einem Dummy Modul. Dort ist die ID hinterlegt. Ich hab es anders gemacht, weiß aber nicht mehr wie.
    Geändert von hfichtinger (20.11.20 um 07:17 Uhr)

  8. #28
    Registriert seit
    Jun 2012
    Ort
    House of Dragons @ Lübeck
    Beiträge
    10,765

    Sorry jetzt, aber das ist wirklich Quark.
    Die GUIDs sind immer gleich und stehen in der Dokumentation von Symcon.
    Das schreibt man fix in das Script.
    Und eine Startkategorie ermitteln dir meisten Scripte durch ihre eigene ParentID. Dann wird keine externe IPS-Variable und auch keine feste ObjektID benötigt.
    Michael
    on Win10VM (ESXi): I7, 32GB RAM, HW-RAID5, 2xSat | HW: pivccu + ca.130 Geräte (ca.550ch), EM1000, CUL, 1Wire, FritzBox Cable, Android Phone + Tablet, Onkyo NR| SW: IPS, Apache2(mod_ssl/PHP), MySQL, hMailServer, PRTG, RoundCube, Win2016 Ess., MediaPortal, Kodi

  9. #29
    Registriert seit
    Jun 2020
    Ort
    Wachau, Österreich
    Beiträge
    289

    Zitat Zitat von Nall-chan Beitrag anzeigen
    Sorry jetzt, aber das ist wirklich Quark.
    Die GUIDs sind immer gleich und stehen in der Dokumentation von Symcon.
    Das schreibt man fix in das Script.
    Und eine Startkategorie ermitteln dir meisten Scripte durch ihre eigene ParentID. Dann wird keine externe IPS-Variable und auch keine feste ObjektID benötigt.
    Michael
    Ich nehme das zur Kenntnis.

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 12.07.20, 10:21
  2. Befehle TP-Link HS100
    Von hfichtinger im Forum Skripte, PHP, SQL
    Antworten: 4
    Letzter Beitrag: 29.06.20, 13:43
  3. Antworten: 34
    Letzter Beitrag: 17.03.20, 15:48
  4. ESP8266 Geräte und die Cloud
    Von tomgr im Forum Bastel-Ecke
    Antworten: 18
    Letzter Beitrag: 29.01.19, 09:30
  5. Automatisches IPS Backup in die Cloud (copy.com)
    Von drapple im Forum Allgemeine Diskussion
    Antworten: 13
    Letzter Beitrag: 31.12.15, 12:13