@Carsten did you got frankOL’s eventBasedUI working?
I try to merge it, but it does not really work.
Do I miss something? I am working on v4.1Alpha
created
last reply
May '16- 7
replies
- 2.8k
views
- 2
users
- 2
likes
@Carsten did you got frankOL’s eventBasedUI working?
I try to merge it, but it does not really work.
Do I miss something? I am working on v4.1Alpha
Just added a simple Reality Editor auto subscription model and cleaned up the library.
I think it can not get more simple. ![]()
I used the unique socked session id.
@Carsten I will try to cleanup the different methods for sending the object IDs and possition IDs.
You spend some time on it so far. I think since all pos values and all obj values are handled together at all time, it does not make sense to combine obj+pos.
I belive this was a leftover from the Arduino Yun. But we probably can separate it?
Yes, the part with the ID’s really is a mess
Yes I agree we should separate obj and pos ID’s. That would simplify things. For example in the WebUI for the “live status page” you need pos but you have to extract it from pos+obj and for that you have to know the length of the unique id which is pretty weird and who knows in the future the length of the unique id might change and break everything. And semantically it also makes sense to separate pos + obj because pos only needs to be unique within an object, Additionally I think we could rename pos to iopoint or something because that’s what the value represents.
yes thats right.
for now I would stick with pos, since it is used throughout the entire project.
And it is not to far off from its meaning: Position in Object.
OK… I debugged the data communication and kicked out some unused code.
The combination “pos+obj” is removed entirely from the server.
I removed the 12 UUID dependency from the server and the Reality Editor.
I could do this easily since every object has the property “name” as well (In weiser Vorahnung
) .
I plan to upload the new Reality Editor version to the app store next week. getting close to finalize it.
Still some debugging.
Are there any features that are super important that I should add?
Here is the changlog for the upcoming reality editor version 1.6.0.
If you have anything that should be added. Speak up now… ![]()
One point just came to my mind: For most objects it makes sense that upon the creation of a connection the receiving IOPoint is immediately updated with the value of the sending IOPoint. For example take two lamps where you connect the brightness. The user expects that when the connection has been made the two lamps have the same brightness. On the other hand if you have a knob which delivers relative values (mode “p” or “n”) you don’t want the connected IOPoint to be updated without the knob being turned. For example it would be weird if you connected the knob to the volume of a radio and it would immediately increase the volume by one step.
I think the developer should be able to define per IOPoint if it sends it’s current value upon link creation.
I sort of already implemented the immediately update part in my fork but didn’t make it configurable by the developer yet. But I think it’s pretty easy to implement.
You have a point.
I was thinking that maybe we should just add a neutral state for mode p or n or even just replace the instant response with an f so that the reaction on p or n is not given.
d= digital, f = floating point, n = negative step, p= positive step.
d, f , n and p all have an absolute floating point value between 0 and 1 or exactly 0 and 1 as part of their message. I think this value should always be send right after connection. P and N should be send as f. d should be send as d. This way we make sure that there is a unified rule for sending data. This makes sure that at any point a controlling action will cause an expected reaction. If we would introduce options to chose from, it could generate more confusion then it could solve. Because you never would know what you get, when you draw a line.
I see another point need to be taken care of and that is what happens when the connection is disconnected.
Imagine a robotic arm that is placed on position 0.5. If we started originally on position 0 then connected intentionally a knob to it that moves the arm to position 0.5. We are aware of the knob controlling the arm and expect its change of position. If we disconnect the arm anytime later it would go back to maybe an unexpected position since we might not even be aware what the line is actually connected to in the first place? Should it stay in place? Should it go back to 0?However with a light, it should maybe just turn off again as being “not in use”.
I think we can formulate a clear rules for when one thing is controlling another thing, but when the thing is left alone by it self, it should be set back to what the creator thought is rightfully designed. Therefore we will need to add a default state to an IO-Point. This default state will be returned to in case the connection is lost. This however requires that the origin and the destination point keep a record of all links and that the reality editor sends links and deleted links to both and not just the origin.
Further down this is also very useful for data verification, where the destination only accepts data signed with the ID of the active link… Anyhow. Its a bit of a plan we would need to spend some time on. For now point 1 can be implemented easily (or @Carsten you already have the code?). Point 2 needs some more thoughts.
I agree.
I don’t think it can be as simple as that. p and n are used to increment a value at the receiving end. But usually you don’t want to increment something directly upon connection. At least I can’t think of an example right now. That’s what I wanted to express with the knob and radio volume example. I think d and f should be updated immediately but not p and n.
What I implemented is super easy, I just call the objectEngine function when a link is created to trigger the send event. That’s one line of code. But as I said I don’t think that’s sufficient.
Point 2 I agree with. That’s probably gonna be quite the challenge ![]()