Ankündigung

Einklappen
Keine Ankündigung bisher.

EDOMI - LBS - Diskussion

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • coliflower
    antwortet
    Danke !

    file_get_contents () habe ich es schon im Einsatz um die JSON auszulesen und zu parsen … Und ja der 404er kommt, wenn die JSON nicht abrufbar ist …
    Das passiert wenn iTunes ausgeschaltet ist :-(

    file_get_contents(http://10.0.100.150/%7Edariusz/player.json): failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found
    Hättest du eine Idee wie man so etwas abfangen kann ?

    Einen Kommentar schreiben:


  • wintermute
    antwortet
    Zitat von coliflower Beitrag anzeigen
    Ich möchte abfragen ob die player.json am Webserver liegt und wenn ja, dann 1, wenn nicht, dann 0
    PHP-Code:
    if ($json=file_get_contents('http://foo/bar.json')) {
      echo 
    "ja";
    } else {
      echo 
    "nein";

    Du musst Dich allerdings drauf einstellen, dass ein eventueller 404er Fehler zu einem EIntrag im Edomi Error-Log fuehren wird...

    Einen Kommentar schreiben:


  • coliflower
    antwortet
    Ich möchte abfragen ob die player.json am Webserver liegt und wenn ja, dann 1, wenn nicht, dann 0
    Und danke für die Erklärung !!

    Einen Kommentar schreiben:


  • wintermute
    antwortet
    Zitat von coliflower Beitrag anzeigen
    kann mir jemand sagen warum und wie ich es lösen kann wenn ich eine Datei abfragen möchte ob diese existiert - irgend wie bekomme ich immer die FALSE ...
    Ja, weil file_exists() das Dateisystem ueberprueft, keine URLs.
    Die korrekte Realisierung haengt davon ab, was Du genau erreichen willst (also zB ob der Server reagiert, einen Fehler zruueckgibt, die URL vorhanden ist, das Ergebnis leer, uswusf)...

    Einen Kommentar schreiben:


  • coliflower
    antwortet
    Hallo zusammen,

    kann mir jemand sagen warum und wie ich es lösen kann wenn ich eine Datei abfragen möchte ob diese existiert - irgend wie bekomme ich immer die FALSE ...

    PHP-Code:
    if (file_exists('http://'.$E[3]['value'].$E[4]['value'].'%7E'.$E[5]['value'].'/'.$E[11]['value'].'.json') == true) {
        
    setLogicLinkAusgang($id,1,1);
        
    writeToTraceLog(0,true,'iTunes E/A File Wert ist 1 ... '.$player__);
        } else {
        
    setLogicLinkAusgang($id,1,0);
        
    writeToTraceLog(0,true,'iTunes E/A File Wert ist 0 ... '.$player__);

    Einen Kommentar schreiben:


  • coliflower
    antwortet
    Hallo zusammen,

    danke ! Anscheinend habe ich versucht mir durch den Rücken ins Auge zu schießen ….

    Ich habe es so gelöst - danke für den „roten Faden“ !!

    PHP-Code:
        if (array_key_exists('LSS'.$E[1]['value'],$airplay)) {
            
    setLogicLinkAusgang($id,1,$airplay['LSS'.$E[1]['value']]);
            if (
    $debug == 1) {
                
    LB_LBSID_DEBUG($id,'iTunes | A01 | LSS'.$E[1]['value'].' exists in json:    '.array_key_exists(('LSS'.$E[1]['value']),$airplay));
                
    LB_LBSID_DEBUG($id,'iTunes | A01 | LSS-Wert ist:                            '.$airplay['LSS'.$E[1]['value']]);
            }
        } 

    Bildschirmfoto 2016-03-07 um 17.31.46.png

    2016-03-07 17:28:37 383761 EXEC 22555 LBS19000006(134): iTunes | A01 | LSS1 exists in json: 1
    2016-03-07 17:28:37 383929 EXEC 22555 LBS19000006(134): iTunes | A01 | LSS-Wert ist: 1
    2016-03-07 17:28:37 386918 EXEC 22555 LBS19000006(134): iTunes | A02 | LSN1 exists in json: 1
    2016-03-07 17:28:37 386980 EXEC 22555 LBS19000006(134): iTunes | A02 | LSN-Wert ist: Computer
    2016-03-07 17:28:37 387217 EXEC 22555 LBS19000006(134): iTunes | A03 | LSV1 exists in json: 1
    2016-03-07 17:28:37 387258 EXEC 22555 LBS19000006(134): iTunes | A03 | LSV-Wert / Lautstärke ist: 20

    Einen Kommentar schreiben:


  • wintermute
    antwortet
    Zitat von coliflower Beitrag anzeigen
    Werde ich mal probieren ...
    $airplay ['LSS' . $E[1] ['value']]

    passt - glaube ich - besser...

    gruesse :: Michael

    Einen Kommentar schreiben:


  • coliflower
    antwortet
    Zitat von glueckm Beitrag anzeigen
    Ohne das jetzt ausprobiert zu haben:

    $airplay ['LSS' + $E[1] ['value']]

    Würde ich meinen sollte funktionieren...
    Werde ich mal probieren ...

    Einen Kommentar schreiben:


  • coliflower
    antwortet
    Zitat von starwarsfan Beitrag anzeigen
    um das mal etwas einzudampfen:

    Du möchtest einen lbs erstellen, welchem konfigurativ mitgeteilt wird, auf welche id er reagieren soll. Daraufhin sucht er sich aus den json-daten den teil heraus, der für ihn relevant ist. Dafür braucht der lbs zwei eingänge:
    • e1: Id des lautsprechers
    • e2: Json-daten

    soweit korrekt?
    yes

    Einen Kommentar schreiben:


  • glueckm
    antwortet
    Ohne das jetzt ausprobiert zu haben:

    $airplay ['LSS' + $E[1] ['value']]

    Würde ich meinen sollte funktionieren...

    Einen Kommentar schreiben:


  • starwarsfan
    antwortet
    Um das mal etwas einzudampfen:

    Du möchtest einen LBS erstellen, welchem konfigurativ mitgeteilt wird, auf welche ID er reagieren soll. Daraufhin sucht er sich aus den JSON-Daten den Teil heraus, der für ihn relevant ist. Dafür braucht der LBS zwei Eingänge:
    • E1: ID des Lautsprechers
    • E2: JSON-Daten

    Soweit korrekt?

    Einen Kommentar schreiben:


  • coliflower
    antwortet
    ohne jetzt alles begriffen zu haben, was Du meinst
    Ich versuche es nocheinmal ...
    AirPlay-Lautsprecher, die Dinger die man sich irgendwo zuhause hinstellt, an die Steckdose hängt, die über WLAN eine Verbindung zu iTunes aufbauen und z.B. Musik abspielen

    Ich möchte einen LBS pro Lautsprecher bauen, damit es flexibel bleibt = für jeden Lautsprecher ein kleiner LBS.
    Dieser kleine LBS bekommt den Inhalt einer JSON-Datei übermittelt siehe #167 unten, in der Informationen über alle an iTunes angeschlossenen Lautsprecher drinnen stehen.
    Jetzt soll der kleine LBS für den ersten Lautsprecher mit der Nummer 1 am LBS-Eingang-Nummer-1 den Wert = 1 erhalten, damit der kleine LBS weiß, dass er aus der JSON-Datei, die für den Lautsprecher 1 notwendigen Infos verwendet - hier LSS + LSN + LSV mit der 1, die anderen mit 2, 3, … n sind diesem kleinen LBS mit der Nummer 1 egal ...

    Ich weiß leider nicht wie ich die Infos aus der Datei hole unter der Berücksichtigung des Wertes am LBS-Eingang-1.

    Falls ich noch immer kauderwelsch geschrieben habe, dann sage mir bitte was noch unverständlich ist - ich werde mich bemühen

    DANKE !

    Einen Kommentar schreiben:


  • gaert
    antwortet
    Wie wäre es mit einem n-dimensionalen Array? Also quasi so (ohne jetzt alles begriffen zu haben, was Du meinst):

    $SuperArray[ID][TYP]

    z.B.
    ​$SuperArray[1]['LSS']=1
    ​$SuperArray[1]['LSN']='Computer'
    ​...
    $SuperArray[2]['LSS']=0
    ​$SuperArray[2]['LSN']='ATV'
    ​...

    Einen Kommentar schreiben:


  • coliflower
    antwortet
    Hallo Michael,

    im zweiten Ansatz die AirPlay-Lautsprecher zu steuern (+Rückmeldung) möchte ich weg vom starren Konzept á la LBS für 10 Lautsprecher, sondern zum flexibleren LBS pro Lautsprecher über gehen ...

    Hier soll dem LBS am Eingang 1 $E[1]['value'] der Wert 1 zugewiesen werden. Der LBS soll die JSON auslesen und für Lautsprecher 1 (Eingang 1 deshalb 1) nach LSS1 suchen … LSS + 1 vom Eingang 1.
    Weitere Lautsprechern hätten dann am Eingang 1 die 2, 3, 4, … n, somit wäre die Zuweisung weiterer Lautsprecher flexibel (aus meiner Sicht).

    Wie kann man das lösen - ich bin zu unkreativ ...

    Die JSON könnte so aussehen ...

    LS = Lautsprecher
    S = Status
    1 = Lautsprechernummer
    N = LS-Name
    V = LS-Lautstärke

    PHP-Code:
    {
      
    "LSS1" 1,
      
    "LSN1" "Computer",
      
    "LSV1" 20,
      
    "LSS2" 0,
      
    "LSN2" "ATV",
      
    "LSV2" 40,
      
    "LSS3" 0,
      
    "LSN3" "Loewe",
      
    "LSV3" 0,
      
    "LSS4" 0,
      
    "LSN4" "SZ",
      
    "LSV4" 0,
      
    "LSS5" 0,
      
    "LSN5" "KZ",
      
    "LSV5" 0,
      
    "LSS6" 0,
      
    "LSN6" "BZ",
      
    "LSV6" 0,
      
    "LSS7" 0,
      
    "LSN7" "WC",
      
    "LSV7" 0,
      
    "LSS8" 0,
      
    "LSN8" "VZ",
      
    "LSV8" 0,
      
    "LSS9" 0,
      
    "LSN9" "KÜ",
      
    "LSV9" 0,
      
    "LSS10" 0,
      
    "LSN10" "LG",
      
    "LSV10" 0

    Einen Kommentar schreiben:


  • coliflower
    antwortet
    Hallo zusammen,

    niemand eine Idee wie ich den "Array-Index“ „umbauen“ kann, von:

    $airplay['LSS1']

    kombinieren zu:

    $airplay['LSS‘] LSS als Konstante (LSS = LautSprecherStatus)

    $E[1]['value‘] am Eingang 1 ist eine 1 (für Lautsprecher 1 der eingebunden werden soll)

    um am ende wieder eine LSS1 zu haben ?

    Einen Kommentar schreiben:

Lädt...
X