Git Product home page Git Product logo

Comments (10)

Bubelbub avatar Bubelbub commented on July 27, 2024

Also kurz zum Cache:
Der soll nie ungültig werden, da, sobald die Verbindung aufgrund eines ungültigen Tokens geschlossen wird, die Verbindung erneut aufgebaut wird.
D.h. das System hilft sich selbst und weiß was zu tun ist.
Das ganze zu löschen ist aufgrund der Version etc. auch unnötig. Da wird ja noch mehr drinnen gespeichert.

Zum anderen Punkt:
Ja das kann man noch besser gestalten.
Habe ich sogar vor... Wenn die Zeit nicht begrenzt wäre :(

Du kannst per Foreach die ganzen Geräte-States durchgehen.
In der neuesten Version holt er automatisch die Werte/Geräte wenn keine abgerufen wurden.=

from smarthome-php.

adn77 avatar adn77 commented on July 27, 2024

Wow, das war eine schnelle Antwort, danke!

Mein Cache von letzter Woche hatte z.B. eine ConfigVersion=30, wenn ich ihn neu erstelle habe ich ConfigVersion=33.
Meine Frage bezog sich darauf, wie ich den erneuten Verbindungsaufbau mitbekomme und daraufhin auch die Cache-Datei neu schreiben kann.

Der andere Punkt sollte in keiner Weise eine Kritik darstellen! Ich wollte nur unnötige Anfragen an die Station vermeiden und deshalb nicht einfach irgendwelche Methoden aufrufen.
Aktuell verwende ich wie im Beispiel eine foreach über getLogicalDevices(), nachdem ich $sh->getEntities();
$sh->getAllLogicalDeviceStates();
aufgerufen habe.

from smarthome-php.

Bubelbub avatar Bubelbub commented on July 27, 2024

Der Cache wird immer nach Beendigung des Programms gespeichert/aktualisiert/erneuert.

Die Config Version hat in deinem Fall kein Problem verursacht und spielt auch keine Rolle.
Wenn der Token abgelaufen ist sollte sich das Programm - automatisch - einen neuen holen.
Teste es einfach mal indem du einen falschen Token in der Cache Datei einträgst! :)=

from smarthome-php.

adn77 avatar adn77 commented on July 27, 2024

Genau diesen Mechanismus meine ich... mein cache-File wird immer nur dann geschrieben, wenn es nicht existiert (siehe Code oben).
Wahrscheinlich fehlt mir noch ein Stück Code, um es auch bei geänderten Parametern zu speichern... wie sollte das aussehen?

from smarthome-php.

Bubelbub avatar Bubelbub commented on July 27, 2024

Das System macht das automatisch...

Ändere den Token beispielsweise und starte das Programm nochmal...

Die Config-Value erzeugt seitens RWE Zentrale keinen Fehler sodass das ignoriert wird vom System.
Der Session Token hingegen wird bei der Beendigung des Programms im Cache gespeichert.=

from smarthome-php.

adn77 avatar adn77 commented on July 27, 2024

Sorry, ich steh auf'm Schlauch. Hab das Token geändert, das Cache-File wird NICHT neu geschrieben.

Das "System" kennt mein Cache File doch überhaupt nicht... dafür müsste es doch das $config Objekt benutzen...

from smarthome-php.

Bubelbub avatar Bubelbub commented on July 27, 2024

Ou ou. Sorry!

Ich hab die Versionen verwechselt...
Bei der, die ich gerade entwickle, also die aktuelle im Master Branch nur etwas neuer, wird diese $config Abwicklung besser gehandelt.

Das ist ja auch nur eine example.php ^^
Kannst du ja so umschreiben, dass nach einem Befehl nochmal die Session Variable gesetzt wird.

Sry!

Ich überarbeite das am Wochenende direkt!=

from smarthome-php.

adn77 avatar adn77 commented on July 27, 2024

:) hab's kapiert, also nach dem ersten getEntities() einfach ein getSessionId() machen und falls diese von der gespeicherten abweicht das configFile neu schreiben.

(Hatte extra schon die Master version geclont... bin gespannt auf weitere Neuerungen!)

from smarthome-php.

Bubelbub avatar Bubelbub commented on July 27, 2024

Ja Wünsche nehme ich gerne entgegen ^^=

from smarthome-php.

adn77 avatar adn77 commented on July 27, 2024

Nochmal zur Klarstellung, falls sich noch jemand über sie Sessions wundert:
Die SessionID ändert sich mit jeder Kommunikation (jedem Request) mit der Zentrale - die example.php ist dahingehend unglücklich gewählt...

Zunächst gibt es eine SessionID beim Login.
Die nächste Verbindung von getEntities() erhält eine neue SessionID.
Sofern die Daten nicht bereits in einer Datenstruktur vorliegen, erzeugt getAllLogicalDeviceStates() eine weitere SessionID.

Wollte man den Login-Prozess bei der nächsten Verbindung abkürzen, so muss die jeweils letzte SessionID in das Config-File geschrieben werden - sozusagen am Ende des Programs:

    $config->addChild('SessionId', $sh->getSessionId());
    $config->addChild('ClientId', $sh->getClientId());
    $config->addChild('Version', $sh->getVersion());
    $config->addChild('ConfigurationVersion', $sh->getConfigVersion());
    $config->saveXML($configFile);

from smarthome-php.

Related Issues (5)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.