NEWS

Woher globale Einheiten (°C / F), (mm / inch)?

  • Starter

    ich würde gerne Code bauen, der mit Temperaturen korrekt umgeht und die Einheiten des Systems berücksichtigt. Dazu müsste es doch möglich sein auf die "Grundeinstellungen" zuzugreifen - wie geht das?
    Und gibt es im ioBroker dafür Umrechnungsfunktionen oder baut man die selbst?


  • ltathome sagte:

    baut man die selbst?

    Ja, z.B. per common.alias.read.

  • Starter

    ok - das alias-thema habe ich nicht verstanden - belibt auf meiner Liste der "mus ich noch ausprobieren/lesen" themen.
    Die Eingangsfrage war: wo legt ioBroker die "Systemgrundeinstellungen" ab und wie komme ich per js da dran?


  • ltathome sagte in Woher globale Einheiten (°C / F), (mm / inch)?:

    wo legt ioBroker die "Systemgrundeinstellungen" ab

    Im Object "system.config".

    ltathome sagte in Woher globale Einheiten (°C / F), (mm / inch)?:

    wie komme ich per js da dran?

    var common = getObject('system.config').common;
    var tempUnit = common.tempUnit;
    // usw.
    
  • Starter

    paul53 Wunderbar - danke!

  • Starter

    das funktioniert prima in scripten - in einem eigenen Adapter rennt der auf Fehler, bzw. liefert nichts.

    Es scheint auch noch andere "Nicklichkeiten" beim übertragen von Code in einen Adapter zu geben:

    z.B. hatte ich mit:

    subscribe({id: "fhem.0.AU_GA_TF_Garage.humidity", change:'any'}, ZimmermanTrackHumidity);
    

    nen subscribe auf nen Luftfeuchte-Sensor gesetzt und der Callback hat dann mit:

    ...
    function ZimmermanTrackHumidity(obj) {
        var ts = new Date(obj.newState.ts);
        var currenthour = ts.getHours();
        var newstate = parseFloat(obj.newState.val);
    ...
    

    wie erwartet die Werte geliefert.

    wenn ich nun im Adapter:

    this.subscribeForeignStates("fhem.0.AU_GA_TF_Garage.humidity", this.trackHumidity);
    

    mache und der Callback so aussieht:

    	trackHumidity(obj) {
    		var ts = new Date(obj.newState.ts);
    		var currenthour = ts.getHours();
    		var newstate = parseFloat(obj.newState.val);
    

    dann bekomme ich:

     Caught by controller[0]: TypeError: Cannot read property 'newState' of null
    

Suggested Topics

1.5k
Online

34.7k
Users

40.8k
Topics

559.1k
Posts