Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

SaGe

Medlemmer
  • Innlegg

    9
  • Ble med

  • Besøkte siden sist

  • Dager vunnet

    3

Innlegg skrevet av SaGe

  1. On 04/02/2023 at 23:07, opticip said:

    Beste forklaring jeg har funnet så langt, meget bra. Spørmål fra nybegynner, hvor plasserer jeg disse filene ?

     

    Får kun opp OK, på alle 🙂 ingen verdier,, har du et eksempel på et config oppsett 🙂

     

     

    Det er riktig at verdiene er "ok". Selve verdiene fra skyen ligger i attributes.

    Jeg har brukt template sensorer for å få disse attributes som verdier om ønsket.

     

    template:
      - sensor:
          - name: "Powermode Waterheater"
            unique_id: powermode waterheater
            state: >
              {% if  state_attr('sensor.myuplink_powermode_waterheater', 'value') == 3   %}
                3000
              {% elif  state_attr('sensor.myuplink_powermode_waterheater', 'value') == 1   %}
                1250
              {% elif  state_attr('sensor.myuplink_powermode_waterheater', 'value') == 2   %}
                1750                          
              {% else %}
                0
              {% endif %}        
            unit_of_measurement: "W"
            
      - trigger:
        - platform: time_pattern
          hours: '*'
          minutes: '*'
          seconds: 1        
      - sensor:      
          - name: "Power Waterheater"
            unique_id: power_waterheater
            state: "{{ state_attr('sensor.myuplink_power_waterheater', 'value') }}"
            unit_of_measurement: "W" 

     

    Disse to template sensorer tar verdiene fra attributes og bruker de som "hovedverdi".

     

    Den første ser på powermode av varmtvannsberederen. 3 betyr 3000W effekt, 2 betyr 1750 og 1 betyr 1250.

    Siste sensor  oppdaterer seg hvert sekund (det er triggeren) og sjekker om attribute på aktuell strømbruk har endret seg. Den viser da alltid hvor mange W berederen bruker akkurat nå.

     

    Håper det hjelper. 🙂

  2. On 01/02/2023 at 13:23, opticip said:

    Beste forklaring jeg har funnet så langt, meget bra. Spørmål fra nybegynner, hvor plasserer jeg disse filene ?

     

     

     

    Filene er yaml filer. Alt som jeg skrev om, kan egentlig limes inn i configuration.yaml filen. 

     

    Det er imidlertid mye ryddigere å bruke packages. Da deler du opp på en måte opp configuration.yaml filen i flere filer.

    Jeg har feks en fil som heter varmtvann.yaml hvor alt ligger som gjelder varmtvannsberederen.

     

    Se her for mer info:

    https://www.home-assistant.io/docs/configuration/packages/

     

     

    • Like 1
  3. Ja, det kan jeg 🙂

     

    Først må man logge seg inn på dev.myuplink.com. Så velger man Documentation-Swagger.

    Man må så autorisere tilgangen med Authorize og skriver inn client_id og client_secret. Så velger man både READSYSTEM og WRITESYSTEM.

     

    Gå så helt ned til Systems og klikk på GET /v2/systems/me Get user systems.

    Så klikker du på Try it out og Execute.

     

    Man får så en slik response:

     

    {
      "page": 1,
      "itemsPerPage": 10,
      "numItems": 1,
      "systems": [
        {
          "systemId": "xxxxxxxxxxxxxxxxxxxxxxxxx",
          "name": "xxx",
          "securityLevel": "admin",
          "hasAlarm": false,
          "country": "Norway",
          "devices": [
            {
              "id": "HOIAX_98++++",
              "connectionState": "Connected",
              "currentFwVersion": "1.6.6",
              "product": {
                "serialNumber": "xxxxxx",
                "name": "xxxxx"
              }
            }
          ]
        }
      ]
    }

     

    DeviceID er den med HOIAX_.

     

     

     

    Så gjør du det samme med DevicePoints i Swagger. Bruk GET /v2/devices/{deviceId}/points  Get data points for device.

    Try it out og lim inn device_id.

     

    Man får så en slik response:

     

    [
      {
        "category": "xxx",
        "parameterId": "100",
        "parameterName": "Expected ambient temperature",
        "parameterUnit": "°C",
        "writable": true,
        "timestamp": "2023-01-31T11:51:38+00:00",
        "value": 20,
        "strVal": "20°C",
        "smartHomeCategories": [],
        "minValue": 1000,
        "maxValue": 3500,
        "enumValues": [],
        "scaleValue": "0.01",
        "zoneId": null
      },
      {
        "category": "xx",
        "parameterId": "101",
        "parameterName": "Expected inlet water temperature",
        "parameterUnit": "°C",
        "writable": true,
        "timestamp": "2023-01-31T11:51:38+00:00",
        "value": 5,
        "strVal": "5°C",
        "smartHomeCategories": [],
        "minValue": 400,
        "maxValue": 2000,
        "enumValues": [],
        "scaleValue": "0.01",
        "zoneId": null
      },
      {
        "category": "xx",
        "parameterId": "102",
        "parameterName": "Default eco setpoint",
        "parameterUnit": "°C",
        "writable": false,
        "timestamp": "2023-01-31T11:51:38+00:00",
        "value": 56,
        "strVal": "56°C",
        "smartHomeCategories": [],
        "minValue": null,
        "maxValue": null,
        "enumValues": [],
        "scaleValue": "0.01",
        "zoneId": null
      },
      {

     

    Svaret er mye lengre enn det jeg har limt inn her. parameterId er det du bruker i HomeAssistant (Se min første post). Hvis det er "writeable", kan du også endre ting med en rest_command.

     

    • Like 2
  4. Tenkte å dele hvordan jeg har integrert vår Høiax Connected varmtvannsbereder i Home Assistant.

    Det er dessverre ikke lokalt, men går gjennom skyen (myuplink).

     

    Vi har en 300 liter bereder som har to varmelementer (1750W og 1250W). Det er mulig å redusere effekten eller slå av varmtvannsberederen dersom man ser at man kommer over grensen for neste nettleietrinn. Det krever selvføgelig at man har en amsmåler.

     

    Det er også mulig å integrere berederen i Energy dashboard osv.

     

    Jeg har integrert berederen gjennom restful integrasjonen i Home Assistant.

     

    For å kunne bruke myuplink APIen trenger man en token. Den er gyldig i 1 time. For å få den må man autorisere seg med client_id og client_secret. Disse får man ved å registrere seg på dev.myuplink.com. Der setter man opp en application.

     

    Sensoren som oppdaterer token ser slik ut:

     

    sensor:
    
      - platform: rest
        name: myuplink_token
        resource: https://api.myuplink.com/oauth/token
        method: POST 
        headers:
          Content-Type: application/x-www-form-urlencoded
        payload: grant_type=client_credentials&client_id=[client_id]&client_secret=[client_secret]
        scan_interval: 1800
        json_attributes:
          - access_token
          - token_type #optional
          - expires_in #optional
        value_template: "ok"

     

    Token er en attribute fordi den er for lang til å være en vanlig value.

     

    Info fra varmtvannsberederen får man slik:

     

    
    rest:
      - scan_interval: 30
        method: GET
        resource: https://api.myuplink.com/v2/devices/[device_id]/points
        headers:
          Authorization: >
            Bearer {{ states.sensor.myuplink_token.attributes["access_token"] }}
        sensor:
          - name: " Myuplink Power Waterheater"
            unique_id: "myuplink_power_waterheater"
            json_attributes_path: "$.[?(@.parameterId=='400')]"
            value_template: "OK"
            json_attributes:
              - value
          - name: "Myuplink Fill level Waterheater"
            unique_id: "myuplink_fill_level_waterheater"
            json_attributes_path: "$.[?(@.parameterId=='404')]"
            value_template: "OK"
            json_attributes:
              - value
          - name: "Myuplink Element 1 Status Waterheater"
            unique_id: "myuplink_element_1_status_waterheater"
            json_attributes_path: "$.[?(@.parameterId=='506')]"
            value_template: "OK"
            json_attributes:
              - value
          - name: "Myuplink Element 2 Status Waterheater"
            unique_id: "myuplink_element_2_status_waterheater"
            json_attributes_path: "$.[?(@.parameterId=='505')]"
            value_template: "OK"
            json_attributes:
              - value
          - name: "Myuplink Powermode Waterheater"
            unique_id: "myuplink_powermode_waterheater"
            json_attributes_path: "$.[?(@.parameterId=='517')]"
            value_template: "OK"
            json_attributes:
              - value  
          - name: "Myuplink Setpoint Waterheater"
            unique_id: "myuplink_setpoint_waterheater"
            json_attributes_path: "$.[?(@.parameterId=='527')]"
            value_template: "OK"
            json_attributes:
              - value
          - name: "Myuplink Temperature Waterheater"
            unique_id: "myuplink_temperature_waterheater"
            json_attributes_path: "$.[?(@.parameterId=='528')]"
            value_template: "OK"
            json_attributes:
              - value                                                        
          - name: "Myuplink number expensive hours Waterheater"
            unique_id: "myuplink_expensive_hours_waterheater"
            json_attributes_path: "$.[?(@.parameterId=='545')]"
            value_template: "OK"
            json_attributes:
              - value 
          - name: "Myuplink number cheap hours Waterheater"
            unique_id: "myuplink_cheap_hours_waterheater"
            json_attributes_path: "$.[?(@.parameterId=='547')]"
            value_template: "OK"
            json_attributes:
              - value           

     

    Device_ID og de ulike parameterid kan man lett få ved å logge inn på dev.myuplink.com velge Documentation og Swagger. Så klikker dere på Authorize og bruker client_id og client_secret. Da kan man teste APIen og se hele JSON svaret fra APIen på alt som er mulig med APIen. Det er mange flere sensorer som kan settes opp.

     

    Jeg har så laget en rest_command som styrer hvilke elementer som er på i berederen. Da kan man velge å kun varme med 1250W eller 1750W når strømforbruket i huset er høy.

     

    Den ser sånn ut:

     

    rest_command:
      waterheater_powermode_change:
        url: https://api.myuplink.com/v2/devices/[device_id]/points
        method: patch
        headers:
          Authorization: >
            Bearer {{ states.sensor.myuplink_token.attributes["access_token"] }}
        content_type: "application/json-patch+json"
        payload: >
              {% if  states('input_select.waterheater_powermode') == "3000W"   %}
                { "517": "3", }
              {% elif  states('input_select.waterheater_powermode') == "1250W"   %}
                { "517": "1", }
              {% elif  states('input_select.waterheater_powermode') == "1750W"   %}
                { "517": "2", }                         
              {% else %}
                { "517": "3", }
              {% endif %}

     

    Samme metode kan brukes til å endre temperaturinnstilling, bytte mellom ulike modus, endre antall dyre timer osv.

     

    Håper dette kan hjelpe noen.

     

    • Like 4
  5. Ser nå at dette ikke funker hvis det er flere rutenr. som går fra holdeplassen. Da viser sensoren kun neste buss, uansett rutenr.

     

    Jeg fikset det slik for Fyllingsdalsveien hvor jeg ønsker neste 50E buss:

     

      - platform: rest
        resource: https://skyss.giantleap.no/public/departures?Hours=12&StopIdentifiers=12012101
        name: skyss50E_1
        value_template: >
          {% if value_json["PassingTimes"][0]["RoutePublicIdentifier"] == '50E' %}
          {{ value_json["PassingTimes"][0]["DisplayTime"] }}
          {% elif value_json["PassingTimes"][1]["RoutePublicIdentifier"] == '50E' %}
          {{ value_json["PassingTimes"][1]["DisplayTime"] }}
          {% elif value_json["PassingTimes"][2]["RoutePublicIdentifier"] == '50E' %}
          {{ value_json["PassingTimes"][2]["DisplayTime"] }}
          {% elif value_json["PassingTimes"][3]["RoutePublicIdentifier"] == '50E' %}
          {{ value_json["PassingTimes"][3]["DisplayTime"] }}
          {% elif value_json["PassingTimes"][4]["RoutePublicIdentifier"] == '50E' %}
          {{ value_json["PassingTimes"][4]["DisplayTime"] }}
          {% else %}
          No bus
          {% endif %}

     

    Jeg fikk også beskjed om at man kunne bruke en commandline sensor. Men det har jeg ikke fått til ennå. Ifølge en som hjalp meg på  Home Assistant forumet skal det være noe slikt:

     

    platform: command_line
    command: curl ... | jq '.PassingTimes|map(select(.RoutePublicIdentifier == "50E"))|.[0]'

     

  6. Kjekt å se at tipset mitt hjalp noen ?

     

    Jeg har kjøpt meg noen Google Home i USA og også klart å få tidene som svar på Google Home. Kanskje nyttig siden Google Home nå lanseres i Norge.

     

    Jeg brukte en IFTTT trigger som sender en http post request med webhooks til Hassio for å starte en script som så sender enn tts til Google Home. Ulempen er at man ikke kun kan sende til den Google Home man har spurt og at musikk avbrytes (og ikke startes igjen) når det kommer en tts fra Hassio. Jeg bare sender alt til Google Home høytaleren som står i gangen siden det er der jeg oftest trenger svaret. Ganske nyttig når man ofte er sent ute ?

  7. Tenkte kanskje noen her ville like dette. Kan ikke se at noen har postet dette før. 

     

    Jeg så at skyss tilbyr muligheten til å lage en egen avgansskjerm. Har kan man selv velge hvilke holdeplasser, hvilke busser og hvilken retning som skal vises.

     

    https://www.skyss.no/Verdt-a-vite/din-avgangsvisning/

     

    Jeg laget min egen avgangsskjerm og fant ut at neste avgang kan tas inn som sensor i homeassistant. 

     

    Her er en test screen:

    https://avgangsvisning.skyss.no/board/#/?stops=12010023&viewFreq=10000&terminal=true&colors=dark&name=Test1

     

    Når man velger Inspect i Chrome finner man kilden til visningen som for denne test visningen er:

    https://skyss.giantleap.no/public/departures?Hours=12&StopIdentifiers=12010023&callback=angular.callbacks._1

     

    Så fjerner man alt fra og med &callback

    https://skyss.giantleap.no/public/departures?Hours=1&StopIdentifiers=12010023

     

    Man får da en JSON som kan brukes i en Rest sensor i home assistant.

     

      - platform: rest
        resource: https://skyss.giantleap.no/public/departures?Hours=1&StopIdentifiers=12010023
        name: skysstest
        value_template: '{{ value_json["PassingTimes"][0]["DisplayTime"] }}'

     

    Bytter man ut [0] med [1] får man avgangen etter neste avgang.

    • Like 1
×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.