Coder Social home page Coder Social logo

zefau / iobroker.jarvis Goto Github PK

View Code? Open in Web Editor NEW
147.0 147.0 38.0 579.57 MB

jarvis - just another remarkable vis

Home Page: https://forum.iobroker.net/topic/49776

License: Other

CSS 1.67% JavaScript 74.90% HTML 23.43%
gui home-automation iobroker jarvis material-design-lite material-ui smarthome vis visualisation

iobroker.jarvis's People

Contributors

apollon77 avatar dependabot[bot] avatar simatec avatar zefau avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

iobroker.jarvis's Issues

Icons of blinds do not change

Icons of blinds do not change depending on the value as described in the wiki.

The following JSON is used to create the device on the screenshot below.

{
   "wohnzimmer_rolladen":{
      "name":"Wohnzimmer",
      "room":"wohnzimmer",
      "function":"blind",
      "states":{
         "level":{
            "state":"hm-rpc.1.XXXXXXXXXX.1.LEVEL",
            "action":"hm-rpc.1.XXXXXXXXXX.1.LEVEL"
         },
         "activity":{
            "state":"hm-rpc.1.XXXXXXXXXX.1.STOP",
            "action":"hm-rpc.1.XXXXXXXXXX.1.STOP"
         }
      },
      "jarvis":{
         "group":"rolladen_erdgeschoss",
         "primary":"level"
      }
   }
}

blind

Move non-reusable Components to Pages

Move following non-reusable Components to Pages:

  • Notifications
  • TopBar

Furthermore:

  • StatusSnackbar to Status
  • Rename TabBar to Tabs
  • Rename Popup to DeviceStateDetails
  • Rename GridContainer to Columns

States in popup window not correct

The state in the popup window does not fit to the state shown in the overview.

The following JSON is used in the devices JSON to create the state on the screenshot.

{
  "alarm_aktiviert": {
    "name": "Status",
    "function": "default",
    "states": {
      "activated": {
        "state": "alarm.0.status.activated"
      }
    },
    "jarvis": {
      "group": "alarm",
      "state": {
        "true": "aktiviert",
        "false": "deaktiviert"
      },
      "icon": "alarm-check"
    }
  }
}

state

Please add you adapter to our repository

We saw your adapter and if it is ready please request that it is added to the repository. With this it becomes available for all users. Please consult https://github.com/ioBroker/ioBroker.repositories#add-a-new-adapter-to-the-latest-repository and the following sections for more details.
If you need help, contact us in the forum https://forum.iobroker.net/ or in the developer chat https://github.com/iobroker-community-adapters/info .

Thank you for your support.

Default icon for device

Add an icon for the device itself, which is used when no state specific icon is defined. Though, state specific icon will override device icon.

Label of blinds states not used in widget

I have a clean installation of v1.0.0-beta-4. I imported my alias devices. My blinds are correctly recognized as blinds.

I entered labels for the states and they are saved in the JSON, but they are not used in the widget.

image

image

There is no error message in the console.

add new module ScriptStatus

List all scripts from ioBroker including their status (like the widget AdapterStatus, but for scripts).

getObjectView('system', 'script', null, (err, res) => console.error(err, res));

Import of heating alias devices

While importing heating alias devices, the following mapping should be applied:

temperature: Display state = ACTUAL
setTemperature: Display state = SET, trigger state = SET

Think about to fix the issues found by adapter checker

I am an automatic service that looks for possible errors in ioBroker and creates an issue for it. The link below leads directly to the test:

https://adapter-check.iobroker.in/?q=https://raw.githubusercontent.com/Zefau/ioBroker.jarvis

  • [E150] No common.connectionType found in io-package.json
  • [E152] No common.dataSource found in io-package.json
  • [E506] More non translated in german or russian words found in admin/words.js. You can use https://translator.iobroker.in/ for translations
  • [E300] Not found on travis. Please setup travis
  • [E605] No actual year found in copyright. Please add "Copyright (c) 2019-2021 zefau [email protected]" at the end of README.md
  • [E701] No actual year found in LICENSE. Please add "Copyright (c) 2019-2021 zefau [email protected]" at the start of LICENSE

Thanks,
your automatic adapter checker.

P.S.: There is a community in Github, which supports the maintenance and further development of adapters. There you will find many experienced developers who are always ready to assist anyone. New developers are always welcome there. For more informations visit: https://github.com/iobroker-community-adapters/info

Styling of state values not working

In v0.0.4 the styling of states is not working as expected.

I'm using the following JSON to change the color of the icon and the state value depending on the value. The styling of the icon works for both values, but the the styling of the state value only works for "true".

{
  "anwesenheit_markus": {
    "name": "Markus",
    "function": "default",
    "states": {
      "presence": {
        "state": "0_userdata.0.anwesenheit.markus"
      }
    },
    "jarvis": {
      "group": "Anwesenheit",
      "state": {
        "true": "anwesend",
        "false": "abwesend"
      },
      "styles": {
        "icon": {
          "true": {
            "color": "purple"
          },
          "false": {
            "color": "red"
          }
        },
        "state": {
          "true": {
            "color": "purple"
          },
          "false": {
            "color": "red"
          }
        }
      },
      "icon": "account"
    }
  }
}

styling

Widget iFrame

Add new widget so that external contents can be loaded via iFrame, e. g. surveillance cameras or vis.

Layout configuration not available

My layout is configured via JSON and working well in jarvis. When I try to change the configuration via the UI, it is not available in easy and raw configuration.

layout_configuration

Sorting states of a device

New states of a device are added at the top. The implemented possibility to move states up and down is not working. I tried it directly after creating the new state and also after saving the configuration.

Add option to send usage data to developer

Opt-in (option in settings) to share usage data with developer

  • ioBroker version, jarvis version
  • Web adapter version and settings
  • Socket-io adapter version and settings
  • Devices configuration
  • Layout configuration
  • Settings configuration
  • Browser information
  • Console errors / Exceptions

  • opt-out in ioBroker adapter settings
  • opt-out in jarvis settings including identifier and last sent time
  • add interval on daily basis

Level of blinds in pop-up window

For blinds the level value is shown next to the buttons (up and down) in the pop-up window. This is not only confusing due to little space, but also inconsistent, as the level value is not show for dimmable lights.

Proposal: Hide the label value and add some space between the slider and the buttons to make it look similar the the pop-up of dimmable lights.

blind

Skip non existing groups while parsing the layout definition

It is possible to configure groups of devices and not use it in the layout, which is fine. Using a group in the layout without having it defined under devices causes jarvis to not render the layout. Instead the screen stays gray.

Possible solution: While parsing the layout definition, check if a group is available. If not, skip the group or handle it appropriately.

Saving device config

Changes to a device configuration aren't saved if you quit the pop-up by using the "save" button on the right. You have to save it with the hook on the left side.

Maybe you can either block the save button or make it save the changes anyways.

Problems in settings dialogue after changing language

I have a clean installation with v1.0.0-beta.4.

After switching the language from German to English there is a problem with the translation of this dialogue. Besides that German is still selected, although in the JSON the language is set to "en-GB".

image

To switch back to German again you have to select English, then select German and then save the dialogue.

There is no message in the console.

Is it possible to add i18n support

We are a group of smart home enthusiasts from China, and currently found that this program does not run well in the Chinese environment. We wanted to submit some translated text, but found that not all of these contents are in the i18n file. Can you make relevant improvements to facilitate us to submit the corresponding translation files。

https://bbs.iobroker.cn/

image

Add dropdown field

My lawn mower has the following modes: Auto (0), Manual (1), Home (2) and End of Day (3). Currently it is not possible to show the mode in Jarvis and switch between the modes.

Please add the possibility to select different options. The most simple way could be a dropdown field.

Update documentation for v1.0.0

  • Home screen
    • How to open jarvis
    • Update screenshots
  • Devices configuration
    • describe State Style and Display further in detail
    • describe icon and icon style
  • Layout configuration
    • Widget configuration
    • Modules
    • Functions
      • Translate functions to German
      • fix links of table of contents
      • move adapter-specific configuration examples from Devices to Functions
  • Settings configuration

Impressions

Button is pulsating

I have a clean installation of v1.0.0-beta.8 and no configuration. The config dialogue pops-up and now the "Abbrechen" button is pulsating until you click somewhere else. I tried Google Chrome and Microsoft Edge. In both browsers it's the same.

image

Originally posted by @braindead1 in #31 (comment)

Icons of blinds states not working

I just noticed that icons are not working as well. I entered icons for the states and they are saved in the JSON, but they are not used in the widget.

image

image

Suggestion of new data structure

   "...":{
      "name": ...
      "function": ...
      "groups":"Group 1, Group 2",
      "states":{
         "...":{
            "stateNode": ... // formerly state
            "actionNode": ... // formerly action
            "unit": ... // moved here from `jarvis`
            "label": ...
            "icon": ...  // moved here from `jarvis`
            "iconStyle": ...  // moved here from `jarvis`, formerly part of styles (being nested)
            "state": ...  // moved here from `jarvis`
            "stateStyle": ... // moved here from `jarvis`, formerly part of styles (being nested)
         },
          ... more states ...
      },
      "attributes":{
           ....
      },
      "jarvis":{
           ....
      }
   }

Labels for states

Although I understand your intention to implement translations, I assume that most users will only use one language. Besides that I think that there will be situations where a state name may have different translations depending on the device.

Instead of translating states in jarvis.0.settings it may be a good idea to implement the possibility to set the name (label) of the state in the state.

{
   "esszimmer_fenster":{
      "name":"Esszimmer",
      "room":"esszimmer",
      "function":"window",
      "states":{
         "open":{
            "state":"hm-rpc.1.XXXXXXXXXX.1.STATE",
            "label":"Status"
         }
      },
      "jarvis":{
         "group":"fenster_erdgeschoss"
      }
   }
}

Originally posted by @braindead1 in #9 (comment)

Swipe to switch between tabs

On my smartphone I created a link on my homescreen to open and use jarvis like a native app. This works really well. To improve this "native app" feeling, it would be great to be able swipe between tabs.

LevelBody for blinds not working as expected

I have to differentiate my initial comment that the LevelBody is not working at all:

  • The LevelBody is working for dimmable lights as described and expected.
  • The LevelBody is not working for blinds.

There is no error in the console.

Changing colors has no effect

I have a clean installation of v1.0.0-beta.4.

Changing the colors has no effect, although it is correctly saved in the JSON.

image

There is no message in the console.

Idea for improved configuration of groups and devices

Current situation:*
As of now groups are created as part of the layout. While creating devices you have to assign at least one group to the device. If you assign multiple groups, in every group the same information is used (name, states, subcategory, etc.) to render the device.

Problem:
Let's assume you want to have a tab for functions (with the groups heating, windows, blinds, etc.) and another tab for rooms (with the groups living room, dining room, kitchen, etc.). Currently on both tabs the devices are named the same (e.g. "Wohnzimmer Heizung"), whereas it would make more sense to call "Wohnzimmer Heizung" in the heating group "Wohnzimmer" and in the living room group "Heizung".

Possible solution:

  1. Create groups as part of the layout.
  2. Define devices as they are defined now without assigning groups.
  3. Assign devices to groups with the possibility to set a display name and a subcategory.

Tab labels

If a tab only consists of an icon and no label is given, there is also just an icon in the title row above.

tab

Instead of leaving out the label of tabs to just show an icon, please implement an option to show only the icon as tab and show icon and label in the title row.

As this is mainly interesting on small displays, another possibility would be to hide the label on small screens.

Configure colors

Currently jarvis uses blue as primary colour. A possibility to configure primary and secondary color would be great.

Hide log and configuration button on small screens

On small screens the buttons to open the log and the configuration disturb the clean look of jarvis. Besides that I believe that especially the configuration is done on larger screens. Maybe you could also think about changing the log pop-up to an tab of the configuration pop-up. An option to hide the buttons on small screens would be good.

On value of dimmable lights

In jarvis it is possible to turn on dimmable lights without selecting the brightness level. By default the light is then turned on with 100%. It would be great if you could implement an option to set the on value.

Import of blind alias devices

I have a clean installation of v1.0.0-beta-4. I imported my alias devices. My blinds are correctly recognized as blinds. The "SET" state is automatically transferred into "level".

To get the blind widget correctly to work I have to manually create the "activity" state and match it to the "WORKING" state of the alias device. Addtionally I have to enter the "STOP" state as trigger datapoint.

For the "level" state I have to manually enter the "SET" state as trigger datapoint.

The configuration of blind alias devices should automatically be done as on the screenshot below.

image

Device configuration

Instead of showing the configuration of devices in columns, it should be shown in rows. Especially on smaller screens this would improve the readability.

configuration

As my layout configuration is not visible (see #17) I cannot check if this refers only to devices.

Function blind throws error

In Google Chrome and Microsoft Edge sorting does not work for me. Directly after opening Jarvis I get the following error in the console:

Function (blind) # undefined
overrideMethod @ react_devtools_backend.js:2273
value @ Log.js:37
(anonymous) @ blind.js:96
Promise.catch (async)
(anonymous) @ blind.js:96
is @ react-dom.production.min.js:211
bl @ react-dom.production.min.js:257
t.unstable_runWithPriority @ scheduler.production.min.js:19
Hi @ react-dom.production.min.js:122
ml @ react-dom.production.min.js:257
Js @ react-dom.production.min.js:239
(anonymous) @ react-dom.production.min.js:123
t.unstable_runWithPriority @ scheduler.production.min.js:19
Hi @ react-dom.production.min.js:122
qi @ react-dom.production.min.js:123
Yi @ react-dom.production.min.js:122
Gs @ react-dom.production.min.js:230
enqueueSetState @ react-dom.production.min.js:132
x.setState @ react.production.min.js:12
(anonymous) @ App.js:158
Promise.then (async)
(anonymous) @ App.js:156
Promise.then (async)
value @ App.js:151
os @ react-dom.production.min.js:212
hl @ react-dom.production.min.js:255
t.unstable_runWithPriority @ scheduler.production.min.js:19
Hi @ react-dom.production.min.js:122
fl @ react-dom.production.min.js:248
Js @ react-dom.production.min.js:239
Gs @ react-dom.production.min.js:230
Nl @ react-dom.production.min.js:281
(anonymous) @ react-dom.production.min.js:284
tl @ react-dom.production.min.js:240
Hl @ react-dom.production.min.js:284
t.render @ react-dom.production.min.js:290
637 @ index.js:8
i @ index.html:1
398 @ main.91c26d32.chunk.js:1
i @ index.html:1
t @ index.html:1
r @ index.html:1
(anonymous) @ main.91c26d32.chunk.js:1

There is no error in the console when I try to sort states.

Originally posted by @braindead1 in #25 (comment)

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.