JSA986
JSA986

Reputation: 5936

Change Away Status on Nest Thermostat (Nest API)

Using the Nest API I am trying to set the nest thermostat's away status

I can read the status correctly. Does anyone with some experience of this API know how to go about setting this status?

in "FirebaseManager.h"

 Firebase *newFirebase2 = [self.rootFirebase childByAppendingPath:@"structures"];
    [newFirebase2 observeEventType:FEventTypeChildAdded withBlock:^(FDataSnapshot *snapshot) {

         // Put structures into a dictionary
         NSMutableDictionary *dict = snapshot.value;
         NSLog(@"\n\n\n1. Away Status =  %@", [dict valueForKey:@"away"]);

         NSLog(@"Dict Contents %@", dict); // <--- Reads thermostat status.  A string either home or away

        dict[@"away"] = @"away";  //<--- Changes status string but not a correct solution, and does not set the stat to away

        //Changes status name but this is not parsed back to firebase
        NSLog(@"new status =  %@", [dict valueForKey:@"away"]);

    }];

Upvotes: 0

Views: 201

Answers (1)

Jay
Jay

Reputation: 35667

To update a child value

assume this structure

structures
   structure_id_0
      away: "home"

setting the away node to a string of away (this code is quite verbose so it's easy to follow)

Firebase *structuresRef = [self.rootFirebase childByAppendingPath:@"structures"];

//build a reference to where we want to write structures/structure_id/
Firebase *thisStructureRef = [structuresRef childByAppendingPath:@"structure_id_0"];
Firebase *awayRef = [thisStructureRef childByAppendingPath:@"away"];

[awayRef setValue:@"away"];

Now, if you want to do this for snapshots that have been retrieved via observing a node with FEventTypeChildAdded, the node name will be whatever is used in place of structure_id_0. The is the key of the key:value pair.

That can be obtained via snapshot.key.

So NSString *key = snapshot.key

Substitute the key variable in for @"structure_id_0" in the path.

Also check out Firebase Writing Data, and then the updateChildValues for another option.

Upvotes: 3

Related Questions