Hilfe - Funktion aufrufen

Hallo miteinander.
ich komm nocht weiter. Ich bräuchte mal Hilfe.
Beschreibung: Cayenne Dashoard ( ACTUATOR_PIN 4 ) hat per click den Wert 1 oder 0. (Funktioniert - kontroll Led angeschlossen und im serial ersichtlihc). DIESER Wert soll das Alarmsystem (action)aktivieren(1) oder deaktivieren(0) und so lange unverändert lassen bis sich der Wert vom ActuatorPin via cayenne ändert. ( Funktioniert leider nicht - action function geht momentan gar nicht.
Bi über Hilfestellung sehr dankbar.

*Franks AlarmSystem Lasertrap for unallowed entry to the garden. PIR for enemy nearby.
* Set the buttonPin 23 on cayenne dashboard to value 1: alarmsystem = online and running.
* Set teh buttonPin 23 on cayenne dasboard to value 0: the alarmsystem = offline / stopped.
* at this moment: set the value on cayenne dashboard is working and conrol led is working
* -the alaarmsstem is NOT working! ERROR by the giving value to the action function
* the actionfunction should run as long the value ==1
* Buzzer for Alarmsound, Stroboskobflashlight. For Testing Led. on the planfor later camera for pictures via mobile
*/
#define CAYENNE_PRINT Serial  // Comment this out to disable prints and save space
#include <CayenneMQTTESP32.h>
const int buttonPin =23;
const int photoResistor = 22; 
const int pirPin = 21;
const int buzzerPin = 19;
const int ledPin = 18;       
const int flashPin = 15;

char ssid[] = "xxxxxxy";
char pass[]="Fxxxxxxxx";

char mqtt_username[] ="be7xxxxba90";";
char mqtt_password[] = "c01dbdxxxxb7";";
char client_id[] = "43c393cxxxx0-e";

#define VIRTUAL_CHANNEL 1
#define ACTUATOR_PIN 4 

void setup()
{
 
 Serial.begin(9600);
 pinMode(ACTUATOR_PIN, OUTPUT);
 Cayenne.begin(mqtt_username, mqtt_password, client_id, ssid, pass);
  pinMode(buttonPin, INPUT);
  pinMode(pirPin, INPUT); 
  pinMode(buzzerPin, OUTPUT);
  pinMode(ledPin, OUTPUT);  
  pinMode(photoResistor, INPUT);
  pinMode(flashPin, OUTPUT);
  int value;
  //laser is dircet 5v and ground ( no pin)
}

void loop()
{
 Cayenne.loop();
 int value; 
   if (value ==1)
 { 
   action();
   }    
 }


// This function is called when data is sent from Cayenne.
CAYENNE_IN(VIRTUAL_CHANNEL)
{
int value;
value = getValue.asInt();
CAYENNE_LOG("Channel %d, pin %d, value %d", VIRTUAL_CHANNEL, ACTUATOR_PIN, value);
// Write the value received to the digital pin.//when value is 1 run the action //function, if value is 0 skip the action function
digitalWrite(ACTUATOR_PIN, value);

}

void action(){
 int pirDetected = digitalRead(pirPin);
 int detected = digitalRead(photoResistor);
 if ((detected == LOW) || (pirDetected == HIGH))//Abfrage Laser oder PIR Signal
   {
     if (detected == LOW){Serial.println("unerlaubtes Betreten - Lichtschranke wurde unterbrochen!");};
     if (pirDetected == HIGH){Serial.println("Einbruchsversuch - Annäherungssensor wurde aktiviert");};
     for (int i=0;i<=10;i++)     //wie oft blinkenUndPiepesen
     {       
       digitalWrite(flashPin, HIGH);
       digitalWrite(ledPin, HIGH);  //Turn led on
       digitalWrite(buzzerPin, HIGH);
       delay(150);//wie lange pause bis signalwechsel
       digitalWrite(ledPin, LOW);
       digitalWrite(buzzerPin, LOW);
       
       i=i+1;
       delay(10); //wie lange pause bis nächster durchlauf
     }
  } 
  else
  { //this is when alarmsystem is offline. i am there so no need for alarm. when i leave i put cayenne  led  ON to arm the system
   digitalWrite(ledPin, LOW);
   digitalWrite(buzzerPin, LOW);
   digitalWrite(flashPin, LOW);
   digitalWrite(photoResistor, LOW);   
  }   
  delay(50);
}


// This function is called at intervals to send data to Cayenne and keep the device online.
// Will create a temporary green widget on Channel 0, make it permanent by clicking on '+'. 
CAYENNE_OUT(0)
{
 CAYENNE_LOG("Send data for Virtual Channel 0");
 // This command writes the device's uptime in seconds to the Virtual Channel. 
 Cayenne.virtualWrite(0, millis() / 1000);

}

Was ist ein Cayenne Dashoard?
Auch unter Cayenne Dashboard verstehe ich nichts.

franewe:
( Funktioniert leider nicht - action function geht momentan gar nicht.
Bi über Hilfestellung sehr dankbar.

void setup()

{

Serial.begin(9600);
[...]
 int value;
}

void loop()
{
Cayenne.loop();
int value;
  if (value ==1)
{
  action();
  }    
}

Was soll das int value im setup?
Was soll das int value im loop?

if (value==1) wird so nie erreicht.

uwefed:
Auch unter Cayenne Dashboard verstehe ich nichts.

Was verrücktes für die Handysüchtigen Kontrollfreaks :wink:

Erstmal Danke für die Feedbacks.
Cayenne Dashboard --> ich möchte ich Alarmanlage über Internet an / ausschalten ( ESP32DEVmoulde ist verkablet)
Der An/Ausschalter als solches mit Value 0/1 funktioniert ja - aber die connection zum Rest des Codes halt nicht.

Was soll das int value im setup?
Was soll das int value im loop?

if (value==1) wird so nie erreicht. ja genau das ist mein Problem...wie erreiche ich den Wert so dass ich die Anlage(action) an oder ausschalten kann.?

franewe:
Was soll das int value im setup?
Was soll das int value im loop?

if (value==1) wird so nie erreicht. ja genau das ist mein Problem…wie erreiche ich den Wert so dass ich die Anlage(action) an oder ausschalten kann.?

deklarie value vor dem setup!
sonst ist die Variable nur in der Funktion gültig, wo Sie eingesetzt wird.
Wenn Du global was brauchst, dann muss es vor den Funktionen eingerichtet sein.

edit:
und schmiess hier das unnötige auch raus:

CAYENNE_IN(VIRTUAL_CHANNEL)
{
int value;

Lerne bitte Grundlagen, was den Gültigkeitsbereich von Variablen angeht!