Comments (10)
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.
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.
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.
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.
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.
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.
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.
:) 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.
Ja Wünsche nehme ich gerne entgegen ^^=
from smarthome-php.
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)
- List Devices and rooms HOT 2
- example.php HOT 4
- Funktion für SwitchLogicalDevice HOT 5
- Notification HOT 57
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from smarthome-php.