+ Antworten
Ergebnis 1 bis 8 von 8
  1. #1
    Registriert seit
    May 2018
    Beiträge
    83

    Standard Daten per HTTP Abrufen und in Variable speichern

    Guten Tag zusammen,

    Ich bin gerade dabei meinen Roomba980 in IPS einzubinden, da ein PHP Modul mein können / meine Kenntnisse um ein weites übersteigt nutze ich das Node Modul "Dorita980 / Rest980" somit kann ich den Roomba wenigstens über IPS per HTTP Befehl ansprechen.

    Das Funktioniert soweit auch Problemlos, nun würde ich mir gerne auch die ein oder anderen Statusinformationen in IPS übergeben lassen, sofern dies möglich ist.
    Alles wichtige kann ebenfalls über ein HTTP Command im Browser eingesehen werden über folgenden Befehl:
    http://IP des Servers:3000/api/local/info/mission

    Als Ausgabe erhält man nun folgendes:

    {"cleanMissionStatus":{"cycle":"none","phase":"cha rge","expireM":0,"rechrgM":0,"error":0,"notReady": 0,"mssnM":0,"sqft":313,"initiator":"localApp","nMs sn":1009},"pose":{"theta":0,"point":{"x":7,"y":0}} ,"bin":{"present":true,"full":false},"batPct":1 00}

    Ist es möglich diese Daten per IPS "abzuholen" zu "selektieren" und in Variablen zu Speichern ?

    Als Beispiel nehme ich mal das letzte ( "batPct":100 ) = Aktueller Akkustand des Roboters diesen würde ich nun eben gerne in eine Variable "Batterie" geben diese ich im 2 - 5Minuten Zyklus aktualisiere, ist dies so mit IPS möglich ?


    Gruß, Adrian

  2. #2
    Registriert seit
    Oct 2011
    Ort
    Hattersheim (Hessen)
    Beiträge
    7,519

    Zitat Zitat von Adrian01 Beitrag anzeigen
    Alles wichtige kann ebenfalls über ein HTTP Command im Browser eingesehen werden über folgenden Befehl:
    http://IP des Servers:3000/api/local/info/mission
    Das bekommst Du in IP-Symcon z.B. mit

    PHP-Code:
    $info_json file_get_contents("http://IP des Servers:3000/api/local/info/mission"); 
    Zitat Zitat von Adrian01 Beitrag anzeigen
    Als Ausgabe erhält man nun folgendes:

    {"cleanMissionStatus":{"cycle":"none","phase":"cha rge","expireM":0,"rechrgM":0,"error":0,"notReady": 0,"mssnM":0,"sqft":313,"initiator":"localApp","nMs sn":1009},"pose":{"theta":0,"point":{"x":7,"y":0}} ,"bin":{"present":true,"full":false},"batPct":1 00}

    Ist es möglich diese Daten per IPS "abzuholen" zu "selektieren" und in Variablen zu Speichern ?
    Was Du bekommst ist JSON, siehe auch JSON Daten von einer Webseite auslesen und auswerten

    Also
    PHP-Code:
    $info_json file_get_contents("http://IP des Servers:3000/api/local/info/mission");
    $info json_decode($info_json); 
    Da kannst Du aus $info die Daten entsprechend der Anleitung (siehe oben) auslesen und mit SetValue in einer Variable ablegen.

    Zitat Zitat von Adrian01 Beitrag anzeigen
    Als Beispiel nehme ich mal das letzte ( "batPct":100 ) = Aktueller Akkustand des Roboters
    Probier mal ob Du Anhand des Beispiels bzw. der Anleitung zurecht kommst, ansonsten musst Du mal das komplette JSON, das als Antwort geliefert wird posten.

    Als Hilfe kannst Du Dir den Inhalt immer mit
    PHP-Code:
    var_dump($info); 
    ausgeben lassen. Mit json_decode bekommst Du ein Standardobjekt zurück.
    mit -> gehst Du zur nächsten Verzweigung (Node).
    Geändert von Fonzo (19.08.18 um 13:39 Uhr)

  3. #3
    Registriert seit
    May 2018
    Beiträge
    83

    Hallo Fonzo,

    Vielen vielen Dank,

    Das klappt wunderbar, habe es bisher an 3 Werten versucht, 2 bekomme ich richtig übertragen beim dritten macht es mir noch Probleme geht um einen Boolean Wert ich erhalte folgende Meldung

    Es geht hier um den Datenpunkt "bin" = Auffangbehälter voll / leer


    Warning: Cannot auto-convert value for parameter VariableValue in /var/lib/symcon/scripts/46614.ips.php on line 8
    object(stdClass)#2 (4) {
    ["cleanMissionStatus"]=>
    object(stdClass)#1 (10) {
    ["cycle"]=>
    string(4) "none"
    ["phase"]=>
    string(6) "charge"
    ["expireM"]=>
    int(0)
    ["rechrgM"]=>
    int(0)
    ["error"]=>
    int(0)
    ["notReady"]=>
    int(0)
    ["mssnM"]=>
    int(0)
    ["sqft"]=>
    int(313)
    ["initiator"]=>
    string(8) "localApp"
    ["nMssn"]=>
    int(1009)
    }
    ["pose"]=>
    object(stdClass)#3 (2) {
    ["theta"]=>
    int(0)
    ["point"]=>
    object(stdClass)#4 (2) {
    ["x"]=>
    int(7)
    ["y"]=>
    int(0)
    }
    }
    ["bin"]=>
    object(stdClass)#5 (2) {
    ["present"]=>
    bool(true)
    ["full"]=>
    bool(false)
    }
    ["batPct"]=>
    int(100)
    }

    Hier noch mein Skript:

    Code:
    <?
    
    $info_json = file_get_contents("http://192.168.178.68:3000/api/local/info/mission");
    $info = json_decode($info_json);  
    
    SetValueString(56454, $info->cleanMissionStatus->phase);
    SetValueInteger(30887, $info->batPct);
    SetValueBoolean(35502, $info->bin);
    
    
    
    
    var_dump($info);  
    
    ?>

  4. #4
    Registriert seit
    Feb 2018
    Ort
    Bochum
    Beiträge
    1,081

    wenn ich das richtig sehe ist $info->bin selbst doch ein Objekt, das aus den Wertewn 'present' und 'full' besteht.

    Also $info->bin->full oder $info->bin->present

  5. #5
    Registriert seit
    May 2018
    Beiträge
    83

    Hallo,

    Hast vollkommen recht, das war mein Fehler.
    Das Objekt "present" hat mich im ersten Moment etwas verwirrt.
    Full gibt an ob der Behälter leer oder voll ist und present gibt an ob er überhaupt im Roboter steckt oder nicht

    Danke dir.

    Gruß, Adrian

  6. #6
    Registriert seit
    Aug 2011
    Ort
    Münster
    Beiträge
    34

    Hallo zusammen,

    ich habe ähnlich gelagerte Frage (nicht zum Roboter aber zum auslesen von arrays) und stehe gerade auf dem schlauch und hoffe auf eure Hilfe:

    Ich habe folgende Abfrage:

    PHP-Code:
    $content Sys_GetURLContent("https://api.thingspeak.com/channels/950344/feeds.json?api_key=xxxxxxxxxxxxx&results=2");
    $json json_decode($content);
    print_r($json); 
    und bekomme folgende Ausgabe:

    PHP-Code:
    stdClass Object
    (
        [
    channel] => stdClass Object
            
    (
                [
    id] => 950344
                
    [name] => Test1
                
    [latitude] => 0.0
                
    [longitude] => 0.0
                
    [field1] => Temp
                
    [field2] => EC
                
    [created_at] => 2020-01-02T21:02:55Z
                
    [updated_at] => 2020-01-02T21:02:55Z
                
    [last_entry_id] => 6
            
    )

        [
    feeds] => Array
            (
                [
    0] => stdClass Object
                    
    (
                        [
    created_at] => 2020-01-02T22:04:01Z
                        
    [entry_id] => 5
                        
    [field1] => 
                        [
    field2] => 1
                    
    )

                [
    1] => stdClass Object
                    
    (
                        [
    created_at] => 2020-01-02T22:04:19Z
                        
    [entry_id] => 6
                        
    [field1] => 
                        [
    field2] => 80
                    
    )

            )


    Die ausgabe von CHANNEL und ID funktioniert mit
    PHP-Code:
    echo $json->channel->id
    einwandfrei.

    Ich schaffe es jedoch nicht "weiter runter". Ziel ist es, die Arraywerte aus "field1" und "field2" jeweils an eine IPS Variable zu übergeben.

    Danke für euren Support

    VG und schönes WE !
    Andre

  7. #7
    Registriert seit
    Oct 2011
    Ort
    Hattersheim (Hessen)
    Beiträge
    7,519

    Zitat Zitat von revel1985 Beitrag anzeigen
    Ich schaffe es jedoch nicht "weiter runter". Ziel ist es, die Arraywerte aus "field1" und "field2" jeweils an eine IPS Variable zu übergeben.
    PHP-Code:
    $json json_decode($contenttrue);
    $id $json["channel"]["id"];
    var_dump($id);
    $field1 $json["feeds"][0]["field1"];
    var_dump($field1);
    $field2 $json["feeds"][0]["field2"];
    var_dump($field2); 

  8. #8
    Registriert seit
    Aug 2011
    Ort
    Münster
    Beiträge
    34

    Danke dir für die schnelle Antwort ! Klappt perfekt.

    VG
    Andre

Ähnliche Themen

  1. Systeminfos in Variablen speichern und im Webfrontend abrufen
    Von crazyaldi im Forum Skripte, PHP, SQL
    Antworten: 5
    Letzter Beitrag: 02.02.18, 08:16
  2. Daten Extern Speichern?
    Von michl im Forum SymBox / SymOS
    Antworten: 12
    Letzter Beitrag: 13.01.18, 10:30
  3. Daten persistent speichern
    Von baba im Forum Entwicklung mit PHP-SDK/Delphi-SDK
    Antworten: 47
    Letzter Beitrag: 25.05.17, 14:31
  4. Array Daten speichern
    Von gogo20012002 im Forum Skripte, PHP, SQL
    Antworten: 5
    Letzter Beitrag: 22.05.16, 11:59
  5. Zeit in Variable speichern und im WebFront anzeigen
    Von harry im Forum Skripte, PHP, SQL
    Antworten: 2
    Letzter Beitrag: 22.12.09, 16:34