[Frage] Wie lautet der Syntax für adapter.getState

Wie man einen Adapter entwickelt, oder wie man debuggen kann.
Antworten
peoples
professional
Beiträge: 609
Registriert: 19.03.2017, 13:28

[Frage] Wie lautet der Syntax für adapter.getState

Beitrag von peoples » 24.06.2018, 12:46

Hi,

ich traue mich fast nicht zu fragen aber mir gelingt es einfach nicht einen durch den Adapter angelegten Datenpunkt auf undefined zu prüfen und dessen wert auszulesen. Die adapter.config.... Datenpunkte klappen wunderbar.

Der Datenpunkt den ich auslesen will lautet: backitup.0.History.Backup_history (der Wert ist ein String : Testwert)

Im Js-Script-Adapter-Editor ist das überhaupt kein Thema aber ich bekomme es in der Main.js einfach nicht hin, folgendes habe ich versucht:

Code: Alles auswählen

adapter.log.info(adapter.getState(adapter.name+'.'+adapter.instance+".History.letztes_ccu_Backup"));
adapter.log.info(adapter.getState(adapter.name+'.'+adapter.instance+".History.letztes_ccu_Backup").val);
und zig Abwandlungen davon.

Das setzen der States klappt wunderbar nur das prüfen ob undefined und das auslesen nicht.
Wäre toll wenn mir hier mal jemand den codeschnipsel anpassen könnte.

Eine Frage hätte ich zusätzlich, wie ich es verstanden habe ist es nicht möglich einen Datenpunkt zeitgleich mit adapter.setObjectNotExists zu erstellen und dessen Wert einzutragen oder?

Denn beim Scripten mit CreateState klappt das ja.

Vielen Dank schonmal
Gruß
Steffen

Bitte keine Fragen zu Beiträgen via PN

Benutzeravatar
Jey Cee
guru
Beiträge: 1650
Registriert: 22.12.2014, 17:00

Re: [Frage] Wie lautet der Syntax für adapter.getState

Beitrag von Jey Cee » 24.06.2018, 14:03

Laut Doku:

Code: Alles auswählen

adapter.getState('myState', function (err, state) {
    
    adapter.log.info(
          'State ' + adapter.namespace + '.myState -' + 
          '  Value: '        + state.val + 
          ', ack: '          + state.ack + 
          ', time stamp: '   + state.ts  + 
          ', last changed: ' + state.lc
    ); 

Benutzeravatar
apollon77
guru
Beiträge: 7104
Registriert: 10.04.2015, 12:27

Re: [Frage] Wie lautet der Syntax für adapter.getState

Beitrag von apollon77 » 24.06.2018, 15:45

Ist das gleiche wie bei einer anderen frage von dir: Adapter ist alles asynchron!! Also per callbacks ausschließlich.


Gesendet vom Handy ...
How-to:
* Debug-Log für einen Adapter/Instanz einschalten? -> Instanzen -> Expertenomodus -> Spalte Loglevel/Log-Stufe

peoples
professional
Beiträge: 609
Registriert: 19.03.2017, 13:28

Re: [Frage] Wie lautet der Syntax für adapter.getState

Beitrag von peoples » 24.06.2018, 20:40

Da bin ich noch nicht wirklich durchgestiegen :lol:

Ich versuche mich zu bessern
Gruß
Steffen

Bitte keine Fragen zu Beiträgen via PN

Benutzeravatar
apollon77
guru
Beiträge: 7104
Registriert: 10.04.2015, 12:27

Re: [Frage] Wie lautet der Syntax für adapter.getState

Beitrag von apollon77 » 24.06.2018, 20:48

Wenn man aus dem JavaScript-Adapter Skript-Umfeld kommt muss man da umdenken.

Im JavaScript-Adapter sind einige Dinge synchron gemacht damit es beim Scripte-Scheiben einfacher ist. Aber Adapter ist "plain" :-)
How-to:
* Debug-Log für einen Adapter/Instanz einschalten? -> Instanzen -> Expertenomodus -> Spalte Loglevel/Log-Stufe

peoples
professional
Beiträge: 609
Registriert: 19.03.2017, 13:28

Re: [Frage] Wie lautet der Syntax für adapter.getState

Beitrag von peoples » 24.06.2018, 20:52

apollon77 hat geschrieben:
24.06.2018, 20:48
Wenn man aus dem JavaScript-Adapter Skript-Umfeld kommt muss man da umdenken.

Im JavaScript-Adapter sind einige Dinge synchron gemacht damit es beim Scripte-Scheiben einfacher ist. Aber Adapter ist "plain" :-)
Erschwerend kommt noch hinzu dass ich eigentlich nur ein Hobby-Scripter bin und das alles durch "learning bei schmeißing in the eis cold water" lernen muss :lol:
Gruß
Steffen

Bitte keine Fragen zu Beiträgen via PN

Benutzeravatar
apollon77
guru
Beiträge: 7104
Registriert: 10.04.2015, 12:27

Re: [Frage] Wie lautet der Syntax für adapter.getState

Beitrag von apollon77 » 24.06.2018, 21:00

Danach kannst Du noch viele weitere Adapter bauen :-))
How-to:
* Debug-Log für einen Adapter/Instanz einschalten? -> Instanzen -> Expertenomodus -> Spalte Loglevel/Log-Stufe

peoples
professional
Beiträge: 609
Registriert: 19.03.2017, 13:28

Re: [Frage] Wie lautet der Syntax für adapter.getState

Beitrag von peoples » 24.06.2018, 21:13

apollon77 hat geschrieben:
24.06.2018, 21:00
Danach kannst Du noch viele weitere Adapter bauen :-))
Bis dahin bin ich ergraut!

Eine Frage hab ich noch, wie macht der Profi das nun dass er mit:

Code: Alles auswählen

adapter.setObjectNotExists('History.letztes_minimal_Backup', {type: 'state', common: {name: 'Letztes minimal Backup', type: 'string', state: 'Noch kein Backup', role: 'indicator'}, native: {}});
Den Datenpunkt erstellt und ihn gleich mit bspw. (Noch kein Backup) befüllt?

Weil wenn jetzt der Datenpunkt neu erstellt wurde, ist er ja leer d.h. wenn ich in abfrage bekomme ich einen error (TypeError: Cannot read property 'val' of null) Wenn ich ihn jedoch mit setState befüllen würde ohne vorher zu prüfen ob da schon was drin steht, würde ja bei jedem Adapterstart wieder der "Default-Eintrag" reingeschrieben werden.

Oder sehe ich das falsch?
Gruß
Steffen

Bitte keine Fragen zu Beiträgen via PN

Benutzeravatar
apollon77
guru
Beiträge: 7104
Registriert: 10.04.2015, 12:27

Re: [Frage] Wie lautet der Syntax für adapter.getState

Beitrag von apollon77 » 24.06.2018, 21:52

An der Stelle würde ich das Trennen. Du machst einmal setObjectNotExists und danach ein "getState" und im Callback wenn state oder stata.val ===null ist dann den Wert setzen.
How-to:
* Debug-Log für einen Adapter/Instanz einschalten? -> Instanzen -> Expertenomodus -> Spalte Loglevel/Log-Stufe

Benutzeravatar
AlCalzone
guru
Beiträge: 2561
Registriert: 01.03.2016, 15:16

Re: [Frage] Wie lautet der Syntax für adapter.getState

Beitrag von AlCalzone » 13.07.2018, 15:03

Ich weiß ich bin etwas spät, aber dafür gibts eigentlich

Code: Alles auswählen

{..., common: { ..., def: "Standardwert", ... }, ...}
Meine Adapter:
IKEA Trådfri: GitHub | Test & Hilfe
G-Homa: GitHub | Test & Hilfe

Benutzeravatar
apollon77
guru
Beiträge: 7104
Registriert: 10.04.2015, 12:27

Re: [Frage] Wie lautet der Syntax für adapter.getState

Beitrag von apollon77 » 13.07.2018, 15:27

Menno ... stimmt ... du hast recht ... ohje ... :-)
How-to:
* Debug-Log für einen Adapter/Instanz einschalten? -> Instanzen -> Expertenomodus -> Spalte Loglevel/Log-Stufe

Antworten